@ozen-ui/kit
Version:
React component library
19 lines (18 loc) • 992 B
JavaScript
import { useEventListener } from '../useEventListener';
import { useMutableRef } from '../useMutableRef';
/** Хук отслеживающий клики за пределами dom-элементов указанных в `refs` */
export 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 = useMutableRef(refs);
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,
});
}