import { Select as $Select } from 'antd' import { FieldProps } from 'formik' import * as React from 'react' import { SelectProps as $SelectProps } from 'antd/lib/select' import { FormikFieldProps } from '../FieldProps' import Field from '../field' export type SelectProps = FormikFieldProps & $SelectProps & { children?: React.ReactNode } // declare class Select extends React.Component> { export const Select = ({ name, validate, fast, children, onChange, onBlur, ...restProps }: SelectProps) => { return ( {({ field: { value }, form: { setFieldValue, setFieldTouched }, }: FieldProps) => ( <$Select onChange={(value, option) => { setFieldValue(name, value) onChange && onChange(value, option) }} onBlur={(value) => { setFieldTouched(name) onBlur && onBlur(value) }} // setting undefined will show the placeholder value={value === '' || value === null ? undefined : value} id={name} {...restProps} > {children} )} ) } export default Select Select.Option = $Select.Option Select.OptGroup = $Select.OptGroup