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

109 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";
import { createMessage, HELP_RESOURCE_TOOLTIP } from "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;