import type { ControllerProps, FieldValues } from 'react-hook-form'; import { Controller } from 'react-hook-form'; import type { Select2Props, SelectDefaultItem } from './Select2.js'; import { Select2 } from './Select2.js'; type Select2ControllerProps< T extends Record = SelectDefaultItem, TFieldValues extends FieldValues = FieldValues, > = { controllerProps?: Omit, 'render'>; } & Pick, 'control' | 'name'> & Omit, 'onItemSelect' | 'selectedItemValue'> & Partial, 'onItemSelect'>>; export function Select2Controller< T extends Record, TFieldValues extends FieldValues = FieldValues, >(props: Select2ControllerProps) { const { name, control, controllerProps = {}, onItemSelect, intent, itemValueKey = 'value', ...otherSelectProps } = props; return ( { return ( itemValueKey={itemValueKey} selectedItemValue={field.value} onItemSelect={(item, event) => { field.onChange(item[itemValueKey]); onItemSelect?.(item, event); }} {...otherSelectProps} intent={invalid ? 'danger' : intent} /> ); }} /> ); }