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,245 @@
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 isInitialised($root, moduleName) {
8
+ return $root instanceof HTMLElement && $root.hasAttribute(`data-${moduleName}-init`);
9
+ }
10
+
11
+ /**
12
+ * Checks if GOV.UK Frontend is supported on this page
13
+ *
14
+ * Some browsers will load and run our JavaScript but GOV.UK Frontend
15
+ * won't be supported.
16
+ *
17
+ * @param {HTMLElement | null} [$scope] - (internal) `<body>` HTML element checked for browser support
18
+ * @returns {boolean} Whether GOV.UK Frontend is supported on this page
19
+ */
20
+ function isSupported($scope = document.body) {
21
+ if (!$scope) {
22
+ return false;
23
+ }
24
+ return $scope.classList.contains('govuk-frontend-supported');
25
+ }
26
+ function formatErrorMessage(Component, message) {
27
+ return `${Component.moduleName}: ${message}`;
28
+ }
29
+
30
+ /**
31
+ * Schema for component config
32
+ *
33
+ * @typedef {object} Schema
34
+ * @property {{ [field: string]: SchemaProperty | undefined }} properties - Schema properties
35
+ * @property {SchemaCondition[]} [anyOf] - List of schema conditions
36
+ */
37
+
38
+ /**
39
+ * Schema property for component config
40
+ *
41
+ * @typedef {object} SchemaProperty
42
+ * @property {'string' | 'boolean' | 'number' | 'object'} type - Property type
43
+ */
44
+
45
+ /**
46
+ * Schema condition for component config
47
+ *
48
+ * @typedef {object} SchemaCondition
49
+ * @property {string[]} required - List of required config fields
50
+ * @property {string} errorMessage - Error message when required config fields not provided
51
+ */
52
+ /**
53
+ * @typedef ComponentWithModuleName
54
+ * @property {string} moduleName - Name of the component
55
+ */
56
+
57
+ class GOVUKFrontendError extends Error {
58
+ constructor(...args) {
59
+ super(...args);
60
+ this.name = 'GOVUKFrontendError';
61
+ }
62
+ }
63
+ class SupportError extends GOVUKFrontendError {
64
+ /**
65
+ * Checks if GOV.UK Frontend is supported on this page
66
+ *
67
+ * @param {HTMLElement | null} [$scope] - HTML element `<body>` checked for browser support
68
+ */
69
+ constructor($scope = document.body) {
70
+ 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';
71
+ super($scope ? supportMessage : 'GOV.UK Frontend initialised without `<script type="module">`');
72
+ this.name = 'SupportError';
73
+ }
74
+ }
75
+ class ElementError extends GOVUKFrontendError {
76
+ constructor(messageOrOptions) {
77
+ let message = typeof messageOrOptions === 'string' ? messageOrOptions : '';
78
+ if (typeof messageOrOptions === 'object') {
79
+ const {
80
+ component,
81
+ identifier,
82
+ element,
83
+ expectedType
84
+ } = messageOrOptions;
85
+ message = identifier;
86
+ message += element ? ` is not of type ${expectedType != null ? expectedType : 'HTMLElement'}` : ' not found';
87
+ message = formatErrorMessage(component, message);
88
+ }
89
+ super(message);
90
+ this.name = 'ElementError';
91
+ }
92
+ }
93
+ class InitError extends GOVUKFrontendError {
94
+ constructor(componentOrMessage) {
95
+ const message = typeof componentOrMessage === 'string' ? componentOrMessage : formatErrorMessage(componentOrMessage, `Root element (\`$root\`) already initialised`);
96
+ super(message);
97
+ this.name = 'InitError';
98
+ }
99
+ }
100
+ /**
101
+ * @typedef {import('../common/index.mjs').ComponentWithModuleName} ComponentWithModuleName
102
+ */
103
+
104
+ class GOVUKFrontendComponent {
105
+ /**
106
+ * Returns the root element of the component
107
+ *
108
+ * @protected
109
+ * @returns {RootElementType} - the root element of component
110
+ */
111
+ get $root() {
112
+ return this._$root;
113
+ }
114
+ constructor($root) {
115
+ this._$root = void 0;
116
+ const childConstructor = this.constructor;
117
+ if (typeof childConstructor.moduleName !== 'string') {
118
+ throw new InitError(`\`moduleName\` not defined in component`);
119
+ }
120
+ if (!($root instanceof childConstructor.elementType)) {
121
+ throw new ElementError({
122
+ element: $root,
123
+ component: childConstructor,
124
+ identifier: 'Root element (`$root`)',
125
+ expectedType: childConstructor.elementType.name
126
+ });
127
+ } else {
128
+ this._$root = $root;
129
+ }
130
+ childConstructor.checkSupport();
131
+ this.checkInitialised();
132
+ const moduleName = childConstructor.moduleName;
133
+ this.$root.setAttribute(`data-${moduleName}-init`, '');
134
+ }
135
+ checkInitialised() {
136
+ const constructor = this.constructor;
137
+ const moduleName = constructor.moduleName;
138
+ if (moduleName && isInitialised(this.$root, moduleName)) {
139
+ throw new InitError(constructor);
140
+ }
141
+ }
142
+ static checkSupport() {
143
+ if (!isSupported()) {
144
+ throw new SupportError();
145
+ }
146
+ }
147
+ }
148
+
149
+ /**
150
+ * @typedef ChildClass
151
+ * @property {string} moduleName - The module name that'll be looked for in the DOM when initialising the component
152
+ */
153
+
154
+ /**
155
+ * @typedef {typeof GOVUKFrontendComponent & ChildClass} ChildClassConstructor
156
+ */
157
+ GOVUKFrontendComponent.elementType = HTMLElement;
158
+
159
+ /**
160
+ * Radios component
161
+ *
162
+ * @preserve
163
+ */
164
+ class Radios extends GOVUKFrontendComponent {
165
+ /**
166
+ * Radios can be associated with a 'conditionally revealed' content block –
167
+ * for example, a radio for 'Phone' could reveal an additional form field for
168
+ * the user to enter their phone number.
169
+ *
170
+ * These associations are made using a `data-aria-controls` attribute, which
171
+ * is promoted to an aria-controls attribute during initialisation.
172
+ *
173
+ * We also need to restore the state of any conditional reveals on the page
174
+ * (for example if the user has navigated back), and set up event handlers to
175
+ * keep the reveal in sync with the radio state.
176
+ *
177
+ * @param {Element | null} $root - HTML element to use for radios
178
+ */
179
+ constructor($root) {
180
+ super($root);
181
+ this.$inputs = void 0;
182
+ const $inputs = this.$root.querySelectorAll('input[type="radio"]');
183
+ if (!$inputs.length) {
184
+ throw new ElementError({
185
+ component: Radios,
186
+ identifier: 'Form inputs (`<input type="radio">`)'
187
+ });
188
+ }
189
+ this.$inputs = $inputs;
190
+ this.$inputs.forEach($input => {
191
+ const targetId = $input.getAttribute('data-aria-controls');
192
+ if (!targetId) {
193
+ return;
194
+ }
195
+ if (!document.getElementById(targetId)) {
196
+ throw new ElementError({
197
+ component: Radios,
198
+ identifier: `Conditional reveal (\`id="${targetId}"\`)`
199
+ });
200
+ }
201
+ $input.setAttribute('aria-controls', targetId);
202
+ $input.removeAttribute('data-aria-controls');
203
+ });
204
+ window.addEventListener('pageshow', () => this.syncAllConditionalReveals());
205
+ this.syncAllConditionalReveals();
206
+ this.$root.addEventListener('click', event => this.handleClick(event));
207
+ }
208
+ syncAllConditionalReveals() {
209
+ this.$inputs.forEach($input => this.syncConditionalRevealWithInputState($input));
210
+ }
211
+ syncConditionalRevealWithInputState($input) {
212
+ const targetId = $input.getAttribute('aria-controls');
213
+ if (!targetId) {
214
+ return;
215
+ }
216
+ const $target = document.getElementById(targetId);
217
+ if ($target != null && $target.classList.contains('govuk-radios__conditional')) {
218
+ const inputIsChecked = $input.checked;
219
+ $input.setAttribute('aria-expanded', inputIsChecked.toString());
220
+ $target.classList.toggle('govuk-radios__conditional--hidden', !inputIsChecked);
221
+ }
222
+ }
223
+ handleClick(event) {
224
+ const $clickedInput = event.target;
225
+ if (!($clickedInput instanceof HTMLInputElement) || $clickedInput.type !== 'radio') {
226
+ return;
227
+ }
228
+ const $allInputs = document.querySelectorAll('input[type="radio"][aria-controls]');
229
+ const $clickedInputForm = $clickedInput.form;
230
+ const $clickedInputName = $clickedInput.name;
231
+ $allInputs.forEach($input => {
232
+ const hasSameFormOwner = $input.form === $clickedInputForm;
233
+ const hasSameName = $input.name === $clickedInputName;
234
+ if (hasSameName && hasSameFormOwner) {
235
+ this.syncConditionalRevealWithInputState($input);
236
+ }
237
+ });
238
+ }
239
+ }
240
+ Radios.moduleName = 'govuk-radios';
241
+
242
+ exports.Radios = Radios;
243
+
244
+ }));
245
+ //# sourceMappingURL=radios.bundle.js.map
@@ -0,0 +1,237 @@
1
+ function isInitialised($root, moduleName) {
2
+ return $root instanceof HTMLElement && $root.hasAttribute(`data-${moduleName}-init`);
3
+ }
4
+
5
+ /**
6
+ * Checks if GOV.UK Frontend is supported on this page
7
+ *
8
+ * Some browsers will load and run our JavaScript but GOV.UK Frontend
9
+ * won't be supported.
10
+ *
11
+ * @param {HTMLElement | null} [$scope] - (internal) `<body>` HTML element checked for browser support
12
+ * @returns {boolean} Whether GOV.UK Frontend is supported on this page
13
+ */
14
+ function isSupported($scope = document.body) {
15
+ if (!$scope) {
16
+ return false;
17
+ }
18
+ return $scope.classList.contains('govuk-frontend-supported');
19
+ }
20
+ function formatErrorMessage(Component, message) {
21
+ return `${Component.moduleName}: ${message}`;
22
+ }
23
+
24
+ /**
25
+ * Schema for component config
26
+ *
27
+ * @typedef {object} Schema
28
+ * @property {{ [field: string]: SchemaProperty | undefined }} properties - Schema properties
29
+ * @property {SchemaCondition[]} [anyOf] - List of schema conditions
30
+ */
31
+
32
+ /**
33
+ * Schema property for component config
34
+ *
35
+ * @typedef {object} SchemaProperty
36
+ * @property {'string' | 'boolean' | 'number' | 'object'} type - Property type
37
+ */
38
+
39
+ /**
40
+ * Schema condition for component config
41
+ *
42
+ * @typedef {object} SchemaCondition
43
+ * @property {string[]} required - List of required config fields
44
+ * @property {string} errorMessage - Error message when required config fields not provided
45
+ */
46
+ /**
47
+ * @typedef ComponentWithModuleName
48
+ * @property {string} moduleName - Name of the component
49
+ */
50
+
51
+ class GOVUKFrontendError extends Error {
52
+ constructor(...args) {
53
+ super(...args);
54
+ this.name = 'GOVUKFrontendError';
55
+ }
56
+ }
57
+ class SupportError extends GOVUKFrontendError {
58
+ /**
59
+ * Checks if GOV.UK Frontend is supported on this page
60
+ *
61
+ * @param {HTMLElement | null} [$scope] - HTML element `<body>` checked for browser support
62
+ */
63
+ constructor($scope = document.body) {
64
+ 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';
65
+ super($scope ? supportMessage : 'GOV.UK Frontend initialised without `<script type="module">`');
66
+ this.name = 'SupportError';
67
+ }
68
+ }
69
+ class ElementError extends GOVUKFrontendError {
70
+ constructor(messageOrOptions) {
71
+ let message = typeof messageOrOptions === 'string' ? messageOrOptions : '';
72
+ if (typeof messageOrOptions === 'object') {
73
+ const {
74
+ component,
75
+ identifier,
76
+ element,
77
+ expectedType
78
+ } = messageOrOptions;
79
+ message = identifier;
80
+ message += element ? ` is not of type ${expectedType != null ? expectedType : 'HTMLElement'}` : ' not found';
81
+ message = formatErrorMessage(component, message);
82
+ }
83
+ super(message);
84
+ this.name = 'ElementError';
85
+ }
86
+ }
87
+ class InitError extends GOVUKFrontendError {
88
+ constructor(componentOrMessage) {
89
+ const message = typeof componentOrMessage === 'string' ? componentOrMessage : formatErrorMessage(componentOrMessage, `Root element (\`$root\`) already initialised`);
90
+ super(message);
91
+ this.name = 'InitError';
92
+ }
93
+ }
94
+ /**
95
+ * @typedef {import('../common/index.mjs').ComponentWithModuleName} ComponentWithModuleName
96
+ */
97
+
98
+ class GOVUKFrontendComponent {
99
+ /**
100
+ * Returns the root element of the component
101
+ *
102
+ * @protected
103
+ * @returns {RootElementType} - the root element of component
104
+ */
105
+ get $root() {
106
+ return this._$root;
107
+ }
108
+ constructor($root) {
109
+ this._$root = void 0;
110
+ const childConstructor = this.constructor;
111
+ if (typeof childConstructor.moduleName !== 'string') {
112
+ throw new InitError(`\`moduleName\` not defined in component`);
113
+ }
114
+ if (!($root instanceof childConstructor.elementType)) {
115
+ throw new ElementError({
116
+ element: $root,
117
+ component: childConstructor,
118
+ identifier: 'Root element (`$root`)',
119
+ expectedType: childConstructor.elementType.name
120
+ });
121
+ } else {
122
+ this._$root = $root;
123
+ }
124
+ childConstructor.checkSupport();
125
+ this.checkInitialised();
126
+ const moduleName = childConstructor.moduleName;
127
+ this.$root.setAttribute(`data-${moduleName}-init`, '');
128
+ }
129
+ checkInitialised() {
130
+ const constructor = this.constructor;
131
+ const moduleName = constructor.moduleName;
132
+ if (moduleName && isInitialised(this.$root, moduleName)) {
133
+ throw new InitError(constructor);
134
+ }
135
+ }
136
+ static checkSupport() {
137
+ if (!isSupported()) {
138
+ throw new SupportError();
139
+ }
140
+ }
141
+ }
142
+
143
+ /**
144
+ * @typedef ChildClass
145
+ * @property {string} moduleName - The module name that'll be looked for in the DOM when initialising the component
146
+ */
147
+
148
+ /**
149
+ * @typedef {typeof GOVUKFrontendComponent & ChildClass} ChildClassConstructor
150
+ */
151
+ GOVUKFrontendComponent.elementType = HTMLElement;
152
+
153
+ /**
154
+ * Radios component
155
+ *
156
+ * @preserve
157
+ */
158
+ class Radios extends GOVUKFrontendComponent {
159
+ /**
160
+ * Radios can be associated with a 'conditionally revealed' content block –
161
+ * for example, a radio for 'Phone' could reveal an additional form field for
162
+ * the user to enter their phone number.
163
+ *
164
+ * These associations are made using a `data-aria-controls` attribute, which
165
+ * is promoted to an aria-controls attribute during initialisation.
166
+ *
167
+ * We also need to restore the state of any conditional reveals on the page
168
+ * (for example if the user has navigated back), and set up event handlers to
169
+ * keep the reveal in sync with the radio state.
170
+ *
171
+ * @param {Element | null} $root - HTML element to use for radios
172
+ */
173
+ constructor($root) {
174
+ super($root);
175
+ this.$inputs = void 0;
176
+ const $inputs = this.$root.querySelectorAll('input[type="radio"]');
177
+ if (!$inputs.length) {
178
+ throw new ElementError({
179
+ component: Radios,
180
+ identifier: 'Form inputs (`<input type="radio">`)'
181
+ });
182
+ }
183
+ this.$inputs = $inputs;
184
+ this.$inputs.forEach($input => {
185
+ const targetId = $input.getAttribute('data-aria-controls');
186
+ if (!targetId) {
187
+ return;
188
+ }
189
+ if (!document.getElementById(targetId)) {
190
+ throw new ElementError({
191
+ component: Radios,
192
+ identifier: `Conditional reveal (\`id="${targetId}"\`)`
193
+ });
194
+ }
195
+ $input.setAttribute('aria-controls', targetId);
196
+ $input.removeAttribute('data-aria-controls');
197
+ });
198
+ window.addEventListener('pageshow', () => this.syncAllConditionalReveals());
199
+ this.syncAllConditionalReveals();
200
+ this.$root.addEventListener('click', event => this.handleClick(event));
201
+ }
202
+ syncAllConditionalReveals() {
203
+ this.$inputs.forEach($input => this.syncConditionalRevealWithInputState($input));
204
+ }
205
+ syncConditionalRevealWithInputState($input) {
206
+ const targetId = $input.getAttribute('aria-controls');
207
+ if (!targetId) {
208
+ return;
209
+ }
210
+ const $target = document.getElementById(targetId);
211
+ if ($target != null && $target.classList.contains('govuk-radios__conditional')) {
212
+ const inputIsChecked = $input.checked;
213
+ $input.setAttribute('aria-expanded', inputIsChecked.toString());
214
+ $target.classList.toggle('govuk-radios__conditional--hidden', !inputIsChecked);
215
+ }
216
+ }
217
+ handleClick(event) {
218
+ const $clickedInput = event.target;
219
+ if (!($clickedInput instanceof HTMLInputElement) || $clickedInput.type !== 'radio') {
220
+ return;
221
+ }
222
+ const $allInputs = document.querySelectorAll('input[type="radio"][aria-controls]');
223
+ const $clickedInputForm = $clickedInput.form;
224
+ const $clickedInputName = $clickedInput.name;
225
+ $allInputs.forEach($input => {
226
+ const hasSameFormOwner = $input.form === $clickedInputForm;
227
+ const hasSameName = $input.name === $clickedInputName;
228
+ if (hasSameName && hasSameFormOwner) {
229
+ this.syncConditionalRevealWithInputState($input);
230
+ }
231
+ });
232
+ }
233
+ }
234
+ Radios.moduleName = 'govuk-radios';
235
+
236
+ export { Radios };
237
+ //# sourceMappingURL=radios.bundle.mjs.map
@@ -0,0 +1,88 @@
1
+ import { ElementError } from '../../errors/index.mjs';
2
+ import { GOVUKFrontendComponent } from '../../govuk-frontend-component.mjs';
3
+
4
+ /**
5
+ * Radios component
6
+ *
7
+ * @preserve
8
+ */
9
+ class Radios extends GOVUKFrontendComponent {
10
+ /**
11
+ * Radios can be associated with a 'conditionally revealed' content block –
12
+ * for example, a radio for 'Phone' could reveal an additional form field for
13
+ * the user to enter their phone number.
14
+ *
15
+ * These associations are made using a `data-aria-controls` attribute, which
16
+ * is promoted to an aria-controls attribute during initialisation.
17
+ *
18
+ * We also need to restore the state of any conditional reveals on the page
19
+ * (for example if the user has navigated back), and set up event handlers to
20
+ * keep the reveal in sync with the radio state.
21
+ *
22
+ * @param {Element | null} $root - HTML element to use for radios
23
+ */
24
+ constructor($root) {
25
+ super($root);
26
+ this.$inputs = void 0;
27
+ const $inputs = this.$root.querySelectorAll('input[type="radio"]');
28
+ if (!$inputs.length) {
29
+ throw new ElementError({
30
+ component: Radios,
31
+ identifier: 'Form inputs (`<input type="radio">`)'
32
+ });
33
+ }
34
+ this.$inputs = $inputs;
35
+ this.$inputs.forEach($input => {
36
+ const targetId = $input.getAttribute('data-aria-controls');
37
+ if (!targetId) {
38
+ return;
39
+ }
40
+ if (!document.getElementById(targetId)) {
41
+ throw new ElementError({
42
+ component: Radios,
43
+ identifier: `Conditional reveal (\`id="${targetId}"\`)`
44
+ });
45
+ }
46
+ $input.setAttribute('aria-controls', targetId);
47
+ $input.removeAttribute('data-aria-controls');
48
+ });
49
+ window.addEventListener('pageshow', () => this.syncAllConditionalReveals());
50
+ this.syncAllConditionalReveals();
51
+ this.$root.addEventListener('click', event => this.handleClick(event));
52
+ }
53
+ syncAllConditionalReveals() {
54
+ this.$inputs.forEach($input => this.syncConditionalRevealWithInputState($input));
55
+ }
56
+ syncConditionalRevealWithInputState($input) {
57
+ const targetId = $input.getAttribute('aria-controls');
58
+ if (!targetId) {
59
+ return;
60
+ }
61
+ const $target = document.getElementById(targetId);
62
+ if ($target != null && $target.classList.contains('govuk-radios__conditional')) {
63
+ const inputIsChecked = $input.checked;
64
+ $input.setAttribute('aria-expanded', inputIsChecked.toString());
65
+ $target.classList.toggle('govuk-radios__conditional--hidden', !inputIsChecked);
66
+ }
67
+ }
68
+ handleClick(event) {
69
+ const $clickedInput = event.target;
70
+ if (!($clickedInput instanceof HTMLInputElement) || $clickedInput.type !== 'radio') {
71
+ return;
72
+ }
73
+ const $allInputs = document.querySelectorAll('input[type="radio"][aria-controls]');
74
+ const $clickedInputForm = $clickedInput.form;
75
+ const $clickedInputName = $clickedInput.name;
76
+ $allInputs.forEach($input => {
77
+ const hasSameFormOwner = $input.form === $clickedInputForm;
78
+ const hasSameName = $input.name === $clickedInputName;
79
+ if (hasSameName && hasSameFormOwner) {
80
+ this.syncConditionalRevealWithInputState($input);
81
+ }
82
+ });
83
+ }
84
+ }
85
+ Radios.moduleName = 'govuk-radios';
86
+
87
+ export { Radios };
88
+ //# sourceMappingURL=radios.mjs.map
@@ -6,19 +6,16 @@
6
6
  .govuk-select {
7
7
  @include govuk-font($size: 19, $line-height: 1.25);
8
8
 
9
- box-sizing: border-box; // should this be global?
9
+ box-sizing: border-box;
10
10
 
11
11
  // This min-width was chosen because:
12
- // - it makes the Select noticeably wider than it is taller (which is what users expect)
12
+ // - it makes the Select wider than it is tall (which is what users expect)
13
13
  // - 11.5em matches the 'length-10' variant of the input component
14
14
  // - it fits comfortably on screens as narrow as 240px wide
15
15
  min-width: 11.5em;
16
16
  max-width: 100%;
17
- height: 40px;
18
- @if $govuk-typography-use-rem {
19
- height: govuk-px-to-rem(40px);
20
- }
21
- padding: govuk-spacing(1); // was 5px 4px 4px - size of it should be adjusted to match other form elements
17
+ height: govuk-px-to-rem(40px);
18
+ padding: govuk-spacing(1);
22
19
  border: $govuk-border-width-form-element solid $govuk-input-border-colour;
23
20
 
24
21
  // Default user agent colours for selects can have low contrast,
@@ -31,19 +28,13 @@
31
28
  // Ensure outline appears outside of the element
32
29
  outline-offset: 0;
33
30
  // Double the border by adding its width again. Use `box-shadow` to do
34
- // this instead of changing `border-width` (which changes element size) and
35
- // since `outline` is already used for the yellow focus state.
31
+ // this instead of changing `border-width` (which changes element size)
32
+ // and since `outline` is already used for the yellow focus state.
36
33
  box-shadow: inset 0 0 0 $govuk-border-width-form-element;
37
-
38
- @include _govuk-if-ie8 {
39
- // IE8 doesn't support `box-shadow` so double the border with
40
- // `border-width`.
41
- border-width: $govuk-border-width-form-element * 2;
42
- }
43
34
  }
44
35
 
45
36
  &:disabled {
46
- opacity: .5;
37
+ opacity: 0.5;
47
38
  color: inherit;
48
39
  cursor: not-allowed;
49
40
  }
@@ -64,3 +55,5 @@
64
55
  }
65
56
  }
66
57
  }
58
+
59
+ /*# sourceMappingURL=_index.scss.map */
@@ -0,0 +1,4 @@
1
+ @import "../../base";
2
+ @import "./index";
3
+
4
+ /*# sourceMappingURL=_select.scss.map */