govuk_publishing_components 42.0.0 → 43.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (591) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/govuk_publishing_components/_all_components.scss +2 -1
  3. data/app/assets/stylesheets/govuk_publishing_components/component_support.scss +4 -4
  4. data/app/assets/stylesheets/govuk_publishing_components/components/_accordion.scss +18 -3
  5. data/app/assets/stylesheets/govuk_publishing_components/components/_attachment-link.scss +15 -0
  6. data/app/assets/stylesheets/govuk_publishing_components/components/_attachment.scss +20 -0
  7. data/app/assets/stylesheets/govuk_publishing_components/components/_breadcrumbs.scss +21 -1
  8. data/app/assets/stylesheets/govuk_publishing_components/components/_cards.scss +27 -6
  9. data/app/assets/stylesheets/govuk_publishing_components/components/_chat-entry.scss +36 -0
  10. data/app/assets/stylesheets/govuk_publishing_components/components/_contents-list.scss +6 -6
  11. data/app/assets/stylesheets/govuk_publishing_components/components/_cross-service-header.scss +29 -0
  12. data/app/assets/stylesheets/govuk_publishing_components/components/_devolved-nations.scss +23 -0
  13. data/app/assets/stylesheets/govuk_publishing_components/components/_document-list.scss +19 -0
  14. data/app/assets/stylesheets/govuk_publishing_components/components/_govspeak-html-publication.scss +5 -3
  15. data/app/assets/stylesheets/govuk_publishing_components/components/_heading.scss +16 -0
  16. data/app/assets/stylesheets/govuk_publishing_components/components/_image-card.scss +19 -0
  17. data/app/assets/stylesheets/govuk_publishing_components/components/_inset-text.scss +23 -0
  18. data/app/assets/stylesheets/govuk_publishing_components/components/_intervention.scss +29 -0
  19. data/app/assets/stylesheets/govuk_publishing_components/components/_layout-for-admin.scss +1 -1
  20. data/app/assets/stylesheets/govuk_publishing_components/components/_lead-paragraph.scss +6 -0
  21. data/app/assets/stylesheets/govuk_publishing_components/components/_metadata.scss +16 -0
  22. data/app/assets/stylesheets/govuk_publishing_components/components/_organisation-logo.scss +7 -0
  23. data/app/assets/stylesheets/govuk_publishing_components/components/_phase-banner.scss +21 -0
  24. data/app/assets/stylesheets/govuk_publishing_components/components/_previous-and-next-navigation.scss +8 -0
  25. data/app/assets/stylesheets/govuk_publishing_components/components/_search.scss +8 -7
  26. data/app/assets/stylesheets/govuk_publishing_components/components/_success-alert.scss +22 -0
  27. data/app/assets/stylesheets/govuk_publishing_components/components/_title.scss +8 -0
  28. data/app/assets/stylesheets/govuk_publishing_components/components/_warning-text.scss +11 -0
  29. data/app/assets/stylesheets/govuk_publishing_components/components/helpers/_brand-colours.scss +24 -2
  30. data/app/assets/stylesheets/govuk_publishing_components/components/helpers/_govuk-frontend-settings.scss +2 -0
  31. data/app/views/govuk_publishing_components/components/_action_link.html.erb +1 -1
  32. data/app/views/govuk_publishing_components/components/_attachment.html.erb +2 -2
  33. data/app/views/govuk_publishing_components/components/_breadcrumbs.html.erb +2 -1
  34. data/app/views/govuk_publishing_components/components/_chat_entry.html.erb +46 -0
  35. data/app/views/govuk_publishing_components/components/_contextual_breadcrumbs.html.erb +6 -4
  36. data/app/views/govuk_publishing_components/components/_contextual_footer.html.erb +1 -1
  37. data/app/views/govuk_publishing_components/components/_contextual_sidebar.html.erb +1 -1
  38. data/app/views/govuk_publishing_components/components/_error_alert.html.erb +1 -1
  39. data/app/views/govuk_publishing_components/components/_intervention.html.erb +1 -1
  40. data/app/views/govuk_publishing_components/components/_layout_header.html.erb +2 -2
  41. data/app/views/govuk_publishing_components/components/_modal_dialogue.html.erb +3 -5
  42. data/app/views/govuk_publishing_components/components/_related_navigation.html.erb +1 -1
  43. data/app/views/govuk_publishing_components/components/cross_service_header/_one_login_header.html.erb +1 -1
  44. data/app/views/govuk_publishing_components/components/cross_service_header/_service_header.html.erb +2 -2
  45. data/app/views/govuk_publishing_components/components/docs/chat_entry.yml +36 -0
  46. data/app/views/govuk_publishing_components/components/docs/contents_list.yml +3 -3
  47. data/app/views/govuk_publishing_components/components/docs/organisation_logo.yml +1 -1
  48. data/{node_modules/govuk-frontend/dist/govuk/components/header/template-with-tudor-crown.html → app/views/govuk_publishing_components/components/govuk_logo/_govuk_logo.html.erb} +5 -12
  49. data/app/views/govuk_publishing_components/components/govuk_logo/_govuk_logo_crown_only.html.erb +15 -0
  50. data/app/views/govuk_publishing_components/components/layout_for_public/_header_logo.html.erb +6 -27
  51. data/app/views/govuk_publishing_components/components/layout_header/_header_logo.html.erb +1 -13
  52. data/config/locales/ar.yml +4 -1
  53. data/config/locales/az.yml +4 -1
  54. data/config/locales/be.yml +4 -1
  55. data/config/locales/bg.yml +4 -1
  56. data/config/locales/bn.yml +4 -1
  57. data/config/locales/cs.yml +4 -1
  58. data/config/locales/cy.yml +4 -1
  59. data/config/locales/da.yml +4 -1
  60. data/config/locales/de.yml +4 -1
  61. data/config/locales/dr.yml +4 -1
  62. data/config/locales/el.yml +4 -1
  63. data/config/locales/en.yml +3 -0
  64. data/config/locales/es-419.yml +4 -1
  65. data/config/locales/es.yml +4 -1
  66. data/config/locales/et.yml +4 -1
  67. data/config/locales/fa.yml +4 -1
  68. data/config/locales/fi.yml +4 -1
  69. data/config/locales/fr.yml +4 -1
  70. data/config/locales/gd.yml +4 -1
  71. data/config/locales/gu.yml +4 -1
  72. data/config/locales/he.yml +4 -1
  73. data/config/locales/hi.yml +4 -1
  74. data/config/locales/hr.yml +4 -1
  75. data/config/locales/hu.yml +4 -1
  76. data/config/locales/hy.yml +4 -1
  77. data/config/locales/id.yml +4 -1
  78. data/config/locales/is.yml +4 -1
  79. data/config/locales/it.yml +4 -1
  80. data/config/locales/ja.yml +4 -1
  81. data/config/locales/ka.yml +4 -1
  82. data/config/locales/kk.yml +4 -1
  83. data/config/locales/ko.yml +4 -1
  84. data/config/locales/lt.yml +4 -1
  85. data/config/locales/lv.yml +4 -1
  86. data/config/locales/ms.yml +4 -1
  87. data/config/locales/mt.yml +4 -1
  88. data/config/locales/nl.yml +4 -1
  89. data/config/locales/no.yml +4 -1
  90. data/config/locales/pa-pk.yml +4 -1
  91. data/config/locales/pa.yml +4 -1
  92. data/config/locales/pl.yml +4 -1
  93. data/config/locales/ps.yml +4 -1
  94. data/config/locales/pt.yml +4 -1
  95. data/config/locales/ro.yml +4 -1
  96. data/config/locales/ru.yml +4 -1
  97. data/config/locales/si.yml +4 -1
  98. data/config/locales/sk.yml +4 -1
  99. data/config/locales/sl.yml +4 -1
  100. data/config/locales/so.yml +4 -1
  101. data/config/locales/sq.yml +4 -1
  102. data/config/locales/sr.yml +4 -1
  103. data/config/locales/sv.yml +4 -1
  104. data/config/locales/sw.yml +4 -1
  105. data/config/locales/ta.yml +4 -1
  106. data/config/locales/th.yml +4 -1
  107. data/config/locales/tk.yml +4 -1
  108. data/config/locales/tr.yml +4 -1
  109. data/config/locales/uk.yml +4 -1
  110. data/config/locales/ur.yml +4 -1
  111. data/config/locales/uz.yml +4 -1
  112. data/config/locales/vi.yml +4 -1
  113. data/config/locales/zh-hk.yml +4 -1
  114. data/config/locales/zh-tw.yml +4 -1
  115. data/config/locales/zh.yml +4 -1
  116. data/lib/govuk_publishing_components/presenters/contents_list_helper.rb +2 -1
  117. data/lib/govuk_publishing_components/version.rb +1 -1
  118. data/node_modules/govuk-frontend/dist/govuk/_base.scss +3 -3
  119. data/node_modules/govuk-frontend/dist/govuk/_base.scss.map +1 -1
  120. data/node_modules/govuk-frontend/dist/govuk/all.bundle.js +451 -176
  121. data/node_modules/govuk-frontend/dist/govuk/all.bundle.js.map +1 -1
  122. data/node_modules/govuk-frontend/dist/govuk/all.bundle.mjs +450 -177
  123. data/node_modules/govuk-frontend/dist/govuk/all.bundle.mjs.map +1 -1
  124. data/node_modules/govuk-frontend/dist/govuk/all.mjs +13 -76
  125. data/node_modules/govuk-frontend/dist/govuk/all.mjs.map +1 -1
  126. data/node_modules/govuk-frontend/dist/govuk/all.scss +1 -9
  127. data/node_modules/govuk-frontend/dist/govuk/all.scss.map +1 -1
  128. data/node_modules/govuk-frontend/dist/govuk/common/closest-attribute-value.mjs.map +1 -1
  129. data/node_modules/govuk-frontend/dist/govuk/common/govuk-frontend-version.mjs +1 -1
  130. data/node_modules/govuk-frontend/dist/govuk/common/index.mjs +56 -36
  131. data/node_modules/govuk-frontend/dist/govuk/common/index.mjs.map +1 -1
  132. data/node_modules/govuk-frontend/dist/govuk/common/normalise-dataset.mjs +12 -20
  133. data/node_modules/govuk-frontend/dist/govuk/common/normalise-dataset.mjs.map +1 -1
  134. data/node_modules/govuk-frontend/dist/govuk/common/normalise-string.mjs +31 -0
  135. data/node_modules/govuk-frontend/dist/govuk/common/normalise-string.mjs.map +1 -0
  136. data/node_modules/govuk-frontend/dist/govuk/components/_all.scss +7 -35
  137. data/node_modules/govuk-frontend/dist/govuk/components/_all.scss.map +1 -1
  138. data/node_modules/govuk-frontend/dist/govuk/components/_index.scss +39 -0
  139. data/node_modules/govuk-frontend/dist/govuk/components/_index.scss.map +1 -0
  140. data/node_modules/govuk-frontend/dist/govuk/components/accordion/_index.scss +35 -31
  141. data/node_modules/govuk-frontend/dist/govuk/components/accordion/_index.scss.map +1 -1
  142. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.bundle.js +177 -133
  143. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.bundle.js.map +1 -1
  144. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.bundle.mjs +177 -133
  145. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.bundle.mjs.map +1 -1
  146. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.mjs +80 -76
  147. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.mjs.map +1 -1
  148. data/node_modules/govuk-frontend/dist/govuk/components/accordion/fixtures.json +16 -3
  149. data/node_modules/govuk-frontend/dist/govuk/components/accordion/template.njk +2 -1
  150. data/node_modules/govuk-frontend/dist/govuk/components/back-link/fixtures.json +25 -15
  151. data/node_modules/govuk-frontend/dist/govuk/components/back-link/template-with-custom-link.html +1 -0
  152. data/node_modules/govuk-frontend/dist/govuk/components/back-link/template.njk +6 -2
  153. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/fixtures.json +53 -15
  154. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/macro-options.json +6 -0
  155. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/template-default.html +2 -2
  156. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/template-inverse.html +2 -2
  157. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/template-with-collapse-on-mobile.html +2 -2
  158. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/template-with-last-breadcrumb-as-current-page.html +2 -2
  159. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/template-with-multiple-levels.html +2 -2
  160. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/template-with-one-level.html +2 -2
  161. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/template-without-the-home-section.html +2 -2
  162. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/template.njk +6 -4
  163. data/node_modules/govuk-frontend/dist/govuk/components/button/button.bundle.js +97 -39
  164. data/node_modules/govuk-frontend/dist/govuk/components/button/button.bundle.js.map +1 -1
  165. data/node_modules/govuk-frontend/dist/govuk/components/button/button.bundle.mjs +97 -39
  166. data/node_modules/govuk-frontend/dist/govuk/components/button/button.bundle.mjs.map +1 -1
  167. data/node_modules/govuk-frontend/dist/govuk/components/button/button.mjs +13 -3
  168. data/node_modules/govuk-frontend/dist/govuk/components/button/button.mjs.map +1 -1
  169. data/node_modules/govuk-frontend/dist/govuk/components/button/fixtures.json +38 -0
  170. data/node_modules/govuk-frontend/dist/govuk/components/button/template.njk +4 -2
  171. data/node_modules/govuk-frontend/dist/govuk/components/character-count/_index.scss +4 -4
  172. data/node_modules/govuk-frontend/dist/govuk/components/character-count/_index.scss.map +1 -1
  173. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.bundle.js +125 -69
  174. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.bundle.js.map +1 -1
  175. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.bundle.mjs +125 -69
  176. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.bundle.mjs.map +1 -1
  177. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.mjs +17 -3
  178. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.mjs.map +1 -1
  179. data/node_modules/govuk-frontend/dist/govuk/components/character-count/fixtures.json +46 -23
  180. data/node_modules/govuk-frontend/dist/govuk/components/character-count/macro-options.json +40 -0
  181. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-default.html +1 -4
  182. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-with-custom-rows.html +1 -4
  183. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-with-custom-textarea-description.html +1 -4
  184. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-with-default-value-exceeding-limit.html +1 -4
  185. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-with-default-value.html +1 -4
  186. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-with-hint.html +1 -4
  187. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-with-label-as-page-heading.html +1 -4
  188. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-with-threshold.html +1 -4
  189. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-with-translations.html +1 -4
  190. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template-with-word-count.html +1 -4
  191. data/node_modules/govuk-frontend/dist/govuk/components/character-count/template.njk +72 -39
  192. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/_index.scss +10 -2
  193. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/_index.scss.map +1 -1
  194. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.bundle.js +9 -1
  195. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.bundle.js.map +1 -1
  196. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.bundle.mjs +9 -1
  197. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.bundle.mjs.map +1 -1
  198. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.mjs +1 -1
  199. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.mjs.map +1 -1
  200. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/fixtures.json +153 -47
  201. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/macro-options.json +40 -0
  202. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-default.html +12 -12
  203. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-small-with-conditional-reveal.html +11 -12
  204. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-small-with-disabled.html +12 -12
  205. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-small-with-divider-and-none.html +34 -0
  206. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-small-with-error.html +12 -12
  207. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-small-with-hint.html +13 -13
  208. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-small-with-long-text.html +12 -12
  209. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-small.html +12 -12
  210. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-a-medium-legend.html +12 -12
  211. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-conditional-item-checked.html +21 -24
  212. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-conditional-items-with-special-characters.html +21 -24
  213. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-conditional-items.html +21 -24
  214. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-disabled-item.html +10 -10
  215. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-divider-and-none.html +17 -16
  216. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-divider-none-and-conditional-items.html +24 -24
  217. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-error-message-and-hints-on-items.html +15 -15
  218. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-error-message.html +12 -12
  219. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-fieldset-and-error-message.html +12 -12
  220. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-hints-on-items.html +10 -10
  221. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-id-and-name.html +12 -12
  222. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-legend-as-a-page-heading.html +12 -12
  223. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-optional-form-group-classes-showing-group-error.html +21 -24
  224. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-pre-checked-values.html +15 -16
  225. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-single-option-and-hint-set-aria-describedby-on-input.html +5 -5
  226. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-single-option-set-aria-describedby-on-input.html +4 -4
  227. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-with-very-long-option-text.html +12 -12
  228. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template-without-fieldset.html +12 -12
  229. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/template.njk +58 -54
  230. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/_index.scss +17 -14
  231. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/_index.scss.map +1 -1
  232. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/fixtures.json +46 -23
  233. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/template-accepted-confirmation-banner.html +11 -8
  234. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/template-client-side-implementation.html +38 -29
  235. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/template-default.html +18 -13
  236. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/template-rejected-confirmation-banner.html +11 -8
  237. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/template-with-html.html +19 -15
  238. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/template.njk +37 -44
  239. data/node_modules/govuk-frontend/dist/govuk/components/date-input/_index.scss +1 -2
  240. data/node_modules/govuk-frontend/dist/govuk/components/date-input/_index.scss.map +1 -1
  241. data/node_modules/govuk-frontend/dist/govuk/components/date-input/fixtures.json +27 -0
  242. data/node_modules/govuk-frontend/dist/govuk/components/date-input/macro-options.json +40 -0
  243. data/node_modules/govuk-frontend/dist/govuk/components/date-input/template.njk +10 -3
  244. data/node_modules/govuk-frontend/dist/govuk/components/details/fixtures.json +10 -0
  245. data/node_modules/govuk-frontend/dist/govuk/components/details/template.njk +6 -2
  246. data/node_modules/govuk-frontend/dist/govuk/components/error-message/fixtures.json +9 -0
  247. data/node_modules/govuk-frontend/dist/govuk/components/error-message/template.njk +4 -1
  248. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/_index.scss +14 -3
  249. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/_index.scss.map +1 -1
  250. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.bundle.js +96 -37
  251. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.bundle.js.map +1 -1
  252. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.bundle.mjs +96 -37
  253. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.bundle.mjs.map +1 -1
  254. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.mjs +12 -1
  255. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.mjs.map +1 -1
  256. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/fixtures.json +48 -18
  257. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/macro-options.json +2 -2
  258. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/template-default.html +8 -8
  259. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/template-mixed-with-and-without-links.html +8 -8
  260. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/template-with-description-only.html +12 -0
  261. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/template-with-everything.html +8 -8
  262. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/template-without-links.html +5 -5
  263. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/template.njk +19 -14
  264. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.bundle.js +112 -61
  265. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.bundle.js.map +1 -1
  266. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.bundle.mjs +112 -61
  267. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.bundle.mjs.map +1 -1
  268. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.mjs +15 -4
  269. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.mjs.map +1 -1
  270. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/fixtures.json +4 -0
  271. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/template.njk +3 -1
  272. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/_index.scss +3 -5
  273. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/_index.scss.map +1 -1
  274. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/fixtures.json +18 -0
  275. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/template.njk +3 -1
  276. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/_index.scss +8 -9
  277. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/_index.scss.map +1 -1
  278. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/fixtures.json +13 -0
  279. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/macro-options.json +40 -0
  280. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/template.njk +10 -2
  281. data/node_modules/govuk-frontend/dist/govuk/components/footer/_index.scss +1 -1
  282. data/node_modules/govuk-frontend/dist/govuk/components/footer/_index.scss.map +1 -1
  283. data/node_modules/govuk-frontend/dist/govuk/components/footer/fixtures.json +46 -23
  284. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-default.html +10 -9
  285. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-full-gds-example.html +41 -40
  286. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-three-equal-columns.html +10 -9
  287. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-with-custom-html-content-licence-and-copyright-notice.html +5 -4
  288. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-with-custom-meta.html +14 -13
  289. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-with-custom-text-content-licence-and-copyright-notice.html +5 -4
  290. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-with-default-width-navigation-one-column.html +10 -9
  291. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-with-default-width-navigation-two-columns.html +10 -9
  292. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-with-meta-links-and-meta-content.html +56 -55
  293. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-with-meta.html +28 -27
  294. data/node_modules/govuk-frontend/dist/govuk/components/footer/template-with-navigation.html +10 -9
  295. data/node_modules/govuk-frontend/dist/govuk/components/footer/template.njk +42 -38
  296. data/node_modules/govuk-frontend/dist/govuk/components/header/_index.scss +1 -1
  297. data/node_modules/govuk-frontend/dist/govuk/components/header/_index.scss.map +1 -1
  298. data/node_modules/govuk-frontend/dist/govuk/components/header/fixtures.json +49 -26
  299. data/node_modules/govuk-frontend/dist/govuk/components/header/header.bundle.js +8 -0
  300. data/node_modules/govuk-frontend/dist/govuk/components/header/header.bundle.js.map +1 -1
  301. data/node_modules/govuk-frontend/dist/govuk/components/header/header.bundle.mjs +8 -0
  302. data/node_modules/govuk-frontend/dist/govuk/components/header/header.bundle.mjs.map +1 -1
  303. data/node_modules/govuk-frontend/dist/govuk/components/header/header.mjs.map +1 -1
  304. data/node_modules/govuk-frontend/dist/govuk/components/header/macro-options.json +1 -1
  305. data/node_modules/govuk-frontend/dist/govuk/components/header/template-default.html +13 -16
  306. data/node_modules/govuk-frontend/dist/govuk/components/header/template-full-width-with-navigation.html +35 -36
  307. data/node_modules/govuk-frontend/dist/govuk/components/header/template-full-width.html +13 -16
  308. data/node_modules/govuk-frontend/dist/govuk/components/header/template-navigation-item-with-html.html +35 -36
  309. data/node_modules/govuk-frontend/dist/govuk/components/header/template-navigation-item-with-text-without-link.html +29 -30
  310. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-custom-menu-button-label.html +40 -41
  311. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-custom-menu-button-text.html +40 -41
  312. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-custom-navigation-label.html +40 -41
  313. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-large-navigation.html +100 -101
  314. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-navigation.html +40 -41
  315. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-product-name.html +13 -16
  316. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-service-name-and-navigation.html +40 -41
  317. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-service-name-but-no-service-url.html +13 -16
  318. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-service-name.html +13 -16
  319. data/node_modules/govuk-frontend/dist/govuk/components/header/template-with-st-edwards-crown.html +21 -0
  320. data/node_modules/govuk-frontend/dist/govuk/components/header/template.njk +31 -26
  321. data/node_modules/govuk-frontend/dist/govuk/components/hint/fixtures.json +6 -0
  322. data/node_modules/govuk-frontend/dist/govuk/components/hint/template.njk +3 -1
  323. data/node_modules/govuk-frontend/dist/govuk/components/input/_index.scss +7 -4
  324. data/node_modules/govuk-frontend/dist/govuk/components/input/_index.scss.map +1 -1
  325. data/node_modules/govuk-frontend/dist/govuk/components/input/fixtures.json +138 -25
  326. data/node_modules/govuk-frontend/dist/govuk/components/input/macro-options.json +67 -1
  327. data/node_modules/govuk-frontend/dist/govuk/components/input/template-disabled.html +6 -0
  328. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-autocapitalize-turned-off.html +6 -0
  329. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-error-and-hint.html +12 -0
  330. data/node_modules/govuk-frontend/dist/govuk/components/input/template-with-error-message.html +2 -5
  331. data/node_modules/govuk-frontend/dist/govuk/components/input/template.njk +70 -14
  332. data/node_modules/govuk-frontend/dist/govuk/components/inset-text/fixtures.json +7 -1
  333. data/node_modules/govuk-frontend/dist/govuk/components/inset-text/template-with-html.html +8 -9
  334. data/node_modules/govuk-frontend/dist/govuk/components/inset-text/template.njk +4 -2
  335. data/node_modules/govuk-frontend/dist/govuk/components/label/fixtures.json +17 -0
  336. data/node_modules/govuk-frontend/dist/govuk/components/label/template.njk +3 -1
  337. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/_index.scss +3 -2
  338. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/_index.scss.map +1 -1
  339. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/fixtures.json +50 -26
  340. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.bundle.js +96 -37
  341. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.bundle.js.map +1 -1
  342. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.bundle.mjs +96 -37
  343. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.bundle.mjs.map +1 -1
  344. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.mjs +12 -1
  345. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.mjs.map +1 -1
  346. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-auto-focus-disabled-with-type-as-success.html +4 -1
  347. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-auto-focus-explicitly-enabled-with-type-as-success.html +4 -1
  348. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-custom-tabindex.html +4 -1
  349. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-default.html +4 -1
  350. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-paragraph-as-html-heading.html +3 -2
  351. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-rolealert-overridden-to-roleregion-with-type-as-success.html +4 -1
  352. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-success-with-custom-html.html +9 -8
  353. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-with-a-list.html +9 -8
  354. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-with-long-heading.html +4 -1
  355. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-with-lots-of-content.html +12 -9
  356. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-with-text-as-html.html +8 -5
  357. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template-with-type-as-success.html +4 -1
  358. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/template.njk +11 -7
  359. data/node_modules/govuk-frontend/dist/govuk/components/pagination/_index.scss +24 -37
  360. data/node_modules/govuk-frontend/dist/govuk/components/pagination/_index.scss.map +1 -1
  361. data/node_modules/govuk-frontend/dist/govuk/components/pagination/fixtures.json +30 -15
  362. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-default.html +38 -23
  363. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-first-page.html +28 -16
  364. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-last-page.html +29 -20
  365. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-custom-accessible-labels-on-item-links.html +38 -23
  366. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-custom-link-and-item-text.html +38 -23
  367. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-custom-navigation-landmark.html +38 -23
  368. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-many-pages.html +64 -39
  369. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-next-only.html +11 -4
  370. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-prev-and-next-only-and-labels.html +25 -13
  371. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-prev-and-next-only-and-very-long-labels.html +25 -13
  372. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-prev-and-next-only-in-a-different-language.html +21 -11
  373. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-prev-and-next-only.html +21 -11
  374. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template-with-previous-only.html +11 -7
  375. data/node_modules/govuk-frontend/dist/govuk/components/pagination/template.njk +78 -63
  376. data/node_modules/govuk-frontend/dist/govuk/components/panel/_index.scss +14 -10
  377. data/node_modules/govuk-frontend/dist/govuk/components/panel/_index.scss.map +1 -1
  378. data/node_modules/govuk-frontend/dist/govuk/components/panel/fixtures.json +9 -0
  379. data/node_modules/govuk-frontend/dist/govuk/components/panel/template.njk +6 -3
  380. data/node_modules/govuk-frontend/dist/govuk/components/password-input/_index.scss +57 -0
  381. data/node_modules/govuk-frontend/dist/govuk/components/password-input/_index.scss.map +1 -0
  382. data/node_modules/govuk-frontend/dist/govuk/components/password-input/_password-input.scss +4 -0
  383. data/node_modules/govuk-frontend/dist/govuk/components/password-input/_password-input.scss.map +1 -0
  384. data/node_modules/govuk-frontend/dist/govuk/components/password-input/fixtures.json +196 -0
  385. data/node_modules/govuk-frontend/dist/govuk/components/password-input/macro-options.json +181 -0
  386. data/node_modules/govuk-frontend/dist/govuk/components/password-input/macro.njk +3 -0
  387. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.bundle.js +528 -0
  388. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.bundle.js.map +1 -0
  389. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.bundle.mjs +520 -0
  390. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.bundle.mjs.map +1 -0
  391. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.mjs +163 -0
  392. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.mjs.map +1 -0
  393. data/node_modules/govuk-frontend/dist/govuk/components/password-input/template-default.html +11 -0
  394. data/node_modules/govuk-frontend/dist/govuk/components/password-input/template-with-error-message.html +17 -0
  395. data/node_modules/govuk-frontend/dist/govuk/components/password-input/template-with-hint-text.html +14 -0
  396. data/node_modules/govuk-frontend/dist/govuk/components/password-input/template-with-input-width-class.html +11 -0
  397. data/node_modules/govuk-frontend/dist/govuk/components/password-input/template-with-label-as-page-heading.html +13 -0
  398. data/node_modules/govuk-frontend/dist/govuk/components/password-input/template-with-new-password-autocomplete.html +11 -0
  399. data/node_modules/govuk-frontend/dist/govuk/components/password-input/template-with-translations.html +11 -0
  400. data/node_modules/govuk-frontend/dist/govuk/components/password-input/template.njk +91 -0
  401. data/node_modules/govuk-frontend/dist/govuk/components/phase-banner/_index.scss +6 -8
  402. data/node_modules/govuk-frontend/dist/govuk/components/phase-banner/_index.scss.map +1 -1
  403. data/node_modules/govuk-frontend/dist/govuk/components/phase-banner/fixtures.json +7 -0
  404. data/node_modules/govuk-frontend/dist/govuk/components/phase-banner/template.njk +4 -2
  405. data/node_modules/govuk-frontend/dist/govuk/components/radios/_index.scss +11 -6
  406. data/node_modules/govuk-frontend/dist/govuk/components/radios/_index.scss.map +1 -1
  407. data/node_modules/govuk-frontend/dist/govuk/components/radios/fixtures.json +113 -48
  408. data/node_modules/govuk-frontend/dist/govuk/components/radios/macro-options.json +41 -1
  409. data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.bundle.js +8 -0
  410. data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.bundle.js.map +1 -1
  411. data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.bundle.mjs +8 -0
  412. data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.bundle.mjs.map +1 -1
  413. data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.mjs.map +1 -1
  414. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-default.html +8 -8
  415. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-inline.html +8 -8
  416. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-prechecked-using-value.html +8 -8
  417. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-prechecked.html +8 -8
  418. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-small-inline-extreme.html +40 -40
  419. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-small-inline.html +12 -12
  420. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-small-with-a-divider.html +13 -12
  421. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-small-with-conditional-reveal.html +15 -16
  422. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-small-with-disabled.html +12 -12
  423. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-small-with-error.html +12 -12
  424. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-small-with-hint.html +13 -13
  425. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-small-with-long-text.html +12 -12
  426. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-small.html +12 -12
  427. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-a-divider.html +13 -12
  428. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-a-medium-legend.html +8 -8
  429. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-conditional-item-checked.html +21 -24
  430. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-conditional-items-and-pre-checked-value.html +21 -24
  431. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-conditional-items-with-special-characters.html +21 -24
  432. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-conditional-items.html +21 -24
  433. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-disabled.html +10 -10
  434. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-fieldset-and-error-message.html +8 -8
  435. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-hints-on-items.html +10 -10
  436. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-idprefix.html +8 -8
  437. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-legend-as-page-heading.html +8 -8
  438. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-optional-form-group-classes-showing-group-error.html +21 -24
  439. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-with-very-long-option-text.html +12 -12
  440. data/node_modules/govuk-frontend/dist/govuk/components/radios/template-without-fieldset.html +12 -12
  441. data/node_modules/govuk-frontend/dist/govuk/components/radios/template.njk +54 -50
  442. data/node_modules/govuk-frontend/dist/govuk/components/select/_index.scss +5 -5
  443. data/node_modules/govuk-frontend/dist/govuk/components/select/_index.scss.map +1 -1
  444. data/node_modules/govuk-frontend/dist/govuk/components/select/fixtures.json +42 -23
  445. data/node_modules/govuk-frontend/dist/govuk/components/select/macro-options.json +40 -0
  446. data/node_modules/govuk-frontend/dist/govuk/components/select/template-default.html +3 -6
  447. data/node_modules/govuk-frontend/dist/govuk/components/select/template-with-full-width-override.html +3 -6
  448. data/node_modules/govuk-frontend/dist/govuk/components/select/template-with-hint-text-and-error-message.html +3 -6
  449. data/node_modules/govuk-frontend/dist/govuk/components/select/template-with-label-as-page-heading.html +3 -6
  450. data/node_modules/govuk-frontend/dist/govuk/components/select/template-with-optional-form-group-classes.html +3 -6
  451. data/node_modules/govuk-frontend/dist/govuk/components/select/template-with-selected-value.html +3 -6
  452. data/node_modules/govuk-frontend/dist/govuk/components/select/template.njk +18 -8
  453. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/_index.scss +7 -4
  454. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/_index.scss.map +1 -1
  455. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/fixtures.json +9 -0
  456. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.bundle.js +8 -0
  457. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.bundle.js.map +1 -1
  458. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.bundle.mjs +8 -0
  459. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.bundle.mjs.map +1 -1
  460. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.mjs.map +1 -1
  461. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/template.njk +4 -1
  462. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/_index.scss +2 -1
  463. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/_index.scss.map +1 -1
  464. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/fixtures.json +63 -32
  465. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-as-a-summary-card-with-a-custom-header-level.html +25 -20
  466. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-as-a-summary-card-with-a-html-header.html +25 -20
  467. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-as-a-summary-card-with-a-text-header.html +25 -20
  468. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-as-a-summary-card-with-actions-plus-summary-list-actions.html +46 -29
  469. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-as-a-summary-card-with-actions.html +33 -23
  470. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-check-your-answers.html +96 -97
  471. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-default.html +35 -36
  472. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-extreme.html +261 -70
  473. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-no-border-on-last-row.html +35 -36
  474. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-no-border.html +35 -36
  475. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-overridden-widths.html +58 -45
  476. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-translated.html +51 -45
  477. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-with-actions.html +58 -45
  478. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-with-no-first-action.html +58 -59
  479. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template-with-some-actions.html +45 -39
  480. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/template.njk +68 -65
  481. data/node_modules/govuk-frontend/dist/govuk/components/table/_index.scss +10 -0
  482. data/node_modules/govuk-frontend/dist/govuk/components/table/_index.scss.map +1 -1
  483. data/node_modules/govuk-frontend/dist/govuk/components/table/fixtures.json +93 -21
  484. data/node_modules/govuk-frontend/dist/govuk/components/table/template-default.html +15 -15
  485. data/node_modules/govuk-frontend/dist/govuk/components/table/template-table-with-head-and-caption.html +15 -15
  486. data/node_modules/govuk-frontend/dist/govuk/components/table/template-table-with-head.html +15 -15
  487. data/node_modules/govuk-frontend/dist/govuk/components/table/template-with-small-text-modifier-for-tables-with-a-lot-of-data.html +19 -0
  488. data/node_modules/govuk-frontend/dist/govuk/components/table/template.njk +43 -31
  489. data/node_modules/govuk-frontend/dist/govuk/components/tabs/fixtures.json +27 -13
  490. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.bundle.js +13 -11
  491. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.bundle.js.map +1 -1
  492. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.bundle.mjs +13 -11
  493. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.bundle.mjs.map +1 -1
  494. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.mjs +5 -11
  495. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.mjs.map +1 -1
  496. data/node_modules/govuk-frontend/dist/govuk/components/tabs/template-default.html +110 -113
  497. data/node_modules/govuk-frontend/dist/govuk/components/tabs/template-tabs-with-anchor-in-panel.html +19 -21
  498. data/node_modules/govuk-frontend/dist/govuk/components/tabs/template.njk +30 -18
  499. data/node_modules/govuk-frontend/dist/govuk/components/tag/_index.scss +11 -8
  500. data/node_modules/govuk-frontend/dist/govuk/components/tag/_index.scss.map +1 -1
  501. data/node_modules/govuk-frontend/dist/govuk/components/tag/fixtures.json +14 -0
  502. data/node_modules/govuk-frontend/dist/govuk/components/tag/template.njk +5 -2
  503. data/node_modules/govuk-frontend/dist/govuk/components/task-list/_index.scss +12 -10
  504. data/node_modules/govuk-frontend/dist/govuk/components/task-list/_index.scss.map +1 -1
  505. data/node_modules/govuk-frontend/dist/govuk/components/task-list/fixtures.json +54 -10
  506. data/node_modules/govuk-frontend/dist/govuk/components/task-list/template-default.html +35 -28
  507. data/node_modules/govuk-frontend/dist/govuk/components/task-list/template-example-with-3-states.html +47 -38
  508. data/node_modules/govuk-frontend/dist/govuk/components/task-list/template-example-with-all-possible-colours.html +141 -116
  509. data/node_modules/govuk-frontend/dist/govuk/components/task-list/template-example-with-hint-text-and-additional-states.html +72 -59
  510. data/node_modules/govuk-frontend/dist/govuk/components/task-list/template-example-with-very-long-single-word-tags.html +35 -28
  511. data/node_modules/govuk-frontend/dist/govuk/components/task-list/template-with-empty-values.html +27 -0
  512. data/node_modules/govuk-frontend/dist/govuk/components/task-list/template.njk +33 -23
  513. data/node_modules/govuk-frontend/dist/govuk/components/textarea/_index.scss +3 -3
  514. data/node_modules/govuk-frontend/dist/govuk/components/textarea/_index.scss.map +1 -1
  515. data/node_modules/govuk-frontend/dist/govuk/components/textarea/fixtures.json +17 -0
  516. data/node_modules/govuk-frontend/dist/govuk/components/textarea/macro-options.json +40 -0
  517. data/node_modules/govuk-frontend/dist/govuk/components/textarea/template.njk +10 -2
  518. data/node_modules/govuk-frontend/dist/govuk/components/warning-text/_index.scss +5 -5
  519. data/node_modules/govuk-frontend/dist/govuk/components/warning-text/_index.scss.map +1 -1
  520. data/node_modules/govuk-frontend/dist/govuk/components/warning-text/fixtures.json +8 -0
  521. data/node_modules/govuk-frontend/dist/govuk/components/warning-text/template.njk +3 -2
  522. data/node_modules/govuk-frontend/dist/govuk/core/_all.scss +8 -6
  523. data/node_modules/govuk-frontend/dist/govuk/core/_all.scss.map +1 -1
  524. data/node_modules/govuk-frontend/dist/govuk/core/_govuk-frontend-properties.scss +1 -1
  525. data/node_modules/govuk-frontend/dist/govuk/core/_index.scss +8 -0
  526. data/node_modules/govuk-frontend/dist/govuk/core/_index.scss.map +1 -0
  527. data/node_modules/govuk-frontend/dist/govuk/errors/index.mjs.map +1 -1
  528. data/node_modules/govuk-frontend/dist/govuk/govuk-frontend-component.mjs.map +1 -1
  529. data/node_modules/govuk-frontend/dist/govuk/govuk-frontend.min.css +2 -2
  530. data/node_modules/govuk-frontend/dist/govuk/govuk-frontend.min.css.map +1 -1
  531. data/node_modules/govuk-frontend/dist/govuk/govuk-frontend.min.js +1 -1
  532. data/node_modules/govuk-frontend/dist/govuk/govuk-frontend.min.js.map +1 -1
  533. data/node_modules/govuk-frontend/dist/govuk/helpers/_all.scss +8 -12
  534. data/node_modules/govuk-frontend/dist/govuk/helpers/_all.scss.map +1 -1
  535. data/node_modules/govuk-frontend/dist/govuk/helpers/_colour.scss +44 -8
  536. data/node_modules/govuk-frontend/dist/govuk/helpers/_colour.scss.map +1 -1
  537. data/node_modules/govuk-frontend/dist/govuk/helpers/_grid.scss +1 -1
  538. data/node_modules/govuk-frontend/dist/govuk/helpers/_grid.scss.map +1 -1
  539. data/node_modules/govuk-frontend/dist/govuk/helpers/_index.scss +14 -0
  540. data/node_modules/govuk-frontend/dist/govuk/helpers/_index.scss.map +1 -0
  541. data/node_modules/govuk-frontend/dist/govuk/helpers/_links.scss +2 -2
  542. data/node_modules/govuk-frontend/dist/govuk/helpers/_links.scss.map +1 -1
  543. data/node_modules/govuk-frontend/dist/govuk/helpers/_shape-arrow.scss +1 -1
  544. data/node_modules/govuk-frontend/dist/govuk/helpers/_shape-arrow.scss.map +1 -1
  545. data/node_modules/govuk-frontend/dist/govuk/helpers/_typography.scss +19 -0
  546. data/node_modules/govuk-frontend/dist/govuk/helpers/_typography.scss.map +1 -1
  547. data/node_modules/govuk-frontend/dist/govuk/helpers/_visually-hidden.scss +30 -62
  548. data/node_modules/govuk-frontend/dist/govuk/helpers/_visually-hidden.scss.map +1 -1
  549. data/node_modules/govuk-frontend/dist/govuk/i18n.mjs +18 -12
  550. data/node_modules/govuk-frontend/dist/govuk/i18n.mjs.map +1 -1
  551. data/node_modules/govuk-frontend/dist/govuk/index.scss +11 -0
  552. data/node_modules/govuk-frontend/dist/govuk/index.scss.map +1 -0
  553. data/node_modules/govuk-frontend/dist/govuk/init.mjs +100 -0
  554. data/node_modules/govuk-frontend/dist/govuk/init.mjs.map +1 -0
  555. data/node_modules/govuk-frontend/dist/govuk/macros/attributes.njk +94 -0
  556. data/node_modules/govuk-frontend/dist/govuk/objects/_all.scss +8 -6
  557. data/node_modules/govuk-frontend/dist/govuk/objects/_all.scss.map +1 -1
  558. data/node_modules/govuk-frontend/dist/govuk/objects/_index.scss +8 -0
  559. data/node_modules/govuk-frontend/dist/govuk/objects/_index.scss.map +1 -0
  560. data/node_modules/govuk-frontend/dist/govuk/overrides/_all.scss +7 -5
  561. data/node_modules/govuk-frontend/dist/govuk/overrides/_all.scss.map +1 -1
  562. data/node_modules/govuk-frontend/dist/govuk/overrides/_index.scss +7 -0
  563. data/node_modules/govuk-frontend/dist/govuk/overrides/_index.scss.map +1 -0
  564. data/node_modules/govuk-frontend/dist/govuk/overrides/_typography.scss +10 -0
  565. data/node_modules/govuk-frontend/dist/govuk/overrides/_typography.scss.map +1 -1
  566. data/node_modules/govuk-frontend/dist/govuk/settings/_all.scss +8 -21
  567. data/node_modules/govuk-frontend/dist/govuk/settings/_all.scss.map +1 -1
  568. data/node_modules/govuk-frontend/dist/govuk/settings/_colours-organisations.scss +235 -9
  569. data/node_modules/govuk-frontend/dist/govuk/settings/_colours-organisations.scss.map +1 -1
  570. data/node_modules/govuk-frontend/dist/govuk/settings/_index.scss +23 -0
  571. data/node_modules/govuk-frontend/dist/govuk/settings/_index.scss.map +1 -0
  572. data/node_modules/govuk-frontend/dist/govuk/settings/_measurements.scss +1 -1
  573. data/node_modules/govuk-frontend/dist/govuk/settings/_measurements.scss.map +1 -1
  574. data/node_modules/govuk-frontend/dist/govuk/settings/_media-queries.scss +1 -1
  575. data/node_modules/govuk-frontend/dist/govuk/settings/_media-queries.scss.map +1 -1
  576. data/node_modules/govuk-frontend/dist/govuk/settings/_typography-responsive.scss +172 -13
  577. data/node_modules/govuk-frontend/dist/govuk/settings/_typography-responsive.scss.map +1 -1
  578. data/node_modules/govuk-frontend/dist/govuk/settings/_warnings.scss +8 -3
  579. data/node_modules/govuk-frontend/dist/govuk/settings/_warnings.scss.map +1 -1
  580. data/node_modules/govuk-frontend/dist/govuk/template.njk +3 -2
  581. data/node_modules/govuk-frontend/dist/govuk/tools/_all.scss +8 -5
  582. data/node_modules/govuk-frontend/dist/govuk/tools/_all.scss.map +1 -1
  583. data/node_modules/govuk-frontend/dist/govuk/tools/_index.scss +7 -0
  584. data/node_modules/govuk-frontend/dist/govuk/tools/_index.scss.map +1 -0
  585. data/node_modules/govuk-frontend/dist/govuk/utilities/_all.scss +8 -2
  586. data/node_modules/govuk-frontend/dist/govuk/utilities/_all.scss.map +1 -1
  587. data/node_modules/govuk-frontend/dist/govuk/utilities/_index.scss +4 -0
  588. data/node_modules/govuk-frontend/dist/govuk/utilities/_index.scss.map +1 -0
  589. data/node_modules/govuk-frontend/govuk-prototype-kit.config.json +5 -1
  590. data/node_modules/govuk-frontend/package.json +16 -15
  591. metadata +60 -3
@@ -1,78 +1,15 @@
1
1
  export { version } from './common/govuk-frontend-version.mjs';
2
- import { isSupported } from './common/index.mjs';
3
- import { Accordion } from './components/accordion/accordion.mjs';
4
- import { Button } from './components/button/button.mjs';
5
- import { CharacterCount } from './components/character-count/character-count.mjs';
6
- import { Checkboxes } from './components/checkboxes/checkboxes.mjs';
7
- import { ErrorSummary } from './components/error-summary/error-summary.mjs';
8
- import { ExitThisPage } from './components/exit-this-page/exit-this-page.mjs';
9
- import { Header } from './components/header/header.mjs';
10
- import { NotificationBanner } from './components/notification-banner/notification-banner.mjs';
11
- import { Radios } from './components/radios/radios.mjs';
12
- import { SkipLink } from './components/skip-link/skip-link.mjs';
13
- import { Tabs } from './components/tabs/tabs.mjs';
14
- import { SupportError } from './errors/index.mjs';
15
-
16
- /**
17
- * Initialise all components
18
- *
19
- * Use the `data-module` attributes to find, instantiate and init all of the
20
- * components provided as part of GOV.UK Frontend.
21
- *
22
- * @param {Config & { scope?: Element }} [config] - Config for all components (with optional scope)
23
- */
24
- function initAll(config) {
25
- var _config$scope;
26
- config = typeof config !== 'undefined' ? config : {};
27
- if (!isSupported()) {
28
- console.log(new SupportError());
29
- return;
30
- }
31
- const components = [[Accordion, config.accordion], [Button, config.button], [CharacterCount, config.characterCount], [Checkboxes], [ErrorSummary, config.errorSummary], [ExitThisPage, config.exitThisPage], [Header], [NotificationBanner, config.notificationBanner], [Radios], [SkipLink], [Tabs]];
32
- const $scope = (_config$scope = config.scope) != null ? _config$scope : document;
33
- components.forEach(([Component, config]) => {
34
- const $elements = $scope.querySelectorAll(`[data-module="${Component.moduleName}"]`);
35
- $elements.forEach($element => {
36
- try {
37
- 'defaults' in Component ? new Component($element, config) : new Component($element);
38
- } catch (error) {
39
- console.log(error);
40
- }
41
- });
42
- });
43
- }
44
-
45
- /**
46
- * Config for all components via `initAll()`
47
- *
48
- * @typedef {object} Config
49
- * @property {AccordionConfig} [accordion] - Accordion config
50
- * @property {ButtonConfig} [button] - Button config
51
- * @property {CharacterCountConfig} [characterCount] - Character Count config
52
- * @property {ErrorSummaryConfig} [errorSummary] - Error Summary config
53
- * @property {ExitThisPageConfig} [exitThisPage] - Exit This Page config
54
- * @property {NotificationBannerConfig} [notificationBanner] - Notification Banner config
55
- */
56
-
57
- /**
58
- * Config for individual components
59
- *
60
- * @typedef {import('./components/accordion/accordion.mjs').AccordionConfig} AccordionConfig
61
- * @typedef {import('./components/accordion/accordion.mjs').AccordionTranslations} AccordionTranslations
62
- * @typedef {import('./components/button/button.mjs').ButtonConfig} ButtonConfig
63
- * @typedef {import('./components/character-count/character-count.mjs').CharacterCountConfig} CharacterCountConfig
64
- * @typedef {import('./components/character-count/character-count.mjs').CharacterCountTranslations} CharacterCountTranslations
65
- * @typedef {import('./components/error-summary/error-summary.mjs').ErrorSummaryConfig} ErrorSummaryConfig
66
- * @typedef {import('./components/exit-this-page/exit-this-page.mjs').ExitThisPageConfig} ExitThisPageConfig
67
- * @typedef {import('./components/exit-this-page/exit-this-page.mjs').ExitThisPageTranslations} ExitThisPageTranslations
68
- * @typedef {import('./components/notification-banner/notification-banner.mjs').NotificationBannerConfig} NotificationBannerConfig
69
- */
70
-
71
- /**
72
- * Component config keys, e.g. `accordion` and `characterCount`
73
- *
74
- * @typedef {keyof Config} ConfigKey
75
- */
76
-
77
- export { Accordion, Button, CharacterCount, Checkboxes, ErrorSummary, ExitThisPage, Header, NotificationBanner, Radios, SkipLink, Tabs, initAll };
2
+ export { Accordion } from './components/accordion/accordion.mjs';
3
+ export { Button } from './components/button/button.mjs';
4
+ export { CharacterCount } from './components/character-count/character-count.mjs';
5
+ export { Checkboxes } from './components/checkboxes/checkboxes.mjs';
6
+ export { ErrorSummary } from './components/error-summary/error-summary.mjs';
7
+ export { ExitThisPage } from './components/exit-this-page/exit-this-page.mjs';
8
+ export { Header } from './components/header/header.mjs';
9
+ export { NotificationBanner } from './components/notification-banner/notification-banner.mjs';
10
+ export { PasswordInput } from './components/password-input/password-input.mjs';
11
+ export { Radios } from './components/radios/radios.mjs';
12
+ export { SkipLink } from './components/skip-link/skip-link.mjs';
13
+ export { Tabs } from './components/tabs/tabs.mjs';
14
+ export { createAll, initAll } from './init.mjs';
78
15
  //# sourceMappingURL=all.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"all.mjs","sources":["../../src/govuk/all.mjs"],"sourcesContent":["/* eslint-disable no-new */\n\nimport { version } from './common/govuk-frontend-version.mjs'\nimport { isSupported } from './common/index.mjs'\nimport { Accordion } from './components/accordion/accordion.mjs'\nimport { Button } from './components/button/button.mjs'\nimport { CharacterCount } from './components/character-count/character-count.mjs'\nimport { Checkboxes } from './components/checkboxes/checkboxes.mjs'\nimport { ErrorSummary } from './components/error-summary/error-summary.mjs'\nimport { ExitThisPage } from './components/exit-this-page/exit-this-page.mjs'\nimport { Header } from './components/header/header.mjs'\nimport { NotificationBanner } from './components/notification-banner/notification-banner.mjs'\nimport { Radios } from './components/radios/radios.mjs'\nimport { SkipLink } from './components/skip-link/skip-link.mjs'\nimport { Tabs } from './components/tabs/tabs.mjs'\nimport { SupportError } from './errors/index.mjs'\n\n/**\n * Initialise all components\n *\n * Use the `data-module` attributes to find, instantiate and init all of the\n * components provided as part of GOV.UK Frontend.\n *\n * @param {Config & { scope?: Element }} [config] - Config for all components (with optional scope)\n */\nfunction initAll(config) {\n config = typeof config !== 'undefined' ? config : {}\n\n // Skip initialisation when GOV.UK Frontend is not supported\n if (!isSupported()) {\n console.log(new SupportError())\n return\n }\n\n const components = /** @type {const} */ ([\n [Accordion, config.accordion],\n [Button, config.button],\n [CharacterCount, config.characterCount],\n [Checkboxes],\n [ErrorSummary, config.errorSummary],\n [ExitThisPage, config.exitThisPage],\n [Header],\n [NotificationBanner, config.notificationBanner],\n [Radios],\n [SkipLink],\n [Tabs]\n ])\n\n // Allow the user to initialise GOV.UK Frontend in only certain sections of the page\n // Defaults to the entire document if nothing is set.\n const $scope = config.scope ?? document\n\n components.forEach(([Component, config]) => {\n const $elements = $scope.querySelectorAll(\n `[data-module=\"${Component.moduleName}\"]`\n )\n\n $elements.forEach(($element) => {\n try {\n // Only pass config to components that accept it\n 'defaults' in Component\n ? new Component($element, config)\n : new Component($element)\n } catch (error) {\n console.log(error)\n }\n })\n })\n}\n\nexport {\n initAll,\n version,\n\n // Components\n Accordion,\n Button,\n CharacterCount,\n Checkboxes,\n ErrorSummary,\n ExitThisPage,\n Header,\n NotificationBanner,\n Radios,\n SkipLink,\n Tabs\n}\n\n/**\n * Config for all components via `initAll()`\n *\n * @typedef {object} Config\n * @property {AccordionConfig} [accordion] - Accordion config\n * @property {ButtonConfig} [button] - Button config\n * @property {CharacterCountConfig} [characterCount] - Character Count config\n * @property {ErrorSummaryConfig} [errorSummary] - Error Summary config\n * @property {ExitThisPageConfig} [exitThisPage] - Exit This Page config\n * @property {NotificationBannerConfig} [notificationBanner] - Notification Banner config\n */\n\n/**\n * Config for individual components\n *\n * @typedef {import('./components/accordion/accordion.mjs').AccordionConfig} AccordionConfig\n * @typedef {import('./components/accordion/accordion.mjs').AccordionTranslations} AccordionTranslations\n * @typedef {import('./components/button/button.mjs').ButtonConfig} ButtonConfig\n * @typedef {import('./components/character-count/character-count.mjs').CharacterCountConfig} CharacterCountConfig\n * @typedef {import('./components/character-count/character-count.mjs').CharacterCountTranslations} CharacterCountTranslations\n * @typedef {import('./components/error-summary/error-summary.mjs').ErrorSummaryConfig} ErrorSummaryConfig\n * @typedef {import('./components/exit-this-page/exit-this-page.mjs').ExitThisPageConfig} ExitThisPageConfig\n * @typedef {import('./components/exit-this-page/exit-this-page.mjs').ExitThisPageTranslations} ExitThisPageTranslations\n * @typedef {import('./components/notification-banner/notification-banner.mjs').NotificationBannerConfig} NotificationBannerConfig\n */\n\n/**\n * Component config keys, e.g. `accordion` and `characterCount`\n *\n * @typedef {keyof Config} ConfigKey\n */\n"],"names":["initAll","config","_config$scope","isSupported","console","log","SupportError","components","Accordion","accordion","Button","button","CharacterCount","characterCount","Checkboxes","ErrorSummary","errorSummary","ExitThisPage","exitThisPage","Header","NotificationBanner","notificationBanner","Radios","SkipLink","Tabs","$scope","scope","document","forEach","Component","$elements","querySelectorAll","moduleName","$element","error"],"mappings":";;;;;;;;;;;;;;;AAiBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,OAAOA,CAACC,MAAM,EAAE;AAAA,EAAA,IAAAC,aAAA,CAAA;EACvBD,MAAM,GAAG,OAAOA,MAAM,KAAK,WAAW,GAAGA,MAAM,GAAG,EAAE,CAAA;AAGpD,EAAA,IAAI,CAACE,WAAW,EAAE,EAAE;AAClBC,IAAAA,OAAO,CAACC,GAAG,CAAC,IAAIC,YAAY,EAAE,CAAC,CAAA;AAC/B,IAAA,OAAA;AACF,GAAA;AAEA,EAAA,MAAMC,UAAU,GAAyB,CACvC,CAACC,SAAS,EAAEP,MAAM,CAACQ,SAAS,CAAC,EAC7B,CAACC,MAAM,EAAET,MAAM,CAACU,MAAM,CAAC,EACvB,CAACC,cAAc,EAAEX,MAAM,CAACY,cAAc,CAAC,EACvC,CAACC,UAAU,CAAC,EACZ,CAACC,YAAY,EAAEd,MAAM,CAACe,YAAY,CAAC,EACnC,CAACC,YAAY,EAAEhB,MAAM,CAACiB,YAAY,CAAC,EACnC,CAACC,MAAM,CAAC,EACR,CAACC,kBAAkB,EAAEnB,MAAM,CAACoB,kBAAkB,CAAC,EAC/C,CAACC,MAAM,CAAC,EACR,CAACC,QAAQ,CAAC,EACV,CAACC,IAAI,CAAC,CACN,CAAA;EAIF,MAAMC,MAAM,GAAAvB,CAAAA,aAAA,GAAGD,MAAM,CAACyB,KAAK,KAAA,IAAA,GAAAxB,aAAA,GAAIyB,QAAQ,CAAA;EAEvCpB,UAAU,CAACqB,OAAO,CAAC,CAAC,CAACC,SAAS,EAAE5B,MAAM,CAAC,KAAK;IAC1C,MAAM6B,SAAS,GAAGL,MAAM,CAACM,gBAAgB,CACtC,CAAA,cAAA,EAAgBF,SAAS,CAACG,UAAW,CAAA,EAAA,CACxC,CAAC,CAAA;AAEDF,IAAAA,SAAS,CAACF,OAAO,CAAEK,QAAQ,IAAK;MAC9B,IAAI;AAEF,QAAA,UAAU,IAAIJ,SAAS,GACnB,IAAIA,SAAS,CAACI,QAAQ,EAAEhC,MAAM,CAAC,GAC/B,IAAI4B,SAAS,CAACI,QAAQ,CAAC,CAAA;OAC5B,CAAC,OAAOC,KAAK,EAAE;AACd9B,QAAAA,OAAO,CAACC,GAAG,CAAC6B,KAAK,CAAC,CAAA;AACpB,OAAA;AACF,KAAC,CAAC,CAAA;AACJ,GAAC,CAAC,CAAA;AACJ,CAAA;;AAoBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;"}
1
+ {"version":3,"file":"all.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
@@ -1,11 +1,3 @@
1
- @import "base";
2
-
3
- @import "core/all";
4
- @import "objects/all";
5
-
6
- @import "components/all";
7
-
8
- @import "utilities/all";
9
- @import "overrides/all";
1
+ @import "index";
10
2
 
11
3
  /*# sourceMappingURL=all.scss.map */
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/govuk/all.scss"],"names":[],"mappings":"AAAA,cAAc;;AAEd,kBAAkB;AAClB,qBAAqB;;AAErB,wBAAwB;;AAExB,uBAAuB;AACvB,uBAAuB","file":"all.scss","sourcesContent":["@import \"base\";\n\n@import \"core/all\";\n@import \"objects/all\";\n\n@import \"components/all\";\n\n@import \"utilities/all\";\n@import \"overrides/all\";\n"]}
1
+ {"version":3,"sources":["../../src/govuk/all.scss"],"names":[],"mappings":"AAAA,eAAe","file":"all.scss","sourcesContent":["@import \"index\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"closest-attribute-value.mjs","sources":["../../../src/govuk/common/closest-attribute-value.mjs"],"sourcesContent":["/**\n * Returns the value of the given attribute closest to the given element (including itself)\n *\n * @internal\n * @param {Element} $element - The element to start walking the DOM tree up\n * @param {string} attributeName - The name of the attribute\n * @returns {string | null} Attribute value\n */\nexport function closestAttributeValue($element, attributeName) {\n const $closestElementWithAttribute = $element.closest(`[${attributeName}]`)\n return $closestElementWithAttribute\n ? $closestElementWithAttribute.getAttribute(attributeName)\n : null\n}\n"],"names":["closestAttributeValue","$element","attributeName","$closestElementWithAttribute","closest","getAttribute"],"mappings":"AAQO,SAASA,qBAAqBA,CAACC,QAAQ,EAAEC,aAAa,EAAE;EAC7D,MAAMC,4BAA4B,GAAGF,QAAQ,CAACG,OAAO,CAAE,CAAA,CAAA,EAAGF,aAAc,CAAA,CAAA,CAAE,CAAC,CAAA;EAC3E,OAAOC,4BAA4B,GAC/BA,4BAA4B,CAACE,YAAY,CAACH,aAAa,CAAC,GACxD,IAAI,CAAA;AACV;;;;"}
1
+ {"version":3,"file":"closest-attribute-value.mjs","sources":["../../../src/govuk/common/closest-attribute-value.mjs"],"sourcesContent":["/**\n * Returns the value of the given attribute closest to the given element (including itself)\n *\n * @internal\n * @param {Element} $element - The element to start walking the DOM tree up\n * @param {string} attributeName - The name of the attribute\n * @returns {string | null} Attribute value\n */\nexport function closestAttributeValue($element, attributeName) {\n const $closestElementWithAttribute = $element.closest(`[${attributeName}]`)\n return $closestElementWithAttribute\n ? $closestElementWithAttribute.getAttribute(attributeName)\n : null\n}\n"],"names":["closestAttributeValue","$element","attributeName","$closestElementWithAttribute","closest","getAttribute"],"mappings":"AAQO,SAASA,qBAAqBA,CAACC,QAAQ,EAAEC,aAAa,EAAE;EAC7D,MAAMC,4BAA4B,GAAGF,QAAQ,CAACG,OAAO,CAAC,CAAA,CAAA,EAAIF,aAAa,CAAA,CAAA,CAAG,CAAC,CAAA;EAC3E,OAAOC,4BAA4B,GAC/BA,4BAA4B,CAACE,YAAY,CAACH,aAAa,CAAC,GACxD,IAAI,CAAA;AACV;;;;"}
@@ -1,4 +1,4 @@
1
- const version = '5.1.0';
1
+ const version = '5.5.0';
2
2
 
3
3
  export { version };
4
4
  //# sourceMappingURL=govuk-frontend-version.mjs.map
@@ -1,41 +1,45 @@
1
+ import { normaliseString } from './normalise-string.mjs';
2
+
1
3
  function mergeConfigs(...configObjects) {
2
- function flattenObject(configObject) {
3
- const flattenedObject = {};
4
- function flattenLoop(obj, prefix) {
5
- for (const [key, value] of Object.entries(obj)) {
6
- const prefixedKey = prefix ? `${prefix}.${key}` : key;
7
- if (value && typeof value === 'object') {
8
- flattenLoop(value, prefixedKey);
9
- } else {
10
- flattenedObject[prefixedKey] = value;
11
- }
12
- }
13
- }
14
- flattenLoop(configObject);
15
- return flattenedObject;
16
- }
17
4
  const formattedConfigObject = {};
18
5
  for (const configObject of configObjects) {
19
- const obj = flattenObject(configObject);
20
- for (const [key, value] of Object.entries(obj)) {
21
- formattedConfigObject[key] = value;
6
+ for (const key of Object.keys(configObject)) {
7
+ const option = formattedConfigObject[key];
8
+ const override = configObject[key];
9
+ if (isObject(option) && isObject(override)) {
10
+ formattedConfigObject[key] = mergeConfigs(option, override);
11
+ } else {
12
+ formattedConfigObject[key] = override;
13
+ }
22
14
  }
23
15
  }
24
16
  return formattedConfigObject;
25
17
  }
26
- function extractConfigByNamespace(configObject, namespace) {
27
- const newObject = {};
28
- for (const [key, value] of Object.entries(configObject)) {
18
+ function extractConfigByNamespace(Component, dataset, namespace) {
19
+ const property = Component.schema.properties[namespace];
20
+ if ((property == null ? void 0 : property.type) !== 'object') {
21
+ return;
22
+ }
23
+ const newObject = {
24
+ [namespace]: ({})
25
+ };
26
+ for (const [key, value] of Object.entries(dataset)) {
27
+ let current = newObject;
29
28
  const keyParts = key.split('.');
30
- if (keyParts[0] === namespace) {
31
- if (keyParts.length > 1) {
32
- keyParts.shift();
29
+ for (const [index, name] of keyParts.entries()) {
30
+ if (typeof current === 'object') {
31
+ if (index < keyParts.length - 1) {
32
+ if (!isObject(current[name])) {
33
+ current[name] = {};
34
+ }
35
+ current = current[name];
36
+ } else if (key !== namespace) {
37
+ current[name] = normaliseString(value);
38
+ }
33
39
  }
34
- const newKey = keyParts.join('.');
35
- newObject[newKey] = value;
36
40
  }
37
41
  }
38
- return newObject;
42
+ return newObject[namespace];
39
43
  }
40
44
  function getFragmentFromUrl(url) {
41
45
  if (!url.includes('#')) {
@@ -85,28 +89,44 @@ function validateConfig(schema, config) {
85
89
  const validationErrors = [];
86
90
  for (const [name, conditions] of Object.entries(schema)) {
87
91
  const errors = [];
88
- for (const {
89
- required,
90
- errorMessage
91
- } of conditions) {
92
- if (!required.every(key => !!config[key])) {
93
- errors.push(errorMessage);
92
+ if (Array.isArray(conditions)) {
93
+ for (const {
94
+ required,
95
+ errorMessage
96
+ } of conditions) {
97
+ if (!required.every(key => !!config[key])) {
98
+ errors.push(errorMessage);
99
+ }
100
+ }
101
+ if (name === 'anyOf' && !(conditions.length - errors.length >= 1)) {
102
+ validationErrors.push(...errors);
94
103
  }
95
- }
96
- if (name === 'anyOf' && !(conditions.length - errors.length >= 1)) {
97
- validationErrors.push(...errors);
98
104
  }
99
105
  }
100
106
  return validationErrors;
101
107
  }
108
+ function isArray(option) {
109
+ return Array.isArray(option);
110
+ }
111
+ function isObject(option) {
112
+ return !!option && typeof option === 'object' && !isArray(option);
113
+ }
102
114
 
103
115
  /**
104
116
  * Schema for component config
105
117
  *
106
118
  * @typedef {object} Schema
119
+ * @property {{ [field: string]: SchemaProperty | undefined }} properties - Schema properties
107
120
  * @property {SchemaCondition[]} [anyOf] - List of schema conditions
108
121
  */
109
122
 
123
+ /**
124
+ * Schema property for component config
125
+ *
126
+ * @typedef {object} SchemaProperty
127
+ * @property {'string' | 'boolean' | 'number' | 'object'} type - Property type
128
+ */
129
+
110
130
  /**
111
131
  * Schema condition for component config
112
132
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../src/govuk/common/index.mjs"],"sourcesContent":["/**\n * Common helpers which do not require polyfill.\n *\n * IMPORTANT: If a helper require a polyfill, please isolate it in its own module\n * so that the polyfill can be properly tree-shaken and does not burden\n * the components that do not need that helper\n */\n\n/**\n * Config flattening function\n *\n * Takes any number of objects, flattens them into namespaced key-value pairs,\n * (e.g. \\{'i18n.showSection': 'Show section'\\}) and combines them together, with\n * greatest priority on the LAST item passed in.\n *\n * @internal\n * @param {...{ [key: string]: unknown }} configObjects - Config object to merge\n * @returns {{ [key: string]: unknown }} A flattened object of key-value pairs.\n */\nexport function mergeConfigs(...configObjects) {\n /**\n * Function to take nested objects and flatten them to a dot-separated keyed\n * object. Doing this means we don't need to do any deep/recursive merging of\n * each of our objects, nor transform our dataset from a flat list into a\n * nested object.\n *\n * @internal\n * @param {{ [key: string]: unknown }} configObject - Deeply nested object\n * @returns {{ [key: string]: unknown }} Flattened object with dot-separated keys\n */\n function flattenObject(configObject) {\n // Prepare an empty return object\n /** @type {{ [key: string]: unknown }} */\n const flattenedObject = {}\n\n /**\n * Our flattening function, this is called recursively for each level of\n * depth in the object. At each level we prepend the previous level names to\n * the key using `prefix`.\n *\n * @internal\n * @param {Partial<{ [key: string]: unknown }>} obj - Object to flatten\n * @param {string} [prefix] - Optional dot-separated prefix\n */\n function flattenLoop(obj, prefix) {\n for (const [key, value] of Object.entries(obj)) {\n const prefixedKey = prefix ? `${prefix}.${key}` : key\n\n // If the value is a nested object, recurse over that too\n if (value && typeof value === 'object') {\n flattenLoop(value, prefixedKey)\n } else {\n // Otherwise, add this value to our return object\n flattenedObject[prefixedKey] = value\n }\n }\n }\n\n // Kick off the recursive loop\n flattenLoop(configObject)\n return flattenedObject\n }\n\n // Start with an empty object as our base\n /** @type {{ [key: string]: unknown }} */\n const formattedConfigObject = {}\n\n // Loop through each of the passed objects\n for (const configObject of configObjects) {\n const obj = flattenObject(configObject)\n\n // Push their keys one-by-one into formattedConfigObject. Any duplicate\n // keys will override the existing key with the new value.\n for (const [key, value] of Object.entries(obj)) {\n formattedConfigObject[key] = value\n }\n }\n\n return formattedConfigObject\n}\n\n/**\n * Extracts keys starting with a particular namespace from a flattened config\n * object, removing the namespace in the process.\n *\n * @internal\n * @param {{ [key: string]: unknown }} configObject - The object to extract key-value pairs from.\n * @param {string} namespace - The namespace to filter keys with.\n * @returns {{ [key: string]: unknown }} Flattened object with dot-separated key namespace removed\n */\nexport function extractConfigByNamespace(configObject, namespace) {\n /** @type {{ [key: string]: unknown }} */\n const newObject = {}\n\n for (const [key, value] of Object.entries(configObject)) {\n // Split the key into parts, using . as our namespace separator\n const keyParts = key.split('.')\n\n // Check if the first namespace matches the configured namespace\n if (keyParts[0] === namespace) {\n // Remove the first item (the namespace) from the parts array,\n // but only if there is more than one part (we don't want blank keys!)\n if (keyParts.length > 1) {\n keyParts.shift()\n }\n\n // Join the remaining parts back together\n const newKey = keyParts.join('.')\n\n // Add them to our new object\n newObject[newKey] = value\n }\n }\n\n return newObject\n}\n\n/**\n * Get hash fragment from URL\n *\n * Extract the hash fragment (everything after the hash) from a URL,\n * but not including the hash symbol\n *\n * @private\n * @param {string} url - URL\n * @returns {string | undefined} Fragment from URL, without the hash\n */\nexport function getFragmentFromUrl(url) {\n if (!url.includes('#')) {\n return undefined\n }\n\n return url.split('#').pop()\n}\n\n/**\n * Get GOV.UK Frontend breakpoint value from CSS custom property\n *\n * @private\n * @param {string} name - Breakpoint name\n * @returns {{ property: string, value?: string }} Breakpoint object\n */\nexport function getBreakpoint(name) {\n const property = `--govuk-frontend-breakpoint-${name}`\n\n // Get value from `<html>` with breakpoints on CSS :root\n const value = window\n .getComputedStyle(document.documentElement)\n .getPropertyValue(property)\n\n return {\n property,\n value: value || undefined\n }\n}\n\n/**\n * Move focus to element\n *\n * Sets tabindex to -1 to make the element programmatically focusable,\n * but removes it on blur as the element doesn't need to be focused again.\n *\n * @private\n * @template {HTMLElement} FocusElement\n * @param {FocusElement} $element - HTML element\n * @param {object} [options] - Handler options\n * @param {function(this: FocusElement): void} [options.onBeforeFocus] - Callback before focus\n * @param {function(this: FocusElement): void} [options.onBlur] - Callback on blur\n */\nexport function setFocus($element, options = {}) {\n const isFocusable = $element.getAttribute('tabindex')\n\n if (!isFocusable) {\n $element.setAttribute('tabindex', '-1')\n }\n\n /**\n * Handle element focus\n */\n function onFocus() {\n $element.addEventListener('blur', onBlur, { once: true })\n }\n\n /**\n * Handle element blur\n */\n function onBlur() {\n options.onBlur?.call($element)\n\n if (!isFocusable) {\n $element.removeAttribute('tabindex')\n }\n }\n\n // Add listener to reset element on blur, after focus\n $element.addEventListener('focus', onFocus, { once: true })\n\n // Focus element\n options.onBeforeFocus?.call($element)\n $element.focus()\n}\n\n/**\n * Checks if GOV.UK Frontend is supported on this page\n *\n * Some browsers will load and run our JavaScript but GOV.UK Frontend\n * won't be supported.\n *\n * @internal\n * @param {HTMLElement | null} [$scope] - HTML element `<body>` checked for browser support\n * @returns {boolean} Whether GOV.UK Frontend is supported on this page\n */\nexport function isSupported($scope = document.body) {\n if (!$scope) {\n return false\n }\n\n return $scope.classList.contains('govuk-frontend-supported')\n}\n\n/**\n * Validate component config by schema\n *\n * @internal\n * @param {Schema} schema - Config schema\n * @param {{ [key: string]: unknown }} config - Component config\n * @returns {string[]} List of validation errors\n */\nexport function validateConfig(schema, config) {\n const validationErrors = []\n\n // Check errors for each schema\n for (const [name, conditions] of Object.entries(schema)) {\n const errors = []\n\n // Check errors for each schema condition\n for (const { required, errorMessage } of conditions) {\n if (!required.every((key) => !!config[key])) {\n errors.push(errorMessage) // Missing config key value\n }\n }\n\n // Check one condition passes or add errors\n if (name === 'anyOf' && !(conditions.length - errors.length >= 1)) {\n validationErrors.push(...errors)\n }\n }\n\n return validationErrors\n}\n\n/**\n * Schema for component config\n *\n * @typedef {object} Schema\n * @property {SchemaCondition[]} [anyOf] - List of schema conditions\n */\n\n/**\n * Schema condition for component config\n *\n * @typedef {object} SchemaCondition\n * @property {string[]} required - List of required config fields\n * @property {string} errorMessage - Error message when required config fields not provided\n */\n"],"names":["mergeConfigs","configObjects","flattenObject","configObject","flattenedObject","flattenLoop","obj","prefix","key","value","Object","entries","prefixedKey","formattedConfigObject","extractConfigByNamespace","namespace","newObject","keyParts","split","length","shift","newKey","join","getFragmentFromUrl","url","includes","undefined","pop","getBreakpoint","name","property","window","getComputedStyle","document","documentElement","getPropertyValue","setFocus","$element","options","_options$onBeforeFocu","isFocusable","getAttribute","setAttribute","onFocus","addEventListener","onBlur","once","_options$onBlur","call","removeAttribute","onBeforeFocus","focus","isSupported","$scope","body","classList","contains","validateConfig","schema","config","validationErrors","conditions","errors","required","errorMessage","every","push"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../src/govuk/common/index.mjs"],"sourcesContent":["import { normaliseString } from './normalise-string.mjs'\n\n/**\n * Common helpers which do not require polyfill.\n *\n * IMPORTANT: If a helper require a polyfill, please isolate it in its own module\n * so that the polyfill can be properly tree-shaken and does not burden\n * the components that do not need that helper\n */\n\n/**\n * Config merging function\n *\n * Takes any number of objects and combines them together, with\n * greatest priority on the LAST item passed in.\n *\n * @internal\n * @param {...{ [key: string]: unknown }} configObjects - Config objects to merge\n * @returns {{ [key: string]: unknown }} A merged config object\n */\nexport function mergeConfigs(...configObjects) {\n // Start with an empty object as our base\n /** @type {{ [key: string]: unknown }} */\n const formattedConfigObject = {}\n\n // Loop through each of the passed objects\n for (const configObject of configObjects) {\n for (const key of Object.keys(configObject)) {\n const option = formattedConfigObject[key]\n const override = configObject[key]\n\n // Push their keys one-by-one into formattedConfigObject. Any duplicate\n // keys with object values will be merged, otherwise the new value will\n // override the existing value.\n if (isObject(option) && isObject(override)) {\n // @ts-expect-error Index signature for type 'string' is missing\n formattedConfigObject[key] = mergeConfigs(option, override)\n } else {\n // Apply override\n formattedConfigObject[key] = override\n }\n }\n }\n\n return formattedConfigObject\n}\n\n/**\n * Extracts keys starting with a particular namespace from dataset ('data-*')\n * object, removing the namespace in the process, normalising all values\n *\n * @internal\n * @param {{ schema: Schema }} Component - Component class\n * @param {DOMStringMap} dataset - The object to extract key-value pairs from\n * @param {string} namespace - The namespace to filter keys with\n * @returns {ObjectNested | undefined} Nested object with dot-separated key namespace removed\n */\nexport function extractConfigByNamespace(Component, dataset, namespace) {\n const property = Component.schema.properties[namespace]\n\n // Only extract configs for object schema properties\n if (property?.type !== 'object') {\n return\n }\n\n // Add default empty config\n const newObject = {\n [namespace]: /** @type {ObjectNested} */ ({})\n }\n\n for (const [key, value] of Object.entries(dataset)) {\n /** @type {ObjectNested | ObjectNested[NestedKey]} */\n let current = newObject\n\n // Split the key into parts, using . as our namespace separator\n const keyParts = key.split('.')\n\n /**\n * Create new level per part\n *\n * e.g. 'i18n.textareaDescription.other' becomes\n * `{ i18n: { textareaDescription: { other } } }`\n */\n for (const [index, name] of keyParts.entries()) {\n if (typeof current === 'object') {\n // Drop down to nested object until the last part\n if (index < keyParts.length - 1) {\n // New nested object (optionally) replaces existing value\n if (!isObject(current[name])) {\n current[name] = {}\n }\n\n // Drop down into new or existing nested object\n current = current[name]\n } else if (key !== namespace) {\n // Normalised value (optionally) replaces existing value\n current[name] = normaliseString(value)\n }\n }\n }\n }\n\n return newObject[namespace]\n}\n\n/**\n * Get hash fragment from URL\n *\n * Extract the hash fragment (everything after the hash) from a URL,\n * but not including the hash symbol\n *\n * @private\n * @param {string} url - URL\n * @returns {string | undefined} Fragment from URL, without the hash\n */\nexport function getFragmentFromUrl(url) {\n if (!url.includes('#')) {\n return undefined\n }\n\n return url.split('#').pop()\n}\n\n/**\n * Get GOV.UK Frontend breakpoint value from CSS custom property\n *\n * @private\n * @param {string} name - Breakpoint name\n * @returns {{ property: string, value?: string }} Breakpoint object\n */\nexport function getBreakpoint(name) {\n const property = `--govuk-frontend-breakpoint-${name}`\n\n // Get value from `<html>` with breakpoints on CSS :root\n const value = window\n .getComputedStyle(document.documentElement)\n .getPropertyValue(property)\n\n return {\n property,\n value: value || undefined\n }\n}\n\n/**\n * Move focus to element\n *\n * Sets tabindex to -1 to make the element programmatically focusable,\n * but removes it on blur as the element doesn't need to be focused again.\n *\n * @private\n * @template {HTMLElement} FocusElement\n * @param {FocusElement} $element - HTML element\n * @param {object} [options] - Handler options\n * @param {function(this: FocusElement): void} [options.onBeforeFocus] - Callback before focus\n * @param {function(this: FocusElement): void} [options.onBlur] - Callback on blur\n */\nexport function setFocus($element, options = {}) {\n const isFocusable = $element.getAttribute('tabindex')\n\n if (!isFocusable) {\n $element.setAttribute('tabindex', '-1')\n }\n\n /**\n * Handle element focus\n */\n function onFocus() {\n $element.addEventListener('blur', onBlur, { once: true })\n }\n\n /**\n * Handle element blur\n */\n function onBlur() {\n options.onBlur?.call($element)\n\n if (!isFocusable) {\n $element.removeAttribute('tabindex')\n }\n }\n\n // Add listener to reset element on blur, after focus\n $element.addEventListener('focus', onFocus, { once: true })\n\n // Focus element\n options.onBeforeFocus?.call($element)\n $element.focus()\n}\n\n/**\n * Checks if GOV.UK Frontend is supported on this page\n *\n * Some browsers will load and run our JavaScript but GOV.UK Frontend\n * won't be supported.\n *\n * @internal\n * @param {HTMLElement | null} [$scope] - HTML element `<body>` checked for browser support\n * @returns {boolean} Whether GOV.UK Frontend is supported on this page\n */\nexport function isSupported($scope = document.body) {\n if (!$scope) {\n return false\n }\n\n return $scope.classList.contains('govuk-frontend-supported')\n}\n\n/**\n * Validate component config by schema\n *\n * Follows limited examples in JSON schema for wider support in future\n *\n * {@link https://ajv.js.org/json-schema.html#compound-keywords}\n * {@link https://ajv.js.org/packages/ajv-errors.html#single-message}\n *\n * @internal\n * @param {Schema} schema - Config schema\n * @param {{ [key: string]: unknown }} config - Component config\n * @returns {string[]} List of validation errors\n */\nexport function validateConfig(schema, config) {\n const validationErrors = []\n\n // Check errors for each schema\n for (const [name, conditions] of Object.entries(schema)) {\n const errors = []\n\n // Check errors for each schema condition\n if (Array.isArray(conditions)) {\n for (const { required, errorMessage } of conditions) {\n if (!required.every((key) => !!config[key])) {\n errors.push(errorMessage) // Missing config key value\n }\n }\n\n // Check one condition passes or add errors\n if (name === 'anyOf' && !(conditions.length - errors.length >= 1)) {\n validationErrors.push(...errors)\n }\n }\n }\n\n return validationErrors\n}\n\n/**\n * Check for an array\n *\n * @internal\n * @param {unknown} option - Option to check\n * @returns {boolean} Whether the option is an array\n */\nfunction isArray(option) {\n return Array.isArray(option)\n}\n\n/**\n * Check for an object\n *\n * @internal\n * @param {unknown} option - Option to check\n * @returns {boolean} Whether the option is an object\n */\nfunction isObject(option) {\n return !!option && typeof option === 'object' && !isArray(option)\n}\n\n/**\n * Schema for component config\n *\n * @typedef {object} Schema\n * @property {{ [field: string]: SchemaProperty | undefined }} properties - Schema properties\n * @property {SchemaCondition[]} [anyOf] - List of schema conditions\n */\n\n/**\n * Schema property for component config\n *\n * @typedef {object} SchemaProperty\n * @property {'string' | 'boolean' | 'number' | 'object'} type - Property type\n */\n\n/**\n * Schema condition for component config\n *\n * @typedef {object} SchemaCondition\n * @property {string[]} required - List of required config fields\n * @property {string} errorMessage - Error message when required config fields not provided\n */\n\n/**\n * @internal\n * @typedef {keyof ObjectNested} NestedKey\n * @typedef {{ [key: string]: string | boolean | number | ObjectNested | undefined }} ObjectNested\n */\n"],"names":["mergeConfigs","configObjects","formattedConfigObject","configObject","key","Object","keys","option","override","isObject","extractConfigByNamespace","Component","dataset","namespace","property","schema","properties","type","newObject","value","entries","current","keyParts","split","index","name","length","normaliseString","getFragmentFromUrl","url","includes","undefined","pop","getBreakpoint","window","getComputedStyle","document","documentElement","getPropertyValue","setFocus","$element","options","_options$onBeforeFocu","isFocusable","getAttribute","setAttribute","onFocus","addEventListener","onBlur","once","_options$onBlur","call","removeAttribute","onBeforeFocus","focus","isSupported","$scope","body","classList","contains","validateConfig","config","validationErrors","conditions","errors","Array","isArray","required","errorMessage","every","push"],"mappings":"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"}
@@ -1,26 +1,18 @@
1
- function normaliseString(value) {
2
- if (typeof value !== 'string') {
3
- return value;
4
- }
5
- const trimmedValue = value.trim();
6
- if (trimmedValue === 'true') {
7
- return true;
8
- }
9
- if (trimmedValue === 'false') {
10
- return false;
11
- }
12
- if (trimmedValue.length > 0 && isFinite(Number(trimmedValue))) {
13
- return Number(trimmedValue);
14
- }
15
- return value;
16
- }
17
- function normaliseDataset(dataset) {
1
+ import { extractConfigByNamespace } from './index.mjs';
2
+ import { normaliseString } from './normalise-string.mjs';
3
+
4
+ function normaliseDataset(Component, dataset) {
18
5
  const out = {};
19
- for (const [key, value] of Object.entries(dataset)) {
20
- out[key] = normaliseString(value);
6
+ for (const [field, property] of Object.entries(Component.schema.properties)) {
7
+ if (field in dataset) {
8
+ out[field] = normaliseString(dataset[field], property);
9
+ }
10
+ if ((property == null ? void 0 : property.type) === 'object') {
11
+ out[field] = extractConfigByNamespace(Component, dataset, field);
12
+ }
21
13
  }
22
14
  return out;
23
15
  }
24
16
 
25
- export { normaliseDataset, normaliseString };
17
+ export { normaliseDataset };
26
18
  //# sourceMappingURL=normalise-dataset.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"normalise-dataset.mjs","sources":["../../../src/govuk/common/normalise-dataset.mjs"],"sourcesContent":["/**\n * Normalise string\n *\n * 'If it looks like a duck, and it quacks like a duck…' 🦆\n *\n * If the passed value looks like a boolean or a number, convert it to a boolean\n * or number.\n *\n * Designed to be used to convert config passed via data attributes (which are\n * always strings) into something sensible.\n *\n * @internal\n * @param {string | undefined} value - The value to normalise\n * @returns {string | boolean | number | undefined} Normalised data\n */\nexport function normaliseString(value) {\n if (typeof value !== 'string') {\n return value\n }\n\n const trimmedValue = value.trim()\n\n if (trimmedValue === 'true') {\n return true\n }\n\n if (trimmedValue === 'false') {\n return false\n }\n\n // Empty / whitespace-only strings are considered finite so we need to check\n // the length of the trimmed string as well\n if (trimmedValue.length > 0 && isFinite(Number(trimmedValue))) {\n return Number(trimmedValue)\n }\n\n return value\n}\n\n/**\n * Normalise dataset\n *\n * Loop over an object and normalise each value using normaliseData function\n *\n * @internal\n * @param {DOMStringMap} dataset - HTML element dataset\n * @returns {{ [key: string]: string | boolean | number | undefined }} Normalised dataset\n */\nexport function normaliseDataset(dataset) {\n /** @type {ReturnType<typeof normaliseDataset>} */\n const out = {}\n\n for (const [key, value] of Object.entries(dataset)) {\n out[key] = normaliseString(value)\n }\n\n return out\n}\n"],"names":["normaliseString","value","trimmedValue","trim","length","isFinite","Number","normaliseDataset","dataset","out","key","Object","entries"],"mappings":"AAeO,SAASA,eAAeA,CAACC,KAAK,EAAE;AACrC,EAAA,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;AAC7B,IAAA,OAAOA,KAAK,CAAA;AACd,GAAA;AAEA,EAAA,MAAMC,YAAY,GAAGD,KAAK,CAACE,IAAI,EAAE,CAAA;EAEjC,IAAID,YAAY,KAAK,MAAM,EAAE;AAC3B,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;EAEA,IAAIA,YAAY,KAAK,OAAO,EAAE;AAC5B,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;AAIA,EAAA,IAAIA,YAAY,CAACE,MAAM,GAAG,CAAC,IAAIC,QAAQ,CAACC,MAAM,CAACJ,YAAY,CAAC,CAAC,EAAE;IAC7D,OAAOI,MAAM,CAACJ,YAAY,CAAC,CAAA;AAC7B,GAAA;AAEA,EAAA,OAAOD,KAAK,CAAA;AACd,CAAA;AAWO,SAASM,gBAAgBA,CAACC,OAAO,EAAE;EAExC,MAAMC,GAAG,GAAG,EAAE,CAAA;AAEd,EAAA,KAAK,MAAM,CAACC,GAAG,EAAET,KAAK,CAAC,IAAIU,MAAM,CAACC,OAAO,CAACJ,OAAO,CAAC,EAAE;AAClDC,IAAAA,GAAG,CAACC,GAAG,CAAC,GAAGV,eAAe,CAACC,KAAK,CAAC,CAAA;AACnC,GAAA;AAEA,EAAA,OAAOQ,GAAG,CAAA;AACZ;;;;"}
1
+ {"version":3,"file":"normalise-dataset.mjs","sources":["../../../src/govuk/common/normalise-dataset.mjs"],"sourcesContent":["import { extractConfigByNamespace } from './index.mjs'\nimport { normaliseString } from './normalise-string.mjs'\n\n/**\n * Normalise dataset\n *\n * Loop over an object and normalise each value using {@link normaliseString},\n * optionally expanding nested `i18n.field`\n *\n * @internal\n * @param {{ schema: Schema }} Component - Component class\n * @param {DOMStringMap} dataset - HTML element dataset\n * @returns {ObjectNested} Normalised dataset\n */\nexport function normaliseDataset(Component, dataset) {\n const out = /** @type {ReturnType<typeof normaliseDataset>} */ ({})\n\n // Normalise top-level dataset ('data-*') values using schema types\n for (const [field, property] of Object.entries(Component.schema.properties)) {\n if (field in dataset) {\n out[field] = normaliseString(dataset[field], property)\n }\n\n /**\n * Extract and normalise nested object values automatically using\n * {@link normaliseString} but only schema object types are allowed\n */\n if (property?.type === 'object') {\n out[field] = extractConfigByNamespace(Component, dataset, field)\n }\n }\n\n return out\n}\n\n/**\n * @internal\n * @typedef {import('./index.mjs').ObjectNested} ObjectNested\n * @typedef {import('./index.mjs').Schema} Schema\n */\n"],"names":["normaliseDataset","Component","dataset","out","field","property","Object","entries","schema","properties","normaliseString","type","extractConfigByNamespace"],"mappings":";;;AAcO,SAASA,gBAAgBA,CAACC,SAAS,EAAEC,OAAO,EAAE;EACnD,MAAMC,GAAG,GAAuD,EAAG,CAAA;AAGnE,EAAA,KAAK,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACN,SAAS,CAACO,MAAM,CAACC,UAAU,CAAC,EAAE;IAC3E,IAAIL,KAAK,IAAIF,OAAO,EAAE;AACpBC,MAAAA,GAAG,CAACC,KAAK,CAAC,GAAGM,eAAe,CAACR,OAAO,CAACE,KAAK,CAAC,EAAEC,QAAQ,CAAC,CAAA;AACxD,KAAA;IAMA,IAAI,CAAAA,QAAQ,IAARA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAQ,CAAEM,IAAI,MAAK,QAAQ,EAAE;MAC/BR,GAAG,CAACC,KAAK,CAAC,GAAGQ,wBAAwB,CAACX,SAAS,EAAEC,OAAO,EAAEE,KAAK,CAAC,CAAA;AAClE,KAAA;AACF,GAAA;AAEA,EAAA,OAAOD,GAAG,CAAA;AACZ;;;;"}
@@ -0,0 +1,31 @@
1
+ function normaliseString(value, property) {
2
+ const trimmedValue = value ? value.trim() : '';
3
+ let output;
4
+ let outputType = property == null ? void 0 : property.type;
5
+ if (!outputType) {
6
+ if (['true', 'false'].includes(trimmedValue)) {
7
+ outputType = 'boolean';
8
+ }
9
+ if (trimmedValue.length > 0 && isFinite(Number(trimmedValue))) {
10
+ outputType = 'number';
11
+ }
12
+ }
13
+ switch (outputType) {
14
+ case 'boolean':
15
+ output = trimmedValue === 'true';
16
+ break;
17
+ case 'number':
18
+ output = Number(trimmedValue);
19
+ break;
20
+ default:
21
+ output = value;
22
+ }
23
+ return output;
24
+ }
25
+
26
+ /**
27
+ * @typedef {import('./index.mjs').SchemaProperty} SchemaProperty
28
+ */
29
+
30
+ export { normaliseString };
31
+ //# sourceMappingURL=normalise-string.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalise-string.mjs","sources":["../../../src/govuk/common/normalise-string.mjs"],"sourcesContent":["/**\n * Normalise string\n *\n * 'If it looks like a duck, and it quacks like a duck…' 🦆\n *\n * If the passed value looks like a boolean or a number, convert it to a boolean\n * or number.\n *\n * Designed to be used to convert config passed via data attributes (which are\n * always strings) into something sensible.\n *\n * @internal\n * @param {DOMStringMap[string]} value - The value to normalise\n * @param {SchemaProperty} [property] - Component schema property\n * @returns {string | boolean | number | undefined} Normalised data\n */\nexport function normaliseString(value, property) {\n const trimmedValue = value ? value.trim() : ''\n\n let output\n let outputType = property?.type\n\n // No schema type set? Determine automatically\n if (!outputType) {\n if (['true', 'false'].includes(trimmedValue)) {\n outputType = 'boolean'\n }\n\n // Empty / whitespace-only strings are considered finite so we need to check\n // the length of the trimmed string as well\n if (trimmedValue.length > 0 && isFinite(Number(trimmedValue))) {\n outputType = 'number'\n }\n }\n\n switch (outputType) {\n case 'boolean':\n output = trimmedValue === 'true'\n break\n\n case 'number':\n output = Number(trimmedValue)\n break\n\n default:\n output = value\n }\n\n return output\n}\n\n/**\n * @typedef {import('./index.mjs').SchemaProperty} SchemaProperty\n */\n"],"names":["normaliseString","value","property","trimmedValue","trim","output","outputType","type","includes","length","isFinite","Number"],"mappings":"AAgBO,SAASA,eAAeA,CAACC,KAAK,EAAEC,QAAQ,EAAE;EAC/C,MAAMC,YAAY,GAAGF,KAAK,GAAGA,KAAK,CAACG,IAAI,EAAE,GAAG,EAAE,CAAA;AAE9C,EAAA,IAAIC,MAAM,CAAA;AACV,EAAA,IAAIC,UAAU,GAAGJ,QAAQ,IAARA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,QAAQ,CAAEK,IAAI,CAAA;EAG/B,IAAI,CAACD,UAAU,EAAE;IACf,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAACE,QAAQ,CAACL,YAAY,CAAC,EAAE;AAC5CG,MAAAA,UAAU,GAAG,SAAS,CAAA;AACxB,KAAA;AAIA,IAAA,IAAIH,YAAY,CAACM,MAAM,GAAG,CAAC,IAAIC,QAAQ,CAACC,MAAM,CAACR,YAAY,CAAC,CAAC,EAAE;AAC7DG,MAAAA,UAAU,GAAG,QAAQ,CAAA;AACvB,KAAA;AACF,GAAA;AAEA,EAAA,QAAQA,UAAU;AAChB,IAAA,KAAK,SAAS;MACZD,MAAM,GAAGF,YAAY,KAAK,MAAM,CAAA;AAChC,MAAA,MAAA;AAEF,IAAA,KAAK,QAAQ;AACXE,MAAAA,MAAM,GAAGM,MAAM,CAACR,YAAY,CAAC,CAAA;AAC7B,MAAA,MAAA;AAEF,IAAA;AACEE,MAAAA,MAAM,GAAGJ,KAAK,CAAA;AAClB,GAAA;AAEA,EAAA,OAAOI,MAAM,CAAA;AACf,CAAA;;AAEA;AACA;AACA;;;;"}
@@ -1,38 +1,10 @@
1
- @import "../base";
1
+ @import "../settings/warnings";
2
+ @import "index";
2
3
 
3
- @import "accordion/index";
4
- @import "back-link/index";
5
- @import "breadcrumbs/index";
6
- @import "button/index";
7
- @import "character-count/index";
8
- @import "checkboxes/index";
9
- @import "cookie-banner/index";
10
- @import "date-input/index";
11
- @import "details/index";
12
- @import "error-message/index";
13
- @import "error-summary/index";
14
- @import "exit-this-page/index";
15
- @import "fieldset/index";
16
- @import "file-upload/index";
17
- @import "footer/index";
18
- @import "header/index";
19
- @import "hint/index";
20
- @import "input/index";
21
- @import "inset-text/index";
22
- @import "label/index";
23
- @import "notification-banner/index";
24
- @import "pagination/index";
25
- @import "panel/index";
26
- @import "phase-banner/index";
27
- @import "radios/index";
28
- @import "select/index";
29
- @import "skip-link/index";
30
- @import "summary-list/index";
31
- @import "table/index";
32
- @import "tabs/index";
33
- @import "tag/index";
34
- @import "task-list/index";
35
- @import "textarea/index";
36
- @import "warning-text/index";
4
+ @include _warning(
5
+ "import-using-all",
6
+ "Importing using 'govuk/components/all' is deprecated. Update your import statement to import 'govuk/components/index'.",
7
+ $silence-further-warnings: false
8
+ );
37
9
 
38
10
  /*# sourceMappingURL=_all.scss.map */
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/govuk/components/_all.scss"],"names":[],"mappings":"AAAA,iBAAiB;;AAEjB,yBAAyB;AACzB,yBAAyB;AACzB,2BAA2B;AAC3B,sBAAsB;AACtB,+BAA+B;AAC/B,0BAA0B;AAC1B,6BAA6B;AAC7B,0BAA0B;AAC1B,uBAAuB;AACvB,6BAA6B;AAC7B,6BAA6B;AAC7B,8BAA8B;AAC9B,wBAAwB;AACxB,2BAA2B;AAC3B,sBAAsB;AACtB,sBAAsB;AACtB,oBAAoB;AACpB,qBAAqB;AACrB,0BAA0B;AAC1B,qBAAqB;AACrB,mCAAmC;AACnC,0BAA0B;AAC1B,qBAAqB;AACrB,4BAA4B;AAC5B,sBAAsB;AACtB,sBAAsB;AACtB,yBAAyB;AACzB,4BAA4B;AAC5B,qBAAqB;AACrB,oBAAoB;AACpB,mBAAmB;AACnB,yBAAyB;AACzB,wBAAwB;AACxB,4BAA4B","file":"_all.scss","sourcesContent":["@import \"../base\";\n\n@import \"accordion/index\";\n@import \"back-link/index\";\n@import \"breadcrumbs/index\";\n@import \"button/index\";\n@import \"character-count/index\";\n@import \"checkboxes/index\";\n@import \"cookie-banner/index\";\n@import \"date-input/index\";\n@import \"details/index\";\n@import \"error-message/index\";\n@import \"error-summary/index\";\n@import \"exit-this-page/index\";\n@import \"fieldset/index\";\n@import \"file-upload/index\";\n@import \"footer/index\";\n@import \"header/index\";\n@import \"hint/index\";\n@import \"input/index\";\n@import \"inset-text/index\";\n@import \"label/index\";\n@import \"notification-banner/index\";\n@import \"pagination/index\";\n@import \"panel/index\";\n@import \"phase-banner/index\";\n@import \"radios/index\";\n@import \"select/index\";\n@import \"skip-link/index\";\n@import \"summary-list/index\";\n@import \"table/index\";\n@import \"tabs/index\";\n@import \"tag/index\";\n@import \"task-list/index\";\n@import \"textarea/index\";\n@import \"warning-text/index\";\n"]}
1
+ {"version":3,"sources":["../../../src/govuk/components/_all.scss"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,eAAe;;AAEf;;;;CAIC","file":"_all.scss","sourcesContent":["@import \"../settings/warnings\";\n@import \"index\";\n\n@include _warning(\n \"import-using-all\",\n \"Importing using 'govuk/components/all' is deprecated. Update your import statement to import 'govuk/components/index'.\",\n $silence-further-warnings: false\n);\n"]}
@@ -0,0 +1,39 @@
1
+ @import "../base";
2
+
3
+ @import "accordion/index";
4
+ @import "back-link/index";
5
+ @import "breadcrumbs/index";
6
+ @import "button/index";
7
+ @import "character-count/index";
8
+ @import "checkboxes/index";
9
+ @import "cookie-banner/index";
10
+ @import "date-input/index";
11
+ @import "details/index";
12
+ @import "error-message/index";
13
+ @import "error-summary/index";
14
+ @import "exit-this-page/index";
15
+ @import "fieldset/index";
16
+ @import "file-upload/index";
17
+ @import "footer/index";
18
+ @import "header/index";
19
+ @import "hint/index";
20
+ @import "input/index";
21
+ @import "inset-text/index";
22
+ @import "label/index";
23
+ @import "notification-banner/index";
24
+ @import "pagination/index";
25
+ @import "panel/index";
26
+ @import "password-input/index";
27
+ @import "phase-banner/index";
28
+ @import "radios/index";
29
+ @import "select/index";
30
+ @import "skip-link/index";
31
+ @import "summary-list/index";
32
+ @import "table/index";
33
+ @import "tabs/index";
34
+ @import "tag/index";
35
+ @import "task-list/index";
36
+ @import "textarea/index";
37
+ @import "warning-text/index";
38
+
39
+ /*# sourceMappingURL=_index.scss.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/govuk/components/_index.scss"],"names":[],"mappings":"AAAA,iBAAiB;;AAEjB,yBAAyB;AACzB,yBAAyB;AACzB,2BAA2B;AAC3B,sBAAsB;AACtB,+BAA+B;AAC/B,0BAA0B;AAC1B,6BAA6B;AAC7B,0BAA0B;AAC1B,uBAAuB;AACvB,6BAA6B;AAC7B,6BAA6B;AAC7B,8BAA8B;AAC9B,wBAAwB;AACxB,2BAA2B;AAC3B,sBAAsB;AACtB,sBAAsB;AACtB,oBAAoB;AACpB,qBAAqB;AACrB,0BAA0B;AAC1B,qBAAqB;AACrB,mCAAmC;AACnC,0BAA0B;AAC1B,qBAAqB;AACrB,8BAA8B;AAC9B,4BAA4B;AAC5B,sBAAsB;AACtB,sBAAsB;AACtB,yBAAyB;AACzB,4BAA4B;AAC5B,qBAAqB;AACrB,oBAAoB;AACpB,mBAAmB;AACnB,yBAAyB;AACzB,wBAAwB;AACxB,4BAA4B","file":"_index.scss","sourcesContent":["@import \"../base\";\n\n@import \"accordion/index\";\n@import \"back-link/index\";\n@import \"breadcrumbs/index\";\n@import \"button/index\";\n@import \"character-count/index\";\n@import \"checkboxes/index\";\n@import \"cookie-banner/index\";\n@import \"date-input/index\";\n@import \"details/index\";\n@import \"error-message/index\";\n@import \"error-summary/index\";\n@import \"exit-this-page/index\";\n@import \"fieldset/index\";\n@import \"file-upload/index\";\n@import \"footer/index\";\n@import \"header/index\";\n@import \"hint/index\";\n@import \"input/index\";\n@import \"inset-text/index\";\n@import \"label/index\";\n@import \"notification-banner/index\";\n@import \"pagination/index\";\n@import \"panel/index\";\n@import \"password-input/index\";\n@import \"phase-banner/index\";\n@import \"radios/index\";\n@import \"select/index\";\n@import \"skip-link/index\";\n@import \"summary-list/index\";\n@import \"table/index\";\n@import \"tabs/index\";\n@import \"tag/index\";\n@import \"task-list/index\";\n@import \"textarea/index\";\n@import \"warning-text/index\";\n"]}