Skip to content

Commit

Permalink
input should trigger onChange, and blur to correct value too
Browse files Browse the repository at this point in the history
  • Loading branch information
Superdev0103 committed Jan 8, 2017
1 parent 985904b commit 21d4f23
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 17 deletions.
4 changes: 3 additions & 1 deletion src/mixin.js
Expand Up @@ -57,7 +57,9 @@ export default {
},

onChange(e) {
this.setState({ inputValue: this.getValueFromEvent(e).trim() });
const input = this.getValueFromEvent(e).trim();
this.setState({ inputValue: input });
this.props.onChange(this.toNumber(input)); // valid number or invali string
},

onFocus(...args) {
Expand Down
34 changes: 18 additions & 16 deletions tests/index.js
Expand Up @@ -14,6 +14,7 @@ const defaultValue = 98;
describe('inputNumber', () => {
const container = document.createElement('div');
document.body.appendChild(container);
let onChangeFirstArgument;

const Component = React.createClass({
getInitialState() {
Expand All @@ -29,6 +30,7 @@ describe('inputNumber', () => {
};
},
onChange(value) {
onChangeFirstArgument = value;
this.setState({ value });
},
triggerBoolean(propName) {
Expand Down Expand Up @@ -215,73 +217,73 @@ describe('inputNumber', () => {
Simulate.focus(inputElement);
Simulate.change(inputElement, { target: { value: '6' } });
expect(inputElement.value).to.be('6');
expect(inputNumber.state.value).to.be(98);
expect(onChangeFirstArgument).to.be(6);
Simulate.blur(inputElement);
expect(inputElement.value).to.be('6');
expect(inputNumber.state.value).to.be(6);
expect(onChangeFirstArgument).to.be(6);
});

it('input invalid number', () => {
Simulate.focus(inputElement);
Simulate.change(inputElement, { target: { value: 'xx' } });
expect(inputElement.value).to.be('xx');
expect(inputNumber.state.value).to.be(98);
expect(onChangeFirstArgument).to.be('xx');
Simulate.blur(inputElement);
expect(inputElement.value).to.be('98');
expect(inputNumber.state.value).to.be(98);
expect(inputElement.value).to.be('');
expect(onChangeFirstArgument).to.be(undefined);
});

it('input negative symbol', () => {
example.setState({ min: -100 });
Simulate.focus(inputElement);
Simulate.change(inputElement, { target: { value: '-' } });
expect(inputElement.value).to.be('-');
expect(inputNumber.state.value).to.be(98);
expect(onChangeFirstArgument).to.be('-');
Simulate.blur(inputElement);
expect(inputElement.value).to.be('98');
expect(inputNumber.state.value).to.be(98);
expect(inputElement.value).to.be('');
expect(onChangeFirstArgument).to.be(undefined);
});

it('input negative number', () => {
example.setState({ min: -100 });
Simulate.focus(inputElement);
Simulate.change(inputElement, { target: { value: '-98' } });
expect(inputElement.value).to.be('-98');
expect(inputNumber.state.value).to.be(98);
expect(onChangeFirstArgument).to.be(-98);
Simulate.blur(inputElement);
expect(inputElement.value).to.be('-98');
expect(inputNumber.state.value).to.be(-98);
expect(onChangeFirstArgument).to.be(-98);
});

it('input decimal number with integer step', () => {
Simulate.focus(inputElement);
Simulate.change(inputElement, { target: { value: '1.2' } });
expect(inputNumber.state.value).to.be(98);
expect(inputElement.value).to.be('1.2');
expect(onChangeFirstArgument).to.be(1.2);
Simulate.blur(inputElement);
expect(inputNumber.state.value).to.be(1.2);
expect(inputElement.value).to.be('1.2');
expect(onChangeFirstArgument).to.be(1.2);
});

it('input decimal number with decimal step', () => {
example.setState({ step: 0.1 });
Simulate.focus(inputElement);
Simulate.change(inputElement, { target: { value: '1.2' } });
expect(inputNumber.state.value).to.be(98);
expect(inputElement.value).to.be('1.2');
expect(onChangeFirstArgument).to.be(1.2);
Simulate.blur(inputElement);
expect(inputNumber.state.value).to.be(1.2);
expect(inputElement.value).to.be('1.2');
expect(onChangeFirstArgument).to.be(1.2);
});

it('input empty text and blur', () => {
Simulate.focus(inputElement);
Simulate.change(inputElement, { target: { value: '' } });
expect(inputElement.value).to.be('');
expect(inputNumber.state.value).to.be(98);
expect(onChangeFirstArgument).to.be('');
Simulate.blur(inputElement);
expect(inputElement.value).to.be('');
expect(inputNumber.state.value).to.be(undefined);
expect(onChangeFirstArgument).to.be(undefined);
});
});

Expand Down

0 comments on commit 21d4f23

Please sign in to comment.