{% macro render_field(form, fields, scope) %}
    {% import _self as self %}

    {% for index, field in fields %}
        {%- set show_field = attribute(field, "input@") ?? field.store ?? true %}
        {% if field.fields %}
            {%- set new_scope = field.nest_id ? scope ~ field.name ~ '.' : scope -%}
            {{- self.render_field(form, field.fields, new_scope) }}
        {% else %}
            {% if show_field %}
                {%- set value = form.value(scope ~ (field.name ?? index)) -%}
                {% if value %}
                    {% block field %}
                        <div>
                            {% block field_label %}
                                <strong>{{ field.label|t|e }}</strong>:
                            {% endblock %}

                            {% block field_value %}
                                {% if field.type == 'checkboxes' %}
                                    <ul>
                                        {% set use_keys = field.use is defined and field.use == 'keys' %}
                                        {% for key,value in form.value(scope ~ field.name) %}
                                            {% set index = (use_keys ? key : value) %}
                                            <li>{{ field.options[index]|t|e }}</li>
                                        {% endfor %}
                                    </ul>
                                {% elseif field.type == 'radio' %}
                                    {% set value = form.value(scope ~ field.name) %}
                                    {{ field.options[value]|t|e }}
                                {% elseif field.type == 'checkbox' %}
                                    {{ (form.value(scope ~ field.name) == 1) ? "GRAV.YES"|t|e : "GRAV.NO"|t|e }}
                                {% elseif field.type == 'select' %}
                                    {% set value = form.value(scope ~ field.name) %}
                                    {% if value is iterable %}
                                        <ul>
                                            {% set use_keys = field.use is defined and field.use == 'keys' %}
                                            {% for key, val in value %}
                                                {% set index = (use_keys ? key : val) %}
                                                <li>{{ field.options[index]|t|e }}</li>
                                            {% endfor %}
                                        </ul>
                                    {% else %}
                                        {{ field.options[value]|t|e }}
                                    {% endif %}
                                {% else %}
                                    {% set value = form.value(scope ~ field.name) %}
                                    {% if value is iterable %}
                                        <ul>
                                            {% for val in value %}
                                                {% if val is iterable %}
                                                    <ul>
                                                        {% for v in val %}
                                                            <li>{{ string(v)|e }}</li>
                                                        {% endfor %}
                                                    </ul>
                                                {% else %}
                                                    <li>{{ string(val)|e }}</li>
                                                {% endif %}
                                            {% endfor %}
                                        </ul>
                                    {% else %}
                                        {{ string(value)|e|nl2br }}
                                    {% endif %}
                                {% endif %}
                            {% endblock %}
                        </div>
                    {% endblock %}
                {% endif %}
            {% endif %}
        {% endif %}
    {% endfor %}
{% endmacro %}

{% import _self as macro %}

{{ macro.render_field(form, form.fields, '') }}