govuk_publishing_components 42.0.0 → 43.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (591) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/govuk_publishing_components/_all_components.scss +2 -1
  3. data/app/assets/stylesheets/govuk_publishing_components/component_support.scss +4 -4
  4. data/app/assets/stylesheets/govuk_publishing_components/components/_accordion.scss +18 -3
  5. data/app/assets/stylesheets/govuk_publishing_components/components/_attachment-link.scss +15 -0
  6. data/app/assets/stylesheets/govuk_publishing_components/components/_attachment.scss +20 -0
  7. data/app/assets/stylesheets/govuk_publishing_components/components/_breadcrumbs.scss +21 -1
  8. data/app/assets/stylesheets/govuk_publishing_components/components/_cards.scss +27 -6
  9. data/app/assets/stylesheets/govuk_publishing_components/components/_chat-entry.scss +36 -0
  10. data/app/assets/stylesheets/govuk_publishing_components/components/_contents-list.scss +6 -6
  11. data/app/assets/stylesheets/govuk_publishing_components/components/_cross-service-header.scss +29 -0
  12. data/app/assets/stylesheets/govuk_publishing_components/components/_devolved-nations.scss +23 -0
  13. data/app/assets/stylesheets/govuk_publishing_components/components/_document-list.scss +19 -0
  14. data/app/assets/stylesheets/govuk_publishing_components/components/_govspeak-html-publication.scss +5 -3
  15. data/app/assets/stylesheets/govuk_publishing_components/components/_heading.scss +16 -0
  16. data/app/assets/stylesheets/govuk_publishing_components/components/_image-card.scss +19 -0
  17. data/app/assets/stylesheets/govuk_publishing_components/components/_inset-text.scss +23 -0
  18. data/app/assets/stylesheets/govuk_publishing_components/components/_intervention.scss +29 -0
  19. data/app/assets/stylesheets/govuk_publishing_components/components/_layout-for-admin.scss +1 -1
  20. data/app/assets/stylesheets/govuk_publishing_components/components/_lead-paragraph.scss +6 -0
  21. data/app/assets/stylesheets/govuk_publishing_components/components/_metadata.scss +16 -0
  22. data/app/assets/stylesheets/govuk_publishing_components/components/_organisation-logo.scss +7 -0
  23. data/app/assets/stylesheets/govuk_publishing_components/components/_phase-banner.scss +21 -0
  24. data/app/assets/stylesheets/govuk_publishing_components/components/_previous-and-next-navigation.scss +8 -0
  25. data/app/assets/stylesheets/govuk_publishing_components/components/_search.scss +8 -7
  26. data/app/assets/stylesheets/govuk_publishing_components/components/_success-alert.scss +22 -0
  27. data/app/assets/stylesheets/govuk_publishing_components/components/_title.scss +8 -0
  28. data/app/assets/stylesheets/govuk_publishing_components/components/_warning-text.scss +11 -0
  29. data/app/assets/stylesheets/govuk_publishing_components/components/helpers/_brand-colours.scss +24 -2
  30. data/app/assets/stylesheets/govuk_publishing_components/components/helpers/_govuk-frontend-settings.scss +2 -0
  31. data/app/views/govuk_publishing_components/components/_action_link.html.erb +1 -1
  32. data/app/views/govuk_publishing_components/components/_attachment.html.erb +2 -2
  33. data/app/views/govuk_publishing_components/components/_breadcrumbs.html.erb +2 -1
  34. data/app/views/govuk_publishing_components/components/_chat_entry.html.erb +46 -0
  35. data/app/views/govuk_publishing_components/components/_contextual_breadcrumbs.html.erb +6 -4
  36. data/app/views/govuk_publishing_components/components/_contextual_footer.html.erb +1 -1
  37. data/app/views/govuk_publishing_components/components/_contextual_sidebar.html.erb +1 -1
  38. data/app/views/govuk_publishing_components/components/_error_alert.html.erb +1 -1
  39. data/app/views/govuk_publishing_components/components/_intervention.html.erb +1 -1
  40. data/app/views/govuk_publishing_components/components/_layout_header.html.erb +2 -2
  41. data/app/views/govuk_publishing_components/components/_modal_dialogue.html.erb +3 -5
  42. data/app/views/govuk_publishing_components/components/_related_navigation.html.erb +1 -1
  43. data/app/views/govuk_publishing_components/components/cross_service_header/_one_login_header.html.erb +1 -1
  44. data/app/views/govuk_publishing_components/components/cross_service_header/_service_header.html.erb +2 -2
  45. data/app/views/govuk_publishing_components/components/docs/chat_entry.yml +36 -0
  46. data/app/views/govuk_publishing_components/components/docs/contents_list.yml +3 -3
  47. data/app/views/govuk_publishing_components/components/docs/organisation_logo.yml +1 -1
  48. data/{node_modules/govuk-frontend/dist/govuk/components/header/template-with-tudor-crown.html → app/views/govuk_publishing_components/components/govuk_logo/_govuk_logo.html.erb} +5 -12
  49. data/app/views/govuk_publishing_components/components/govuk_logo/_govuk_logo_crown_only.html.erb +15 -0
  50. data/app/views/govuk_publishing_components/components/layout_for_public/_header_logo.html.erb +6 -27
  51. data/app/views/govuk_publishing_components/components/layout_header/_header_logo.html.erb +1 -13
  52. data/config/locales/ar.yml +4 -1
  53. data/config/locales/az.yml +4 -1
  54. data/config/locales/be.yml +4 -1
  55. data/config/locales/bg.yml +4 -1
  56. data/config/locales/bn.yml +4 -1
  57. data/config/locales/cs.yml +4 -1
  58. data/config/locales/cy.yml +4 -1
  59. data/config/locales/da.yml +4 -1
  60. data/config/locales/de.yml +4 -1
  61. data/config/locales/dr.yml +4 -1
  62. data/config/locales/el.yml +4 -1
  63. data/config/locales/en.yml +3 -0
  64. data/config/locales/es-419.yml +4 -1
  65. data/config/locales/es.yml +4 -1
  66. data/config/locales/et.yml +4 -1
  67. data/config/locales/fa.yml +4 -1
  68. data/config/locales/fi.yml +4 -1
  69. data/config/locales/fr.yml +4 -1
  70. data/config/locales/gd.yml +4 -1
  71. data/config/locales/gu.yml +4 -1
  72. data/config/locales/he.yml +4 -1
  73. data/config/locales/hi.yml +4 -1
  74. data/config/locales/hr.yml +4 -1
  75. data/config/locales/hu.yml +4 -1
  76. data/config/locales/hy.yml +4 -1
  77. data/config/locales/id.yml +4 -1
  78. data/config/locales/is.yml +4 -1
  79. data/config/locales/it.yml +4 -1
  80. data/config/locales/ja.yml +4 -1
  81. data/config/locales/ka.yml +4 -1
  82. data/config/locales/kk.yml +4 -1
  83. data/config/locales/ko.yml +4 -1
  84. data/config/locales/lt.yml +4 -1
  85. data/config/locales/lv.yml +4 -1
  86. data/config/locales/ms.yml +4 -1
  87. data/config/locales/mt.yml +4 -1
  88. data/config/locales/nl.yml +4 -1
  89. data/config/locales/no.yml +4 -1
  90. data/config/locales/pa-pk.yml +4 -1
  91. data/config/locales/pa.yml +4 -1
  92. data/config/locales/pl.yml +4 -1
  93. data/config/locales/ps.yml +4 -1
  94. data/config/locales/pt.yml +4 -1
  95. data/config/locales/ro.yml +4 -1
  96. data/config/locales/ru.yml +4 -1
  97. data/config/locales/si.yml +4 -1
  98. data/config/locales/sk.yml +4 -1
  99. data/config/locales/sl.yml +4 -1
  100. data/config/locales/so.yml +4 -1
  101. data/config/locales/sq.yml +4 -1
  102. data/config/locales/sr.yml +4 -1
  103. data/config/locales/sv.yml +4 -1
  104. data/config/locales/sw.yml +4 -1
  105. data/config/locales/ta.yml +4 -1
  106. data/config/locales/th.yml +4 -1
  107. data/config/locales/tk.yml +4 -1
  108. data/config/locales/tr.yml +4 -1
  109. data/config/locales/uk.yml +4 -1
  110. data/config/locales/ur.yml +4 -1
  111. data/config/locales/uz.yml +4 -1
  112. data/config/locales/vi.yml +4 -1
  113. data/config/locales/zh-hk.yml +4 -1
  114. data/config/locales/zh-tw.yml +4 -1
  115. data/config/locales/zh.yml +4 -1
  116. data/lib/govuk_publishing_components/presenters/contents_list_helper.rb +2 -1
  117. data/lib/govuk_publishing_components/version.rb +1 -1
  118. data/node_modules/govuk-frontend/dist/govuk/_base.scss +3 -3
  119. data/node_modules/govuk-frontend/dist/govuk/_base.scss.map +1 -1
  120. data/node_modules/govuk-frontend/dist/govuk/all.bundle.js +451 -176
  121. data/node_modules/govuk-frontend/dist/govuk/all.bundle.js.map +1 -1
  122. data/node_modules/govuk-frontend/dist/govuk/all.bundle.mjs +450 -177
  123. data/node_modules/govuk-frontend/dist/govuk/all.bundle.mjs.map +1 -1
  124. data/node_modules/govuk-frontend/dist/govuk/all.mjs +13 -76
  125. data/node_modules/govuk-frontend/dist/govuk/all.mjs.map +1 -1
  126. data/node_modules/govuk-frontend/dist/govuk/all.scss +1 -9
  127. data/node_modules/govuk-frontend/dist/govuk/all.scss.map +1 -1
  128. data/node_modules/govuk-frontend/dist/govuk/common/closest-attribute-value.mjs.map +1 -1
  129. data/node_modules/govuk-frontend/dist/govuk/common/govuk-frontend-version.mjs +1 -1
  130. data/node_modules/govuk-frontend/dist/govuk/common/index.mjs +56 -36
  131. data/node_modules/govuk-frontend/dist/govuk/common/index.mjs.map +1 -1
  132. data/node_modules/govuk-frontend/dist/govuk/common/normalise-dataset.mjs +12 -20
  133. data/node_modules/govuk-frontend/dist/govuk/common/normalise-dataset.mjs.map +1 -1
  134. data/node_modules/govuk-frontend/dist/govuk/common/normalise-string.mjs +31 -0
  135. data/node_modules/govuk-frontend/dist/govuk/common/normalise-string.mjs.map +1 -0
  136. data/node_modules/govuk-frontend/dist/govuk/components/_all.scss +7 -35
  137. data/node_modules/govuk-frontend/dist/govuk/components/_all.scss.map +1 -1
  138. data/node_modules/govuk-frontend/dist/govuk/components/_index.scss +39 -0
  139. data/node_modules/govuk-frontend/dist/govuk/components/_index.scss.map +1 -0
  140. data/node_modules/govuk-frontend/dist/govuk/components/accordion/_index.scss +35 -31
  141. data/node_modules/govuk-frontend/dist/govuk/components/accordion/_index.scss.map +1 -1
  142. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.bundle.js +177 -133
  143. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.bundle.js.map +1 -1
  144. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.bundle.mjs +177 -133
  145. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.bundle.mjs.map +1 -1
  146. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.mjs +80 -76
  147. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.mjs.map +1 -1
  148. data/node_modules/govuk-frontend/dist/govuk/components/accordion/fixtures.json +16 -3
  149. data/node_modules/govuk-frontend/dist/govuk/components/accordion/template.njk +2 -1
  150. data/node_modules/govuk-frontend/dist/govuk/components/back-link/fixtures.json +25 -15
  151. data/node_modules/govuk-frontend/dist/govuk/components/back-link/template-with-custom-link.html +1 -0
  152. data/node_modules/govuk-frontend/dist/govuk/components/back-link/template.njk +6 -2
  153. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/fixtures.json +53 -15
  154. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/macro-options.json +6 -0
  155. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/template-default.html +2 -2
  156. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/template-inverse.html +2 -2
  157. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/template-with-collapse-on-mobile.html +2 -2
  158. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/template-with-last-breadcrumb-as-current-page.html +2 -2
  159. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/template-with-multiple-levels.html +2 -2
  160. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/template-with-one-level.html +2 -2
  161. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/template-without-the-home-section.html +2 -2
  162. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/template.njk +6 -4
  163. data/node_modules/govuk-frontend/dist/govuk/components/button/button.bundle.js +97 -39
  164. data/node_modules/govuk-frontend/dist/govuk/components/button/button.bundle.js.map +1 -1
  165. data/node_modules/govuk-frontend/dist/govuk/components/button/button.bundle.mjs +97 -39
  166. data/node_modules/govuk-frontend/dist/govuk/components/button/button.bundle.mjs.map +1 -1
  167. data/node_modules/govuk-frontend/dist/govuk/components/button/button.mjs +13 -3
  168. data/node_modules/govuk-frontend/dist/govuk/components/button/button.mjs.map +1 -1
  169. data/node_modules/govuk-frontend/dist/govuk/components/button/fixtures.json +38 -0
  170. data/node_modules/govuk-frontend/dist/govuk/components/button/template.njk +4 -2
  171. data/node_modules/govuk-frontend/dist/govuk/components/character-count/_index.scss +4 -4
  172. data/node_modules/govuk-frontend/dist/govuk/components/character-count/_index.scss.map +1 -1
  173. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.bundle.js +125 -69
  174. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.bundle.js.map +1 -1
  175. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.bundle.mjs +125 -69
  176. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.bundle.mjs.map +1 -1
  177. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.mjs +17 -3
  178. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.mjs.map +1 -1
  179. data/node_modules/govuk-frontend/dist/govuk/components/character-count/fixtures.json +46 -23
  180. data/node_modules/govuk-frontend/dist/govuk/components/character-count/macro-options.json +40 -0
  181. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-default.html +1 -4
  182. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-with-custom-rows.html +1 -4
  183. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-with-custom-textarea-description.html +1 -4
  184. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-with-default-value-exceeding-limit.html +1 -4
  185. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-with-default-value.html +1 -4
  186. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-with-hint.html +1 -4
  187. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-with-label-as-page-heading.html +1 -4
  188. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-with-threshold.html +1 -4
  189. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-with-translations.html +1 -4
  190. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-with-word-count.html +1 -4
  191. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template.njk +72 -39
  192. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/_index.scss +10 -2
  193. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/_index.scss.map +1 -1
  194. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.bundle.js +9 -1
  195. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.bundle.js.map +1 -1
  196. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.bundle.mjs +9 -1
  197. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.bundle.mjs.map +1 -1
  198. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.mjs +1 -1
  199. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.mjs.map +1 -1
  200. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/fixtures.json +153 -47
  201. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/macro-options.json +40 -0
  202. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-default.html +12 -12
  203. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-small-with-conditional-reveal.html +11 -12
  204. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-small-with-disabled.html +12 -12
  205. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-small-with-divider-and-none.html +34 -0
  206. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-small-with-error.html +12 -12
  207. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-small-with-hint.html +13 -13
  208. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-small-with-long-text.html +12 -12
  209. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-small.html +12 -12
  210. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-a-medium-legend.html +12 -12
  211. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-conditional-item-checked.html +21 -24
  212. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-conditional-items-with-special-characters.html +21 -24
  213. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-conditional-items.html +21 -24
  214. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-disabled-item.html +10 -10
  215. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-divider-and-none.html +17 -16
  216. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-divider-none-and-conditional-items.html +24 -24
  217. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-error-message-and-hints-on-items.html +15 -15
  218. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-error-message.html +12 -12
  219. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-fieldset-and-error-message.html +12 -12
  220. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-hints-on-items.html +10 -10
  221. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-id-and-name.html +12 -12
  222. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-legend-as-a-page-heading.html +12 -12
  223. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-optional-form-group-classes-showing-group-error.html +21 -24
  224. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-pre-checked-values.html +15 -16
  225. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-single-option-and-hint-set-aria-describedby-on-input.html +5 -5
  226. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-single-option-set-aria-describedby-on-input.html +4 -4
  227. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-very-long-option-text.html +12 -12
  228. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-without-fieldset.html +12 -12
  229. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template.njk +58 -54
  230. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/_index.scss +17 -14
  231. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/_index.scss.map +1 -1
  232. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/fixtures.json +46 -23
  233. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/template-accepted-confirmation-banner.html +11 -8
  234. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/template-client-side-implementation.html +38 -29
  235. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/template-default.html +18 -13
  236. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/template-rejected-confirmation-banner.html +11 -8
  237. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/template-with-html.html +19 -15
  238. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/template.njk +37 -44
  239. data/node_modules/govuk-frontend/dist/govuk/components/date-input/_index.scss +1 -2
  240. data/node_modules/govuk-frontend/dist/govuk/components/date-input/_index.scss.map +1 -1
  241. data/node_modules/govuk-frontend/dist/govuk/components/date-input/fixtures.json +27 -0
  242. data/node_modules/govuk-frontend/dist/govuk/components/date-input/macro-options.json +40 -0
  243. data/node_modules/govuk-frontend/dist/govuk/components/date-input/template.njk +10 -3
  244. data/node_modules/govuk-frontend/dist/govuk/components/details/fixtures.json +10 -0
  245. data/node_modules/govuk-frontend/dist/govuk/components/details/template.njk +6 -2
  246. data/node_modules/govuk-frontend/dist/govuk/components/error-message/fixtures.json +9 -0
  247. data/node_modules/govuk-frontend/dist/govuk/components/error-message/template.njk +4 -1
  248. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/_index.scss +14 -3
  249. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/_index.scss.map +1 -1
  250. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.bundle.js +96 -37
  251. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.bundle.js.map +1 -1
  252. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.bundle.mjs +96 -37
  253. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.bundle.mjs.map +1 -1
  254. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.mjs +12 -1
  255. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.mjs.map +1 -1
  256. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/fixtures.json +48 -18
  257. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/macro-options.json +2 -2
  258. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/template-default.html +8 -8
  259. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/template-mixed-with-and-without-links.html +8 -8
  260. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/template-with-description-only.html +12 -0
  261. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/template-with-everything.html +8 -8
  262. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/template-without-links.html +5 -5
  263. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/template.njk +19 -14
  264. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.bundle.js +112 -61
  265. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.bundle.js.map +1 -1
  266. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.bundle.mjs +112 -61
  267. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.bundle.mjs.map +1 -1
  268. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.mjs +15 -4
  269. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.mjs.map +1 -1
  270. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/fixtures.json +4 -0
  271. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/template.njk +3 -1
  272. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/_index.scss +3 -5
  273. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/_index.scss.map +1 -1
  274. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/fixtures.json +18 -0
  275. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/template.njk +3 -1
  276. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/_index.scss +8 -9
  277. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/_index.scss.map +1 -1
  278. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/fixtures.json +13 -0
  279. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/macro-options.json +40 -0
  280. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/template.njk +10 -2
  281. data/node_modules/govuk-frontend/dist/govuk/components/footer/_index.scss +1 -1
  282. data/node_modules/govuk-frontend/dist/govuk/components/footer/_index.scss.map +1 -1
  283. data/node_modules/govuk-frontend/dist/govuk/components/footer/fixtures.json +46 -23
  284. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-default.html +10 -9
  285. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-full-gds-example.html +41 -40
  286. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-three-equal-columns.html +10 -9
  287. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-with-custom-html-content-licence-and-copyright-notice.html +5 -4
  288. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-with-custom-meta.html +14 -13
  289. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-with-custom-text-content-licence-and-copyright-notice.html +5 -4
  290. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-with-default-width-navigation-one-column.html +10 -9
  291. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-with-default-width-navigation-two-columns.html +10 -9
  292. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-with-meta-links-and-meta-content.html +56 -55
  293. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-with-meta.html +28 -27
  294. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-with-navigation.html +10 -9
  295. data/node_modules/govuk-frontend/dist/govuk/components/footer/template.njk +42 -38
  296. data/node_modules/govuk-frontend/dist/govuk/components/header/_index.scss +1 -1
  297. data/node_modules/govuk-frontend/dist/govuk/components/header/_index.scss.map +1 -1
  298. data/node_modules/govuk-frontend/dist/govuk/components/header/fixtures.json +49 -26
  299. data/node_modules/govuk-frontend/dist/govuk/components/header/header.bundle.js +8 -0
  300. data/node_modules/govuk-frontend/dist/govuk/components/header/header.bundle.js.map +1 -1
  301. data/node_modules/govuk-frontend/dist/govuk/components/header/header.bundle.mjs +8 -0
  302. data/node_modules/govuk-frontend/dist/govuk/components/header/header.bundle.mjs.map +1 -1
  303. data/node_modules/govuk-frontend/dist/govuk/components/header/header.mjs.map +1 -1
  304. data/node_modules/govuk-frontend/dist/govuk/components/header/macro-options.json +1 -1
  305. data/node_modules/govuk-frontend/dist/govuk/components/header/template-default.html +13 -16
  306. data/node_modules/govuk-frontend/dist/govuk/components/header/template-full-width-with-navigation.html +35 -36
  307. data/node_modules/govuk-frontend/dist/govuk/components/header/template-full-width.html +13 -16
  308. data/node_modules/govuk-frontend/dist/govuk/components/header/template-navigation-item-with-html.html +35 -36
  309. data/node_modules/govuk-frontend/dist/govuk/components/header/template-navigation-item-with-text-without-link.html +29 -30
  310. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-custom-menu-button-label.html +40 -41
  311. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-custom-menu-button-text.html +40 -41
  312. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-custom-navigation-label.html +40 -41
  313. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-large-navigation.html +100 -101
  314. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-navigation.html +40 -41
  315. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-product-name.html +13 -16
  316. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-service-name-and-navigation.html +40 -41
  317. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-service-name-but-no-service-url.html +13 -16
  318. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-service-name.html +13 -16
  319. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-st-edwards-crown.html +21 -0
  320. data/node_modules/govuk-frontend/dist/govuk/components/header/template.njk +31 -26
  321. data/node_modules/govuk-frontend/dist/govuk/components/hint/fixtures.json +6 -0
  322. data/node_modules/govuk-frontend/dist/govuk/components/hint/template.njk +3 -1
  323. data/node_modules/govuk-frontend/dist/govuk/components/input/_index.scss +7 -4
  324. data/node_modules/govuk-frontend/dist/govuk/components/input/_index.scss.map +1 -1
  325. data/node_modules/govuk-frontend/dist/govuk/components/input/fixtures.json +138 -25
  326. data/node_modules/govuk-frontend/dist/govuk/components/input/macro-options.json +67 -1
  327. data/node_modules/govuk-frontend/dist/govuk/components/input/template-disabled.html +6 -0
  328. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-autocapitalize-turned-off.html +6 -0
  329. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-error-and-hint.html +12 -0
  330. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-error-message.html +2 -5
  331. data/node_modules/govuk-frontend/dist/govuk/components/input/template.njk +70 -14
  332. data/node_modules/govuk-frontend/dist/govuk/components/inset-text/fixtures.json +7 -1
  333. data/node_modules/govuk-frontend/dist/govuk/components/inset-text/template-with-html.html +8 -9
  334. data/node_modules/govuk-frontend/dist/govuk/components/inset-text/template.njk +4 -2
  335. data/node_modules/govuk-frontend/dist/govuk/components/label/fixtures.json +17 -0
  336. data/node_modules/govuk-frontend/dist/govuk/components/label/template.njk +3 -1
  337. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/_index.scss +3 -2
  338. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/_index.scss.map +1 -1
  339. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/fixtures.json +50 -26
  340. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.bundle.js +96 -37
  341. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.bundle.js.map +1 -1
  342. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.bundle.mjs +96 -37
  343. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.bundle.mjs.map +1 -1
  344. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.mjs +12 -1
  345. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.mjs.map +1 -1
  346. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-auto-focus-disabled-with-type-as-success.html +4 -1
  347. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-auto-focus-explicitly-enabled-with-type-as-success.html +4 -1
  348. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-custom-tabindex.html +4 -1
  349. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-default.html +4 -1
  350. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-paragraph-as-html-heading.html +3 -2
  351. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-rolealert-overridden-to-roleregion-with-type-as-success.html +4 -1
  352. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-success-with-custom-html.html +9 -8
  353. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-with-a-list.html +9 -8
  354. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-with-long-heading.html +4 -1
  355. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-with-lots-of-content.html +12 -9
  356. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-with-text-as-html.html +8 -5
  357. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-with-type-as-success.html +4 -1
  358. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template.njk +11 -7
  359. data/node_modules/govuk-frontend/dist/govuk/components/pagination/_index.scss +24 -37
  360. data/node_modules/govuk-frontend/dist/govuk/components/pagination/_index.scss.map +1 -1
  361. data/node_modules/govuk-frontend/dist/govuk/components/pagination/fixtures.json +30 -15
  362. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-default.html +38 -23
  363. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-first-page.html +28 -16
  364. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-last-page.html +29 -20
  365. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-custom-accessible-labels-on-item-links.html +38 -23
  366. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-custom-link-and-item-text.html +38 -23
  367. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-custom-navigation-landmark.html +38 -23
  368. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-many-pages.html +64 -39
  369. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-next-only.html +11 -4
  370. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-prev-and-next-only-and-labels.html +25 -13
  371. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-prev-and-next-only-and-very-long-labels.html +25 -13
  372. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-prev-and-next-only-in-a-different-language.html +21 -11
  373. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-prev-and-next-only.html +21 -11
  374. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-previous-only.html +11 -7
  375. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template.njk +78 -63
  376. data/node_modules/govuk-frontend/dist/govuk/components/panel/_index.scss +14 -10
  377. data/node_modules/govuk-frontend/dist/govuk/components/panel/_index.scss.map +1 -1
  378. data/node_modules/govuk-frontend/dist/govuk/components/panel/fixtures.json +9 -0
  379. data/node_modules/govuk-frontend/dist/govuk/components/panel/template.njk +6 -3
  380. data/node_modules/govuk-frontend/dist/govuk/components/password-input/_index.scss +57 -0
  381. data/node_modules/govuk-frontend/dist/govuk/components/password-input/_index.scss.map +1 -0
  382. data/node_modules/govuk-frontend/dist/govuk/components/password-input/_password-input.scss +4 -0
  383. data/node_modules/govuk-frontend/dist/govuk/components/password-input/_password-input.scss.map +1 -0
  384. data/node_modules/govuk-frontend/dist/govuk/components/password-input/fixtures.json +196 -0
  385. data/node_modules/govuk-frontend/dist/govuk/components/password-input/macro-options.json +181 -0
  386. data/node_modules/govuk-frontend/dist/govuk/components/password-input/macro.njk +3 -0
  387. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.bundle.js +528 -0
  388. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.bundle.js.map +1 -0
  389. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.bundle.mjs +520 -0
  390. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.bundle.mjs.map +1 -0
  391. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.mjs +163 -0
  392. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.mjs.map +1 -0
  393. data/node_modules/govuk-frontend/dist/govuk/components/password-input/template-default.html +11 -0
  394. data/node_modules/govuk-frontend/dist/govuk/components/password-input/template-with-error-message.html +17 -0
  395. data/node_modules/govuk-frontend/dist/govuk/components/password-input/template-with-hint-text.html +14 -0
  396. data/node_modules/govuk-frontend/dist/govuk/components/password-input/template-with-input-width-class.html +11 -0
  397. data/node_modules/govuk-frontend/dist/govuk/components/password-input/template-with-label-as-page-heading.html +13 -0
  398. data/node_modules/govuk-frontend/dist/govuk/components/password-input/template-with-new-password-autocomplete.html +11 -0
  399. data/node_modules/govuk-frontend/dist/govuk/components/password-input/template-with-translations.html +11 -0
  400. data/node_modules/govuk-frontend/dist/govuk/components/password-input/template.njk +91 -0
  401. data/node_modules/govuk-frontend/dist/govuk/components/phase-banner/_index.scss +6 -8
  402. data/node_modules/govuk-frontend/dist/govuk/components/phase-banner/_index.scss.map +1 -1
  403. data/node_modules/govuk-frontend/dist/govuk/components/phase-banner/fixtures.json +7 -0
  404. data/node_modules/govuk-frontend/dist/govuk/components/phase-banner/template.njk +4 -2
  405. data/node_modules/govuk-frontend/dist/govuk/components/radios/_index.scss +11 -6
  406. data/node_modules/govuk-frontend/dist/govuk/components/radios/_index.scss.map +1 -1
  407. data/node_modules/govuk-frontend/dist/govuk/components/radios/fixtures.json +113 -48
  408. data/node_modules/govuk-frontend/dist/govuk/components/radios/macro-options.json +41 -1
  409. data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.bundle.js +8 -0
  410. data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.bundle.js.map +1 -1
  411. data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.bundle.mjs +8 -0
  412. data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.bundle.mjs.map +1 -1
  413. data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.mjs.map +1 -1
  414. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-default.html +8 -8
  415. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-inline.html +8 -8
  416. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-prechecked-using-value.html +8 -8
  417. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-prechecked.html +8 -8
  418. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-small-inline-extreme.html +40 -40
  419. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-small-inline.html +12 -12
  420. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-small-with-a-divider.html +13 -12
  421. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-small-with-conditional-reveal.html +15 -16
  422. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-small-with-disabled.html +12 -12
  423. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-small-with-error.html +12 -12
  424. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-small-with-hint.html +13 -13
  425. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-small-with-long-text.html +12 -12
  426. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-small.html +12 -12
  427. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-a-divider.html +13 -12
  428. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-a-medium-legend.html +8 -8
  429. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-conditional-item-checked.html +21 -24
  430. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-conditional-items-and-pre-checked-value.html +21 -24
  431. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-conditional-items-with-special-characters.html +21 -24
  432. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-conditional-items.html +21 -24
  433. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-disabled.html +10 -10
  434. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-fieldset-and-error-message.html +8 -8
  435. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-hints-on-items.html +10 -10
  436. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-idprefix.html +8 -8
  437. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-legend-as-page-heading.html +8 -8
  438. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-optional-form-group-classes-showing-group-error.html +21 -24
  439. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-very-long-option-text.html +12 -12
  440. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-without-fieldset.html +12 -12
  441. data/node_modules/govuk-frontend/dist/govuk/components/radios/template.njk +54 -50
  442. data/node_modules/govuk-frontend/dist/govuk/components/select/_index.scss +5 -5
  443. data/node_modules/govuk-frontend/dist/govuk/components/select/_index.scss.map +1 -1
  444. data/node_modules/govuk-frontend/dist/govuk/components/select/fixtures.json +42 -23
  445. data/node_modules/govuk-frontend/dist/govuk/components/select/macro-options.json +40 -0
  446. data/node_modules/govuk-frontend/dist/govuk/components/select/template-default.html +3 -6
  447. data/node_modules/govuk-frontend/dist/govuk/components/select/template-with-full-width-override.html +3 -6
  448. data/node_modules/govuk-frontend/dist/govuk/components/select/template-with-hint-text-and-error-message.html +3 -6
  449. data/node_modules/govuk-frontend/dist/govuk/components/select/template-with-label-as-page-heading.html +3 -6
  450. data/node_modules/govuk-frontend/dist/govuk/components/select/template-with-optional-form-group-classes.html +3 -6
  451. data/node_modules/govuk-frontend/dist/govuk/components/select/template-with-selected-value.html +3 -6
  452. data/node_modules/govuk-frontend/dist/govuk/components/select/template.njk +18 -8
  453. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/_index.scss +7 -4
  454. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/_index.scss.map +1 -1
  455. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/fixtures.json +9 -0
  456. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.bundle.js +8 -0
  457. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.bundle.js.map +1 -1
  458. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.bundle.mjs +8 -0
  459. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.bundle.mjs.map +1 -1
  460. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.mjs.map +1 -1
  461. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/template.njk +4 -1
  462. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/_index.scss +2 -1
  463. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/_index.scss.map +1 -1
  464. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/fixtures.json +63 -32
  465. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-as-a-summary-card-with-a-custom-header-level.html +25 -20
  466. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-as-a-summary-card-with-a-html-header.html +25 -20
  467. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-as-a-summary-card-with-a-text-header.html +25 -20
  468. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-as-a-summary-card-with-actions-plus-summary-list-actions.html +46 -29
  469. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-as-a-summary-card-with-actions.html +33 -23
  470. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-check-your-answers.html +96 -97
  471. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-default.html +35 -36
  472. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-extreme.html +261 -70
  473. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-no-border-on-last-row.html +35 -36
  474. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-no-border.html +35 -36
  475. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-overridden-widths.html +58 -45
  476. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-translated.html +51 -45
  477. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-with-actions.html +58 -45
  478. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-with-no-first-action.html +58 -59
  479. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-with-some-actions.html +45 -39
  480. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template.njk +68 -65
  481. data/node_modules/govuk-frontend/dist/govuk/components/table/_index.scss +10 -0
  482. data/node_modules/govuk-frontend/dist/govuk/components/table/_index.scss.map +1 -1
  483. data/node_modules/govuk-frontend/dist/govuk/components/table/fixtures.json +93 -21
  484. data/node_modules/govuk-frontend/dist/govuk/components/table/template-default.html +15 -15
  485. data/node_modules/govuk-frontend/dist/govuk/components/table/template-table-with-head-and-caption.html +15 -15
  486. data/node_modules/govuk-frontend/dist/govuk/components/table/template-table-with-head.html +15 -15
  487. data/node_modules/govuk-frontend/dist/govuk/components/table/template-with-small-text-modifier-for-tables-with-a-lot-of-data.html +19 -0
  488. data/node_modules/govuk-frontend/dist/govuk/components/table/template.njk +43 -31
  489. data/node_modules/govuk-frontend/dist/govuk/components/tabs/fixtures.json +27 -13
  490. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.bundle.js +13 -11
  491. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.bundle.js.map +1 -1
  492. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.bundle.mjs +13 -11
  493. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.bundle.mjs.map +1 -1
  494. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.mjs +5 -11
  495. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.mjs.map +1 -1
  496. data/node_modules/govuk-frontend/dist/govuk/components/tabs/template-default.html +110 -113
  497. data/node_modules/govuk-frontend/dist/govuk/components/tabs/template-tabs-with-anchor-in-panel.html +19 -21
  498. data/node_modules/govuk-frontend/dist/govuk/components/tabs/template.njk +30 -18
  499. data/node_modules/govuk-frontend/dist/govuk/components/tag/_index.scss +11 -8
  500. data/node_modules/govuk-frontend/dist/govuk/components/tag/_index.scss.map +1 -1
  501. data/node_modules/govuk-frontend/dist/govuk/components/tag/fixtures.json +14 -0
  502. data/node_modules/govuk-frontend/dist/govuk/components/tag/template.njk +5 -2
  503. data/node_modules/govuk-frontend/dist/govuk/components/task-list/_index.scss +12 -10
  504. data/node_modules/govuk-frontend/dist/govuk/components/task-list/_index.scss.map +1 -1
  505. data/node_modules/govuk-frontend/dist/govuk/components/task-list/fixtures.json +54 -10
  506. data/node_modules/govuk-frontend/dist/govuk/components/task-list/template-default.html +35 -28
  507. data/node_modules/govuk-frontend/dist/govuk/components/task-list/template-example-with-3-states.html +47 -38
  508. data/node_modules/govuk-frontend/dist/govuk/components/task-list/template-example-with-all-possible-colours.html +141 -116
  509. data/node_modules/govuk-frontend/dist/govuk/components/task-list/template-example-with-hint-text-and-additional-states.html +72 -59
  510. data/node_modules/govuk-frontend/dist/govuk/components/task-list/template-example-with-very-long-single-word-tags.html +35 -28
  511. data/node_modules/govuk-frontend/dist/govuk/components/task-list/template-with-empty-values.html +27 -0
  512. data/node_modules/govuk-frontend/dist/govuk/components/task-list/template.njk +33 -23
  513. data/node_modules/govuk-frontend/dist/govuk/components/textarea/_index.scss +3 -3
  514. data/node_modules/govuk-frontend/dist/govuk/components/textarea/_index.scss.map +1 -1
  515. data/node_modules/govuk-frontend/dist/govuk/components/textarea/fixtures.json +17 -0
  516. data/node_modules/govuk-frontend/dist/govuk/components/textarea/macro-options.json +40 -0
  517. data/node_modules/govuk-frontend/dist/govuk/components/textarea/template.njk +10 -2
  518. data/node_modules/govuk-frontend/dist/govuk/components/warning-text/_index.scss +5 -5
  519. data/node_modules/govuk-frontend/dist/govuk/components/warning-text/_index.scss.map +1 -1
  520. data/node_modules/govuk-frontend/dist/govuk/components/warning-text/fixtures.json +8 -0
  521. data/node_modules/govuk-frontend/dist/govuk/components/warning-text/template.njk +3 -2
  522. data/node_modules/govuk-frontend/dist/govuk/core/_all.scss +8 -6
  523. data/node_modules/govuk-frontend/dist/govuk/core/_all.scss.map +1 -1
  524. data/node_modules/govuk-frontend/dist/govuk/core/_govuk-frontend-properties.scss +1 -1
  525. data/node_modules/govuk-frontend/dist/govuk/core/_index.scss +8 -0
  526. data/node_modules/govuk-frontend/dist/govuk/core/_index.scss.map +1 -0
  527. data/node_modules/govuk-frontend/dist/govuk/errors/index.mjs.map +1 -1
  528. data/node_modules/govuk-frontend/dist/govuk/govuk-frontend-component.mjs.map +1 -1
  529. data/node_modules/govuk-frontend/dist/govuk/govuk-frontend.min.css +2 -2
  530. data/node_modules/govuk-frontend/dist/govuk/govuk-frontend.min.css.map +1 -1
  531. data/node_modules/govuk-frontend/dist/govuk/govuk-frontend.min.js +1 -1
  532. data/node_modules/govuk-frontend/dist/govuk/govuk-frontend.min.js.map +1 -1
  533. data/node_modules/govuk-frontend/dist/govuk/helpers/_all.scss +8 -12
  534. data/node_modules/govuk-frontend/dist/govuk/helpers/_all.scss.map +1 -1
  535. data/node_modules/govuk-frontend/dist/govuk/helpers/_colour.scss +44 -8
  536. data/node_modules/govuk-frontend/dist/govuk/helpers/_colour.scss.map +1 -1
  537. data/node_modules/govuk-frontend/dist/govuk/helpers/_grid.scss +1 -1
  538. data/node_modules/govuk-frontend/dist/govuk/helpers/_grid.scss.map +1 -1
  539. data/node_modules/govuk-frontend/dist/govuk/helpers/_index.scss +14 -0
  540. data/node_modules/govuk-frontend/dist/govuk/helpers/_index.scss.map +1 -0
  541. data/node_modules/govuk-frontend/dist/govuk/helpers/_links.scss +2 -2
  542. data/node_modules/govuk-frontend/dist/govuk/helpers/_links.scss.map +1 -1
  543. data/node_modules/govuk-frontend/dist/govuk/helpers/_shape-arrow.scss +1 -1
  544. data/node_modules/govuk-frontend/dist/govuk/helpers/_shape-arrow.scss.map +1 -1
  545. data/node_modules/govuk-frontend/dist/govuk/helpers/_typography.scss +19 -0
  546. data/node_modules/govuk-frontend/dist/govuk/helpers/_typography.scss.map +1 -1
  547. data/node_modules/govuk-frontend/dist/govuk/helpers/_visually-hidden.scss +30 -62
  548. data/node_modules/govuk-frontend/dist/govuk/helpers/_visually-hidden.scss.map +1 -1
  549. data/node_modules/govuk-frontend/dist/govuk/i18n.mjs +18 -12
  550. data/node_modules/govuk-frontend/dist/govuk/i18n.mjs.map +1 -1
  551. data/node_modules/govuk-frontend/dist/govuk/index.scss +11 -0
  552. data/node_modules/govuk-frontend/dist/govuk/index.scss.map +1 -0
  553. data/node_modules/govuk-frontend/dist/govuk/init.mjs +100 -0
  554. data/node_modules/govuk-frontend/dist/govuk/init.mjs.map +1 -0
  555. data/node_modules/govuk-frontend/dist/govuk/macros/attributes.njk +94 -0
  556. data/node_modules/govuk-frontend/dist/govuk/objects/_all.scss +8 -6
  557. data/node_modules/govuk-frontend/dist/govuk/objects/_all.scss.map +1 -1
  558. data/node_modules/govuk-frontend/dist/govuk/objects/_index.scss +8 -0
  559. data/node_modules/govuk-frontend/dist/govuk/objects/_index.scss.map +1 -0
  560. data/node_modules/govuk-frontend/dist/govuk/overrides/_all.scss +7 -5
  561. data/node_modules/govuk-frontend/dist/govuk/overrides/_all.scss.map +1 -1
  562. data/node_modules/govuk-frontend/dist/govuk/overrides/_index.scss +7 -0
  563. data/node_modules/govuk-frontend/dist/govuk/overrides/_index.scss.map +1 -0
  564. data/node_modules/govuk-frontend/dist/govuk/overrides/_typography.scss +10 -0
  565. data/node_modules/govuk-frontend/dist/govuk/overrides/_typography.scss.map +1 -1
  566. data/node_modules/govuk-frontend/dist/govuk/settings/_all.scss +8 -21
  567. data/node_modules/govuk-frontend/dist/govuk/settings/_all.scss.map +1 -1
  568. data/node_modules/govuk-frontend/dist/govuk/settings/_colours-organisations.scss +235 -9
  569. data/node_modules/govuk-frontend/dist/govuk/settings/_colours-organisations.scss.map +1 -1
  570. data/node_modules/govuk-frontend/dist/govuk/settings/_index.scss +23 -0
  571. data/node_modules/govuk-frontend/dist/govuk/settings/_index.scss.map +1 -0
  572. data/node_modules/govuk-frontend/dist/govuk/settings/_measurements.scss +1 -1
  573. data/node_modules/govuk-frontend/dist/govuk/settings/_measurements.scss.map +1 -1
  574. data/node_modules/govuk-frontend/dist/govuk/settings/_media-queries.scss +1 -1
  575. data/node_modules/govuk-frontend/dist/govuk/settings/_media-queries.scss.map +1 -1
  576. data/node_modules/govuk-frontend/dist/govuk/settings/_typography-responsive.scss +172 -13
  577. data/node_modules/govuk-frontend/dist/govuk/settings/_typography-responsive.scss.map +1 -1
  578. data/node_modules/govuk-frontend/dist/govuk/settings/_warnings.scss +8 -3
  579. data/node_modules/govuk-frontend/dist/govuk/settings/_warnings.scss.map +1 -1
  580. data/node_modules/govuk-frontend/dist/govuk/template.njk +3 -2
  581. data/node_modules/govuk-frontend/dist/govuk/tools/_all.scss +8 -5
  582. data/node_modules/govuk-frontend/dist/govuk/tools/_all.scss.map +1 -1
  583. data/node_modules/govuk-frontend/dist/govuk/tools/_index.scss +7 -0
  584. data/node_modules/govuk-frontend/dist/govuk/tools/_index.scss.map +1 -0
  585. data/node_modules/govuk-frontend/dist/govuk/utilities/_all.scss +8 -2
  586. data/node_modules/govuk-frontend/dist/govuk/utilities/_all.scss.map +1 -1
  587. data/node_modules/govuk-frontend/dist/govuk/utilities/_index.scss +4 -0
  588. data/node_modules/govuk-frontend/dist/govuk/utilities/_index.scss.map +1 -0
  589. data/node_modules/govuk-frontend/govuk-prototype-kit.config.json +5 -1
  590. data/node_modules/govuk-frontend/package.json +16 -15
  591. metadata +60 -3
@@ -1,4 +1,4 @@
1
- import { mergeConfigs, extractConfigByNamespace } from '../../common/index.mjs';
1
+ import { mergeConfigs } from '../../common/index.mjs';
2
2
  import { normaliseDataset } from '../../common/normalise-dataset.mjs';
3
3
  import { ElementError } from '../../errors/index.mjs';
4
4
  import { GOVUKFrontendComponent } from '../../govuk-frontend-component.mjs';
@@ -48,7 +48,6 @@ class Accordion extends GOVUKFrontendComponent {
48
48
  this.sectionSummaryFocusClass = 'govuk-accordion__section-summary-focus';
49
49
  this.sectionContentClass = 'govuk-accordion__section-content';
50
50
  this.$sections = void 0;
51
- this.browserSupportsSessionStorage = false;
52
51
  this.$showAllButton = null;
53
52
  this.$showAllIcon = null;
54
53
  this.$showAllText = null;
@@ -60,8 +59,8 @@ class Accordion extends GOVUKFrontendComponent {
60
59
  });
61
60
  }
62
61
  this.$module = $module;
63
- this.config = mergeConfigs(Accordion.defaults, config, normaliseDataset($module.dataset));
64
- this.i18n = new I18n(extractConfigByNamespace(this.config, 'i18n'));
62
+ this.config = mergeConfigs(Accordion.defaults, config, normaliseDataset(Accordion, $module.dataset));
63
+ this.i18n = new I18n(this.config.i18n);
65
64
  const $sections = this.$module.querySelectorAll(`.${this.sectionClass}`);
66
65
  if (!$sections.length) {
67
66
  throw new ElementError({
@@ -70,11 +69,9 @@ class Accordion extends GOVUKFrontendComponent {
70
69
  });
71
70
  }
72
71
  this.$sections = $sections;
73
- this.browserSupportsSessionStorage = helper.checkForSessionStorage();
74
72
  this.initControls();
75
73
  this.initSectionHeaders();
76
- const areAllSectionsOpen = this.checkIfAllSectionsOpen();
77
- this.updateShowAllButton(areAllSectionsOpen);
74
+ this.updateShowAllButton(this.areAllSectionsOpen());
78
75
  }
79
76
  initControls() {
80
77
  this.$showAllButton = document.createElement('button');
@@ -131,8 +128,8 @@ class Accordion extends GOVUKFrontendComponent {
131
128
  $button.setAttribute('type', 'button');
132
129
  $button.setAttribute('aria-controls', `${this.$module.id}-content-${index + 1}`);
133
130
  for (const attr of Array.from($span.attributes)) {
134
- if (attr.nodeName !== 'id') {
135
- $button.setAttribute(attr.nodeName, `${attr.nodeValue}`);
131
+ if (attr.name !== 'id') {
132
+ $button.setAttribute(attr.name, attr.value);
136
133
  }
137
134
  }
138
135
  const $headingText = document.createElement('span');
@@ -141,7 +138,7 @@ class Accordion extends GOVUKFrontendComponent {
141
138
  const $headingTextFocus = document.createElement('span');
142
139
  $headingTextFocus.classList.add(this.sectionHeadingTextFocusClass);
143
140
  $headingText.appendChild($headingTextFocus);
144
- $headingTextFocus.innerHTML = $span.innerHTML;
141
+ Array.from($span.childNodes).forEach($child => $headingTextFocus.appendChild($child));
145
142
  const $showHideToggle = document.createElement('span');
146
143
  $showHideToggle.classList.add(this.sectionShowHideToggleClass);
147
144
  $showHideToggle.setAttribute('data-nosnippet', '');
@@ -156,16 +153,16 @@ class Accordion extends GOVUKFrontendComponent {
156
153
  $showHideToggleFocus.appendChild($showHideText);
157
154
  $button.appendChild($headingText);
158
155
  $button.appendChild(this.getButtonPunctuationEl());
159
- if ($summary != null && $summary.parentNode) {
156
+ if ($summary) {
160
157
  const $summarySpan = document.createElement('span');
161
158
  const $summarySpanFocus = document.createElement('span');
162
159
  $summarySpanFocus.classList.add(this.sectionSummaryFocusClass);
163
160
  $summarySpan.appendChild($summarySpanFocus);
164
161
  for (const attr of Array.from($summary.attributes)) {
165
- $summarySpan.setAttribute(attr.nodeName, `${attr.nodeValue}`);
162
+ $summarySpan.setAttribute(attr.name, attr.value);
166
163
  }
167
- $summarySpanFocus.innerHTML = $summary.innerHTML;
168
- $summary.parentNode.replaceChild($summarySpan, $summary);
164
+ Array.from($summary.childNodes).forEach($child => $summarySpanFocus.appendChild($child));
165
+ $summary.remove();
169
166
  $button.appendChild($summarySpan);
170
167
  $button.appendChild(this.getButtonPunctuationEl());
171
168
  }
@@ -184,15 +181,15 @@ class Accordion extends GOVUKFrontendComponent {
184
181
  }
185
182
  }
186
183
  onSectionToggle($section) {
187
- const expanded = this.isExpanded($section);
188
- this.setExpanded(!expanded, $section);
189
- this.storeState($section);
184
+ const nowExpanded = !this.isExpanded($section);
185
+ this.setExpanded(nowExpanded, $section);
186
+ this.storeState($section, nowExpanded);
190
187
  }
191
188
  onShowOrHideAllToggle() {
192
- const nowExpanded = !this.checkIfAllSectionsOpen();
189
+ const nowExpanded = !this.areAllSectionsOpen();
193
190
  this.$sections.forEach($section => {
194
191
  this.setExpanded(nowExpanded, $section);
195
- this.storeState($section);
192
+ this.storeState($section, nowExpanded);
196
193
  });
197
194
  this.updateShowAllButton(nowExpanded);
198
195
  }
@@ -234,17 +231,13 @@ class Accordion extends GOVUKFrontendComponent {
234
231
  $section.classList.remove(this.sectionExpandedClass);
235
232
  $showHideIcon.classList.add(this.downChevronIconClass);
236
233
  }
237
- const areAllSectionsOpen = this.checkIfAllSectionsOpen();
238
- this.updateShowAllButton(areAllSectionsOpen);
234
+ this.updateShowAllButton(this.areAllSectionsOpen());
239
235
  }
240
236
  isExpanded($section) {
241
237
  return $section.classList.contains(this.sectionExpandedClass);
242
238
  }
243
- checkIfAllSectionsOpen() {
244
- const sectionsCount = this.$sections.length;
245
- const expandedSectionCount = this.$module.querySelectorAll(`.${this.sectionExpandedClass}`).length;
246
- const areAllSectionsOpen = sectionsCount === expandedSectionCount;
247
- return areAllSectionsOpen;
239
+ areAllSectionsOpen() {
240
+ return Array.from(this.$sections).every($section => this.isExpanded($section));
248
241
  }
249
242
  updateShowAllButton(expanded) {
250
243
  if (!this.$showAllButton || !this.$showAllText || !this.$showAllIcon) {
@@ -254,68 +247,53 @@ class Accordion extends GOVUKFrontendComponent {
254
247
  this.$showAllText.textContent = expanded ? this.i18n.t('hideAllSections') : this.i18n.t('showAllSections');
255
248
  this.$showAllIcon.classList.toggle(this.downChevronIconClass, !expanded);
256
249
  }
257
- storeState($section) {
258
- if (this.browserSupportsSessionStorage && this.config.rememberExpanded) {
259
- const $button = $section.querySelector(`.${this.sectionButtonClass}`);
260
- if ($button) {
261
- const contentId = $button.getAttribute('aria-controls');
262
- const contentState = $button.getAttribute('aria-expanded');
263
- if (contentId && contentState) {
264
- window.sessionStorage.setItem(contentId, contentState);
265
- }
266
- }
250
+
251
+ /**
252
+ * Get the identifier for a section
253
+ *
254
+ * We need a unique way of identifying each content in the Accordion.
255
+ * Since an `#id` should be unique and an `id` is required for `aria-`
256
+ * attributes `id` can be safely used.
257
+ *
258
+ * @param {Element} $section - Section element
259
+ * @returns {string | undefined | null} Identifier for section
260
+ */
261
+ getIdentifier($section) {
262
+ const $button = $section.querySelector(`.${this.sectionButtonClass}`);
263
+ return $button == null ? void 0 : $button.getAttribute('aria-controls');
264
+ }
265
+ storeState($section, isExpanded) {
266
+ if (!this.config.rememberExpanded) {
267
+ return;
268
+ }
269
+ const id = this.getIdentifier($section);
270
+ if (id) {
271
+ try {
272
+ window.sessionStorage.setItem(id, isExpanded.toString());
273
+ } catch (exception) {}
267
274
  }
268
275
  }
269
276
  setInitialState($section) {
270
- if (this.browserSupportsSessionStorage && this.config.rememberExpanded) {
271
- const $button = $section.querySelector(`.${this.sectionButtonClass}`);
272
- if ($button) {
273
- const contentId = $button.getAttribute('aria-controls');
274
- const contentState = contentId ? window.sessionStorage.getItem(contentId) : null;
275
- if (contentState !== null) {
276
- this.setExpanded(contentState === 'true', $section);
277
+ if (!this.config.rememberExpanded) {
278
+ return;
279
+ }
280
+ const id = this.getIdentifier($section);
281
+ if (id) {
282
+ try {
283
+ const state = window.sessionStorage.getItem(id);
284
+ if (state !== null) {
285
+ this.setExpanded(state === 'true', $section);
277
286
  }
278
- }
287
+ } catch (exception) {}
279
288
  }
280
289
  }
281
290
  getButtonPunctuationEl() {
282
291
  const $punctuationEl = document.createElement('span');
283
292
  $punctuationEl.classList.add('govuk-visually-hidden', this.sectionHeadingDividerClass);
284
- $punctuationEl.innerHTML = ', ';
293
+ $punctuationEl.textContent = ', ';
285
294
  return $punctuationEl;
286
295
  }
287
296
  }
288
- Accordion.moduleName = 'govuk-accordion';
289
- Accordion.defaults = Object.freeze({
290
- i18n: {
291
- hideAllSections: 'Hide all sections',
292
- hideSection: 'Hide',
293
- hideSectionAriaLabel: 'Hide this section',
294
- showAllSections: 'Show all sections',
295
- showSection: 'Show',
296
- showSectionAriaLabel: 'Show this section'
297
- },
298
- rememberExpanded: true
299
- });
300
- const helper = {
301
- /**
302
- * Check for `window.sessionStorage`, and that it actually works.
303
- *
304
- * @returns {boolean} True if session storage is available
305
- */
306
- checkForSessionStorage: function () {
307
- const testString = 'this is the test string';
308
- let result;
309
- try {
310
- window.sessionStorage.setItem(testString, testString);
311
- result = window.sessionStorage.getItem(testString) === testString.toString();
312
- window.sessionStorage.removeItem(testString);
313
- return result;
314
- } catch (exception) {
315
- return false;
316
- }
317
- }
318
- };
319
297
 
320
298
  /**
321
299
  * Accordion config
@@ -350,5 +328,31 @@ const helper = {
350
328
  * 'Show' button's accessible name when a section is expanded.
351
329
  */
352
330
 
331
+ /**
332
+ * @typedef {import('../../common/index.mjs').Schema} Schema
333
+ */
334
+ Accordion.moduleName = 'govuk-accordion';
335
+ Accordion.defaults = Object.freeze({
336
+ i18n: {
337
+ hideAllSections: 'Hide all sections',
338
+ hideSection: 'Hide',
339
+ hideSectionAriaLabel: 'Hide this section',
340
+ showAllSections: 'Show all sections',
341
+ showSection: 'Show',
342
+ showSectionAriaLabel: 'Show this section'
343
+ },
344
+ rememberExpanded: true
345
+ });
346
+ Accordion.schema = Object.freeze({
347
+ properties: {
348
+ i18n: {
349
+ type: 'object'
350
+ },
351
+ rememberExpanded: {
352
+ type: 'boolean'
353
+ }
354
+ }
355
+ });
356
+
353
357
  export { Accordion };
354
358
  //# sourceMappingURL=accordion.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"accordion.mjs","sources":["../../../../src/govuk/components/accordion/accordion.mjs"],"sourcesContent":["import { mergeConfigs, extractConfigByNamespace } from '../../common/index.mjs'\nimport { normaliseDataset } from '../../common/normalise-dataset.mjs'\nimport { ElementError } from '../../errors/index.mjs'\nimport { GOVUKFrontendComponent } from '../../govuk-frontend-component.mjs'\nimport { I18n } from '../../i18n.mjs'\n\n/**\n * Accordion component\n *\n * This allows a collection of sections to be collapsed by default, showing only\n * their headers. Sections can be expanded or collapsed individually by clicking\n * their headers. A \"Show all sections\" button is also added to the top of the\n * accordion, which switches to \"Hide all sections\" when all the sections are\n * expanded.\n *\n * The state of each section is saved to the DOM via the `aria-expanded`\n * attribute, which also provides accessibility.\n *\n * @preserve\n */\nexport class Accordion extends GOVUKFrontendComponent {\n /** @private */\n $module\n\n /**\n * @private\n * @type {AccordionConfig}\n */\n config\n\n /** @private */\n i18n\n\n /** @private */\n controlsClass = 'govuk-accordion__controls'\n\n /** @private */\n showAllClass = 'govuk-accordion__show-all'\n\n /** @private */\n showAllTextClass = 'govuk-accordion__show-all-text'\n\n /** @private */\n sectionClass = 'govuk-accordion__section'\n\n /** @private */\n sectionExpandedClass = 'govuk-accordion__section--expanded'\n\n /** @private */\n sectionButtonClass = 'govuk-accordion__section-button'\n\n /** @private */\n sectionHeaderClass = 'govuk-accordion__section-header'\n\n /** @private */\n sectionHeadingClass = 'govuk-accordion__section-heading'\n\n /** @private */\n sectionHeadingDividerClass = 'govuk-accordion__section-heading-divider'\n\n /** @private */\n sectionHeadingTextClass = 'govuk-accordion__section-heading-text'\n\n /** @private */\n sectionHeadingTextFocusClass = 'govuk-accordion__section-heading-text-focus'\n\n /** @private */\n sectionShowHideToggleClass = 'govuk-accordion__section-toggle'\n\n /** @private */\n sectionShowHideToggleFocusClass = 'govuk-accordion__section-toggle-focus'\n\n /** @private */\n sectionShowHideTextClass = 'govuk-accordion__section-toggle-text'\n\n /** @private */\n upChevronIconClass = 'govuk-accordion-nav__chevron'\n\n /** @private */\n downChevronIconClass = 'govuk-accordion-nav__chevron--down'\n\n /** @private */\n sectionSummaryClass = 'govuk-accordion__section-summary'\n\n /** @private */\n sectionSummaryFocusClass = 'govuk-accordion__section-summary-focus'\n\n /** @private */\n sectionContentClass = 'govuk-accordion__section-content'\n\n /** @private */\n $sections\n\n /** @private */\n browserSupportsSessionStorage = false\n\n /**\n * @private\n * @type {HTMLButtonElement | null}\n */\n $showAllButton = null\n\n /**\n * @private\n * @type {HTMLElement | null}\n */\n $showAllIcon = null\n\n /**\n * @private\n * @type {HTMLElement | null}\n */\n $showAllText = null\n\n /**\n * @param {Element | null} $module - HTML element to use for accordion\n * @param {AccordionConfig} [config] - Accordion config\n */\n constructor($module, config = {}) {\n super()\n\n if (!($module instanceof HTMLElement)) {\n throw new ElementError({\n componentName: 'Accordion',\n element: $module,\n identifier: 'Root element (`$module`)'\n })\n }\n\n this.$module = $module\n\n this.config = mergeConfigs(\n Accordion.defaults,\n config,\n normaliseDataset($module.dataset)\n )\n\n this.i18n = new I18n(extractConfigByNamespace(this.config, 'i18n'))\n\n const $sections = this.$module.querySelectorAll(`.${this.sectionClass}`)\n if (!$sections.length) {\n throw new ElementError({\n componentName: 'Accordion',\n identifier: `Sections (\\`<div class=\"${this.sectionClass}\">\\`)`\n })\n }\n\n this.$sections = $sections\n this.browserSupportsSessionStorage = helper.checkForSessionStorage()\n\n this.initControls()\n this.initSectionHeaders()\n\n // See if \"Show all sections\" button text should be updated\n const areAllSectionsOpen = this.checkIfAllSectionsOpen()\n this.updateShowAllButton(areAllSectionsOpen)\n }\n\n /**\n * Initialise controls and set attributes\n *\n * @private\n */\n initControls() {\n // Create \"Show all\" button and set attributes\n this.$showAllButton = document.createElement('button')\n this.$showAllButton.setAttribute('type', 'button')\n this.$showAllButton.setAttribute('class', this.showAllClass)\n this.$showAllButton.setAttribute('aria-expanded', 'false')\n\n // Create icon, add to element\n this.$showAllIcon = document.createElement('span')\n this.$showAllIcon.classList.add(this.upChevronIconClass)\n this.$showAllButton.appendChild(this.$showAllIcon)\n\n // Create control wrapper and add controls to it\n const $accordionControls = document.createElement('div')\n $accordionControls.setAttribute('class', this.controlsClass)\n $accordionControls.appendChild(this.$showAllButton)\n this.$module.insertBefore($accordionControls, this.$module.firstChild)\n\n // Build additional wrapper for Show all toggle text and place after icon\n this.$showAllText = document.createElement('span')\n this.$showAllText.classList.add(this.showAllTextClass)\n this.$showAllButton.appendChild(this.$showAllText)\n\n // Handle click events on the show/hide all button\n this.$showAllButton.addEventListener('click', () =>\n this.onShowOrHideAllToggle()\n )\n\n // Handle 'beforematch' events, if the user agent supports them\n if ('onbeforematch' in document) {\n document.addEventListener('beforematch', (event) =>\n this.onBeforeMatch(event)\n )\n }\n }\n\n /**\n * Initialise section headers\n *\n * @private\n */\n initSectionHeaders() {\n this.$sections.forEach(($section, i) => {\n const $header = $section.querySelector(`.${this.sectionHeaderClass}`)\n if (!$header) {\n throw new ElementError({\n componentName: 'Accordion',\n identifier: `Section headers (\\`<div class=\"${this.sectionHeaderClass}\">\\`)`\n })\n }\n\n // Set header attributes\n this.constructHeaderMarkup($header, i)\n this.setExpanded(this.isExpanded($section), $section)\n\n // Handle events\n $header.addEventListener('click', () => this.onSectionToggle($section))\n\n // See if there is any state stored in sessionStorage and set the sections\n // to open or closed.\n this.setInitialState($section)\n })\n }\n\n /**\n * Construct section header\n *\n * @private\n * @param {Element} $header - Section header\n * @param {number} index - Section index\n */\n constructHeaderMarkup($header, index) {\n const $span = $header.querySelector(`.${this.sectionButtonClass}`)\n const $heading = $header.querySelector(`.${this.sectionHeadingClass}`)\n const $summary = $header.querySelector(`.${this.sectionSummaryClass}`)\n\n if (!$heading) {\n throw new ElementError({\n componentName: 'Accordion',\n identifier: `Section heading (\\`.${this.sectionHeadingClass}\\`)`\n })\n }\n\n if (!$span) {\n throw new ElementError({\n componentName: 'Accordion',\n identifier: `Section button placeholder (\\`<span class=\"${this.sectionButtonClass}\">\\`)`\n })\n }\n\n // Create a button element that will replace the\n // '.govuk-accordion__section-button' span\n const $button = document.createElement('button')\n $button.setAttribute('type', 'button')\n $button.setAttribute(\n 'aria-controls',\n `${this.$module.id}-content-${index + 1}`\n )\n\n // Copy all attributes from $span to $button (except `id`, which gets added\n // to the `$headingText` element)\n for (const attr of Array.from($span.attributes)) {\n if (attr.nodeName !== 'id') {\n $button.setAttribute(attr.nodeName, `${attr.nodeValue}`)\n }\n }\n\n // Create container for heading text so it can be styled\n const $headingText = document.createElement('span')\n $headingText.classList.add(this.sectionHeadingTextClass)\n // Copy the span ID to the heading text to allow it to be referenced by\n // `aria-labelledby` on the hidden content area without \"Show this section\"\n $headingText.id = $span.id\n\n // Create an inner heading text container to limit the width of the focus\n // state\n const $headingTextFocus = document.createElement('span')\n $headingTextFocus.classList.add(this.sectionHeadingTextFocusClass)\n $headingText.appendChild($headingTextFocus)\n // span could contain HTML elements\n // (see https://www.w3.org/TR/2011/WD-html5-20110525/content-models.html#phrasing-content)\n $headingTextFocus.innerHTML = $span.innerHTML\n\n // Create container for show / hide icons and text.\n const $showHideToggle = document.createElement('span')\n $showHideToggle.classList.add(this.sectionShowHideToggleClass)\n // Tell Google not to index the 'show' text as part of the heading. Must be\n // set on the element before it's added to the DOM.\n // See https://developers.google.com/search/docs/advanced/robots/robots_meta_tag#data-nosnippet-attr\n $showHideToggle.setAttribute('data-nosnippet', '')\n // Create an inner container to limit the width of the focus state\n const $showHideToggleFocus = document.createElement('span')\n $showHideToggleFocus.classList.add(this.sectionShowHideToggleFocusClass)\n $showHideToggle.appendChild($showHideToggleFocus)\n // Create wrapper for the show / hide text. Append text after the show/hide icon\n const $showHideText = document.createElement('span')\n const $showHideIcon = document.createElement('span')\n $showHideIcon.classList.add(this.upChevronIconClass)\n $showHideToggleFocus.appendChild($showHideIcon)\n $showHideText.classList.add(this.sectionShowHideTextClass)\n $showHideToggleFocus.appendChild($showHideText)\n\n // Append elements to the button:\n // 1. Heading text\n // 2. Punctuation\n // 3. (Optional: Summary line followed by punctuation)\n // 4. Show / hide toggle\n $button.appendChild($headingText)\n $button.appendChild(this.getButtonPunctuationEl())\n\n // If summary content exists add to DOM in correct order\n if ($summary?.parentNode) {\n // Create a new `span` element and copy the summary line content from the\n // original `div` to the new `span`. This is because the summary line text\n // is now inside a button element, which can only contain phrasing\n // content.\n const $summarySpan = document.createElement('span')\n // Create an inner summary container to limit the width of the summary\n // focus state\n const $summarySpanFocus = document.createElement('span')\n $summarySpanFocus.classList.add(this.sectionSummaryFocusClass)\n $summarySpan.appendChild($summarySpanFocus)\n\n // Get original attributes, and pass them to the replacement\n for (const attr of Array.from($summary.attributes)) {\n $summarySpan.setAttribute(attr.nodeName, `${attr.nodeValue}`)\n }\n\n // Copy original contents of summary to the new summary span\n $summarySpanFocus.innerHTML = $summary.innerHTML\n\n // Replace the original summary `div` with the new summary `span`\n $summary.parentNode.replaceChild($summarySpan, $summary)\n\n $button.appendChild($summarySpan)\n $button.appendChild(this.getButtonPunctuationEl())\n }\n\n $button.appendChild($showHideToggle)\n\n $heading.removeChild($span)\n $heading.appendChild($button)\n }\n\n /**\n * When a section is opened by the user agent via the 'beforematch' event\n *\n * @private\n * @param {Event} event - Generic event\n */\n onBeforeMatch(event) {\n const $fragment = event.target\n\n // Handle elements with `.closest()` support only\n if (!($fragment instanceof Element)) {\n return\n }\n\n // Handle when fragment is inside section\n const $section = $fragment.closest(`.${this.sectionClass}`)\n if ($section) {\n this.setExpanded(true, $section)\n }\n }\n\n /**\n * When section toggled, set and store state\n *\n * @private\n * @param {Element} $section - Section element\n */\n onSectionToggle($section) {\n const expanded = this.isExpanded($section)\n this.setExpanded(!expanded, $section)\n\n // Store the state in sessionStorage when a change is triggered\n this.storeState($section)\n }\n\n /**\n * When Open/Close All toggled, set and store state\n *\n * @private\n */\n onShowOrHideAllToggle() {\n const nowExpanded = !this.checkIfAllSectionsOpen()\n\n this.$sections.forEach(($section) => {\n this.setExpanded(nowExpanded, $section)\n this.storeState($section)\n })\n\n this.updateShowAllButton(nowExpanded)\n }\n\n /**\n * Set section attributes when opened/closed\n *\n * @private\n * @param {boolean} expanded - Section expanded\n * @param {Element} $section - Section element\n */\n setExpanded(expanded, $section) {\n const $showHideIcon = $section.querySelector(`.${this.upChevronIconClass}`)\n const $showHideText = $section.querySelector(\n `.${this.sectionShowHideTextClass}`\n )\n const $button = $section.querySelector(`.${this.sectionButtonClass}`)\n const $content = $section.querySelector(`.${this.sectionContentClass}`)\n\n if (!$content) {\n throw new ElementError({\n componentName: 'Accordion',\n identifier: `Section content (\\`<div class=\"${this.sectionContentClass}\">\\`)`\n })\n }\n\n if (!$showHideIcon || !$showHideText || !$button) {\n // Return early for elements we create\n return\n }\n\n const newButtonText = expanded\n ? this.i18n.t('hideSection')\n : this.i18n.t('showSection')\n\n $showHideText.textContent = newButtonText\n $button.setAttribute('aria-expanded', `${expanded}`)\n\n // Update aria-label combining\n const ariaLabelParts = []\n\n const $headingText = $section.querySelector(\n `.${this.sectionHeadingTextClass}`\n )\n if ($headingText) {\n ariaLabelParts.push(`${$headingText.textContent}`.trim())\n }\n\n const $summary = $section.querySelector(`.${this.sectionSummaryClass}`)\n if ($summary) {\n ariaLabelParts.push(`${$summary.textContent}`.trim())\n }\n\n const ariaLabelMessage = expanded\n ? this.i18n.t('hideSectionAriaLabel')\n : this.i18n.t('showSectionAriaLabel')\n ariaLabelParts.push(ariaLabelMessage)\n\n /*\n * Join with a comma to add pause for assistive technology.\n * Example: [heading]Section A ,[pause] Show this section.\n * https://accessibility.blog.gov.uk/2017/12/18/what-working-on-gov-uk-navigation-taught-us-about-accessibility/\n */\n $button.setAttribute('aria-label', ariaLabelParts.join(' , '))\n\n // Swap icon, change class\n if (expanded) {\n $content.removeAttribute('hidden')\n $section.classList.add(this.sectionExpandedClass)\n $showHideIcon.classList.remove(this.downChevronIconClass)\n } else {\n $content.setAttribute('hidden', 'until-found')\n $section.classList.remove(this.sectionExpandedClass)\n $showHideIcon.classList.add(this.downChevronIconClass)\n }\n\n // See if \"Show all sections\" button text should be updated\n const areAllSectionsOpen = this.checkIfAllSectionsOpen()\n this.updateShowAllButton(areAllSectionsOpen)\n }\n\n /**\n * Get state of section\n *\n * @private\n * @param {Element} $section - Section element\n * @returns {boolean} True if expanded\n */\n isExpanded($section) {\n return $section.classList.contains(this.sectionExpandedClass)\n }\n\n /**\n * Check if all sections are open\n *\n * @private\n * @returns {boolean} True if all sections are open\n */\n checkIfAllSectionsOpen() {\n const sectionsCount = this.$sections.length\n const expandedSectionCount = this.$module.querySelectorAll(\n `.${this.sectionExpandedClass}`\n ).length\n const areAllSectionsOpen = sectionsCount === expandedSectionCount\n\n return areAllSectionsOpen\n }\n\n /**\n * Update \"Show all sections\" button\n *\n * @private\n * @param {boolean} expanded - Section expanded\n */\n updateShowAllButton(expanded) {\n if (!this.$showAllButton || !this.$showAllText || !this.$showAllIcon) {\n return\n }\n\n this.$showAllButton.setAttribute('aria-expanded', expanded.toString())\n this.$showAllText.textContent = expanded\n ? this.i18n.t('hideAllSections')\n : this.i18n.t('showAllSections')\n this.$showAllIcon.classList.toggle(this.downChevronIconClass, !expanded)\n }\n\n /**\n * Set the state of the accordions in sessionStorage\n *\n * @private\n * @param {Element} $section - Section element\n */\n storeState($section) {\n if (this.browserSupportsSessionStorage && this.config.rememberExpanded) {\n // We need a unique way of identifying each content in the Accordion.\n // Since an `#id` should be unique and an `id` is required for `aria-`\n // attributes `id` can be safely used.\n const $button = $section.querySelector(`.${this.sectionButtonClass}`)\n\n if ($button) {\n const contentId = $button.getAttribute('aria-controls')\n const contentState = $button.getAttribute('aria-expanded')\n\n // Only set the state when both `contentId` and `contentState` are taken\n // from the DOM.\n if (contentId && contentState) {\n window.sessionStorage.setItem(contentId, contentState)\n }\n }\n }\n }\n\n /**\n * Read the state of the accordions from sessionStorage\n *\n * @private\n * @param {Element} $section - Section element\n */\n setInitialState($section) {\n if (this.browserSupportsSessionStorage && this.config.rememberExpanded) {\n const $button = $section.querySelector(`.${this.sectionButtonClass}`)\n\n if ($button) {\n const contentId = $button.getAttribute('aria-controls')\n const contentState = contentId\n ? window.sessionStorage.getItem(contentId)\n : null\n\n if (contentState !== null) {\n this.setExpanded(contentState === 'true', $section)\n }\n }\n }\n }\n\n /**\n * Create an element to improve semantics of the section button with\n * punctuation\n *\n * Adding punctuation to the button can also improve its general semantics by\n * dividing its contents into thematic chunks. See\n * https://github.com/alphagov/govuk-frontend/issues/2327#issuecomment-922957442\n *\n * @private\n * @returns {Element} DOM element\n */\n getButtonPunctuationEl() {\n const $punctuationEl = document.createElement('span')\n $punctuationEl.classList.add(\n 'govuk-visually-hidden',\n this.sectionHeadingDividerClass\n )\n $punctuationEl.innerHTML = ', '\n return $punctuationEl\n }\n\n /**\n * Name for the component used when initialising using data-module attributes.\n */\n static moduleName = 'govuk-accordion'\n\n /**\n * Accordion default config\n *\n * @see {@link AccordionConfig}\n * @constant\n * @type {AccordionConfig}\n */\n static defaults = Object.freeze({\n i18n: {\n hideAllSections: 'Hide all sections',\n hideSection: 'Hide',\n hideSectionAriaLabel: 'Hide this section',\n showAllSections: 'Show all sections',\n showSection: 'Show',\n showSectionAriaLabel: 'Show this section'\n },\n rememberExpanded: true\n })\n}\n\nconst helper = {\n /**\n * Check for `window.sessionStorage`, and that it actually works.\n *\n * @returns {boolean} True if session storage is available\n */\n checkForSessionStorage: function () {\n const testString = 'this is the test string'\n let result\n try {\n window.sessionStorage.setItem(testString, testString)\n result =\n window.sessionStorage.getItem(testString) === testString.toString()\n window.sessionStorage.removeItem(testString)\n return result\n } catch (exception) {\n return false\n }\n }\n}\n\n/**\n * Accordion config\n *\n * @see {@link Accordion.defaults}\n * @typedef {object} AccordionConfig\n * @property {AccordionTranslations} [i18n=Accordion.defaults.i18n] - Accordion translations\n * @property {boolean} [rememberExpanded] - Whether the expanded and collapsed\n * state of each section is remembered and restored when navigating.\n */\n\n/**\n * Accordion translations\n *\n * @see {@link Accordion.defaults.i18n}\n * @typedef {object} AccordionTranslations\n *\n * Messages used by the component for the labels of its buttons. This includes\n * the visible text shown on screen, and text to help assistive technology users\n * for the buttons toggling each section.\n * @property {string} [hideAllSections] - The text content for the 'Hide all\n * sections' button, used when at least one section is expanded.\n * @property {string} [hideSection] - The text content for the 'Hide'\n * button, used when a section is expanded.\n * @property {string} [hideSectionAriaLabel] - The text content appended to the\n * 'Hide' button's accessible name when a section is expanded.\n * @property {string} [showAllSections] - The text content for the 'Show all\n * sections' button, used when all sections are collapsed.\n * @property {string} [showSection] - The text content for the 'Show'\n * button, used when a section is collapsed.\n * @property {string} [showSectionAriaLabel] - The text content appended to the\n * 'Show' button's accessible name when a section is expanded.\n */\n"],"names":["Accordion","GOVUKFrontendComponent","constructor","$module","config","i18n","controlsClass","showAllClass","showAllTextClass","sectionClass","sectionExpandedClass","sectionButtonClass","sectionHeaderClass","sectionHeadingClass","sectionHeadingDividerClass","sectionHeadingTextClass","sectionHeadingTextFocusClass","sectionShowHideToggleClass","sectionShowHideToggleFocusClass","sectionShowHideTextClass","upChevronIconClass","downChevronIconClass","sectionSummaryClass","sectionSummaryFocusClass","sectionContentClass","$sections","browserSupportsSessionStorage","$showAllButton","$showAllIcon","$showAllText","HTMLElement","ElementError","componentName","element","identifier","mergeConfigs","defaults","normaliseDataset","dataset","I18n","extractConfigByNamespace","querySelectorAll","length","helper","checkForSessionStorage","initControls","initSectionHeaders","areAllSectionsOpen","checkIfAllSectionsOpen","updateShowAllButton","document","createElement","setAttribute","classList","add","appendChild","$accordionControls","insertBefore","firstChild","addEventListener","onShowOrHideAllToggle","event","onBeforeMatch","forEach","$section","i","$header","querySelector","constructHeaderMarkup","setExpanded","isExpanded","onSectionToggle","setInitialState","index","$span","$heading","$summary","$button","id","attr","Array","from","attributes","nodeName","nodeValue","$headingText","$headingTextFocus","innerHTML","$showHideToggle","$showHideToggleFocus","$showHideText","$showHideIcon","getButtonPunctuationEl","parentNode","$summarySpan","$summarySpanFocus","replaceChild","removeChild","$fragment","target","Element","closest","expanded","storeState","nowExpanded","$content","newButtonText","t","textContent","ariaLabelParts","push","trim","ariaLabelMessage","join","removeAttribute","remove","contains","sectionsCount","expandedSectionCount","toString","toggle","rememberExpanded","contentId","getAttribute","contentState","window","sessionStorage","setItem","getItem","$punctuationEl","moduleName","Object","freeze","hideAllSections","hideSection","hideSectionAriaLabel","showAllSections","showSection","showSectionAriaLabel","testString","result","removeItem","exception"],"mappings":"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"}
1
+ {"version":3,"file":"accordion.mjs","sources":["../../../../src/govuk/components/accordion/accordion.mjs"],"sourcesContent":["import { mergeConfigs } from '../../common/index.mjs'\nimport { normaliseDataset } from '../../common/normalise-dataset.mjs'\nimport { ElementError } from '../../errors/index.mjs'\nimport { GOVUKFrontendComponent } from '../../govuk-frontend-component.mjs'\nimport { I18n } from '../../i18n.mjs'\n\n/**\n * Accordion component\n *\n * This allows a collection of sections to be collapsed by default, showing only\n * their headers. Sections can be expanded or collapsed individually by clicking\n * their headers. A \"Show all sections\" button is also added to the top of the\n * accordion, which switches to \"Hide all sections\" when all the sections are\n * expanded.\n *\n * The state of each section is saved to the DOM via the `aria-expanded`\n * attribute, which also provides accessibility.\n *\n * @preserve\n */\nexport class Accordion extends GOVUKFrontendComponent {\n /** @private */\n $module\n\n /**\n * @private\n * @type {AccordionConfig}\n */\n config\n\n /** @private */\n i18n\n\n /** @private */\n controlsClass = 'govuk-accordion__controls'\n\n /** @private */\n showAllClass = 'govuk-accordion__show-all'\n\n /** @private */\n showAllTextClass = 'govuk-accordion__show-all-text'\n\n /** @private */\n sectionClass = 'govuk-accordion__section'\n\n /** @private */\n sectionExpandedClass = 'govuk-accordion__section--expanded'\n\n /** @private */\n sectionButtonClass = 'govuk-accordion__section-button'\n\n /** @private */\n sectionHeaderClass = 'govuk-accordion__section-header'\n\n /** @private */\n sectionHeadingClass = 'govuk-accordion__section-heading'\n\n /** @private */\n sectionHeadingDividerClass = 'govuk-accordion__section-heading-divider'\n\n /** @private */\n sectionHeadingTextClass = 'govuk-accordion__section-heading-text'\n\n /** @private */\n sectionHeadingTextFocusClass = 'govuk-accordion__section-heading-text-focus'\n\n /** @private */\n sectionShowHideToggleClass = 'govuk-accordion__section-toggle'\n\n /** @private */\n sectionShowHideToggleFocusClass = 'govuk-accordion__section-toggle-focus'\n\n /** @private */\n sectionShowHideTextClass = 'govuk-accordion__section-toggle-text'\n\n /** @private */\n upChevronIconClass = 'govuk-accordion-nav__chevron'\n\n /** @private */\n downChevronIconClass = 'govuk-accordion-nav__chevron--down'\n\n /** @private */\n sectionSummaryClass = 'govuk-accordion__section-summary'\n\n /** @private */\n sectionSummaryFocusClass = 'govuk-accordion__section-summary-focus'\n\n /** @private */\n sectionContentClass = 'govuk-accordion__section-content'\n\n /** @private */\n $sections\n\n /**\n * @private\n * @type {HTMLButtonElement | null}\n */\n $showAllButton = null\n\n /**\n * @private\n * @type {HTMLElement | null}\n */\n $showAllIcon = null\n\n /**\n * @private\n * @type {HTMLElement | null}\n */\n $showAllText = null\n\n /**\n * @param {Element | null} $module - HTML element to use for accordion\n * @param {AccordionConfig} [config] - Accordion config\n */\n constructor($module, config = {}) {\n super()\n\n if (!($module instanceof HTMLElement)) {\n throw new ElementError({\n componentName: 'Accordion',\n element: $module,\n identifier: 'Root element (`$module`)'\n })\n }\n\n this.$module = $module\n\n this.config = mergeConfigs(\n Accordion.defaults,\n config,\n normaliseDataset(Accordion, $module.dataset)\n )\n\n this.i18n = new I18n(this.config.i18n)\n\n const $sections = this.$module.querySelectorAll(`.${this.sectionClass}`)\n if (!$sections.length) {\n throw new ElementError({\n componentName: 'Accordion',\n identifier: `Sections (\\`<div class=\"${this.sectionClass}\">\\`)`\n })\n }\n\n this.$sections = $sections\n\n this.initControls()\n this.initSectionHeaders()\n\n this.updateShowAllButton(this.areAllSectionsOpen())\n }\n\n /**\n * Initialise controls and set attributes\n *\n * @private\n */\n initControls() {\n // Create \"Show all\" button and set attributes\n this.$showAllButton = document.createElement('button')\n this.$showAllButton.setAttribute('type', 'button')\n this.$showAllButton.setAttribute('class', this.showAllClass)\n this.$showAllButton.setAttribute('aria-expanded', 'false')\n\n // Create icon, add to element\n this.$showAllIcon = document.createElement('span')\n this.$showAllIcon.classList.add(this.upChevronIconClass)\n this.$showAllButton.appendChild(this.$showAllIcon)\n\n // Create control wrapper and add controls to it\n const $accordionControls = document.createElement('div')\n $accordionControls.setAttribute('class', this.controlsClass)\n $accordionControls.appendChild(this.$showAllButton)\n this.$module.insertBefore($accordionControls, this.$module.firstChild)\n\n // Build additional wrapper for Show all toggle text and place after icon\n this.$showAllText = document.createElement('span')\n this.$showAllText.classList.add(this.showAllTextClass)\n this.$showAllButton.appendChild(this.$showAllText)\n\n // Handle click events on the show/hide all button\n this.$showAllButton.addEventListener('click', () =>\n this.onShowOrHideAllToggle()\n )\n\n // Handle 'beforematch' events, if the user agent supports them\n if ('onbeforematch' in document) {\n document.addEventListener('beforematch', (event) =>\n this.onBeforeMatch(event)\n )\n }\n }\n\n /**\n * Initialise section headers\n *\n * @private\n */\n initSectionHeaders() {\n this.$sections.forEach(($section, i) => {\n const $header = $section.querySelector(`.${this.sectionHeaderClass}`)\n if (!$header) {\n throw new ElementError({\n componentName: 'Accordion',\n identifier: `Section headers (\\`<div class=\"${this.sectionHeaderClass}\">\\`)`\n })\n }\n\n // Set header attributes\n this.constructHeaderMarkup($header, i)\n this.setExpanded(this.isExpanded($section), $section)\n\n // Handle events\n $header.addEventListener('click', () => this.onSectionToggle($section))\n\n // See if there is any state stored in sessionStorage and set the sections\n // to open or closed.\n this.setInitialState($section)\n })\n }\n\n /**\n * Construct section header\n *\n * @private\n * @param {Element} $header - Section header\n * @param {number} index - Section index\n */\n constructHeaderMarkup($header, index) {\n const $span = $header.querySelector(`.${this.sectionButtonClass}`)\n const $heading = $header.querySelector(`.${this.sectionHeadingClass}`)\n const $summary = $header.querySelector(`.${this.sectionSummaryClass}`)\n\n if (!$heading) {\n throw new ElementError({\n componentName: 'Accordion',\n identifier: `Section heading (\\`.${this.sectionHeadingClass}\\`)`\n })\n }\n\n if (!$span) {\n throw new ElementError({\n componentName: 'Accordion',\n identifier: `Section button placeholder (\\`<span class=\"${this.sectionButtonClass}\">\\`)`\n })\n }\n\n // Create a button element that will replace the\n // '.govuk-accordion__section-button' span\n const $button = document.createElement('button')\n $button.setAttribute('type', 'button')\n $button.setAttribute(\n 'aria-controls',\n `${this.$module.id}-content-${index + 1}`\n )\n\n // Copy all attributes from $span to $button (except `id`, which gets added\n // to the `$headingText` element)\n for (const attr of Array.from($span.attributes)) {\n if (attr.name !== 'id') {\n $button.setAttribute(attr.name, attr.value)\n }\n }\n\n // Create container for heading text so it can be styled\n const $headingText = document.createElement('span')\n $headingText.classList.add(this.sectionHeadingTextClass)\n // Copy the span ID to the heading text to allow it to be referenced by\n // `aria-labelledby` on the hidden content area without \"Show this section\"\n $headingText.id = $span.id\n\n // Create an inner heading text container to limit the width of the focus\n // state\n const $headingTextFocus = document.createElement('span')\n $headingTextFocus.classList.add(this.sectionHeadingTextFocusClass)\n $headingText.appendChild($headingTextFocus)\n // span could contain HTML elements\n // (see https://www.w3.org/TR/2011/WD-html5-20110525/content-models.html#phrasing-content)\n Array.from($span.childNodes).forEach(($child) =>\n $headingTextFocus.appendChild($child)\n )\n\n // Create container for show / hide icons and text.\n const $showHideToggle = document.createElement('span')\n $showHideToggle.classList.add(this.sectionShowHideToggleClass)\n // Tell Google not to index the 'show' text as part of the heading. Must be\n // set on the element before it's added to the DOM.\n // See https://developers.google.com/search/docs/advanced/robots/robots_meta_tag#data-nosnippet-attr\n $showHideToggle.setAttribute('data-nosnippet', '')\n // Create an inner container to limit the width of the focus state\n const $showHideToggleFocus = document.createElement('span')\n $showHideToggleFocus.classList.add(this.sectionShowHideToggleFocusClass)\n $showHideToggle.appendChild($showHideToggleFocus)\n // Create wrapper for the show / hide text. Append text after the show/hide icon\n const $showHideText = document.createElement('span')\n const $showHideIcon = document.createElement('span')\n $showHideIcon.classList.add(this.upChevronIconClass)\n $showHideToggleFocus.appendChild($showHideIcon)\n $showHideText.classList.add(this.sectionShowHideTextClass)\n $showHideToggleFocus.appendChild($showHideText)\n\n // Append elements to the button:\n // 1. Heading text\n // 2. Punctuation\n // 3. (Optional: Summary line followed by punctuation)\n // 4. Show / hide toggle\n $button.appendChild($headingText)\n $button.appendChild(this.getButtonPunctuationEl())\n\n // If summary content exists add to DOM in correct order\n if ($summary) {\n // Create a new `span` element and copy the summary line content from the\n // original `div` to the new `span`. This is because the summary line text\n // is now inside a button element, which can only contain phrasing\n // content.\n const $summarySpan = document.createElement('span')\n // Create an inner summary container to limit the width of the summary\n // focus state\n const $summarySpanFocus = document.createElement('span')\n $summarySpanFocus.classList.add(this.sectionSummaryFocusClass)\n $summarySpan.appendChild($summarySpanFocus)\n\n // Get original attributes, and pass them to the replacement\n for (const attr of Array.from($summary.attributes)) {\n $summarySpan.setAttribute(attr.name, attr.value)\n }\n\n // Copy original contents of summary to the new summary span\n Array.from($summary.childNodes).forEach(($child) =>\n $summarySpanFocus.appendChild($child)\n )\n\n // Replace the original summary `div` with the new summary `span`\n $summary.remove()\n\n $button.appendChild($summarySpan)\n $button.appendChild(this.getButtonPunctuationEl())\n }\n\n $button.appendChild($showHideToggle)\n\n $heading.removeChild($span)\n $heading.appendChild($button)\n }\n\n /**\n * When a section is opened by the user agent via the 'beforematch' event\n *\n * @private\n * @param {Event} event - Generic event\n */\n onBeforeMatch(event) {\n const $fragment = event.target\n\n // Handle elements with `.closest()` support only\n if (!($fragment instanceof Element)) {\n return\n }\n\n // Handle when fragment is inside section\n const $section = $fragment.closest(`.${this.sectionClass}`)\n if ($section) {\n this.setExpanded(true, $section)\n }\n }\n\n /**\n * When section toggled, set and store state\n *\n * @private\n * @param {Element} $section - Section element\n */\n onSectionToggle($section) {\n const nowExpanded = !this.isExpanded($section)\n this.setExpanded(nowExpanded, $section)\n\n // Store the state in sessionStorage when a change is triggered\n this.storeState($section, nowExpanded)\n }\n\n /**\n * When Open/Close All toggled, set and store state\n *\n * @private\n */\n onShowOrHideAllToggle() {\n const nowExpanded = !this.areAllSectionsOpen()\n\n this.$sections.forEach(($section) => {\n this.setExpanded(nowExpanded, $section)\n this.storeState($section, nowExpanded)\n })\n\n this.updateShowAllButton(nowExpanded)\n }\n\n /**\n * Set section attributes when opened/closed\n *\n * @private\n * @param {boolean} expanded - Section expanded\n * @param {Element} $section - Section element\n */\n setExpanded(expanded, $section) {\n const $showHideIcon = $section.querySelector(`.${this.upChevronIconClass}`)\n const $showHideText = $section.querySelector(\n `.${this.sectionShowHideTextClass}`\n )\n const $button = $section.querySelector(`.${this.sectionButtonClass}`)\n const $content = $section.querySelector(`.${this.sectionContentClass}`)\n\n if (!$content) {\n throw new ElementError({\n componentName: 'Accordion',\n identifier: `Section content (\\`<div class=\"${this.sectionContentClass}\">\\`)`\n })\n }\n\n if (!$showHideIcon || !$showHideText || !$button) {\n // Return early for elements we create\n return\n }\n\n const newButtonText = expanded\n ? this.i18n.t('hideSection')\n : this.i18n.t('showSection')\n\n $showHideText.textContent = newButtonText\n $button.setAttribute('aria-expanded', `${expanded}`)\n\n // Update aria-label combining\n const ariaLabelParts = []\n\n const $headingText = $section.querySelector(\n `.${this.sectionHeadingTextClass}`\n )\n if ($headingText) {\n ariaLabelParts.push(`${$headingText.textContent}`.trim())\n }\n\n const $summary = $section.querySelector(`.${this.sectionSummaryClass}`)\n if ($summary) {\n ariaLabelParts.push(`${$summary.textContent}`.trim())\n }\n\n const ariaLabelMessage = expanded\n ? this.i18n.t('hideSectionAriaLabel')\n : this.i18n.t('showSectionAriaLabel')\n ariaLabelParts.push(ariaLabelMessage)\n\n /*\n * Join with a comma to add pause for assistive technology.\n * Example: [heading]Section A ,[pause] Show this section.\n * https://accessibility.blog.gov.uk/2017/12/18/what-working-on-gov-uk-navigation-taught-us-about-accessibility/\n */\n $button.setAttribute('aria-label', ariaLabelParts.join(' , '))\n\n // Swap icon, change class\n if (expanded) {\n $content.removeAttribute('hidden')\n $section.classList.add(this.sectionExpandedClass)\n $showHideIcon.classList.remove(this.downChevronIconClass)\n } else {\n $content.setAttribute('hidden', 'until-found')\n $section.classList.remove(this.sectionExpandedClass)\n $showHideIcon.classList.add(this.downChevronIconClass)\n }\n\n // See if \"Show all sections\" button text should be updated\n this.updateShowAllButton(this.areAllSectionsOpen())\n }\n\n /**\n * Get state of section\n *\n * @private\n * @param {Element} $section - Section element\n * @returns {boolean} True if expanded\n */\n isExpanded($section) {\n return $section.classList.contains(this.sectionExpandedClass)\n }\n\n /**\n * Check if all sections are open\n *\n * @private\n * @returns {boolean} True if all sections are open\n */\n areAllSectionsOpen() {\n return Array.from(this.$sections).every(($section) =>\n this.isExpanded($section)\n )\n }\n\n /**\n * Update \"Show all sections\" button\n *\n * @private\n * @param {boolean} expanded - Section expanded\n */\n updateShowAllButton(expanded) {\n if (!this.$showAllButton || !this.$showAllText || !this.$showAllIcon) {\n return\n }\n\n this.$showAllButton.setAttribute('aria-expanded', expanded.toString())\n this.$showAllText.textContent = expanded\n ? this.i18n.t('hideAllSections')\n : this.i18n.t('showAllSections')\n this.$showAllIcon.classList.toggle(this.downChevronIconClass, !expanded)\n }\n\n /**\n * Get the identifier for a section\n *\n * We need a unique way of identifying each content in the Accordion.\n * Since an `#id` should be unique and an `id` is required for `aria-`\n * attributes `id` can be safely used.\n *\n * @param {Element} $section - Section element\n * @returns {string | undefined | null} Identifier for section\n */\n getIdentifier($section) {\n const $button = $section.querySelector(`.${this.sectionButtonClass}`)\n\n return $button?.getAttribute('aria-controls')\n }\n\n /**\n * Set the state of the accordions in sessionStorage\n *\n * @private\n * @param {Element} $section - Section element\n * @param {boolean} isExpanded - Whether the section is expanded\n */\n storeState($section, isExpanded) {\n if (!this.config.rememberExpanded) {\n return\n }\n\n const id = this.getIdentifier($section)\n\n if (id) {\n try {\n window.sessionStorage.setItem(id, isExpanded.toString())\n } catch (exception) {}\n }\n }\n\n /**\n * Read the state of the accordions from sessionStorage\n *\n * @private\n * @param {Element} $section - Section element\n */\n setInitialState($section) {\n if (!this.config.rememberExpanded) {\n return\n }\n\n const id = this.getIdentifier($section)\n\n if (id) {\n try {\n const state = window.sessionStorage.getItem(id)\n\n if (state !== null) {\n this.setExpanded(state === 'true', $section)\n }\n } catch (exception) {}\n }\n }\n\n /**\n * Create an element to improve semantics of the section button with\n * punctuation\n *\n * Adding punctuation to the button can also improve its general semantics by\n * dividing its contents into thematic chunks. See\n * https://github.com/alphagov/govuk-frontend/issues/2327#issuecomment-922957442\n *\n * @private\n * @returns {Element} DOM element\n */\n getButtonPunctuationEl() {\n const $punctuationEl = document.createElement('span')\n $punctuationEl.classList.add(\n 'govuk-visually-hidden',\n this.sectionHeadingDividerClass\n )\n $punctuationEl.textContent = ', '\n return $punctuationEl\n }\n\n /**\n * Name for the component used when initialising using data-module attributes.\n */\n static moduleName = 'govuk-accordion'\n\n /**\n * Accordion default config\n *\n * @see {@link AccordionConfig}\n * @constant\n * @type {AccordionConfig}\n */\n static defaults = Object.freeze({\n i18n: {\n hideAllSections: 'Hide all sections',\n hideSection: 'Hide',\n hideSectionAriaLabel: 'Hide this section',\n showAllSections: 'Show all sections',\n showSection: 'Show',\n showSectionAriaLabel: 'Show this section'\n },\n rememberExpanded: true\n })\n\n /**\n * Accordion config schema\n *\n * @constant\n * @satisfies {Schema}\n */\n static schema = Object.freeze({\n properties: {\n i18n: { type: 'object' },\n rememberExpanded: { type: 'boolean' }\n }\n })\n}\n\n/**\n * Accordion config\n *\n * @see {@link Accordion.defaults}\n * @typedef {object} AccordionConfig\n * @property {AccordionTranslations} [i18n=Accordion.defaults.i18n] - Accordion translations\n * @property {boolean} [rememberExpanded] - Whether the expanded and collapsed\n * state of each section is remembered and restored when navigating.\n */\n\n/**\n * Accordion translations\n *\n * @see {@link Accordion.defaults.i18n}\n * @typedef {object} AccordionTranslations\n *\n * Messages used by the component for the labels of its buttons. This includes\n * the visible text shown on screen, and text to help assistive technology users\n * for the buttons toggling each section.\n * @property {string} [hideAllSections] - The text content for the 'Hide all\n * sections' button, used when at least one section is expanded.\n * @property {string} [hideSection] - The text content for the 'Hide'\n * button, used when a section is expanded.\n * @property {string} [hideSectionAriaLabel] - The text content appended to the\n * 'Hide' button's accessible name when a section is expanded.\n * @property {string} [showAllSections] - The text content for the 'Show all\n * sections' button, used when all sections are collapsed.\n * @property {string} [showSection] - The text content for the 'Show'\n * button, used when a section is collapsed.\n * @property {string} [showSectionAriaLabel] - The text content appended to the\n * 'Show' button's accessible name when a section is expanded.\n */\n\n/**\n * @typedef {import('../../common/index.mjs').Schema} Schema\n */\n"],"names":["Accordion","GOVUKFrontendComponent","constructor","$module","config","i18n","controlsClass","showAllClass","showAllTextClass","sectionClass","sectionExpandedClass","sectionButtonClass","sectionHeaderClass","sectionHeadingClass","sectionHeadingDividerClass","sectionHeadingTextClass","sectionHeadingTextFocusClass","sectionShowHideToggleClass","sectionShowHideToggleFocusClass","sectionShowHideTextClass","upChevronIconClass","downChevronIconClass","sectionSummaryClass","sectionSummaryFocusClass","sectionContentClass","$sections","$showAllButton","$showAllIcon","$showAllText","HTMLElement","ElementError","componentName","element","identifier","mergeConfigs","defaults","normaliseDataset","dataset","I18n","querySelectorAll","length","initControls","initSectionHeaders","updateShowAllButton","areAllSectionsOpen","document","createElement","setAttribute","classList","add","appendChild","$accordionControls","insertBefore","firstChild","addEventListener","onShowOrHideAllToggle","event","onBeforeMatch","forEach","$section","i","$header","querySelector","constructHeaderMarkup","setExpanded","isExpanded","onSectionToggle","setInitialState","index","$span","$heading","$summary","$button","id","attr","Array","from","attributes","name","value","$headingText","$headingTextFocus","childNodes","$child","$showHideToggle","$showHideToggleFocus","$showHideText","$showHideIcon","getButtonPunctuationEl","$summarySpan","$summarySpanFocus","remove","removeChild","$fragment","target","Element","closest","nowExpanded","storeState","expanded","$content","newButtonText","t","textContent","ariaLabelParts","push","trim","ariaLabelMessage","join","removeAttribute","contains","every","toString","toggle","getIdentifier","getAttribute","rememberExpanded","window","sessionStorage","setItem","exception","state","getItem","$punctuationEl","moduleName","Object","freeze","hideAllSections","hideSection","hideSectionAriaLabel","showAllSections","showSection","showSectionAriaLabel","schema","properties","type"],"mappings":"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"}
@@ -27,6 +27,7 @@
27
27
  "hidden": false,
28
28
  "description": "",
29
29
  "previewLayoutModifiers": [],
30
+ "screenshot": false,
30
31
  "html": "<div class=\"govuk-accordion\" data-module=\"govuk-accordion\" id=\"default-example\">\n <div class=\"govuk-accordion__section\">\n <div class=\"govuk-accordion__section-header\">\n <h2 class=\"govuk-accordion__section-heading\">\n <span class=\"govuk-accordion__section-button\" id=\"default-example-heading-1\">\n Section A\n </span>\n </h2>\n </div>\n <div id=\"default-example-content-1\" class=\"govuk-accordion__section-content\">\n <p class=\"govuk-body\">\n We need to know your nationality so we can work out which elections you’re entitled to vote in. If you cannot provide your nationality, you’ll have to send copies of identity documents through the post.\n </p>\n </div>\n </div>\n <div class=\"govuk-accordion__section\">\n <div class=\"govuk-accordion__section-header\">\n <h2 class=\"govuk-accordion__section-heading\">\n <span class=\"govuk-accordion__section-button\" id=\"default-example-heading-2\">\n Section B\n </span>\n </h2>\n </div>\n <div id=\"default-example-content-2\" class=\"govuk-accordion__section-content\">\n <ul class=\"govuk-list govuk-list--bullet\">\n <li>Example item 2</li>\n </ul>\n </div>\n </div>\n</div>"
31
32
  },
32
33
  {
@@ -61,6 +62,7 @@
61
62
  "hidden": false,
62
63
  "description": "",
63
64
  "previewLayoutModifiers": [],
65
+ "screenshot": false,
64
66
  "html": "<div class=\"govuk-accordion\" data-module=\"govuk-accordion\" id=\"with-descriptions\">\n <div class=\"govuk-accordion__section\">\n <div class=\"govuk-accordion__section-header\">\n <h2 class=\"govuk-accordion__section-heading\">\n <span class=\"govuk-accordion__section-button\" id=\"with-descriptions-heading-1\">\n Test\n </span>\n </h2>\n <div class=\"govuk-accordion__section-summary govuk-body\" id=\"with-descriptions-summary-1\">\n Additional description\n </div>\n </div>\n <div id=\"with-descriptions-content-1\" class=\"govuk-accordion__section-content\">\n <p class=\"govuk-body\">\n We need to know your nationality so we can work out which elections you’re entitled to vote in. If you cannot provide your nationality, you’ll have to send copies of identity documents through the post.\n </p>\n <ul class=\"govuk-list govuk-list--bullet\">\n <li>Example item 1</li>\n </ul>\n </div>\n </div>\n <div class=\"govuk-accordion__section\">\n <div class=\"govuk-accordion__section-header\">\n <h2 class=\"govuk-accordion__section-heading\">\n <span class=\"govuk-accordion__section-button\" id=\"with-descriptions-heading-2\">\n Test 2\n </span>\n </h2>\n <div class=\"govuk-accordion__section-summary govuk-body\" id=\"with-descriptions-summary-2\">\n <span class=\"govuk-!-font-weight-regular\">Additional description (wrapped in span)</span>\n </div>\n </div>\n <div id=\"with-descriptions-content-2\" class=\"govuk-accordion__section-content\">\n <ul class=\"govuk-list govuk-list--bullet\">\n <li>Example item 2</li>\n </ul>\n </div>\n </div>\n</div>"
65
67
  },
66
68
  {
@@ -95,6 +97,7 @@
95
97
  "hidden": false,
96
98
  "description": "",
97
99
  "previewLayoutModifiers": [],
100
+ "screenshot": false,
98
101
  "html": "<div class=\"govuk-accordion\" data-module=\"govuk-accordion\" id=\"with-long-content-and-description\">\n <div class=\"govuk-accordion__section\">\n <div class=\"govuk-accordion__section-header\">\n <h2 class=\"govuk-accordion__section-heading\">\n <span class=\"govuk-accordion__section-button\" id=\"with-long-content-and-description-heading-1\">\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc quis tortor porttitor.\n </span>\n </h2>\n <div class=\"govuk-accordion__section-summary govuk-body\" id=\"with-long-content-and-description-summary-1\">\n Etiam diam dui, tempus ut pharetra in, aliquet non dui. Nunc pulvinar maximus tortor, ac finibus augue congue vitae. Donec sed cursus lorem.\n </div>\n </div>\n <div id=\"with-long-content-and-description-content-1\" class=\"govuk-accordion__section-content\">\n <ul class=\"govuk-list govuk-list--bullet\">\n <li>Example item 1</li>\n </ul>\n </div>\n </div>\n <div class=\"govuk-accordion__section\">\n <div class=\"govuk-accordion__section-header\">\n <h2 class=\"govuk-accordion__section-heading\">\n <span class=\"govuk-accordion__section-button\" id=\"with-long-content-and-description-heading-2\">\n Praesent faucibus leo feugiat libero pharetra lacinia. Aliquam aliquet ante vitae mollis vestibulum.\n </span>\n </h2>\n <div class=\"govuk-accordion__section-summary govuk-body\" id=\"with-long-content-and-description-summary-2\">\n <span class=\"govuk-!-font-weight-regular\">Maecenas nec <abbr>est</abbr> sapien. Etiam varius luctus mauris non porttitor. </span>\n </div>\n </div>\n <div id=\"with-long-content-and-description-content-2\" class=\"govuk-accordion__section-content\">\n <ul class=\"govuk-list govuk-list--bullet\">\n <li>Example item 2</li>\n </ul>\n </div>\n </div>\n</div>"
99
102
  },
100
103
  {
@@ -124,6 +127,7 @@
124
127
  "hidden": false,
125
128
  "description": "",
126
129
  "previewLayoutModifiers": [],
130
+ "screenshot": false,
127
131
  "html": "<div class=\"govuk-accordion\" data-module=\"govuk-accordion\" id=\"one-section-open-example\">\n <div class=\"govuk-accordion__section govuk-accordion__section--expanded\">\n <div class=\"govuk-accordion__section-header\">\n <h2 class=\"govuk-accordion__section-heading\">\n <span class=\"govuk-accordion__section-button\" id=\"one-section-open-example-heading-1\">\n Section A\n </span>\n </h2>\n </div>\n <div id=\"one-section-open-example-content-1\" class=\"govuk-accordion__section-content\">\n <ul class=\"govuk-list govuk-list--bullet\">\n <li>Example item 1</li>\n </ul>\n </div>\n </div>\n <div class=\"govuk-accordion__section\">\n <div class=\"govuk-accordion__section-header\">\n <h2 class=\"govuk-accordion__section-heading\">\n <span class=\"govuk-accordion__section-button\" id=\"one-section-open-example-heading-2\">\n Section B\n </span>\n </h2>\n </div>\n <div id=\"one-section-open-example-content-2\" class=\"govuk-accordion__section-content\">\n <ul class=\"govuk-list govuk-list--bullet\">\n <li>Example item 2</li>\n </ul>\n </div>\n </div>\n</div>"
128
132
  },
129
133
  {
@@ -154,6 +158,7 @@
154
158
  "hidden": false,
155
159
  "description": "",
156
160
  "previewLayoutModifiers": [],
161
+ "screenshot": false,
157
162
  "html": "<div class=\"govuk-accordion\" data-module=\"govuk-accordion\" id=\"all-sections-open-example\">\n <div class=\"govuk-accordion__section govuk-accordion__section--expanded\">\n <div class=\"govuk-accordion__section-header\">\n <h2 class=\"govuk-accordion__section-heading\">\n <span class=\"govuk-accordion__section-button\" id=\"all-sections-open-example-heading-1\">\n Section A\n </span>\n </h2>\n </div>\n <div id=\"all-sections-open-example-content-1\" class=\"govuk-accordion__section-content\">\n <ul class=\"govuk-list govuk-list--bullet\">\n <li>Example item 1</li>\n </ul>\n </div>\n </div>\n <div class=\"govuk-accordion__section govuk-accordion__section--expanded\">\n <div class=\"govuk-accordion__section-header\">\n <h2 class=\"govuk-accordion__section-heading\">\n <span class=\"govuk-accordion__section-button\" id=\"all-sections-open-example-heading-2\">\n Section B\n </span>\n </h2>\n </div>\n <div id=\"all-sections-open-example-content-2\" class=\"govuk-accordion__section-content\">\n <ul class=\"govuk-list govuk-list--bullet\">\n <li>Example item 2</li>\n </ul>\n </div>\n </div>\n</div>"
158
163
  },
159
164
  {
@@ -182,6 +187,7 @@
182
187
  "hidden": false,
183
188
  "description": "",
184
189
  "previewLayoutModifiers": [],
190
+ "screenshot": false,
185
191
  "html": "<div class=\"govuk-accordion\" data-module=\"govuk-accordion\" id=\"with-focusable-elements\">\n <div class=\"govuk-accordion__section\">\n <div class=\"govuk-accordion__section-header\">\n <h2 class=\"govuk-accordion__section-heading\">\n <span class=\"govuk-accordion__section-button\" id=\"with-focusable-elements-heading-1\">\n Section A\n </span>\n </h2>\n </div>\n <div id=\"with-focusable-elements-content-1\" class=\"govuk-accordion__section-content\">\n <a class=\"govuk-link\" href=\"#\">Link A</a>\n </div>\n </div>\n <div class=\"govuk-accordion__section\">\n <div class=\"govuk-accordion__section-header\">\n <h2 class=\"govuk-accordion__section-heading\">\n <span class=\"govuk-accordion__section-button\" id=\"with-focusable-elements-heading-2\">\n Section B\n </span>\n </h2>\n </div>\n <div id=\"with-focusable-elements-content-2\" class=\"govuk-accordion__section-content\">\n <a class=\"govuk-link\" href=\"#\">Link B</a>\n </div>\n </div>\n</div>"
186
192
  },
187
193
  {
@@ -216,6 +222,7 @@
216
222
  "hidden": false,
217
223
  "description": "",
218
224
  "previewLayoutModifiers": [],
225
+ "screenshot": false,
219
226
  "html": "<div class=\"govuk-accordion\" data-module=\"govuk-accordion\" id=\"with-translations\" data-i18n.hide-all-sections=\"Collapse all sections\" data-i18n.hide-section=\"Collapse\" data-i18n.hide-section-aria-label=\"Collapse this section\" data-i18n.show-all-sections=\"Expand all sections\" data-i18n.show-section=\"Expand\" data-i18n.show-section-aria-label=\"Expand this section\">\n <div class=\"govuk-accordion__section\">\n <div class=\"govuk-accordion__section-header\">\n <h2 class=\"govuk-accordion__section-heading\">\n <span class=\"govuk-accordion__section-button\" id=\"with-translations-heading-1\">\n Section A\n </span>\n </h2>\n </div>\n <div id=\"with-translations-content-1\" class=\"govuk-accordion__section-content\">\n <p class=\"govuk-body\">\n We need to know your nationality so we can work out which elections you’re entitled to vote in. If you cannot provide your nationality, you’ll have to send copies of identity documents through the post.\n </p>\n </div>\n </div>\n <div class=\"govuk-accordion__section\">\n <div class=\"govuk-accordion__section-header\">\n <h2 class=\"govuk-accordion__section-heading\">\n <span class=\"govuk-accordion__section-button\" id=\"with-translations-heading-2\">\n Section B\n </span>\n </h2>\n </div>\n <div id=\"with-translations-content-2\" class=\"govuk-accordion__section-content\">\n <ul class=\"govuk-list govuk-list--bullet\">\n <li>Example item 2</li>\n </ul>\n </div>\n </div>\n</div>"
220
227
  },
221
228
  {
@@ -237,6 +244,7 @@
237
244
  "hidden": true,
238
245
  "description": "",
239
246
  "previewLayoutModifiers": [],
247
+ "screenshot": false,
240
248
  "html": "<div class=\"govuk-accordion myClass\" data-module=\"govuk-accordion\" id=\"accordion-classes\">\n <div class=\"govuk-accordion__section\">\n <div class=\"govuk-accordion__section-header\">\n <h2 class=\"govuk-accordion__section-heading\">\n <span class=\"govuk-accordion__section-button\" id=\"accordion-classes-heading-1\">\n Section A\n </span>\n </h2>\n </div>\n <div id=\"accordion-classes-content-1\" class=\"govuk-accordion__section-content\">\n <p class=\"govuk-body\">\n Some content\n </p>\n </div>\n </div>\n</div>"
241
249
  },
242
250
  {
@@ -260,6 +268,7 @@
260
268
  "hidden": true,
261
269
  "description": "",
262
270
  "previewLayoutModifiers": [],
271
+ "screenshot": false,
263
272
  "html": "<div class=\"govuk-accordion\" data-module=\"govuk-accordion\" id=\"accordion-attributes\" data-attribute=\"value\">\n <div class=\"govuk-accordion__section\">\n <div class=\"govuk-accordion__section-header\">\n <h2 class=\"govuk-accordion__section-heading\">\n <span class=\"govuk-accordion__section-button\" id=\"accordion-attributes-heading-1\">\n Section A\n </span>\n </h2>\n </div>\n <div id=\"accordion-attributes-content-1\" class=\"govuk-accordion__section-content\">\n <p class=\"govuk-body\">\n Some content\n </p>\n </div>\n </div>\n</div>"
264
273
  },
265
274
  {
@@ -281,6 +290,7 @@
281
290
  "hidden": true,
282
291
  "description": "",
283
292
  "previewLayoutModifiers": [],
293
+ "screenshot": false,
284
294
  "html": "<div class=\"govuk-accordion\" data-module=\"govuk-accordion\" id=\"accordion-heading\">\n <div class=\"govuk-accordion__section\">\n <div class=\"govuk-accordion__section-header\">\n <h3 class=\"govuk-accordion__section-heading\">\n <span class=\"govuk-accordion__section-button\" id=\"accordion-heading-heading-1\">\n Section A\n </span>\n </h3>\n </div>\n <div id=\"accordion-heading-content-1\" class=\"govuk-accordion__section-content\">\n <p class=\"govuk-body\">\n Some content\n </p>\n </div>\n </div>\n</div>"
285
295
  },
286
296
  {
@@ -301,12 +311,13 @@
301
311
  "hidden": true,
302
312
  "description": "",
303
313
  "previewLayoutModifiers": [],
314
+ "screenshot": false,
304
315
  "html": "<div class=\"govuk-accordion\" data-module=\"govuk-accordion\" id=\"accordion-heading-html\">\n <div class=\"govuk-accordion__section\">\n <div class=\"govuk-accordion__section-header\">\n <h2 class=\"govuk-accordion__section-heading\">\n <span class=\"govuk-accordion__section-button\" id=\"accordion-heading-html-heading-1\">\n <span class=\"myClass\">Section A</span>\n </span>\n </h2>\n </div>\n <div id=\"accordion-heading-html-content-1\" class=\"govuk-accordion__section-content\">\n <p class=\"govuk-body\">\n Some content\n </p>\n </div>\n </div>\n</div>"
305
316
  },
306
317
  {
307
- "name": "with falsey values",
318
+ "name": "with falsy values",
308
319
  "options": {
309
- "id": "accordion-falsey",
320
+ "id": "accordion-falsy",
310
321
  "items": [
311
322
  {
312
323
  "heading": {
@@ -332,7 +343,8 @@
332
343
  "hidden": true,
333
344
  "description": "",
334
345
  "previewLayoutModifiers": [],
335
- "html": "<div class=\"govuk-accordion\" data-module=\"govuk-accordion\" id=\"accordion-falsey\">\n <div class=\"govuk-accordion__section\">\n <div class=\"govuk-accordion__section-header\">\n <h2 class=\"govuk-accordion__section-heading\">\n <span class=\"govuk-accordion__section-button\" id=\"accordion-falsey-heading-1\">\n Section A\n </span>\n </h2>\n </div>\n <div id=\"accordion-falsey-content-1\" class=\"govuk-accordion__section-content\">\n <p class=\"govuk-body\">\n Some content\n </p>\n </div>\n </div>\n <div class=\"govuk-accordion__section\">\n <div class=\"govuk-accordion__section-header\">\n <h2 class=\"govuk-accordion__section-heading\">\n <span class=\"govuk-accordion__section-button\" id=\"accordion-falsey-heading-5\">\n Section B\n </span>\n </h2>\n </div>\n <div id=\"accordion-falsey-content-5\" class=\"govuk-accordion__section-content\">\n <p class=\"govuk-body\">\n Some content\n </p>\n </div>\n </div>\n</div>"
346
+ "screenshot": false,
347
+ "html": "<div class=\"govuk-accordion\" data-module=\"govuk-accordion\" id=\"accordion-falsy\">\n <div class=\"govuk-accordion__section\">\n <div class=\"govuk-accordion__section-header\">\n <h2 class=\"govuk-accordion__section-heading\">\n <span class=\"govuk-accordion__section-button\" id=\"accordion-falsy-heading-1\">\n Section A\n </span>\n </h2>\n </div>\n <div id=\"accordion-falsy-content-1\" class=\"govuk-accordion__section-content\">\n <p class=\"govuk-body\">\n Some content\n </p>\n </div>\n </div>\n <div class=\"govuk-accordion__section\">\n <div class=\"govuk-accordion__section-header\">\n <h2 class=\"govuk-accordion__section-heading\">\n <span class=\"govuk-accordion__section-button\" id=\"accordion-falsy-heading-5\">\n Section B\n </span>\n </h2>\n </div>\n <div id=\"accordion-falsy-content-5\" class=\"govuk-accordion__section-content\">\n <p class=\"govuk-body\">\n Some content\n </p>\n </div>\n </div>\n</div>"
336
348
  },
337
349
  {
338
350
  "name": "with remember expanded off",
@@ -353,6 +365,7 @@
353
365
  "hidden": true,
354
366
  "description": "",
355
367
  "previewLayoutModifiers": [],
368
+ "screenshot": false,
356
369
  "html": "<div class=\"govuk-accordion\" data-module=\"govuk-accordion\" id=\"accordion-remember-expanded-off\" data-remember-expanded=\"false\">\n <div class=\"govuk-accordion__section\">\n <div class=\"govuk-accordion__section-header\">\n <h2 class=\"govuk-accordion__section-heading\">\n <span class=\"govuk-accordion__section-button\" id=\"accordion-remember-expanded-off-heading-1\">\n Section A\n </span>\n </h2>\n </div>\n <div id=\"accordion-remember-expanded-off-content-1\" class=\"govuk-accordion__section-content\">\n <p class=\"govuk-body\">\n Some content\n </p>\n </div>\n </div>\n</div>"
357
370
  }
358
371
  ]
@@ -1,3 +1,4 @@
1
+ {% from "../../macros/attributes.njk" import govukAttributes %}
1
2
  {% from "../../macros/i18n.njk" import govukI18nAttributes %}
2
3
 
3
4
  {%- macro _accordionItem(params, item, index) %}
@@ -59,7 +60,7 @@
59
60
  }) -}}
60
61
 
61
62
  {%- if params.rememberExpanded !== undefined %} data-remember-expanded="{{ params.rememberExpanded | escape }}"{% endif %}
62
- {%- for attribute, value in params.attributes %} {{ attribute }}="{{ value }}"{% endfor %}>
63
+ {{- govukAttributes(params.attributes) }}>
63
64
  {% for item in params.items %}
64
65
  {% if item %}{{ _accordionItem(params, item, loop.index) }}{% endif %}
65
66
  {% endfor %}