import { useCallback, useState } from 'react'; import './ExpandableMenu.scss'; import classNames from 'classnames'; import { ExpandableMenuProps } from './types'; import { checkEmpty } from '../../utils/checkEmpty/checkEmpty'; import Icon from '../Icon'; import './ExpandableMenu.scss'; import Typography from '../Typography'; const ExpandableMenu: React.FC = ({ label = '', icon = ( ), variant = 'primary', size = 'medium', disable = false, subMenus = [], selectedMenu = '', onSubMenuClick = () => {}, }) => { const [isExpanded, setIsExpanded] = useState(false); const [isHovered, setIsHovered] = useState(false); const toggleExpand = () => { setIsExpanded((prev) => !prev); setIsHovered(false); }; const handleMouseEnter = useCallback(() => { if (!isExpanded) setIsHovered(true); }, [isExpanded]); const handleMouseLeave = useCallback(() => { if (!isExpanded) setIsHovered(false); }, [isExpanded]); const handleSelectedMenu = (chip: string) => { if (!disable) { onSubMenuClick(chip); setIsExpanded(true); } }; const hasExpanded = isExpanded || isHovered; return (
{label} {icon}
{hasExpanded && !checkEmpty(subMenus) && (
{subMenus.map((chip, index) => (
handleSelectedMenu(chip)} > {chip}
))}
)}
); }; export default ExpandableMenu;