Skip to content

Commit f5e92e0

Browse files
authoredApr 16, 2021
fix(ui5-date-picker): does not trigger value verification upon typing(#2922)
Fixes: #2827
1 parent a0ce732 commit f5e92e0

File tree

2 files changed

+33
-23
lines changed

2 files changed

+33
-23
lines changed
 

‎packages/main/src/DatePicker.js

+8-4
Original file line numberDiff line numberDiff line change
@@ -482,14 +482,18 @@ class DatePicker extends DateComponentBase {
482482
this._updateValueAndFireEvents(newValue, true, ["change", "value-changed"]);
483483
}
484484

485-
_updateValueAndFireEvents(value, normalizeValue, events) {
485+
_updateValueAndFireEvents(value, normalizeValue, events, updateValue = true) {
486486
const valid = this._checkValueValidity(value);
487+
487488
if (valid && normalizeValue) {
488489
value = this.normalizeValue(value); // transform valid values (in any format) to the correct format
489490
}
490491

491-
this.value = value;
492-
this._updateValueState(); // Change the value state to Error/None, but only if needed
492+
if (updateValue) {
493+
this.value = value;
494+
this._updateValueState(); // Change the value state to Error/None, but only if needed
495+
}
496+
493497
events.forEach(event => {
494498
this.fireEvent(event, { value, valid });
495499
});
@@ -532,7 +536,7 @@ class DatePicker extends DateComponentBase {
532536
* @protected
533537
*/
534538
async _onInputInput(event) {
535-
this._updateValueAndFireEvents(event.target.value, false, ["input"]);
539+
this._updateValueAndFireEvents(event.target.value, false, ["input"], false);
536540
}
537541

538542
/**

‎packages/main/test/specs/DatePicker.spec.js

+25-19
Original file line numberDiff line numberDiff line change
@@ -610,9 +610,9 @@ describe("Date Picker Tests", () => {
610610
it("Going under the minimum date changes value state", () => {
611611
datepicker.id = "#dp33";
612612

613-
datepicker.input.click();
614-
datepicker.root.keys("Jan 1, 1999");
615-
datepicker.root.keys("Enter");
613+
datepicker.innerInput.click();
614+
datepicker.innerInput.keys("Jan 1, 1999");
615+
datepicker.innerInput.keys("Enter");
616616

617617
assert.equal(datepicker.input.getProperty("valueState"), "Error", "value state of the input is valid");
618618

@@ -623,12 +623,12 @@ describe("Date Picker Tests", () => {
623623
it("Going over the maximum date changes value state", () => {
624624
datepicker.id = "#dp33";
625625

626-
datepicker.input.click();
627-
while(datepicker.root.getValue() !== ""){
628-
datepicker.root.keys("Backspace");
626+
datepicker.innerInput.click();
627+
while(datepicker.innerInput.getValue() !== ""){
628+
datepicker.innerInput.keys("Backspace");
629629
}
630630

631-
datepicker.root.keys("May 5, 2100");
631+
datepicker.innerInput.keys("May 5, 2100");
632632
datepicker.root.keys("Enter");
633633

634634
assert.equal(datepicker.input.getProperty("valueState"), "Error", "value state of the input is valid");
@@ -641,21 +641,17 @@ describe("Date Picker Tests", () => {
641641
datepicker.id = "#dp33";
642642

643643
datepicker.input.click();
644-
while(datepicker.root.getValue() !== ""){
645-
datepicker.root.keys("Backspace");
644+
while(datepicker.innerInput.getValue() !== ""){
645+
datepicker.innerInput.keys("Backspace");
646646
}
647647

648-
datepicker.root.keys("Jan 8, 2100");
648+
datepicker.innerInput.keys("Jan 8, 2100");
649649
datepicker.root.keys("Enter");
650650

651651
assert.equal(datepicker.input.getProperty("valueState"), "None", "value state of the input is valid");
652652

653653
datepicker.input.click();
654-
while(datepicker.root.getValue() !== ""){
655-
datepicker.root.keys("Backspace");
656-
}
657-
658-
datepicker.root.keys("Jan 1, 2000");
654+
datepicker.root.setProperty("value", "Jan 1, 2000");
659655
datepicker.root.keys("Enter");
660656

661657
assert.equal(datepicker.input.getProperty("valueState"), "None", "value state of the input is valid");
@@ -668,10 +664,7 @@ describe("Date Picker Tests", () => {
668664
datepicker.id = "#dp33";
669665

670666
datepicker.input.click();
671-
while(datepicker.root.getValue() !== ""){
672-
datepicker.root.keys("Backspace");
673-
}
674-
datepicker.root.keys("Jan 8, 2100");
667+
datepicker.root.setProperty("value", "Jan 8, 2100");
675668
datepicker.root.keys("Enter");
676669

677670
datepicker.openPicker();
@@ -918,4 +911,17 @@ describe("Date Picker Tests", () => {
918911
browser.keys(["Control", "A"]);
919912
browser.keys("Backspace");
920913
});
914+
915+
it("Value state changes only on submit", () => {
916+
browser.url(`http://localhost:${PORT}/test-resources/pages/DatePicker.html`);
917+
datepicker.id = "#dp33";
918+
datepicker.innerInput.click();
919+
browser.keys("somereallylongtextthatshouldcheckifwevalidateoninput");
920+
921+
assert.equal(datepicker.input.getProperty("valueState"), "None", "value state of the input is valid");
922+
923+
browser.keys("Enter");
924+
925+
assert.equal(datepicker.input.getProperty("valueState"), "Error", "value state of the input is valid");
926+
});
921927
});

0 commit comments

Comments
 (0)
Please sign in to comment.