import * as React from 'react'; import * as PropTypes from 'prop-types'; // @ts-ignore import ConditionalWrap from 'conditional-wrap'; // @ts-ignore import _omit from 'lodash/omit'; import Group from '../Group'; import Select, { LocalSelectProps, SelectProps, selectPropTypes, selectDefaultProps } from './Select'; import FieldWrapper, { LocalFieldWrapperProps, fieldWrapperPropTypes, fieldWrapperDefaultProps } from '../FieldWrapper/FieldWrapper'; import { Omit } from '../types'; import { formikField, reduxFormField } from '../adaptors/fields'; export type LocalSelectFieldProps = Omit & LocalSelectProps & { /** Addon component to the input (before). Similar to the addon components in Input. */ addonBefore?: React.ReactElement; /** Addon component to the input (after). Similar to the addon components in Input. */ addonAfter?: React.ReactElement; /** If addonBefore or addonAfter exists, then the addons will render vertically. */ isVertical?: boolean; selectProps?: Omit; }; export type SelectFieldProps = LocalSelectFieldProps & SelectProps; export type SelectFieldComponents = { Formik: React.FunctionComponent; ReduxForm: React.FunctionComponent; }; export const SelectField: React.FunctionComponent & SelectFieldComponents = ({ a11yLabel, a11yId, addonBefore, addonAfter, autoComplete, autoFocus, className, description, defaultValue, disabled, hint, isLoading, isFullWidth, isOptional, isRequired, isVertical, label, name, onBlur, onChange, onFocus, options, placeholder, selectProps, selectRef, size, state, validationText, value, ...props }) => ( {({ elementProps }) => ( {children}} > {addonBefore}