Spaces:
Runtime error
Runtime error
File size: 587 Bytes
3b6afc0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import { useEffect } from 'react';
export default function useOnClickOutside(ref, handler, excludeIds) {
useEffect(() => {
const handleClickOutside = (event) => {
if (excludeIds.includes(event.target.id)) {
return;
}
if (ref.current && !ref.current.contains(event.target)) {
handler();
}
};
document.addEventListener('mousedown', handleClickOutside);
return () => {
document.removeEventListener('mousedown', handleClickOutside);
};
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [ref, handler]);
}
|