UNPKG

datajunction-ui

Version:

DataJunction Metrics Platform UI

52 lines (47 loc) 1.18 kB
/** * A React Select component for use in Formik forms. */ import { useField } from 'formik'; import Select from 'react-select'; export const FormikSelect = ({ selectOptions, formikFieldName, placeholder, defaultValue, style, className = 'SelectInput', isMulti = false, isClearable = false, onFocus = event => {}, }) => { // eslint-disable-next-line no-unused-vars const [field, _, helpers] = useField(formikFieldName); const { setValue } = helpers; // handles both multi-select and single-select cases const getValue = options => { if (options) { return isMulti ? options.map(option => option.value) : options.value; } else { return isMulti ? [] : ''; } }; return ( <Select className={className} defaultValue={defaultValue} options={selectOptions} name={field.name} placeholder={placeholder} onBlur={field.onBlur} onChange={selected => setValue(getValue(selected))} styles={style} isMulti={isMulti} isClearable={isClearable} onFocus={event => onFocus(event)} id={field.name} /> ); }; FormikSelect.defaultProps = { placeholder: '', };