51 lines
1.6 KiB
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 %}
|