Skip to content

Commit 0f29182

Browse files
fix: ensure invalid state is correctly set on slotted pickers (#7074) (#7077)
Co-authored-by: Serhii Kulykov <iamkulykov@gmail.com>
1 parent 850f880 commit 0f29182

2 files changed

Lines changed: 19 additions & 0 deletions

File tree

  • vaadin-date-time-picker-flow-parent/vaadin-date-time-picker-flow/src

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -425,6 +425,13 @@ public void setReadOnly(boolean readOnly) {
425425
timePicker.setReadOnly(readOnly);
426426
}
427427

428+
@Override
429+
public void setInvalid(boolean invalid) {
430+
HasValidationProperties.super.setInvalid(invalid);
431+
datePicker.setInvalid(invalid);
432+
timePicker.setInvalid(invalid);
433+
}
434+
428435
/**
429436
* Sets the label for this field.
430437
*

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import com.vaadin.flow.component.datepicker.DatePicker;
2424
import com.vaadin.flow.component.datetimepicker.DateTimePicker;
2525
import com.vaadin.flow.component.shared.SlotUtils;
26+
import com.vaadin.flow.component.timepicker.TimePicker;
2627
import com.vaadin.flow.dom.DomEvent;
2728
import com.vaadin.flow.internal.nodefeature.ElementListenerMap;
2829
import com.vaadin.tests.validation.AbstractBasicValidationTest;
@@ -124,6 +125,13 @@ public void setI18nAndCustomErrorMessage_validate_removeCustomErrorMessage_valid
124125
Assert.assertEquals("Field is required", testField.getErrorMessage());
125126
}
126127

128+
@Test
129+
public void setInvalid_nestedPickersAreInvalid() {
130+
testField.setInvalid(true);
131+
Assert.assertTrue(getDatePicker().isInvalid());
132+
Assert.assertTrue(getTimePicker().isInvalid());
133+
}
134+
127135
@Override
128136
protected DateTimePicker createTestField() {
129137
return new DateTimePicker();
@@ -133,6 +141,10 @@ private DatePicker getDatePicker() {
133141
return (DatePicker) SlotUtils.getChildInSlot(testField, "date-picker");
134142
}
135143

144+
private TimePicker getTimePicker() {
145+
return (TimePicker) SlotUtils.getChildInSlot(testField, "time-picker");
146+
}
147+
136148
private void fireValidatedDomEvent() {
137149
DomEvent validatedDomEvent = new DomEvent(testField.getElement(),
138150
"validated", Json.createObject());

0 commit comments

Comments
 (0)