import {Popover, Transition} from '@headlessui/react' import {ChevronDownIcon, ChevronUpIcon, DotsHorizontalIcon} from '@heroicons/react/solid' import clsx from 'clsx' import {toKey} from 'common/parsing' import {Fragment, ReactNode, useState} from 'react' import {usePopper} from 'react-popper' import {Col} from 'web/components/layout/col' import {Row} from 'web/components/layout/row' import {useT} from 'web/lib/locale' export type DropdownItem = { name: string icon?: ReactNode onClick: () => void | Promise } export default function DropdownMenu(props: { items: DropdownItem[] icon?: ReactNode menuWidth?: string buttonClass?: string className?: string menuItemsClass?: string buttonDisabled?: boolean selectedItemName?: string closeOnClick?: boolean withinOverflowContainer?: boolean buttonContent?: (open: boolean) => ReactNode }) { const { items, menuItemsClass, menuWidth, buttonClass, className, buttonDisabled, selectedItemName, closeOnClick, withinOverflowContainer, buttonContent, } = props const [referenceElement, setReferenceElement] = useState() const [popperElement, setPopperElement] = useState() const {styles, attributes} = usePopper(referenceElement, popperElement, { strategy: withinOverflowContainer ? 'fixed' : 'absolute', }) const icon = props.icon ??