diff --git a/src/SelectField.js b/src/SelectField.js index ea70e49..bc9724b 100755 --- a/src/SelectField.js +++ b/src/SelectField.js @@ -4,8 +4,13 @@ import mapError from './mapError' export default createComponent( SelectField, - ({ input: { onChange, ...inputProps }, ...props }) => ({ + ({ input: { onChange, ...inputProps }, onChange:onChangeFromField, ...props }) => ({ ...mapError(props), ...inputProps, - onChange: (event, index, value) => onChange(value) + onChange: (event, index, value) => { + onChange(value) + if(onChangeFromField) { + onChangeFromField(value) + } + } })) diff --git a/src/__tests__/SelectField.spec.js b/src/__tests__/SelectField.spec.js index 796fa3a..3f89b58 100644 --- a/src/__tests__/SelectField.spec.js +++ b/src/__tests__/SelectField.spec.js @@ -71,6 +71,31 @@ describe('SelectField', () => { .toHaveBeenCalledWith('TheValue') }) + it('maps onChange from Field property properly', () => { + const reduxFormOnChange = createSpy() + const fieldOnChange = createSpy() + + const dom = TestUtils.renderIntoDocument( + + + + ) + + const select = TestUtils.findRenderedComponentWithType(dom, SelectField) + + expect(reduxFormOnChange).toNotHaveBeenCalled() + expect(fieldOnChange).toNotHaveBeenCalled() + + select.props.onChange(undefined, 42, 'TheValue') + + expect(reduxFormOnChange) + .toHaveBeenCalled() + .toHaveBeenCalledWith('TheValue') + expect(fieldOnChange) + .toHaveBeenCalled() + .toHaveBeenCalledWith('TheValue') + }) + it('provides getRenderedComponent', () => { const dom = TestUtils.renderIntoDocument(