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,5 +1,4 @@
1
1
  @include govuk-exports("govuk/component/header") {
2
-
3
2
  $govuk-header-background: govuk-colour("black");
4
3
  $govuk-header-border-color: $govuk-brand-colour;
5
4
  $govuk-header-border-width: govuk-spacing(2);
@@ -7,9 +6,15 @@
7
6
  $govuk-header-link-active: #1d8feb;
8
7
  $govuk-header-nav-item-border-color: #2e3133;
9
8
  $govuk-header-link-underline-thickness: 3px;
9
+ $govuk-header-vertical-spacing-value: 2;
10
+ // This crown height is only used to calculate top offset of mobile menu button
11
+ // as the crown svg height is the only thing that controls the height of the header
12
+ $govuk-header-crown-height: 30px;
13
+ $govuk-header-menu-button-height: 24px;
14
+ $govuk-header-menu-button-width: 80px;
10
15
 
11
16
  .govuk-header {
12
- @include govuk-font($size: 16);
17
+ @include govuk-font($size: 16, $line-height: 1);
13
18
 
14
19
  border-bottom: govuk-spacing(2) solid govuk-colour("white");
15
20
  color: $govuk-header-text;
@@ -29,16 +34,28 @@
29
34
  @include govuk-clearfix;
30
35
  position: relative;
31
36
  margin-bottom: -$govuk-header-border-width;
32
- padding-top: govuk-spacing(2);
37
+ padding-top: govuk-spacing($govuk-header-vertical-spacing-value);
33
38
  border-bottom: $govuk-header-border-width solid $govuk-header-border-color;
34
39
  }
35
40
 
41
+ .govuk-header--full-width-border {
42
+ border-bottom-color: $govuk-header-border-color;
43
+
44
+ .govuk-header__container {
45
+ border-bottom-color: transparent;
46
+ }
47
+ }
48
+
36
49
  .govuk-header__logotype {
37
50
  display: inline-block;
51
+ position: relative;
52
+ top: -3px;
38
53
 
39
54
  // Add a gap after the logo in case it's followed by a product name. This
40
55
  // gets removed later if the logotype is a :last-child.
41
56
  margin-right: govuk-spacing(1);
57
+ fill: currentcolor;
58
+ vertical-align: top;
42
59
 
43
60
  // Prevent readability backplate from obscuring underline in Windows High
44
61
  // Contrast Mode
@@ -54,24 +71,32 @@
54
71
  }
55
72
  }
56
73
 
57
- .govuk-header__logotype-crown {
58
- position: relative;
59
- top: -1px;
60
- margin-right: 1px;
61
- fill: currentcolor;
62
- vertical-align: top;
63
- }
64
-
65
- .govuk-header__logotype-crown-fallback-image {
66
- width: 36px;
67
- height: 32px;
68
- border: 0;
69
- vertical-align: bottom;
70
- }
71
-
72
74
  .govuk-header__product-name {
73
- @include govuk-font($size: 24, $line-height: 1);
75
+ $product-name-offset: if($govuk-new-typography-scale, 7px, 10px);
76
+ $product-name-offset-tablet: 5px;
77
+
78
+ @include govuk-font-size($size: 24, $line-height: 1);
79
+ @include govuk-typography-weight-regular;
74
80
  display: inline-table;
81
+
82
+ // Maintain space below logo when wrapped
83
+ margin-top: $product-name-offset;
84
+
85
+ // Firefox places the GOV.UK logo one pixel higher, due to how it rounds
86
+ // subpixels, so nudge the product name in FF to still be aligned.
87
+ @-moz-document url-prefix() {
88
+ margin-top: $product-name-offset - 0.5px;
89
+ }
90
+
91
+ // Align vertically with logo when not wrapped
92
+ vertical-align: top;
93
+
94
+ @include govuk-media-query($from: tablet) {
95
+ margin-top: $product-name-offset-tablet;
96
+ @-moz-document url-prefix() {
97
+ margin-top: $product-name-offset-tablet - 0.5px;
98
+ }
99
+ }
75
100
  }
76
101
 
77
102
  .govuk-header__link {
@@ -82,7 +107,6 @@
82
107
  // - all links get a 3px underline regardless of text size, as there are
83
108
  // multiple grouped elements close to one another and having slightly
84
109
  // different underline widths looks unbalanced
85
- @include govuk-typography-common;
86
110
  @include govuk-link-style-inverse;
87
111
 
88
112
  text-decoration: none;
@@ -104,14 +128,11 @@
104
128
  .govuk-header__link--homepage {
105
129
  // Font size needs to be set on the link so that the box sizing is correct
106
130
  // in Firefox
107
- @include govuk-font($size: false, $weight: bold);
108
-
109
131
  display: inline-block;
110
132
  margin-right: govuk-spacing(2);
111
133
  font-size: 30px; // We don't have a mixin that produces 30px font size
112
- line-height: 1;
113
134
 
114
- @include govuk-media-query($from: tablet) {
135
+ @include govuk-media-query($from: desktop) {
115
136
  display: inline;
116
137
 
117
138
  &:focus {
@@ -130,8 +151,6 @@
130
151
  &:active {
131
152
  // Negate the added border
132
153
  margin-bottom: $govuk-header-link-underline-thickness * -1;
133
- // Omitting colour will use default value of currentColor – if we
134
- // specified currentColor explicitly IE8 would ignore this rule.
135
154
  border-bottom: $govuk-header-link-underline-thickness solid;
136
155
  }
137
156
 
@@ -142,13 +161,11 @@
142
161
  }
143
162
  }
144
163
 
145
- // The govuk-header__link--service-name class is deprecated - use
146
- // govuk-header__service-name instead.
147
- .govuk-header__service-name,
148
- .govuk-header__link--service-name {
164
+ .govuk-header__service-name {
149
165
  display: inline-block;
150
166
  margin-bottom: govuk-spacing(2);
151
- @include govuk-font($size: 24, $weight: bold);
167
+ @include govuk-font-size($size: 24);
168
+ @include govuk-typography-weight-bold;
152
169
  }
153
170
 
154
171
  .govuk-header__logo,
@@ -157,19 +174,28 @@
157
174
  }
158
175
 
159
176
  .govuk-header__logo {
160
- @include govuk-responsive-margin(2, "bottom");
161
- padding-right: govuk-spacing(8);
177
+ @include govuk-responsive-margin($govuk-header-vertical-spacing-value, "bottom");
178
+ // Protect the absolute positioned menu button from overlapping with the
179
+ // logo with right padding using the button's width
180
+ padding-right: $govuk-header-menu-button-width;
162
181
 
163
- @include govuk-media-query ($from: desktop) {
182
+ @include govuk-media-query($from: desktop) {
164
183
  width: 33.33%;
165
184
  padding-right: $govuk-gutter-half;
166
185
  float: left;
167
186
  vertical-align: top;
187
+
188
+ // Reset float when logo is the last child, without a navigation
189
+ &:last-child {
190
+ width: auto;
191
+ padding-right: 0;
192
+ float: none;
193
+ }
168
194
  }
169
195
  }
170
196
 
171
197
  .govuk-header__content {
172
- @include govuk-media-query ($from: desktop) {
198
+ @include govuk-media-query($from: desktop) {
173
199
  width: 66.66%;
174
200
  padding-left: $govuk-gutter-half;
175
201
  float: left;
@@ -178,15 +204,23 @@
178
204
 
179
205
  .govuk-header__menu-button {
180
206
  @include govuk-font($size: 16);
181
- display: none;
182
207
  position: absolute;
183
- top: govuk-spacing(4);
208
+ // calculate top offset by:
209
+ // - getting the vertical spacing for the top and the bottom of the header
210
+ // - adding that to the crown height
211
+ // - dividing it by 2 so you have the vertical centre of the header
212
+ // - subtracting half the height of the menu button
213
+ top: (((govuk-spacing($govuk-header-vertical-spacing-value) * 2) + $govuk-header-crown-height) / 2) -
214
+ ($govuk-header-menu-button-height / 2);
184
215
  right: 0;
216
+ max-width: $govuk-header-menu-button-width;
217
+ min-height: $govuk-header-menu-button-height;
185
218
  margin: 0;
186
219
  padding: 0;
187
220
  border: 0;
188
221
  color: govuk-colour("white");
189
222
  background: none;
223
+ word-break: break-all;
190
224
  cursor: pointer;
191
225
 
192
226
  &:hover {
@@ -202,32 +236,32 @@
202
236
  @include govuk-focused-text;
203
237
  }
204
238
 
205
- &:after {
239
+ &::after {
206
240
  @include govuk-shape-arrow($direction: down, $base: 10px, $display: inline-block);
207
241
  content: "";
208
242
  margin-left: govuk-spacing(1);
209
243
  }
210
244
 
211
- &[aria-expanded="true"]:after {
245
+ &[aria-expanded="true"]::after {
212
246
  @include govuk-shape-arrow($direction: up, $base: 10px, $display: inline-block);
213
247
  }
214
248
 
215
- @include govuk-media-query ($from: tablet) {
249
+ @include govuk-media-query($from: tablet) {
216
250
  top: govuk-spacing(3);
217
251
  }
218
252
 
219
- .js-enabled & {
253
+ .govuk-frontend-supported & {
220
254
  display: block;
221
255
  }
222
256
 
223
257
  &[hidden],
224
- .js-enabled &[hidden] {
258
+ .govuk-frontend-supported &[hidden] {
225
259
  display: none;
226
260
  }
227
261
  }
228
262
 
229
263
  .govuk-header__navigation {
230
- @include govuk-media-query ($from: desktop) {
264
+ @include govuk-media-query($from: desktop) {
231
265
  margin-bottom: govuk-spacing(2);
232
266
  }
233
267
  }
@@ -244,24 +278,18 @@
244
278
  }
245
279
 
246
280
  .govuk-header__navigation--end {
247
- @include govuk-media-query ($from: desktop) {
281
+ @include govuk-media-query($from: desktop) {
248
282
  margin: 0;
249
283
  padding: govuk-spacing(1) 0;
250
284
  text-align: right;
251
285
  }
252
286
  }
253
287
 
254
- // The govuk-header__navigation--no-service-name class is deprecated and will
255
- // be removed in the next major release.
256
- .govuk-header__navigation--no-service-name {
257
- padding-top: govuk-spacing(7);
258
- }
259
-
260
288
  .govuk-header__navigation-item {
261
289
  padding: govuk-spacing(2) 0;
262
290
  border-bottom: 1px solid $govuk-header-nav-item-border-color;
263
291
 
264
- @include govuk-media-query ($from: desktop) {
292
+ @include govuk-media-query($from: desktop) {
265
293
  display: inline-block;
266
294
  margin-right: govuk-spacing(3);
267
295
  padding: govuk-spacing(1) 0;
@@ -269,7 +297,8 @@
269
297
  }
270
298
 
271
299
  a {
272
- @include govuk-font($size: 16, $weight: bold);
300
+ @include govuk-font-size($size: 16);
301
+ @include govuk-typography-weight-bold;
273
302
  white-space: nowrap;
274
303
  }
275
304
  }
@@ -308,11 +337,6 @@
308
337
  background: transparent;
309
338
  }
310
339
 
311
- // Hide the inverted crown when printing in browsers that don't support SVG.
312
- .govuk-header__logotype-crown-fallback-image {
313
- display: none;
314
- }
315
-
316
340
  .govuk-header__link {
317
341
  &:link,
318
342
  &:visited {
@@ -320,30 +344,11 @@
320
344
  }
321
345
 
322
346
  // Do not append link href to GOV.UK link when printing (e.g. '(/)')
323
- &:after {
347
+ &::after {
324
348
  display: none;
325
349
  }
326
350
  }
327
351
  }
328
-
329
- @if $govuk-use-legacy-font {
330
- // Begin adjustments for font baseline offset
331
- // These should be removed when the font is updated with the correct baseline
332
- .govuk-header__logotype-crown,
333
- .govuk-header__logotype-crown-fallback-image {
334
- position: relative;
335
- top: -4px;
336
- vertical-align: middle;
337
- }
338
-
339
- .govuk-header {
340
- $offset: 3px;
341
- padding-top: $offset;
342
- }
343
-
344
- .govuk-header__link--homepage {
345
- line-height: 30px;
346
- }
347
- // End adjustments
348
- }
349
352
  }
353
+
354
+ /*# sourceMappingURL=_index.scss.map */
@@ -0,0 +1,252 @@
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
+ * Header component
169
+ *
170
+ * @preserve
171
+ */
172
+ class Header extends GOVUKFrontendComponent {
173
+ /**
174
+ * Apply a matchMedia for desktop which will trigger a state sync if the
175
+ * browser viewport moves between states.
176
+ *
177
+ * @param {Element | null} $root - HTML element to use for header
178
+ */
179
+ constructor($root) {
180
+ super($root);
181
+ this.$menuButton = void 0;
182
+ this.$menu = void 0;
183
+ this.menuIsOpen = false;
184
+ this.mql = null;
185
+ const $menuButton = this.$root.querySelector('.govuk-js-header-toggle');
186
+ if (!$menuButton) {
187
+ return this;
188
+ }
189
+ const menuId = $menuButton.getAttribute('aria-controls');
190
+ if (!menuId) {
191
+ throw new ElementError({
192
+ component: Header,
193
+ identifier: 'Navigation button (`<button class="govuk-js-header-toggle">`) attribute (`aria-controls`)'
194
+ });
195
+ }
196
+ const $menu = document.getElementById(menuId);
197
+ if (!$menu) {
198
+ throw new ElementError({
199
+ component: Header,
200
+ element: $menu,
201
+ identifier: `Navigation (\`<ul id="${menuId}">\`)`
202
+ });
203
+ }
204
+ this.$menu = $menu;
205
+ this.$menuButton = $menuButton;
206
+ this.setupResponsiveChecks();
207
+ this.$menuButton.addEventListener('click', () => this.handleMenuButtonClick());
208
+ }
209
+ setupResponsiveChecks() {
210
+ const breakpoint = getBreakpoint('desktop');
211
+ if (!breakpoint.value) {
212
+ throw new ElementError({
213
+ component: Header,
214
+ identifier: `CSS custom property (\`${breakpoint.property}\`) on pseudo-class \`:root\``
215
+ });
216
+ }
217
+ this.mql = window.matchMedia(`(min-width: ${breakpoint.value})`);
218
+ if ('addEventListener' in this.mql) {
219
+ this.mql.addEventListener('change', () => this.checkMode());
220
+ } else {
221
+ this.mql.addListener(() => this.checkMode());
222
+ }
223
+ this.checkMode();
224
+ }
225
+ checkMode() {
226
+ if (!this.mql || !this.$menu || !this.$menuButton) {
227
+ return;
228
+ }
229
+ if (this.mql.matches) {
230
+ this.$menu.removeAttribute('hidden');
231
+ this.$menuButton.setAttribute('hidden', '');
232
+ } else {
233
+ this.$menuButton.removeAttribute('hidden');
234
+ this.$menuButton.setAttribute('aria-expanded', this.menuIsOpen.toString());
235
+ if (this.menuIsOpen) {
236
+ this.$menu.removeAttribute('hidden');
237
+ } else {
238
+ this.$menu.setAttribute('hidden', '');
239
+ }
240
+ }
241
+ }
242
+ handleMenuButtonClick() {
243
+ this.menuIsOpen = !this.menuIsOpen;
244
+ this.checkMode();
245
+ }
246
+ }
247
+ Header.moduleName = 'govuk-header';
248
+
249
+ exports.Header = Header;
250
+
251
+ }));
252
+ //# sourceMappingURL=header.bundle.js.map