PromucFlow_constructor/app/client/src/pages/Editor/HelpButton.tsx
albinAppsmith fbc3bd663b
feat: Migrate design system components import to design-system repo - I (#15562)
* Icon component deleted and changed the imports in refrence places

* design system package version changed

* import changes

* Delete TextInput.tsx

* Change imports

* Change single named import

* Update package

* Update package

* Delete ScrollIndicator.tsx

* Change imports

* Icon import completed

* Event type added

* Changed Button component imports

* import change button

* Button onclick type fix

* Label with Tooltip import changes

* Changed breadcrumbs import

* EmojiPicker and Emoji Reaction import changes

* AppIcon import change

* import bug fix

* Menu Item import chnages

* Icon selector imports changed

* Delete LabelWithTooltip.tsx

* Change imports across the app

* Update package version

* Update version number for design-system

* Delete Checkbox.tsx

* Remove the exports

* Add lock file for ds package update

* Change imports

* default import -> named

* Update release version

* Make arg type explicit

* Updated design-system to latest release

* Missing file mysteriously comes back and is updated accordingly

* changes design-system package version

* Add types to arguments in the onChange for text input

* onBlur type fix

* Search component in property pane

* WDS button changes reverted

* package version bumped

* conflict fix

* Remove Dropdown, change imports

* Category import fix

* fix: table icon size import

* Bump version of design system package

* Yarn lock

Co-authored-by: Tanvi Bhakta <tanvibhakta@gmail.com>
2022-08-22 10:39:39 +05:30

112 lines
2.9 KiB
TypeScript

import React, { useEffect } from "react";
import styled, { createGlobalStyle, withTheme } from "styled-components";
import { Popover, Position } from "@blueprintjs/core";
import DocumentationSearch from "components/designSystems/appsmith/help/DocumentationSearch";
import { Icon, IconSize } from "design-system";
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/bootIntercom";
import { Colors } from "constants/Colors";
import { TooltipComponent } from "design-system";
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";
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;
background: ${(props) =>
props.theme.colors.globalSearch.helpButtonBackground};
&:hover {
border: 1.5px solid ${Colors.GREY_10};
}
`;
type TriggerProps = {
tooltipsDisabled: boolean;
theme: Theme;
};
const Trigger = withTheme(({ theme, tooltipsDisabled }: TriggerProps) => (
<TooltipComponent
content={createMessage(HELP_RESOURCE_TOOLTIP)}
disabled={tooltipsDisabled}
hoverOpenDelay={TOOLTIP_HOVER_ON_DELAY}
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);
}, []);
return (
<Popover
minimal
modifiers={{
offset: {
enabled: true,
offset: "0, 6",
},
}}
onClosed={onClose}
onOpened={onOpened}
popoverClassName="navbar-help-popover"
position={Position.BOTTOM_RIGHT}
>
<>
<HelpPopoverStyle />
<Trigger tooltipsDisabled={isHelpOpen} />
</>
<div style={{ width: HELP_MODAL_WIDTH }}>
<DocumentationSearch hideMinimizeBtn hideSearch hitsPerPage={4} />
</div>
</Popover>
);
}
export default HelpButton;