@dossierhq/design
Version:
The design system for Dossier.
20 lines • 793 B
JavaScript
import { useCallback } from 'react';
import { findAscendantElement } from '../utils/DOMUtils.js';
import { isEventTargetNode } from '../utils/EventUtils.js';
import { useWindowEventListener } from './useWindowEventListener.js';
export function useWindowClick(ignoreRef, onClick, enabled) {
const listener = useCallback((event) => {
if (enabled === false) {
return;
}
const ignoreElement = ignoreRef.current;
if (ignoreElement && isEventTargetNode(event.target)) {
if (findAscendantElement(event.target, (it) => it === ignoreElement)) {
return;
}
}
onClick();
}, [enabled, onClick, ignoreRef]);
useWindowEventListener('click', listener);
}
//# sourceMappingURL=useWindowClick.js.map