Skip to content

Commit

Permalink
fix: avoid using initial step in validation
Browse files Browse the repository at this point in the history
setting the min or max property should not trigger step-based validation

fix #420
  • Loading branch information
pekam committed Oct 7, 2019
1 parent 7599194 commit 77c3025
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 1 deletion.
8 changes: 7 additions & 1 deletion src/vaadin-number-field.html
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,13 @@
}

_stepChanged(step) {
this.inputElement.step = step;
if (!this.__stepChangedCalled) {
// Setting the initial value, avoid using it in validation.
this.inputElement.step = 'any';
this.__stepChangedCalled = true;
} else {
this.inputElement.step = step;
}
}

_minChanged(min) {
Expand Down
36 changes: 36 additions & 0 deletions test/number-field.html
Original file line number Diff line number Diff line change
Expand Up @@ -749,6 +749,42 @@
expect(numberField.validate(), 'value should not be greater than max').to.be.false;
});

it('should validate by step when defined by user', () => {
numberField.step = 1.5;

[-6, -1.5, 0, 1.5, 4.5].forEach(validValue => {
numberField.value = validValue;
expect(numberField.validate()).to.be.true;
});

[-3.5, -1, 2, 2.5].forEach(invalidValue => {
numberField.value = invalidValue;
expect(numberField.validate()).to.be.false;
});
});

it('should use min as step basis in validation when both are defined', () => {
numberField.min = 1;
numberField.step = 1.5;

[1, 2.5, 4, 5.5].forEach(validValue => {
numberField.value = validValue;
expect(numberField.validate()).to.be.true;
});

[1.5, 3, 5].forEach(invalidValue => {
numberField.value = invalidValue;
expect(numberField.validate()).to.be.false;
});
});

it('should not validate by step when only min and max are set', () => {
numberField.min = 1;
numberField.max = 5;
numberField.value = 1.5; // would be invalid by default step=1
expect(numberField.validate()).to.be.true;
});

describe('removing validation constraints', () => {
it('should update "invalid" state when "min" is removed', () => {
numberField.value = '42';
Expand Down

0 comments on commit 77c3025

Please sign in to comment.