@i-novus/ui-core
Version:
Базовые UI компоненты
19 lines (18 loc) • 678 B
JavaScript
import { useEffect } from 'react';
export const useClickOutside = (refList, callback) => {
useEffect(() => {
const clickHandler = (event) => {
if (!refList.length ||
refList.some(item => item.current?.contains(event.target))) {
return;
}
callback?.(event);
};
document.addEventListener('mousedown', clickHandler);
document.addEventListener('touchstart', clickHandler);
return () => {
document.removeEventListener('mousedown', clickHandler);
document.removeEventListener('touchstart', clickHandler);
};
}, [refList, callback]);
};