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
@@ -4,44 +4,75 @@
4
4
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.GOVUKFrontend = {}));
5
5
  })(this, (function (exports) { 'use strict';
6
6
 
7
+ function normaliseString(value, property) {
8
+ const trimmedValue = value ? value.trim() : '';
9
+ let output;
10
+ let outputType = property == null ? void 0 : property.type;
11
+ if (!outputType) {
12
+ if (['true', 'false'].includes(trimmedValue)) {
13
+ outputType = 'boolean';
14
+ }
15
+ if (trimmedValue.length > 0 && isFinite(Number(trimmedValue))) {
16
+ outputType = 'number';
17
+ }
18
+ }
19
+ switch (outputType) {
20
+ case 'boolean':
21
+ output = trimmedValue === 'true';
22
+ break;
23
+ case 'number':
24
+ output = Number(trimmedValue);
25
+ break;
26
+ default:
27
+ output = value;
28
+ }
29
+ return output;
30
+ }
31
+
32
+ /**
33
+ * @typedef {import('./index.mjs').SchemaProperty} SchemaProperty
34
+ */
35
+
7
36
  function mergeConfigs(...configObjects) {
8
- function flattenObject(configObject) {
9
- const flattenedObject = {};
10
- function flattenLoop(obj, prefix) {
11
- for (const [key, value] of Object.entries(obj)) {
12
- const prefixedKey = prefix ? `${prefix}.${key}` : key;
13
- if (value && typeof value === 'object') {
14
- flattenLoop(value, prefixedKey);
15
- } else {
16
- flattenedObject[prefixedKey] = value;
17
- }
18
- }
19
- }
20
- flattenLoop(configObject);
21
- return flattenedObject;
22
- }
23
37
  const formattedConfigObject = {};
24
38
  for (const configObject of configObjects) {
25
- const obj = flattenObject(configObject);
26
- for (const [key, value] of Object.entries(obj)) {
27
- formattedConfigObject[key] = value;
39
+ for (const key of Object.keys(configObject)) {
40
+ const option = formattedConfigObject[key];
41
+ const override = configObject[key];
42
+ if (isObject(option) && isObject(override)) {
43
+ formattedConfigObject[key] = mergeConfigs(option, override);
44
+ } else {
45
+ formattedConfigObject[key] = override;
46
+ }
28
47
  }
29
48
  }
30
49
  return formattedConfigObject;
31
50
  }
32
- function extractConfigByNamespace(configObject, namespace) {
33
- const newObject = {};
34
- for (const [key, value] of Object.entries(configObject)) {
51
+ function extractConfigByNamespace(Component, dataset, namespace) {
52
+ const property = Component.schema.properties[namespace];
53
+ if ((property == null ? void 0 : property.type) !== 'object') {
54
+ return;
55
+ }
56
+ const newObject = {
57
+ [namespace]: ({})
58
+ };
59
+ for (const [key, value] of Object.entries(dataset)) {
60
+ let current = newObject;
35
61
  const keyParts = key.split('.');
36
- if (keyParts[0] === namespace) {
37
- if (keyParts.length > 1) {
38
- keyParts.shift();
62
+ for (const [index, name] of keyParts.entries()) {
63
+ if (typeof current === 'object') {
64
+ if (index < keyParts.length - 1) {
65
+ if (!isObject(current[name])) {
66
+ current[name] = {};
67
+ }
68
+ current = current[name];
69
+ } else if (key !== namespace) {
70
+ current[name] = normaliseString(value);
71
+ }
39
72
  }
40
- const newKey = keyParts.join('.');
41
- newObject[newKey] = value;
42
73
  }
43
74
  }
44
- return newObject;
75
+ return newObject[namespace];
45
76
  }
46
77
  function isSupported($scope = document.body) {
47
78
  if (!$scope) {
@@ -49,14 +80,28 @@
49
80
  }
50
81
  return $scope.classList.contains('govuk-frontend-supported');
51
82
  }
83
+ function isArray(option) {
84
+ return Array.isArray(option);
85
+ }
86
+ function isObject(option) {
87
+ return !!option && typeof option === 'object' && !isArray(option);
88
+ }
52
89
 
53
90
  /**
54
91
  * Schema for component config
55
92
  *
56
93
  * @typedef {object} Schema
94
+ * @property {{ [field: string]: SchemaProperty | undefined }} properties - Schema properties
57
95
  * @property {SchemaCondition[]} [anyOf] - List of schema conditions
58
96
  */
59
97
 
98
+ /**
99
+ * Schema property for component config
100
+ *
101
+ * @typedef {object} SchemaProperty
102
+ * @property {'string' | 'boolean' | 'number' | 'object'} type - Property type
103
+ */
104
+
60
105
  /**
61
106
  * Schema condition for component config
62
107
  *
@@ -65,26 +110,15 @@
65
110
  * @property {string} errorMessage - Error message when required config fields not provided
66
111
  */
67
112
 
68
- function normaliseString(value) {
69
- if (typeof value !== 'string') {
70
- return value;
71
- }
72
- const trimmedValue = value.trim();
73
- if (trimmedValue === 'true') {
74
- return true;
75
- }
76
- if (trimmedValue === 'false') {
77
- return false;
78
- }
79
- if (trimmedValue.length > 0 && isFinite(Number(trimmedValue))) {
80
- return Number(trimmedValue);
81
- }
82
- return value;
83
- }
84
- function normaliseDataset(dataset) {
113
+ function normaliseDataset(Component, dataset) {
85
114
  const out = {};
86
- for (const [key, value] of Object.entries(dataset)) {
87
- out[key] = normaliseString(value);
115
+ for (const [field, property] of Object.entries(Component.schema.properties)) {
116
+ if (field in dataset) {
117
+ out[field] = normaliseString(dataset[field], property);
118
+ }
119
+ if ((property == null ? void 0 : property.type) === 'object') {
120
+ out[field] = extractConfigByNamespace(Component, dataset, field);
121
+ }
88
122
  }
89
123
  return out;
90
124
  }
@@ -148,18 +182,21 @@
148
182
  if (!lookupKey) {
149
183
  throw new Error('i18n: lookup key missing');
150
184
  }
151
- if (typeof (options == null ? void 0 : options.count) === 'number') {
152
- lookupKey = `${lookupKey}.${this.getPluralSuffix(lookupKey, options.count)}`;
185
+ let translation = this.translations[lookupKey];
186
+ if (typeof (options == null ? void 0 : options.count) === 'number' && typeof translation === 'object') {
187
+ const translationPluralForm = translation[this.getPluralSuffix(lookupKey, options.count)];
188
+ if (translationPluralForm) {
189
+ translation = translationPluralForm;
190
+ }
153
191
  }
154
- const translationString = this.translations[lookupKey];
155
- if (typeof translationString === 'string') {
156
- if (translationString.match(/%{(.\S+)}/)) {
192
+ if (typeof translation === 'string') {
193
+ if (translation.match(/%{(.\S+)}/)) {
157
194
  if (!options) {
158
195
  throw new Error('i18n: cannot replace placeholders in string if no option data provided');
159
196
  }
160
- return this.replacePlaceholders(translationString, options);
197
+ return this.replacePlaceholders(translation, options);
161
198
  }
162
- return translationString;
199
+ return translation;
163
200
  }
164
201
  return lookupKey;
165
202
  }
@@ -187,12 +224,15 @@
187
224
  if (!isFinite(count)) {
188
225
  return 'other';
189
226
  }
227
+ const translation = this.translations[lookupKey];
190
228
  const preferredForm = this.hasIntlPluralRulesSupport() ? new Intl.PluralRules(this.locale).select(count) : this.selectPluralFormUsingFallbackRules(count);
191
- if (`${lookupKey}.${preferredForm}` in this.translations) {
192
- return preferredForm;
193
- } else if (`${lookupKey}.other` in this.translations) {
194
- console.warn(`i18n: Missing plural form ".${preferredForm}" for "${this.locale}" locale. Falling back to ".other".`);
195
- return 'other';
229
+ if (typeof translation === 'object') {
230
+ if (preferredForm in translation) {
231
+ return preferredForm;
232
+ } else if ('other' in translation) {
233
+ console.warn(`i18n: Missing plural form ".${preferredForm}" for "${this.locale}" locale. Falling back to ".other".`);
234
+ return 'other';
235
+ }
196
236
  }
197
237
  throw new Error(`i18n: Plural form ".other" is required for "${this.locale}" locale`);
198
238
  }
@@ -367,7 +407,6 @@
367
407
  this.sectionSummaryFocusClass = 'govuk-accordion__section-summary-focus';
368
408
  this.sectionContentClass = 'govuk-accordion__section-content';
369
409
  this.$sections = void 0;
370
- this.browserSupportsSessionStorage = false;
371
410
  this.$showAllButton = null;
372
411
  this.$showAllIcon = null;
373
412
  this.$showAllText = null;
@@ -379,8 +418,8 @@
379
418
  });
380
419
  }
381
420
  this.$module = $module;
382
- this.config = mergeConfigs(Accordion.defaults, config, normaliseDataset($module.dataset));
383
- this.i18n = new I18n(extractConfigByNamespace(this.config, 'i18n'));
421
+ this.config = mergeConfigs(Accordion.defaults, config, normaliseDataset(Accordion, $module.dataset));
422
+ this.i18n = new I18n(this.config.i18n);
384
423
  const $sections = this.$module.querySelectorAll(`.${this.sectionClass}`);
385
424
  if (!$sections.length) {
386
425
  throw new ElementError({
@@ -389,11 +428,9 @@
389
428
  });
390
429
  }
391
430
  this.$sections = $sections;
392
- this.browserSupportsSessionStorage = helper.checkForSessionStorage();
393
431
  this.initControls();
394
432
  this.initSectionHeaders();
395
- const areAllSectionsOpen = this.checkIfAllSectionsOpen();
396
- this.updateShowAllButton(areAllSectionsOpen);
433
+ this.updateShowAllButton(this.areAllSectionsOpen());
397
434
  }
398
435
  initControls() {
399
436
  this.$showAllButton = document.createElement('button');
@@ -450,8 +487,8 @@
450
487
  $button.setAttribute('type', 'button');
451
488
  $button.setAttribute('aria-controls', `${this.$module.id}-content-${index + 1}`);
452
489
  for (const attr of Array.from($span.attributes)) {
453
- if (attr.nodeName !== 'id') {
454
- $button.setAttribute(attr.nodeName, `${attr.nodeValue}`);
490
+ if (attr.name !== 'id') {
491
+ $button.setAttribute(attr.name, attr.value);
455
492
  }
456
493
  }
457
494
  const $headingText = document.createElement('span');
@@ -460,7 +497,7 @@
460
497
  const $headingTextFocus = document.createElement('span');
461
498
  $headingTextFocus.classList.add(this.sectionHeadingTextFocusClass);
462
499
  $headingText.appendChild($headingTextFocus);
463
- $headingTextFocus.innerHTML = $span.innerHTML;
500
+ Array.from($span.childNodes).forEach($child => $headingTextFocus.appendChild($child));
464
501
  const $showHideToggle = document.createElement('span');
465
502
  $showHideToggle.classList.add(this.sectionShowHideToggleClass);
466
503
  $showHideToggle.setAttribute('data-nosnippet', '');
@@ -475,16 +512,16 @@
475
512
  $showHideToggleFocus.appendChild($showHideText);
476
513
  $button.appendChild($headingText);
477
514
  $button.appendChild(this.getButtonPunctuationEl());
478
- if ($summary != null && $summary.parentNode) {
515
+ if ($summary) {
479
516
  const $summarySpan = document.createElement('span');
480
517
  const $summarySpanFocus = document.createElement('span');
481
518
  $summarySpanFocus.classList.add(this.sectionSummaryFocusClass);
482
519
  $summarySpan.appendChild($summarySpanFocus);
483
520
  for (const attr of Array.from($summary.attributes)) {
484
- $summarySpan.setAttribute(attr.nodeName, `${attr.nodeValue}`);
521
+ $summarySpan.setAttribute(attr.name, attr.value);
485
522
  }
486
- $summarySpanFocus.innerHTML = $summary.innerHTML;
487
- $summary.parentNode.replaceChild($summarySpan, $summary);
523
+ Array.from($summary.childNodes).forEach($child => $summarySpanFocus.appendChild($child));
524
+ $summary.remove();
488
525
  $button.appendChild($summarySpan);
489
526
  $button.appendChild(this.getButtonPunctuationEl());
490
527
  }
@@ -503,15 +540,15 @@
503
540
  }
504
541
  }
505
542
  onSectionToggle($section) {
506
- const expanded = this.isExpanded($section);
507
- this.setExpanded(!expanded, $section);
508
- this.storeState($section);
543
+ const nowExpanded = !this.isExpanded($section);
544
+ this.setExpanded(nowExpanded, $section);
545
+ this.storeState($section, nowExpanded);
509
546
  }
510
547
  onShowOrHideAllToggle() {
511
- const nowExpanded = !this.checkIfAllSectionsOpen();
548
+ const nowExpanded = !this.areAllSectionsOpen();
512
549
  this.$sections.forEach($section => {
513
550
  this.setExpanded(nowExpanded, $section);
514
- this.storeState($section);
551
+ this.storeState($section, nowExpanded);
515
552
  });
516
553
  this.updateShowAllButton(nowExpanded);
517
554
  }
@@ -553,17 +590,13 @@
553
590
  $section.classList.remove(this.sectionExpandedClass);
554
591
  $showHideIcon.classList.add(this.downChevronIconClass);
555
592
  }
556
- const areAllSectionsOpen = this.checkIfAllSectionsOpen();
557
- this.updateShowAllButton(areAllSectionsOpen);
593
+ this.updateShowAllButton(this.areAllSectionsOpen());
558
594
  }
559
595
  isExpanded($section) {
560
596
  return $section.classList.contains(this.sectionExpandedClass);
561
597
  }
562
- checkIfAllSectionsOpen() {
563
- const sectionsCount = this.$sections.length;
564
- const expandedSectionCount = this.$module.querySelectorAll(`.${this.sectionExpandedClass}`).length;
565
- const areAllSectionsOpen = sectionsCount === expandedSectionCount;
566
- return areAllSectionsOpen;
598
+ areAllSectionsOpen() {
599
+ return Array.from(this.$sections).every($section => this.isExpanded($section));
567
600
  }
568
601
  updateShowAllButton(expanded) {
569
602
  if (!this.$showAllButton || !this.$showAllText || !this.$showAllIcon) {
@@ -573,68 +606,53 @@
573
606
  this.$showAllText.textContent = expanded ? this.i18n.t('hideAllSections') : this.i18n.t('showAllSections');
574
607
  this.$showAllIcon.classList.toggle(this.downChevronIconClass, !expanded);
575
608
  }
576
- storeState($section) {
577
- if (this.browserSupportsSessionStorage && this.config.rememberExpanded) {
578
- const $button = $section.querySelector(`.${this.sectionButtonClass}`);
579
- if ($button) {
580
- const contentId = $button.getAttribute('aria-controls');
581
- const contentState = $button.getAttribute('aria-expanded');
582
- if (contentId && contentState) {
583
- window.sessionStorage.setItem(contentId, contentState);
584
- }
585
- }
609
+
610
+ /**
611
+ * Get the identifier for a section
612
+ *
613
+ * We need a unique way of identifying each content in the Accordion.
614
+ * Since an `#id` should be unique and an `id` is required for `aria-`
615
+ * attributes `id` can be safely used.
616
+ *
617
+ * @param {Element} $section - Section element
618
+ * @returns {string | undefined | null} Identifier for section
619
+ */
620
+ getIdentifier($section) {
621
+ const $button = $section.querySelector(`.${this.sectionButtonClass}`);
622
+ return $button == null ? void 0 : $button.getAttribute('aria-controls');
623
+ }
624
+ storeState($section, isExpanded) {
625
+ if (!this.config.rememberExpanded) {
626
+ return;
627
+ }
628
+ const id = this.getIdentifier($section);
629
+ if (id) {
630
+ try {
631
+ window.sessionStorage.setItem(id, isExpanded.toString());
632
+ } catch (exception) {}
586
633
  }
587
634
  }
588
635
  setInitialState($section) {
589
- if (this.browserSupportsSessionStorage && this.config.rememberExpanded) {
590
- const $button = $section.querySelector(`.${this.sectionButtonClass}`);
591
- if ($button) {
592
- const contentId = $button.getAttribute('aria-controls');
593
- const contentState = contentId ? window.sessionStorage.getItem(contentId) : null;
594
- if (contentState !== null) {
595
- this.setExpanded(contentState === 'true', $section);
636
+ if (!this.config.rememberExpanded) {
637
+ return;
638
+ }
639
+ const id = this.getIdentifier($section);
640
+ if (id) {
641
+ try {
642
+ const state = window.sessionStorage.getItem(id);
643
+ if (state !== null) {
644
+ this.setExpanded(state === 'true', $section);
596
645
  }
597
- }
646
+ } catch (exception) {}
598
647
  }
599
648
  }
600
649
  getButtonPunctuationEl() {
601
650
  const $punctuationEl = document.createElement('span');
602
651
  $punctuationEl.classList.add('govuk-visually-hidden', this.sectionHeadingDividerClass);
603
- $punctuationEl.innerHTML = ', ';
652
+ $punctuationEl.textContent = ', ';
604
653
  return $punctuationEl;
605
654
  }
606
655
  }
607
- Accordion.moduleName = 'govuk-accordion';
608
- Accordion.defaults = Object.freeze({
609
- i18n: {
610
- hideAllSections: 'Hide all sections',
611
- hideSection: 'Hide',
612
- hideSectionAriaLabel: 'Hide this section',
613
- showAllSections: 'Show all sections',
614
- showSection: 'Show',
615
- showSectionAriaLabel: 'Show this section'
616
- },
617
- rememberExpanded: true
618
- });
619
- const helper = {
620
- /**
621
- * Check for `window.sessionStorage`, and that it actually works.
622
- *
623
- * @returns {boolean} True if session storage is available
624
- */
625
- checkForSessionStorage: function () {
626
- const testString = 'this is the test string';
627
- let result;
628
- try {
629
- window.sessionStorage.setItem(testString, testString);
630
- result = window.sessionStorage.getItem(testString) === testString.toString();
631
- window.sessionStorage.removeItem(testString);
632
- return result;
633
- } catch (exception) {
634
- return false;
635
- }
636
- }
637
- };
638
656
 
639
657
  /**
640
658
  * Accordion config
@@ -669,6 +687,32 @@
669
687
  * 'Show' button's accessible name when a section is expanded.
670
688
  */
671
689
 
690
+ /**
691
+ * @typedef {import('../../common/index.mjs').Schema} Schema
692
+ */
693
+ Accordion.moduleName = 'govuk-accordion';
694
+ Accordion.defaults = Object.freeze({
695
+ i18n: {
696
+ hideAllSections: 'Hide all sections',
697
+ hideSection: 'Hide',
698
+ hideSectionAriaLabel: 'Hide this section',
699
+ showAllSections: 'Show all sections',
700
+ showSection: 'Show',
701
+ showSectionAriaLabel: 'Show this section'
702
+ },
703
+ rememberExpanded: true
704
+ });
705
+ Accordion.schema = Object.freeze({
706
+ properties: {
707
+ i18n: {
708
+ type: 'object'
709
+ },
710
+ rememberExpanded: {
711
+ type: 'boolean'
712
+ }
713
+ }
714
+ });
715
+
672
716
  exports.Accordion = Accordion;
673
717
 
674
718
  }));