govuk_tech_docs 3.5.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
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 +21 -2
  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 */