import { memo, useCallback, useMemo, useState } from 'react'; import type { MouseEventHandler } from 'react'; import clsx from 'clsx'; import MuiButtonGroup from '@mui/material/ButtonGroup'; import { ASSETS_URL } from '../../consts/common'; import { Button } from '../button'; import { CustomIcon } from '../custom-icon'; import { DropdownMenu } from '../dropdown-menu'; import type { ButtonsWithMenuProps } from './types'; import createClasses from './styles'; const anchorElTopAddition = 9; const ButtonsWithMenu = (props: ButtonsWithMenuProps) => { const { size = 'medium', countOfVisible = 3, listItems, clickHandler, handleDelete, onSortEnd, buttonGroupProps } = props; const classes = createClasses(); const [anchorEl, setAnchorEl] = useState<(EventTarget & HTMLButtonElement) | null>(null); const hasSelectedItems = useMemo(() => { return !!listItems.slice(countOfVisible).find(item => item.selected === true); }, [countOfVisible, listItems]); const handleOpenMenu: MouseEventHandler = useCallback(event => { setAnchorEl(event?.currentTarget); }, []); const handleClose = useCallback(() => { setAnchorEl(null); }, []); return ( {listItems.slice(0, countOfVisible).map(item => { const { name, selected, disabled } = item; return ( ); })} {anchorEl && ( )} ); }; const m = memo(ButtonsWithMenu); export { m as ButtonsWithMenu };