import { ArrowDropDown as ArrowDropDownIcon, Menu as MenuIcon } from '@mui/icons-material'; import { type ReactElement, type ReactNode, useCallback } from 'react'; import type { AriaLabelingAttributes } from '../../../@types/aria-attributes'; import type { DataTestAttributes } from '../../../@types/data-attributes'; import { Button, type ButtonProps } from '../../Button'; import { useMenu } from '../useMenu'; type MenuButtonProps = { ariaLabel?: string; children?: ReactNode; className?: string; hasArrow?: boolean; isOpen?: boolean; onClick?: (args: { isOpen: boolean }) => void; } & Pick & AriaLabelingAttributes & DataTestAttributes; const MenuButton = ({ children, onClick, hasArrow = true, size = 'small', variant = 'ghost', ariaLabel, className, ...attr }: MenuButtonProps): ReactElement => { const { isMenuOpen, setIsMenuOpen, setAnchorEl, onOpen } = useMenu(); const onToggle = useCallback( (e: React.MouseEvent): void => { setAnchorEl(e.currentTarget); setIsMenuOpen(!isMenuOpen); onClick?.({ isOpen: !isMenuOpen }); if (!isMenuOpen) onOpen?.(); }, [isMenuOpen, onClick, onOpen, setAnchorEl, setIsMenuOpen] ); return ( ); }; export { MenuButton };