import Dropdown, { DropdownProps } from "./Dropdown"; import { FormListItem } from "./FormList"; interface FormDropdownList extends Omit { values: T[]; keyProperty: keyof T; titleProperty: keyof T; /** Property to show as a small suffix next to the title */ titleSuffixProperty?: keyof T; descriptionProperty?: keyof T; currentValue: string; onChange(newValue: string): void; } export default function FormDropdownList({ values, keyProperty, titleProperty, titleSuffixProperty, descriptionProperty, currentValue, onChange, ...restProps }: FormDropdownList) { const currentValueData = values.find(value => value[keyProperty] === currentValue); const renderTitle = (item: T) => { const title = item[titleProperty] as string; const suffix = titleSuffixProperty ? item[titleSuffixProperty] as string : null; if (suffix) { return <>{title} {suffix}; } return title; }; return ( {values.map(item => ( onChange(item[keyProperty] as string)} checked={currentValue === item[keyProperty]} description={descriptionProperty && item[descriptionProperty] as string} selected={currentValue === item[keyProperty]} > {renderTitle(item)} ))} ) }