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 %} -
+
{% if not hide_label %} {% if field.field.widget.input_type != "checkbox" or field.field.widget.allow_multiple_selected %} diff --git a/src/servala/frontend/templates/frontend/forms/form.html b/src/servala/frontend/templates/frontend/forms/form.html index a9e8c47..b45c41f 100644 --- a/src/servala/frontend/templates/frontend/forms/form.html +++ b/src/servala/frontend/templates/frontend/forms/form.html @@ -1,12 +1,17 @@ -{% if errors %} +{% load i18n %} +{% if form.non_field_errors or form.errors %} diff --git a/src/servala/frontend/templates/includes/form.html b/src/servala/frontend/templates/includes/form.html index d5a5e8a..bc052fe 100644 --- a/src/servala/frontend/templates/includes/form.html +++ b/src/servala/frontend/templates/includes/form.html @@ -2,7 +2,6 @@
- {% include "includes/form_errors.html" %} {% csrf_token %} {{ form }} {% if extra_field %}{{ extra_field }}{% endif %} diff --git a/src/servala/frontend/templates/includes/form_errors.html b/src/servala/frontend/templates/includes/form_errors.html deleted file mode 100644 index 2be9051..0000000 --- a/src/servala/frontend/templates/includes/form_errors.html +++ /dev/null @@ -1,18 +0,0 @@ -{% load i18n %} -{% if form.non_field_errors or form.errors %} - -{% endif %}