UNPKG

@crossed/ui

Version:

A universal & performant styling library for React Native, Next.js & React

71 lines (70 loc) 1.57 kB
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