@konstructio/ui
Version:
A set of reusable and customizable React components built for konstruct.io
24 lines (23 loc) • 738 B
JavaScript
import { useMultiSelectDropdown as s } from "../contexts/MultiSelectDropdown.hook.js";
import { useCallback as a, useEffect as u, useRef as c } from "react";
var f = () => {
const n = c(null), { onOpen: e } = s();
return u(() => {
const t = new AbortController(), r = (o) => {
o.key === "Escape" && e(!1);
}, l = (o) => {
n.current?.contains(o.target) || e(!1);
};
return document.addEventListener("keydown", r, { signal: t.signal }), document.addEventListener("mousedown", l, { signal: t.signal }), () => {
t.abort();
};
}, [e, n]), {
wrapperRef: n,
handleOpen: a((t) => {
t.target?.closest("[data-value]") || e(!0);
}, [e])
};
};
export {
f as useMultiSelectDropdown
};