Skip to content

Commit ee5de4a

Browse files
committed
fix: provide correct validation state in value change listener
1 parent 8465a48 commit ee5de4a

File tree

2 files changed

+12
-1
lines changed
  • vaadin-date-time-picker-flow-parent/vaadin-date-time-picker-flow/src

2 files changed

+12
-1
lines changed

vaadin-date-time-picker-flow-parent/vaadin-date-time-picker-flow/src/main/java/com/vaadin/flow/component/datetimepicker/DateTimePicker.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -376,12 +376,12 @@ private void addValidationListeners() {
376376
public void setValue(LocalDateTime value) {
377377
var oldValue = getValue();
378378
value = sanitizeValue(value);
379-
super.setValue(value);
380379
var shouldFireValidationStatusChangeEvent = oldValue == null
381380
&& value == null
382381
&& (isInputUnparsable() || isInputIncomplete());
383382
synchronizeChildComponentValues(value);
384383
validate(shouldFireValidationStatusChangeEvent);
384+
super.setValue(value);
385385
}
386386

387387
/**

vaadin-date-time-picker-flow-parent/vaadin-date-time-picker-flow/src/test/java/com/vaadin/flow/component/datetimepicker/validation/BasicValidationTest.java

+11
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import java.time.LocalDate;
1919
import java.time.LocalDateTime;
2020
import java.time.LocalTime;
21+
import java.util.concurrent.atomic.AtomicBoolean;
2122
import java.util.concurrent.atomic.AtomicInteger;
2223

2324
import org.junit.Assert;
@@ -234,6 +235,16 @@ public void clearValueProgrammatically_fieldValidatedOnce() {
234235
dateTimePicker.getValidationCount());
235236
}
236237

238+
@Test
239+
public void setValueProgrammatically_invalidStateIsUpdatedInValueChangeListener() {
240+
var isInvalid = new AtomicBoolean();
241+
testField.addValueChangeListener(
242+
e -> isInvalid.set(e.getSource().isInvalid()));
243+
testField.setMax(LocalDateTime.now());
244+
testField.setValue(LocalDateTime.now().plusDays(1));
245+
Assert.assertTrue(isInvalid.get());
246+
}
247+
237248
@Override
238249
protected DateTimePicker createTestField() {
239250
return new DateTimePicker();

0 commit comments

Comments
 (0)