## Description We need to upgrade `styled-components`, so that it will become easy to upgrade to version 6.0 when it is out. This is because, v6.0 has an important functionality which isn't available in today's version. ### Tasks completed - Update Styled components to latest version. - Prepare codebase by cleaning up the styled components functions that will be deprecated in version 6 - We are still using the `withTheme` HOC, we should instead use the `useTheme` hook (best practices) - Remove the `AnyStyledComponent` type it is un-necessary and will be deprecated Fixes #19463 ## Type of change - Non breaking change. The application should work as before and should not effect any visual elements or UI. ## How Has This Been Tested? - Manual @appsmithorg/qa please refer to the test plan for areas of interest. - Cypress: All existing test cases must pass. ### Test Plan - We need to do a sanity check on the Product Updates Modal, Release section. - We also need to do a sanity check on the Login, Signup, ResetPassword pages. - I think we can merge this Pull Request and continue with our weekly regression, because there are no style changes in this Pull Request, everything should work as expected. ## Checklist: ### Dev activity - [ ] My code follows the style guidelines of this project - [ ] I have performed a self-review of my own code - [ ] I have commented my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [ ] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] New and existing unit tests pass locally with my changes - [ ] PR is being merged under a feature flag ### QA activity: - [ ] Test plan has been approved by relevant developers - [ ] Test plan has been peer reviewed by QA - [ ] Cypress test cases have been added and approved by either SDET or manual QA - [ ] Organized project review call with relevant stakeholders after Round 1/2 of QA - [ ] Added Test Plan Approved label after reveiwing all Cypress test
108 lines
2.8 KiB
TypeScript
108 lines
2.8 KiB
TypeScript
import React, { useEffect } from "react";
|
|
import styled, { createGlobalStyle, useTheme } from "styled-components";
|
|
import { Popover, Position } from "@blueprintjs/core";
|
|
|
|
import DocumentationSearch from "components/designSystems/appsmith/help/DocumentationSearch";
|
|
import { Icon, IconSize, TooltipComponent } from "design-system";
|
|
|
|
import { HELP_MODAL_WIDTH } from "constants/HelpConstants";
|
|
import AnalyticsUtil from "utils/AnalyticsUtil";
|
|
import { getCurrentUser } from "selectors/usersSelectors";
|
|
import { useSelector } from "react-redux";
|
|
import bootIntercom from "utils/bootIntercom";
|
|
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";
|
|
import { BottomBarCTAStyles } from "./BottomBar/styles";
|
|
import { Theme } from "constants/DefaultTheme";
|
|
|
|
const HelpPopoverStyle = createGlobalStyle`
|
|
.bp3-popover.bp3-minimal.navbar-help-popover {
|
|
margin-top: 0 !important;
|
|
}
|
|
`;
|
|
|
|
const StyledTrigger = styled.div`
|
|
cursor: pointer;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
${BottomBarCTAStyles}
|
|
`;
|
|
|
|
type TriggerProps = {
|
|
tooltipsDisabled: boolean;
|
|
};
|
|
|
|
const Trigger = ({ tooltipsDisabled }: TriggerProps) => {
|
|
const theme = useTheme() as Theme;
|
|
|
|
return (
|
|
<TooltipComponent
|
|
content={createMessage(HELP_RESOURCE_TOOLTIP)}
|
|
disabled={tooltipsDisabled}
|
|
hoverOpenDelay={TOOLTIP_HOVER_ON_DELAY}
|
|
modifiers={{
|
|
preventOverflow: { enabled: true },
|
|
}}
|
|
position={"bottom"}
|
|
>
|
|
<StyledTrigger>
|
|
<Icon
|
|
fillColor={theme.colors.globalSearch.helpIcon}
|
|
name="question-line"
|
|
size={IconSize.XXXL}
|
|
/>
|
|
</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;
|