diff --git a/vaadin-date-time-picker-flow-parent/vaadin-date-time-picker-flow/src/main/java/com/vaadin/flow/component/datetimepicker/DateTimePicker.java b/vaadin-date-time-picker-flow-parent/vaadin-date-time-picker-flow/src/main/java/com/vaadin/flow/component/datetimepicker/DateTimePicker.java index 16b50afa8f8..80f0544062b 100644 --- a/vaadin-date-time-picker-flow-parent/vaadin-date-time-picker-flow/src/main/java/com/vaadin/flow/component/datetimepicker/DateTimePicker.java +++ b/vaadin-date-time-picker-flow-parent/vaadin-date-time-picker-flow/src/main/java/com/vaadin/flow/component/datetimepicker/DateTimePicker.java @@ -425,6 +425,13 @@ public void setReadOnly(boolean readOnly) { timePicker.setReadOnly(readOnly); } + @Override + public void setInvalid(boolean invalid) { + HasValidationProperties.super.setInvalid(invalid); + datePicker.setInvalid(invalid); + timePicker.setInvalid(invalid); + } + /** * Sets the label for this field. * diff --git a/vaadin-date-time-picker-flow-parent/vaadin-date-time-picker-flow/src/test/java/com/vaadin/flow/component/datetimepicker/validation/BasicValidationTest.java b/vaadin-date-time-picker-flow-parent/vaadin-date-time-picker-flow/src/test/java/com/vaadin/flow/component/datetimepicker/validation/BasicValidationTest.java index fe56d479b24..529f77a860e 100644 --- a/vaadin-date-time-picker-flow-parent/vaadin-date-time-picker-flow/src/test/java/com/vaadin/flow/component/datetimepicker/validation/BasicValidationTest.java +++ b/vaadin-date-time-picker-flow-parent/vaadin-date-time-picker-flow/src/test/java/com/vaadin/flow/component/datetimepicker/validation/BasicValidationTest.java @@ -23,6 +23,7 @@ import com.vaadin.flow.component.datepicker.DatePicker; import com.vaadin.flow.component.datetimepicker.DateTimePicker; import com.vaadin.flow.component.shared.SlotUtils; +import com.vaadin.flow.component.timepicker.TimePicker; import com.vaadin.flow.dom.DomEvent; import com.vaadin.flow.internal.nodefeature.ElementListenerMap; import com.vaadin.tests.validation.AbstractBasicValidationTest; @@ -124,6 +125,13 @@ public void setI18nAndCustomErrorMessage_validate_removeCustomErrorMessage_valid Assert.assertEquals("Field is required", testField.getErrorMessage()); } + @Test + public void setInvalid_nestedPickersAreInvalid() { + testField.setInvalid(true); + Assert.assertTrue(getDatePicker().isInvalid()); + Assert.assertTrue(getTimePicker().isInvalid()); + } + @Override protected DateTimePicker createTestField() { return new DateTimePicker(); @@ -133,6 +141,10 @@ private DatePicker getDatePicker() { return (DatePicker) SlotUtils.getChildInSlot(testField, "date-picker"); } + private TimePicker getTimePicker() { + return (TimePicker) SlotUtils.getChildInSlot(testField, "time-picker"); + } + private void fireValidatedDomEvent() { DomEvent validatedDomEvent = new DomEvent(testField.getElement(), "validated", Json.createObject());