govuk_publishing_components 60.0.2 → 60.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (386) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -0
  3. data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-page-views.js +11 -1
  4. data/app/assets/javascripts/govuk_publishing_components/components/feedback.js +0 -14
  5. data/app/assets/javascripts/govuk_publishing_components/vendor/lux/lux-reporter.js +570 -595
  6. data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_footnotes.scss +5 -0
  7. data/app/views/govuk_publishing_components/audit/_applications.html.erb +13 -13
  8. data/app/views/govuk_publishing_components/audit/_component_contents.html.erb +2 -2
  9. data/app/views/govuk_publishing_components/audit/_components.html.erb +17 -19
  10. data/app/views/govuk_publishing_components/audit/_items_in_applications.html.erb +3 -3
  11. data/app/views/govuk_publishing_components/audit/show.html.erb +5 -6
  12. data/app/views/govuk_publishing_components/component_guide/component_doc/_call.html.erb +2 -2
  13. data/app/views/govuk_publishing_components/component_guide/example.html.erb +4 -5
  14. data/app/views/govuk_publishing_components/component_guide/index.html.erb +9 -10
  15. data/app/views/govuk_publishing_components/component_guide/preview.html.erb +1 -1
  16. data/app/views/govuk_publishing_components/component_guide/show.html.erb +9 -10
  17. data/app/views/govuk_publishing_components/components/_accordion.html.erb +5 -5
  18. data/app/views/govuk_publishing_components/components/_action_link.html.erb +2 -2
  19. data/app/views/govuk_publishing_components/components/_add_another.html.erb +3 -3
  20. data/app/views/govuk_publishing_components/components/_attachment.html.erb +4 -4
  21. data/app/views/govuk_publishing_components/components/_back_link.html.erb +1 -1
  22. data/app/views/govuk_publishing_components/components/_back_to_top_link.html.erb +1 -1
  23. data/app/views/govuk_publishing_components/components/_big_number.html.erb +1 -1
  24. data/app/views/govuk_publishing_components/components/_cards.html.erb +4 -4
  25. data/app/views/govuk_publishing_components/components/_character_count.html.erb +1 -1
  26. data/app/views/govuk_publishing_components/components/_checkboxes.html.erb +3 -3
  27. data/app/views/govuk_publishing_components/components/_contents_list.html.erb +6 -9
  28. data/app/views/govuk_publishing_components/components/_contents_list_with_body.html.erb +2 -2
  29. data/app/views/govuk_publishing_components/components/_contextual_breadcrumbs.html.erb +2 -2
  30. data/app/views/govuk_publishing_components/components/_contextual_footer.html.erb +1 -1
  31. data/app/views/govuk_publishing_components/components/_contextual_sidebar.html.erb +6 -6
  32. data/app/views/govuk_publishing_components/components/_cookie_banner.html.erb +6 -6
  33. data/app/views/govuk_publishing_components/components/_date_input.html.erb +5 -5
  34. data/app/views/govuk_publishing_components/components/_details.html.erb +1 -1
  35. data/app/views/govuk_publishing_components/components/_devolved_nations.html.erb +1 -1
  36. data/app/views/govuk_publishing_components/components/_document_list.html.erb +8 -8
  37. data/app/views/govuk_publishing_components/components/_emergency_banner.html.erb +3 -3
  38. data/app/views/govuk_publishing_components/components/_feedback.html.erb +2 -2
  39. data/app/views/govuk_publishing_components/components/_fieldset.html.erb +3 -4
  40. data/app/views/govuk_publishing_components/components/_figure.html.erb +1 -1
  41. data/app/views/govuk_publishing_components/components/_file_upload.html.erb +5 -5
  42. data/app/views/govuk_publishing_components/components/_glance_metric.html.erb +1 -1
  43. data/app/views/govuk_publishing_components/components/_global_banner.html.erb +2 -2
  44. data/app/views/govuk_publishing_components/components/_google_tag_manager_script.html.erb +7 -7
  45. data/app/views/govuk_publishing_components/components/_govspeak_html_publication.html.erb +1 -1
  46. data/app/views/govuk_publishing_components/components/_image_card.html.erb +4 -5
  47. data/app/views/govuk_publishing_components/components/_input.html.erb +14 -14
  48. data/app/views/govuk_publishing_components/components/_intervention.html.erb +4 -6
  49. data/app/views/govuk_publishing_components/components/_label.html.erb +1 -1
  50. data/app/views/govuk_publishing_components/components/_layout_footer.html.erb +6 -9
  51. data/app/views/govuk_publishing_components/components/_layout_for_admin.html.erb +2 -2
  52. data/app/views/govuk_publishing_components/components/_layout_for_public.html.erb +15 -15
  53. data/app/views/govuk_publishing_components/components/_layout_super_navigation_header.html.erb +16 -19
  54. data/app/views/govuk_publishing_components/components/_machine_readable_metadata.html.erb +18 -17
  55. data/app/views/govuk_publishing_components/components/_metadata.html.erb +4 -4
  56. data/app/views/govuk_publishing_components/components/_notice.html.erb +1 -1
  57. data/app/views/govuk_publishing_components/components/_option_select.html.erb +8 -9
  58. data/app/views/govuk_publishing_components/components/_organisation_logo.html.erb +1 -1
  59. data/app/views/govuk_publishing_components/components/_password_input.html.erb +17 -17
  60. data/app/views/govuk_publishing_components/components/_phase_banner.html.erb +2 -3
  61. data/app/views/govuk_publishing_components/components/_previous_and_next_navigation.html.erb +6 -8
  62. data/app/views/govuk_publishing_components/components/_print_link.html.erb +3 -3
  63. data/app/views/govuk_publishing_components/components/_published_dates.html.erb +6 -7
  64. data/app/views/govuk_publishing_components/components/_radio.html.erb +7 -8
  65. data/app/views/govuk_publishing_components/components/_related_navigation.html.erb +4 -6
  66. data/app/views/govuk_publishing_components/components/_reorderable_list.html.erb +7 -7
  67. data/app/views/govuk_publishing_components/components/_search_with_autocomplete.html.erb +2 -2
  68. data/app/views/govuk_publishing_components/components/_secondary_navigation.html.erb +1 -1
  69. data/app/views/govuk_publishing_components/components/_select.html.erb +1 -1
  70. data/app/views/govuk_publishing_components/components/_select_with_search.html.erb +1 -1
  71. data/app/views/govuk_publishing_components/components/_share_links.html.erb +18 -18
  72. data/app/views/govuk_publishing_components/components/_signup_link.html.erb +3 -3
  73. data/app/views/govuk_publishing_components/components/_single_page_notification_button.html.erb +3 -3
  74. data/app/views/govuk_publishing_components/components/_skip_link.html.erb +2 -3
  75. data/app/views/govuk_publishing_components/components/_step_by_step_nav.html.erb +9 -10
  76. data/app/views/govuk_publishing_components/components/_step_by_step_nav_header.html.erb +2 -3
  77. data/app/views/govuk_publishing_components/components/_step_by_step_nav_related.html.erb +5 -9
  78. data/app/views/govuk_publishing_components/components/_subscription_links.html.erb +8 -8
  79. data/app/views/govuk_publishing_components/components/_summary_list.html.erb +1 -1
  80. data/app/views/govuk_publishing_components/components/_table.html.erb +3 -3
  81. data/app/views/govuk_publishing_components/components/_tag.html.erb +1 -1
  82. data/app/views/govuk_publishing_components/components/_textarea.html.erb +4 -4
  83. data/app/views/govuk_publishing_components/components/_translation_nav.html.erb +1 -2
  84. data/app/views/govuk_publishing_components/components/_warning_text.html.erb +2 -2
  85. data/app/views/govuk_publishing_components/components/attachment/_thumbnail_document.html.erb +1 -1
  86. data/app/views/govuk_publishing_components/components/attachment/_thumbnail_external.html.erb +1 -1
  87. data/app/views/govuk_publishing_components/components/attachment/_thumbnail_generic.html.erb +2 -2
  88. data/app/views/govuk_publishing_components/components/attachment/_thumbnail_html.html.erb +1 -1
  89. data/app/views/govuk_publishing_components/components/attachment/_thumbnail_pdf.html.erb +1 -1
  90. data/app/views/govuk_publishing_components/components/attachment/_thumbnail_spreadsheet.html.erb +3 -3
  91. data/app/views/govuk_publishing_components/components/cross_service_header/_one_login_header.html.erb +10 -10
  92. data/app/views/govuk_publishing_components/components/docs/govspeak.yml +7 -3
  93. data/app/views/govuk_publishing_components/components/feedback/_problem_form.html.erb +10 -10
  94. data/app/views/govuk_publishing_components/components/feedback/_yes_no_banner.html.erb +6 -8
  95. data/app/views/govuk_publishing_components/components/govuk_logo/_govuk_logo_crown_only.html.erb +1 -2
  96. data/app/views/govuk_publishing_components/components/layout_for_public/_account-layout.html.erb +2 -2
  97. data/app/views/govuk_publishing_components/components/layout_for_public/_account-navigation.html.erb +2 -2
  98. data/app/views/govuk_publishing_components/components/layout_header/_header_logo.html.erb +1 -1
  99. data/app/views/govuk_publishing_components/components/layout_header/_navigation_items.html.erb +2 -3
  100. data/app/views/govuk_publishing_components/components/metadata/_sentence.html.erb +1 -1
  101. data/app/views/govuk_publishing_components/components/related_navigation/_section.html.erb +4 -4
  102. data/app/views/govuk_publishing_components/components/search/_search_icon.html.erb +2 -3
  103. data/app/views/layouts/govuk_publishing_components/application.html.erb +3 -3
  104. data/lib/govuk_publishing_components/presenters/component_wrapper_helper.rb +1 -1
  105. data/lib/govuk_publishing_components/presenters/heading_helper.rb +3 -3
  106. data/lib/govuk_publishing_components/presenters/meta_tags.rb +1 -0
  107. data/lib/govuk_publishing_components/version.rb +1 -1
  108. data/node_modules/govuk-frontend/dist/govuk/all.bundle.js +99 -73
  109. data/node_modules/govuk-frontend/dist/govuk/all.bundle.js.map +1 -1
  110. data/node_modules/govuk-frontend/dist/govuk/all.bundle.mjs +99 -73
  111. data/node_modules/govuk-frontend/dist/govuk/all.bundle.mjs.map +1 -1
  112. data/node_modules/govuk-frontend/dist/govuk/common/configuration.mjs +29 -2
  113. data/node_modules/govuk-frontend/dist/govuk/common/configuration.mjs.map +1 -1
  114. data/node_modules/govuk-frontend/dist/govuk/common/govuk-frontend-version.mjs +1 -1
  115. data/node_modules/govuk-frontend/dist/govuk/common/index.mjs +5 -11
  116. data/node_modules/govuk-frontend/dist/govuk/common/index.mjs.map +1 -1
  117. data/node_modules/govuk-frontend/dist/govuk/component.mjs.map +1 -1
  118. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.bundle.js +13 -11
  119. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.bundle.js.map +1 -1
  120. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.bundle.mjs +13 -11
  121. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.bundle.mjs.map +1 -1
  122. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.mjs +4 -4
  123. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.mjs.map +1 -1
  124. data/node_modules/govuk-frontend/dist/govuk/components/accordion/fixtures.json +102 -97
  125. data/node_modules/govuk-frontend/dist/govuk/components/back-link/fixtures.json +21 -32
  126. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/fixtures.json +25 -45
  127. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/template-default.html +6 -0
  128. data/node_modules/govuk-frontend/dist/govuk/components/button/button.bundle.js +7 -5
  129. data/node_modules/govuk-frontend/dist/govuk/components/button/button.bundle.js.map +1 -1
  130. data/node_modules/govuk-frontend/dist/govuk/components/button/button.bundle.mjs +7 -5
  131. data/node_modules/govuk-frontend/dist/govuk/components/button/button.bundle.mjs.map +1 -1
  132. data/node_modules/govuk-frontend/dist/govuk/components/button/button.mjs.map +1 -1
  133. data/node_modules/govuk-frontend/dist/govuk/components/button/fixtures.json +66 -210
  134. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.bundle.js +10 -8
  135. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.bundle.js.map +1 -1
  136. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.bundle.mjs +10 -8
  137. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.bundle.mjs.map +1 -1
  138. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.mjs +1 -1
  139. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.mjs.map +1 -1
  140. data/node_modules/govuk-frontend/dist/govuk/components/character-count/fixtures.json +72 -86
  141. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.bundle.js +10 -5
  142. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.bundle.js.map +1 -1
  143. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.bundle.mjs +10 -5
  144. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.bundle.mjs.map +1 -1
  145. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.mjs.map +1 -1
  146. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/fixtures.json +305 -464
  147. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-default.html +24 -19
  148. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-divider-and-none.html +2 -4
  149. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-divider-none-and-conditional-items.html +2 -4
  150. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-error-message.html +12 -3
  151. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/{template-with-fieldset-and-error-message.html → template-with-hint.html} +5 -5
  152. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-hints-on-items.html +2 -4
  153. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-pre-checked-values.html +36 -27
  154. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-very-long-option-text.html +2 -5
  155. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/fixtures.json +115 -79
  156. data/node_modules/govuk-frontend/dist/govuk/components/date-input/fixtures.json +147 -159
  157. data/node_modules/govuk-frontend/dist/govuk/components/date-input/template-default.html +30 -22
  158. data/node_modules/govuk-frontend/dist/govuk/components/details/fixtures.json +22 -22
  159. data/node_modules/govuk-frontend/dist/govuk/components/error-message/fixtures.json +10 -10
  160. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.bundle.js +8 -12
  161. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.bundle.js.map +1 -1
  162. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.bundle.mjs +8 -12
  163. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.bundle.mjs.map +1 -1
  164. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.mjs +2 -2
  165. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.mjs.map +1 -1
  166. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/fixtures.json +21 -21
  167. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.bundle.js +9 -7
  168. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.bundle.js.map +1 -1
  169. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.bundle.mjs +9 -7
  170. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.bundle.mjs.map +1 -1
  171. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.mjs.map +1 -1
  172. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/fixtures.json +19 -19
  173. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/fixtures.json +19 -19
  174. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/file-upload.bundle.js +10 -8
  175. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/file-upload.bundle.js.map +1 -1
  176. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/file-upload.bundle.mjs +10 -8
  177. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/file-upload.bundle.mjs.map +1 -1
  178. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/file-upload.mjs +1 -1
  179. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/file-upload.mjs.map +1 -1
  180. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/fixtures.json +99 -150
  181. data/node_modules/govuk-frontend/dist/govuk/components/footer/fixtures.json +53 -64
  182. data/node_modules/govuk-frontend/dist/govuk/components/header/_index.scss +10 -4
  183. data/node_modules/govuk-frontend/dist/govuk/components/header/_index.scss.map +1 -1
  184. data/node_modules/govuk-frontend/dist/govuk/components/header/fixtures.json +155 -103
  185. data/node_modules/govuk-frontend/dist/govuk/components/header/header.bundle.js +12 -6
  186. data/node_modules/govuk-frontend/dist/govuk/components/header/header.bundle.js.map +1 -1
  187. data/node_modules/govuk-frontend/dist/govuk/components/header/header.bundle.mjs +12 -6
  188. data/node_modules/govuk-frontend/dist/govuk/components/header/header.bundle.mjs.map +1 -1
  189. data/node_modules/govuk-frontend/dist/govuk/components/header/header.mjs +1 -0
  190. data/node_modules/govuk-frontend/dist/govuk/components/header/header.mjs.map +1 -1
  191. data/node_modules/govuk-frontend/dist/govuk/components/header/template-full-width-with-navigation.html +0 -1
  192. data/node_modules/govuk-frontend/dist/govuk/components/header/template-full-width.html +0 -1
  193. data/node_modules/govuk-frontend/dist/govuk/components/header/template-navigation-item-with-html.html +0 -3
  194. data/node_modules/govuk-frontend/dist/govuk/components/header/template-navigation-item-with-text-without-link.html +0 -3
  195. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-full-width-border.html +0 -1
  196. data/node_modules/govuk-frontend/dist/govuk/components/hint/fixtures.json +7 -7
  197. data/node_modules/govuk-frontend/dist/govuk/components/input/fixtures.json +158 -179
  198. data/node_modules/govuk-frontend/dist/govuk/components/inset-text/fixtures.json +7 -7
  199. data/node_modules/govuk-frontend/dist/govuk/components/label/fixtures.json +18 -18
  200. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/fixtures.json +74 -108
  201. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.bundle.js +7 -5
  202. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.bundle.js.map +1 -1
  203. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.bundle.mjs +7 -5
  204. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.bundle.mjs.map +1 -1
  205. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.mjs.map +1 -1
  206. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-with-text-as-html.html +7 -1
  207. data/node_modules/govuk-frontend/dist/govuk/components/pagination/_index.scss +4 -0
  208. data/node_modules/govuk-frontend/dist/govuk/components/pagination/_index.scss.map +1 -1
  209. data/node_modules/govuk-frontend/dist/govuk/components/pagination/fixtures.json +80 -98
  210. data/node_modules/govuk-frontend/dist/govuk/components/pagination/macro-options.json +4 -4
  211. data/node_modules/govuk-frontend/dist/govuk/components/panel/fixtures.json +22 -22
  212. data/node_modules/govuk-frontend/dist/govuk/components/password-input/fixtures.json +53 -48
  213. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.bundle.js +9 -7
  214. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.bundle.js.map +1 -1
  215. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.bundle.mjs +9 -7
  216. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.bundle.mjs.map +1 -1
  217. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.mjs.map +1 -1
  218. data/node_modules/govuk-frontend/dist/govuk/components/phase-banner/fixtures.json +8 -8
  219. data/node_modules/govuk-frontend/dist/govuk/components/radios/fixtures.json +213 -328
  220. data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.bundle.js +10 -5
  221. data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.bundle.js.map +1 -1
  222. data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.bundle.mjs +10 -5
  223. data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.bundle.mjs.map +1 -1
  224. data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.mjs.map +1 -1
  225. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-default.html +18 -16
  226. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-hint.html +24 -0
  227. data/node_modules/govuk-frontend/dist/govuk/components/select/fixtures.json +99 -115
  228. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/_index.scss +72 -5
  229. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/_index.scss.map +1 -1
  230. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/fixtures.json +228 -62
  231. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/macro-options.json +6 -0
  232. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/service-navigation.bundle.js +11 -6
  233. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/service-navigation.bundle.js.map +1 -1
  234. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/service-navigation.bundle.mjs +11 -6
  235. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/service-navigation.bundle.mjs.map +1 -1
  236. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/service-navigation.mjs.map +1 -1
  237. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/{template-with-navigation-with-an-active-item.html → template-inverse.html} +7 -2
  238. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/template-with-a-single-navigation-item-and-collapsenavigationonmobile-set-to-true.html +38 -0
  239. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/template-with-a-single-navigation-item.html +35 -0
  240. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/template-with-collapsenavigationonmobile-set-to-false.html +60 -0
  241. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/template.njk +3 -0
  242. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/_index.scss +1 -2
  243. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/_index.scss.map +1 -1
  244. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/fixtures.json +10 -10
  245. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.bundle.js +12 -19
  246. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.bundle.js.map +1 -1
  247. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.bundle.mjs +12 -19
  248. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.bundle.mjs.map +1 -1
  249. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.mjs +3 -9
  250. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.mjs.map +1 -1
  251. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/fixtures.json +282 -518
  252. data/node_modules/govuk-frontend/dist/govuk/components/table/fixtures.json +75 -75
  253. data/node_modules/govuk-frontend/dist/govuk/components/tabs/fixtures.json +44 -39
  254. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.bundle.js +13 -14
  255. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.bundle.js.map +1 -1
  256. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.bundle.mjs +13 -14
  257. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.bundle.mjs.map +1 -1
  258. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.mjs +3 -3
  259. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.mjs.map +1 -1
  260. data/node_modules/govuk-frontend/dist/govuk/components/tag/fixtures.json +14 -26
  261. data/node_modules/govuk-frontend/dist/govuk/components/task-list/fixtures.json +14 -71
  262. data/node_modules/govuk-frontend/dist/govuk/components/textarea/fixtures.json +81 -81
  263. data/node_modules/govuk-frontend/dist/govuk/components/warning-text/fixtures.json +9 -9
  264. data/node_modules/govuk-frontend/dist/govuk/core/_govuk-frontend-properties.scss +5 -2
  265. data/node_modules/govuk-frontend/dist/govuk/core/_govuk-frontend-properties.scss.map +1 -1
  266. data/node_modules/govuk-frontend/dist/govuk/errors/index.mjs +5 -3
  267. data/node_modules/govuk-frontend/dist/govuk/errors/index.mjs.map +1 -1
  268. data/node_modules/govuk-frontend/dist/govuk/govuk-frontend.min.css +2 -2
  269. data/node_modules/govuk-frontend/dist/govuk/govuk-frontend.min.css.map +1 -1
  270. data/node_modules/govuk-frontend/dist/govuk/govuk-frontend.min.js +1 -1
  271. data/node_modules/govuk-frontend/dist/govuk/govuk-frontend.min.js.map +1 -1
  272. data/node_modules/govuk-frontend/dist/govuk/helpers/_colour.scss +31 -2
  273. data/node_modules/govuk-frontend/dist/govuk/helpers/_colour.scss.map +1 -1
  274. data/node_modules/govuk-frontend/dist/govuk/helpers/_visually-hidden.scss +4 -1
  275. data/node_modules/govuk-frontend/dist/govuk/helpers/_visually-hidden.scss.map +1 -1
  276. data/node_modules/govuk-frontend/dist/govuk/i18n.mjs +4 -2
  277. data/node_modules/govuk-frontend/dist/govuk/i18n.mjs.map +1 -1
  278. data/node_modules/govuk-frontend/dist/govuk/init.mjs +52 -43
  279. data/node_modules/govuk-frontend/dist/govuk/init.mjs.map +1 -1
  280. data/node_modules/govuk-frontend/dist/govuk/macros/logo.njk +2 -2
  281. data/node_modules/govuk-frontend/dist/govuk/settings/_colours-applied.scss +2 -2
  282. data/node_modules/govuk-frontend/dist/govuk/settings/_colours-applied.scss.map +1 -1
  283. data/node_modules/govuk-frontend/dist/govuk/settings/_index.scss +13 -0
  284. data/node_modules/govuk-frontend/dist/govuk/settings/_index.scss.map +1 -1
  285. data/node_modules/govuk-frontend/govuk-prototype-kit.config.json +1 -1
  286. data/node_modules/govuk-frontend/package.json +13 -13
  287. metadata +27 -102
  288. data/node_modules/govuk-frontend/dist/govuk/components/accordion/template-with-focusable-elements-inside.html +0 -26
  289. data/node_modules/govuk-frontend/dist/govuk/components/accordion/template-with-one-section-open.html +0 -30
  290. data/node_modules/govuk-frontend/dist/govuk/components/accordion/template-with-translations.html +0 -30
  291. data/node_modules/govuk-frontend/dist/govuk/components/back-link/template-with-custom-link.html +0 -1
  292. data/node_modules/govuk-frontend/dist/govuk/components/back-link/template-with-custom-text.html +0 -1
  293. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/template-with-multiple-levels.html +0 -16
  294. data/node_modules/govuk-frontend/dist/govuk/components/button/template-input-disabled.html +0 -1
  295. data/node_modules/govuk-frontend/dist/govuk/components/button/template-inverse-disabled.html +0 -3
  296. data/node_modules/govuk-frontend/dist/govuk/components/button/template-inverse-link.html +0 -3
  297. data/node_modules/govuk-frontend/dist/govuk/components/button/template-inverse-start.html +0 -6
  298. data/node_modules/govuk-frontend/dist/govuk/components/button/template-prevent-double-click.html +0 -3
  299. data/node_modules/govuk-frontend/dist/govuk/components/button/template-secondary-disabled.html +0 -3
  300. data/node_modules/govuk-frontend/dist/govuk/components/button/template-secondary-link.html +0 -3
  301. data/node_modules/govuk-frontend/dist/govuk/components/button/template-start-link.html +0 -6
  302. data/node_modules/govuk-frontend/dist/govuk/components/button/template-warning-disabled.html +0 -3
  303. data/node_modules/govuk-frontend/dist/govuk/components/button/template-warning-link.html +0 -3
  304. data/node_modules/govuk-frontend/dist/govuk/components/button/template-with-active-state.html +0 -3
  305. data/node_modules/govuk-frontend/dist/govuk/components/button/template-with-focus-state.html +0 -3
  306. data/node_modules/govuk-frontend/dist/govuk/components/button/template-with-hover-state.html +0 -3
  307. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-with-custom-textarea-description.html +0 -9
  308. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-with-error.html +0 -12
  309. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-with-translations.html +0 -9
  310. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-small-with-disabled.html +0 -27
  311. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-a-medium-legend.html +0 -33
  312. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-conditional-item-checked.html +0 -39
  313. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-conditional-items-with-special-characters.html +0 -39
  314. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-disabled-item.html +0 -29
  315. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-error-message-and-hints-on-items.html +0 -39
  316. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-id-and-name.html +0 -30
  317. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-single-option-and-hint-set-aria-describedby-on-input.html +0 -16
  318. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-single-option-set-aria-describedby-on-input.html +0 -13
  319. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-without-fieldset.html +0 -22
  320. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/template-client-side-implementation.html +0 -60
  321. data/node_modules/govuk-frontend/dist/govuk/components/date-input/template-with-autocomplete-values.html +0 -36
  322. data/node_modules/govuk-frontend/dist/govuk/components/date-input/template-with-default-items.html +0 -36
  323. data/node_modules/govuk-frontend/dist/govuk/components/date-input/template-with-input-attributes.html +0 -36
  324. data/node_modules/govuk-frontend/dist/govuk/components/date-input/template-with-optional-form-group-classes.html +0 -36
  325. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/template-translated.html +0 -5
  326. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/template-allows-direct-media-capture.html +0 -6
  327. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/template-allows-image-files-only.html +0 -6
  328. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/template-allows-multiple-files.html +0 -6
  329. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/template-disabled.html +0 -6
  330. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/template-enhanced-disabled.html +0 -13
  331. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/template-with-optional-form-group-classes.html +0 -6
  332. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-with-meta.html +0 -56
  333. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-custom-menu-button-label.html +0 -59
  334. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-custom-navigation-label.html +0 -59
  335. data/node_modules/govuk-frontend/dist/govuk/components/input/template-disabled.html +0 -6
  336. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-autocapitalize-turned-off.html +0 -6
  337. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-autocomplete-attribute.html +0 -6
  338. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-optional-form-group-classes.html +0 -6
  339. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-pattern-attribute.html +0 -6
  340. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-prefix-and-long-suffix.html +0 -10
  341. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-spellcheck-disabled.html +0 -6
  342. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-spellcheck-enabled.html +0 -6
  343. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-auto-focus-disabled-with-type-as-success.html +0 -12
  344. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-auto-focus-explicitly-enabled-with-type-as-success.html +0 -12
  345. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-custom-tabindex.html +0 -12
  346. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-paragraph-as-html-heading.html +0 -10
  347. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-rolealert-overridden-to-roleregion-with-type-as-success.html +0 -12
  348. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-success-with-custom-html.html +0 -16
  349. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-with-a-list.html +0 -16
  350. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-custom-accessible-labels-on-item-links.html +0 -39
  351. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-custom-navigation-landmark.html +0 -39
  352. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-prev-and-next-only-in-a-different-language.html +0 -22
  353. data/node_modules/govuk-frontend/dist/govuk/components/panel/template-custom-heading-level.html +0 -8
  354. data/node_modules/govuk-frontend/dist/govuk/components/password-input/template-with-new-password-autocomplete.html +0 -11
  355. data/node_modules/govuk-frontend/dist/govuk/components/password-input/template-with-translations.html +0 -11
  356. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-prechecked-using-value.html +0 -16
  357. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-prechecked.html +0 -19
  358. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-small-inline-extreme.html +0 -69
  359. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-small-with-disabled.html +0 -27
  360. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-a-medium-legend.html +0 -24
  361. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-conditional-items-with-special-characters.html +0 -39
  362. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-disabled.html +0 -29
  363. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-idprefix.html +0 -16
  364. data/node_modules/govuk-frontend/dist/govuk/components/select/template-id.html +0 -7
  365. data/node_modules/govuk-frontend/dist/govuk/components/select/template-with-no-items.html +0 -7
  366. data/node_modules/govuk-frontend/dist/govuk/components/select/template-with-optional-form-group-classes.html +0 -10
  367. data/node_modules/govuk-frontend/dist/govuk/components/select/template-with-selected-value.html +0 -10
  368. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-as-a-summary-card-with-a-custom-header-level.html +0 -28
  369. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-check-your-answers.html +0 -98
  370. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-overridden-widths.html +0 -58
  371. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-translated.html +0 -51
  372. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-with-no-first-action.html +0 -58
  373. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-with-some-actions.html +0 -45
  374. data/node_modules/govuk-frontend/dist/govuk/components/table/template-with-small-text-modifier-for-tables-with-a-lot-of-data.html +0 -19
  375. data/node_modules/govuk-frontend/dist/govuk/components/tag/template-blue.html +0 -3
  376. data/node_modules/govuk-frontend/dist/govuk/components/task-list/template-example-with-3-states.html +0 -49
  377. data/node_modules/govuk-frontend/dist/govuk/components/textarea/template-with-autocomplete-attribute.html +0 -6
  378. data/node_modules/govuk-frontend/dist/govuk/components/textarea/template-with-optional-form-group-classes.html +0 -6
  379. data/node_modules/govuk-frontend/dist/govuk/components/textarea/template-with-spellcheck-disabled.html +0 -6
  380. data/node_modules/govuk-frontend/dist/govuk/components/textarea/template-with-spellcheck-enabled.html +0 -6
  381. /data/node_modules/govuk-frontend/dist/govuk/components/date-input/{template-complete-question.html → template-with-items.html} +0 -0
  382. /data/node_modules/govuk-frontend/dist/govuk/components/table/{template-table-with-head-and-caption.html → template-with-head-and-caption.html} +0 -0
  383. /data/node_modules/govuk-frontend/dist/govuk/components/table/{template-table-with-head.html → template-with-head.html} +0 -0
  384. /data/node_modules/govuk-frontend/dist/govuk/components/task-list/{template-example-with-all-possible-colours.html → template-with-all-possible-colours.html} +0 -0
  385. /data/node_modules/govuk-frontend/dist/govuk/components/task-list/{template-example-with-hint-text-and-additional-states.html → template-with-hint-text-and-additional-states.html} +0 -0
  386. /data/node_modules/govuk-frontend/dist/govuk/components/task-list/{template-example-with-very-long-single-word-tags.html → template-with-very-long-single-word-tags.html} +0 -0
@@ -4,16 +4,10 @@
4
4
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.GOVUKFrontend = global.GOVUKFrontend || {}));
5
5
  })(this, (function (exports) { 'use strict';
6
6
 
7
- const version = '5.10.1';
7
+ const version = '5.11.2';
8
8
 
9
- function getFragmentFromUrl(url) {
10
- if (!url.includes('#')) {
11
- return undefined;
12
- }
13
- return url.split('#').pop();
14
- }
15
9
  function getBreakpoint(name) {
16
- const property = `--govuk-frontend-breakpoint-${name}`;
10
+ const property = `--govuk-breakpoint-${name}`;
17
11
  const value = window.getComputedStyle(document.documentElement).getPropertyValue(property);
18
12
  return {
19
13
  property,
@@ -69,6 +63,9 @@
69
63
  function isObject(option) {
70
64
  return !!option && typeof option === 'object' && !isArray(option);
71
65
  }
66
+ function isScope($scope) {
67
+ return !!$scope && ($scope instanceof Element || $scope instanceof Document);
68
+ }
72
69
  function formatErrorMessage(Component, message) {
73
70
  return `${Component.moduleName}: ${message}`;
74
71
  }
@@ -76,9 +73,6 @@
76
73
  * @typedef ComponentWithModuleName
77
74
  * @property {string} moduleName - Name of the component
78
75
  */
79
- /**
80
- * @import { ObjectNested } from './configuration.mjs'
81
- */
82
76
 
83
77
  class GOVUKFrontendError extends Error {
84
78
  constructor(...args) {
@@ -107,7 +101,7 @@
107
101
  class ElementError extends GOVUKFrontendError {
108
102
  constructor(messageOrOptions) {
109
103
  let message = typeof messageOrOptions === 'string' ? messageOrOptions : '';
110
- if (typeof messageOrOptions === 'object') {
104
+ if (isObject(messageOrOptions)) {
111
105
  const {
112
106
  component,
113
107
  identifier,
@@ -116,7 +110,9 @@
116
110
  } = messageOrOptions;
117
111
  message = identifier;
118
112
  message += element ? ` is not of type ${expectedType != null ? expectedType : 'HTMLElement'}` : ' not found';
119
- message = formatErrorMessage(component, message);
113
+ if (component) {
114
+ message = formatErrorMessage(component, message);
115
+ }
120
116
  }
121
117
  super(message);
122
118
  this.name = 'ElementError';
@@ -256,6 +252,30 @@
256
252
  }
257
253
  return out;
258
254
  }
255
+ function normaliseOptions(scopeOrOptions) {
256
+ let $scope = document;
257
+ let onError;
258
+ if (isObject(scopeOrOptions)) {
259
+ const options = scopeOrOptions;
260
+ if (isScope(options.scope) || options.scope === null) {
261
+ $scope = options.scope;
262
+ }
263
+ if (typeof options.onError === 'function') {
264
+ onError = options.onError;
265
+ }
266
+ }
267
+ if (isScope(scopeOrOptions)) {
268
+ $scope = scopeOrOptions;
269
+ } else if (scopeOrOptions === null) {
270
+ $scope = null;
271
+ } else if (typeof scopeOrOptions === 'function') {
272
+ onError = scopeOrOptions;
273
+ }
274
+ return {
275
+ scope: $scope,
276
+ onError
277
+ };
278
+ }
259
279
  function mergeConfigs(...configObjects) {
260
280
  const formattedConfigObject = {};
261
281
  for (const configObject of configObjects) {
@@ -350,6 +370,9 @@
350
370
  * @template {Partial<Record<keyof ConfigurationType, unknown>>} [ConfigurationType=ObjectNested]
351
371
  * @typedef {typeof Component & ChildClass<ConfigurationType>} ChildClassConstructor<ConfigurationType>
352
372
  */
373
+ /**
374
+ * @import { CompatibleClass, Config, CreateAllOptions, OnErrorCallback } from '../init.mjs'
375
+ */
353
376
 
354
377
  class I18n {
355
378
  constructor(translations = {}, config = {}) {
@@ -364,7 +387,7 @@
364
387
  throw new Error('i18n: lookup key missing');
365
388
  }
366
389
  let translation = this.translations[lookupKey];
367
- if (typeof (options == null ? void 0 : options.count) === 'number' && typeof translation === 'object') {
390
+ if (typeof (options == null ? void 0 : options.count) === 'number' && isObject(translation)) {
368
391
  const translationPluralForm = translation[this.getPluralSuffix(lookupKey, options.count)];
369
392
  if (translationPluralForm) {
370
393
  translation = translationPluralForm;
@@ -407,7 +430,7 @@
407
430
  }
408
431
  const translation = this.translations[lookupKey];
409
432
  const preferredForm = this.hasIntlPluralRulesSupport() ? new Intl.PluralRules(this.locale).select(count) : this.selectPluralFormUsingFallbackRules(count);
410
- if (typeof translation === 'object') {
433
+ if (isObject(translation)) {
411
434
  if (preferredForm in translation) {
412
435
  return preferredForm;
413
436
  } else if ('other' in translation) {
@@ -743,11 +766,11 @@
743
766
  const ariaLabelParts = [];
744
767
  const $headingText = $section.querySelector(`.${this.sectionHeadingTextClass}`);
745
768
  if ($headingText) {
746
- ariaLabelParts.push(`${$headingText.textContent}`.trim());
769
+ ariaLabelParts.push($headingText.textContent.trim());
747
770
  }
748
771
  const $summary = $section.querySelector(`.${this.sectionSummaryClass}`);
749
772
  if ($summary) {
750
- ariaLabelParts.push(`${$summary.textContent}`.trim());
773
+ ariaLabelParts.push($summary.textContent.trim());
751
774
  }
752
775
  const ariaLabelMessage = expanded ? this.i18n.t('hideSectionAriaLabel') : this.i18n.t('showSectionAriaLabel');
753
776
  ariaLabelParts.push(ariaLabelMessage);
@@ -800,7 +823,7 @@
800
823
  if (id) {
801
824
  try {
802
825
  window.sessionStorage.setItem(id, isExpanded.toString());
803
- } catch (exception) {}
826
+ } catch (_unused) {}
804
827
  }
805
828
  }
806
829
  setInitialState($section) {
@@ -814,7 +837,7 @@
814
837
  if (state !== null) {
815
838
  this.setExpanded(state === 'true', $section);
816
839
  }
817
- } catch (exception) {}
840
+ } catch (_unused2) {}
818
841
  }
819
842
  }
820
843
  getButtonPunctuationEl() {
@@ -1023,7 +1046,7 @@
1023
1046
  });
1024
1047
  }
1025
1048
  this.$errorMessage = this.$root.querySelector('.govuk-error-message');
1026
- if (`${$textareaDescription.textContent}`.match(/^\s*$/)) {
1049
+ if ($textareaDescription.textContent.match(/^\s*$/)) {
1027
1050
  $textareaDescription.textContent = this.i18n.t('textareaDescription', {
1028
1051
  count: this.maxLength
1029
1052
  });
@@ -1383,7 +1406,7 @@
1383
1406
  if (!($target instanceof HTMLAnchorElement)) {
1384
1407
  return false;
1385
1408
  }
1386
- const inputId = getFragmentFromUrl($target.href);
1409
+ const inputId = $target.hash.replace('#', '');
1387
1410
  if (!inputId) {
1388
1411
  return false;
1389
1412
  }
@@ -1696,7 +1719,6 @@
1696
1719
  throw new ElementError(formatErrorMessage(FileUpload, 'File input (`<input type="file">`) attribute (`type`) is not `file`'));
1697
1720
  }
1698
1721
  this.$input = $input;
1699
- this.$input.setAttribute('hidden', 'true');
1700
1722
  if (!this.$input.id) {
1701
1723
  throw new ElementError({
1702
1724
  component: FileUpload,
@@ -1712,6 +1734,7 @@
1712
1734
  $label.id = `${this.id}-label`;
1713
1735
  }
1714
1736
  this.$input.id = `${this.id}-input`;
1737
+ this.$input.setAttribute('hidden', 'true');
1715
1738
  const $button = document.createElement('button');
1716
1739
  $button.classList.add('govuk-file-upload-button');
1717
1740
  $button.type = 'button';
@@ -1936,6 +1959,7 @@
1936
1959
  if (!$menuButton) {
1937
1960
  return this;
1938
1961
  }
1962
+ this.$root.classList.add('govuk-header--with-js-navigation');
1939
1963
  const menuId = $menuButton.getAttribute('aria-controls');
1940
1964
  if (!menuId) {
1941
1965
  throw new ElementError({
@@ -2363,16 +2387,10 @@
2363
2387
  super($root);
2364
2388
  const hash = this.$root.hash;
2365
2389
  const href = (_this$$root$getAttrib = this.$root.getAttribute('href')) != null ? _this$$root$getAttrib : '';
2366
- let url;
2367
- try {
2368
- url = new window.URL(this.$root.href);
2369
- } catch (error) {
2370
- throw new ElementError(`Skip link: Target link (\`href="${href}"\`) is invalid`);
2371
- }
2372
- if (url.origin !== window.location.origin || url.pathname !== window.location.pathname) {
2390
+ if (this.$root.origin !== window.location.origin || this.$root.pathname !== window.location.pathname) {
2373
2391
  return;
2374
2392
  }
2375
- const linkedElementId = getFragmentFromUrl(hash);
2393
+ const linkedElementId = hash.replace('#', '');
2376
2394
  if (!linkedElementId) {
2377
2395
  throw new ElementError(`Skip link: Target link (\`href="${href}"\`) has no hash fragment`);
2378
2396
  }
@@ -2528,7 +2546,7 @@
2528
2546
  return this.$root.querySelector(`a.govuk-tabs__tab[href="${hash}"]`);
2529
2547
  }
2530
2548
  setAttributes($tab) {
2531
- const panelId = getFragmentFromUrl($tab.href);
2549
+ const panelId = $tab.hash.replace('#', '');
2532
2550
  if (!panelId) {
2533
2551
  return;
2534
2552
  }
@@ -2632,7 +2650,7 @@
2632
2650
  this.createHistoryEntry($previousTab);
2633
2651
  }
2634
2652
  getPanel($tab) {
2635
- const panelId = getFragmentFromUrl($tab.href);
2653
+ const panelId = $tab.hash.replace('#', '');
2636
2654
  if (!panelId) {
2637
2655
  return null;
2638
2656
  }
@@ -2680,28 +2698,34 @@
2680
2698
  * Use the `data-module` attributes to find, instantiate and init all of the
2681
2699
  * components provided as part of GOV.UK Frontend.
2682
2700
  *
2683
- * @param {Config & { scope?: Element, onError?: OnErrorCallback<CompatibleClass> }} [config] - Config for all components (with optional scope)
2701
+ * @param {Config | Element | Document | null} [scopeOrConfig] - Scope of the document to search within or config for all components (with optional scope)
2684
2702
  */
2685
- function initAll(config) {
2686
- var _config$scope;
2687
- config = typeof config !== 'undefined' ? config : {};
2688
- if (!isSupported()) {
2689
- if (config.onError) {
2690
- config.onError(new SupportError(), {
2703
+ function initAll(scopeOrConfig = {}) {
2704
+ const config = isObject(scopeOrConfig) ? scopeOrConfig : {};
2705
+ const options = normaliseOptions(scopeOrConfig);
2706
+ try {
2707
+ if (!isSupported()) {
2708
+ throw new SupportError();
2709
+ }
2710
+ if (options.scope === null) {
2711
+ throw new ElementError({
2712
+ element: options.scope,
2713
+ identifier: 'GOV.UK Frontend scope element (`$scope`)'
2714
+ });
2715
+ }
2716
+ } catch (error) {
2717
+ if (options.onError) {
2718
+ options.onError(error, {
2691
2719
  config
2692
2720
  });
2693
2721
  } else {
2694
- console.log(new SupportError());
2722
+ console.log(error);
2695
2723
  }
2696
2724
  return;
2697
2725
  }
2698
2726
  const components = [[Accordion, config.accordion], [Button, config.button], [CharacterCount, config.characterCount], [Checkboxes], [ErrorSummary, config.errorSummary], [ExitThisPage, config.exitThisPage], [FileUpload, config.fileUpload], [Header], [NotificationBanner, config.notificationBanner], [PasswordInput, config.passwordInput], [Radios], [ServiceNavigation], [SkipLink], [Tabs]];
2699
- const options = {
2700
- scope: (_config$scope = config.scope) != null ? _config$scope : document,
2701
- onError: config.onError
2702
- };
2703
- components.forEach(([Component, config]) => {
2704
- createAll(Component, config, options);
2727
+ components.forEach(([Component, componentConfig]) => {
2728
+ createAll(Component, componentConfig, options);
2705
2729
  });
2706
2730
  }
2707
2731
 
@@ -2717,42 +2741,42 @@
2717
2741
  * @template {CompatibleClass} ComponentClass
2718
2742
  * @param {ComponentClass} Component - class of the component to create
2719
2743
  * @param {ComponentConfig<ComponentClass>} [config] - Config supplied to component
2720
- * @param {OnErrorCallback<ComponentClass> | Element | Document | CreateAllOptions<ComponentClass> } [createAllOptions] - options for createAll including scope of the document to search within and callback function if error throw by component on init
2744
+ * @param {OnErrorCallback<ComponentClass> | Element | Document | null | CreateAllOptions<ComponentClass>} [scopeOrOptions] - options for createAll including scope of the document to search within and callback function if error throw by component on init
2721
2745
  * @returns {Array<InstanceType<ComponentClass>>} - array of instantiated components
2722
2746
  */
2723
- function createAll(Component, config, createAllOptions) {
2724
- let $scope = document;
2725
- let onError;
2726
- if (typeof createAllOptions === 'object') {
2727
- var _createAllOptions$sco;
2728
- createAllOptions = createAllOptions;
2729
- $scope = (_createAllOptions$sco = createAllOptions.scope) != null ? _createAllOptions$sco : $scope;
2730
- onError = createAllOptions.onError;
2731
- }
2732
- if (typeof createAllOptions === 'function') {
2733
- onError = createAllOptions;
2734
- }
2735
- if (createAllOptions instanceof HTMLElement) {
2736
- $scope = createAllOptions;
2737
- }
2738
- const $elements = $scope.querySelectorAll(`[data-module="${Component.moduleName}"]`);
2739
- if (!isSupported()) {
2740
- if (onError) {
2741
- onError(new SupportError(), {
2747
+ function createAll(Component, config, scopeOrOptions) {
2748
+ let $elements;
2749
+ const options = normaliseOptions(scopeOrOptions);
2750
+ try {
2751
+ var _options$scope;
2752
+ if (!isSupported()) {
2753
+ throw new SupportError();
2754
+ }
2755
+ if (options.scope === null) {
2756
+ throw new ElementError({
2757
+ element: options.scope,
2758
+ component: Component,
2759
+ identifier: 'Scope element (`$scope`)'
2760
+ });
2761
+ }
2762
+ $elements = (_options$scope = options.scope) == null ? void 0 : _options$scope.querySelectorAll(`[data-module="${Component.moduleName}"]`);
2763
+ } catch (error) {
2764
+ if (options.onError) {
2765
+ options.onError(error, {
2742
2766
  component: Component,
2743
2767
  config
2744
2768
  });
2745
2769
  } else {
2746
- console.log(new SupportError());
2770
+ console.log(error);
2747
2771
  }
2748
2772
  return [];
2749
2773
  }
2750
- return Array.from($elements).map($element => {
2774
+ return Array.from($elements != null ? $elements : []).map($element => {
2751
2775
  try {
2752
2776
  return typeof config !== 'undefined' ? new Component($element, config) : new Component($element);
2753
2777
  } catch (error) {
2754
- if (onError) {
2755
- onError(error, {
2778
+ if (options.onError) {
2779
+ options.onError(error, {
2756
2780
  element: $element,
2757
2781
  component: Component,
2758
2782
  config
@@ -2771,6 +2795,8 @@
2771
2795
  * Config for all components via `initAll()`
2772
2796
  *
2773
2797
  * @typedef {object} Config
2798
+ * @property {Element | Document | null} [scope] - Scope of the document to search within
2799
+ * @property {OnErrorCallback<CompatibleClass>} [onError] - Initialisation error callback
2774
2800
  * @property {AccordionConfig} [accordion] - Accordion config
2775
2801
  * @property {ButtonConfig} [button] - Button config
2776
2802
  * @property {CharacterCountConfig} [characterCount] - Character Count config
@@ -2795,7 +2821,7 @@
2795
2821
  /**
2796
2822
  * Component config keys, e.g. `accordion` and `characterCount`
2797
2823
  *
2798
- * @typedef {keyof Config} ConfigKey
2824
+ * @typedef {keyof Omit<Config, 'scope' | 'onError'>} ConfigKey
2799
2825
  */
2800
2826
  /**
2801
2827
  * @template {CompatibleClass} ComponentClass
@@ -2806,7 +2832,7 @@
2806
2832
  * @typedef {object} ErrorContext
2807
2833
  * @property {Element} [element] - Element used for component module initialisation
2808
2834
  * @property {ComponentClass} [component] - Class of component
2809
- * @property {ComponentConfig<ComponentClass>} config - Config supplied to component
2835
+ * @property {Config | ComponentConfig<ComponentClass>} [config] - Config supplied to components
2810
2836
  */
2811
2837
  /**
2812
2838
  * @template {CompatibleClass} ComponentClass
@@ -2817,7 +2843,7 @@
2817
2843
  /**
2818
2844
  * @template {CompatibleClass} ComponentClass
2819
2845
  * @typedef {object} CreateAllOptions
2820
- * @property {Element | Document} [scope] - scope of the document to search within
2846
+ * @property {Element | Document | null} [scope] - scope of the document to search within
2821
2847
  * @property {OnErrorCallback<ComponentClass>} [onError] - callback function if error throw by component on init
2822
2848
  */
2823
2849