From 20944983de0e05ccc5b1d028a9bfcb7e459ab74a Mon Sep 17 00:00:00 2001 From: Hassan Zaheer Date: Sat, 11 Aug 2018 10:36:52 +1000 Subject: [PATCH] [SelectInput] Add "name" to event.target for onBlur callback (#12467) * As discussed in #12204 - added "name" to - event.target for onBlur callback * clone the onChange event logic --- packages/material-ui/src/Select/SelectInput.js | 3 +++ .../material-ui/src/Select/SelectInput.test.js | 15 +++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/packages/material-ui/src/Select/SelectInput.js b/packages/material-ui/src/Select/SelectInput.js index 80cf98b55de54f..04d36d2e2a2419 100644 --- a/packages/material-ui/src/Select/SelectInput.js +++ b/packages/material-ui/src/Select/SelectInput.js @@ -108,6 +108,9 @@ class SelectInput extends React.Component { } if (this.props.onBlur) { + const { value, name } = this.props; + event.persist(); + event.target = { value, name }; this.props.onBlur(event); } }; diff --git a/packages/material-ui/src/Select/SelectInput.test.js b/packages/material-ui/src/Select/SelectInput.test.js index e148fcdc7cde66..52603e2b422e54 100644 --- a/packages/material-ui/src/Select/SelectInput.test.js +++ b/packages/material-ui/src/Select/SelectInput.test.js @@ -174,6 +174,21 @@ describe('', () => { assert.strictEqual(handleBlur.callCount, 1); }); + it('should pass "name" as part of the event.target for onBlur', () => { + const handleBlur = spy(); + wrapper.setProps({ onBlur: handleBlur, name: 'blur-testing' }); + + wrapper.find(`.${defaultProps.classes.select}`).simulate('click'); + assert.strictEqual(wrapper.state().open, true); + assert.strictEqual(instance.ignoreNextBlur, true); + wrapper.find(`.${defaultProps.classes.select}`).simulate('blur'); + assert.strictEqual(handleBlur.callCount, 0); + assert.strictEqual(instance.ignoreNextBlur, false); + wrapper.find(`.${defaultProps.classes.select}`).simulate('blur'); + assert.strictEqual(handleBlur.callCount, 1); + assert.strictEqual(handleBlur.args[0][0].target.name, 'blur-testing'); + }); + ['space', 'up', 'down'].forEach(key => { it(`'should open menu when pressed ${key} key on select`, () => { wrapper