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(