respond-framework
Version:
create as fast you think
20 lines (19 loc) • 573 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = require("react");
const useClickOut = (set, open) => {
const ref = (0, _react.useRef)();
const hide = (0, _react.useCallback)(e => {
if (!open || ref.current?.contains(e.target)) return;
set(false);
}, [set, open]);
(0, _react.useEffect)(() => {
window.addEventListener?.('mousedown', hide);
return () => window.removeEventListener?.('mousedown', hide);
}, [hide]);
return ref;
};
var _default = exports.default = useClickOut;