UNPKG

@trellixio/roaster-coffee

Version:
47 lines (43 loc) 1.17 kB
'use strict'; var react = require('@floating-ui/react'); var React = require('react'); function useDropdown({ placement = "bottom-end", open: controlledOpen, onOpenChange: setControlledOpen } = {}) { const [uncontrolledOpen, setUncontrolledOpen] = React.useState(false); const open = controlledOpen ?? uncontrolledOpen; const setOpen = setControlledOpen ?? setUncontrolledOpen; const data = react.useFloating({ placement, open, onOpenChange: setOpen, whileElementsMounted: react.autoUpdate, middleware: [ react.offset(5), react.flip({ fallbackAxisSideDirection: "end" }), react.shift({ padding: 5 }) ] }); const { context } = data; const click = react.useClick(context, { enabled: controlledOpen == null }); const dismiss = react.useDismiss(context); const role = react.useRole(context); const interactions = react.useInteractions([click, dismiss, role]); return React.useMemo( () => ({ open, setOpen, ...interactions, ...data }), [open, setOpen, interactions, data] ); } exports.useDropdown = useDropdown; //# sourceMappingURL=index.js.map