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
@@ -0,0 +1,168 @@
1
+ @include govuk-exports("govuk/component/service-navigation") {
2
+ $govuk-service-navigation-active-link-border-width: govuk-spacing(1);
3
+ $govuk-service-navigation-background: $govuk-canvas-background-colour;
4
+ $govuk-service-navigation-border-colour: $govuk-border-colour;
5
+
6
+ // We make the link colour a little darker than normal here so that it has
7
+ // better perceptual contrast with the navigation background.
8
+ $govuk-service-navigation-link-colour: govuk-shade($govuk-link-colour, 10%);
9
+
10
+ .govuk-service-navigation {
11
+ border-bottom: 1px solid $govuk-service-navigation-border-colour;
12
+ background-color: $govuk-service-navigation-background;
13
+ }
14
+
15
+ .govuk-service-navigation__container {
16
+ display: flex;
17
+ flex-direction: column;
18
+ align-items: start;
19
+
20
+ @include govuk-media-query($from: tablet) {
21
+ flex-direction: row;
22
+ flex-wrap: wrap;
23
+ }
24
+ }
25
+
26
+ // These styles are shared between nav items and the service name, they
27
+ // ensure that both of them remain vertically aligned with one another
28
+ .govuk-service-navigation__item,
29
+ .govuk-service-navigation__service-name {
30
+ position: relative;
31
+ margin: govuk-spacing(2) 0;
32
+ border: 0 solid $govuk-service-navigation-link-colour;
33
+
34
+ @include govuk-media-query($from: tablet) {
35
+ margin-top: 0;
36
+ margin-bottom: 0;
37
+ padding: govuk-spacing(4) 0;
38
+
39
+ &:not(:last-child) {
40
+ @include govuk-responsive-margin(6, $direction: right);
41
+ }
42
+ }
43
+ }
44
+
45
+ .govuk-service-navigation__item--active {
46
+ @include govuk-media-query($until: tablet) {
47
+ // Negative offset the left margin so we can place a current page indicator
48
+ // to the left without misaligning the list item text.
49
+ margin-left: ((govuk-spacing(2) + $govuk-service-navigation-active-link-border-width) * -1);
50
+ padding-left: govuk-spacing(2);
51
+ border-left-width: $govuk-service-navigation-active-link-border-width;
52
+ }
53
+
54
+ @include govuk-media-query($from: tablet) {
55
+ padding-bottom: govuk-spacing(4) - $govuk-service-navigation-active-link-border-width;
56
+ border-bottom-width: $govuk-service-navigation-active-link-border-width;
57
+ }
58
+ }
59
+
60
+ .govuk-service-navigation__link {
61
+ @include govuk-link-common;
62
+ @include govuk-link-style-no-underline;
63
+ @include govuk-link-style-no-visited-state;
64
+
65
+ &:not(:hover):not(:focus) {
66
+ // We set the colour here as we don't want to override the hover or
67
+ // focus colours
68
+ color: $govuk-service-navigation-link-colour;
69
+ }
70
+ }
71
+
72
+ //
73
+ // Service name specific code
74
+ //
75
+
76
+ .govuk-service-navigation__service-name {
77
+ @include govuk-font($size: 19, $weight: bold);
78
+ }
79
+
80
+ // Annoyingly this requires a compound selector in order to overcome the
81
+ // specificity of the other link colour override we're doing
82
+ .govuk-service-navigation__service-name .govuk-service-navigation__link {
83
+ @include govuk-link-style-text;
84
+ }
85
+
86
+ //
87
+ // Navigation list specific code
88
+ //
89
+
90
+ .govuk-service-navigation__toggle {
91
+ @include govuk-font($size: 19, $weight: bold);
92
+ display: inline-flex;
93
+ margin: govuk-spacing(2) 0;
94
+ padding: 0;
95
+ border: 0;
96
+ color: $govuk-service-navigation-link-colour;
97
+ background: none;
98
+ word-break: break-all;
99
+ cursor: pointer;
100
+ align-items: center;
101
+
102
+ &:focus {
103
+ @include govuk-focused-text;
104
+ }
105
+
106
+ &::after {
107
+ @include govuk-shape-arrow($direction: down, $base: 10px, $display: inline-block);
108
+ content: "";
109
+ margin-left: govuk-spacing(1);
110
+ }
111
+
112
+ &[aria-expanded="true"]::after {
113
+ @include govuk-shape-arrow($direction: up, $base: 10px, $display: inline-block);
114
+ }
115
+
116
+ // Ensure the button stays hidden if the hidden attribute is present
117
+ &[hidden] {
118
+ display: none;
119
+ }
120
+
121
+ // If we have both a service name and navigation toggle, remove the
122
+ // margin-top so that there isn't a bunch of space between them
123
+ .govuk-service-navigation__service-name + .govuk-service-navigation__wrapper & {
124
+ margin-top: 0;
125
+ }
126
+ }
127
+
128
+ .govuk-service-navigation__list {
129
+ @include govuk-font($size: 19);
130
+ margin: 0;
131
+ margin-bottom: govuk-spacing(3);
132
+ padding: 0;
133
+ list-style: none;
134
+
135
+ // Make the navigation list a flexbox. Doing so resolves a couple of
136
+ // accessibility problems caused by the list items being inline-blocks:
137
+ // - Removes the extra whitespace from between each list item that screen
138
+ // readers would pointlessly announce.
139
+ // - Fixes an NVDA issue in Firefox and Chrome <= 124 where it would read
140
+ // all of the links as a run-on sentence.
141
+ @include govuk-media-query($from: tablet) {
142
+ display: flex;
143
+ flex-wrap: wrap;
144
+ margin-bottom: 0;
145
+
146
+ // However... IE11 totally trips over flexbox and doesn't wrap anything,
147
+ // making all of the items into a single, horizontally scrolling row,
148
+ // which is no good. This CSS hack removes the flexbox definition for
149
+ // IE 10 & 11, reverting it to the flawed, but OK, non-flexbox version.
150
+ //
151
+ // CSS hack taken from https://stackoverflow.com/questions/11173106/apply-style-only-on-ie#answer-36448860
152
+ // which also includes an explanation of why this works
153
+ @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
154
+ display: block;
155
+ }
156
+ }
157
+ }
158
+
159
+ // This is a <strong> element that is used as a fallback mechanism for
160
+ // visually indicating the current page in scenarios where CSS isn't
161
+ // available. We don't actually want it to be bold normally, so set it to
162
+ // inherit the parent font-weight.
163
+ .govuk-service-navigation__active-fallback {
164
+ font-weight: inherit;
165
+ }
166
+ }
167
+
168
+ /*# sourceMappingURL=_index.scss.map */
@@ -0,0 +1,4 @@
1
+ @import "../../base";
2
+ @import "./index";
3
+
4
+ /*# sourceMappingURL=_service-navigation.scss.map */
@@ -0,0 +1,249 @@
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 getBreakpoint(name) {
8
+ const property = `--govuk-frontend-breakpoint-${name}`;
9
+ const value = window.getComputedStyle(document.documentElement).getPropertyValue(property);
10
+ return {
11
+ property,
12
+ value: value || undefined
13
+ };
14
+ }
15
+ function isInitialised($root, moduleName) {
16
+ return $root instanceof HTMLElement && $root.hasAttribute(`data-${moduleName}-init`);
17
+ }
18
+
19
+ /**
20
+ * Checks if GOV.UK Frontend is supported on this page
21
+ *
22
+ * Some browsers will load and run our JavaScript but GOV.UK Frontend
23
+ * won't be supported.
24
+ *
25
+ * @param {HTMLElement | null} [$scope] - (internal) `<body>` HTML element checked for browser support
26
+ * @returns {boolean} Whether GOV.UK Frontend is supported on this page
27
+ */
28
+ function isSupported($scope = document.body) {
29
+ if (!$scope) {
30
+ return false;
31
+ }
32
+ return $scope.classList.contains('govuk-frontend-supported');
33
+ }
34
+ function formatErrorMessage(Component, message) {
35
+ return `${Component.moduleName}: ${message}`;
36
+ }
37
+
38
+ /**
39
+ * Schema for component config
40
+ *
41
+ * @typedef {object} Schema
42
+ * @property {{ [field: string]: SchemaProperty | undefined }} properties - Schema properties
43
+ * @property {SchemaCondition[]} [anyOf] - List of schema conditions
44
+ */
45
+
46
+ /**
47
+ * Schema property for component config
48
+ *
49
+ * @typedef {object} SchemaProperty
50
+ * @property {'string' | 'boolean' | 'number' | 'object'} type - Property type
51
+ */
52
+
53
+ /**
54
+ * Schema condition for component config
55
+ *
56
+ * @typedef {object} SchemaCondition
57
+ * @property {string[]} required - List of required config fields
58
+ * @property {string} errorMessage - Error message when required config fields not provided
59
+ */
60
+ /**
61
+ * @typedef ComponentWithModuleName
62
+ * @property {string} moduleName - Name of the component
63
+ */
64
+
65
+ class GOVUKFrontendError extends Error {
66
+ constructor(...args) {
67
+ super(...args);
68
+ this.name = 'GOVUKFrontendError';
69
+ }
70
+ }
71
+ class SupportError extends GOVUKFrontendError {
72
+ /**
73
+ * Checks if GOV.UK Frontend is supported on this page
74
+ *
75
+ * @param {HTMLElement | null} [$scope] - HTML element `<body>` checked for browser support
76
+ */
77
+ constructor($scope = document.body) {
78
+ 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';
79
+ super($scope ? supportMessage : 'GOV.UK Frontend initialised without `<script type="module">`');
80
+ this.name = 'SupportError';
81
+ }
82
+ }
83
+ class ElementError extends GOVUKFrontendError {
84
+ constructor(messageOrOptions) {
85
+ let message = typeof messageOrOptions === 'string' ? messageOrOptions : '';
86
+ if (typeof messageOrOptions === 'object') {
87
+ const {
88
+ component,
89
+ identifier,
90
+ element,
91
+ expectedType
92
+ } = messageOrOptions;
93
+ message = identifier;
94
+ message += element ? ` is not of type ${expectedType != null ? expectedType : 'HTMLElement'}` : ' not found';
95
+ message = formatErrorMessage(component, message);
96
+ }
97
+ super(message);
98
+ this.name = 'ElementError';
99
+ }
100
+ }
101
+ class InitError extends GOVUKFrontendError {
102
+ constructor(componentOrMessage) {
103
+ const message = typeof componentOrMessage === 'string' ? componentOrMessage : formatErrorMessage(componentOrMessage, `Root element (\`$root\`) already initialised`);
104
+ super(message);
105
+ this.name = 'InitError';
106
+ }
107
+ }
108
+ /**
109
+ * @typedef {import('../common/index.mjs').ComponentWithModuleName} ComponentWithModuleName
110
+ */
111
+
112
+ class GOVUKFrontendComponent {
113
+ /**
114
+ * Returns the root element of the component
115
+ *
116
+ * @protected
117
+ * @returns {RootElementType} - the root element of component
118
+ */
119
+ get $root() {
120
+ return this._$root;
121
+ }
122
+ constructor($root) {
123
+ this._$root = void 0;
124
+ const childConstructor = this.constructor;
125
+ if (typeof childConstructor.moduleName !== 'string') {
126
+ throw new InitError(`\`moduleName\` not defined in component`);
127
+ }
128
+ if (!($root instanceof childConstructor.elementType)) {
129
+ throw new ElementError({
130
+ element: $root,
131
+ component: childConstructor,
132
+ identifier: 'Root element (`$root`)',
133
+ expectedType: childConstructor.elementType.name
134
+ });
135
+ } else {
136
+ this._$root = $root;
137
+ }
138
+ childConstructor.checkSupport();
139
+ this.checkInitialised();
140
+ const moduleName = childConstructor.moduleName;
141
+ this.$root.setAttribute(`data-${moduleName}-init`, '');
142
+ }
143
+ checkInitialised() {
144
+ const constructor = this.constructor;
145
+ const moduleName = constructor.moduleName;
146
+ if (moduleName && isInitialised(this.$root, moduleName)) {
147
+ throw new InitError(constructor);
148
+ }
149
+ }
150
+ static checkSupport() {
151
+ if (!isSupported()) {
152
+ throw new SupportError();
153
+ }
154
+ }
155
+ }
156
+
157
+ /**
158
+ * @typedef ChildClass
159
+ * @property {string} moduleName - The module name that'll be looked for in the DOM when initialising the component
160
+ */
161
+
162
+ /**
163
+ * @typedef {typeof GOVUKFrontendComponent & ChildClass} ChildClassConstructor
164
+ */
165
+ GOVUKFrontendComponent.elementType = HTMLElement;
166
+
167
+ /**
168
+ * Service Navigation component
169
+ *
170
+ * @preserve
171
+ */
172
+ class ServiceNavigation extends GOVUKFrontendComponent {
173
+ /**
174
+ * @param {Element | null} $root - HTML element to use for header
175
+ */
176
+ constructor($root) {
177
+ super($root);
178
+ this.$menuButton = void 0;
179
+ this.$menu = void 0;
180
+ this.menuIsOpen = false;
181
+ this.mql = null;
182
+ const $menuButton = this.$root.querySelector('.govuk-js-service-navigation-toggle');
183
+ if (!$menuButton) {
184
+ return this;
185
+ }
186
+ const menuId = $menuButton.getAttribute('aria-controls');
187
+ if (!menuId) {
188
+ throw new ElementError({
189
+ component: ServiceNavigation,
190
+ identifier: 'Navigation button (`<button class="govuk-js-service-navigation-toggle">`) attribute (`aria-controls`)'
191
+ });
192
+ }
193
+ const $menu = document.getElementById(menuId);
194
+ if (!$menu) {
195
+ throw new ElementError({
196
+ component: ServiceNavigation,
197
+ element: $menu,
198
+ identifier: `Navigation (\`<ul id="${menuId}">\`)`
199
+ });
200
+ }
201
+ this.$menu = $menu;
202
+ this.$menuButton = $menuButton;
203
+ this.setupResponsiveChecks();
204
+ this.$menuButton.addEventListener('click', () => this.handleMenuButtonClick());
205
+ }
206
+ setupResponsiveChecks() {
207
+ const breakpoint = getBreakpoint('tablet');
208
+ if (!breakpoint.value) {
209
+ throw new ElementError({
210
+ component: ServiceNavigation,
211
+ identifier: `CSS custom property (\`${breakpoint.property}\`) on pseudo-class \`:root\``
212
+ });
213
+ }
214
+ this.mql = window.matchMedia(`(min-width: ${breakpoint.value})`);
215
+ if ('addEventListener' in this.mql) {
216
+ this.mql.addEventListener('change', () => this.checkMode());
217
+ } else {
218
+ this.mql.addListener(() => this.checkMode());
219
+ }
220
+ this.checkMode();
221
+ }
222
+ checkMode() {
223
+ if (!this.mql || !this.$menu || !this.$menuButton) {
224
+ return;
225
+ }
226
+ if (this.mql.matches) {
227
+ this.$menu.removeAttribute('hidden');
228
+ this.$menuButton.setAttribute('hidden', '');
229
+ } else {
230
+ this.$menuButton.removeAttribute('hidden');
231
+ this.$menuButton.setAttribute('aria-expanded', this.menuIsOpen.toString());
232
+ if (this.menuIsOpen) {
233
+ this.$menu.removeAttribute('hidden');
234
+ } else {
235
+ this.$menu.setAttribute('hidden', '');
236
+ }
237
+ }
238
+ }
239
+ handleMenuButtonClick() {
240
+ this.menuIsOpen = !this.menuIsOpen;
241
+ this.checkMode();
242
+ }
243
+ }
244
+ ServiceNavigation.moduleName = 'govuk-service-navigation';
245
+
246
+ exports.ServiceNavigation = ServiceNavigation;
247
+
248
+ }));
249
+ //# sourceMappingURL=service-navigation.bundle.js.map
@@ -0,0 +1,241 @@
1
+ function getBreakpoint(name) {
2
+ const property = `--govuk-frontend-breakpoint-${name}`;
3
+ const value = window.getComputedStyle(document.documentElement).getPropertyValue(property);
4
+ return {
5
+ property,
6
+ value: value || undefined
7
+ };
8
+ }
9
+ function isInitialised($root, moduleName) {
10
+ return $root instanceof HTMLElement && $root.hasAttribute(`data-${moduleName}-init`);
11
+ }
12
+
13
+ /**
14
+ * Checks if GOV.UK Frontend is supported on this page
15
+ *
16
+ * Some browsers will load and run our JavaScript but GOV.UK Frontend
17
+ * won't be supported.
18
+ *
19
+ * @param {HTMLElement | null} [$scope] - (internal) `<body>` HTML element checked for browser support
20
+ * @returns {boolean} Whether GOV.UK Frontend is supported on this page
21
+ */
22
+ function isSupported($scope = document.body) {
23
+ if (!$scope) {
24
+ return false;
25
+ }
26
+ return $scope.classList.contains('govuk-frontend-supported');
27
+ }
28
+ function formatErrorMessage(Component, message) {
29
+ return `${Component.moduleName}: ${message}`;
30
+ }
31
+
32
+ /**
33
+ * Schema for component config
34
+ *
35
+ * @typedef {object} Schema
36
+ * @property {{ [field: string]: SchemaProperty | undefined }} properties - Schema properties
37
+ * @property {SchemaCondition[]} [anyOf] - List of schema conditions
38
+ */
39
+
40
+ /**
41
+ * Schema property for component config
42
+ *
43
+ * @typedef {object} SchemaProperty
44
+ * @property {'string' | 'boolean' | 'number' | 'object'} type - Property type
45
+ */
46
+
47
+ /**
48
+ * Schema condition for component config
49
+ *
50
+ * @typedef {object} SchemaCondition
51
+ * @property {string[]} required - List of required config fields
52
+ * @property {string} errorMessage - Error message when required config fields not provided
53
+ */
54
+ /**
55
+ * @typedef ComponentWithModuleName
56
+ * @property {string} moduleName - Name of the component
57
+ */
58
+
59
+ class GOVUKFrontendError extends Error {
60
+ constructor(...args) {
61
+ super(...args);
62
+ this.name = 'GOVUKFrontendError';
63
+ }
64
+ }
65
+ class SupportError extends GOVUKFrontendError {
66
+ /**
67
+ * Checks if GOV.UK Frontend is supported on this page
68
+ *
69
+ * @param {HTMLElement | null} [$scope] - HTML element `<body>` checked for browser support
70
+ */
71
+ constructor($scope = document.body) {
72
+ 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';
73
+ super($scope ? supportMessage : 'GOV.UK Frontend initialised without `<script type="module">`');
74
+ this.name = 'SupportError';
75
+ }
76
+ }
77
+ class ElementError extends GOVUKFrontendError {
78
+ constructor(messageOrOptions) {
79
+ let message = typeof messageOrOptions === 'string' ? messageOrOptions : '';
80
+ if (typeof messageOrOptions === 'object') {
81
+ const {
82
+ component,
83
+ identifier,
84
+ element,
85
+ expectedType
86
+ } = messageOrOptions;
87
+ message = identifier;
88
+ message += element ? ` is not of type ${expectedType != null ? expectedType : 'HTMLElement'}` : ' not found';
89
+ message = formatErrorMessage(component, message);
90
+ }
91
+ super(message);
92
+ this.name = 'ElementError';
93
+ }
94
+ }
95
+ class InitError extends GOVUKFrontendError {
96
+ constructor(componentOrMessage) {
97
+ const message = typeof componentOrMessage === 'string' ? componentOrMessage : formatErrorMessage(componentOrMessage, `Root element (\`$root\`) already initialised`);
98
+ super(message);
99
+ this.name = 'InitError';
100
+ }
101
+ }
102
+ /**
103
+ * @typedef {import('../common/index.mjs').ComponentWithModuleName} ComponentWithModuleName
104
+ */
105
+
106
+ class GOVUKFrontendComponent {
107
+ /**
108
+ * Returns the root element of the component
109
+ *
110
+ * @protected
111
+ * @returns {RootElementType} - the root element of component
112
+ */
113
+ get $root() {
114
+ return this._$root;
115
+ }
116
+ constructor($root) {
117
+ this._$root = void 0;
118
+ const childConstructor = this.constructor;
119
+ if (typeof childConstructor.moduleName !== 'string') {
120
+ throw new InitError(`\`moduleName\` not defined in component`);
121
+ }
122
+ if (!($root instanceof childConstructor.elementType)) {
123
+ throw new ElementError({
124
+ element: $root,
125
+ component: childConstructor,
126
+ identifier: 'Root element (`$root`)',
127
+ expectedType: childConstructor.elementType.name
128
+ });
129
+ } else {
130
+ this._$root = $root;
131
+ }
132
+ childConstructor.checkSupport();
133
+ this.checkInitialised();
134
+ const moduleName = childConstructor.moduleName;
135
+ this.$root.setAttribute(`data-${moduleName}-init`, '');
136
+ }
137
+ checkInitialised() {
138
+ const constructor = this.constructor;
139
+ const moduleName = constructor.moduleName;
140
+ if (moduleName && isInitialised(this.$root, moduleName)) {
141
+ throw new InitError(constructor);
142
+ }
143
+ }
144
+ static checkSupport() {
145
+ if (!isSupported()) {
146
+ throw new SupportError();
147
+ }
148
+ }
149
+ }
150
+
151
+ /**
152
+ * @typedef ChildClass
153
+ * @property {string} moduleName - The module name that'll be looked for in the DOM when initialising the component
154
+ */
155
+
156
+ /**
157
+ * @typedef {typeof GOVUKFrontendComponent & ChildClass} ChildClassConstructor
158
+ */
159
+ GOVUKFrontendComponent.elementType = HTMLElement;
160
+
161
+ /**
162
+ * Service Navigation component
163
+ *
164
+ * @preserve
165
+ */
166
+ class ServiceNavigation extends GOVUKFrontendComponent {
167
+ /**
168
+ * @param {Element | null} $root - HTML element to use for header
169
+ */
170
+ constructor($root) {
171
+ super($root);
172
+ this.$menuButton = void 0;
173
+ this.$menu = void 0;
174
+ this.menuIsOpen = false;
175
+ this.mql = null;
176
+ const $menuButton = this.$root.querySelector('.govuk-js-service-navigation-toggle');
177
+ if (!$menuButton) {
178
+ return this;
179
+ }
180
+ const menuId = $menuButton.getAttribute('aria-controls');
181
+ if (!menuId) {
182
+ throw new ElementError({
183
+ component: ServiceNavigation,
184
+ identifier: 'Navigation button (`<button class="govuk-js-service-navigation-toggle">`) attribute (`aria-controls`)'
185
+ });
186
+ }
187
+ const $menu = document.getElementById(menuId);
188
+ if (!$menu) {
189
+ throw new ElementError({
190
+ component: ServiceNavigation,
191
+ element: $menu,
192
+ identifier: `Navigation (\`<ul id="${menuId}">\`)`
193
+ });
194
+ }
195
+ this.$menu = $menu;
196
+ this.$menuButton = $menuButton;
197
+ this.setupResponsiveChecks();
198
+ this.$menuButton.addEventListener('click', () => this.handleMenuButtonClick());
199
+ }
200
+ setupResponsiveChecks() {
201
+ const breakpoint = getBreakpoint('tablet');
202
+ if (!breakpoint.value) {
203
+ throw new ElementError({
204
+ component: ServiceNavigation,
205
+ identifier: `CSS custom property (\`${breakpoint.property}\`) on pseudo-class \`:root\``
206
+ });
207
+ }
208
+ this.mql = window.matchMedia(`(min-width: ${breakpoint.value})`);
209
+ if ('addEventListener' in this.mql) {
210
+ this.mql.addEventListener('change', () => this.checkMode());
211
+ } else {
212
+ this.mql.addListener(() => this.checkMode());
213
+ }
214
+ this.checkMode();
215
+ }
216
+ checkMode() {
217
+ if (!this.mql || !this.$menu || !this.$menuButton) {
218
+ return;
219
+ }
220
+ if (this.mql.matches) {
221
+ this.$menu.removeAttribute('hidden');
222
+ this.$menuButton.setAttribute('hidden', '');
223
+ } else {
224
+ this.$menuButton.removeAttribute('hidden');
225
+ this.$menuButton.setAttribute('aria-expanded', this.menuIsOpen.toString());
226
+ if (this.menuIsOpen) {
227
+ this.$menu.removeAttribute('hidden');
228
+ } else {
229
+ this.$menu.setAttribute('hidden', '');
230
+ }
231
+ }
232
+ }
233
+ handleMenuButtonClick() {
234
+ this.menuIsOpen = !this.menuIsOpen;
235
+ this.checkMode();
236
+ }
237
+ }
238
+ ServiceNavigation.moduleName = 'govuk-service-navigation';
239
+
240
+ export { ServiceNavigation };
241
+ //# sourceMappingURL=service-navigation.bundle.mjs.map