array.html.twig 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. {% extends "forms/field.html.twig" %}
  2. {% block global_attributes %}
  3. data-grav-array-name="{{ (scope ~ field.name)|fieldName }}"
  4. data-grav-array-keyname="{{ field.placeholder_key|e|tu }}"
  5. data-grav-array-valuename="{{ field.placeholder_value|e|tu }}"
  6. {{ parent() }}
  7. {% endblock %}
  8. {% macro renderer(key, text, field, scope) %}
  9. {% if text is not iterable %}
  10. <div class="form-row{% if field.value_only %} array-field-value_only{% endif %}"
  11. data-grav-array-type="row">
  12. <span data-grav-array-action="sort" class="fa fa-bars"></span>
  13. {% if field.value_only != true %}
  14. {% if key == '0' and text == '' %}
  15. {% set key = '' %}
  16. {% endif %}
  17. <input
  18. data-grav-array-type="key"
  19. type="text" value="{{ key }}"
  20. {% if field.disabled or isDisabledToggleable %}disabled="disabled"{% endif %}
  21. placeholder="{{ field.placeholder_key|e|tu }}" />
  22. {% endif %}
  23. <input
  24. data-grav-array-type="value"
  25. type="text"
  26. name="{{ ((scope ~ field.name)|fieldName) ~ '[' ~ key ~ ']' }}"
  27. placeholder="{{ field.placeholder_value|e|tu }}"
  28. {% if field.disabled or isDisabledToggleable %}disabled="disabled"{% endif %}
  29. value={% if text == 'true' %}true{% elseif text == 'false' %}false{% else %}"{{ text|join(', ')|e }}"{% endif %} />
  30. <span data-grav-array-action="rem" class="fa fa-minus"></span>
  31. <span data-grav-array-action="add" class="fa fa-plus"></span>
  32. </div>
  33. {% endif %}
  34. {% endmacro %}
  35. {% block input %}
  36. {% import _self as array_field %}
  37. <div class="{{ field.size }}" data-grav-array-type="container"{% if field.value_only %} data-grav-array-mode="value_only"{% endif %}{{ value|length <= 1 ? ' class="one-child"' : '' }}>
  38. {% if value|length %}
  39. {% for key, text in value -%}
  40. {% if text is not iterable %}
  41. {{ array_field.renderer(key, text, field, scope) }}
  42. {% else %}
  43. {# Backward compatibility for nested arrays (metas) which are not supported anymore #}
  44. {% for subkey, subtext in text -%}
  45. {{ array_field.renderer(key ~ '[' ~ subkey ~ ']', subtext, field, scope) }}
  46. {% endfor %}
  47. {% endif %}
  48. {% endfor %}
  49. {%- else -%}
  50. {# Empty value, mock the entry field#}
  51. <div class="form-row" data-grav-array-type="row">
  52. <span data-grav-array-action="sort" class="fa fa-bars"></span>
  53. {% if field.value_only != true %}
  54. <input
  55. data-grav-array-type="key"
  56. type="text"
  57. {% if field.disabled or isDisabledToggleable %}disabled="disabled"{% endif %}
  58. placeholder="{{ field.placeholder_key|e|tu }}" />
  59. {% endif %}
  60. <input
  61. data-grav-array-type="value"
  62. type="text"
  63. name="{{ (scope ~ field.name)|fieldName }}"
  64. {% if field.disabled or isDisabledToggleable %}disabled="disabled"{% endif %}
  65. placeholder="{{ field.placeholder_value|e|tu }}" />
  66. <span data-grav-array-action="rem" class="fa fa-minus"></span>
  67. <span data-grav-array-action="add" class="fa fa-plus"></span>
  68. </div>
  69. {%- endif %}
  70. </div>
  71. {% endblock %}