Доброго дня!
Есть компонент Dropdown.
Необходимо закрывать открытый список по нажатию вне блока.
const Dropdown: FC<DropdownType> = ({
options,
onClick,
title,
}): JSX.Element => {
const [isOpen, setOpen] = useState<boolean>(false);
const [activeOption, setActiveOption] = useState<DropdownOptionType>(
options.find((opt) => opt.default) || options[0],
);
const toggling = useCallback(() => setOpen(!isOpen), [isOpen]);
useEffect(() => {
const { slug } = activeOption;
onClick(slug);
}, [onClick, activeOption]);
const onOptionClicked = useCallback(
(option: DropdownOptionType) => {
setActiveOption(option);
toggling();
},
[toggling],
);
return (
<div className={cn('dropdown')}>
{title && <p className={cn('title')}>{title}</p>}
<DropdownToggle
isOpen={isOpen}
onClick={toggling}
option={activeOption}
/>
{isOpen && (
<DropdownList
activeOption={activeOption}
onOptionClicked={onOptionClicked}
options={options}
/>
)}
</div>
);
};
Как лучше это сделать?