fix(form/select): autoSelectSingleOption fixes (#2594)

Fixes #2590

- emit option, not its value
- support `simpleValue` behavior
- only trigger when there are no selected options
This commit is contained in:
badrAZ 2018-01-29 14:54:47 +01:00 committed by Julien Fontanet
parent add10ea556
commit ed3ecc6f4e

View File

@ -26,6 +26,7 @@ export default class Select extends React.PureComponent {
multi: ReactSelect.defaultProps.multi, multi: ReactSelect.defaultProps.multi,
options: [], options: [],
required: ReactSelect.defaultProps.required, required: ReactSelect.defaultProps.required,
simpleValue: ReactSelect.defaultProps.simpleValue,
valueKey: ReactSelect.defaultProps.valueKey, valueKey: ReactSelect.defaultProps.valueKey,
} }
@ -134,10 +135,25 @@ export default class Select extends React.PureComponent {
componentDidUpdate () { componentDidUpdate () {
const { props } = this const { props } = this
const { autoSelectSingleOption = props.required, options } = props const {
if (autoSelectSingleOption && options != null && options.length === 1) { autoSelectSingleOption = props.required,
const value = options[0][props.valueKey] multi,
props.onChange(props.multi ? [value] : value) options,
simpleValue,
value,
} = props
if (
autoSelectSingleOption &&
options != null &&
options.length === 1 &&
(value == null ||
(simpleValue && value === '') ||
(multi && value.length === 0))
) {
const option = options[0]
props.onChange(
simpleValue ? option[props.valueKey] : multi ? [option] : option
)
} }
} }