piral-hooks-utils
Version:
Hooks and HOC for pilets and Piral instances.
23 lines • 825 B
JavaScript
import { useEffect } from 'react';
/**
* Hook that detects if a click outside the given reference
* has been performed.
* @param ref The reference to the element.
* @param handler The callback to invoke when an outside click happened.
*/
export function useOnClickOutside(ref, handler) {
useEffect(() => {
const listener = (event) => {
if (ref.current && !ref.current.contains(event.target)) {
handler(event);
}
};
document.addEventListener('mousedown', listener);
document.addEventListener('touchstart', listener);
return () => {
document.removeEventListener('mousedown', listener);
document.removeEventListener('touchstart', listener);
};
}, [handler]);
}
//# sourceMappingURL=onClickOutside.js.map