All files / src/components/PopoverMenu index.tsx

0% Statements 0/11
0% Branches 0/5
0% Functions 0/4
0% Lines 0/11

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>
  );
}