{% macro render_input( field, label_visible=true, icon=none, container=true, noindicator=false, indicator_icon=none, indicator_text=none, display=true, add_button=false, del_button=false ) -%} {% set field_visible = field.type != 'HiddenField' and field.type !='CSRFTokenField' %} {% set disabled = kwargs.get("disabled") or (field.render_kw and "disabled" in field.render_kw) %} {% set readonly = kwargs.get("readonly") or (field.render_kw and "readonly" in field.render_kw) %} {% set required = "required" in field.flags %} {% set lock_indicator = readonly or disabled %} {% set corner_indicator = not noindicator and (indicator_icon or lock_indicator or required) %} {% set inline_validation = field.validators and field.type not in ("FileField", "MultipleFileField") %} {% if inline_validation %} {% set ignore_me = kwargs.update({"hx-post": ""}) %} {% set ignore_me = kwargs.update({"hx-indicator": "closest .input", "hx-trigger": "input changed delay:500ms"}) %} {% endif %} {% if container and field_visible %}
{% endif %} {% if field_visible and label_visible %} {{ field.label() }} {% endif %} {% if field_visible %}
{% endif %} {% if icon %}{% endif %} {% if field.description %}{% endif %} {% if field.type not in ("SelectField", "SelectMultipleField") %} {{ field(**kwargs) }} {% elif field.type == "SelectMultipleField" and readonly %} {{ field(class_="ui fluid dropdown multiple read-only", **kwargs) }} {% elif field.type == "SelectMultipleField" %} {{ field(class_="ui fluid dropdown multiple", **kwargs) }} {% elif field.type == "SelectField" and readonly %} {{ field(class_="ui fluid dropdown read-only", **kwargs) }} {% elif field.type == "SelectField" %} {{ field(class_="ui fluid dropdown", **kwargs) }} {% endif %} {% if not noindicator %} {% if indicator_icon %}
{% elif lock_indicator %}
{% elif required %}
{% endif %} {% endif %} {% if field_visible %} {% if caller is defined %} {{ caller() }} {% else %} {% if del_button %} {% endif %} {% if add_button and not readonly and not disabled %} {% endif %} {% endif %}
{% endif %} {% if field.errors %} {% for error in field.errors %}

{{ error }}

{% endfor %} {% endif %} {% if field.name == "password1" and field.data|password_strength and not field.errors %}

{% trans %}Password strength{% endtrans %}

{% endif %} {% if container and field_visible %}
{% endif %} {%- endmacro %} {% macro render_fields(form) %} {% for field in form %} {{ render_field(field) }} {% endfor %} {% endmacro %} {% macro render_field(field, parent_list=none, parent_indice=none) -%} {% if parent_list %} {% set last = parent_indice >= parent_list.entries|len -1 %} {% set ignore_me = kwargs.update({ "label_visible": false, "add_button": (last and (not parent_list.max_entries or parent_indice < parent_list.max_entries)), "del_button": (last and parent_list.min_entries and parent_indice >= parent_list.min_entries), }) %} {% endif %} {% if field.type == "FieldList" %} {{ render_list(field, **kwargs) }} {% elif field.type == "BooleanField" %} {{ render_checkbox(field, **kwargs) }} {% else %} {{ render_input(field, **kwargs) }} {% endif %} {%- endmacro %} {% macro render_list(field, render_func=none) -%}
{# Strangely enough, translations are not rendered when using field.label() #} {{ field[0].label() }} {% for subfield in field %} {% set ignore_me = kwargs.update(**field.render_kw or {}) %} {{ (render_func or render_field)( subfield, parent_list=field, parent_indice=loop.index0, **kwargs ) }} {% endfor %}
{%- endmacro %} {% macro render_checkbox(field, display=true) -%}
{{ field(**kwargs) }} {{ field.label() }}
{%- endmacro %} {% macro render_form( form, action_text=none, class_='', btn_class='ui right floated primary button', action=none, id=none, csrf=true) -%}
{% if caller is defined %} {% if csrf %} {% endif %} {{ caller() }} {% else %} {{ render_fields(form) }} {% endif %} {% if action_text %}
{% endif %}
{%- endmacro %}