import { ReactNode, RefObject } from "react"; import { DropdownMenuContext } from "./useDropdownMenuContext"; import { useDropdownMenu } from "./useDropdownMenu"; import { ComponentProps } from "react"; import { FloatingFocusManager, FloatingList, FloatingPortal, useMergeRefs, } from "@floating-ui/react"; import clsx from "clsx"; import { Dialog } from "../dialog"; import { Slot } from "../slot"; import { UseDropdownMenuOptions } from "./interface"; type DropdownMenuProps = ComponentProps<"div"> & UseDropdownMenuOptions & { trigger: ReactNode; ref?: RefObject; listClassName?: string; }; export const DropdownMenu = ({ // options trigger, initialOpen, placement, open, onOpen, color, modal, presentation, // ComponentProps style, className, listClassName, children, ref, ...props }: DropdownMenuProps) => { const options = { initialOpen, placement, open, onOpen, color, modal, presentation }; const popover = useDropdownMenu(options); const floatingContext = popover.context; const mergedRef = useMergeRefs([popover.refs.setFloating, ref]); return ( {trigger} {popover.open && (
{children}
)}
); };