{#- Each widget lives in widgets/, so a project can override one by dropping a file with the same name into its own template folder. -#} {% import "adminsite/_icons.html" as icons %} {%- set field_id = "field-" ~ (row.id_prefix ~ row.path)|replace(".", "-") -%} {#- Ties the input to its name, and to its error or help, for screen readers. -#} {%- set field_attrs -%} aria-labelledby="{{ field_id }}-label" {%- if row.error or row.note %} aria-describedby="{{ field_id }}-note"{% endif %} {%- if row.error %} aria-invalid="true"{% endif %} {%- endset -%} {%- set wide = row.widget in ("textarea", "json", "file", "image") or row.field.collection|default(false) or row.field.multiple|default(false) -%}
{{ row.label }} {% if row.readonly %} {{ icons.icon("lock", 12) }}{{ _('read only') }} {% elif row.required %} {{ _('required') }} {% endif %} {% if row.readonly %} {% include "adminsite/widgets/readonly.html" %} {% else %} {% include ["adminsite/widgets/" ~ row.widget ~ ".html", "adminsite/widgets/input.html"] %} {% endif %} {% if row.error %}

{{ icons.icon("alert", 14) }}{{ row.error }}

{% elif row.note %}

{{ row.note }}

{% endif %}