@ons/design-system 70.0.6 → 70.0.8

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 (308) hide show
  1. package/README.md +11 -17
  2. package/components/access-code/_macro.spec.js +145 -145
  3. package/components/access-code/access-code.dom.js +5 -5
  4. package/components/access-code/access-code.js +16 -16
  5. package/components/access-code/access-code.scss +22 -22
  6. package/components/access-code/access-code.spec.js +17 -17
  7. package/components/accordion/_macro.spec.js +154 -154
  8. package/components/accordion/accordion.dom.js +10 -10
  9. package/components/accordion/accordion.js +50 -50
  10. package/components/accordion/accordion.spec.js +104 -104
  11. package/components/address-input/_macro.spec.js +420 -420
  12. package/components/address-input/autosuggest.address.dom.js +5 -5
  13. package/components/address-input/autosuggest.address.error.js +77 -77
  14. package/components/address-input/autosuggest.address.js +357 -357
  15. package/components/address-input/autosuggest.address.setter.js +95 -95
  16. package/components/address-input/autosuggest.address.spec.js +668 -651
  17. package/components/address-input/example-address-input-editable.njk +1 -1
  18. package/components/address-input/example-address-input.njk +1 -1
  19. package/components/address-output/_address-output.scss +3 -3
  20. package/components/address-output/_macro.spec.js +84 -84
  21. package/components/autosuggest/_autosuggest.scss +114 -114
  22. package/components/autosuggest/_macro.spec.js +255 -255
  23. package/components/autosuggest/autosuggest.dom.js +5 -5
  24. package/components/autosuggest/autosuggest.helpers.js +11 -11
  25. package/components/autosuggest/autosuggest.helpers.spec.js +73 -73
  26. package/components/autosuggest/autosuggest.js +20 -20
  27. package/components/autosuggest/autosuggest.spec.js +542 -536
  28. package/components/autosuggest/autosuggest.ui.js +478 -475
  29. package/components/autosuggest/fuse-config.js +17 -17
  30. package/components/back-to-top/_back-to-top.scss +27 -27
  31. package/components/back-to-top/_macro.spec.js +49 -49
  32. package/components/back-to-top/back-to-top.dom.js +5 -5
  33. package/components/back-to-top/back-to-top.js +52 -52
  34. package/components/back-to-top/back-to-top.spec.js +106 -106
  35. package/components/back-to-top/example-back-to-top.njk +6 -6
  36. package/components/breadcrumbs/_breadcrumbs.scss +63 -65
  37. package/components/breadcrumbs/_macro.spec.js +91 -91
  38. package/components/browser-banner/_browser-banner.scss +23 -23
  39. package/components/browser-banner/_macro.spec.js +92 -92
  40. package/components/button/_button.scss +482 -483
  41. package/components/button/_macro.spec.js +363 -363
  42. package/components/button/button.dom.js +15 -15
  43. package/components/button/button.js +53 -53
  44. package/components/button/button.spec.js +248 -240
  45. package/components/call-to-action/_call-to-action.scss +5 -5
  46. package/components/call-to-action/_macro.spec.js +28 -28
  47. package/components/card/_card.scss +23 -23
  48. package/components/card/_macro.spec.js +180 -180
  49. package/components/char-check-limit/_macro.spec.js +48 -48
  50. package/components/char-check-limit/character-check.js +58 -58
  51. package/components/char-check-limit/character-check.spec.js +173 -173
  52. package/components/char-check-limit/character-limit.js +40 -40
  53. package/components/checkboxes/_checkbox-macro.spec.js +355 -355
  54. package/components/checkboxes/_checkbox.scss +180 -180
  55. package/components/checkboxes/_checkboxes.scss +37 -27
  56. package/components/checkboxes/_macro.spec.js +261 -261
  57. package/components/checkboxes/checkbox-with-autoselect.js +32 -32
  58. package/components/checkboxes/checkbox-with-fieldset.js +21 -21
  59. package/components/checkboxes/checkboxes-with-reveal.js +10 -10
  60. package/components/checkboxes/checkboxes.dom.js +27 -27
  61. package/components/checkboxes/checkboxes.spec.js +183 -183
  62. package/components/content-pagination/_content-pagination.scss +41 -41
  63. package/components/content-pagination/_macro.spec.js +159 -159
  64. package/components/cookies-banner/_cookies-banner.scss +22 -22
  65. package/components/cookies-banner/_macro.spec.js +177 -177
  66. package/components/cookies-banner/cookies-banner.dom.js +7 -7
  67. package/components/cookies-banner/cookies-banner.js +76 -76
  68. package/components/cookies-banner/cookies-banner.spec.js +72 -68
  69. package/components/date-input/_macro.spec.js +338 -338
  70. package/components/description-list/_description-list.scss +23 -23
  71. package/components/description-list/_macro.spec.js +144 -144
  72. package/components/details/_details.scss +109 -109
  73. package/components/details/_macro.spec.js +132 -132
  74. package/components/details/details.dom.js +6 -6
  75. package/components/details/details.js +60 -60
  76. package/components/details/details.spec.js +106 -106
  77. package/components/document-list/_macro.spec.js +444 -444
  78. package/components/document-list/document-list.scss +145 -149
  79. package/components/download-resources/_download-resources.scss +109 -108
  80. package/components/download-resources/download-resources.js +907 -900
  81. package/components/download-resources/download-resources.spec.js +461 -461
  82. package/components/duration/_macro.spec.js +291 -291
  83. package/components/error/_macro.spec.js +72 -72
  84. package/components/external-link/_external-link.scss +19 -19
  85. package/components/external-link/_macro.spec.js +68 -68
  86. package/components/feedback/_feedback.scss +31 -31
  87. package/components/feedback/_macro.spec.js +72 -72
  88. package/components/field/_field-group.scss +10 -10
  89. package/components/field/_field.scss +16 -16
  90. package/components/field/_macro.spec.js +80 -80
  91. package/components/fieldset/_fieldset.scss +27 -27
  92. package/components/fieldset/_macro.spec.js +161 -161
  93. package/components/footer/_footer.scss +45 -45
  94. package/components/footer/_macro.spec.js +452 -452
  95. package/components/header/_header.scss +202 -202
  96. package/components/header/_macro.spec.js +833 -829
  97. package/components/helpers/_grid.scss +4 -4
  98. package/components/hero/_hero.scss +48 -48
  99. package/components/hero/_macro.spec.js +59 -59
  100. package/components/icon/_icon.scss +44 -44
  101. package/components/icon/_macro.spec.js +110 -110
  102. package/components/image/_image.scss +11 -11
  103. package/components/image/_macro.spec.js +81 -81
  104. package/components/input/_input-type.scss +86 -89
  105. package/components/input/_input.scss +123 -124
  106. package/components/input/_macro.spec.js +604 -604
  107. package/components/input/character-check.dom.js +5 -5
  108. package/components/input/input.dom.js +5 -5
  109. package/components/input/input.js +10 -10
  110. package/components/input/input.spec.js +18 -18
  111. package/components/label/_label.scss +24 -24
  112. package/components/label/_macro.spec.js +173 -170
  113. package/components/language-selector/_macro.spec.js +97 -97
  114. package/components/language-selector/language.scss +7 -7
  115. package/components/list/_list.scss +84 -84
  116. package/components/list/_macro.njk +2 -2
  117. package/components/list/_macro.spec.js +583 -583
  118. package/components/message/_macro.njk +5 -5
  119. package/components/message/_macro.spec.js +74 -74
  120. package/components/message/_message.scss +39 -39
  121. package/components/message-list/_macro.spec.js +86 -86
  122. package/components/message-list/_message-list.scss +16 -16
  123. package/components/modal/_macro.spec.js +69 -69
  124. package/components/modal/_modal.scss +36 -36
  125. package/components/modal/modal.dom.js +6 -6
  126. package/components/modal/modal.js +89 -89
  127. package/components/modal/modal.spec.js +50 -50
  128. package/components/mutually-exclusive/_macro.spec.js +140 -140
  129. package/components/mutually-exclusive/mutually-exclusive.checkboxes.spec.js +188 -188
  130. package/components/mutually-exclusive/mutually-exclusive.date.spec.js +211 -211
  131. package/components/mutually-exclusive/mutually-exclusive.dom.js +5 -5
  132. package/components/mutually-exclusive/mutually-exclusive.duration.spec.js +210 -210
  133. package/components/mutually-exclusive/mutually-exclusive.email.spec.js +90 -90
  134. package/components/mutually-exclusive/mutually-exclusive.js +137 -137
  135. package/components/mutually-exclusive/mutually-exclusive.multiple-options.checkboxes.spec.js +197 -197
  136. package/components/mutually-exclusive/mutually-exclusive.number.spec.js +96 -96
  137. package/components/mutually-exclusive/mutually-exclusive.textarea.spec.js +102 -102
  138. package/components/navigation/_macro.spec.js +360 -354
  139. package/components/navigation/_navigation.scss +122 -123
  140. package/components/navigation/navigation.dom.js +35 -35
  141. package/components/navigation/navigation.js +49 -49
  142. package/components/navigation/navigation.spec.js +249 -249
  143. package/components/pagination/_macro.spec.js +342 -335
  144. package/components/pagination/_pagination.scss +58 -58
  145. package/components/panel/_macro.spec.js +372 -372
  146. package/components/panel/_panel.scss +200 -199
  147. package/components/password/_macro.spec.js +95 -95
  148. package/components/password/password.dom.js +5 -5
  149. package/components/password/password.js +10 -10
  150. package/components/password/password.spec.js +26 -26
  151. package/components/phase-banner/_macro.spec.js +86 -86
  152. package/components/phase-banner/_phase-banner.scss +16 -16
  153. package/components/question/_macro.spec.js +235 -235
  154. package/components/question/_question.scss +24 -24
  155. package/components/quote/_macro.spec.js +52 -52
  156. package/components/quote/_quote.scss +24 -24
  157. package/components/radios/_macro.spec.js +524 -524
  158. package/components/radios/_radio.scss +49 -48
  159. package/components/radios/_radios.scss +14 -20
  160. package/components/radios/check-radios.js +21 -21
  161. package/components/radios/clear-radios.js +45 -45
  162. package/components/radios/radio-with-fieldset.js +22 -22
  163. package/components/radios/radios.dom.js +32 -32
  164. package/components/radios/radios.spec.js +251 -251
  165. package/components/related-content/_macro.spec.js +109 -109
  166. package/components/related-content/_related-content.scss +12 -12
  167. package/components/related-content/_section-macro.spec.js +20 -20
  168. package/components/relationships/_macro.spec.js +94 -94
  169. package/components/relationships/_relationships.scss +9 -9
  170. package/components/relationships/relationships.dom.js +5 -5
  171. package/components/relationships/relationships.js +18 -18
  172. package/components/relationships/relationships.spec.js +71 -71
  173. package/components/reply/_macro.spec.js +47 -47
  174. package/components/reply/reply-input.js +15 -15
  175. package/components/reply/reply.dom.js +5 -5
  176. package/components/reply/reply.spec.js +57 -57
  177. package/components/section-navigation/_macro.spec.js +210 -210
  178. package/components/section-navigation/_section-navigation.scss +76 -76
  179. package/components/select/_macro.spec.js +166 -166
  180. package/components/share-page/_macro.spec.js +68 -68
  181. package/components/skip-to-content/_macro.spec.js +54 -54
  182. package/components/skip-to-content/_skip.scss +30 -30
  183. package/components/skip-to-content/skip-to-content.dom.js +6 -6
  184. package/components/skip-to-content/skip-to-content.js +7 -7
  185. package/components/skip-to-content/skip-to-content.spec.js +21 -21
  186. package/components/status/_macro.spec.js +53 -53
  187. package/components/status/_status.scss +32 -32
  188. package/components/summary/_macro.spec.js +551 -535
  189. package/components/summary/_summary.scss +191 -195
  190. package/components/table/_macro.spec.js +499 -499
  191. package/components/table/_table.scss +204 -201
  192. package/components/table/scrollable-table.dom.js +5 -5
  193. package/components/table/scrollable-table.js +60 -60
  194. package/components/table/sortable-table.dom.js +5 -5
  195. package/components/table/sortable-table.js +135 -135
  196. package/components/table/table.spec.js +144 -140
  197. package/components/table-of-contents/_macro.spec.js +125 -125
  198. package/components/table-of-contents/_toc.scss +9 -9
  199. package/components/table-of-contents/toc.dom.js +5 -5
  200. package/components/table-of-contents/toc.js +30 -30
  201. package/components/table-of-contents/toc.spec.js +88 -88
  202. package/components/tabs/_macro.spec.js +92 -92
  203. package/components/tabs/_tabs.scss +120 -115
  204. package/components/tabs/tabs.dom.js +5 -5
  205. package/components/tabs/tabs.js +266 -266
  206. package/components/tabs/tabs.spec.js +268 -268
  207. package/components/text-indent/_macro.spec.js +33 -33
  208. package/components/text-indent/_text-indent.scss +3 -3
  209. package/components/textarea/_macro.spec.js +238 -238
  210. package/components/textarea/textarea.dom.js +5 -5
  211. package/components/textarea/textarea.spec.js +78 -74
  212. package/components/timeline/_macro.spec.js +83 -83
  213. package/components/timeline/_timeline.scss +26 -26
  214. package/components/timeout-modal/_macro.spec.js +47 -47
  215. package/components/timeout-modal/timeout-modal.dom.js +9 -9
  216. package/components/timeout-modal/timeout-modal.js +66 -66
  217. package/components/timeout-modal/timeout-modal.spec.js +157 -157
  218. package/components/timeout-panel/_macro.spec.js +41 -41
  219. package/components/timeout-panel/timeout-panel.dom.js +8 -8
  220. package/components/timeout-panel/timeout-panel.spec.js +118 -118
  221. package/components/upload/_macro.spec.js +52 -52
  222. package/components/upload/_upload.scss +28 -28
  223. package/components/video/_macro.spec.js +42 -42
  224. package/components/video/_video.scss +16 -16
  225. package/components/video/video.dom.js +5 -5
  226. package/components/video/video.js +32 -32
  227. package/components/video/video.spec.js +103 -97
  228. package/css/main.css +1 -1
  229. package/favicons/android-chrome-192x192.png +0 -0
  230. package/favicons/android-chrome-512x512.png +0 -0
  231. package/favicons/apple-touch-icon.png +0 -0
  232. package/favicons/favicon-16x16.png +0 -0
  233. package/favicons/favicon-32x32.png +0 -0
  234. package/favicons/favicon.ico +0 -0
  235. package/favicons/manifest.json +25 -25
  236. package/favicons/maskable_icon.png +0 -0
  237. package/favicons/opengraph.png +0 -0
  238. package/favicons/twitter.png +0 -0
  239. package/img/large/alison-pritchard-featured.jpg +0 -0
  240. package/img/large/alison-pritchard.jpg +0 -0
  241. package/img/large/census-monuments-lights-featured.jpg +0 -0
  242. package/img/large/census-monuments-lights.jpg +0 -0
  243. package/img/large/mother-and-daughter-in-ireland.jpg +0 -0
  244. package/img/large/mum-and-child-healthcare-belfast.jpg +0 -0
  245. package/img/large/ons-award-winners.jpg +0 -0
  246. package/img/large/placeholder-card.png +0 -0
  247. package/img/large/placeholder-news-medium.png +0 -0
  248. package/img/large/placeholder-news.png +0 -0
  249. package/img/large/placeholder-portrait.png +0 -0
  250. package/img/large/students.jpg +0 -0
  251. package/img/large/woman-in-purple-dress-shirt.jpg +0 -0
  252. package/img/small/alison-pritchard-featured.jpg +0 -0
  253. package/img/small/alison-pritchard.jpg +0 -0
  254. package/img/small/census-monuments-lights-featured.jpg +0 -0
  255. package/img/small/census-monuments-lights.jpg +0 -0
  256. package/img/small/mother-and-daughter-in-ireland.jpg +0 -0
  257. package/img/small/mum-and-child-healthcare-belfast.jpg +0 -0
  258. package/img/small/ons-award-winners.jpg +0 -0
  259. package/img/small/placeholder-card.png +0 -0
  260. package/img/small/placeholder-news-medium.png +0 -0
  261. package/img/small/placeholder-news.png +0 -0
  262. package/img/small/placeholder-portrait.png +0 -0
  263. package/img/small/students.jpg +0 -0
  264. package/img/small/woman-in-purple-dress-shirt.jpg +0 -0
  265. package/js/abortable-fetch.js +23 -23
  266. package/js/analytics.js +53 -53
  267. package/js/cookies-functions.js +135 -135
  268. package/js/cookies-settings.dom.js +7 -7
  269. package/js/cookies-settings.js +77 -77
  270. package/js/cookies-settings.spec.js +106 -106
  271. package/js/domready.js +8 -8
  272. package/js/fetch.js +14 -14
  273. package/js/inpagelink.dom.js +5 -5
  274. package/js/inpagelink.js +19 -19
  275. package/js/polyfills.js +0 -1
  276. package/js/print-button.js +6 -6
  277. package/js/timeout.js +211 -211
  278. package/layout/_template.njk +5 -7
  279. package/package.json +131 -127
  280. package/scripts/main.es5.js +1 -1
  281. package/scripts/main.js +1 -1
  282. package/scss/base/_forms.scss +10 -10
  283. package/scss/base/_global.scss +45 -44
  284. package/scss/base/_typography.scss +20 -20
  285. package/scss/helpers/_functions.scss +18 -15
  286. package/scss/helpers/_mixins.scss +59 -53
  287. package/scss/helpers/_mq.scss +62 -65
  288. package/scss/objects/_container.scss +20 -20
  289. package/scss/objects/_page.scss +33 -33
  290. package/scss/objects/_spacing.scss +10 -10
  291. package/scss/overrides/hcm.scss +237 -237
  292. package/scss/overrides/rtl.scss +95 -95
  293. package/scss/print.scss +47 -47
  294. package/scss/utilities/_border.scss +7 -7
  295. package/scss/utilities/_colors.scss +6 -6
  296. package/scss/utilities/_display.scss +8 -8
  297. package/scss/utilities/_float.scss +7 -7
  298. package/scss/utilities/_grid.scss +144 -144
  299. package/scss/utilities/_highlight.scss +4 -4
  300. package/scss/utilities/_margin.scss +17 -17
  301. package/scss/utilities/_pad.scss +15 -15
  302. package/scss/utilities/_typography.scss +35 -33
  303. package/scss/utilities/_utilities.scss +8 -8
  304. package/scss/utilities/_visibility.scss +25 -25
  305. package/scss/vars/_colors.scss +116 -116
  306. package/scss/vars/_forms.scss +22 -22
  307. package/scss/vars/_grid.scss +11 -9
  308. package/scss/vars/_typography.scss +54 -54
@@ -2,304 +2,304 @@ import { setViewport } from '../../tests/helpers/puppeteer';
2
2
  import { renderComponent, setTestPage } from '../../tests/helpers/rendering';
3
3
 
4
4
  const EXAMPLE_NAVIGATION = {
5
- navigation: {
6
- id: 'main-nav',
7
- ariaLabel: 'Main menu',
8
- currentPath: '#0',
9
- itemsList: [
10
- {
11
- title: 'Main nav item 1',
12
- url: '#0',
13
- classes: 'custom-class-main-item-1',
14
- id: 'main-item-1',
15
- },
16
- {
17
- title: 'Main nav item 2',
18
- url: '#1',
19
- classes: 'custom-class-main-item-2',
20
- id: 'main-item-2',
21
- },
22
- ],
23
- toggleNavigationButton: {
24
- text: 'Menu',
25
- ariaLabel: 'Toggle main navigation',
5
+ navigation: {
6
+ id: 'main-nav',
7
+ ariaLabel: 'Main menu',
8
+ currentPath: '#0',
9
+ itemsList: [
10
+ {
11
+ title: 'Main nav item 1',
12
+ url: '#0',
13
+ classes: 'custom-class-main-item-1',
14
+ id: 'main-item-1',
15
+ },
16
+ {
17
+ title: 'Main nav item 2',
18
+ url: '#1',
19
+ classes: 'custom-class-main-item-2',
20
+ id: 'main-item-2',
21
+ },
22
+ ],
23
+ toggleNavigationButton: {
24
+ text: 'Menu',
25
+ ariaLabel: 'Toggle main navigation',
26
+ },
26
27
  },
27
- },
28
28
  };
29
29
 
30
30
  const EXAMPLE_NAVIGATION_WITH_SUBNAVIGATION = {
31
- navigation: {
32
- id: 'main-nav',
33
- ariaLabel: 'Main menu',
34
- currentPath: '#1',
35
- currentPageTitle: 'Main nav item 2',
36
- itemsList: [
37
- {
38
- title: 'Main nav item 1',
39
- url: '#0',
40
- classes: 'custom-class-main-item-1',
41
- id: 'main-item-1',
42
- },
43
- {
44
- title: 'Main nav item 2',
45
- url: '#1',
46
- classes: 'custom-class-main-item-2',
47
- id: 'main-item-2',
48
- },
49
- ],
50
- subNavigation: {
51
- id: 'sub-nav',
52
- overviewURL: '#overview',
53
- overviewText: 'Overview',
54
- ariaLabel: 'Section menu',
55
- currentPath: '#1',
56
- itemsList: [
57
- {
58
- title: 'Sub nav item 1',
59
- url: '#0',
60
- classes: 'custom-class-sub-item-1',
61
- id: 'sub-item-1',
62
- },
63
- {
64
- title: 'Sub nav item 2',
65
- url: '#1',
66
- classes: 'custom-class-sub-item-2',
67
- id: 'sub-item-2',
68
- sections: [
31
+ navigation: {
32
+ id: 'main-nav',
33
+ ariaLabel: 'Main menu',
34
+ currentPath: '#1',
35
+ currentPageTitle: 'Main nav item 2',
36
+ itemsList: [
69
37
  {
70
- sectionTitle: 'Section 1',
71
- children: [
38
+ title: 'Main nav item 1',
39
+ url: '#0',
40
+ classes: 'custom-class-main-item-1',
41
+ id: 'main-item-1',
42
+ },
43
+ {
44
+ title: 'Main nav item 2',
45
+ url: '#1',
46
+ classes: 'custom-class-main-item-2',
47
+ id: 'main-item-2',
48
+ },
49
+ ],
50
+ subNavigation: {
51
+ id: 'sub-nav',
52
+ overviewURL: '#overview',
53
+ overviewText: 'Overview',
54
+ ariaLabel: 'Section menu',
55
+ currentPath: '#1',
56
+ itemsList: [
72
57
  {
73
- title: 'Child item 1',
74
- url: '#0',
58
+ title: 'Sub nav item 1',
59
+ url: '#0',
60
+ classes: 'custom-class-sub-item-1',
61
+ id: 'sub-item-1',
75
62
  },
76
63
  {
77
- title: 'Child item 2',
78
- url: '#1',
64
+ title: 'Sub nav item 2',
65
+ url: '#1',
66
+ classes: 'custom-class-sub-item-2',
67
+ id: 'sub-item-2',
68
+ sections: [
69
+ {
70
+ sectionTitle: 'Section 1',
71
+ children: [
72
+ {
73
+ title: 'Child item 1',
74
+ url: '#0',
75
+ },
76
+ {
77
+ title: 'Child item 2',
78
+ url: '#1',
79
+ },
80
+ ],
81
+ },
82
+ ],
79
83
  },
80
- ],
81
- },
82
- ],
84
+ ],
83
85
  },
84
- ],
85
86
  },
86
- },
87
87
  };
88
88
 
89
89
  const EXAMPLE_NAVIGATION_WITH_SUBNAVIGATION_REMOVED = {
90
- navigation: {
91
- id: 'main-nav',
92
- ariaLabel: 'Main menu',
93
- currentPath: '#1',
94
- currentPageTitle: 'Main nav item 2',
95
- itemsList: [
96
- {
97
- title: 'Main nav item 1',
98
- url: '#0',
99
- classes: 'custom-class-main-item-1',
100
- id: 'main-item-1',
101
- },
102
- {
103
- title: 'Main nav item 2',
104
- url: '#1',
105
- classes: 'custom-class-main-item-2',
106
- id: 'main-item-2',
107
- },
108
- ],
109
- subNavigation: {
110
- id: 'sub-nav-hidden',
111
- overviewURL: '#overview',
112
- overviewText: 'Overview',
113
- ariaLabel: 'Section menu',
114
- currentPath: '#1',
115
- removeHorizontalSubNav: true,
116
- itemsList: [
117
- {
118
- title: 'Sub nav item 1',
119
- url: '#0',
120
- classes: 'custom-class-sub-item-1',
121
- id: 'sub-item-1',
122
- },
123
- {
124
- title: 'Sub nav item 2',
125
- url: '#1',
126
- classes: 'custom-class-sub-item-2',
127
- id: 'sub-item-2',
128
- sections: [
90
+ navigation: {
91
+ id: 'main-nav',
92
+ ariaLabel: 'Main menu',
93
+ currentPath: '#1',
94
+ currentPageTitle: 'Main nav item 2',
95
+ itemsList: [
129
96
  {
130
- sectionTitle: 'Section 1',
131
- children: [
97
+ title: 'Main nav item 1',
98
+ url: '#0',
99
+ classes: 'custom-class-main-item-1',
100
+ id: 'main-item-1',
101
+ },
102
+ {
103
+ title: 'Main nav item 2',
104
+ url: '#1',
105
+ classes: 'custom-class-main-item-2',
106
+ id: 'main-item-2',
107
+ },
108
+ ],
109
+ subNavigation: {
110
+ id: 'sub-nav-hidden',
111
+ overviewURL: '#overview',
112
+ overviewText: 'Overview',
113
+ ariaLabel: 'Section menu',
114
+ currentPath: '#1',
115
+ removeHorizontalSubNav: true,
116
+ itemsList: [
132
117
  {
133
- title: 'Child item 1',
134
- url: '#0',
118
+ title: 'Sub nav item 1',
119
+ url: '#0',
120
+ classes: 'custom-class-sub-item-1',
121
+ id: 'sub-item-1',
135
122
  },
136
123
  {
137
- title: 'Child item 2',
138
- url: '#1',
124
+ title: 'Sub nav item 2',
125
+ url: '#1',
126
+ classes: 'custom-class-sub-item-2',
127
+ id: 'sub-item-2',
128
+ sections: [
129
+ {
130
+ sectionTitle: 'Section 1',
131
+ children: [
132
+ {
133
+ title: 'Child item 1',
134
+ url: '#0',
135
+ },
136
+ {
137
+ title: 'Child item 2',
138
+ url: '#1',
139
+ },
140
+ ],
141
+ },
142
+ ],
139
143
  },
140
- ],
141
- },
142
- ],
144
+ ],
143
145
  },
144
- ],
145
146
  },
146
- },
147
147
  };
148
148
 
149
149
  describe('script: navigation', () => {
150
- afterEach(async () => {
151
- // Clear viewport size and browser emulation after each test.
152
- await jestPuppeteer.resetPage();
153
- });
150
+ afterEach(async () => {
151
+ // Clear viewport size and browser emulation after each test.
152
+ await jestPuppeteer.resetPage();
153
+ });
154
154
 
155
- describe.each([
156
- ['main', EXAMPLE_NAVIGATION, '.ons-navigation--main', '.ons-js-navigation-button', false],
157
- ['sub', EXAMPLE_NAVIGATION_WITH_SUBNAVIGATION, '.ons-navigation--sub-mobile', '.ons-js-sub-navigation-button', true],
158
- ])('level: %s navigation', (_, params, navEl, buttonEl, ariaStatus) => {
159
- describe('when the component initialises', () => {
160
- beforeEach(async () => {
161
- await setTestPage('/test', renderComponent('header', params));
162
- });
155
+ describe.each([
156
+ ['main', EXAMPLE_NAVIGATION, '.ons-navigation--main', '.ons-js-navigation-button', false],
157
+ ['sub', EXAMPLE_NAVIGATION_WITH_SUBNAVIGATION, '.ons-navigation--sub-mobile', '.ons-js-sub-navigation-button', true],
158
+ ])('level: %s navigation', (_, params, navEl, buttonEl, ariaStatus) => {
159
+ describe('when the component initialises', () => {
160
+ beforeEach(async () => {
161
+ await setTestPage('/test', renderComponent('header', params));
162
+ });
163
163
 
164
- it('has removed the display class from the menu toggle button', async () => {
165
- const hasClass = await page.$eval(buttonEl, (node) => node.classList.contains('ons-u-d-no'));
166
- expect(hasClass).toBe(false);
167
- });
168
- });
164
+ it('has removed the display class from the menu toggle button', async () => {
165
+ const hasClass = await page.$eval(buttonEl, (node) => node.classList.contains('ons-u-d-no'));
166
+ expect(hasClass).toBe(false);
167
+ });
168
+ });
169
169
 
170
- describe('when the viewport is large', () => {
171
- beforeEach(async () => {
172
- await setViewport(page, { width: 1650, height: 1050 });
173
- await setTestPage('/test', renderComponent('header', params));
174
- });
170
+ describe('when the viewport is large', () => {
171
+ beforeEach(async () => {
172
+ await setViewport(page, { width: 1650, height: 1050 });
173
+ await setTestPage('/test', renderComponent('header', params));
174
+ });
175
175
 
176
- it('has the correct aria hidden attribute on the navigation list', async () => {
177
- const nav = await page.$(navEl);
178
- const hasAriaAttribute = await nav.evaluate((node) => node.getAttribute('aria-hidden') !== null);
179
- expect(hasAriaAttribute).toBe(ariaStatus);
180
- });
176
+ it('has the correct aria hidden attribute on the navigation list', async () => {
177
+ const nav = await page.$(navEl);
178
+ const hasAriaAttribute = await nav.evaluate((node) => node.getAttribute('aria-hidden') !== null);
179
+ expect(hasAriaAttribute).toBe(ariaStatus);
180
+ });
181
181
 
182
- it('has aria-expanded set as `false` on the navigation toggle button', async () => {
183
- const button = await page.$(buttonEl);
184
- const ariaExpandedIsFalse = await button.evaluate((node) => node.getAttribute('aria-expanded') === 'false');
185
- expect(ariaExpandedIsFalse).toBe(true);
186
- });
187
- });
182
+ it('has aria-expanded set as `false` on the navigation toggle button', async () => {
183
+ const button = await page.$(buttonEl);
184
+ const ariaExpandedIsFalse = await button.evaluate((node) => node.getAttribute('aria-expanded') === 'false');
185
+ expect(ariaExpandedIsFalse).toBe(true);
186
+ });
187
+ });
188
188
 
189
- describe('when the viewport is small', () => {
190
- beforeEach(async () => {
191
- await setViewport(page, { width: 600, height: 1050 });
192
- await setTestPage('/test', renderComponent('header', params));
193
- });
189
+ describe('when the viewport is small', () => {
190
+ beforeEach(async () => {
191
+ await setViewport(page, { width: 600, height: 1050 });
192
+ await setTestPage('/test', renderComponent('header', params));
193
+ });
194
194
 
195
- it('has aria-hidden set as `true` on the navigation list', async () => {
196
- const nav = await page.$(navEl);
197
- const hasAriaAttribute = await nav.evaluate((node) => node.getAttribute('aria-hidden') === 'true');
198
- expect(hasAriaAttribute).toBe(true);
199
- });
195
+ it('has aria-hidden set as `true` on the navigation list', async () => {
196
+ const nav = await page.$(navEl);
197
+ const hasAriaAttribute = await nav.evaluate((node) => node.getAttribute('aria-hidden') === 'true');
198
+ expect(hasAriaAttribute).toBe(true);
199
+ });
200
200
 
201
- describe('when the toggle button is clicked to open the navigation list', () => {
202
- beforeEach(async () => {
203
- await page.focus(buttonEl);
204
- await page.keyboard.press('Enter');
205
- });
201
+ describe('when the toggle button is clicked to open the navigation list', () => {
202
+ beforeEach(async () => {
203
+ await page.focus(buttonEl);
204
+ await page.keyboard.press('Enter');
205
+ });
206
206
 
207
- it('has aria-hidden set as `false` on the navigation list', async () => {
208
- const nav = await page.$(navEl);
209
- const hasAriaAttribute = await nav.evaluate((node) => node.getAttribute('aria-hidden') === 'false');
210
- expect(hasAriaAttribute).toBe(true);
211
- });
207
+ it('has aria-hidden set as `false` on the navigation list', async () => {
208
+ const nav = await page.$(navEl);
209
+ const hasAriaAttribute = await nav.evaluate((node) => node.getAttribute('aria-hidden') === 'false');
210
+ expect(hasAriaAttribute).toBe(true);
211
+ });
212
212
 
213
- it('has the hide class removed from the navigation list', async () => {
214
- const hasClass = await page.$eval(navEl, (node) =>
215
- node.classList.contains('ons-u-d-no@xxs@l' || 'ons-u-d-no' || 'ons-u-d-no@xs@l'),
216
- );
217
- expect(hasClass).toBe(false);
218
- });
213
+ it('has the hide class removed from the navigation list', async () => {
214
+ const hasClass = await page.$eval(navEl, (node) =>
215
+ node.classList.contains('ons-u-d-no@xxs@l' || 'ons-u-d-no' || 'ons-u-d-no@xs@l'),
216
+ );
217
+ expect(hasClass).toBe(false);
218
+ });
219
219
 
220
- it('has aria-expanded set as `true` on the navigation toggle button', async () => {
221
- const button = await page.$(buttonEl);
222
- const ariaExpandedIsTrue = await button.evaluate((node) => node.getAttribute('aria-expanded') === 'true');
223
- expect(ariaExpandedIsTrue).toBe(true);
224
- });
220
+ it('has aria-expanded set as `true` on the navigation toggle button', async () => {
221
+ const button = await page.$(buttonEl);
222
+ const ariaExpandedIsTrue = await button.evaluate((node) => node.getAttribute('aria-expanded') === 'true');
223
+ expect(ariaExpandedIsTrue).toBe(true);
224
+ });
225
225
 
226
- it('has the correct class applied to the navigation toggle button', async () => {
227
- const hasClass = await page.$eval(buttonEl, (node) => node.classList.contains('active'));
228
- expect(hasClass).toBe(true);
229
- });
230
- });
226
+ it('has the correct class applied to the navigation toggle button', async () => {
227
+ const hasClass = await page.$eval(buttonEl, (node) => node.classList.contains('active'));
228
+ expect(hasClass).toBe(true);
229
+ });
230
+ });
231
231
 
232
- describe('when the toggle button is clicked to close the navigation list', () => {
233
- beforeEach(async () => {
234
- await page.focus(buttonEl);
235
- await page.keyboard.press('Enter');
236
- await page.waitForTimeout(100);
237
- await page.keyboard.press('Enter');
238
- await page.waitForTimeout(100);
239
- });
232
+ describe('when the toggle button is clicked to close the navigation list', () => {
233
+ beforeEach(async () => {
234
+ await page.focus(buttonEl);
235
+ await page.keyboard.press('Enter');
236
+ await page.waitForTimeout(100);
237
+ await page.keyboard.press('Enter');
238
+ await page.waitForTimeout(100);
239
+ });
240
240
 
241
- it('has aria-hidden set as `true` on the navigation list', async () => {
242
- const nav = await page.$(navEl);
243
- const hasAriaAttribute = await nav.evaluate((node) => node.getAttribute('aria-hidden') === 'true');
244
- expect(hasAriaAttribute).toBe(true);
245
- });
241
+ it('has aria-hidden set as `true` on the navigation list', async () => {
242
+ const nav = await page.$(navEl);
243
+ const hasAriaAttribute = await nav.evaluate((node) => node.getAttribute('aria-hidden') === 'true');
244
+ expect(hasAriaAttribute).toBe(true);
245
+ });
246
246
 
247
- it('has aria-expanded set as `false` on the navigation toggle button', async () => {
248
- const button = await page.$(buttonEl);
249
- const ariaExpandedIsTrue = await button.evaluate((node) => node.getAttribute('aria-expanded') === 'false');
250
- expect(ariaExpandedIsTrue).toBe(true);
251
- });
247
+ it('has aria-expanded set as `false` on the navigation toggle button', async () => {
248
+ const button = await page.$(buttonEl);
249
+ const ariaExpandedIsTrue = await button.evaluate((node) => node.getAttribute('aria-expanded') === 'false');
250
+ expect(ariaExpandedIsTrue).toBe(true);
251
+ });
252
252
 
253
- it('has the active class removed from the navigation toggle button', async () => {
254
- const hasClass = await page.$eval(buttonEl, (node) => node.classList.contains('active'));
255
- expect(hasClass).toBe(false);
253
+ it('has the active class removed from the navigation toggle button', async () => {
254
+ const hasClass = await page.$eval(buttonEl, (node) => node.classList.contains('active'));
255
+ expect(hasClass).toBe(false);
256
+ });
257
+ });
256
258
  });
257
- });
258
259
  });
259
- });
260
260
 
261
- describe.each([['main', EXAMPLE_NAVIGATION, '.ons-navigation--main', '.ons-js-navigation-button']])(
262
- 'level: %s navigation',
263
- (_, params, navEl, buttonEl) => {
264
- describe('when the viewport is small and manually made wider', () => {
265
- beforeEach(async () => {
266
- await setViewport(page, { width: 600, height: 1050 });
267
- await setTestPage('/test', renderComponent('header', params));
268
- await setViewport(page, { width: 1200, height: 1050 });
269
- });
261
+ describe.each([['main', EXAMPLE_NAVIGATION, '.ons-navigation--main', '.ons-js-navigation-button']])(
262
+ 'level: %s navigation',
263
+ (_, params, navEl, buttonEl) => {
264
+ describe('when the viewport is small and manually made wider', () => {
265
+ beforeEach(async () => {
266
+ await setViewport(page, { width: 600, height: 1050 });
267
+ await setTestPage('/test', renderComponent('header', params));
268
+ await setViewport(page, { width: 1200, height: 1050 });
269
+ });
270
270
 
271
- it('has the aria-hidden attribute removed from the navigation list', async () => {
272
- const nav = await page.$(navEl);
273
- const hasAriaAttribute = await nav.evaluate((node) => node.getAttribute('aria-hidden') !== null);
274
- expect(hasAriaAttribute).toBe(false);
275
- });
271
+ it('has the aria-hidden attribute removed from the navigation list', async () => {
272
+ const nav = await page.$(navEl);
273
+ const hasAriaAttribute = await nav.evaluate((node) => node.getAttribute('aria-hidden') !== null);
274
+ expect(hasAriaAttribute).toBe(false);
275
+ });
276
276
 
277
- it('has aria-expanded removed from the navigation toggle button', async () => {
278
- const button = await page.$(buttonEl);
279
- const hasAriaExpanded = await button.evaluate((node) => node.getAttribute('aria-expanded') !== null);
280
- expect(hasAriaExpanded).toBe(false);
281
- });
277
+ it('has aria-expanded removed from the navigation toggle button', async () => {
278
+ const button = await page.$(buttonEl);
279
+ const hasAriaExpanded = await button.evaluate((node) => node.getAttribute('aria-expanded') !== null);
280
+ expect(hasAriaExpanded).toBe(false);
281
+ });
282
282
 
283
- it('has the hide class removed from the navigation list', async () => {
284
- const hasClass = await page.$eval(navEl, (node) =>
285
- node.classList.contains('ons-u-d-no@xxs@l' || 'ons-u-d-no' || 'ons-u-d-no@xs@l'),
286
- );
287
- expect(hasClass).toBe(false);
288
- });
289
- });
290
- },
291
- );
283
+ it('has the hide class removed from the navigation list', async () => {
284
+ const hasClass = await page.$eval(navEl, (node) =>
285
+ node.classList.contains('ons-u-d-no@xxs@l' || 'ons-u-d-no' || 'ons-u-d-no@xs@l'),
286
+ );
287
+ expect(hasClass).toBe(false);
288
+ });
289
+ });
290
+ },
291
+ );
292
292
  });
293
293
 
294
294
  describe('level: sub navigation', () => {
295
- describe('when removeHorizontalSubNav is set to true', () => {
296
- beforeEach(async () => {
297
- await setTestPage('/test', renderComponent('header', EXAMPLE_NAVIGATION_WITH_SUBNAVIGATION_REMOVED));
298
- });
295
+ describe('when removeHorizontalSubNav is set to true', () => {
296
+ beforeEach(async () => {
297
+ await setTestPage('/test', renderComponent('header', EXAMPLE_NAVIGATION_WITH_SUBNAVIGATION_REMOVED));
298
+ });
299
299
 
300
- it('does not render the sub-nav element', async () => {
301
- const hasSubNavEl = (await page.content()).includes('.ons-navigation--sub');
302
- expect(hasSubNavEl).toBe(false);
300
+ it('does not render the sub-nav element', async () => {
301
+ const hasSubNavEl = (await page.content()).includes('.ons-navigation--sub');
302
+ expect(hasSubNavEl).toBe(false);
303
+ });
303
304
  });
304
- });
305
305
  });