You are here

details.html.twig in Drupal 10

Theme override for a details element.

Available variables

  • attributes: A list of HTML attributes for the details element.
  • errors: (optional) Any errors for this details element, may not be set.
  • title: (optional) The title of the element, may not be set.
  • description: (optional) The description of the element, may not be set.
  • children: (optional) The children of the element, may not be set.
  • value: (optional) The value of the element, may not be set.
  • accordion: whether the details element should look as an accordion.
  • accordion_item: whether the details element is an item of an accordion list.
  • disabled: whether the details is disabled.

File

core/themes/claro/templates/details.html.twig
View source
  1. {#
  2. /**
  3. * @file
  4. * Theme override for a details element.
  5. *
  6. * Available variables
  7. * - attributes: A list of HTML attributes for the details element.
  8. * - errors: (optional) Any errors for this details element, may not be set.
  9. * - title: (optional) The title of the element, may not be set.
  10. * - description: (optional) The description of the element, may not be set.
  11. * - children: (optional) The children of the element, may not be set.
  12. * - value: (optional) The value of the element, may not be set.
  13. * - accordion: whether the details element should look as an accordion.
  14. * - accordion_item: whether the details element is an item of an accordion
  15. * list.
  16. * - disabled: whether the details is disabled.
  17. *
  18. * @see template_preprocess_details()
  19. * @see claro_preprocess_details()
  20. */
  21. #}
  22. {#
  23. Prefix 'details' class to avoid collision with Modernizr.
  24. @todo Remove prefix after https://www.drupal.org/node/2981732 has been solved.
  25. #}
  26. {%
  27. set classes = [
  28. 'claro-details',
  29. accordion ? 'claro-details--accordion',
  30. accordion_item ? 'claro-details--accordion-item',
  31. element['#module_package_listing'] ? 'claro-details--package-listing',
  32. ]
  33. %}
  34. {%
  35. set content_wrapper_classes = [
  36. 'claro-details__wrapper',
  37. 'details-wrapper',
  38. accordion ? 'claro-details__wrapper--accordion',
  39. accordion_item ? 'claro-details__wrapper--accordion-item',
  40. element['#module_package_listing'] ? 'claro-details__wrapper--package-listing',
  41. ]
  42. %}
  43. {%
  44. set inner_wrapper_classes = [
  45. 'claro-details__content',
  46. accordion ? 'claro-details__content--accordion',
  47. accordion_item ? 'claro-details__content--accordion-item',
  48. element['#module_package_listing'] ? 'claro-details__content--package-listing',
  49. ]
  50. %}
  51. <details{{ attributes.addClass(classes) }}>
  52. {%- if title -%}
  53. {%
  54. set summary_classes = [
  55. 'claro-details__summary',
  56. required ? 'js-form-required',
  57. required ? 'form-required',
  58. accordion ? 'claro-details__summary--accordion',
  59. accordion_item ? 'claro-details__summary--accordion-item',
  60. element['#module_package_listing'] ? 'claro-details__summary--package-listing',
  61. ]
  62. %}
  63. <summary{{ summary_attributes.addClass(summary_classes) }}>
  64. {{- title -}}
  65. {%- if required -%}
  66. <span class="required-mark"></span>
  67. {%- endif -%}
  68. </summary>
  69. {%- endif -%}
  70. <div{{ content_attributes.addClass(content_wrapper_classes) }}>
  71. {% if accordion or accordion_item %}
  72. <div{{ create_attribute({class: inner_wrapper_classes}) }}>
  73. {% endif %}
  74. {% if errors %}
  75. <div class="form-item form-item--error-message">
  76. {{ errors }}
  77. </div>
  78. {% endif %}
  79. {%- if description -%}
  80. <div class="claro-details__description{{ disabled ? ' is-disabled' }}">{{ description }}</div>
  81. {%- endif -%}
  82. {%- if children -%}
  83. {{ children }}
  84. {%- endif -%}
  85. {%- if value -%}
  86. {{ value }}
  87. {%- endif -%}
  88. {% if accordion or accordion_item %}
  89. </div>
  90. {% endif %}
  91. </div>
  92. </details>