100 lines
4.9 KiB
Twig
100 lines
4.9 KiB
Twig
{% extends "forms/field.html.twig" %}
|
|
|
|
{% macro renderer(key, text, field, scope) %}
|
|
|
|
{% if text is not iterable %}
|
|
<div class="form-row{% if field.value_only %} array-field-value_only{% endif %}"
|
|
data-grav-array-type="row">
|
|
<span data-grav-array-action="sort" class="fa fa-bars"></span>
|
|
{% if field.value_only != true %}
|
|
{% if key == '0' and text == '' %}
|
|
{% set key = '' %}
|
|
{% endif %}
|
|
|
|
<input
|
|
data-grav-array-type="key"
|
|
type="text" value="{{ key }}"
|
|
{% if field.disabled or isDisabledToggleable %}disabled="disabled"{% endif %}
|
|
placeholder="{{ field.placeholder_key|e|t }}" />
|
|
{% endif %}
|
|
|
|
{% if field.value_type == 'textarea' %}
|
|
<textarea
|
|
data-grav-array-type="value"
|
|
name="{{ ((scope ~ field.name)|fieldName) ~ '[' ~ key ~ ']' }}"
|
|
placeholder="{{ field.placeholder_value|e|t }}"
|
|
{% if field.disabled or isDisabledToggleable %}disabled="disabled"{% endif %}>{{ text }}</textarea>
|
|
{% else %}
|
|
<input
|
|
data-grav-array-type="value"
|
|
type="text"
|
|
name="{{ ((scope ~ field.name)|fieldName) ~ '[' ~ key ~ ']' }}"
|
|
placeholder="{{ field.placeholder_value|e|t }}"
|
|
{% if field.disabled or isDisabledToggleable %}disabled="disabled"{% endif %}
|
|
value={% if text == 'true' %}true{% elseif text == 'false' %}false{% else %}"{{ text|join(', ')|e }}"{% endif %} />
|
|
{% endif %}
|
|
|
|
<span data-grav-array-action="rem" class="fa fa-minus"></span>
|
|
<span data-grav-array-action="add" class="fa fa-plus"></span>
|
|
</div>
|
|
{% endif %}
|
|
{% endmacro %}
|
|
|
|
{% import _self as array_field %}
|
|
|
|
{% do assets.addJs('plugin://form/assets/form.vendor.js', { 'group': 'bottom', 'loading': 'defer' }) %}
|
|
{% do assets.addJs('plugin://form/assets/form.min.js', { 'group': 'bottom', 'loading': 'defer' }) %}
|
|
|
|
{% block global_attributes %}
|
|
data-grav-array-name="{{ (scope ~ field.name)|fieldName }}"
|
|
data-grav-array-keyname="{{ field.placeholder_key|e|t }}"
|
|
data-grav-array-valuename="{{ field.placeholder_value|e|t }}"
|
|
data-grav-array-textarea="{{ field.value_type == 'textarea' }}"
|
|
{{ parent() }}
|
|
{% endblock %}
|
|
|
|
{% block input %}
|
|
<div class="{{ field.size }} {{ field.classes }}" data-grav-array-type="container"{% if field.value_only %} data-grav-array-mode="value_only"{% endif %}{{ value|length <= 1 ? ' class="one-child"' : '' }}>
|
|
{% if value|length %}
|
|
{% for key, text in value -%}
|
|
{% if text is not iterable %}
|
|
{{ array_field.renderer(key, text, field, scope) }}
|
|
{% else %}
|
|
{# Backward compatibility for nested arrays (metas) which are not supported anymore #}
|
|
{% for subkey, subtext in text -%}
|
|
{{ array_field.renderer(key ~ '[' ~ subkey ~ ']', subtext, field, scope) }}
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% endfor %}
|
|
{%- else -%}
|
|
{# Empty value, mock the entry field#}
|
|
<div class="form-row" data-grav-array-type="row">
|
|
<span data-grav-array-action="sort" class="fa fa-bars"></span>
|
|
{% if field.value_only != true %}
|
|
<input
|
|
data-grav-array-type="key"
|
|
type="text"
|
|
{% if field.disabled or isDisabledToggleable %}disabled="disabled"{% endif %}
|
|
placeholder="{{ field.placeholder_key|e|t }}" />
|
|
{% endif %}
|
|
{% if field.value_type == 'textarea' %}
|
|
<textarea
|
|
data-grav-array-type="value"
|
|
name="{{ (scope ~ field.name)|fieldName }}"
|
|
{% if field.disabled or isDisabledToggleable %}disabled="disabled"{% endif %}
|
|
placeholder="{{ field.placeholder_value|e|t }}"></textarea>
|
|
{% else %}
|
|
<input
|
|
data-grav-array-type="value"
|
|
type="text"
|
|
name="{{ (scope ~ field.name)|fieldName }}"
|
|
{% if field.disabled or isDisabledToggleable %}disabled="disabled"{% endif %}
|
|
placeholder="{{ field.placeholder_value|e|t }}" />
|
|
{% endif %}
|
|
<span data-grav-array-action="rem" class="fa fa-minus"></span>
|
|
<span data-grav-array-action="add" class="fa fa-plus"></span>
|
|
</div>
|
|
{%- endif %}
|
|
</div>
|
|
{% endblock %}
|