diff --git a/src/servala/frontend/forms/renderers.py b/src/servala/frontend/forms/renderers.py index 24e412b..b0d867c 100644 --- a/src/servala/frontend/forms/renderers.py +++ b/src/servala/frontend/forms/renderers.py @@ -17,10 +17,12 @@ class VerticalFormRenderer(TemplatesSetting): form_template_name = "frontend/forms/form.html" field_template_name = "frontend/forms/vertical_field.html" - def get_class_names(self, input_type): + def get_class_names(self, field): + input_type = self.get_field_input_type(field) + errors = "is-invalid " if field.errors else "" if input_type == "checkbox": - return "form-check-input" - return "form-control" + return f"{errors}form-check-input" + return f"{errors}form-control" def get_widget_input_type(self, widget): if isinstance(widget, Textarea): @@ -35,9 +37,8 @@ class VerticalFormRenderer(TemplatesSetting): def render(self, template_name, context, request=None): if field := context.get("field"): - input_type = self.get_field_input_type(field) field.build_widget_attrs = inject_class( - field.build_widget_attrs, self.get_class_names(input_type) + field.build_widget_attrs, self.get_class_names(field) ) return super().render(template_name, context, request) diff --git a/src/servala/frontend/templates/frontend/forms/field.html b/src/servala/frontend/templates/frontend/forms/field.html index fe56619..744732e 100644 --- a/src/servala/frontend/templates/frontend/forms/field.html +++ b/src/servala/frontend/templates/frontend/forms/field.html @@ -1,5 +1,5 @@ {% load i18n %} -