Skip to content

Commit 8fb9d81

Browse files
authored
Merge pull request #1084 from FaheemOnHub/fix/popOver
Replacement of MuiTooltip with MuiPopover in helperText Component
2 parents 2702d65 + 46ddb03 commit 8fb9d81

File tree

7 files changed

+104
-12
lines changed

7 files changed

+104
-12
lines changed

src/base/Tooltip/Tooltip.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import { Tooltip as MuiTooltip, type TooltipProps as MuiTooltipProps } from '@mui/material';
22

3-
export function Tooltip(props: MuiTooltipProps): JSX.Element {
3+
export interface TooltipProps extends MuiTooltipProps {
4+
interactive?: boolean;
5+
}
6+
7+
export function Tooltip(props: TooltipProps): JSX.Element {
48
return <MuiTooltip {...props} />;
59
}
610

src/base/Tooltip/index.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
import { TooltipProps } from '@mui/material';
21
import { tooltipClasses } from '@mui/material/Tooltip';
3-
import Tooltip from './Tooltip';
2+
import Tooltip, { TooltipProps } from './Tooltip';
43

54
export { Tooltip, tooltipClasses };
65
export type { TooltipProps };
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
import React, { useState } from 'react';
2+
import { IconButton, Popover } from '../../base';
3+
import { InfoCircleIcon } from '../../icons';
4+
import { WHITE } from '../../theme';
5+
import { RenderMarkdownTooltip } from '../Markdown';
6+
7+
type HelperTextPopoverProps = {
8+
content: string | React.ReactNode | JSX.Element;
9+
fontSize?: string;
10+
fontWeight?: number;
11+
variant?: 'standard' | 'small';
12+
bgColor?: string;
13+
icon?: React.ReactNode;
14+
};
15+
16+
function HelperTextPopover({
17+
content,
18+
fontSize,
19+
fontWeight = 400,
20+
variant = 'standard',
21+
bgColor = '#141414',
22+
icon = <InfoCircleIcon fontSize="small" />,
23+
...props
24+
}: HelperTextPopoverProps): JSX.Element {
25+
const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);
26+
const open = Boolean(anchorEl);
27+
28+
const handleOpen = (event: React.MouseEvent<HTMLElement>) => {
29+
setAnchorEl(event.currentTarget);
30+
};
31+
32+
const handleClose = () => {
33+
setAnchorEl(null);
34+
};
35+
36+
return (
37+
<>
38+
<IconButton
39+
size="small"
40+
onClick={handleOpen}
41+
sx={{ color: 'inherit', padding: '2px', verticalAlign: 'middle' }}
42+
>
43+
{icon}
44+
</IconButton>
45+
<Popover
46+
open={open}
47+
anchorEl={anchorEl}
48+
onClose={handleClose}
49+
disablePortal
50+
container={anchorEl?.ownerDocument?.body}
51+
anchorOrigin={{
52+
vertical: 'top',
53+
horizontal: 'center'
54+
}}
55+
transformOrigin={{
56+
vertical: 'bottom',
57+
horizontal: 'center'
58+
}}
59+
PaperProps={{
60+
sx: {
61+
background: bgColor,
62+
zIndex: 1501,
63+
opacity: '1',
64+
color: WHITE,
65+
maxWidth: '500px',
66+
fontSize: fontSize || (variant === 'standard' ? '1rem' : '0.75rem'),
67+
fontWeight: fontWeight,
68+
borderRadius: '0.5rem',
69+
padding: variant === 'standard' ? '0.9rem' : '0.5rem 0.75rem',
70+
boxShadow: 'rgba(0, 0, 0, 0.6) 0px 4px 10px, rgba(0, 0, 0, 0.5) 0px 2px 4px'
71+
}
72+
}}
73+
{...props}
74+
>
75+
{typeof content === 'string' ? <RenderMarkdownTooltip content={content} /> : content}
76+
</Popover>
77+
</>
78+
);
79+
}
80+
81+
export default HelperTextPopover;
82+
export type { HelperTextPopoverProps };

src/custom/HelperTextPopover/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
import HelperTextPopover from './helperTextPopover';
2+
export { HelperTextPopover };

src/custom/Modal/index.tsx

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@ import { ButtonProps, DialogProps, styled } from '@mui/material';
22
import React, { useRef, useState } from 'react';
33
import { Box, Dialog, IconButton, Paper, Typography } from '../../base';
44
import { ContainedButton, OutlinedButton, TextButton } from '../../base/Button/Button';
5-
import { iconLarge, iconMedium } from '../../constants/iconsSizes';
6-
import { CloseIcon, FullScreenIcon, InfoCircleIcon } from '../../icons';
5+
import { iconLarge } from '../../constants/iconsSizes';
6+
import { CloseIcon, FullScreenIcon } from '../../icons';
77
import FullScreenExitIcon from '../../icons/Fullscreen/FullScreenExitIcon';
88
import { darkModalGradient, lightModalGradient } from '../../theme/colors/colors';
99
import { CustomTooltip } from '../CustomTooltip';
10+
import { HelperTextPopover } from '../HelperTextPopover';
1011

1112
interface ModalProps extends DialogProps {
1213
closeModal: () => void;
@@ -217,11 +218,12 @@ export const ModalFooter: React.FC<ModalFooterProps> = ({ helpText, children, va
217218
return (
218219
<StyledFooter variant={variant} hasHelpText={!!helpText}>
219220
{helpText && (
220-
<CustomTooltip title={helpText} variant="standard" placement="top">
221-
<IconButton>
222-
<InfoCircleIcon {...iconMedium} className="InfoCircleIcon" />
223-
</IconButton>
224-
</CustomTooltip>
221+
// <CustomTooltip title={helpText} variant="standard" placement="top">
222+
// <IconButton>
223+
// <InfoCircleIcon {...iconMedium} className="InfoCircleIcon" />
224+
// </IconButton>
225+
// </CustomTooltip>
226+
<HelperTextPopover content={helpText} />
225227
)}
226228
{children}
227229
</StyledFooter>

src/custom/UniversalFilter.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,7 @@ export const FilterHeader = styled('div')(({ theme }) => ({
3434
margin: '-1rem -1rem 1rem -1rem',
3535
display: 'flex',
3636
justifyContent: 'space-between',
37-
alignItems: 'center',
38-
color: theme.palette.text.constant?.white
37+
alignItems: 'center'
3938
}));
4039

4140
function UniversalFilter({

src/custom/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
// Export all custom components
2+
export * from './CustomTooltip';
3+
export * from './HelperTextPopover';
4+
export * from './Markdown';

0 commit comments

Comments
 (0)