import { CheckableValue } from '../../basic'; import { FormControlSize, DateFormControlValue, FileFormControlValue } from './aliases'; interface IFormControl { readonly name: string; readonly value: ValueType; readonly disabled: boolean; readonly readonly: boolean; readonly onChange: (value: ValueType) => void; } interface IFileFormControl extends IFormControl { readonly accept: string; readonly multiple: boolean; } interface ICheckableFormControl extends IFormControl { readonly checked: boolean; } interface IInputtableFormControl extends IFormControl { readonly placeholder: string; readonly clearable: boolean; readonly size: FormControlSize; readonly onInput: (value: InputValueType) => void; } interface INumericFormControl extends IInputtableFormControl { readonly min: number; readonly max: number; readonly step: number; } interface ITextualFormControl extends IInputtableFormControl { readonly minLength: number; readonly maxLength: number; } interface IBaseDateFormControl extends Omit, 'onChange' | 'onInput'> { readonly inputtable: boolean; readonly format: string; readonly pickerOption: PickerOption; readonly popupClassName: string; } interface IDateFormControl> extends IBaseDateFormControl { readonly onChange: (value: ValueType, date: Date | null) => void; } interface IDateRangeFormControl> extends Omit, 'placeholder'> { readonly placeholder: string[]; readonly separator: string; readonly onChange: (value: ValueType, dates: (Date | null)[]) => void; } export { IFormControl, INumericFormControl, IFileFormControl, ICheckableFormControl, IInputtableFormControl, ITextualFormControl, IDateFormControl, IDateRangeFormControl, };