Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | import React, { useState } from 'react'; import Icon from '../Icon/Icon'; import { IconButton, useTheme } from '@mui/material'; import Popover, { Section } from './Popover'; import { DropdownItem } from '../types'; export type PopoverMenuProps = { anchor: React.ReactNode; menuSections: Section[]; onClick?: (selected: DropdownItem) => void; showChevron?: boolean; selectedValue?: any; }; export default function PopoverMenu({ anchor, menuSections, onClick, showChevron = true, selectedValue }: PopoverMenuProps): JSX.Element { const theme = useTheme(); const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null); const handleClick = (event: React.MouseEvent<HTMLElement>) => { setAnchorEl(event.currentTarget); }; const handleClose = () => { setAnchorEl(null); }; const onItemClick = (selectedItem: DropdownItem) => { if (onClick) { onClick(selectedItem); } handleClose(); }; return ( <div> <IconButton onClick={handleClick} size='small' sx={{ height: '48px', borderRadius: '16px', padding: theme.spacing(1.5, 2), }} > {anchor} {showChevron && <Icon name='chevronDown' size='medium' style={{ marginLeft: '8px', fill: theme.palette.TwClrIcn, }} />} </IconButton> <Popover sections={menuSections} handleClick={onItemClick} anchorElement={anchorEl} setAnchorElement={setAnchorEl} selectedValue={selectedValue} /> </div> ); } |