From d902aab8b569fcd1bbeba3b51975b3b23d2e4a6e Mon Sep 17 00:00:00 2001 From: Tom Leslie Date: Fri, 28 Aug 2015 09:46:49 -0500 Subject: [PATCH 1/3] Adding onInputChange handler that returns the current input value. --- src/Select.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Select.js b/src/Select.js index bb4c2688b8..5f2240afba 100644 --- a/src/Select.js +++ b/src/Select.js @@ -41,6 +41,7 @@ var Select = React.createClass({ onBlur: React.PropTypes.func, // onBlur handler: function(event) {} onChange: React.PropTypes.func, // onChange handler: function(newValue) {} onFocus: React.PropTypes.func, // onFocus handler: function(event) {} + onInputChange: React.PropTypes.func, // onInputChange handler: function(inputValue) {} onOptionLabelClick: React.PropTypes.func, // onCLick handler for value labels: function (value, event) {} optionComponent: React.PropTypes.func, // option component to render in dropdown optionRenderer: React.PropTypes.func, // optionRenderer: function(option) {} @@ -77,6 +78,7 @@ var Select = React.createClass({ newOptionCreator: undefined, noResultsText: 'No results found', onChange: undefined, + onInputChange: undefined, onOptionLabelClick: undefined, optionComponent: Option, options: undefined, @@ -465,7 +467,11 @@ var Select = React.createClass({ return; } break; - default: return; + default: + if (this.props.onInputChange) { + this.props.onInputChange(this.state.inputValue); + } + return; } event.preventDefault(); }, From 9a596e9ad6cbe698e2cc529ccc8a9a3a7b804d81 Mon Sep 17 00:00:00 2001 From: Tom Leslie Date: Fri, 28 Aug 2015 10:27:46 -0500 Subject: [PATCH 2/3] Adding test for onInputChange. --- test/Select-test.js | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/test/Select-test.js b/test/Select-test.js index a070a122ac..98a8d99b4d 100644 --- a/test/Select-test.js +++ b/test/Select-test.js @@ -45,7 +45,7 @@ class PropsWrapper extends React.Component { } describe('Select', function() { - var options, onChange; + var options, onChange, onInputChange; var instance, wrapper; var searchInputNode; @@ -53,6 +53,10 @@ describe('Select', function() { return React.findDOMNode(instance).querySelector('.Select-control'); } + function enterSingleCharacter() { + TestUtils.Simulate.keyDown(searchInputNode, { keyCode: 65, key: 'a' }); + } + function pressEnterToAccept() { TestUtils.Simulate.keyDown(searchInputNode, { keyCode: 13, key: 'Enter' }); } @@ -107,10 +111,12 @@ describe('Select', function() { var createControl = function(props) { onChange = sinon.spy(); + onInputChange = sinon.spy(); // Render an instance of the component instance = TestUtils.renderIntoDocument(