PromucFlow_constructor/app/client/src/pages/Editor/HelpButton.tsx

112 lines
2.9 KiB
TypeScript
Raw Normal View History

import React, { useEffect } from "react";
import styled, { createGlobalStyle, withTheme } from "styled-components";
2021-03-08 08:24:12 +00:00
import { Popover, Position } from "@blueprintjs/core";
import DocumentationSearch from "components/designSystems/appsmith/help/DocumentationSearch";
2021-03-08 08:24:12 +00:00
import Icon, { IconSize } from "components/ads/Icon";
import { HELP_MODAL_WIDTH } from "constants/HelpConstants";
import AnalyticsUtil from "utils/AnalyticsUtil";
import { Theme } from "constants/DefaultTheme";
import { getCurrentUser } from "../../selectors/usersSelectors";
import { useSelector } from "react-redux";
import { bootIntercom } from "utils/helpers";
import { Colors } from "constants/Colors";
import TooltipComponent from "components/ads/Tooltip";
refactor: admin settings (#9906) * refactor admin settings feature * separated save-restart bar to separate component * created new CE dir to facilitate code split * created separate ee dir and exporting everything we have in ce file. * little mod * minor fix * splitting settings types config * using object literals for category types instead of enums * CE: support use of component for each category * minor style fix * authentication page UI changes implemented * github signup doc url added back * removed comments * routing updates * made subcategories listing in left pane optional * added muted saml to auth listing * added breadcrumbs and enabled button * created separate component for auth page and auth config * added callout and disconnect components * updated breadcrumbs component * minor updates to common components * updated warning callout and added icon * ce: test cases fixed * updated test file name * warning banner callout added on auth page * updated callout banner for form login * CE: Split config files * CE: moved the window declaration in EE file as its dependency will be updated in EE * CE: Splitting ApiConstants and SocialLogin constants * CE: split login page * CE: moved getSocialLoginButtonProps func to EE file as it's dependencies will be updated in EE * added key icon * CE: created a factory class to share social auths list * Minor style fix for social btns * Updated the third party auth styles * Small fixes to styling * ce: splitting forms constants * breadcrumbs implemented for all pages in admin settings * Settings breadcrumbs separated * splitted settings breadcrumbs between ce and ee * renamed default import * minor style fix * added login form config. * updated login/signup pages to use form login disabled config * removed common functionality outside * implemented breadcrumb component from scratch without using blueprint * removed unwanted code * Small style update * updated breadcrumb categories file name and breadcrumb icon * added cypress tests for admin settings auth page * added comments * update locator for upgrade button * added link for intercom on upgrade button * removed unnecessary file * minor style fix * style fix for auth option cards * split messages constant * fixed imports for message constants splitting. * added message constants * updated unit test cases * fixed messages import in cypress index * fixed messages import again, cypress fails to read re-exported objs. * added OIDC auth method on authentication page * updated import statements from ee to @appsmith * removed dead code * updated read more link UI * PR comments fixes * some UI fixes * used color and fonts from theme * fixed some imports * fixed some imports * removed warning imports * updated OIDC logo and auth method desc copies * css changes * css changes * css changes * updated cypress test for breadcrumb * moved callout component to ads as calloutv2 * UI changes for form fields * updated css for spacing between form fields * added sub-text on auth pages * added active class for breadcrumb item * added config for disable signup toggle and fixed UI issues of restart banner * fixed admin settings page bugs * assigned true as default state for signup * fixed messages import statements * updated code for PR comments related suggestions * reverted file path change in cypress support * updated cypress test * updated cypress test Co-authored-by: Ankita Kinger <ankita@appsmith.com>
2022-02-11 18:08:46 +00:00
import {
createMessage,
HELP_RESOURCE_TOOLTIP,
} from "@appsmith/constants/messages";
import { TOOLTIP_HOVER_ON_DELAY } from "constants/AppConstants";
import { useCallback } from "react";
import { useState } from "react";
2021-03-08 08:24:12 +00:00
const HelpPopoverStyle = createGlobalStyle`
.bp3-popover.bp3-minimal.navbar-help-popover {
margin-top: 0 !important;
}
`;
const StyledTrigger = styled.div`
cursor: pointer;
width: 25px;
height: 25px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
margin: 0 ${(props) => props.theme.spaces[4]}px;
2021-03-08 08:24:12 +00:00
background: ${(props) =>
props.theme.colors.globalSearch.helpButtonBackground};
&:hover {
border: 1.5px solid ${Colors.GREY_10};
}
2021-03-08 08:24:12 +00:00
`;
type TriggerProps = {
tooltipsDisabled: boolean;
theme: Theme;
2021-03-08 08:24:12 +00:00
};
const Trigger = withTheme(({ theme, tooltipsDisabled }: TriggerProps) => (
<TooltipComponent
content={createMessage(HELP_RESOURCE_TOOLTIP)}
disabled={tooltipsDisabled}
hoverOpenDelay={TOOLTIP_HOVER_ON_DELAY}
position={Position.BOTTOM}
>
<StyledTrigger>
<Icon
fillColor={theme.colors.globalSearch.helpIcon}
name="help"
size={IconSize.LARGE}
/>
</StyledTrigger>
</TooltipComponent>
));
function HelpButton() {
const user = useSelector(getCurrentUser);
const [isHelpOpen, setIsHelpOpen] = useState(false);
useEffect(() => {
bootIntercom(user);
}, [user?.email]);
const onOpened = useCallback(() => {
AnalyticsUtil.logEvent("OPEN_HELP", { page: "Editor" });
setIsHelpOpen(true);
}, []);
const onClose = useCallback(() => {
setIsHelpOpen(false);
}, []);
2021-03-08 08:24:12 +00:00
return (
<Popover
minimal
2021-03-08 08:24:12 +00:00
modifiers={{
offset: {
enabled: true,
offset: "0, 6",
},
}}
onClosed={onClose}
2021-03-08 08:24:12 +00:00
onOpened={onOpened}
popoverClassName="navbar-help-popover"
position={Position.BOTTOM_RIGHT}
2021-03-08 08:24:12 +00:00
>
<>
<HelpPopoverStyle />
<Trigger tooltipsDisabled={isHelpOpen} />
2021-03-08 08:24:12 +00:00
</>
<div style={{ width: HELP_MODAL_WIDTH }}>
<DocumentationSearch hideMinimizeBtn hideSearch hitsPerPage={4} />
2021-03-08 08:24:12 +00:00
</div>
</Popover>
);
}
2021-03-08 08:24:12 +00:00
export default HelpButton;