import classNames from 'classnames'; import React, { ChangeEvent, ComponentProps, SyntheticEvent, useCallback, } from 'react'; import { InputChanged } from 'typings/inputs'; import styles from './SelectInput.css'; export interface SelectInputOption extends Pick, 'disabled'> { key: string | number; value: string | number | (() => string | number); } interface SelectInputProps { className?: string; disabledClassName?: string; name: string; value: string | number; values: SelectInputOption[]; isDisabled?: boolean; hasError?: boolean; hasWarning?: boolean; autoFocus?: boolean; onChange: (change: InputChanged) => void; onBlur?: (event: SyntheticEvent) => void; } function SelectInput({ className = styles.select, disabledClassName = styles.isDisabled, name, value, values, isDisabled = false, hasError, hasWarning, autoFocus = false, onBlur, onChange, }: SelectInputProps) { const handleChange = useCallback( (event: ChangeEvent) => { onChange({ name, value: event.target.value as T, }); }, [name, onChange] ); return ( ); } export default SelectInput;