import { Button, Chip, Menu, MenuItem, Typography } from '@mui/joy' import { useTranslation } from 'react-i18next' import IconButton from '@mui/joy/IconButton' import { useEffect, useRef, useState } from 'react' import { getTextColorFromBackgroundColor } from '../../utils/Colors.jsx' const IconButtonWithMenu = ({ label, k, icon, options, onItemSelect, selectedItem, setSelectedItem, isActive, useChips, title, }) => { const { t } = useTranslation('chores') const [anchorEl, setAnchorEl] = useState(null) const menuRef = useRef(null) const menuOptions = Array.isArray(options) ? options : [] const handleMenuOpen = event => { setAnchorEl(event.currentTarget) } const handleMenuClose = () => { setAnchorEl(null) } useEffect(() => { document.addEventListener('mousedown', handleMenuOutsideClick) return () => { document.removeEventListener('mousedown', handleMenuOutsideClick) } }, [anchorEl]) const handleMenuOutsideClick = event => { if (menuRef.current && !menuRef.current.contains(event.target)) { handleMenuClose() } } return ( <> {!label && ( {icon} {label ? label : null} )} {label && ( )} {title && ( {title} )} {menuOptions.map(item => ( { onItemSelect(item) setSelectedItem?.selectedItem(item.name) handleMenuClose() }} > {useChips ? ( {item.name} ) : ( <> {item?.icon} {item.name} )} ))} {/* {selectedItem && selectedItem !== 'All' && ( { onItemSelect(null) setSelectedItem?.setSelectedItem('All') }} > {t('filterChip.cancelAll')} )} */} ) } export default IconButtonWithMenu