import type { FC } from 'react' import { cn } from '@langgenius/dify-ui/cn' import { DropdownMenu, DropdownMenuContent, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuTrigger, } from '@langgenius/dify-ui/dropdown-menu' import { RiArrowDownSLine, RiCheckLine, RiCloseCircleFill, RiFilter3Line } from '@remixicon/react' import { useMemo, useState } from 'react' export type Item = { value: number | string name: string } & Record type Props = { className?: string panelClassName?: string showLeftIcon?: boolean leftIcon?: any value: number | string items: Item[] onSelect: (item: any) => void onClear: () => void } const Chip: FC = ({ className, panelClassName, showLeftIcon = true, leftIcon, value, items, onSelect, onClear, }) => { const [open, setOpen] = useState(false) const triggerContent = useMemo(() => { return items.find(item => item.value === value)?.name || '' }, [items, value]) return (
} >
{showLeftIcon && (
{leftIcon || ( )}
)}
{triggerContent}
{!value && } {!!value && (
{ e.stopPropagation() onClear() }} >
)}
{ const selected = items.find(item => item.value === nextValue) if (selected) onSelect(selected) }} className="max-h-72 overflow-auto p-1" > {items.map(item => (
{item.name}
{value === item.value && }
))}
) } export default Chip