@sanity/form-builder
Version:
Sanity form builder
28 lines (26 loc) • 881 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useOnClickOutside = useOnClickOutside;
var _react = require("react");
// Modified version of https://usehooks.com/useOnClickOutside that can take multiple refs
function useOnClickOutside(refs, handler) {
(0, _react.useEffect)(() => {
var listener = event => {
if (refs.some(ref => {
var _ref$current;
return (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.contains(event.target);
})) {
return;
}
handler(event);
};
document.addEventListener('mousedown', listener);
document.addEventListener('touchstart', listener);
return () => {
document.removeEventListener('mousedown', listener);
document.removeEventListener('touchstart', listener);
};
}, [refs, handler]);
}