@ons/design-system 70.0.7 → 70.0.9

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 (454) hide show
  1. package/README.md +11 -17
  2. package/components/access-code/_macro.njk +31 -25
  3. package/components/access-code/_macro.spec.js +145 -145
  4. package/components/access-code/access-code.dom.js +5 -5
  5. package/components/access-code/access-code.js +16 -16
  6. package/components/access-code/access-code.scss +22 -22
  7. package/components/access-code/access-code.spec.js +17 -17
  8. package/components/access-code/example-access-code-error.njk +49 -37
  9. package/components/access-code/example-access-code.njk +40 -30
  10. package/components/accordion/_macro.njk +7 -6
  11. package/components/accordion/_macro.spec.js +154 -154
  12. package/components/accordion/accordion.dom.js +10 -10
  13. package/components/accordion/accordion.js +50 -50
  14. package/components/accordion/accordion.spec.js +104 -104
  15. package/components/accordion/example-accordion-open.njk +0 -1
  16. package/components/address-input/_macro.njk +23 -11
  17. package/components/address-input/_macro.spec.js +420 -420
  18. package/components/address-input/autosuggest.address.dom.js +5 -5
  19. package/components/address-input/autosuggest.address.error.js +77 -77
  20. package/components/address-input/autosuggest.address.js +354 -359
  21. package/components/address-input/autosuggest.address.setter.js +95 -95
  22. package/components/address-input/autosuggest.address.spec.js +668 -651
  23. package/components/address-input/example-address-input-editable.njk +52 -50
  24. package/components/address-input/example-address-input-manual.njk +23 -21
  25. package/components/address-input/example-address-input.njk +40 -38
  26. package/components/address-output/_address-output.scss +3 -3
  27. package/components/address-output/_macro.njk +6 -6
  28. package/components/address-output/_macro.spec.js +84 -84
  29. package/components/autosuggest/_autosuggest.scss +114 -114
  30. package/components/autosuggest/_macro.njk +57 -37
  31. package/components/autosuggest/_macro.spec.js +255 -255
  32. package/components/autosuggest/autosuggest.dom.js +5 -5
  33. package/components/autosuggest/autosuggest.helpers.js +11 -11
  34. package/components/autosuggest/autosuggest.helpers.spec.js +73 -73
  35. package/components/autosuggest/autosuggest.js +20 -20
  36. package/components/autosuggest/autosuggest.spec.js +542 -536
  37. package/components/autosuggest/autosuggest.ui.js +478 -475
  38. package/components/autosuggest/example-autosuggest-country-multiple.njk +26 -26
  39. package/components/autosuggest/example-autosuggest-country.njk +24 -24
  40. package/components/autosuggest/fuse-config.js +17 -17
  41. package/components/back-to-top/_back-to-top.scss +27 -27
  42. package/components/back-to-top/_macro.spec.js +49 -49
  43. package/components/back-to-top/back-to-top.dom.js +5 -5
  44. package/components/back-to-top/back-to-top.js +52 -52
  45. package/components/back-to-top/back-to-top.spec.js +106 -106
  46. package/components/back-to-top/example-back-to-top.njk +183 -6
  47. package/components/back-to-top/example-full-page-back-to-top.njk +135 -123
  48. package/components/breadcrumbs/_breadcrumbs.scss +63 -65
  49. package/components/breadcrumbs/_macro.njk +12 -4
  50. package/components/breadcrumbs/_macro.spec.js +91 -91
  51. package/components/browser-banner/_browser-banner.scss +23 -23
  52. package/components/browser-banner/_macro.njk +6 -3
  53. package/components/browser-banner/_macro.spec.js +92 -92
  54. package/components/button/_button.scss +525 -491
  55. package/components/button/_macro.njk +63 -62
  56. package/components/button/_macro.spec.js +363 -363
  57. package/components/button/button.dom.js +15 -15
  58. package/components/button/button.js +53 -53
  59. package/components/button/button.spec.js +248 -240
  60. package/components/button/example-button-ghost.njk +1 -0
  61. package/components/call-to-action/_call-to-action.scss +5 -5
  62. package/components/call-to-action/_macro.njk +7 -5
  63. package/components/call-to-action/_macro.spec.js +28 -28
  64. package/components/call-to-action/example-call-to-action-default.njk +3 -2
  65. package/components/card/_card.scss +23 -23
  66. package/components/card/_macro.njk +26 -10
  67. package/components/card/_macro.spec.js +180 -180
  68. package/components/card/example-card-set-with-images.njk +31 -29
  69. package/components/card/example-card-set-with-lists.njk +58 -56
  70. package/components/card/example-card-set.njk +28 -26
  71. package/components/card/example-card.njk +9 -7
  72. package/components/char-check-limit/_macro.njk +1 -3
  73. package/components/char-check-limit/_macro.spec.js +48 -48
  74. package/components/char-check-limit/character-check.js +58 -58
  75. package/components/char-check-limit/character-check.spec.js +173 -173
  76. package/components/char-check-limit/character-limit.js +40 -40
  77. package/components/checkboxes/_checkbox-macro.njk +19 -15
  78. package/components/checkboxes/_checkbox-macro.spec.js +355 -355
  79. package/components/checkboxes/_checkbox.scss +180 -180
  80. package/components/checkboxes/_checkboxes.scss +37 -27
  81. package/components/checkboxes/_macro.njk +81 -72
  82. package/components/checkboxes/_macro.spec.js +261 -261
  83. package/components/checkboxes/checkbox-with-autoselect.js +32 -32
  84. package/components/checkboxes/checkbox-with-fieldset.js +21 -21
  85. package/components/checkboxes/checkboxes-with-reveal.js +10 -10
  86. package/components/checkboxes/checkboxes.dom.js +27 -27
  87. package/components/checkboxes/checkboxes.spec.js +183 -183
  88. package/components/checkboxes/example-checkboxes-disabled.njk +30 -30
  89. package/components/checkboxes/example-checkboxes-error.njk +0 -1
  90. package/components/checkboxes/example-checkboxes-with-descriptions.njk +7 -5
  91. package/components/checkboxes/example-checkboxes-with-hidden-label.njk +162 -170
  92. package/components/checkboxes/example-checkboxes-with-revealed-checkboxes-expanded.njk +81 -81
  93. package/components/checkboxes/example-checkboxes-with-revealed-checkboxes.njk +79 -79
  94. package/components/checkboxes/example-checkboxes-with-revealed-select-expanded.njk +7 -5
  95. package/components/checkboxes/example-checkboxes-with-revealed-select.njk +7 -5
  96. package/components/checkboxes/example-checkboxes-with-revealed-text-input-expanded.njk +7 -5
  97. package/components/checkboxes/example-checkboxes-with-revealed-text-input.njk +7 -5
  98. package/components/checkboxes/example-checkboxes-with-select-all-button.njk +7 -5
  99. package/components/checkboxes/example-checkboxes-with-visible-text-input.njk +7 -5
  100. package/components/checkboxes/example-checkboxes.njk +7 -5
  101. package/components/content-pagination/_content-pagination.scss +41 -41
  102. package/components/content-pagination/_macro.njk +34 -32
  103. package/components/content-pagination/_macro.spec.js +159 -159
  104. package/components/content-pagination/example-content-pagination.njk +17 -17
  105. package/components/cookies-banner/_cookies-banner.scss +22 -22
  106. package/components/cookies-banner/_macro.njk +19 -6
  107. package/components/cookies-banner/_macro.spec.js +177 -177
  108. package/components/cookies-banner/cookies-banner.dom.js +7 -7
  109. package/components/cookies-banner/cookies-banner.js +76 -76
  110. package/components/cookies-banner/cookies-banner.spec.js +72 -68
  111. package/components/cookies-banner/example-cookies-banner-cymraeg.njk +2 -1
  112. package/components/cookies-banner/example-cookies-banner.njk +3 -4
  113. package/components/date-input/_macro.njk +71 -63
  114. package/components/date-input/_macro.spec.js +338 -338
  115. package/components/date-input/example-date-input-error-for-single-field.njk +0 -1
  116. package/components/date-input/example-date-input-error.njk +0 -1
  117. package/components/description-list/_description-list.scss +23 -23
  118. package/components/description-list/_macro.njk +20 -11
  119. package/components/description-list/_macro.spec.js +144 -144
  120. package/components/details/_details.scss +109 -109
  121. package/components/details/_macro.njk +18 -11
  122. package/components/details/_macro.spec.js +132 -132
  123. package/components/details/details.dom.js +6 -6
  124. package/components/details/details.js +60 -60
  125. package/components/details/details.spec.js +106 -106
  126. package/components/details/example-details-with-warning.njk +15 -10
  127. package/components/document-list/_macro.njk +102 -93
  128. package/components/document-list/_macro.spec.js +444 -444
  129. package/components/document-list/document-list.scss +145 -149
  130. package/components/document-list/example-document-list-article-featured.njk +27 -25
  131. package/components/document-list/example-document-list-articles.njk +55 -53
  132. package/components/document-list/example-document-list-downloads.njk +49 -47
  133. package/components/document-list/example-document-list-search-result-featured.njk +19 -17
  134. package/components/document-list/example-document-list-search-results.njk +60 -58
  135. package/components/download-resources/_download-resources.scss +109 -108
  136. package/components/download-resources/download-resources.js +907 -900
  137. package/components/download-resources/download-resources.spec.js +461 -461
  138. package/components/duration/_macro.njk +61 -55
  139. package/components/duration/_macro.spec.js +291 -291
  140. package/components/duration/example-duration-error-for-single-field.njk +28 -26
  141. package/components/duration/example-duration-single-field.njk +23 -19
  142. package/components/duration/example-duration.njk +33 -29
  143. package/components/error/_macro.njk +8 -6
  144. package/components/error/_macro.spec.js +72 -72
  145. package/components/external-link/_external-link.scss +19 -19
  146. package/components/external-link/_macro.njk +7 -5
  147. package/components/external-link/_macro.spec.js +68 -68
  148. package/components/external-link/example-external-link.njk +9 -6
  149. package/components/feedback/_feedback.scss +31 -31
  150. package/components/feedback/_macro.njk +7 -5
  151. package/components/feedback/_macro.spec.js +72 -72
  152. package/components/field/_field-group.scss +10 -10
  153. package/components/field/_field.scss +16 -16
  154. package/components/field/_macro.njk +2 -2
  155. package/components/field/_macro.spec.js +80 -80
  156. package/components/fieldset/_fieldset.scss +27 -27
  157. package/components/fieldset/_macro.njk +23 -16
  158. package/components/fieldset/_macro.spec.js +161 -161
  159. package/components/footer/_footer.scss +45 -45
  160. package/components/footer/_macro.njk +28 -21
  161. package/components/footer/_macro.spec.js +452 -452
  162. package/components/footer/example-footer-cymraeg.njk +2 -1
  163. package/components/footer/example-footer-default.njk +3 -4
  164. package/components/footer/example-footer-transactional.njk +2 -1
  165. package/components/footer/example-footer-warning.njk +2 -1
  166. package/components/footer/example-footer-with-alternative-organisation.njk +2 -1
  167. package/components/footer/example-footer-with-coat-of-arms.njk +2 -1
  168. package/components/footer/example-footer-with-copyright.njk +2 -1
  169. package/components/footer/example-footer.njk +2 -1
  170. package/components/header/_header.scss +207 -202
  171. package/components/header/_macro.njk +183 -141
  172. package/components/header/_macro.spec.js +833 -829
  173. package/components/header/example-header-default.njk +2 -1
  174. package/components/header/example-header-external-for-survey-with-description.njk +2 -1
  175. package/components/header/example-header-external-for-surveys.njk +2 -1
  176. package/components/header/example-header-external-welsh.njk +7 -7
  177. package/components/header/example-header-external-with-navigation-and-search.njk +3 -2
  178. package/components/header/example-header-external-with-navigation.njk +2 -1
  179. package/components/header/example-header-external-with-service-links.njk +2 -1
  180. package/components/header/example-header-external-with-sub-navigation-removed.njk +2 -1
  181. package/components/header/example-header-external-with-sub-navigation.njk +3 -2
  182. package/components/header/example-header-internal.njk +2 -1
  183. package/components/header/example-header-multiple-logos.njk +2 -1
  184. package/components/header/{example-header-neutral-for-multicoloured-logo.njk → example-header-neutral.njk} +2 -1
  185. package/components/helpers/_grid.scss +4 -4
  186. package/components/helpers/grid.njk +17 -16
  187. package/components/hero/_hero.scss +48 -48
  188. package/components/hero/_macro.njk +6 -11
  189. package/components/hero/_macro.spec.js +59 -59
  190. package/components/hero/example-hero-dark.njk +2 -1
  191. package/components/hero/example-hero-default.njk +2 -1
  192. package/components/icon/_icon.scss +44 -44
  193. package/components/icon/_macro.njk +601 -168
  194. package/components/icon/_macro.spec.js +110 -110
  195. package/components/image/_image.scss +11 -11
  196. package/components/image/_macro.njk +7 -5
  197. package/components/image/_macro.spec.js +81 -81
  198. package/components/input/_input-type.scss +86 -89
  199. package/components/input/_input.scss +123 -124
  200. package/components/input/_macro.njk +114 -95
  201. package/components/input/_macro.spec.js +604 -604
  202. package/components/input/character-check.dom.js +5 -5
  203. package/components/input/example-input-search-with-character-check.njk +1 -1
  204. package/components/input/example-input-search-with-placeholder.njk +1 -1
  205. package/components/input/example-input-search.njk +1 -1
  206. package/components/input/input.dom.js +5 -5
  207. package/components/input/input.js +10 -10
  208. package/components/input/input.spec.js +18 -18
  209. package/components/label/_label.scss +24 -24
  210. package/components/label/_macro.njk +32 -26
  211. package/components/label/_macro.spec.js +173 -170
  212. package/components/language-selector/_macro.njk +11 -2
  213. package/components/language-selector/_macro.spec.js +97 -97
  214. package/components/language-selector/language.scss +7 -7
  215. package/components/list/_list.scss +110 -97
  216. package/components/list/_macro.njk +93 -73
  217. package/components/list/_macro.spec.js +583 -583
  218. package/components/message/_macro.njk +20 -7
  219. package/components/message/_macro.spec.js +74 -74
  220. package/components/message/_message.scss +39 -39
  221. package/components/message-list/_macro.njk +26 -20
  222. package/components/message-list/_macro.spec.js +86 -86
  223. package/components/message-list/_message-list.scss +16 -16
  224. package/components/modal/_macro.njk +11 -12
  225. package/components/modal/_macro.spec.js +69 -69
  226. package/components/modal/_modal.scss +36 -36
  227. package/components/modal/modal.dom.js +6 -6
  228. package/components/modal/modal.js +89 -89
  229. package/components/modal/modal.spec.js +50 -50
  230. package/components/multiple-input-fields/_macro.njk +30 -28
  231. package/components/mutually-exclusive/_macro.njk +20 -13
  232. package/components/mutually-exclusive/_macro.spec.js +140 -140
  233. package/components/mutually-exclusive/example-mutually-exclusive-checkboxes.njk +6 -4
  234. package/components/mutually-exclusive/example-mutually-exclusive-date.njk +7 -5
  235. package/components/mutually-exclusive/example-mutually-exclusive-duration.njk +44 -40
  236. package/components/mutually-exclusive/example-mutually-exclusive-email.njk +7 -5
  237. package/components/mutually-exclusive/example-mutually-exclusive-multiple-options.njk +6 -4
  238. package/components/mutually-exclusive/example-mutually-exclusive-number.njk +6 -4
  239. package/components/mutually-exclusive/example-mutually-exclusive-textarea.njk +6 -4
  240. package/components/mutually-exclusive/mutually-exclusive.checkboxes.spec.js +188 -188
  241. package/components/mutually-exclusive/mutually-exclusive.date.spec.js +211 -211
  242. package/components/mutually-exclusive/mutually-exclusive.dom.js +5 -5
  243. package/components/mutually-exclusive/mutually-exclusive.duration.spec.js +210 -210
  244. package/components/mutually-exclusive/mutually-exclusive.email.spec.js +90 -90
  245. package/components/mutually-exclusive/mutually-exclusive.js +137 -137
  246. package/components/mutually-exclusive/mutually-exclusive.multiple-options.checkboxes.spec.js +197 -197
  247. package/components/mutually-exclusive/mutually-exclusive.number.spec.js +96 -96
  248. package/components/mutually-exclusive/mutually-exclusive.textarea.spec.js +102 -102
  249. package/components/navigation/_macro.njk +133 -67
  250. package/components/navigation/_macro.spec.js +360 -354
  251. package/components/navigation/_navigation.scss +112 -122
  252. package/components/navigation/navigation.dom.js +35 -35
  253. package/components/navigation/navigation.js +49 -49
  254. package/components/navigation/navigation.spec.js +249 -249
  255. package/components/pagination/_macro.njk +42 -20
  256. package/components/pagination/_macro.spec.js +342 -335
  257. package/components/pagination/_pagination.scss +58 -58
  258. package/components/panel/_macro.njk +27 -16
  259. package/components/panel/_macro.spec.js +372 -372
  260. package/components/panel/_panel.scss +200 -199
  261. package/components/panel/example-panel-bare.njk +6 -4
  262. package/components/panel/example-panel-with-announcement.njk +7 -4
  263. package/components/panel/example-panel-with-error-summary.njk +6 -4
  264. package/components/panel/example-panel-with-warning.njk +5 -3
  265. package/components/password/_macro.njk +7 -5
  266. package/components/password/_macro.spec.js +95 -95
  267. package/components/password/password.dom.js +5 -5
  268. package/components/password/password.js +10 -10
  269. package/components/password/password.spec.js +26 -26
  270. package/components/phase-banner/_macro.njk +3 -3
  271. package/components/phase-banner/_macro.spec.js +86 -86
  272. package/components/phase-banner/_phase-banner.scss +16 -16
  273. package/components/phase-banner/example-phase-banner-alpha.njk +2 -1
  274. package/components/phase-banner/example-phase-banner-beta.njk +4 -3
  275. package/components/question/_macro.njk +62 -47
  276. package/components/question/_macro.spec.js +235 -235
  277. package/components/question/_question.scss +24 -24
  278. package/components/question/example-question-ccs.njk +40 -35
  279. package/components/question/example-question-fieldset.njk +84 -80
  280. package/components/question/example-question-interviewer-note.njk +27 -24
  281. package/components/question/example-question-no-fieldset.njk +39 -33
  282. package/components/quote/_macro.njk +3 -1
  283. package/components/quote/_macro.spec.js +52 -52
  284. package/components/quote/_quote.scss +24 -24
  285. package/components/radios/_macro.njk +54 -36
  286. package/components/radios/_macro.spec.js +545 -524
  287. package/components/radios/_radio.scss +49 -48
  288. package/components/radios/_radios.scss +14 -20
  289. package/components/radios/check-radios.js +21 -21
  290. package/components/radios/clear-radios.js +45 -45
  291. package/components/radios/example-radios-with-clear-button-expanded.njk +6 -4
  292. package/components/radios/example-radios-with-clear-button.njk +6 -4
  293. package/components/radios/example-radios-with-descriptions.njk +7 -5
  294. package/components/radios/example-radios-with-revealed-select-expanded.njk +6 -4
  295. package/components/radios/example-radios-with-revealed-select.njk +6 -4
  296. package/components/radios/example-radios-with-revealed-text-area-expanded.njk +7 -5
  297. package/components/radios/example-radios-with-revealed-text-area.njk +7 -5
  298. package/components/radios/example-radios-with-revealed-text-input-expanded.njk +7 -5
  299. package/components/radios/example-radios-with-revealed-text-input.njk +7 -5
  300. package/components/radios/example-radios-with-separator.njk +6 -4
  301. package/components/radios/example-radios-with-visible-text-input.njk +7 -5
  302. package/components/radios/example-radios-without-border.njk +0 -1
  303. package/components/radios/example-radios.njk +7 -5
  304. package/components/radios/radio-with-fieldset.js +22 -22
  305. package/components/radios/radios.dom.js +32 -32
  306. package/components/radios/radios.spec.js +251 -251
  307. package/components/related-content/_macro.njk +10 -11
  308. package/components/related-content/_macro.spec.js +109 -109
  309. package/components/related-content/_related-content.scss +12 -12
  310. package/components/related-content/_section-macro.njk +7 -7
  311. package/components/related-content/_section-macro.spec.js +20 -20
  312. package/components/related-content/example-related-content-general.njk +5 -3
  313. package/components/related-content/example-related-content-multiple-rows-of-links.njk +51 -49
  314. package/components/related-content/example-related-content-social-media.njk +40 -38
  315. package/components/relationships/_macro.njk +10 -8
  316. package/components/relationships/_macro.spec.js +94 -94
  317. package/components/relationships/_relationships.scss +9 -9
  318. package/components/relationships/example-relationships-error.njk +176 -168
  319. package/components/relationships/example-relationships-you.njk +169 -163
  320. package/components/relationships/example-relationships.njk +167 -161
  321. package/components/relationships/relationships.dom.js +5 -5
  322. package/components/relationships/relationships.js +18 -18
  323. package/components/relationships/relationships.spec.js +71 -71
  324. package/components/reply/_macro.spec.js +47 -47
  325. package/components/reply/reply-input.js +15 -15
  326. package/components/reply/reply.dom.js +5 -5
  327. package/components/reply/reply.spec.js +57 -57
  328. package/components/section-navigation/_macro.njk +34 -12
  329. package/components/section-navigation/_macro.spec.js +210 -210
  330. package/components/section-navigation/_section-navigation.scss +76 -76
  331. package/components/select/_macro.njk +21 -18
  332. package/components/select/_macro.spec.js +166 -166
  333. package/components/share-page/_macro.njk +10 -5
  334. package/components/share-page/_macro.spec.js +68 -68
  335. package/components/skip-to-content/_macro.njk +1 -1
  336. package/components/skip-to-content/_macro.spec.js +54 -54
  337. package/components/skip-to-content/_skip.scss +30 -30
  338. package/components/skip-to-content/example-skip-to-content.njk +1 -0
  339. package/components/skip-to-content/skip-to-content.dom.js +6 -6
  340. package/components/skip-to-content/skip-to-content.js +7 -7
  341. package/components/skip-to-content/skip-to-content.spec.js +21 -21
  342. package/components/status/_macro.njk +1 -1
  343. package/components/status/_macro.spec.js +53 -53
  344. package/components/status/_status.scss +32 -32
  345. package/components/summary/_macro.njk +53 -23
  346. package/components/summary/_macro.spec.js +551 -535
  347. package/components/summary/_summary.scss +191 -195
  348. package/components/summary/example-summary-household-no-rows.njk +18 -16
  349. package/components/summary/example-summary-household.njk +75 -73
  350. package/components/summary/example-summary-hub-minimal.njk +74 -72
  351. package/components/summary/example-summary-hub.njk +169 -167
  352. package/components/table/_macro.njk +72 -45
  353. package/components/table/_macro.spec.js +499 -499
  354. package/components/table/_table.scss +204 -201
  355. package/components/table/scrollable-table.dom.js +5 -5
  356. package/components/table/scrollable-table.js +60 -60
  357. package/components/table/sortable-table.dom.js +5 -5
  358. package/components/table/sortable-table.js +135 -135
  359. package/components/table/table.spec.js +144 -140
  360. package/components/table-of-contents/_macro.njk +34 -32
  361. package/components/table-of-contents/_macro.spec.js +125 -125
  362. package/components/table-of-contents/_toc.scss +9 -9
  363. package/components/table-of-contents/example-table-of-contents-grouped.njk +1 -1
  364. package/components/table-of-contents/example-table-of-contents-single.njk +1 -1
  365. package/components/table-of-contents/example-table-of-contents-sticky-full-page.njk +79 -38
  366. package/components/table-of-contents/example-table-of-contents-sticky.njk +50 -13
  367. package/components/table-of-contents/toc.dom.js +5 -5
  368. package/components/table-of-contents/toc.js +30 -30
  369. package/components/table-of-contents/toc.spec.js +88 -88
  370. package/components/tabs/_macro.njk +12 -6
  371. package/components/tabs/_macro.spec.js +92 -92
  372. package/components/tabs/_tabs.scss +120 -115
  373. package/components/tabs/example-tabs-details.njk +5 -6
  374. package/components/tabs/tabs.dom.js +5 -5
  375. package/components/tabs/tabs.js +266 -266
  376. package/components/tabs/tabs.spec.js +268 -268
  377. package/components/text-indent/_macro.njk +1 -3
  378. package/components/text-indent/_macro.spec.js +33 -33
  379. package/components/text-indent/_text-indent.scss +3 -3
  380. package/components/textarea/_macro.njk +49 -46
  381. package/components/textarea/_macro.spec.js +227 -238
  382. package/components/textarea/textarea.dom.js +5 -5
  383. package/components/textarea/textarea.spec.js +78 -74
  384. package/components/timeline/_macro.njk +4 -6
  385. package/components/timeline/_macro.spec.js +83 -83
  386. package/components/timeline/_timeline.scss +26 -26
  387. package/components/timeout-modal/_macro.njk +21 -19
  388. package/components/timeout-modal/_macro.spec.js +47 -47
  389. package/components/timeout-modal/example-timeout-modal.njk +16 -14
  390. package/components/timeout-modal/timeout-modal.dom.js +9 -9
  391. package/components/timeout-modal/timeout-modal.js +66 -66
  392. package/components/timeout-modal/timeout-modal.spec.js +157 -157
  393. package/components/timeout-panel/_macro.njk +19 -17
  394. package/components/timeout-panel/_macro.spec.js +41 -41
  395. package/components/timeout-panel/example-panel-with-timeout-warning.njk +13 -11
  396. package/components/timeout-panel/timeout-panel.dom.js +8 -8
  397. package/components/timeout-panel/timeout-panel.spec.js +118 -118
  398. package/components/upload/_macro.njk +20 -16
  399. package/components/upload/_macro.spec.js +52 -52
  400. package/components/upload/_upload.scss +28 -28
  401. package/components/video/_macro.njk +16 -2
  402. package/components/video/_macro.spec.js +42 -42
  403. package/components/video/_video.scss +16 -16
  404. package/components/video/example-video.njk +2 -2
  405. package/components/video/video.dom.js +5 -5
  406. package/components/video/video.js +32 -32
  407. package/components/video/video.spec.js +103 -97
  408. package/css/main.css +1 -1
  409. package/favicons/manifest.json +25 -25
  410. package/js/abortable-fetch.js +23 -23
  411. package/js/analytics.js +53 -53
  412. package/js/cookies-functions.js +135 -135
  413. package/js/cookies-settings.dom.js +7 -7
  414. package/js/cookies-settings.js +77 -77
  415. package/js/cookies-settings.spec.js +106 -106
  416. package/js/domready.js +8 -8
  417. package/js/fetch.js +14 -14
  418. package/js/inpagelink.dom.js +5 -5
  419. package/js/inpagelink.js +19 -19
  420. package/js/polyfills.js +0 -1
  421. package/js/print-button.js +6 -6
  422. package/js/timeout.js +211 -211
  423. package/layout/_dsTemplate.njk +22 -20
  424. package/layout/_template.njk +63 -51
  425. package/package.json +132 -128
  426. package/scripts/main.es5.js +1 -1
  427. package/scripts/main.js +1 -1
  428. package/scss/base/_forms.scss +10 -10
  429. package/scss/base/_global.scss +45 -44
  430. package/scss/base/_typography.scss +20 -20
  431. package/scss/helpers/_functions.scss +18 -15
  432. package/scss/helpers/_mixins.scss +59 -53
  433. package/scss/helpers/_mq.scss +62 -65
  434. package/scss/objects/_container.scss +20 -20
  435. package/scss/objects/_page.scss +33 -33
  436. package/scss/objects/_spacing.scss +10 -10
  437. package/scss/overrides/hcm.scss +237 -237
  438. package/scss/overrides/rtl.scss +95 -95
  439. package/scss/print.scss +47 -47
  440. package/scss/utilities/_border.scss +7 -7
  441. package/scss/utilities/_colors.scss +6 -6
  442. package/scss/utilities/_display.scss +8 -8
  443. package/scss/utilities/_float.scss +7 -7
  444. package/scss/utilities/_grid.scss +144 -144
  445. package/scss/utilities/_highlight.scss +4 -4
  446. package/scss/utilities/_margin.scss +17 -17
  447. package/scss/utilities/_pad.scss +15 -15
  448. package/scss/utilities/_typography.scss +35 -33
  449. package/scss/utilities/_utilities.scss +8 -8
  450. package/scss/utilities/_visibility.scss +25 -25
  451. package/scss/vars/_colors.scss +116 -116
  452. package/scss/vars/_forms.scss +22 -22
  453. package/scss/vars/_grid.scss +11 -9
  454. package/scss/vars/_typography.scss +54 -54
@@ -6,647 +6,663 @@ import axe from '../../tests/helpers/axe';
6
6
  import { renderComponent, templateFaker } from '../../tests/helpers/rendering';
7
7
 
8
8
  const EXAMPLE_SUMMARY_ROWS = {
9
- rows: [
10
- {
11
- // Contains - row with icon, attributes and rowTitleAttributes, other value, no action
12
- id: 'row-id-1',
13
- rowTitle: 'row title 1',
14
- rowItems: [
9
+ rows: [
15
10
  {
16
- rowTitleAttributes: {
17
- a: 123,
18
- b: 456,
19
- },
20
- attributes: {
21
- a: 'aaa',
22
- b: 'bbb',
23
- },
24
- iconType: 'check',
25
- iconVisuallyHiddenText: 'Section completed',
26
- id: 'item-id-1',
27
- valueList: [
28
- {
29
- text: 'row value 1',
30
- other: 'other value',
31
- },
32
- ],
11
+ // Contains - row with icon, attributes and rowTitleAttributes, other value, no action
12
+ id: 'row-id-1',
13
+ rowTitle: 'row title 1',
14
+ rowItems: [
15
+ {
16
+ rowTitleAttributes: {
17
+ a: 123,
18
+ b: 456,
19
+ },
20
+ attributes: {
21
+ a: 'aaa',
22
+ b: 'bbb',
23
+ },
24
+ iconType: 'check',
25
+ iconVisuallyHiddenText: 'Section completed',
26
+ id: 'item-id-1',
27
+ valueList: [
28
+ {
29
+ text: 'row value 1',
30
+ other: 'other value',
31
+ },
32
+ ],
33
+ },
34
+ ],
33
35
  },
34
- ],
35
- },
36
- {
37
- // Contains - row with error and multiple actions
38
- id: 'row-id-2',
39
- rowTitle: 'row title 2',
40
- error: true,
41
- errorMessage: 'there are errors',
42
- rowItems: [
43
36
  {
44
- id: 'item-id-2',
45
- valueList: [
46
- {
47
- text: 'row value 2',
48
- },
49
- ],
50
- actions: [
51
- {
52
- text: 'Action 1',
53
- visuallyHiddenText: 'action 1 for row title 2',
54
- attributes: {
55
- a: 'abc',
56
- b: 'def',
57
- },
58
- url: '#1',
59
- },
60
- {
61
- text: 'Action 2',
62
- visuallyHiddenText: 'action 2 for row title 2',
63
- url: '#2',
64
- },
65
- ],
37
+ // Contains - row with error and multiple actions
38
+ id: 'row-id-2',
39
+ rowTitle: 'row title 2',
40
+ error: true,
41
+ errorMessage: 'there are errors',
42
+ rowItems: [
43
+ {
44
+ id: 'item-id-2',
45
+ valueList: [
46
+ {
47
+ text: 'row value 2',
48
+ },
49
+ ],
50
+ actions: [
51
+ {
52
+ text: 'Action 1',
53
+ visuallyHiddenText: 'action 1 for row title 2',
54
+ attributes: {
55
+ a: 'abc',
56
+ b: 'def',
57
+ },
58
+ url: '#1',
59
+ },
60
+ {
61
+ text: 'Action 2',
62
+ visuallyHiddenText: 'action 2 for row title 2',
63
+ url: '#2',
64
+ },
65
+ ],
66
+ },
67
+ ],
66
68
  },
67
- ],
68
- },
69
- {
70
- // Contains - row with multiple rows and multiple values
71
- id: 'row-id-3',
72
- rowTitle: 'row title 3',
73
- rowItems: [
74
69
  {
75
- id: 'item-id-3',
76
- valueList: [
77
- {
78
- text: 'row value 3',
79
- },
80
- {
81
- text: 'row value 3b',
82
- },
83
- ],
84
- },
85
- {
86
- id: 'item-id-4',
87
- valueList: [
88
- {
89
- text: 'row value 4',
90
- },
91
- ],
70
+ // Contains - row with multiple rows and multiple values
71
+ id: 'row-id-3',
72
+ rowTitle: 'row title 3',
73
+ rowItems: [
74
+ {
75
+ id: 'item-id-3',
76
+ valueList: [
77
+ {
78
+ text: 'row value 3',
79
+ },
80
+ {
81
+ text: 'row value 3b',
82
+ },
83
+ ],
84
+ },
85
+ {
86
+ id: 'item-id-4',
87
+ valueList: [
88
+ {
89
+ text: 'row value 4',
90
+ },
91
+ ],
92
+ },
93
+ ],
92
94
  },
93
- ],
94
- },
95
- {
96
- // Contains - row with total
97
- id: 'row-id-4',
98
- rowTitle: 'row title 4',
99
- total: true,
100
- rowItems: [
101
95
  {
102
- id: 'item-id-5',
103
- valueList: [
104
- {
105
- text: '£234,000.00',
106
- },
107
- ],
96
+ // Contains - row with total
97
+ id: 'row-id-4',
98
+ rowTitle: 'row title 4',
99
+ total: true,
100
+ rowItems: [
101
+ {
102
+ id: 'item-id-5',
103
+ valueList: [
104
+ {
105
+ text: '£234,000.00',
106
+ },
107
+ ],
108
+ },
109
+ ],
108
110
  },
109
- ],
110
- },
111
- ],
111
+ ],
112
112
  };
113
113
 
114
114
  const EXAMPLE_SUMMARY_GROUPS = {
115
- groups: [
116
- {
117
- id: 'group-id-1',
118
- groupTitle: 'group title',
119
- ...EXAMPLE_SUMMARY_ROWS,
120
- },
121
- ],
115
+ groups: [
116
+ {
117
+ id: 'group-id-1',
118
+ groupTitle: 'group title',
119
+ ...EXAMPLE_SUMMARY_ROWS,
120
+ },
121
+ ],
122
122
  };
123
123
 
124
124
  const EXAMPLE_SUMMARY_GROUPS_NO_ROWS = {
125
- groups: [
126
- {
127
- placeholderText: 'Placeholder text',
128
- summaryLink: {
129
- text: 'Summary link',
130
- url: '#0',
131
- attributes: {
132
- a: 'xyz',
125
+ groups: [
126
+ {
127
+ placeholderText: 'Placeholder text',
128
+ summaryLink: {
129
+ text: 'Summary link',
130
+ url: '#0',
131
+ attributes: {
132
+ a: 'xyz',
133
+ },
134
+ },
133
135
  },
134
- },
135
- },
136
- ],
136
+ ],
137
137
  };
138
138
 
139
139
  const EXAMPLE_SUMMARY_HOUSEHOLD_GROUP = {
140
- rows: [
141
- {
142
- rowItems: [
140
+ rows: [
143
141
  {
144
- rowTitle: 'row item 1',
145
- valueList: [
146
- {
147
- text: 'list item 1',
148
- },
149
- ],
150
- actions: [
151
- {
152
- text: 'Change',
153
- visuallyHiddenText: 'change list item',
154
- url: '#0',
155
- },
156
- {
157
- text: 'Remove',
158
- visuallyHiddenText: 'remove list item',
159
- url: '#0',
160
- },
161
- ],
142
+ rowItems: [
143
+ {
144
+ rowTitle: 'row item 1',
145
+ valueList: [
146
+ {
147
+ text: 'list item 1',
148
+ },
149
+ ],
150
+ actions: [
151
+ {
152
+ text: 'Change',
153
+ visuallyHiddenText: 'change list item',
154
+ url: '#0',
155
+ },
156
+ {
157
+ text: 'Remove',
158
+ visuallyHiddenText: 'remove list item',
159
+ url: '#0',
160
+ },
161
+ ],
162
+ },
163
+ {
164
+ rowTitle: 'row item 2',
165
+ valueList: [
166
+ {
167
+ text: 'list item 2',
168
+ },
169
+ ],
170
+ actions: [
171
+ {
172
+ text: 'Change',
173
+ visuallyHiddenText: 'change list item',
174
+ url: '#0',
175
+ },
176
+ ],
177
+ },
178
+ {
179
+ rowTitle: 'row item 3',
180
+ valueList: [
181
+ {
182
+ text: 'list item 3',
183
+ },
184
+ ],
185
+ actions: [
186
+ {
187
+ text: 'Change',
188
+ visuallyHiddenText: 'change list item',
189
+ url: '#0',
190
+ },
191
+ ],
192
+ },
193
+ ],
162
194
  },
163
195
  {
164
- rowTitle: 'row item 2',
165
- valueList: [
166
- {
167
- text: 'list item 2',
168
- },
169
- ],
170
- actions: [
171
- {
172
- text: 'Change',
173
- visuallyHiddenText: 'change list item',
174
- url: '#0',
175
- },
176
- ],
177
- },
178
- {
179
- rowTitle: 'row item 3',
180
- valueList: [
181
- {
182
- text: 'list item 3',
183
- },
184
- ],
185
- actions: [
186
- {
187
- text: 'Change',
188
- visuallyHiddenText: 'change list item',
189
- url: '#0',
190
- },
191
- ],
192
- },
193
- ],
194
- },
195
- {
196
- rowItems: [
197
- {
198
- rowTitle: 'row item 4',
199
- valueList: [
200
- {
201
- text: 'list item 4',
202
- },
203
- ],
204
- actions: [
205
- {
206
- text: 'Change',
207
- visuallyHiddenText: 'change answer',
208
- url: '#0',
209
- },
210
- {
211
- text: 'Remove',
212
- visuallyHiddenText: 'remove list item',
213
- url: '#0',
214
- },
215
- ],
196
+ rowItems: [
197
+ {
198
+ rowTitle: 'row item 4',
199
+ valueList: [
200
+ {
201
+ text: 'list item 4',
202
+ },
203
+ ],
204
+ actions: [
205
+ {
206
+ text: 'Change',
207
+ visuallyHiddenText: 'change answer',
208
+ url: '#0',
209
+ },
210
+ {
211
+ text: 'Remove',
212
+ visuallyHiddenText: 'remove list item',
213
+ url: '#0',
214
+ },
215
+ ],
216
+ },
217
+ {
218
+ rowTitle: 'row item 5',
219
+ valueList: [
220
+ {
221
+ text: 'list item 5',
222
+ },
223
+ ],
224
+ actions: [
225
+ {
226
+ text: 'Change',
227
+ visuallyHiddenText: 'change list item',
228
+ url: '#0',
229
+ },
230
+ ],
231
+ },
232
+ {
233
+ rowTitle: 'row item 6',
234
+ valueList: [
235
+ {
236
+ text: 'list item 6',
237
+ },
238
+ ],
239
+ actions: [
240
+ {
241
+ text: 'Change',
242
+ visuallyHiddenText: 'change list item',
243
+ url: '#0',
244
+ },
245
+ ],
246
+ },
247
+ ],
216
248
  },
217
- {
218
- rowTitle: 'row item 5',
219
- valueList: [
220
- {
221
- text: 'list item 5',
222
- },
223
- ],
224
- actions: [
225
- {
226
- text: 'Change',
227
- visuallyHiddenText: 'change list item',
228
- url: '#0',
229
- },
230
- ],
231
- },
232
- {
233
- rowTitle: 'row item 6',
234
- valueList: [
235
- {
236
- text: 'list item 6',
237
- },
238
- ],
239
- actions: [
240
- {
241
- text: 'Change',
242
- visuallyHiddenText: 'change list item',
243
- url: '#0',
244
- },
245
- ],
246
- },
247
- ],
249
+ ],
250
+ summaryLink: {
251
+ text: 'Summary link',
252
+ url: '#0',
248
253
  },
249
- ],
250
- summaryLink: {
251
- text: 'Summary link',
252
- url: '#0',
253
- },
254
254
  };
255
255
 
256
256
  const EXAMPLE_SUMMARY_BASIC = {
257
- summaries: [
258
- {
259
- ...EXAMPLE_SUMMARY_GROUPS,
260
- },
261
- ],
257
+ summaries: [
258
+ {
259
+ ...EXAMPLE_SUMMARY_GROUPS,
260
+ },
261
+ ],
262
262
  };
263
263
 
264
264
  const EXAMPLE_SUMMARY_WITH_TITLE = {
265
- summaries: [
266
- {
267
- summaryTitle: 'summary title',
268
- ...EXAMPLE_SUMMARY_GROUPS,
269
- },
270
- ],
265
+ summaries: [
266
+ {
267
+ summaryTitle: 'summary title',
268
+ ...EXAMPLE_SUMMARY_GROUPS,
269
+ },
270
+ ],
271
271
  };
272
272
 
273
273
  const EXAMPLE_SUMMARY_WITH_NO_ROWS = {
274
- summaries: [
275
- {
276
- summaryTitle: 'summary title',
277
- ...EXAMPLE_SUMMARY_GROUPS_NO_ROWS,
278
- },
279
- ],
274
+ summaries: [
275
+ {
276
+ summaryTitle: 'summary title',
277
+ ...EXAMPLE_SUMMARY_GROUPS_NO_ROWS,
278
+ },
279
+ ],
280
280
  };
281
281
 
282
282
  const EXAMPLE_SUMMARY_MULTIPLE_GROUPS = {
283
- summaries: [
284
- {
285
- summaryTitle: 'summary title',
286
- groups: [
283
+ summaries: [
287
284
  {
288
- id: 'group-id-1',
289
- groupTitle: 'group title',
290
- ...EXAMPLE_SUMMARY_ROWS,
285
+ summaryTitle: 'summary title',
286
+ groups: [
287
+ {
288
+ id: 'group-id-1',
289
+ groupTitle: 'group title',
290
+ ...EXAMPLE_SUMMARY_ROWS,
291
+ },
292
+ {
293
+ id: 'group-id-2',
294
+ groupTitle: 'group title',
295
+ ...EXAMPLE_SUMMARY_HOUSEHOLD_GROUP,
296
+ },
297
+ {
298
+ id: 'group-id-3',
299
+ groupTitle: 'group title',
300
+ ...EXAMPLE_SUMMARY_ROWS,
301
+ },
302
+ ],
291
303
  },
292
- {
293
- id: 'group-id-2',
294
- groupTitle: 'group title',
295
- ...EXAMPLE_SUMMARY_HOUSEHOLD_GROUP,
296
- },
297
- {
298
- id: 'group-id-3',
299
- groupTitle: 'group title',
300
- ...EXAMPLE_SUMMARY_ROWS,
301
- },
302
- ],
303
- },
304
- ],
304
+ ],
305
305
  };
306
306
 
307
307
  // To address a DAC issue, we've disabled specific axe definition list rules causing test failures.
308
308
  // While resolving it would require a significant refactor, the failures are deemed non-critical for accessibility,
309
309
  // leading to their removal in this context. [https://github.com/ONSdigital/design-system/issues/3027]
310
310
  const axeRules = {
311
- rules: {
312
- dlitem: {
313
- enabled: false,
314
- },
315
- 'definition-list': {
316
- enabled: false,
311
+ rules: {
312
+ dlitem: {
313
+ enabled: false,
314
+ },
315
+ 'definition-list': {
316
+ enabled: false,
317
+ },
317
318
  },
318
- },
319
319
  };
320
320
 
321
321
  describe('macro: summary', () => {
322
- describe('mode: general', () => {
323
- it('passes jest-axe checks', async () => {
324
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
325
- const results = await axe($.html(), axeRules);
326
-
327
- expect(results).toHaveNoViolations();
328
- });
329
-
330
- it('has custom classes applied', () => {
331
- const $ = cheerio.load(
332
- renderComponent('summary', {
333
- ...EXAMPLE_SUMMARY_BASIC,
334
- classes: 'ons-custom-class',
335
- }),
336
- );
322
+ describe('mode: general', () => {
323
+ it('passes jest-axe checks', async () => {
324
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
325
+ const results = await axe($.html(), axeRules);
337
326
 
338
- expect($('.ons-summary').hasClass('ons-custom-class')).toBe(true);
339
- });
340
-
341
- describe('part: group', () => {
342
- it('has the correct group `id`', () => {
343
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
344
-
345
- expect($('#group-id-1').length).toBe(1);
346
- });
327
+ expect(results).toHaveNoViolations();
328
+ });
347
329
 
348
- it('has the correct `groupTitle` tag', () => {
349
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
330
+ it('has custom classes applied', () => {
331
+ const $ = cheerio.load(
332
+ renderComponent('summary', {
333
+ ...EXAMPLE_SUMMARY_BASIC,
334
+ classes: 'ons-custom-class',
335
+ }),
336
+ );
350
337
 
351
- expect($('.ons-summary__group-title')[0].tagName).toBe('h2');
352
- });
338
+ expect($('.ons-summary').hasClass('ons-custom-class')).toBe(true);
339
+ });
353
340
 
354
- it('has the `groupTitle` text', () => {
355
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
341
+ describe('part: group', () => {
342
+ it('has the correct group `id`', () => {
343
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
356
344
 
357
- expect($('.ons-summary__group-title').text()).toBe('group title');
358
- });
345
+ expect($('#group-id-1').length).toBe(1);
346
+ });
359
347
 
360
- it('has larger margin between groups if the top one is a household style summary', () => {
361
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_MULTIPLE_GROUPS));
348
+ it('has the correct `groupTitle` tag', () => {
349
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
362
350
 
363
- expect($('.ons-summary__group:nth-last-of-type(2) .ons-summary__link').hasClass('ons-u-mb-xl')).toBe(true);
364
- });
365
- });
351
+ expect($('.ons-summary__group-title')[0].tagName).toBe('h2');
352
+ });
366
353
 
367
- describe('part: row', () => {
368
- it('has the correct row class when `error` is `true`', () => {
369
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
354
+ it('has the `groupTitle` text', () => {
355
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
370
356
 
371
- expect($('.ons-summary__items .ons-summary__item:nth-of-type(2)').hasClass('ons-summary__item--error')).toBe(true);
372
- });
357
+ expect($('.ons-summary__group-title').text()).toBe('group title');
358
+ });
373
359
 
374
- it('has the correct row class when `total` is `true`', () => {
375
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
360
+ it('has larger margin between groups if the top one is a household style summary', () => {
361
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_MULTIPLE_GROUPS));
376
362
 
377
- expect($('.ons-summary__items .ons-summary__item:nth-of-type(4)').hasClass('ons-summary__item--total')).toBe(true);
378
- });
363
+ expect($('.ons-summary__group:nth-last-of-type(2) .ons-summary__link').hasClass('ons-u-mb-xl')).toBe(true);
364
+ });
365
+ });
379
366
 
380
- it('displays the `rowTitle` text', () => {
381
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
367
+ describe('part: row', () => {
368
+ it('has the correct row class when `error` is `true`', () => {
369
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
382
370
 
383
- expect($('.ons-summary__items .ons-summary__item:nth-of-type(3) .ons-summary__row-title').text()).toBe('row title 3');
384
- });
371
+ expect($('.ons-summary__items .ons-summary__item:nth-of-type(2)').hasClass('ons-summary__item--error')).toBe(true);
372
+ });
385
373
 
386
- it('overrides the `rowTitle` with the `errorMessage` if provided', () => {
387
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_WITH_TITLE));
374
+ it('has the correct row class when `total` is `true`', () => {
375
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
388
376
 
389
- expect($('.ons-summary__items .ons-summary__item:nth-of-type(2) .ons-summary__row-title--error').text()).toBe('there are errors');
390
- });
377
+ expect($('.ons-summary__items .ons-summary__item:nth-of-type(4)').hasClass('ons-summary__item--total')).toBe(true);
378
+ });
391
379
 
392
- it('has the correct row `id` for each row', () => {
393
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
380
+ it('displays the `rowTitle` text', () => {
381
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
394
382
 
395
- expect($('#row-id-1').length).toBe(1);
396
- expect($('#row-id-2').length).toBe(1);
397
- expect($('#row-id-3').length).toBe(1);
398
- });
383
+ expect($('.ons-summary__items .ons-summary__item:nth-of-type(3) .ons-summary__row-title').text()).toBe('row title 3');
384
+ });
399
385
 
400
- it('has the correct class for each row when there is a `valueList`', () => {
401
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
386
+ it('overrides the `rowTitle` with the `errorMessage` if provided', () => {
387
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_WITH_TITLE));
402
388
 
403
- expect($('.ons-summary__row--has-values').length).toBe(5);
404
- });
389
+ expect($('.ons-summary__items .ons-summary__item:nth-of-type(2) .ons-summary__row-title--error').text()).toBe(
390
+ 'there are errors',
391
+ );
392
+ });
405
393
 
406
- it('has custom `rowTitleAttributes`', () => {
407
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
394
+ it('has the correct row `id` for each row', () => {
395
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
408
396
 
409
- expect($('.ons-summary__item-title').attr('a')).toBe('123');
410
- expect($('.ons-summary__item-title').attr('b')).toBe('456');
411
- });
412
- });
397
+ expect($('#row-id-1').length).toBe(1);
398
+ expect($('#row-id-2').length).toBe(1);
399
+ expect($('#row-id-3').length).toBe(1);
400
+ });
413
401
 
414
- describe('part: item title', () => {
415
- it('displays the `rowTitle` text', () => {
416
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
402
+ it('has the correct class for each row when there is a `valueList`', () => {
403
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
417
404
 
418
- expect($('.ons-summary__items .ons-summary__item:nth-of-type(1) .ons-summary__item--text').text().trim()).toBe('row title 1');
419
- });
405
+ expect($('.ons-summary__row--has-values').length).toBe(5);
406
+ });
420
407
 
421
- it('has a custom icon `iconType`', () => {
422
- const faker = templateFaker();
423
- const iconsSpy = faker.spy('icon');
408
+ it('has custom `rowTitleAttributes`', () => {
409
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
424
410
 
425
- faker.renderComponent('summary', EXAMPLE_SUMMARY_BASIC);
411
+ expect($('.ons-summary__item-title').attr('a')).toBe('123');
412
+ expect($('.ons-summary__item-title').attr('b')).toBe('456');
413
+ });
414
+ });
426
415
 
427
- expect(iconsSpy.occurrences[0].iconType).toBe('check');
428
- });
416
+ describe('part: item title', () => {
417
+ it('displays the `rowTitle` text', () => {
418
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
429
419
 
430
- it('has the correct icon class when `iconType` is `check`', () => {
431
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
420
+ expect($('.ons-summary__items .ons-summary__item:nth-of-type(1) .ons-summary__item--text').text().trim()).toBe(
421
+ 'row title 1',
422
+ );
423
+ });
432
424
 
433
- expect($('.ons-summary__item-title-icon').hasClass('ons-summary__item-title-icon--check')).toBe(true);
434
- });
425
+ it('has a custom icon `iconType`', () => {
426
+ const faker = templateFaker();
427
+ const iconsSpy = faker.spy('icon');
435
428
 
436
- it('has the visually hidden text <span> text when `iconType` is `check`', () => {
437
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
429
+ faker.renderComponent('summary', EXAMPLE_SUMMARY_BASIC);
438
430
 
439
- expect($('.ons-summary__item-title-icon').text().trim()).toBe('Section completed');
440
- });
431
+ expect(iconsSpy.occurrences[0].iconType).toBe('check');
432
+ });
441
433
 
442
- it('has the correct item text class when `iconType` is provided', () => {
443
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
434
+ it('has the correct icon class when `iconType` is `check`', () => {
435
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
444
436
 
445
- expect($('.ons-summary__item--text').hasClass('ons-summary__item-title--text')).toBe(true);
446
- });
437
+ expect($('.ons-summary__item-title-icon').hasClass('ons-summary__item-title-icon--check')).toBe(true);
438
+ });
447
439
 
448
- it('has custom `attributes`', () => {
449
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
440
+ it('has the visually hidden text <span> text when `iconType` is `check`', () => {
441
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
450
442
 
451
- expect($('.ons-summary__values').attr('a')).toBe('aaa');
452
- expect($('.ons-summary__values').attr('b')).toBe('bbb');
453
- });
443
+ expect($('.ons-summary__item-title-icon').text().trim()).toBe('Section completed');
444
+ });
445
+
446
+ it('has the correct item text class when `iconType` is provided', () => {
447
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
448
+
449
+ expect($('.ons-summary__item--text').hasClass('ons-summary__item-title--text')).toBe(true);
450
+ });
451
+
452
+ it('has custom `attributes`', () => {
453
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
454
+
455
+ expect($('.ons-summary__values').attr('a')).toBe('aaa');
456
+ expect($('.ons-summary__values').attr('b')).toBe('bbb');
457
+ });
458
+ });
459
+
460
+ describe('part: item value', () => {
461
+ it('displays the `valueList` text', () => {
462
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
463
+
464
+ expect(
465
+ $('.ons-summary__items .ons-summary__item:nth-of-type(1) .ons-summary__row .ons-summary__values .ons-summary__text')
466
+ .text()
467
+ .trim(),
468
+ ).toBe('row value 1');
469
+ });
470
+
471
+ it('displays the `other` text', () => {
472
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
473
+
474
+ expect(
475
+ $('.ons-summary__items .ons-summary__item:nth-of-type(1) .ons-summary__row .ons-summary__values ul li').text().trim(),
476
+ ).toBe('other value');
477
+ });
478
+
479
+ it('wraps the `valueList` in a ul if multiple values provided', () => {
480
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
481
+
482
+ expect($('.ons-summary__items .ons-summary__item:nth-of-type(3) .ons-summary__values ul').length).toBe(1);
483
+ });
484
+ });
485
+
486
+ describe('part: item action', () => {
487
+ it('has a spacer element if multiple actions are provided', () => {
488
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
489
+
490
+ expect($('.ons-summary__items .ons-summary__item:nth-of-type(2) .ons-summary__actions .ons-summary__spacer').length).toBe(
491
+ 1,
492
+ );
493
+ });
494
+
495
+ it('has the correct `url` for each action provided', () => {
496
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
497
+
498
+ expect(
499
+ $('.ons-summary__items .ons-summary__item:nth-of-type(2) .ons-summary__actions .ons-summary__button:first-child').attr(
500
+ 'href',
501
+ ),
502
+ ).toBe('#1');
503
+ expect(
504
+ $('.ons-summary__items .ons-summary__item:nth-of-type(2) .ons-summary__actions .ons-summary__button:last-child').attr(
505
+ 'href',
506
+ ),
507
+ ).toBe('#2');
508
+ });
509
+
510
+ it('has the action `text` for each action provided', () => {
511
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
512
+
513
+ expect(
514
+ $(
515
+ '.ons-summary__items .ons-summary__item:nth-of-type(2) .ons-summary__actions .ons-summary__button:first-child .ons-summary__button-text',
516
+ ).text(),
517
+ ).toBe('Action 1');
518
+ expect(
519
+ $(
520
+ '.ons-summary__items .ons-summary__item:nth-of-type(2) .ons-summary__actions .ons-summary__button:last-child .ons-summary__button-text',
521
+ ).text(),
522
+ ).toBe('Action 2');
523
+ });
524
+
525
+ it('has the correct visually hidden <span> text', () => {
526
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
527
+
528
+ expect(
529
+ $(
530
+ '.ons-summary__items .ons-summary__item:nth-of-type(2) .ons-summary__actions .ons-summary__button:first-child .ons-u-vh',
531
+ ).text(),
532
+ ).toBe('action 1 for row title 2');
533
+ expect(
534
+ $(
535
+ '.ons-summary__items .ons-summary__item:nth-of-type(2) .ons-summary__actions .ons-summary__button:last-child .ons-u-vh',
536
+ ).text(),
537
+ ).toBe('action 2 for row title 2');
538
+ });
539
+
540
+ it('has custom `attributes`', () => {
541
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
542
+
543
+ expect(
544
+ $('.ons-summary__items .ons-summary__item:nth-of-type(2) .ons-summary__actions .ons-summary__button:first-child').attr(
545
+ 'a',
546
+ ),
547
+ ).toBe('abc');
548
+ expect(
549
+ $('.ons-summary__items .ons-summary__item:nth-of-type(2) .ons-summary__actions .ons-summary__button:first-child').attr(
550
+ 'b',
551
+ ),
552
+ ).toBe('def');
553
+ });
554
+ });
454
555
  });
455
556
 
456
- describe('part: item value', () => {
457
- it('displays the `valueList` text', () => {
458
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
557
+ describe('mode: with title', () => {
558
+ it('passes jest-axe checks', async () => {
559
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_WITH_TITLE));
560
+ const results = await axe($.html(), axeRules);
459
561
 
460
- expect(
461
- $('.ons-summary__items .ons-summary__item:nth-of-type(1) .ons-summary__row .ons-summary__values .ons-summary__text')
462
- .text()
463
- .trim(),
464
- ).toBe('row value 1');
465
- });
562
+ expect(results).toHaveNoViolations();
563
+ });
466
564
 
467
- it('displays the `other` text', () => {
468
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
565
+ it('displays the `summaryTitle`', () => {
566
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_WITH_TITLE));
469
567
 
470
- expect($('.ons-summary__items .ons-summary__item:nth-of-type(1) .ons-summary__row .ons-summary__values ul li').text().trim()).toBe(
471
- 'other value',
472
- );
473
- });
474
-
475
- it('wraps the `valueList` in a ul if multiple values provided', () => {
476
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
477
-
478
- expect($('.ons-summary__items .ons-summary__item:nth-of-type(3) .ons-summary__values ul').length).toBe(1);
479
- });
480
- });
481
-
482
- describe('part: item action', () => {
483
- it('has a spacer element if multiple actions are provided', () => {
484
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
485
-
486
- expect($('.ons-summary__items .ons-summary__item:nth-of-type(2) .ons-summary__actions .ons-summary__spacer').length).toBe(1);
487
- });
488
-
489
- it('has the correct `url` for each action provided', () => {
490
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
491
-
492
- expect(
493
- $('.ons-summary__items .ons-summary__item:nth-of-type(2) .ons-summary__actions .ons-summary__button:first-child').attr('href'),
494
- ).toBe('#1');
495
- expect(
496
- $('.ons-summary__items .ons-summary__item:nth-of-type(2) .ons-summary__actions .ons-summary__button:last-child').attr('href'),
497
- ).toBe('#2');
498
- });
499
-
500
- it('has the action `text` for each action provided', () => {
501
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
502
-
503
- expect(
504
- $(
505
- '.ons-summary__items .ons-summary__item:nth-of-type(2) .ons-summary__actions .ons-summary__button:first-child .ons-summary__button-text',
506
- ).text(),
507
- ).toBe('Action 1');
508
- expect(
509
- $(
510
- '.ons-summary__items .ons-summary__item:nth-of-type(2) .ons-summary__actions .ons-summary__button:last-child .ons-summary__button-text',
511
- ).text(),
512
- ).toBe('Action 2');
513
- });
514
-
515
- it('has the correct visually hidden <span> text', () => {
516
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
517
-
518
- expect(
519
- $(
520
- '.ons-summary__items .ons-summary__item:nth-of-type(2) .ons-summary__actions .ons-summary__button:first-child .ons-u-vh',
521
- ).text(),
522
- ).toBe('action 1 for row title 2');
523
- expect(
524
- $('.ons-summary__items .ons-summary__item:nth-of-type(2) .ons-summary__actions .ons-summary__button:last-child .ons-u-vh').text(),
525
- ).toBe('action 2 for row title 2');
526
- });
527
-
528
- it('has custom `attributes`', () => {
529
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_BASIC));
530
-
531
- expect(
532
- $('.ons-summary__items .ons-summary__item:nth-of-type(2) .ons-summary__actions .ons-summary__button:first-child').attr('a'),
533
- ).toBe('abc');
534
- expect(
535
- $('.ons-summary__items .ons-summary__item:nth-of-type(2) .ons-summary__actions .ons-summary__button:first-child').attr('b'),
536
- ).toBe('def');
537
- });
538
- });
539
- });
540
-
541
- describe('mode: with title', () => {
542
- it('passes jest-axe checks', async () => {
543
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_WITH_TITLE));
544
- const results = await axe($.html(), axeRules);
545
-
546
- expect(results).toHaveNoViolations();
568
+ expect($('.ons-summary__title').text()).toBe('summary title');
569
+ });
547
570
  });
548
571
 
549
- it('displays the `summaryTitle`', () => {
550
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_WITH_TITLE));
551
-
552
- expect($('.ons-summary__title').text()).toBe('summary title');
572
+ describe('mode: hub', () => {
573
+ it('passes jest-axe checks', async () => {
574
+ const $ = cheerio.load(
575
+ renderComponent('summary', {
576
+ ...EXAMPLE_SUMMARY_BASIC,
577
+ variant: 'hub',
578
+ }),
579
+ );
580
+ const results = await axe($.html(), axeRules);
581
+
582
+ expect(results).toHaveNoViolations();
583
+ });
584
+
585
+ it('has the correct class applied', () => {
586
+ const $ = cheerio.load(
587
+ renderComponent('summary', {
588
+ ...EXAMPLE_SUMMARY_BASIC,
589
+ variant: 'hub',
590
+ }),
591
+ );
592
+
593
+ expect($('.ons-summary').hasClass('ons-summary--hub')).toBe(true);
594
+ });
595
+
596
+ it('has the value rendered after the `rowTitle` that shows on mobile', () => {
597
+ const $ = cheerio.load(
598
+ renderComponent('summary', {
599
+ ...EXAMPLE_SUMMARY_BASIC,
600
+ variant: 'hub',
601
+ }),
602
+ );
603
+
604
+ expect($('.ons-summary__items .ons-summary__item:nth-of-type(2) .ons-summary__row .ons-summary__item-title span').text()).toBe(
605
+ ' — row value 2',
606
+ );
607
+ });
553
608
  });
554
- });
555
609
 
556
- describe('mode: hub', () => {
557
- it('passes jest-axe checks', async () => {
558
- const $ = cheerio.load(
559
- renderComponent('summary', {
560
- ...EXAMPLE_SUMMARY_BASIC,
561
- variant: 'hub',
562
- }),
563
- );
564
- const results = await axe($.html(), axeRules);
565
-
566
- expect(results).toHaveNoViolations();
567
- });
610
+ describe('mode: no rows', () => {
611
+ it('passes jest-axe checks', async () => {
612
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_WITH_NO_ROWS));
568
613
 
569
- it('has the correct class applied', () => {
570
- const $ = cheerio.load(
571
- renderComponent('summary', {
572
- ...EXAMPLE_SUMMARY_BASIC,
573
- variant: 'hub',
574
- }),
575
- );
614
+ const results = await axe($.html(), axeRules);
615
+ expect(results).toHaveNoViolations();
616
+ });
576
617
 
577
- expect($('.ons-summary').hasClass('ons-summary--hub')).toBe(true);
578
- });
618
+ it('has the `placeholderText` provided', () => {
619
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_WITH_NO_ROWS));
579
620
 
580
- it('has the value rendered after the `rowTitle` that shows on mobile', () => {
581
- const $ = cheerio.load(
582
- renderComponent('summary', {
583
- ...EXAMPLE_SUMMARY_BASIC,
584
- variant: 'hub',
585
- }),
586
- );
587
-
588
- expect($('.ons-summary__items .ons-summary__item:nth-of-type(2) .ons-summary__row .ons-summary__item-title span').text()).toBe(
589
- ' — row value 2',
590
- );
591
- });
592
- });
621
+ expect($('.ons-summary__group .ons-summary__placeholder').text()).toBe('Placeholder text');
622
+ });
593
623
 
594
- describe('mode: no rows', () => {
595
- it('passes jest-axe checks', async () => {
596
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_WITH_NO_ROWS));
624
+ it('has the correct class added to the `summaryLink` when `placeholderText` is provided', () => {
625
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_WITH_NO_ROWS));
597
626
 
598
- const results = await axe($.html(), axeRules);
599
- expect(results).toHaveNoViolations();
600
- });
627
+ expect($('.ons-summary__group .ons-summary__link').hasClass('ons-u-pt-s')).toBe(true);
628
+ });
601
629
 
602
- it('has the `placeholderText` provided', () => {
603
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_WITH_NO_ROWS));
630
+ it('has custom `attributes` on the `summaryLink`', () => {
631
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_WITH_NO_ROWS));
604
632
 
605
- expect($('.ons-summary__group .ons-summary__placeholder').text()).toBe('Placeholder text');
606
- });
633
+ expect($('.ons-summary__group .ons-summary__link a').attr('a')).toBe('xyz');
634
+ });
607
635
 
608
- it('has the correct class added to the `summaryLink` when `placeholderText` is provided', () => {
609
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_WITH_NO_ROWS));
636
+ it('has the correct link `text`', () => {
637
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_WITH_NO_ROWS));
610
638
 
611
- expect($('.ons-summary__group .ons-summary__link').hasClass('ons-u-pt-s')).toBe(true);
612
- });
639
+ expect($('.ons-summary__group .ons-summary__link a').text().trim()).toBe('Summary link');
640
+ });
613
641
 
614
- it('has custom `attributes` on the `summaryLink`', () => {
615
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_WITH_NO_ROWS));
642
+ it('has the correct link `url`', () => {
643
+ const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_WITH_NO_ROWS));
616
644
 
617
- expect($('.ons-summary__group .ons-summary__link a').attr('a')).toBe('xyz');
645
+ expect($('.ons-summary__group .ons-summary__link a').attr('href')).toBe('#0');
646
+ });
618
647
  });
648
+ });
619
649
 
620
- it('has the correct link `text`', () => {
621
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_WITH_NO_ROWS));
650
+ describe('mode: card', () => {
651
+ it('passes jest-axe checks', async () => {
652
+ const $ = cheerio.load(renderComponent('summary', { ...EXAMPLE_SUMMARY_BASIC, variant: 'card' }));
653
+ const results = await axe($.html(), axeRules);
622
654
 
623
- expect($('.ons-summary__group .ons-summary__link a').text().trim()).toBe('Summary link');
655
+ expect(results).toHaveNoViolations();
624
656
  });
625
657
 
626
- it('has the correct link `url`', () => {
627
- const $ = cheerio.load(renderComponent('summary', EXAMPLE_SUMMARY_WITH_NO_ROWS));
658
+ it('has the correct classes applied', () => {
659
+ const $ = cheerio.load(
660
+ renderComponent('summary', {
661
+ ...EXAMPLE_SUMMARY_MULTIPLE_GROUPS,
662
+ variant: 'card',
663
+ }),
664
+ );
628
665
 
629
- expect($('.ons-summary__group .ons-summary__link a').attr('href')).toBe('#0');
666
+ expect($('.ons-summary__group').hasClass('ons-summary__group--card')).toBe(true);
630
667
  });
631
- });
632
- });
633
-
634
- describe('mode: card', () => {
635
- it('passes jest-axe checks', async () => {
636
- const $ = cheerio.load(renderComponent('summary', { ...EXAMPLE_SUMMARY_BASIC, variant: 'card' }));
637
- const results = await axe($.html(), axeRules);
638
-
639
- expect(results).toHaveNoViolations();
640
- });
641
-
642
- it('has the correct classes applied', () => {
643
- const $ = cheerio.load(
644
- renderComponent('summary', {
645
- ...EXAMPLE_SUMMARY_MULTIPLE_GROUPS,
646
- variant: 'card',
647
- }),
648
- );
649
-
650
- expect($('.ons-summary__group').hasClass('ons-summary__group--card')).toBe(true);
651
- });
652
668
  });