feat(react/ribbon): port editability select

This commit is contained in:
Elian Doran
2025-08-21 22:19:26 +03:00
parent 1964fb90d5
commit f772f59d7c
7 changed files with 117 additions and 138 deletions

View File

@@ -0,0 +1,30 @@
import Dropdown from "./Dropdown";
import { FormListItem } from "./FormList";
interface FormDropdownList<T> {
values: T[];
keyProperty: keyof T;
titleProperty: keyof T;
descriptionProperty?: keyof T;
currentValue: string;
onChange(newValue: string): void;
}
export default function FormDropdownList<T>({ values, keyProperty, titleProperty, descriptionProperty, currentValue, onChange }: FormDropdownList<T>) {
const currentValueData = values.find(value => value[keyProperty] === currentValue);
return (
<Dropdown text={currentValueData?.[titleProperty] ?? ""}>
{values.map(item => (
<FormListItem
onClick={() => onChange(item[keyProperty] as string)}
checked={currentValue === item[keyProperty]}
description={descriptionProperty && item[descriptionProperty] as string}
selected={currentValue === item[keyProperty]}
>
{item[titleProperty] as string}
</FormListItem>
))}
</Dropdown>
)
}