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,295 @@
1
+ import { closestAttributeValue } from '../../common/closest-attribute-value.mjs';
2
+ import { mergeConfigs, validateConfig, formatErrorMessage } from '../../common/index.mjs';
3
+ import { normaliseDataset } from '../../common/normalise-dataset.mjs';
4
+ import { ElementError, ConfigError } from '../../errors/index.mjs';
5
+ import { GOVUKFrontendComponent } from '../../govuk-frontend-component.mjs';
6
+ import { I18n } from '../../i18n.mjs';
7
+
8
+ /**
9
+ * Character count component
10
+ *
11
+ * Tracks the number of characters or words in the `.govuk-js-character-count`
12
+ * `<textarea>` inside the element. Displays a message with the remaining number
13
+ * of characters/words available, or the number of characters/words in excess.
14
+ *
15
+ * You can configure the message to only appear after a certain percentage
16
+ * of the available characters/words has been entered.
17
+ *
18
+ * @preserve
19
+ */
20
+ class CharacterCount extends GOVUKFrontendComponent {
21
+ /**
22
+ * @param {Element | null} $root - HTML element to use for character count
23
+ * @param {CharacterCountConfig} [config] - Character count config
24
+ */
25
+ constructor($root, config = {}) {
26
+ var _ref, _this$config$maxwords;
27
+ super($root);
28
+ this.$textarea = void 0;
29
+ this.$visibleCountMessage = void 0;
30
+ this.$screenReaderCountMessage = void 0;
31
+ this.lastInputTimestamp = null;
32
+ this.lastInputValue = '';
33
+ this.valueChecker = null;
34
+ this.config = void 0;
35
+ this.i18n = void 0;
36
+ this.maxLength = void 0;
37
+ const $textarea = this.$root.querySelector('.govuk-js-character-count');
38
+ if (!($textarea instanceof HTMLTextAreaElement || $textarea instanceof HTMLInputElement)) {
39
+ throw new ElementError({
40
+ component: CharacterCount,
41
+ element: $textarea,
42
+ expectedType: 'HTMLTextareaElement or HTMLInputElement',
43
+ identifier: 'Form field (`.govuk-js-character-count`)'
44
+ });
45
+ }
46
+ const datasetConfig = normaliseDataset(CharacterCount, this.$root.dataset);
47
+ let configOverrides = {};
48
+ if ('maxwords' in datasetConfig || 'maxlength' in datasetConfig) {
49
+ configOverrides = {
50
+ maxlength: undefined,
51
+ maxwords: undefined
52
+ };
53
+ }
54
+ this.config = mergeConfigs(CharacterCount.defaults, config, configOverrides, datasetConfig);
55
+ const errors = validateConfig(CharacterCount.schema, this.config);
56
+ if (errors[0]) {
57
+ throw new ConfigError(formatErrorMessage(CharacterCount, errors[0]));
58
+ }
59
+ this.i18n = new I18n(this.config.i18n, {
60
+ locale: closestAttributeValue(this.$root, 'lang')
61
+ });
62
+ this.maxLength = (_ref = (_this$config$maxwords = this.config.maxwords) != null ? _this$config$maxwords : this.config.maxlength) != null ? _ref : Infinity;
63
+ this.$textarea = $textarea;
64
+ const textareaDescriptionId = `${this.$textarea.id}-info`;
65
+ const $textareaDescription = document.getElementById(textareaDescriptionId);
66
+ if (!$textareaDescription) {
67
+ throw new ElementError({
68
+ component: CharacterCount,
69
+ element: $textareaDescription,
70
+ identifier: `Count message (\`id="${textareaDescriptionId}"\`)`
71
+ });
72
+ }
73
+ if (`${$textareaDescription.textContent}`.match(/^\s*$/)) {
74
+ $textareaDescription.textContent = this.i18n.t('textareaDescription', {
75
+ count: this.maxLength
76
+ });
77
+ }
78
+ this.$textarea.insertAdjacentElement('afterend', $textareaDescription);
79
+ const $screenReaderCountMessage = document.createElement('div');
80
+ $screenReaderCountMessage.className = 'govuk-character-count__sr-status govuk-visually-hidden';
81
+ $screenReaderCountMessage.setAttribute('aria-live', 'polite');
82
+ this.$screenReaderCountMessage = $screenReaderCountMessage;
83
+ $textareaDescription.insertAdjacentElement('afterend', $screenReaderCountMessage);
84
+ const $visibleCountMessage = document.createElement('div');
85
+ $visibleCountMessage.className = $textareaDescription.className;
86
+ $visibleCountMessage.classList.add('govuk-character-count__status');
87
+ $visibleCountMessage.setAttribute('aria-hidden', 'true');
88
+ this.$visibleCountMessage = $visibleCountMessage;
89
+ $textareaDescription.insertAdjacentElement('afterend', $visibleCountMessage);
90
+ $textareaDescription.classList.add('govuk-visually-hidden');
91
+ this.$textarea.removeAttribute('maxlength');
92
+ this.bindChangeEvents();
93
+ window.addEventListener('pageshow', () => this.updateCountMessage());
94
+ this.updateCountMessage();
95
+ }
96
+ bindChangeEvents() {
97
+ this.$textarea.addEventListener('keyup', () => this.handleKeyUp());
98
+ this.$textarea.addEventListener('focus', () => this.handleFocus());
99
+ this.$textarea.addEventListener('blur', () => this.handleBlur());
100
+ }
101
+ handleKeyUp() {
102
+ this.updateVisibleCountMessage();
103
+ this.lastInputTimestamp = Date.now();
104
+ }
105
+ handleFocus() {
106
+ this.valueChecker = window.setInterval(() => {
107
+ if (!this.lastInputTimestamp || Date.now() - 500 >= this.lastInputTimestamp) {
108
+ this.updateIfValueChanged();
109
+ }
110
+ }, 1000);
111
+ }
112
+ handleBlur() {
113
+ if (this.valueChecker) {
114
+ window.clearInterval(this.valueChecker);
115
+ }
116
+ }
117
+ updateIfValueChanged() {
118
+ if (this.$textarea.value !== this.lastInputValue) {
119
+ this.lastInputValue = this.$textarea.value;
120
+ this.updateCountMessage();
121
+ }
122
+ }
123
+ updateCountMessage() {
124
+ this.updateVisibleCountMessage();
125
+ this.updateScreenReaderCountMessage();
126
+ }
127
+ updateVisibleCountMessage() {
128
+ const remainingNumber = this.maxLength - this.count(this.$textarea.value);
129
+ const isError = remainingNumber < 0;
130
+ this.$visibleCountMessage.classList.toggle('govuk-character-count__message--disabled', !this.isOverThreshold());
131
+ this.$textarea.classList.toggle('govuk-textarea--error', isError);
132
+ this.$visibleCountMessage.classList.toggle('govuk-error-message', isError);
133
+ this.$visibleCountMessage.classList.toggle('govuk-hint', !isError);
134
+ this.$visibleCountMessage.textContent = this.getCountMessage();
135
+ }
136
+ updateScreenReaderCountMessage() {
137
+ if (this.isOverThreshold()) {
138
+ this.$screenReaderCountMessage.removeAttribute('aria-hidden');
139
+ } else {
140
+ this.$screenReaderCountMessage.setAttribute('aria-hidden', 'true');
141
+ }
142
+ this.$screenReaderCountMessage.textContent = this.getCountMessage();
143
+ }
144
+ count(text) {
145
+ if (this.config.maxwords) {
146
+ var _text$match;
147
+ const tokens = (_text$match = text.match(/\S+/g)) != null ? _text$match : [];
148
+ return tokens.length;
149
+ }
150
+ return text.length;
151
+ }
152
+ getCountMessage() {
153
+ const remainingNumber = this.maxLength - this.count(this.$textarea.value);
154
+ const countType = this.config.maxwords ? 'words' : 'characters';
155
+ return this.formatCountMessage(remainingNumber, countType);
156
+ }
157
+ formatCountMessage(remainingNumber, countType) {
158
+ if (remainingNumber === 0) {
159
+ return this.i18n.t(`${countType}AtLimit`);
160
+ }
161
+ const translationKeySuffix = remainingNumber < 0 ? 'OverLimit' : 'UnderLimit';
162
+ return this.i18n.t(`${countType}${translationKeySuffix}`, {
163
+ count: Math.abs(remainingNumber)
164
+ });
165
+ }
166
+ isOverThreshold() {
167
+ if (!this.config.threshold) {
168
+ return true;
169
+ }
170
+ const currentLength = this.count(this.$textarea.value);
171
+ const maxLength = this.maxLength;
172
+ const thresholdValue = maxLength * this.config.threshold / 100;
173
+ return thresholdValue <= currentLength;
174
+ }
175
+ }
176
+
177
+ /**
178
+ * Character count config
179
+ *
180
+ * @see {@link CharacterCount.defaults}
181
+ * @typedef {object} CharacterCountConfig
182
+ * @property {number} [maxlength] - The maximum number of characters.
183
+ * If maxwords is provided, the maxlength option will be ignored.
184
+ * @property {number} [maxwords] - The maximum number of words. If maxwords is
185
+ * provided, the maxlength option will be ignored.
186
+ * @property {number} [threshold=0] - The percentage value of the limit at
187
+ * which point the count message is displayed. If this attribute is set, the
188
+ * count message will be hidden by default.
189
+ * @property {CharacterCountTranslations} [i18n=CharacterCount.defaults.i18n] - Character count translations
190
+ */
191
+
192
+ /**
193
+ * Character count translations
194
+ *
195
+ * @see {@link CharacterCount.defaults.i18n}
196
+ * @typedef {object} CharacterCountTranslations
197
+ *
198
+ * Messages shown to users as they type. It provides feedback on how many words
199
+ * or characters they have remaining or if they are over the limit. This also
200
+ * includes a message used as an accessible description for the textarea.
201
+ * @property {TranslationPluralForms} [charactersUnderLimit] - Message displayed
202
+ * when the number of characters is under the configured maximum, `maxlength`.
203
+ * This message is displayed visually and through assistive technologies. The
204
+ * component will replace the `%{count}` placeholder with the number of
205
+ * remaining characters. This is a [pluralised list of
206
+ * messages](https://frontend.design-system.service.gov.uk/localise-govuk-frontend).
207
+ * @property {string} [charactersAtLimit] - Message displayed when the number of
208
+ * characters reaches the configured maximum, `maxlength`. This message is
209
+ * displayed visually and through assistive technologies.
210
+ * @property {TranslationPluralForms} [charactersOverLimit] - Message displayed
211
+ * when the number of characters is over the configured maximum, `maxlength`.
212
+ * This message is displayed visually and through assistive technologies. The
213
+ * component will replace the `%{count}` placeholder with the number of
214
+ * remaining characters. This is a [pluralised list of
215
+ * messages](https://frontend.design-system.service.gov.uk/localise-govuk-frontend).
216
+ * @property {TranslationPluralForms} [wordsUnderLimit] - Message displayed when
217
+ * the number of words is under the configured maximum, `maxlength`. This
218
+ * message is displayed visually and through assistive technologies. The
219
+ * component will replace the `%{count}` placeholder with the number of
220
+ * remaining words. This is a [pluralised list of
221
+ * messages](https://frontend.design-system.service.gov.uk/localise-govuk-frontend).
222
+ * @property {string} [wordsAtLimit] - Message displayed when the number of
223
+ * words reaches the configured maximum, `maxlength`. This message is
224
+ * displayed visually and through assistive technologies.
225
+ * @property {TranslationPluralForms} [wordsOverLimit] - Message displayed when
226
+ * the number of words is over the configured maximum, `maxlength`. This
227
+ * message is displayed visually and through assistive technologies. The
228
+ * component will replace the `%{count}` placeholder with the number of
229
+ * remaining words. This is a [pluralised list of
230
+ * messages](https://frontend.design-system.service.gov.uk/localise-govuk-frontend).
231
+ * @property {TranslationPluralForms} [textareaDescription] - Message made
232
+ * available to assistive technologies, if none is already present in the
233
+ * HTML, to describe that the component accepts only a limited amount of
234
+ * content. It is visible on the page when JavaScript is unavailable. The
235
+ * component will replace the `%{count}` placeholder with the value of the
236
+ * `maxlength` or `maxwords` parameter.
237
+ */
238
+
239
+ /**
240
+ * @typedef {import('../../common/index.mjs').Schema} Schema
241
+ * @typedef {import('../../i18n.mjs').TranslationPluralForms} TranslationPluralForms
242
+ */
243
+ CharacterCount.moduleName = 'govuk-character-count';
244
+ CharacterCount.defaults = Object.freeze({
245
+ threshold: 0,
246
+ i18n: {
247
+ charactersUnderLimit: {
248
+ one: 'You have %{count} character remaining',
249
+ other: 'You have %{count} characters remaining'
250
+ },
251
+ charactersAtLimit: 'You have 0 characters remaining',
252
+ charactersOverLimit: {
253
+ one: 'You have %{count} character too many',
254
+ other: 'You have %{count} characters too many'
255
+ },
256
+ wordsUnderLimit: {
257
+ one: 'You have %{count} word remaining',
258
+ other: 'You have %{count} words remaining'
259
+ },
260
+ wordsAtLimit: 'You have 0 words remaining',
261
+ wordsOverLimit: {
262
+ one: 'You have %{count} word too many',
263
+ other: 'You have %{count} words too many'
264
+ },
265
+ textareaDescription: {
266
+ other: ''
267
+ }
268
+ }
269
+ });
270
+ CharacterCount.schema = Object.freeze({
271
+ properties: {
272
+ i18n: {
273
+ type: 'object'
274
+ },
275
+ maxwords: {
276
+ type: 'number'
277
+ },
278
+ maxlength: {
279
+ type: 'number'
280
+ },
281
+ threshold: {
282
+ type: 'number'
283
+ }
284
+ },
285
+ anyOf: [{
286
+ required: ['maxwords'],
287
+ errorMessage: 'Either "maxlength" or "maxwords" must be provided'
288
+ }, {
289
+ required: ['maxlength'],
290
+ errorMessage: 'Either "maxlength" or "maxwords" must be provided'
291
+ }]
292
+ });
293
+
294
+ export { CharacterCount };
295
+ //# sourceMappingURL=character-count.mjs.map
@@ -0,0 +1,4 @@
1
+ @import "../../base";
2
+ @import "./index";
3
+
4
+ /*# sourceMappingURL=_checkboxes.scss.map */
@@ -4,24 +4,18 @@
4
4
  @import "../label/index";
5
5
 
6
6
  @include govuk-exports("govuk/component/checkboxes") {
7
-
8
- $govuk-touch-target-size: 44px;
7
+ $govuk-touch-target-gutter: 4px;
9
8
  $govuk-checkboxes-size: 40px;
9
+ $govuk-touch-target-size: ($govuk-checkboxes-size + $govuk-touch-target-gutter);
10
10
  $govuk-small-checkboxes-size: 24px;
11
11
  $govuk-checkboxes-label-padding-left-right: govuk-spacing(3);
12
+ $govuk-checkbox-check-horizontal-position: 10px;
12
13
 
13
14
  .govuk-checkboxes__item {
14
- @include govuk-font($size: 19);
15
-
16
- display: block;
15
+ display: flex;
16
+ flex-wrap: wrap;
17
17
  position: relative;
18
-
19
- min-height: $govuk-checkboxes-size;
20
-
21
18
  margin-bottom: govuk-spacing(2);
22
- padding-left: $govuk-checkboxes-size;
23
-
24
- clear: left;
25
19
  }
26
20
 
27
21
  .govuk-checkboxes__item:last-child,
@@ -30,102 +24,86 @@
30
24
  }
31
25
 
32
26
  .govuk-checkboxes__input {
33
- $input-offset: ($govuk-touch-target-size - $govuk-checkboxes-size) / 2;
34
-
27
+ // Allow the input to sit above the label, enabling its proper detection
28
+ // when exploring by touch or using automation tools like Selenium
29
+ z-index: 1;
30
+ width: $govuk-touch-target-size;
31
+ height: $govuk-touch-target-size;
32
+ margin: 0;
33
+ opacity: 0;
35
34
  cursor: pointer;
36
-
37
- // IE8 doesn’t support pseudo-elements, so we don’t want to hide native
38
- // elements there.
39
- @include _govuk-not-ie8 {
40
- position: absolute;
41
-
42
- z-index: 1;
43
- top: $input-offset * -1;
44
- left: $input-offset * -1;
45
-
46
- width: $govuk-touch-target-size;
47
- height: $govuk-touch-target-size;
48
- margin: 0;
49
-
50
- opacity: 0;
51
- }
52
-
53
- @include _govuk-if-ie8 {
54
- margin-top: 10px;
55
- margin-right: $govuk-checkboxes-size / -2;
56
- margin-left: $govuk-checkboxes-size / -2;
57
- float: left;
58
-
59
- // add focus outline to input
60
- &:focus {
61
- outline: $govuk-focus-width solid $govuk-focus-colour;
62
- }
63
- }
64
35
  }
65
36
 
66
37
  .govuk-checkboxes__label {
67
- display: inline-block;
38
+ align-self: center;
39
+
40
+ // Ensure that the width of the label is never more than the width of the
41
+ // container minus the input width minus the padding on either side of
42
+ // the label. This prevents the label from going onto the next line due to
43
+ // __item using flex-wrap because we want hints on a separate line.
44
+ max-width: calc(100% - #{(($govuk-checkboxes-label-padding-left-right * 2) + $govuk-touch-target-size)});
68
45
  margin-bottom: 0;
69
- padding: 8px $govuk-checkboxes-label-padding-left-right govuk-spacing(1);
46
+ padding: (govuk-spacing(1) + $govuk-border-width-form-element) govuk-spacing(3);
70
47
  cursor: pointer;
71
48
  // remove 300ms pause on mobile
72
- -ms-touch-action: manipulation;
73
- touch-action: manipulation;
49
+ touch-action: manipulation;
74
50
  }
75
51
 
76
- @include _govuk-not-ie8 {
77
- // [ ] Check box
78
- .govuk-checkboxes__label:before {
79
- content: "";
80
- box-sizing: border-box;
81
- position: absolute;
82
- top: 0;
83
- left: 0;
84
- width: $govuk-checkboxes-size;
85
- height: $govuk-checkboxes-size;
86
- border: $govuk-border-width-form-element solid currentcolor;
87
- background: transparent;
88
- }
89
-
90
- // ✔ Check mark
91
- //
92
- // The check mark is a box with a border on the left and bottom side (└──),
93
- // rotated 45 degrees
94
- .govuk-checkboxes__label:after {
95
- content: "";
96
- box-sizing: border-box;
97
-
98
- position: absolute;
99
- top: 11px;
100
- left: 9px;
101
- width: 23px;
102
- height: 12px;
103
-
104
- -webkit-transform: rotate(-45deg);
105
-
106
- -ms-transform: rotate(-45deg);
107
-
108
- transform: rotate(-45deg);
109
- border: solid;
110
- border-width: 0 0 5px 5px;
111
- // Fix bug in IE11 caused by transform rotate (-45deg).
112
- // See: alphagov/govuk_elements/issues/518
113
- border-top-color: transparent;
114
-
115
- opacity: 0;
52
+ // [ ] Check box
53
+ .govuk-checkboxes__label::before {
54
+ content: "";
55
+ box-sizing: border-box;
56
+ position: absolute;
57
+ top: ($govuk-touch-target-gutter / 2);
58
+ left: ($govuk-touch-target-gutter / 2);
59
+ width: $govuk-checkboxes-size;
60
+ height: $govuk-checkboxes-size;
61
+ border: $govuk-border-width-form-element solid currentcolor;
62
+ background: transparent;
63
+ }
116
64
 
117
- background: transparent;
118
- }
65
+ // ✔ Check mark
66
+ //
67
+ // The check mark is a box with a border on the left and bottom side (└──),
68
+ // rotated 45 degrees
69
+ .govuk-checkboxes__label::after {
70
+ content: "";
71
+ box-sizing: border-box;
72
+ position: absolute;
73
+
74
+ // Use "magic numbers" to define shape and position of check mark because
75
+ // the complexity of the shape makes it difficult to calculate dynamically.
76
+ top: 13px;
77
+ left: $govuk-checkbox-check-horizontal-position;
78
+ width: 23px;
79
+ height: 12px;
80
+ transform: rotate(-45deg);
81
+ border: solid;
82
+ border-width: 0 0 5px 5px;
83
+ // Fix bug in IE11 caused by transform rotate (-45deg).
84
+ // See: alphagov/govuk_elements/issues/518
85
+ border-top-color: transparent;
86
+ opacity: 0;
87
+ background: transparent;
119
88
  }
120
89
 
121
90
  .govuk-checkboxes__hint {
122
91
  display: block;
92
+ width: 100%;
93
+ margin-top: govuk-spacing(-1);
123
94
  padding-right: $govuk-checkboxes-label-padding-left-right;
124
- padding-left: $govuk-checkboxes-label-padding-left-right;
95
+ padding-left: ($govuk-checkboxes-label-padding-left-right + $govuk-touch-target-size);
96
+ }
97
+
98
+ // This is to bypass govuk-hint's specificity on hints following labels having
99
+ // a margin bottom of 10px (govuk-spacing(2)). Because checkboxes are flexbox,
100
+ // the margin doesn't collapse so we have to do this manually.
101
+ .govuk-label:not(.govuk-label--m):not(.govuk-label--l):not(.govuk-label--xl) + .govuk-checkboxes__hint {
102
+ margin-bottom: 0;
125
103
  }
126
104
 
127
105
  // Focused state
128
- .govuk-checkboxes__input:focus + .govuk-checkboxes__label:before {
106
+ .govuk-checkboxes__input:focus + .govuk-checkboxes__label::before {
129
107
  border-width: 4px;
130
108
 
131
109
  // When colours are overridden, the yellow box-shadow becomes invisible
@@ -145,7 +123,7 @@
145
123
  }
146
124
 
147
125
  // Selected state
148
- .govuk-checkboxes__input:checked + .govuk-checkboxes__label:after {
126
+ .govuk-checkboxes__input:checked + .govuk-checkboxes__label::after {
149
127
  opacity: 1;
150
128
  }
151
129
 
@@ -157,7 +135,7 @@
157
135
 
158
136
  .govuk-checkboxes__input:disabled + .govuk-checkboxes__label,
159
137
  .govuk-checkboxes__input:disabled ~ .govuk-hint {
160
- opacity: .5;
138
+ opacity: 0.5;
161
139
  }
162
140
 
163
141
  // =========================================================
@@ -165,9 +143,9 @@
165
143
  // =========================================================
166
144
 
167
145
  .govuk-checkboxes__divider {
168
- $govuk-divider-size: $govuk-checkboxes-size !default;
169
146
  @include govuk-font($size: 19);
170
147
  @include govuk-text-colour;
148
+ $govuk-divider-size: $govuk-checkboxes-size !default;
171
149
  width: $govuk-divider-size;
172
150
  margin-bottom: govuk-spacing(2);
173
151
  text-align: center;
@@ -181,7 +159,7 @@
181
159
  // to be an even number in order to be centred under the 40px checkbox or radio.
182
160
  $conditional-border-width: $govuk-border-width-narrow;
183
161
  // Calculate the amount of padding needed to keep the border centered against the checkbox.
184
- $conditional-border-padding: ($govuk-checkboxes-size / 2) - ($conditional-border-width / 2);
162
+ $conditional-border-padding: ($govuk-touch-target-size / 2) - ($conditional-border-width / 2);
185
163
  // Move the border centered with the checkbox
186
164
  $conditional-margin-left: $conditional-border-padding;
187
165
  // Move the contents of the conditional inline with the label
@@ -193,7 +171,7 @@
193
171
  padding-left: $conditional-padding-left;
194
172
  border-left: $conditional-border-width solid $govuk-border-colour;
195
173
 
196
- .js-enabled &--hidden {
174
+ .govuk-frontend-supported &--hidden {
197
175
  display: none;
198
176
  }
199
177
 
@@ -207,16 +185,10 @@
207
185
  // =========================================================
208
186
 
209
187
  .govuk-checkboxes--small {
210
-
211
188
  $input-offset: ($govuk-touch-target-size - $govuk-small-checkboxes-size) / 2;
212
- $label-offset: $govuk-touch-target-size - $input-offset;
213
189
 
214
190
  .govuk-checkboxes__item {
215
- @include govuk-clearfix;
216
- min-height: 0;
217
191
  margin-bottom: 0;
218
- padding-left: $label-offset;
219
- float: left;
220
192
  }
221
193
 
222
194
  // Shift the touch target into the left margin so that the visible edge of
@@ -229,36 +201,23 @@
229
201
  // ▲┆└─ Check box pseudo element, aligned with margin
230
202
  // └─── Touch target (invisible input), shifted into the margin
231
203
  .govuk-checkboxes__input {
232
- @include _govuk-not-ie8 {
233
- left: $input-offset * -1;
234
- }
235
-
236
- @include _govuk-if-ie8 {
237
- margin-left: $govuk-small-checkboxes-size * -1;
238
- }
204
+ margin-left: $input-offset * -1;
239
205
  }
240
206
 
241
- // Adjust the size and position of the label.
242
- //
243
- // Unlike larger checkboxes, we also have to float the label in order to
244
- // 'shrink' it, preventing the hover state from kicking in across the full
245
- // width of the parent element.
246
207
  .govuk-checkboxes__label {
247
- margin-top: -2px;
248
- padding: 13px govuk-spacing(3) 13px 1px;
249
- float: left;
250
-
251
- @include govuk-media-query($from: tablet) {
252
- padding: 11px govuk-spacing(3) 10px 1px;
253
- }
208
+ // Create a tiny space between the small checkbox hover state so that it
209
+ // doesn't clash with the label
210
+ padding-left: 1px;
254
211
  }
255
212
 
256
213
  // [ ] Check box
257
214
  //
258
215
  // Reduce the size of the check box [1], vertically center it within the
259
216
  // touch target [2]
260
- .govuk-checkboxes__label:before {
261
- top: $input-offset - $govuk-border-width-form-element; // 2
217
+ // Left here is 0 because we've shifted the input into the left margin
218
+ .govuk-checkboxes__label::before {
219
+ top: $input-offset; // 2
220
+ left: 0;
262
221
  width: $govuk-small-checkboxes-size; // 1
263
222
  height: $govuk-small-checkboxes-size; // 1
264
223
  }
@@ -266,9 +225,12 @@
266
225
  // ✔ Check mark
267
226
  //
268
227
  // Reduce the size of the check mark and re-align within the checkbox
269
- .govuk-checkboxes__label:after {
270
- top: 15px;
271
- left: 6px;
228
+ .govuk-checkboxes__label::after {
229
+ top: 17px;
230
+
231
+ // Horizontal position is just the normal sized left value accounting for
232
+ // the new width of the smaller checkbox
233
+ left: (16px - $govuk-checkbox-check-horizontal-position);
272
234
  width: 12px;
273
235
  height: 6.5px;
274
236
  border-width: 0 0 3px 3px;
@@ -283,16 +245,19 @@
283
245
  // (If you do use them, they won't look completely broken... but seriously,
284
246
  // don't use them)
285
247
  .govuk-checkboxes__hint {
286
- padding: 0;
287
- clear: both;
248
+ padding-left: ($govuk-small-checkboxes-size + $input-offset);
288
249
  }
289
250
 
290
251
  // Align conditional reveals with small checkboxes
291
252
  .govuk-checkboxes__conditional {
292
253
  $margin-left: ($govuk-small-checkboxes-size / 2) - ($conditional-border-width / 2);
293
254
  margin-left: $margin-left;
294
- padding-left: $label-offset - ($margin-left + $conditional-border-width);
295
- clear: both;
255
+ padding-left: ($govuk-touch-target-size - $input-offset) - ($margin-left + $conditional-border-width);
256
+ }
257
+
258
+ .govuk-checkboxes__divider {
259
+ width: $govuk-small-checkboxes-size;
260
+ margin-bottom: govuk-spacing(1);
296
261
  }
297
262
 
298
263
  // Hover state for small checkboxes.
@@ -301,7 +266,11 @@
301
266
  // is so much larger than their visible size, and so we need to provide
302
267
  // feedback to the user as to which checkbox they will select when their
303
268
  // cursor is outside of the visible area.
304
- .govuk-checkboxes__item:hover .govuk-checkboxes__input:not(:disabled) + .govuk-checkboxes__label:before {
269
+ .govuk-checkboxes__item:hover .govuk-checkboxes__input:not(:disabled) + .govuk-checkboxes__label::before {
270
+ // Forced colours modes tend to ignore box-shadow.
271
+ // Apply an outline for those modes to use instead.
272
+ outline: $govuk-focus-width dashed transparent;
273
+ outline-offset: 1px;
305
274
  box-shadow: 0 0 0 $govuk-hover-width $govuk-hover-colour;
306
275
  }
307
276
 
@@ -310,7 +279,12 @@
310
279
  //
311
280
  // We use two box shadows, one that restores the original focus state [1]
312
281
  // and another that then applies the hover state [2].
313
- .govuk-checkboxes__item:hover .govuk-checkboxes__input:focus + .govuk-checkboxes__label:before {
282
+ .govuk-checkboxes__item:hover .govuk-checkboxes__input:focus + .govuk-checkboxes__label::before {
283
+ // Set different HCM colour when we have both hover/focus applied at once
284
+ @media screen and (forced-colors: active), (-ms-high-contrast: active) {
285
+ outline-color: Highlight;
286
+ }
287
+ // prettier-ignore
314
288
  box-shadow:
315
289
  0 0 0 $govuk-focus-width $govuk-focus-colour, // 1
316
290
  0 0 0 $govuk-hover-width $govuk-hover-colour; // 2
@@ -323,13 +297,15 @@
323
297
  // state in browsers that don't support `@media (hover)` (like Internet
324
298
  // Explorer) – so we have to 'undo' the hover state instead.
325
299
  @media (hover: none), (pointer: coarse) {
326
- .govuk-checkboxes__item:hover .govuk-checkboxes__input:not(:disabled) + .govuk-checkboxes__label:before {
300
+ .govuk-checkboxes__item:hover .govuk-checkboxes__input:not(:disabled) + .govuk-checkboxes__label::before {
327
301
  box-shadow: initial;
328
302
  }
329
303
 
330
- .govuk-checkboxes__item:hover .govuk-checkboxes__input:focus + .govuk-checkboxes__label:before {
304
+ .govuk-checkboxes__item:hover .govuk-checkboxes__input:focus + .govuk-checkboxes__label::before {
331
305
  box-shadow: 0 0 0 $govuk-focus-width $govuk-focus-colour;
332
306
  }
333
307
  }
334
308
  }
335
309
  }
310
+
311
+ /*# sourceMappingURL=_index.scss.map */