@crossed/ui
Version:
A universal & performant styling library for React Native, Next.js & React
32 lines (31 loc) • 838 B
JavaScript
import { jsx } from "react/jsx-runtime";
import { FocusOn } from "react-focus-on";
import { useFocusScope as useOriginal } from "react-focus-lock";
import { useMemo } from "react";
import { useFloatingContext } from "../../overlay/Floating";
const Focus = (props) => {
return /* @__PURE__ */ jsx(FocusOn, { ...props });
};
const useFocusScope = () => {
const { focusNext, focusPrev } = useOriginal();
const { onClose } = useFloatingContext();
return useMemo(
() => ({
onKeyDown: (e) => {
if (e.code === "ArrowDown") {
focusNext();
} else if (e.code === "ArrowUp") {
focusPrev();
} else if (e.code === "Tab") {
onClose();
}
}
}),
[focusNext, focusPrev, onClose]
);
};
export {
Focus,
useFocusScope
};
//# sourceMappingURL=Focus.web.js.map