toggle.html.twig 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. {% extends "forms/field.html.twig" %}
  2. {% set value = (value is null ? field.default : value) %}
  3. {% set value = (value is same as(false) ? 0 : value) %}
  4. {% set has_hidden = false %}
  5. {% for key, text in field.options %}
  6. {% if key is empty %}
  7. {% set has_hidden = true %}
  8. {% endif %}
  9. {% endfor %}
  10. {% block global_attributes %}
  11. {{ parent() }}
  12. data-grav-field-name="{{ (scope ~ field.name)|fieldName }}"
  13. {% endblock %}
  14. {% macro spanToggle(input, length) %}
  15. {% set space = repeat('  ', (length - input|length) / 2) %}
  16. {{ (space ~ input ~ space)|raw }}
  17. {% endmacro %}
  18. {% block input %}
  19. <div class="switch-toggle switch-grav {{ field.size }} switch-{{ field.options|length }} {{ field.classes }}">
  20. {% set maxLen = 0 %}
  21. {% for text in field.options %}
  22. {% set translation = grav.twig.twig.filters['tu'] is defined ? text|tu : text|t %}
  23. {% set maxLen = max(translation|length, maxLen) %}
  24. {% endfor %}
  25. {% for key, text in field.options %}
  26. {% set id = "toggle_" ~ field.name ~ key %}
  27. {% set translation = (grav.twig.twig.filters['tu'] is defined ? text|tu : text|t)|trim %}
  28. <input type="radio"
  29. value="{{ key }}"
  30. id="{{ id }}"
  31. name="{{ (scope ~ field.name)|fieldName }}"
  32. {% if field.highlight is defined %}
  33. class="{{ field.highlight == '' ~ key ? 'highlight' : '' }}"
  34. {% endif %}
  35. {% if field.disabled or isDisabledToggleable %}disabled="disabled"{% endif %}
  36. {% if field.toggleable %}
  37. {% if '' ~ key == '' ~ value %}
  38. checked="checked"
  39. {% elseif value is defined and (key == 1 or key == '1') %}
  40. checked="checked"
  41. {% endif %}
  42. {% else %}
  43. {% if '' ~ key == '' ~ value %}
  44. checked="checked"
  45. {% endif %}
  46. {% endif %}
  47. {% if field.validate.required in ['on', 'true', 1] %}required="required"{% endif %}
  48. />
  49. <label for="{{ id }}">{{ (_self.spanToggle(translation, maxLen)|trim)|raw }}</label>
  50. {% endfor %}
  51. </div>
  52. {% endblock %}