UNPKG

@trellixio/roaster-coffee

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