@ozen-ui/kit
Version:
React component library
22 lines (21 loc) • 1.15 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.useClickOutside = useClickOutside;
var useEventListener_1 = require("../useEventListener");
var useMutableRef_1 = require("../useMutableRef");
/** Хук отслеживающий клики за пределами dom-элементов указанных в `refs` */
function useClickOutside(_a) {
var refs = _a.refs, handler = _a.handler, options = _a.options, _b = _a.active, active = _b === void 0 ? true : _b, _c = _a.eventName, eventName = _c === void 0 ? 'mousedown' : _c;
var savedRefs = (0, useMutableRef_1.useMutableRef)(refs);
(0, useEventListener_1.useEventListener)({
eventName: eventName,
handler: function (event) {
var _a;
var isClickOutsideRefs = (_a = savedRefs.current) === null || _a === void 0 ? void 0 : _a.every(function (ref) { return ref.current && !event.composedPath().includes(ref.current); });
if (isClickOutsideRefs)
handler === null || handler === void 0 ? void 0 : handler(event);
},
active: active,
options: options,
});
}
;