From cf621bd8772e66ca9258e706c9d0a3cca6194bba Mon Sep 17 00:00:00 2001 From: Eric Hu Date: Thu, 7 Mar 2019 15:50:03 +0800 Subject: [PATCH] Add props.onPressEnter only --- README.md | 6 ++++++ src/index.js | 6 +++++- tests/index.js | 14 ++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f595ef49..fcb26cc9 100644 --- a/README.md +++ b/README.md @@ -164,6 +164,12 @@ online example: http://react-component.github.io/input-number/examples/ Called when value of an InputNumber changed + + onPressEnter + Function + + The callback function that is triggered when Enter key is pressed. + onFocus Function diff --git a/src/index.js b/src/index.js index b52a93af..0cc6fb4c 100644 --- a/src/index.js +++ b/src/index.js @@ -47,6 +47,7 @@ export default class InputNumber extends React.Component { focusOnUpDown: PropTypes.bool, autoFocus: PropTypes.bool, onChange: PropTypes.func, + onPressEnter: PropTypes.func, onKeyDown: PropTypes.func, onKeyUp: PropTypes.func, prefixCls: PropTypes.string, @@ -86,6 +87,7 @@ export default class InputNumber extends React.Component { style: {}, onChange: noop, onKeyDown: noop, + onPressEnter: noop, onFocus: noop, onBlur: noop, parser: defaultParser, @@ -214,7 +216,7 @@ export default class InputNumber extends React.Component { } onKeyDown = (e, ...args) => { - const { onKeyDown } = this.props; + const { onKeyDown, onPressEnter } = this.props; if (e.keyCode === KeyCode.UP) { const ratio = this.getRatio(e); @@ -224,6 +226,8 @@ export default class InputNumber extends React.Component { const ratio = this.getRatio(e); this.down(e, ratio); this.stop(); + } else if (e.keyCode === KeyCode.ENTER && onPressEnter) { + onPressEnter(e); } // Trigger user key down diff --git a/tests/index.js b/tests/index.js index 8e22e422..441c2771 100644 --- a/tests/index.js +++ b/tests/index.js @@ -537,6 +537,20 @@ describe('inputNumber', () => { Simulate.blur(inputElement); expect(onChange.called).to.be(false); }); + + it('pressEnter works', () => { + const onPressEnter = sinon.spy(); + const Demo = createReactClass({ + render() { + return ; + }, + }); + example = ReactDOM.render(, container); + inputNumber = example.refs.inputNum; + inputElement = ReactDOM.findDOMNode(inputNumber.input); + Simulate.keyDown(inputElement, { keyCode: keyCode.ENTER }); + expect(onPressEnter.called).to.be(true); + }); }); describe('default value', () => {