nomilo/templates/macros/form.html

51 lines
1.6 KiB
HTML

{% macro input(id, name, value, type="text", description="", errors, error_msg_id, label, label_attributes, attributes) %}
{% set filtered_errors = [] %}
{% for error in errors %}
{% if error %}
{% set_global filtered_errors = filtered_errors | concat(with=error) %}
{% endif %}
{% endfor %}
<label
for="{{ id }}"
{% for i in range(start=0, end=label_attributes|length, step_by=2) %}
{{ label_attributes[i] }}="{{ label_attributes | nth(n=i+1) }}"
{% endfor %}
>
{{ label }}
</label>
<div>
<input
{% if type == "number" %}
type="text"
inputmode="numeric"
{% else %}
type="{{ type }}"
{% endif %}
name="{{ name }}"
id="{{ id }}"
{% for i in range(start=0, end=attributes|length, step_by=2) %}
{{ attributes[i] }}="{{ attributes | nth(n=i+1) }}"
{% endfor %}
aria-describedby="{% for error in filtered_errors %} {{ id }}-error-{{ loop.index0 }}{% endfor %}{% if description %} {{ id }}-description{%endif %}"
{% if filtered_errors %}aria-invalid="true"{% endif %}
value="{{ value }}"
>
{% for error in filtered_errors %}
<p class="error" id="{{ id }}-error-{{ loop.index0 }}" data-new-item-skip>
{{ tr(
msg=error_msg_id,
attr="error-" ~ error.code | replace(from=":", to="-"),
lang=lang) }}
</p>
{% endfor %}
{% if description %}
<p class="help" id="{{ id }}-description">
{{ description }}
</p>
{% endif %}
</div>
{% endmacro %}