import { useState } from "react"; import { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger } from "../shadcn/ui/dropdown-menu"; import { Button } from "../shadcn/ui/button"; interface ISelectProps { values: { key: string; value: string; }[]; } const MultiSelect = ({ values }: ISelectProps) => { const [selectedItems, setSelectedItems] = useState([]); const handleSelectChange = (value: string) => { if (!selectedItems.includes(value)) { setSelectedItems((prev) => [...prev, value]); } else { const referencedArray = [...selectedItems]; const indexOfItemToBeRemoved = referencedArray.indexOf(value); referencedArray.splice(indexOfItemToBeRemoved, 1); setSelectedItems(referencedArray); } }; const isOptionSelected = (value: string): boolean => { return selectedItems.includes(value) ? true : false; }; return ( <> e.preventDefault()}> Appearance {values.map((value: ISelectProps["values"][0], index: number) => { return ( e.preventDefault()} key={index} checked={isOptionSelected(value.key)} onCheckedChange={() => handleSelectChange(value.key)} > {value.value} ); })} ); }; export default MultiSelect;