import { ChangeEventHandler, useCallback } from 'react' type PossibleValue = string | number | boolean export type Option = { value: T label: string ariaHidden?: 'true' | 'false' disabled?: boolean } export type Optgroup = { label: string options: Array> } type SettingsMenuSelectProps = { label: string name: string options: Array> optgroup?: Optgroup loading?: boolean onChange: (val: T) => void value?: T } export default function SettingsMenuSelect({ label, name, options, optgroup, loading, onChange, value, }: SettingsMenuSelectProps) { const handleChange: ChangeEventHandler = useCallback( event => { const selectedValue = event.target.value let onChangeValue: PossibleValue = selectedValue if (typeof value === 'boolean') { onChangeValue = selectedValue === 'true' } else if (typeof value === 'number') { onChangeValue = parseInt(selectedValue, 10) } onChange(onChangeValue as T) }, [onChange, value] ) return (
{loading ? (

) : ( )}
) }