2022-09-23 13:09:48 +00:00
|
|
|
import {
|
2023-02-04 00:36:31 +00:00
|
|
|
Box,
|
2022-09-23 13:09:48 +00:00
|
|
|
Popover,
|
|
|
|
PopoverArrow,
|
|
|
|
PopoverContent,
|
|
|
|
PopoverTrigger,
|
|
|
|
} from '@chakra-ui/react';
|
|
|
|
import { createSelector } from '@reduxjs/toolkit';
|
2022-12-29 08:19:57 +00:00
|
|
|
import { Feature, useFeatureHelpInfo } from 'app/features';
|
2023-02-04 00:36:31 +00:00
|
|
|
import { useAppSelector } from 'app/storeHooks';
|
2023-02-04 00:32:22 +00:00
|
|
|
import { systemSelector } from 'features/system/store/systemSelectors';
|
2023-02-04 00:36:31 +00:00
|
|
|
import { SystemState } from 'features/system/store/systemSlice';
|
|
|
|
import { ReactElement } from 'react';
|
2022-09-23 13:09:48 +00:00
|
|
|
|
|
|
|
type GuideProps = {
|
|
|
|
children: ReactElement;
|
|
|
|
feature: Feature;
|
|
|
|
};
|
|
|
|
|
2023-02-04 00:32:22 +00:00
|
|
|
const guidePopoverSelector = createSelector(
|
|
|
|
systemSelector,
|
2022-09-23 13:09:48 +00:00
|
|
|
(system: SystemState) => system.shouldDisplayGuides
|
|
|
|
);
|
|
|
|
|
|
|
|
const GuidePopover = ({ children, feature }: GuideProps) => {
|
2023-02-04 00:32:22 +00:00
|
|
|
const shouldDisplayGuides = useAppSelector(guidePopoverSelector);
|
2022-12-29 08:19:57 +00:00
|
|
|
const { text } = useFeatureHelpInfo(feature);
|
2022-10-27 04:24:00 +00:00
|
|
|
|
|
|
|
if (!shouldDisplayGuides) return null;
|
|
|
|
|
|
|
|
return (
|
2022-12-17 17:49:22 +00:00
|
|
|
<Popover trigger="hover">
|
2022-09-23 13:09:48 +00:00
|
|
|
<PopoverTrigger>
|
|
|
|
<Box>{children}</Box>
|
|
|
|
</PopoverTrigger>
|
|
|
|
<PopoverContent
|
2022-12-17 17:49:22 +00:00
|
|
|
className="guide-popover-content"
|
2022-09-23 13:09:48 +00:00
|
|
|
maxWidth="400px"
|
|
|
|
onClick={(e) => e.preventDefault()}
|
2022-12-17 17:49:22 +00:00
|
|
|
cursor="initial"
|
2022-09-23 13:09:48 +00:00
|
|
|
>
|
2022-10-03 16:15:26 +00:00
|
|
|
<PopoverArrow className="guide-popover-arrow" />
|
|
|
|
<div className="guide-popover-guide-content">{text}</div>
|
2022-09-23 13:09:48 +00:00
|
|
|
</PopoverContent>
|
|
|
|
</Popover>
|
|
|
|
);
|
|
|
|
};
|
|
|
|
|
|
|
|
export default GuidePopover;
|