import { ReactNode, useEffect, useRef } from "react"; import useToggle from "../../hooks/useToggle"; import Icon from "../Icon"; interface Props { trigger?: ReactNode; actions?: ReactNode; className?: string; actionsClassName?: string; } const Dropdown: React.FC = (props: Props) => { const { trigger, actions, className, actionsClassName } = props; const [dropdownStatus, toggleDropdownStatus] = useToggle(false); const dropdownWrapperRef = useRef(null); useEffect(() => { if (dropdownStatus) { const handleClickOutside = (event: MouseEvent) => { if (!dropdownWrapperRef.current?.contains(event.target as Node)) { toggleDropdownStatus(false); } }; window.addEventListener("click", handleClickOutside, { capture: true, once: true, }); } }, [dropdownStatus]); return (
toggleDropdownStatus()} > {trigger ? ( trigger ) : ( )}
{actions}
); }; export default Dropdown;