@konstructio/ui
Version:
A set of reusable and customizable React components built for konstruct.io
27 lines (26 loc) • 700 B
JavaScript
import { ModalContext as l } from "../contexts/Modal.context.js";
import { useContext as u, useEffect as r, useRef as d } from "react";
var f = () => {
const o = u(l), t = d(null);
if (!o) throw new Error("useModal must be used within a ModalProvider");
const { onClose: n } = o;
return r(() => {
const e = document.activeElement;
return t.current?.focus(), () => {
e?.focus();
};
}, []), r(() => {
const e = new AbortController(), s = (c) => {
c.code === "Escape" && n();
};
return window.addEventListener("keydown", s, { signal: e.signal }), () => {
e.abort();
};
}, [n]), {
...o,
closeBtnRef: t
};
};
export {
f as useModal
};