@geist-ui/react
Version:
Modern and minimalist React UI library.
27 lines (21 loc) • 700 B
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var react = require('react');
var useClickAway = function useClickAway(ref, handler) {
var handlerRef = react.useRef(handler);
react.useEffect(function () {
handlerRef.current = handler;
}, [handlerRef]);
react.useEffect(function () {
var callback = function callback(event) {
var el = ref.current;
if (!event || !el || el.contains(event.target)) return;
handlerRef.current(event);
};
document.addEventListener('click', callback);
return function () {
return document.removeEventListener('click', callback);
};
}, [ref]);
};
exports["default"] = useClickAway;