import type { FC } from 'react' import { useState } from 'react' import cn from '@/utils/classnames' import { RiMoreFill, } from '@remixicon/react' import { PortalToFollowElem, PortalToFollowElemContent, PortalToFollowElemTrigger, } from '@/app/components/base/portal-to-follow-elem' import ActionButton from '@/app/components/base/action-button' import type { ActionButtonProps } from '@/app/components/base/action-button' export type Item = { value: string | number text: string | React.JSX.Element } type DropdownProps = { items: Item[] secondItems?: Item[] onSelect: (item: Item) => void renderTrigger?: (open: boolean) => React.ReactNode triggerProps?: ActionButtonProps popupClassName?: string itemClassName?: string secondItemClassName?: string } const Dropdown: FC = ({ items, onSelect, secondItems, renderTrigger, triggerProps, popupClassName, itemClassName, secondItemClassName, }) => { const [open, setOpen] = useState(false) const handleSelect = (item: Item) => { setOpen(false) onSelect(item) } return ( setOpen(v => !v)}> { renderTrigger ? renderTrigger(open) : ( ) }
{ !!items.length && (
{ items.map(item => (
handleSelect(item)} > {item.text}
)) }
) } { (!!items.length && !!secondItems?.length) && (
) } { !!secondItems?.length && (
{ secondItems.map(item => (
handleSelect(item)} > {item.text}
)) }
) }
) } export default Dropdown