@crossed/ui
Version:
A universal & performant styling library for React Native, Next.js & React
71 lines (70 loc) • 1.57 kB
JavaScript
import { jsx } from "react/jsx-runtime";
import {
forwardRef,
memo,
useCallback,
useImperativeHandle
} from "react";
import {
FloatingConfigProvider,
FloatingProvider
} from "./context";
import { useUncontrolled } from "@crossed/core";
const FloatingRoot = memo(
forwardRef(
({
children,
defaultValue = false,
onChange,
value,
closeOverlayPress,
wait = 0,
removeScroll = true,
triggerStrategy = "onPress",
enabled = true,
portal = true
}, ref) => {
const [open, setOpen] = useUncontrolled({
defaultValue,
onChange,
value
});
const handleClose = useCallback(() => {
setOpen(false);
}, [setOpen]);
const handleOpen = useCallback(() => {
setOpen(true);
}, [setOpen]);
useImperativeHandle(
ref,
() => ({ close: handleClose, open: handleOpen }),
[handleClose, handleOpen]
);
return /* @__PURE__ */ jsx(
FloatingConfigProvider,
{
triggerStrategy,
enabled,
portal,
children: /* @__PURE__ */ jsx(
FloatingProvider,
{
open,
onClose: handleClose,
onOpen: handleOpen,
closeOverlayPress: closeOverlayPress ?? true,
wait,
removeScroll,
children
}
)
}
);
}
)
);
FloatingRoot.displayName = "Floating";
export {
FloatingRoot
};
//# sourceMappingURL=Root.js.map