UNPKG

@readr-media/react-election-widgets

Version:
34 lines (29 loc) 772 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = useClickOutside; var _react = require("react"); /** * * @param {React.MutableRefObject<null | HTMLElement>} ref * @param {Function} callback * @returns {void} */ function useClickOutside(ref, callback) { (0, _react.useEffect)(() => { /** @type {EventListener}*/ const handleClickOutside = event => { const targetNode = /** @type {Node} */ event.target; if (ref.current && !ref.current.contains(targetNode)) { callback(); } }; document.addEventListener('click', handleClickOutside, true); return () => { document.removeEventListener('click', handleClickOutside, true); }; }, [ref, callback]); }