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
@@ -1,13 +1,7 @@
1
- const version = '5.10.1';
1
+ const version = '5.11.2';
2
2
 
3
- function getFragmentFromUrl(url) {
4
- if (!url.includes('#')) {
5
- return undefined;
6
- }
7
- return url.split('#').pop();
8
- }
9
3
  function getBreakpoint(name) {
10
- const property = `--govuk-frontend-breakpoint-${name}`;
4
+ const property = `--govuk-breakpoint-${name}`;
11
5
  const value = window.getComputedStyle(document.documentElement).getPropertyValue(property);
12
6
  return {
13
7
  property,
@@ -63,6 +57,9 @@ function isArray(option) {
63
57
  function isObject(option) {
64
58
  return !!option && typeof option === 'object' && !isArray(option);
65
59
  }
60
+ function isScope($scope) {
61
+ return !!$scope && ($scope instanceof Element || $scope instanceof Document);
62
+ }
66
63
  function formatErrorMessage(Component, message) {
67
64
  return `${Component.moduleName}: ${message}`;
68
65
  }
@@ -70,9 +67,6 @@ function formatErrorMessage(Component, message) {
70
67
  * @typedef ComponentWithModuleName
71
68
  * @property {string} moduleName - Name of the component
72
69
  */
73
- /**
74
- * @import { ObjectNested } from './configuration.mjs'
75
- */
76
70
 
77
71
  class GOVUKFrontendError extends Error {
78
72
  constructor(...args) {
@@ -101,7 +95,7 @@ class ConfigError extends GOVUKFrontendError {
101
95
  class ElementError extends GOVUKFrontendError {
102
96
  constructor(messageOrOptions) {
103
97
  let message = typeof messageOrOptions === 'string' ? messageOrOptions : '';
104
- if (typeof messageOrOptions === 'object') {
98
+ if (isObject(messageOrOptions)) {
105
99
  const {
106
100
  component,
107
101
  identifier,
@@ -110,7 +104,9 @@ class ElementError extends GOVUKFrontendError {
110
104
  } = messageOrOptions;
111
105
  message = identifier;
112
106
  message += element ? ` is not of type ${expectedType != null ? expectedType : 'HTMLElement'}` : ' not found';
113
- message = formatErrorMessage(component, message);
107
+ if (component) {
108
+ message = formatErrorMessage(component, message);
109
+ }
114
110
  }
115
111
  super(message);
116
112
  this.name = 'ElementError';
@@ -250,6 +246,30 @@ function normaliseDataset(Component, dataset) {
250
246
  }
251
247
  return out;
252
248
  }
249
+ function normaliseOptions(scopeOrOptions) {
250
+ let $scope = document;
251
+ let onError;
252
+ if (isObject(scopeOrOptions)) {
253
+ const options = scopeOrOptions;
254
+ if (isScope(options.scope) || options.scope === null) {
255
+ $scope = options.scope;
256
+ }
257
+ if (typeof options.onError === 'function') {
258
+ onError = options.onError;
259
+ }
260
+ }
261
+ if (isScope(scopeOrOptions)) {
262
+ $scope = scopeOrOptions;
263
+ } else if (scopeOrOptions === null) {
264
+ $scope = null;
265
+ } else if (typeof scopeOrOptions === 'function') {
266
+ onError = scopeOrOptions;
267
+ }
268
+ return {
269
+ scope: $scope,
270
+ onError
271
+ };
272
+ }
253
273
  function mergeConfigs(...configObjects) {
254
274
  const formattedConfigObject = {};
255
275
  for (const configObject of configObjects) {
@@ -344,6 +364,9 @@ function extractConfigByNamespace(schema, dataset, namespace) {
344
364
  * @template {Partial<Record<keyof ConfigurationType, unknown>>} [ConfigurationType=ObjectNested]
345
365
  * @typedef {typeof Component & ChildClass<ConfigurationType>} ChildClassConstructor<ConfigurationType>
346
366
  */
367
+ /**
368
+ * @import { CompatibleClass, Config, CreateAllOptions, OnErrorCallback } from '../init.mjs'
369
+ */
347
370
 
348
371
  class I18n {
349
372
  constructor(translations = {}, config = {}) {
@@ -358,7 +381,7 @@ class I18n {
358
381
  throw new Error('i18n: lookup key missing');
359
382
  }
360
383
  let translation = this.translations[lookupKey];
361
- if (typeof (options == null ? void 0 : options.count) === 'number' && typeof translation === 'object') {
384
+ if (typeof (options == null ? void 0 : options.count) === 'number' && isObject(translation)) {
362
385
  const translationPluralForm = translation[this.getPluralSuffix(lookupKey, options.count)];
363
386
  if (translationPluralForm) {
364
387
  translation = translationPluralForm;
@@ -401,7 +424,7 @@ class I18n {
401
424
  }
402
425
  const translation = this.translations[lookupKey];
403
426
  const preferredForm = this.hasIntlPluralRulesSupport() ? new Intl.PluralRules(this.locale).select(count) : this.selectPluralFormUsingFallbackRules(count);
404
- if (typeof translation === 'object') {
427
+ if (isObject(translation)) {
405
428
  if (preferredForm in translation) {
406
429
  return preferredForm;
407
430
  } else if ('other' in translation) {
@@ -737,11 +760,11 @@ class Accordion extends ConfigurableComponent {
737
760
  const ariaLabelParts = [];
738
761
  const $headingText = $section.querySelector(`.${this.sectionHeadingTextClass}`);
739
762
  if ($headingText) {
740
- ariaLabelParts.push(`${$headingText.textContent}`.trim());
763
+ ariaLabelParts.push($headingText.textContent.trim());
741
764
  }
742
765
  const $summary = $section.querySelector(`.${this.sectionSummaryClass}`);
743
766
  if ($summary) {
744
- ariaLabelParts.push(`${$summary.textContent}`.trim());
767
+ ariaLabelParts.push($summary.textContent.trim());
745
768
  }
746
769
  const ariaLabelMessage = expanded ? this.i18n.t('hideSectionAriaLabel') : this.i18n.t('showSectionAriaLabel');
747
770
  ariaLabelParts.push(ariaLabelMessage);
@@ -794,7 +817,7 @@ class Accordion extends ConfigurableComponent {
794
817
  if (id) {
795
818
  try {
796
819
  window.sessionStorage.setItem(id, isExpanded.toString());
797
- } catch (exception) {}
820
+ } catch (_unused) {}
798
821
  }
799
822
  }
800
823
  setInitialState($section) {
@@ -808,7 +831,7 @@ class Accordion extends ConfigurableComponent {
808
831
  if (state !== null) {
809
832
  this.setExpanded(state === 'true', $section);
810
833
  }
811
- } catch (exception) {}
834
+ } catch (_unused2) {}
812
835
  }
813
836
  }
814
837
  getButtonPunctuationEl() {
@@ -1017,7 +1040,7 @@ class CharacterCount extends ConfigurableComponent {
1017
1040
  });
1018
1041
  }
1019
1042
  this.$errorMessage = this.$root.querySelector('.govuk-error-message');
1020
- if (`${$textareaDescription.textContent}`.match(/^\s*$/)) {
1043
+ if ($textareaDescription.textContent.match(/^\s*$/)) {
1021
1044
  $textareaDescription.textContent = this.i18n.t('textareaDescription', {
1022
1045
  count: this.maxLength
1023
1046
  });
@@ -1377,7 +1400,7 @@ class ErrorSummary extends ConfigurableComponent {
1377
1400
  if (!($target instanceof HTMLAnchorElement)) {
1378
1401
  return false;
1379
1402
  }
1380
- const inputId = getFragmentFromUrl($target.href);
1403
+ const inputId = $target.hash.replace('#', '');
1381
1404
  if (!inputId) {
1382
1405
  return false;
1383
1406
  }
@@ -1690,7 +1713,6 @@ class FileUpload extends ConfigurableComponent {
1690
1713
  throw new ElementError(formatErrorMessage(FileUpload, 'File input (`<input type="file">`) attribute (`type`) is not `file`'));
1691
1714
  }
1692
1715
  this.$input = $input;
1693
- this.$input.setAttribute('hidden', 'true');
1694
1716
  if (!this.$input.id) {
1695
1717
  throw new ElementError({
1696
1718
  component: FileUpload,
@@ -1706,6 +1728,7 @@ class FileUpload extends ConfigurableComponent {
1706
1728
  $label.id = `${this.id}-label`;
1707
1729
  }
1708
1730
  this.$input.id = `${this.id}-input`;
1731
+ this.$input.setAttribute('hidden', 'true');
1709
1732
  const $button = document.createElement('button');
1710
1733
  $button.classList.add('govuk-file-upload-button');
1711
1734
  $button.type = 'button';
@@ -1930,6 +1953,7 @@ class Header extends Component {
1930
1953
  if (!$menuButton) {
1931
1954
  return this;
1932
1955
  }
1956
+ this.$root.classList.add('govuk-header--with-js-navigation');
1933
1957
  const menuId = $menuButton.getAttribute('aria-controls');
1934
1958
  if (!menuId) {
1935
1959
  throw new ElementError({
@@ -2357,16 +2381,10 @@ class SkipLink extends Component {
2357
2381
  super($root);
2358
2382
  const hash = this.$root.hash;
2359
2383
  const href = (_this$$root$getAttrib = this.$root.getAttribute('href')) != null ? _this$$root$getAttrib : '';
2360
- let url;
2361
- try {
2362
- url = new window.URL(this.$root.href);
2363
- } catch (error) {
2364
- throw new ElementError(`Skip link: Target link (\`href="${href}"\`) is invalid`);
2365
- }
2366
- if (url.origin !== window.location.origin || url.pathname !== window.location.pathname) {
2384
+ if (this.$root.origin !== window.location.origin || this.$root.pathname !== window.location.pathname) {
2367
2385
  return;
2368
2386
  }
2369
- const linkedElementId = getFragmentFromUrl(hash);
2387
+ const linkedElementId = hash.replace('#', '');
2370
2388
  if (!linkedElementId) {
2371
2389
  throw new ElementError(`Skip link: Target link (\`href="${href}"\`) has no hash fragment`);
2372
2390
  }
@@ -2522,7 +2540,7 @@ class Tabs extends Component {
2522
2540
  return this.$root.querySelector(`a.govuk-tabs__tab[href="${hash}"]`);
2523
2541
  }
2524
2542
  setAttributes($tab) {
2525
- const panelId = getFragmentFromUrl($tab.href);
2543
+ const panelId = $tab.hash.replace('#', '');
2526
2544
  if (!panelId) {
2527
2545
  return;
2528
2546
  }
@@ -2626,7 +2644,7 @@ class Tabs extends Component {
2626
2644
  this.createHistoryEntry($previousTab);
2627
2645
  }
2628
2646
  getPanel($tab) {
2629
- const panelId = getFragmentFromUrl($tab.href);
2647
+ const panelId = $tab.hash.replace('#', '');
2630
2648
  if (!panelId) {
2631
2649
  return null;
2632
2650
  }
@@ -2674,28 +2692,34 @@ Tabs.moduleName = 'govuk-tabs';
2674
2692
  * Use the `data-module` attributes to find, instantiate and init all of the
2675
2693
  * components provided as part of GOV.UK Frontend.
2676
2694
  *
2677
- * @param {Config & { scope?: Element, onError?: OnErrorCallback<CompatibleClass> }} [config] - Config for all components (with optional scope)
2695
+ * @param {Config | Element | Document | null} [scopeOrConfig] - Scope of the document to search within or config for all components (with optional scope)
2678
2696
  */
2679
- function initAll(config) {
2680
- var _config$scope;
2681
- config = typeof config !== 'undefined' ? config : {};
2682
- if (!isSupported()) {
2683
- if (config.onError) {
2684
- config.onError(new SupportError(), {
2697
+ function initAll(scopeOrConfig = {}) {
2698
+ const config = isObject(scopeOrConfig) ? scopeOrConfig : {};
2699
+ const options = normaliseOptions(scopeOrConfig);
2700
+ try {
2701
+ if (!isSupported()) {
2702
+ throw new SupportError();
2703
+ }
2704
+ if (options.scope === null) {
2705
+ throw new ElementError({
2706
+ element: options.scope,
2707
+ identifier: 'GOV.UK Frontend scope element (`$scope`)'
2708
+ });
2709
+ }
2710
+ } catch (error) {
2711
+ if (options.onError) {
2712
+ options.onError(error, {
2685
2713
  config
2686
2714
  });
2687
2715
  } else {
2688
- console.log(new SupportError());
2716
+ console.log(error);
2689
2717
  }
2690
2718
  return;
2691
2719
  }
2692
2720
  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]];
2693
- const options = {
2694
- scope: (_config$scope = config.scope) != null ? _config$scope : document,
2695
- onError: config.onError
2696
- };
2697
- components.forEach(([Component, config]) => {
2698
- createAll(Component, config, options);
2721
+ components.forEach(([Component, componentConfig]) => {
2722
+ createAll(Component, componentConfig, options);
2699
2723
  });
2700
2724
  }
2701
2725
 
@@ -2711,42 +2735,42 @@ function initAll(config) {
2711
2735
  * @template {CompatibleClass} ComponentClass
2712
2736
  * @param {ComponentClass} Component - class of the component to create
2713
2737
  * @param {ComponentConfig<ComponentClass>} [config] - Config supplied to component
2714
- * @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
2738
+ * @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
2715
2739
  * @returns {Array<InstanceType<ComponentClass>>} - array of instantiated components
2716
2740
  */
2717
- function createAll(Component, config, createAllOptions) {
2718
- let $scope = document;
2719
- let onError;
2720
- if (typeof createAllOptions === 'object') {
2721
- var _createAllOptions$sco;
2722
- createAllOptions = createAllOptions;
2723
- $scope = (_createAllOptions$sco = createAllOptions.scope) != null ? _createAllOptions$sco : $scope;
2724
- onError = createAllOptions.onError;
2725
- }
2726
- if (typeof createAllOptions === 'function') {
2727
- onError = createAllOptions;
2728
- }
2729
- if (createAllOptions instanceof HTMLElement) {
2730
- $scope = createAllOptions;
2731
- }
2732
- const $elements = $scope.querySelectorAll(`[data-module="${Component.moduleName}"]`);
2733
- if (!isSupported()) {
2734
- if (onError) {
2735
- onError(new SupportError(), {
2741
+ function createAll(Component, config, scopeOrOptions) {
2742
+ let $elements;
2743
+ const options = normaliseOptions(scopeOrOptions);
2744
+ try {
2745
+ var _options$scope;
2746
+ if (!isSupported()) {
2747
+ throw new SupportError();
2748
+ }
2749
+ if (options.scope === null) {
2750
+ throw new ElementError({
2751
+ element: options.scope,
2752
+ component: Component,
2753
+ identifier: 'Scope element (`$scope`)'
2754
+ });
2755
+ }
2756
+ $elements = (_options$scope = options.scope) == null ? void 0 : _options$scope.querySelectorAll(`[data-module="${Component.moduleName}"]`);
2757
+ } catch (error) {
2758
+ if (options.onError) {
2759
+ options.onError(error, {
2736
2760
  component: Component,
2737
2761
  config
2738
2762
  });
2739
2763
  } else {
2740
- console.log(new SupportError());
2764
+ console.log(error);
2741
2765
  }
2742
2766
  return [];
2743
2767
  }
2744
- return Array.from($elements).map($element => {
2768
+ return Array.from($elements != null ? $elements : []).map($element => {
2745
2769
  try {
2746
2770
  return typeof config !== 'undefined' ? new Component($element, config) : new Component($element);
2747
2771
  } catch (error) {
2748
- if (onError) {
2749
- onError(error, {
2772
+ if (options.onError) {
2773
+ options.onError(error, {
2750
2774
  element: $element,
2751
2775
  component: Component,
2752
2776
  config
@@ -2765,6 +2789,8 @@ function createAll(Component, config, createAllOptions) {
2765
2789
  * Config for all components via `initAll()`
2766
2790
  *
2767
2791
  * @typedef {object} Config
2792
+ * @property {Element | Document | null} [scope] - Scope of the document to search within
2793
+ * @property {OnErrorCallback<CompatibleClass>} [onError] - Initialisation error callback
2768
2794
  * @property {AccordionConfig} [accordion] - Accordion config
2769
2795
  * @property {ButtonConfig} [button] - Button config
2770
2796
  * @property {CharacterCountConfig} [characterCount] - Character Count config
@@ -2789,7 +2815,7 @@ function createAll(Component, config, createAllOptions) {
2789
2815
  /**
2790
2816
  * Component config keys, e.g. `accordion` and `characterCount`
2791
2817
  *
2792
- * @typedef {keyof Config} ConfigKey
2818
+ * @typedef {keyof Omit<Config, 'scope' | 'onError'>} ConfigKey
2793
2819
  */
2794
2820
  /**
2795
2821
  * @template {CompatibleClass} ComponentClass
@@ -2800,7 +2826,7 @@ function createAll(Component, config, createAllOptions) {
2800
2826
  * @typedef {object} ErrorContext
2801
2827
  * @property {Element} [element] - Element used for component module initialisation
2802
2828
  * @property {ComponentClass} [component] - Class of component
2803
- * @property {ComponentConfig<ComponentClass>} config - Config supplied to component
2829
+ * @property {Config | ComponentConfig<ComponentClass>} [config] - Config supplied to components
2804
2830
  */
2805
2831
  /**
2806
2832
  * @template {CompatibleClass} ComponentClass
@@ -2811,7 +2837,7 @@ function createAll(Component, config, createAllOptions) {
2811
2837
  /**
2812
2838
  * @template {CompatibleClass} ComponentClass
2813
2839
  * @typedef {object} CreateAllOptions
2814
- * @property {Element | Document} [scope] - scope of the document to search within
2840
+ * @property {Element | Document | null} [scope] - scope of the document to search within
2815
2841
  * @property {OnErrorCallback<ComponentClass>} [onError] - callback function if error throw by component on init
2816
2842
  */
2817
2843