govuk_tech_docs 3.4.5 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/publish.yaml +8 -4
  3. data/.github/workflows/test.yaml +11 -4
  4. data/.rubocop.yml +1 -1
  5. data/CHANGELOG.md +22 -1
  6. data/example/.ruby-version +1 -1
  7. data/example/source/javascripts/govuk_frontend.js +1 -0
  8. data/govuk_tech_docs.gemspec +17 -11
  9. data/lib/assets/javascripts/_modules/page-expiry.js +2 -2
  10. data/lib/assets/javascripts/_modules/table-of-contents.js +48 -2
  11. data/lib/assets/javascripts/govuk_frontend_all.js +3 -0
  12. data/lib/assets/javascripts/govuk_tech_docs.js +0 -2
  13. data/lib/assets/stylesheets/_govuk_tech_docs.scss +4 -10
  14. data/lib/assets/stylesheets/modules/_page-review.scss +0 -2
  15. data/lib/assets/stylesheets/modules/_search.scss +0 -4
  16. data/lib/govuk_tech_docs/meta_tags.rb +1 -1
  17. data/lib/govuk_tech_docs/redirects.rb +1 -1
  18. data/lib/govuk_tech_docs/table_of_contents/heading_tree_builder.rb +1 -1
  19. data/lib/govuk_tech_docs/table_of_contents/helpers.rb +2 -2
  20. data/lib/govuk_tech_docs/tech_docs_html_renderer.rb +6 -2
  21. data/lib/govuk_tech_docs/version.rb +1 -1
  22. data/lib/govuk_tech_docs.rb +20 -3
  23. data/lib/source/layouts/_header.erb +8 -12
  24. data/lib/source/layouts/_page_review.erb +1 -1
  25. data/lib/source/layouts/_search.erb +2 -2
  26. data/lib/source/layouts/core.erb +8 -2
  27. data/lib/source/stylesheets/manifest.css +1 -1
  28. data/node_modules/govuk-frontend/dist/govuk/_base.scss +5 -0
  29. data/node_modules/govuk-frontend/dist/govuk/all.bundle.js +2554 -0
  30. data/node_modules/govuk-frontend/dist/govuk/all.bundle.mjs +2529 -0
  31. data/node_modules/govuk-frontend/dist/govuk/all.mjs +18 -0
  32. data/node_modules/govuk-frontend/dist/govuk/all.scss +3 -0
  33. data/node_modules/govuk-frontend/dist/govuk/assets/images/favicon.svg +1 -0
  34. data/node_modules/govuk-frontend/dist/govuk/assets/images/govuk-crest.svg +1 -0
  35. data/node_modules/govuk-frontend/dist/govuk/assets/images/govuk-icon-180.png +0 -0
  36. data/node_modules/govuk-frontend/dist/govuk/assets/images/govuk-icon-192.png +0 -0
  37. data/node_modules/govuk-frontend/dist/govuk/assets/images/govuk-icon-512.png +0 -0
  38. data/node_modules/govuk-frontend/dist/govuk/assets/images/govuk-icon-mask.svg +1 -0
  39. data/node_modules/govuk-frontend/dist/govuk/assets/images/govuk-opengraph-image.png +0 -0
  40. data/node_modules/govuk-frontend/dist/govuk/common/closest-attribute-value.mjs +7 -0
  41. data/node_modules/govuk-frontend/dist/govuk/common/govuk-frontend-version.mjs +4 -0
  42. data/node_modules/govuk-frontend/dist/govuk/common/index.mjs +159 -0
  43. data/node_modules/govuk-frontend/dist/govuk/common/normalise-dataset.mjs +18 -0
  44. data/node_modules/govuk-frontend/dist/govuk/common/normalise-string.mjs +31 -0
  45. data/node_modules/govuk-frontend/dist/govuk/components/_all.scss +10 -0
  46. data/node_modules/govuk-frontend/{govuk/components/_all.scss → dist/govuk/components/_index.scss} +8 -3
  47. data/node_modules/govuk-frontend/dist/govuk/components/accordion/_accordion.scss +4 -0
  48. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/accordion/_index.scss +55 -77
  49. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.bundle.js +785 -0
  50. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.bundle.mjs +777 -0
  51. data/node_modules/govuk-frontend/dist/govuk/components/accordion/accordion.mjs +349 -0
  52. data/node_modules/govuk-frontend/dist/govuk/components/back-link/_back-link.scss +4 -0
  53. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/back-link/_index.scss +12 -36
  54. data/node_modules/govuk-frontend/dist/govuk/components/breadcrumbs/_breadcrumbs.scss +4 -0
  55. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/breadcrumbs/_index.scss +11 -36
  56. data/node_modules/govuk-frontend/dist/govuk/components/button/_button.scss +4 -0
  57. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/button/_index.scss +30 -103
  58. data/node_modules/govuk-frontend/dist/govuk/components/button/button.bundle.js +318 -0
  59. data/node_modules/govuk-frontend/dist/govuk/components/button/button.bundle.mjs +310 -0
  60. data/node_modules/govuk-frontend/dist/govuk/components/button/button.mjs +73 -0
  61. data/node_modules/govuk-frontend/dist/govuk/components/character-count/_character-count.scss +4 -0
  62. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/character-count/_index.scss +8 -6
  63. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.bundle.js +761 -0
  64. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.bundle.mjs +753 -0
  65. data/node_modules/govuk-frontend/dist/govuk/components/character-count/character-count.mjs +295 -0
  66. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/_checkboxes.scss +4 -0
  67. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/checkboxes/_index.scss +108 -132
  68. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.bundle.js +268 -0
  69. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.bundle.mjs +260 -0
  70. data/node_modules/govuk-frontend/dist/govuk/components/checkboxes/checkboxes.mjs +111 -0
  71. data/node_modules/govuk-frontend/dist/govuk/components/cookie-banner/_cookie-banner.scss +4 -0
  72. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/cookie-banner/_index.scss +19 -15
  73. data/node_modules/govuk-frontend/dist/govuk/components/date-input/_date-input.scss +4 -0
  74. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/date-input/_index.scss +3 -2
  75. data/node_modules/govuk-frontend/dist/govuk/components/details/_details.scss +4 -0
  76. data/node_modules/govuk-frontend/dist/govuk/components/details/_index.scss +139 -0
  77. data/node_modules/govuk-frontend/dist/govuk/components/error-message/_error-message.scss +4 -0
  78. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/error-message/_index.scss +2 -0
  79. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/_error-summary.scss +4 -0
  80. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/error-summary/_index.scss +19 -6
  81. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.bundle.js +378 -0
  82. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.bundle.mjs +370 -0
  83. data/node_modules/govuk-frontend/dist/govuk/components/error-summary/error-summary.mjs +103 -0
  84. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/_exit-this-page.scss +4 -0
  85. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/exit-this-page/_index.scss +5 -10
  86. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.bundle.js +662 -0
  87. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.bundle.mjs +654 -0
  88. data/node_modules/govuk-frontend/dist/govuk/components/exit-this-page/exit-this-page.mjs +226 -0
  89. data/node_modules/govuk-frontend/dist/govuk/components/fieldset/_fieldset.scss +4 -0
  90. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/fieldset/_index.scss +20 -15
  91. data/node_modules/govuk-frontend/dist/govuk/components/file-upload/_file-upload.scss +4 -0
  92. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/file-upload/_index.scss +11 -15
  93. data/node_modules/govuk-frontend/dist/govuk/components/footer/_footer.scss +4 -0
  94. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/footer/_index.scss +25 -68
  95. data/node_modules/govuk-frontend/dist/govuk/components/header/_header.scss +4 -0
  96. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/header/_index.scss +84 -79
  97. data/node_modules/govuk-frontend/dist/govuk/components/header/header.bundle.js +252 -0
  98. data/node_modules/govuk-frontend/dist/govuk/components/header/header.bundle.mjs +244 -0
  99. data/node_modules/govuk-frontend/dist/govuk/components/header/header.mjs +88 -0
  100. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/hint/_hint.scss +2 -0
  101. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/hint/_index.scss +3 -0
  102. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/input/_index.scss +24 -49
  103. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/input/_input.scss +2 -0
  104. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/inset-text/_index.scss +2 -0
  105. data/node_modules/govuk-frontend/dist/govuk/components/inset-text/_inset-text.scss +4 -0
  106. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/label/_index.scss +12 -7
  107. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/label/_label.scss +2 -0
  108. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/notification-banner/_index.scss +11 -7
  109. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/_notification-banner.scss +4 -0
  110. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.bundle.js +320 -0
  111. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.bundle.mjs +312 -0
  112. data/node_modules/govuk-frontend/dist/govuk/components/notification-banner/notification-banner.mjs +51 -0
  113. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/pagination/_index.scss +36 -55
  114. data/node_modules/govuk-frontend/dist/govuk/components/pagination/_pagination.scss +4 -0
  115. data/node_modules/govuk-frontend/dist/govuk/components/panel/_index.scss +58 -0
  116. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/panel/_panel.scss +2 -0
  117. data/node_modules/govuk-frontend/dist/govuk/components/password-input/_index.scss +57 -0
  118. data/node_modules/govuk-frontend/dist/govuk/components/password-input/_password-input.scss +4 -0
  119. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.bundle.js +594 -0
  120. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.bundle.mjs +586 -0
  121. data/node_modules/govuk-frontend/dist/govuk/components/password-input/password-input.mjs +154 -0
  122. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/phase-banner/_index.scss +10 -1
  123. data/node_modules/govuk-frontend/dist/govuk/components/phase-banner/_phase-banner.scss +4 -0
  124. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/radios/_index.scss +92 -113
  125. data/node_modules/govuk-frontend/dist/govuk/components/radios/_radios.scss +4 -0
  126. data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.bundle.js +245 -0
  127. data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.bundle.mjs +237 -0
  128. data/node_modules/govuk-frontend/dist/govuk/components/radios/radios.mjs +88 -0
  129. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/select/_index.scss +9 -16
  130. data/node_modules/govuk-frontend/dist/govuk/components/select/_select.scss +4 -0
  131. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/_index.scss +168 -0
  132. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/_service-navigation.scss +4 -0
  133. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/service-navigation.bundle.js +249 -0
  134. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/service-navigation.bundle.mjs +241 -0
  135. data/node_modules/govuk-frontend/dist/govuk/components/service-navigation/service-navigation.mjs +85 -0
  136. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/skip-link/_index.scss +10 -5
  137. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/_skip-link.scss +4 -0
  138. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.bundle.js +244 -0
  139. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.bundle.mjs +236 -0
  140. data/node_modules/govuk-frontend/dist/govuk/components/skip-link/skip-link.mjs +58 -0
  141. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/summary-list/_index.scss +22 -20
  142. data/node_modules/govuk-frontend/dist/govuk/components/summary-list/_summary-list.scss +4 -0
  143. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/table/_index.scss +21 -17
  144. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/table/_table.scss +2 -0
  145. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/tabs/_index.scss +13 -9
  146. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/tabs/_tabs.scss +2 -0
  147. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.bundle.js +453 -0
  148. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.bundle.mjs +445 -0
  149. data/node_modules/govuk-frontend/dist/govuk/components/tabs/tabs.mjs +283 -0
  150. data/node_modules/govuk-frontend/dist/govuk/components/tag/_index.scss +97 -0
  151. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/tag/_tag.scss +2 -0
  152. data/node_modules/govuk-frontend/dist/govuk/components/task-list/_index.scss +79 -0
  153. data/node_modules/govuk-frontend/dist/govuk/components/task-list/_task-list.scss +4 -0
  154. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/textarea/_index.scss +6 -10
  155. data/node_modules/govuk-frontend/dist/govuk/components/textarea/_textarea.scss +4 -0
  156. data/node_modules/govuk-frontend/{govuk → dist/govuk}/components/warning-text/_index.scss +13 -13
  157. data/node_modules/govuk-frontend/dist/govuk/components/warning-text/_warning-text.scss +4 -0
  158. data/node_modules/govuk-frontend/dist/govuk/core/_all.scss +10 -0
  159. data/node_modules/govuk-frontend/{govuk → dist/govuk}/core/_global-styles.scss +2 -1
  160. data/node_modules/govuk-frontend/dist/govuk/core/_govuk-frontend-properties.scss +12 -0
  161. data/node_modules/govuk-frontend/{govuk/core/_all.scss → dist/govuk/core/_index.scss} +3 -1
  162. data/node_modules/govuk-frontend/{govuk → dist/govuk}/core/_links.scss +8 -1
  163. data/node_modules/govuk-frontend/{govuk → dist/govuk}/core/_lists.scss +2 -1
  164. data/node_modules/govuk-frontend/{govuk → dist/govuk}/core/_section-break.scss +2 -7
  165. data/node_modules/govuk-frontend/{govuk → dist/govuk}/core/_typography.scss +8 -5
  166. data/node_modules/govuk-frontend/dist/govuk/errors/index.mjs +57 -0
  167. data/node_modules/govuk-frontend/dist/govuk/govuk-frontend-component.mjs +60 -0
  168. data/node_modules/govuk-frontend/dist/govuk/govuk-frontend.min.js +1 -0
  169. data/node_modules/govuk-frontend/dist/govuk/helpers/_all.scss +10 -0
  170. data/node_modules/govuk-frontend/{govuk → dist/govuk}/helpers/_clearfix.scss +3 -1
  171. data/node_modules/govuk-frontend/dist/govuk/helpers/_colour.scss +127 -0
  172. data/node_modules/govuk-frontend/{govuk → dist/govuk}/helpers/_device-pixels.scss +4 -3
  173. data/node_modules/govuk-frontend/{govuk → dist/govuk}/helpers/_focused.scss +22 -6
  174. data/node_modules/govuk-frontend/dist/govuk/helpers/_font-faces.scss +41 -0
  175. data/node_modules/govuk-frontend/{govuk → dist/govuk}/helpers/_grid.scss +3 -1
  176. data/node_modules/govuk-frontend/{govuk/helpers/_all.scss → dist/govuk/helpers/_index.scss} +2 -0
  177. data/node_modules/govuk-frontend/{govuk → dist/govuk}/helpers/_links.scss +38 -76
  178. data/node_modules/govuk-frontend/{govuk → dist/govuk}/helpers/_media-queries.scss +3 -12
  179. data/node_modules/govuk-frontend/{govuk → dist/govuk}/helpers/_shape-arrow.scss +3 -1
  180. data/node_modules/govuk-frontend/{govuk → dist/govuk}/helpers/_spacing.scss +12 -10
  181. data/node_modules/govuk-frontend/dist/govuk/helpers/_typography.scss +288 -0
  182. data/node_modules/govuk-frontend/{govuk → dist/govuk}/helpers/_visually-hidden.scss +39 -50
  183. data/node_modules/govuk-frontend/dist/govuk/i18n.mjs +195 -0
  184. data/node_modules/govuk-frontend/dist/govuk/index.scss +11 -0
  185. data/node_modules/govuk-frontend/dist/govuk/init.mjs +162 -0
  186. data/node_modules/govuk-frontend/dist/govuk/objects/_all.scss +10 -0
  187. data/node_modules/govuk-frontend/{govuk → dist/govuk}/objects/_button-group.scss +7 -12
  188. data/node_modules/govuk-frontend/{govuk → dist/govuk}/objects/_form-group.scss +2 -0
  189. data/node_modules/govuk-frontend/{govuk → dist/govuk}/objects/_grid.scss +4 -2
  190. data/node_modules/govuk-frontend/{govuk/objects/_all.scss → dist/govuk/objects/_index.scss} +2 -0
  191. data/node_modules/govuk-frontend/{govuk → dist/govuk}/objects/_main-wrapper.scss +2 -0
  192. data/node_modules/govuk-frontend/{govuk → dist/govuk}/objects/_template.scss +2 -1
  193. data/node_modules/govuk-frontend/{govuk → dist/govuk}/objects/_width-container.scss +2 -9
  194. data/node_modules/govuk-frontend/dist/govuk/overrides/_all.scss +9 -0
  195. data/node_modules/govuk-frontend/{govuk → dist/govuk}/overrides/_display.scss +2 -0
  196. data/node_modules/govuk-frontend/{govuk/overrides/_all.scss → dist/govuk/overrides/_index.scss} +2 -0
  197. data/node_modules/govuk-frontend/{govuk → dist/govuk}/overrides/_spacing.scss +3 -19
  198. data/node_modules/govuk-frontend/{govuk → dist/govuk}/overrides/_text-align.scss +2 -0
  199. data/node_modules/govuk-frontend/dist/govuk/overrides/_typography.scss +42 -0
  200. data/node_modules/govuk-frontend/{govuk → dist/govuk}/overrides/_width.scss +2 -0
  201. data/node_modules/govuk-frontend/dist/govuk/settings/_all.scss +10 -0
  202. data/node_modules/govuk-frontend/{govuk → dist/govuk}/settings/_assets.scss +2 -0
  203. data/node_modules/govuk-frontend/{govuk → dist/govuk}/settings/_colours-applied.scss +9 -7
  204. data/node_modules/govuk-frontend/dist/govuk/settings/_colours-organisations.scss +378 -0
  205. data/node_modules/govuk-frontend/dist/govuk/settings/_colours-palette.scss +37 -0
  206. data/node_modules/govuk-frontend/{govuk → dist/govuk}/settings/_global-styles.scss +2 -0
  207. data/node_modules/govuk-frontend/{govuk/settings/_all.scss → dist/govuk/settings/_index.scss} +2 -3
  208. data/node_modules/govuk-frontend/{govuk → dist/govuk}/settings/_links.scss +3 -20
  209. data/node_modules/govuk-frontend/{govuk → dist/govuk}/settings/_measurements.scss +18 -6
  210. data/node_modules/govuk-frontend/{govuk → dist/govuk}/settings/_media-queries.scss +5 -3
  211. data/node_modules/govuk-frontend/{govuk → dist/govuk}/settings/_spacing.scss +2 -0
  212. data/node_modules/govuk-frontend/dist/govuk/settings/_typography-font.scss +52 -0
  213. data/node_modules/govuk-frontend/dist/govuk/settings/_typography-responsive.scss +322 -0
  214. data/node_modules/govuk-frontend/{govuk → dist/govuk}/settings/_warnings.scss +33 -8
  215. data/node_modules/govuk-frontend/dist/govuk/tools/_all.scss +10 -0
  216. data/node_modules/govuk-frontend/{govuk → dist/govuk}/tools/_exports.scss +2 -0
  217. data/node_modules/govuk-frontend/{govuk → dist/govuk}/tools/_font-url.scss +3 -0
  218. data/node_modules/govuk-frontend/{govuk → dist/govuk}/tools/_image-url.scss +3 -0
  219. data/node_modules/govuk-frontend/{govuk/tools/_all.scss → dist/govuk/tools/_index.scss} +2 -2
  220. data/node_modules/govuk-frontend/{govuk → dist/govuk}/tools/_px-to-em.scss +2 -0
  221. data/node_modules/govuk-frontend/{govuk → dist/govuk}/tools/_px-to-rem.scss +2 -0
  222. data/node_modules/govuk-frontend/dist/govuk/utilities/_all.scss +10 -0
  223. data/node_modules/govuk-frontend/{govuk → dist/govuk}/utilities/_clearfix.scss +2 -0
  224. data/node_modules/govuk-frontend/{govuk/utilities/_all.scss → dist/govuk/utilities/_index.scss} +2 -0
  225. data/node_modules/govuk-frontend/{govuk → dist/govuk}/utilities/_visually-hidden.scss +2 -0
  226. data/node_modules/govuk-frontend/{govuk → dist/govuk}/vendor/_sass-mq.scss +3 -1
  227. data/node_modules/govuk-frontend/dist/govuk-prototype-kit/init.js +15 -0
  228. data/node_modules/govuk-frontend/{govuk-prototype-kit → dist/govuk-prototype-kit}/init.scss +3 -2
  229. data/package-lock.json +37 -37
  230. data/package.json +6 -1
  231. metadata +316 -206
  232. data/node_modules/govuk-frontend/govuk/_base.scss +0 -3
  233. data/node_modules/govuk-frontend/govuk/all-ie8.scss +0 -14
  234. data/node_modules/govuk-frontend/govuk/all.js +0 -5172
  235. data/node_modules/govuk-frontend/govuk/all.scss +0 -9
  236. data/node_modules/govuk-frontend/govuk/assets/images/favicon.ico +0 -0
  237. data/node_modules/govuk-frontend/govuk/assets/images/govuk-apple-touch-icon-152x152.png +0 -0
  238. data/node_modules/govuk-frontend/govuk/assets/images/govuk-apple-touch-icon-167x167.png +0 -0
  239. data/node_modules/govuk-frontend/govuk/assets/images/govuk-apple-touch-icon-180x180.png +0 -0
  240. data/node_modules/govuk-frontend/govuk/assets/images/govuk-apple-touch-icon.png +0 -0
  241. data/node_modules/govuk-frontend/govuk/assets/images/govuk-crest-2x.png +0 -0
  242. data/node_modules/govuk-frontend/govuk/assets/images/govuk-crest.png +0 -0
  243. data/node_modules/govuk-frontend/govuk/assets/images/govuk-logotype-crown.png +0 -0
  244. data/node_modules/govuk-frontend/govuk/assets/images/govuk-mask-icon.svg +0 -7
  245. data/node_modules/govuk-frontend/govuk/assets/images/govuk-opengraph-image.png +0 -0
  246. data/node_modules/govuk-frontend/govuk/common/closest-attribute-value.js +0 -75
  247. data/node_modules/govuk-frontend/govuk/common/govuk-frontend-version.js +0 -17
  248. data/node_modules/govuk-frontend/govuk/common/index.js +0 -192
  249. data/node_modules/govuk-frontend/govuk/common/normalise-dataset.js +0 -386
  250. data/node_modules/govuk-frontend/govuk/common.js +0 -194
  251. data/node_modules/govuk-frontend/govuk/components/accordion/_accordion.scss +0 -2
  252. data/node_modules/govuk-frontend/govuk/components/accordion/accordion.js +0 -2386
  253. data/node_modules/govuk-frontend/govuk/components/back-link/_back-link.scss +0 -2
  254. data/node_modules/govuk-frontend/govuk/components/breadcrumbs/_breadcrumbs.scss +0 -2
  255. data/node_modules/govuk-frontend/govuk/components/button/_button.scss +0 -2
  256. data/node_modules/govuk-frontend/govuk/components/button/button.js +0 -1027
  257. data/node_modules/govuk-frontend/govuk/components/character-count/_character-count.scss +0 -2
  258. data/node_modules/govuk-frontend/govuk/components/character-count/character-count.js +0 -2281
  259. data/node_modules/govuk-frontend/govuk/components/checkboxes/_checkboxes.scss +0 -2
  260. data/node_modules/govuk-frontend/govuk/components/checkboxes/checkboxes.js +0 -1277
  261. data/node_modules/govuk-frontend/govuk/components/cookie-banner/_cookie-banner.scss +0 -2
  262. data/node_modules/govuk-frontend/govuk/components/date-input/_date-input.scss +0 -2
  263. data/node_modules/govuk-frontend/govuk/components/details/_details.scss +0 -2
  264. data/node_modules/govuk-frontend/govuk/components/details/_index.scss +0 -88
  265. data/node_modules/govuk-frontend/govuk/components/details/details.js +0 -873
  266. data/node_modules/govuk-frontend/govuk/components/error-message/_error-message.scss +0 -2
  267. data/node_modules/govuk-frontend/govuk/components/error-summary/_error-summary.scss +0 -2
  268. data/node_modules/govuk-frontend/govuk/components/error-summary/error-summary.js +0 -1189
  269. data/node_modules/govuk-frontend/govuk/components/exit-this-page/_exit-this-page.scss +0 -2
  270. data/node_modules/govuk-frontend/govuk/components/exit-this-page/exit-this-page.js +0 -2120
  271. data/node_modules/govuk-frontend/govuk/components/fieldset/_fieldset.scss +0 -2
  272. data/node_modules/govuk-frontend/govuk/components/file-upload/_file-upload.scss +0 -2
  273. data/node_modules/govuk-frontend/govuk/components/footer/_footer.scss +0 -2
  274. data/node_modules/govuk-frontend/govuk/components/header/_header.scss +0 -2
  275. data/node_modules/govuk-frontend/govuk/components/header/header.js +0 -794
  276. data/node_modules/govuk-frontend/govuk/components/inset-text/_inset-text.scss +0 -2
  277. data/node_modules/govuk-frontend/govuk/components/notification-banner/_notification-banner.scss +0 -2
  278. data/node_modules/govuk-frontend/govuk/components/notification-banner/notification-banner.js +0 -843
  279. data/node_modules/govuk-frontend/govuk/components/pagination/_pagination.scss +0 -2
  280. data/node_modules/govuk-frontend/govuk/components/panel/_index.scss +0 -56
  281. data/node_modules/govuk-frontend/govuk/components/phase-banner/_phase-banner.scss +0 -2
  282. data/node_modules/govuk-frontend/govuk/components/radios/_radios.scss +0 -2
  283. data/node_modules/govuk-frontend/govuk/components/radios/radios.js +0 -1222
  284. data/node_modules/govuk-frontend/govuk/components/select/_select.scss +0 -2
  285. data/node_modules/govuk-frontend/govuk/components/skip-link/_skip-link.scss +0 -2
  286. data/node_modules/govuk-frontend/govuk/components/skip-link/skip-link.js +0 -1145
  287. data/node_modules/govuk-frontend/govuk/components/summary-list/_summary-list.scss +0 -2
  288. data/node_modules/govuk-frontend/govuk/components/tabs/tabs.js +0 -1621
  289. data/node_modules/govuk-frontend/govuk/components/tag/_index.scss +0 -81
  290. data/node_modules/govuk-frontend/govuk/components/textarea/_textarea.scss +0 -2
  291. data/node_modules/govuk-frontend/govuk/components/warning-text/_warning-text.scss +0 -2
  292. data/node_modules/govuk-frontend/govuk/core/_govuk-frontend-version.scss +0 -5
  293. data/node_modules/govuk-frontend/govuk/helpers/_colour.scss +0 -98
  294. data/node_modules/govuk-frontend/govuk/helpers/_font-faces.scss +0 -41
  295. data/node_modules/govuk-frontend/govuk/helpers/_typography.scss +0 -214
  296. data/node_modules/govuk-frontend/govuk/i18n.js +0 -397
  297. data/node_modules/govuk-frontend/govuk/overrides/_typography.scss +0 -21
  298. data/node_modules/govuk-frontend/govuk/settings/_colours-organisations.scss +0 -146
  299. data/node_modules/govuk-frontend/govuk/settings/_colours-palette.scss +0 -120
  300. data/node_modules/govuk-frontend/govuk/settings/_compatibility.scss +0 -100
  301. data/node_modules/govuk-frontend/govuk/settings/_ie8.scss +0 -34
  302. data/node_modules/govuk-frontend/govuk/settings/_typography-font-families.scss +0 -32
  303. data/node_modules/govuk-frontend/govuk/settings/_typography-font.scss +0 -112
  304. data/node_modules/govuk-frontend/govuk/settings/_typography-responsive.scss +0 -195
  305. data/node_modules/govuk-frontend/govuk/tools/_compatibility.scss +0 -50
  306. data/node_modules/govuk-frontend/govuk/tools/_ie8.scss +0 -87
  307. data/node_modules/govuk-frontend/govuk/vendor/polyfills/DOMTokenList.js +0 -274
  308. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Date/now.js +0 -23
  309. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Document.js +0 -36
  310. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/classList.js +0 -597
  311. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/closest.js +0 -58
  312. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/dataset.js +0 -307
  313. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/matches.js +0 -33
  314. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/nextElementSibling.js +0 -261
  315. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element/prototype/previousElementSibling.js +0 -261
  316. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Element.js +0 -151
  317. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Event.js +0 -512
  318. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Function/prototype/bind.js +0 -256
  319. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Object/defineProperty.js +0 -96
  320. data/node_modules/govuk-frontend/govuk/vendor/polyfills/String/prototype/trim.js +0 -23
  321. data/node_modules/govuk-frontend/govuk/vendor/polyfills/Window.js +0 -30
  322. data/node_modules/govuk-frontend/govuk-prototype-kit/init.js +0 -8
  323. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/assets/fonts/bold-affa96571d-v2.woff +0 -0
  324. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/assets/fonts/bold-b542beb274-v2.woff2 +0 -0
  325. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/assets/fonts/light-94a07e06a1-v2.woff2 +0 -0
  326. /data/node_modules/govuk-frontend/{govuk → dist/govuk}/assets/fonts/light-f591b13f7d-v2.woff +0 -0
  327. /data/{lib/source → node_modules/govuk-frontend/dist/govuk/assets/images}/favicon.ico +0 -0
@@ -1,18 +1,17 @@
1
1
  @include govuk-exports("govuk/component/cookie-banner") {
2
-
3
2
  // This needs to be kept in sync with the header component's styles
4
3
  $border-bottom-width: govuk-spacing(2);
5
4
 
6
5
  .govuk-cookie-banner {
7
6
  padding-top: govuk-spacing(4);
8
- // The component does not set bottom spacing.
9
- // The bottom spacing should be created by the items inside the component.
7
+ // The component does not set bottom spacing. The bottom spacing should be
8
+ // created by the items inside the component.
10
9
 
11
- // Visually separate the cookie banner from content underneath
12
- // when user changes colours in their browser.
10
+ // Visually separate the cookie banner from content underneath when user
11
+ // changes colours in their browser.
13
12
  border-bottom: $border-bottom-width solid transparent;
14
13
 
15
- background-color: govuk-colour("light-grey", $legacy: "grey-3");
14
+ background-color: $govuk-canvas-background-colour;
16
15
  }
17
16
 
18
17
  // Support older browsers which don't hide elements with the `hidden` attribute
@@ -26,24 +25,29 @@
26
25
  margin-bottom: -$border-bottom-width;
27
26
 
28
27
  &[hidden] {
29
- // Support older browsers which don't hide elements with the `hidden` attribute
30
- // when the visibility of cookie and replacement messages is toggled.
28
+ // Support older browsers which don't hide elements with the `hidden`
29
+ // attribute when the visibility of cookie and replacement messages is
30
+ // toggled.
31
31
  display: none;
32
32
  }
33
33
 
34
34
  &:focus {
35
- // Remove the native visible focus indicator when the element is programmatically focused.
35
+ // Remove the native visible focus indicator when the element is
36
+ // programmatically focused.
36
37
  //
37
- // The focused cookie banner is the first element on the page and the last thing the user
38
- // interacted with prior to it gaining focus.
39
- // We therefore assume that moving focus to it is not going to surprise users, and that giving
40
- // it a visible focus indicator could be more confusing than helpful, especially as the
41
- // element is not normally keyboard operable.
38
+ // The focused cookie banner is the first element on the page and the last
39
+ // thing the user interacted with prior to it gaining focus. We therefore
40
+ // assume that moving focus to it is not going to surprise users, and that
41
+ // giving it a visible focus indicator could be more confusing than
42
+ // helpful, especially as the element is not normally keyboard operable.
42
43
  //
43
- // We have flagged this in the research section of the guidance as something to monitor.
44
+ // We have flagged this in the research section of the guidance as
45
+ // something to monitor.
44
46
  //
45
47
  // A related discussion: https://github.com/w3c/wcag/issues/1001
46
48
  outline: none;
47
49
  }
48
50
  }
49
51
  }
52
+
53
+ /*# sourceMappingURL=_index.scss.map */
@@ -0,0 +1,4 @@
1
+ @import "../../base";
2
+ @import "./index";
3
+
4
+ /*# sourceMappingURL=_date-input.scss.map */
@@ -6,8 +6,7 @@
6
6
  @include govuk-exports("govuk/component/date-input") {
7
7
  .govuk-date-input {
8
8
  @include govuk-clearfix;
9
- // font-size: 0 removes whitespace caused by inline-block
10
- font-size: 0;
9
+ font-size: 0; // removes whitespace caused by inline-block
11
10
  }
12
11
 
13
12
  .govuk-date-input__item {
@@ -24,3 +23,5 @@
24
23
  margin-bottom: 0;
25
24
  }
26
25
  }
26
+
27
+ /*# sourceMappingURL=_index.scss.map */
@@ -0,0 +1,4 @@
1
+ @import "../../base";
2
+ @import "./index";
3
+
4
+ /*# sourceMappingURL=_details.scss.map */
@@ -0,0 +1,139 @@
1
+ @include govuk-exports("govuk/component/details") {
2
+ .govuk-details {
3
+ @include govuk-font($size: 19);
4
+ @include govuk-text-colour;
5
+ @include govuk-responsive-margin(6, "bottom");
6
+
7
+ display: block;
8
+ }
9
+
10
+ .govuk-details__summary {
11
+ display: block;
12
+ }
13
+
14
+ .govuk-details[open] .govuk-details__summary {
15
+ margin-bottom: govuk-spacing(1);
16
+ }
17
+
18
+ .govuk-details__summary-text {
19
+ > :first-child {
20
+ margin-top: 0;
21
+ }
22
+
23
+ > :only-child,
24
+ > :last-child {
25
+ margin-bottom: 0;
26
+ }
27
+ }
28
+
29
+ .govuk-details__text {
30
+ padding-top: govuk-spacing(3);
31
+ padding-bottom: govuk-spacing(3);
32
+ padding-left: govuk-spacing(4);
33
+ }
34
+
35
+ .govuk-details__text p {
36
+ margin-top: 0;
37
+ margin-bottom: govuk-spacing(4);
38
+ }
39
+
40
+ .govuk-details__text > :last-child {
41
+ margin-bottom: 0;
42
+ }
43
+
44
+ // Hack to target IE8 - IE11 (and REALLY old Firefox)
45
+ // These browsers don't support the details element, so fall back to looking
46
+ // like inset text
47
+ @media screen\0 {
48
+ .govuk-details {
49
+ border-left: $govuk-border-width-wide solid $govuk-border-colour;
50
+ }
51
+
52
+ .govuk-details__summary {
53
+ margin-top: govuk-spacing(3);
54
+ }
55
+
56
+ .govuk-details__summary-text {
57
+ @include govuk-typography-weight-bold;
58
+ @include govuk-responsive-margin(4, "bottom");
59
+ padding-left: govuk-spacing(4);
60
+ }
61
+ }
62
+
63
+ // We wrap styles for newer browsers in a feature query, which is ignored by
64
+ // older browsers, which always expand the details element.
65
+ //
66
+ // Additionally, -ms-ime-align is only supported by Edge 12 - 18
67
+ //
68
+ // This ensures we don't use these styles in browsers which:
69
+ // - support ES6 modules but not the <details> element (Edge 16 - 18)
70
+ // - do not support ES6 modules or the <details> element (eg, IE8+)
71
+ @supports not (-ms-ime-align: auto) {
72
+ .govuk-details__summary {
73
+ // Absolutely position the marker against this element
74
+ position: relative;
75
+
76
+ // Make the focus outline shrink-wrap the text content of the summary
77
+ width: -webkit-fit-content;
78
+ width: fit-content;
79
+
80
+ // Allow for absolutely positioned marker and align with disclosed text
81
+ padding-left: govuk-spacing(4) + $govuk-border-width;
82
+
83
+ // Style the summary to look like a link...
84
+ color: $govuk-link-colour;
85
+ cursor: pointer;
86
+
87
+ &:hover {
88
+ color: $govuk-link-hover-colour;
89
+ }
90
+
91
+ &:focus {
92
+ @include govuk-focused-text;
93
+ }
94
+ }
95
+ // ...but only underline the text, not the arrow
96
+ .govuk-details__summary-text {
97
+ @include govuk-link-decoration;
98
+ }
99
+
100
+ .govuk-details__summary:hover .govuk-details__summary-text {
101
+ @include govuk-link-hover-decoration;
102
+ }
103
+
104
+ // Remove the underline when focussed to avoid duplicate borders
105
+ .govuk-details__summary:focus .govuk-details__summary-text {
106
+ text-decoration: none;
107
+ }
108
+
109
+ // Remove the default details marker so we can style our own consistently and
110
+ // ensure it displays in Firefox (see implementation.md for details)
111
+ .govuk-details__summary::-webkit-details-marker {
112
+ display: none;
113
+ }
114
+
115
+ // Append our own open / closed marker using a pseudo-element
116
+ .govuk-details__summary::before {
117
+ content: "";
118
+ position: absolute;
119
+
120
+ top: -1px;
121
+ bottom: 0;
122
+ left: 0;
123
+
124
+ margin: auto;
125
+
126
+ @include govuk-shape-arrow($direction: right, $base: 14px);
127
+
128
+ .govuk-details[open] > & {
129
+ @include govuk-shape-arrow($direction: down, $base: 14px);
130
+ }
131
+ }
132
+
133
+ .govuk-details__text {
134
+ border-left: $govuk-border-width solid $govuk-border-colour;
135
+ }
136
+ }
137
+ }
138
+
139
+ /*# sourceMappingURL=_index.scss.map */
@@ -0,0 +1,4 @@
1
+ @import "../../base";
2
+ @import "./index";
3
+
4
+ /*# sourceMappingURL=_error-message.scss.map */
@@ -10,3 +10,5 @@
10
10
  color: $govuk-error-colour;
11
11
  }
12
12
  }
13
+
14
+ /*# sourceMappingURL=_index.scss.map */
@@ -0,0 +1,4 @@
1
+ @import "../../base";
2
+ @import "./index";
3
+
4
+ /*# sourceMappingURL=_error-summary.scss.map */
@@ -2,6 +2,7 @@
2
2
 
3
3
  @include govuk-exports("govuk/component/error-summary") {
4
4
  .govuk-error-summary {
5
+ @include govuk-font($size: 19);
5
6
  @include govuk-text-colour;
6
7
  @include govuk-responsive-padding(4);
7
8
  @include govuk-responsive-margin(8, "bottom");
@@ -14,24 +15,34 @@
14
15
  }
15
16
 
16
17
  .govuk-error-summary__title {
17
- @include govuk-font($size: 24, $weight: bold);
18
+ @include govuk-font-size($size: 24);
19
+ @include govuk-typography-weight-bold;
18
20
 
19
21
  margin-top: 0;
20
22
  @include govuk-responsive-margin(4, "bottom");
21
23
  }
22
24
 
23
25
  .govuk-error-summary__body {
24
- @include govuk-font($size: 19);
25
-
26
26
  p {
27
- margin-top: 0;
28
- @include govuk-responsive-margin(4, "bottom");
27
+ margin-bottom: 0;
28
+ }
29
+
30
+ > * + * {
31
+ @include govuk-responsive-margin(4, "top");
32
+ }
33
+
34
+ > :last-child {
35
+ @include govuk-responsive-margin(1, "bottom");
29
36
  }
30
37
  }
31
38
 
32
39
  // Cross-component class - adjusts styling of list component
33
40
  .govuk-error-summary__list {
34
- margin-top: 0;
41
+ margin-bottom: 0;
42
+ }
43
+
44
+ // Remove the bottom margin from the last list item
45
+ .govuk-error-summary__list li:last-child {
35
46
  margin-bottom: 0;
36
47
  }
37
48
 
@@ -41,3 +52,5 @@
41
52
  @include govuk-link-style-error;
42
53
  }
43
54
  }
55
+
56
+ /*# sourceMappingURL=_index.scss.map */
@@ -0,0 +1,378 @@
1
+ (function (global, factory) {
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
3
+ typeof define === 'function' && define.amd ? define(['exports'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.GOVUKFrontend = {}));
5
+ })(this, (function (exports) { 'use strict';
6
+
7
+ function normaliseString(value, property) {
8
+ const trimmedValue = value ? value.trim() : '';
9
+ let output;
10
+ let outputType = property == null ? void 0 : property.type;
11
+ if (!outputType) {
12
+ if (['true', 'false'].includes(trimmedValue)) {
13
+ outputType = 'boolean';
14
+ }
15
+ if (trimmedValue.length > 0 && isFinite(Number(trimmedValue))) {
16
+ outputType = 'number';
17
+ }
18
+ }
19
+ switch (outputType) {
20
+ case 'boolean':
21
+ output = trimmedValue === 'true';
22
+ break;
23
+ case 'number':
24
+ output = Number(trimmedValue);
25
+ break;
26
+ default:
27
+ output = value;
28
+ }
29
+ return output;
30
+ }
31
+
32
+ /**
33
+ * @typedef {import('./index.mjs').SchemaProperty} SchemaProperty
34
+ */
35
+
36
+ function mergeConfigs(...configObjects) {
37
+ const formattedConfigObject = {};
38
+ for (const configObject of configObjects) {
39
+ for (const key of Object.keys(configObject)) {
40
+ const option = formattedConfigObject[key];
41
+ const override = configObject[key];
42
+ if (isObject(option) && isObject(override)) {
43
+ formattedConfigObject[key] = mergeConfigs(option, override);
44
+ } else {
45
+ formattedConfigObject[key] = override;
46
+ }
47
+ }
48
+ }
49
+ return formattedConfigObject;
50
+ }
51
+ function extractConfigByNamespace(Component, dataset, namespace) {
52
+ const property = Component.schema.properties[namespace];
53
+ if ((property == null ? void 0 : property.type) !== 'object') {
54
+ return;
55
+ }
56
+ const newObject = {
57
+ [namespace]: ({})
58
+ };
59
+ for (const [key, value] of Object.entries(dataset)) {
60
+ let current = newObject;
61
+ const keyParts = key.split('.');
62
+ for (const [index, name] of keyParts.entries()) {
63
+ if (typeof current === 'object') {
64
+ if (index < keyParts.length - 1) {
65
+ if (!isObject(current[name])) {
66
+ current[name] = {};
67
+ }
68
+ current = current[name];
69
+ } else if (key !== namespace) {
70
+ current[name] = normaliseString(value);
71
+ }
72
+ }
73
+ }
74
+ }
75
+ return newObject[namespace];
76
+ }
77
+ function getFragmentFromUrl(url) {
78
+ if (!url.includes('#')) {
79
+ return undefined;
80
+ }
81
+ return url.split('#').pop();
82
+ }
83
+ function setFocus($element, options = {}) {
84
+ var _options$onBeforeFocu;
85
+ const isFocusable = $element.getAttribute('tabindex');
86
+ if (!isFocusable) {
87
+ $element.setAttribute('tabindex', '-1');
88
+ }
89
+ function onFocus() {
90
+ $element.addEventListener('blur', onBlur, {
91
+ once: true
92
+ });
93
+ }
94
+ function onBlur() {
95
+ var _options$onBlur;
96
+ (_options$onBlur = options.onBlur) == null || _options$onBlur.call($element);
97
+ if (!isFocusable) {
98
+ $element.removeAttribute('tabindex');
99
+ }
100
+ }
101
+ $element.addEventListener('focus', onFocus, {
102
+ once: true
103
+ });
104
+ (_options$onBeforeFocu = options.onBeforeFocus) == null || _options$onBeforeFocu.call($element);
105
+ $element.focus();
106
+ }
107
+ function isInitialised($root, moduleName) {
108
+ return $root instanceof HTMLElement && $root.hasAttribute(`data-${moduleName}-init`);
109
+ }
110
+
111
+ /**
112
+ * Checks if GOV.UK Frontend is supported on this page
113
+ *
114
+ * Some browsers will load and run our JavaScript but GOV.UK Frontend
115
+ * won't be supported.
116
+ *
117
+ * @param {HTMLElement | null} [$scope] - (internal) `<body>` HTML element checked for browser support
118
+ * @returns {boolean} Whether GOV.UK Frontend is supported on this page
119
+ */
120
+ function isSupported($scope = document.body) {
121
+ if (!$scope) {
122
+ return false;
123
+ }
124
+ return $scope.classList.contains('govuk-frontend-supported');
125
+ }
126
+ function isArray(option) {
127
+ return Array.isArray(option);
128
+ }
129
+ function isObject(option) {
130
+ return !!option && typeof option === 'object' && !isArray(option);
131
+ }
132
+ function formatErrorMessage(Component, message) {
133
+ return `${Component.moduleName}: ${message}`;
134
+ }
135
+
136
+ /**
137
+ * Schema for component config
138
+ *
139
+ * @typedef {object} Schema
140
+ * @property {{ [field: string]: SchemaProperty | undefined }} properties - Schema properties
141
+ * @property {SchemaCondition[]} [anyOf] - List of schema conditions
142
+ */
143
+
144
+ /**
145
+ * Schema property for component config
146
+ *
147
+ * @typedef {object} SchemaProperty
148
+ * @property {'string' | 'boolean' | 'number' | 'object'} type - Property type
149
+ */
150
+
151
+ /**
152
+ * Schema condition for component config
153
+ *
154
+ * @typedef {object} SchemaCondition
155
+ * @property {string[]} required - List of required config fields
156
+ * @property {string} errorMessage - Error message when required config fields not provided
157
+ */
158
+ /**
159
+ * @typedef ComponentWithModuleName
160
+ * @property {string} moduleName - Name of the component
161
+ */
162
+
163
+ function normaliseDataset(Component, dataset) {
164
+ const out = {};
165
+ for (const [field, property] of Object.entries(Component.schema.properties)) {
166
+ if (field in dataset) {
167
+ out[field] = normaliseString(dataset[field], property);
168
+ }
169
+ if ((property == null ? void 0 : property.type) === 'object') {
170
+ out[field] = extractConfigByNamespace(Component, dataset, field);
171
+ }
172
+ }
173
+ return out;
174
+ }
175
+
176
+ class GOVUKFrontendError extends Error {
177
+ constructor(...args) {
178
+ super(...args);
179
+ this.name = 'GOVUKFrontendError';
180
+ }
181
+ }
182
+ class SupportError extends GOVUKFrontendError {
183
+ /**
184
+ * Checks if GOV.UK Frontend is supported on this page
185
+ *
186
+ * @param {HTMLElement | null} [$scope] - HTML element `<body>` checked for browser support
187
+ */
188
+ constructor($scope = document.body) {
189
+ const supportMessage = 'noModule' in HTMLScriptElement.prototype ? 'GOV.UK Frontend initialised without `<body class="govuk-frontend-supported">` from template `<script>` snippet' : 'GOV.UK Frontend is not supported in this browser';
190
+ super($scope ? supportMessage : 'GOV.UK Frontend initialised without `<script type="module">`');
191
+ this.name = 'SupportError';
192
+ }
193
+ }
194
+ class ElementError extends GOVUKFrontendError {
195
+ constructor(messageOrOptions) {
196
+ let message = typeof messageOrOptions === 'string' ? messageOrOptions : '';
197
+ if (typeof messageOrOptions === 'object') {
198
+ const {
199
+ component,
200
+ identifier,
201
+ element,
202
+ expectedType
203
+ } = messageOrOptions;
204
+ message = identifier;
205
+ message += element ? ` is not of type ${expectedType != null ? expectedType : 'HTMLElement'}` : ' not found';
206
+ message = formatErrorMessage(component, message);
207
+ }
208
+ super(message);
209
+ this.name = 'ElementError';
210
+ }
211
+ }
212
+ class InitError extends GOVUKFrontendError {
213
+ constructor(componentOrMessage) {
214
+ const message = typeof componentOrMessage === 'string' ? componentOrMessage : formatErrorMessage(componentOrMessage, `Root element (\`$root\`) already initialised`);
215
+ super(message);
216
+ this.name = 'InitError';
217
+ }
218
+ }
219
+ /**
220
+ * @typedef {import('../common/index.mjs').ComponentWithModuleName} ComponentWithModuleName
221
+ */
222
+
223
+ class GOVUKFrontendComponent {
224
+ /**
225
+ * Returns the root element of the component
226
+ *
227
+ * @protected
228
+ * @returns {RootElementType} - the root element of component
229
+ */
230
+ get $root() {
231
+ return this._$root;
232
+ }
233
+ constructor($root) {
234
+ this._$root = void 0;
235
+ const childConstructor = this.constructor;
236
+ if (typeof childConstructor.moduleName !== 'string') {
237
+ throw new InitError(`\`moduleName\` not defined in component`);
238
+ }
239
+ if (!($root instanceof childConstructor.elementType)) {
240
+ throw new ElementError({
241
+ element: $root,
242
+ component: childConstructor,
243
+ identifier: 'Root element (`$root`)',
244
+ expectedType: childConstructor.elementType.name
245
+ });
246
+ } else {
247
+ this._$root = $root;
248
+ }
249
+ childConstructor.checkSupport();
250
+ this.checkInitialised();
251
+ const moduleName = childConstructor.moduleName;
252
+ this.$root.setAttribute(`data-${moduleName}-init`, '');
253
+ }
254
+ checkInitialised() {
255
+ const constructor = this.constructor;
256
+ const moduleName = constructor.moduleName;
257
+ if (moduleName && isInitialised(this.$root, moduleName)) {
258
+ throw new InitError(constructor);
259
+ }
260
+ }
261
+ static checkSupport() {
262
+ if (!isSupported()) {
263
+ throw new SupportError();
264
+ }
265
+ }
266
+ }
267
+
268
+ /**
269
+ * @typedef ChildClass
270
+ * @property {string} moduleName - The module name that'll be looked for in the DOM when initialising the component
271
+ */
272
+
273
+ /**
274
+ * @typedef {typeof GOVUKFrontendComponent & ChildClass} ChildClassConstructor
275
+ */
276
+ GOVUKFrontendComponent.elementType = HTMLElement;
277
+
278
+ /**
279
+ * Error summary component
280
+ *
281
+ * Takes focus on initialisation for accessible announcement, unless disabled in
282
+ * configuration.
283
+ *
284
+ * @preserve
285
+ */
286
+ class ErrorSummary extends GOVUKFrontendComponent {
287
+ /**
288
+ * @param {Element | null} $root - HTML element to use for error summary
289
+ * @param {ErrorSummaryConfig} [config] - Error summary config
290
+ */
291
+ constructor($root, config = {}) {
292
+ super($root);
293
+ this.config = void 0;
294
+ this.config = mergeConfigs(ErrorSummary.defaults, config, normaliseDataset(ErrorSummary, this.$root.dataset));
295
+ if (!this.config.disableAutoFocus) {
296
+ setFocus(this.$root);
297
+ }
298
+ this.$root.addEventListener('click', event => this.handleClick(event));
299
+ }
300
+ handleClick(event) {
301
+ const $target = event.target;
302
+ if ($target && this.focusTarget($target)) {
303
+ event.preventDefault();
304
+ }
305
+ }
306
+ focusTarget($target) {
307
+ if (!($target instanceof HTMLAnchorElement)) {
308
+ return false;
309
+ }
310
+ const inputId = getFragmentFromUrl($target.href);
311
+ if (!inputId) {
312
+ return false;
313
+ }
314
+ const $input = document.getElementById(inputId);
315
+ if (!$input) {
316
+ return false;
317
+ }
318
+ const $legendOrLabel = this.getAssociatedLegendOrLabel($input);
319
+ if (!$legendOrLabel) {
320
+ return false;
321
+ }
322
+ $legendOrLabel.scrollIntoView();
323
+ $input.focus({
324
+ preventScroll: true
325
+ });
326
+ return true;
327
+ }
328
+ getAssociatedLegendOrLabel($input) {
329
+ var _document$querySelect;
330
+ const $fieldset = $input.closest('fieldset');
331
+ if ($fieldset) {
332
+ const $legends = $fieldset.getElementsByTagName('legend');
333
+ if ($legends.length) {
334
+ const $candidateLegend = $legends[0];
335
+ if ($input instanceof HTMLInputElement && ($input.type === 'checkbox' || $input.type === 'radio')) {
336
+ return $candidateLegend;
337
+ }
338
+ const legendTop = $candidateLegend.getBoundingClientRect().top;
339
+ const inputRect = $input.getBoundingClientRect();
340
+ if (inputRect.height && window.innerHeight) {
341
+ const inputBottom = inputRect.top + inputRect.height;
342
+ if (inputBottom - legendTop < window.innerHeight / 2) {
343
+ return $candidateLegend;
344
+ }
345
+ }
346
+ }
347
+ }
348
+ return (_document$querySelect = document.querySelector(`label[for='${$input.getAttribute('id')}']`)) != null ? _document$querySelect : $input.closest('label');
349
+ }
350
+ }
351
+
352
+ /**
353
+ * Error summary config
354
+ *
355
+ * @typedef {object} ErrorSummaryConfig
356
+ * @property {boolean} [disableAutoFocus=false] - If set to `true` the error
357
+ * summary will not be focussed when the page loads.
358
+ */
359
+
360
+ /**
361
+ * @typedef {import('../../common/index.mjs').Schema} Schema
362
+ */
363
+ ErrorSummary.moduleName = 'govuk-error-summary';
364
+ ErrorSummary.defaults = Object.freeze({
365
+ disableAutoFocus: false
366
+ });
367
+ ErrorSummary.schema = Object.freeze({
368
+ properties: {
369
+ disableAutoFocus: {
370
+ type: 'boolean'
371
+ }
372
+ }
373
+ });
374
+
375
+ exports.ErrorSummary = ErrorSummary;
376
+
377
+ }));
378
+ //# sourceMappingURL=error-summary.bundle.js.map