@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
@@ -1,21 +1,21 @@
1
1
  {%- macro onsMessage(params) -%}
2
2
  <div class="ons-message ons-message--{{ params.variant }}">
3
3
  <div class="ons-message__head">
4
- <dl class="ons-message__metadata" {% if params.id %} id="{{ params.id }}"{% endif %}>
4
+ <dl class="ons-message__metadata"{% if params.id %} id="{{ params.id }}"{% endif %}>
5
5
  <div class="ons-message__sender">
6
6
  <dt class="ons-message__term ons-u-fw-b">{{ params.fromLabel }}:</dt>
7
- <dd class="ons-message__value ons-u-fw-b" {% if params.fromId %} id="{{ params.fromId }}"{% endif %} {% if params.fromName %} name="{{ params.fromName }}"{% endif %}>{{ params.fromValue }}</dd>
7
+ <dd class="ons-message__value ons-u-fw-b"{% if params.fromId %} id="{{ params.fromId }}"{% endif %}{% if params.fromName %} name="{{ params.fromName }}"{% endif %}>{{ params.fromValue }}</dd>
8
8
  </div>
9
9
  <div class="ons-message__timestamp">
10
10
  <dt class="ons-message__term ons-u-fs-s">{{ params.sentLabel }}:</dt>
11
- <dd class="ons-message__value ons-u-fs-s" {% if params.sentId %} id="{{ params.sentId }}"{% endif %} {% if params.sentName %} name="{{ params.sentName }}"{% endif %}>{{ params.sentValue }}</dd>
11
+ <dd class="ons-message__value ons-u-fs-s"{% if params.sentId %} id="{{ params.sentId }}"{% endif %}{% if params.sentName %} name="{{ params.sentName }}"{% endif %}>{{ params.sentValue }}</dd>
12
12
  </div>
13
13
  </dl>
14
14
  {% if params.unreadLink %}
15
- <a class="ons-message__unread-link" {% if params.unreadLinkId %}id="{{ params.unreadLinkId }}"{% endif %} href="{{ params.unreadLink }}">{{ params.unreadLinkText }}</a>
15
+ <a class="ons-message__unread-link"{% if params.unreadLinkId %} id="{{ params.unreadLinkId }}"{% endif %} href="{{ params.unreadLink }}">{{ params.unreadLinkText }}</a>
16
16
  {% endif %}
17
17
  </div>
18
- <div class="ons-message__body" {% if params.messageID %} id="{{ params.messageID }}"{% endif %}>
18
+ <div class="ons-message__body"{% if params.messageID %} id="{{ params.messageID }}"{% endif %}>
19
19
  {{ caller() }}
20
20
  </div>
21
21
  </div>
@@ -6,107 +6,107 @@ import axe from '../../tests/helpers/axe';
6
6
  import { renderComponent } from '../../tests/helpers/rendering';
7
7
 
8
8
  const EXAMPLE_MESSAGE_MINIMAL = {
9
- variant: 'sent',
10
- fromLabel: 'From',
11
- fromValue: 'Example Sender',
12
- sentLabel: 'Date sent',
13
- sentValue: 'Tue 4 Jul 2020 at 7:47',
9
+ variant: 'sent',
10
+ fromLabel: 'From',
11
+ fromValue: 'Example Sender',
12
+ sentLabel: 'Date sent',
13
+ sentValue: 'Tue 4 Jul 2020 at 7:47',
14
14
  };
15
15
 
16
16
  const EXAMPLE_MESSAGE = {
17
- ...EXAMPLE_MESSAGE_MINIMAL,
18
- unreadLink: 'https://example.com/message/1',
19
- unreadLinkText: 'Unread message',
20
- id: 'message1',
21
- fromId: 'from1',
22
- sentId: 'sent1',
23
- unreadLinkId: 'unreadLink1',
24
- messageID: 'messageBody1',
17
+ ...EXAMPLE_MESSAGE_MINIMAL,
18
+ unreadLink: 'https://example.com/message/1',
19
+ unreadLinkText: 'Unread message',
20
+ id: 'message1',
21
+ fromId: 'from1',
22
+ sentId: 'sent1',
23
+ unreadLinkId: 'unreadLink1',
24
+ messageID: 'messageBody1',
25
25
  };
26
26
 
27
27
  describe('macro: message', () => {
28
- it('passes jest-axe checks when all parameters are provided', async () => {
29
- const $ = cheerio.load(renderComponent('message', EXAMPLE_MESSAGE, ['Message content...']));
28
+ it('passes jest-axe checks when all parameters are provided', async () => {
29
+ const $ = cheerio.load(renderComponent('message', EXAMPLE_MESSAGE, ['Message content...']));
30
30
 
31
- const results = await axe($.html());
32
- expect(results).toHaveNoViolations();
33
- });
31
+ const results = await axe($.html());
32
+ expect(results).toHaveNoViolations();
33
+ });
34
34
 
35
- it.each([
36
- ['sent', 'ons-message--sent'],
37
- ['received', 'ons-message--received'],
38
- ])('has appropriate class for provided `variant` (%s -> %s)', (variant, expectedClass) => {
39
- const $ = cheerio.load(
40
- renderComponent(
41
- 'message',
42
- {
43
- ...EXAMPLE_MESSAGE_MINIMAL,
44
- variant,
45
- },
46
- ['Message content...'],
47
- ),
48
- );
35
+ it.each([
36
+ ['sent', 'ons-message--sent'],
37
+ ['received', 'ons-message--received'],
38
+ ])('has appropriate class for provided `variant` (%s -> %s)', (variant, expectedClass) => {
39
+ const $ = cheerio.load(
40
+ renderComponent(
41
+ 'message',
42
+ {
43
+ ...EXAMPLE_MESSAGE_MINIMAL,
44
+ variant,
45
+ },
46
+ ['Message content...'],
47
+ ),
48
+ );
49
49
 
50
- expect($('.ons-message').hasClass(expectedClass)).toBe(true);
51
- });
50
+ expect($('.ons-message').hasClass(expectedClass)).toBe(true);
51
+ });
52
52
 
53
- it('has `id` attribute on `.ons-message__metadata` using the provided value', () => {
54
- const $ = cheerio.load(renderComponent('message', EXAMPLE_MESSAGE, ['Message content...']));
53
+ it('has `id` attribute on `.ons-message__metadata` using the provided value', () => {
54
+ const $ = cheerio.load(renderComponent('message', EXAMPLE_MESSAGE, ['Message content...']));
55
55
 
56
- expect($('.ons-message__metadata').attr('id')).toBe('message1');
57
- });
56
+ expect($('.ons-message__metadata').attr('id')).toBe('message1');
57
+ });
58
58
 
59
- it('has the provided `fromLabel`', () => {
60
- const $ = cheerio.load(renderComponent('message', EXAMPLE_MESSAGE_MINIMAL, ['Message content...']));
59
+ it('has the provided `fromLabel`', () => {
60
+ const $ = cheerio.load(renderComponent('message', EXAMPLE_MESSAGE_MINIMAL, ['Message content...']));
61
61
 
62
- expect($('.ons-message__sender .ons-message__term').text().trim()).toBe('From:');
63
- });
62
+ expect($('.ons-message__sender .ons-message__term').text().trim()).toBe('From:');
63
+ });
64
64
 
65
- it('has the provided `fromValue`', () => {
66
- const $ = cheerio.load(renderComponent('message', EXAMPLE_MESSAGE_MINIMAL, ['Message content...']));
65
+ it('has the provided `fromValue`', () => {
66
+ const $ = cheerio.load(renderComponent('message', EXAMPLE_MESSAGE_MINIMAL, ['Message content...']));
67
67
 
68
- expect($('.ons-message__sender .ons-message__value').text().trim()).toBe('Example Sender');
69
- });
68
+ expect($('.ons-message__sender .ons-message__value').text().trim()).toBe('Example Sender');
69
+ });
70
70
 
71
- it('has the provided `fromId`', () => {
72
- const $ = cheerio.load(renderComponent('message', EXAMPLE_MESSAGE, ['Message content...']));
71
+ it('has the provided `fromId`', () => {
72
+ const $ = cheerio.load(renderComponent('message', EXAMPLE_MESSAGE, ['Message content...']));
73
73
 
74
- expect($('.ons-message__sender .ons-message__value').attr('id')).toBe('from1');
75
- });
74
+ expect($('.ons-message__sender .ons-message__value').attr('id')).toBe('from1');
75
+ });
76
76
 
77
- it('has the provided `sentLabel`', () => {
78
- const $ = cheerio.load(renderComponent('message', EXAMPLE_MESSAGE_MINIMAL, ['Message content...']));
77
+ it('has the provided `sentLabel`', () => {
78
+ const $ = cheerio.load(renderComponent('message', EXAMPLE_MESSAGE_MINIMAL, ['Message content...']));
79
79
 
80
- expect($('.ons-message__timestamp .ons-message__term').text().trim()).toBe('Date sent:');
81
- });
80
+ expect($('.ons-message__timestamp .ons-message__term').text().trim()).toBe('Date sent:');
81
+ });
82
82
 
83
- it('has the provided `sentValue`', () => {
84
- const $ = cheerio.load(renderComponent('message', EXAMPLE_MESSAGE_MINIMAL, ['Message content...']));
83
+ it('has the provided `sentValue`', () => {
84
+ const $ = cheerio.load(renderComponent('message', EXAMPLE_MESSAGE_MINIMAL, ['Message content...']));
85
85
 
86
- expect($('.ons-message__timestamp .ons-message__value').text().trim()).toBe('Tue 4 Jul 2020 at 7:47');
87
- });
86
+ expect($('.ons-message__timestamp .ons-message__value').text().trim()).toBe('Tue 4 Jul 2020 at 7:47');
87
+ });
88
88
 
89
- it('has the provided `sentId`', () => {
90
- const $ = cheerio.load(renderComponent('message', EXAMPLE_MESSAGE, ['Message content...']));
89
+ it('has the provided `sentId`', () => {
90
+ const $ = cheerio.load(renderComponent('message', EXAMPLE_MESSAGE, ['Message content...']));
91
91
 
92
- expect($('.ons-message__timestamp .ons-message__value').attr('id')).toBe('sent1');
93
- });
92
+ expect($('.ons-message__timestamp .ons-message__value').attr('id')).toBe('sent1');
93
+ });
94
94
 
95
- it('has the provided `unreadLink`', () => {
96
- const $ = cheerio.load(renderComponent('message', EXAMPLE_MESSAGE, ['Message content...']));
95
+ it('has the provided `unreadLink`', () => {
96
+ const $ = cheerio.load(renderComponent('message', EXAMPLE_MESSAGE, ['Message content...']));
97
97
 
98
- expect($('.ons-message__unread-link').attr('href')).toBe('https://example.com/message/1');
99
- });
98
+ expect($('.ons-message__unread-link').attr('href')).toBe('https://example.com/message/1');
99
+ });
100
100
 
101
- it('has the provided `unreadLinkText`', () => {
102
- const $ = cheerio.load(renderComponent('message', EXAMPLE_MESSAGE, ['Message content...']));
101
+ it('has the provided `unreadLinkText`', () => {
102
+ const $ = cheerio.load(renderComponent('message', EXAMPLE_MESSAGE, ['Message content...']));
103
103
 
104
- expect($('.ons-message__unread-link').text().trim()).toBe('Unread message');
105
- });
104
+ expect($('.ons-message__unread-link').text().trim()).toBe('Unread message');
105
+ });
106
106
 
107
- it('has the message content', () => {
108
- const $ = cheerio.load(renderComponent('message', EXAMPLE_MESSAGE_MINIMAL, ['Message content...']));
107
+ it('has the message content', () => {
108
+ const $ = cheerio.load(renderComponent('message', EXAMPLE_MESSAGE_MINIMAL, ['Message content...']));
109
109
 
110
- expect($('.ons-message__body').text().trim()).toBe('Message content...');
111
- });
110
+ expect($('.ons-message__body').text().trim()).toBe('Message content...');
111
+ });
112
112
  });
@@ -1,55 +1,55 @@
1
1
  @use 'sass:math';
2
2
 
3
3
  .ons-message {
4
- border-radius: math.div($grid-gutters, 2);
5
- margin-bottom: 2rem;
6
- outline: 1px solid transparent; // Add transparent outline because Windows High Contrast Mode doesn't show background
4
+ border-radius: math.div($grid-gutters, 2);
5
+ margin-bottom: 2rem;
6
+ outline: 1px solid transparent; // Add transparent outline because Windows High Contrast Mode doesn't show background
7
7
 
8
- &--sent {
9
- background: var(--ons-color-info-tint);
8
+ &--sent {
9
+ background: var(--ons-color-info-tint);
10
10
 
11
- @include mq(m) {
12
- margin-left: 4rem;
11
+ @include mq(m) {
12
+ margin-left: 4rem;
13
+ }
13
14
  }
14
- }
15
15
 
16
- &--received {
17
- background: var(--ons-color-success-tint);
16
+ &--received {
17
+ background: var(--ons-color-success-tint);
18
18
 
19
- @include mq(m) {
20
- margin-right: 4rem;
19
+ @include mq(m) {
20
+ margin-right: 4rem;
21
+ }
21
22
  }
22
- }
23
23
 
24
- &__head {
25
- border-bottom: 1px solid var(--ons-color-borders);
26
- padding: $grid-gutters;
27
- position: relative;
28
- }
24
+ &__head {
25
+ border-bottom: 1px solid var(--ons-color-borders);
26
+ padding: $grid-gutters;
27
+ position: relative;
28
+ }
29
29
 
30
- &__metadata {
31
- margin: 0;
30
+ &__metadata {
31
+ margin: 0;
32
32
 
33
- @include mq(m) {
34
- width: 65%;
33
+ @include mq(m) {
34
+ width: 65%;
35
+ }
35
36
  }
36
- }
37
-
38
- &__term,
39
- &__value {
40
- display: inline-block;
41
- margin: 0;
42
- }
43
-
44
- &__unread-link {
45
- @include mq(m) {
46
- position: absolute;
47
- right: 1rem;
48
- top: 1rem;
37
+
38
+ &__term,
39
+ &__value {
40
+ display: inline-block;
41
+ margin: 0;
49
42
  }
50
- }
51
43
 
52
- &__body {
53
- padding: $grid-gutters;
54
- }
44
+ &__unread-link {
45
+ @include mq(m) {
46
+ position: absolute;
47
+ right: 1rem;
48
+ top: 1rem;
49
+ }
50
+ }
51
+
52
+ &__body {
53
+ padding: $grid-gutters;
54
+ }
55
55
  }
@@ -6,122 +6,122 @@ import axe from '../../tests/helpers/axe';
6
6
  import { renderComponent } from '../../tests/helpers/rendering';
7
7
 
8
8
  const EXAMPLE_MESSAGE_LIST_MINIMAL = {
9
- unreadText: 'New',
10
- fromLabel: 'From',
11
- dateLabel: 'Date',
12
- hiddenReadLabel: 'Read the message',
13
- messages: [
14
- {
15
- id: 'message1',
16
- unread: true,
17
- url: 'https://example.com/message/1',
18
- subject: 'Example message subject',
19
- fromText: 'Example Sender 1',
20
- dateText: 'Tue 4 Jul 2020 at 7:47',
21
- body: 'An example message.',
22
- },
23
- {
24
- id: 'message2',
25
- url: 'https://example.com/message/2',
26
- subject: 'Another example message subject',
27
- fromText: 'Example Sender 2',
28
- dateText: 'Mon 1 Oct 2019 at 9:52',
29
- body: 'Another example message.',
30
- },
31
- ],
9
+ unreadText: 'New',
10
+ fromLabel: 'From',
11
+ dateLabel: 'Date',
12
+ hiddenReadLabel: 'Read the message',
13
+ messages: [
14
+ {
15
+ id: 'message1',
16
+ unread: true,
17
+ url: 'https://example.com/message/1',
18
+ subject: 'Example message subject',
19
+ fromText: 'Example Sender 1',
20
+ dateText: 'Tue 4 Jul 2020 at 7:47',
21
+ body: 'An example message.',
22
+ },
23
+ {
24
+ id: 'message2',
25
+ url: 'https://example.com/message/2',
26
+ subject: 'Another example message subject',
27
+ fromText: 'Example Sender 2',
28
+ dateText: 'Mon 1 Oct 2019 at 9:52',
29
+ body: 'Another example message.',
30
+ },
31
+ ],
32
32
  };
33
33
 
34
34
  const EXAMPLE_MESSAGE_LIST = {
35
- ...EXAMPLE_MESSAGE_LIST_MINIMAL,
36
- ariaLabel: 'Message list for ONS Business Surveys',
37
- ariaLabelMetaData: 'Message information',
38
- ariaLabelMsg: 'Message preview',
35
+ ...EXAMPLE_MESSAGE_LIST_MINIMAL,
36
+ ariaLabel: 'Message list for ONS Business Surveys',
37
+ ariaLabelMetaData: 'Message information',
38
+ ariaLabelMsg: 'Message preview',
39
39
  };
40
40
 
41
41
  describe('macro: message-list', () => {
42
- it('passes jest-axe checks when all parameters are provided', async () => {
43
- const $ = cheerio.load(renderComponent('message-list', EXAMPLE_MESSAGE_LIST));
42
+ it('passes jest-axe checks when all parameters are provided', async () => {
43
+ const $ = cheerio.load(renderComponent('message-list', EXAMPLE_MESSAGE_LIST));
44
44
 
45
- const results = await axe($.html());
46
- expect(results).toHaveNoViolations();
47
- });
45
+ const results = await axe($.html());
46
+ expect(results).toHaveNoViolations();
47
+ });
48
48
 
49
- it('has `aria-label` attribute on `.ons-message-list` with the correct default value', () => {
50
- const $ = cheerio.load(renderComponent('message-list', EXAMPLE_MESSAGE_LIST_MINIMAL));
49
+ it('has `aria-label` attribute on `.ons-message-list` with the correct default value', () => {
50
+ const $ = cheerio.load(renderComponent('message-list', EXAMPLE_MESSAGE_LIST_MINIMAL));
51
51
 
52
- expect($('.ons-message-list').attr('aria-label')).toBe('Message List');
53
- });
52
+ expect($('.ons-message-list').attr('aria-label')).toBe('Message List');
53
+ });
54
54
 
55
- it('has `aria-label` attribute on `.ons-message-list` using the provided value', () => {
56
- const $ = cheerio.load(renderComponent('message-list', EXAMPLE_MESSAGE_LIST));
55
+ it('has `aria-label` attribute on `.ons-message-list` using the provided value', () => {
56
+ const $ = cheerio.load(renderComponent('message-list', EXAMPLE_MESSAGE_LIST));
57
57
 
58
- expect($('.ons-message-list').attr('aria-label')).toBe('Message list for ONS Business Surveys');
59
- });
58
+ expect($('.ons-message-list').attr('aria-label')).toBe('Message list for ONS Business Surveys');
59
+ });
60
60
 
61
- it('has `aria-label` attribute on `.ons-message-item__metadata` with the correct default value', () => {
62
- const $ = cheerio.load(renderComponent('message-list', EXAMPLE_MESSAGE_LIST_MINIMAL));
61
+ it('has `aria-label` attribute on `.ons-message-item__metadata` with the correct default value', () => {
62
+ const $ = cheerio.load(renderComponent('message-list', EXAMPLE_MESSAGE_LIST_MINIMAL));
63
63
 
64
- expect($('.ons-message-item__metadata:first').attr('aria-label')).toBe('Message metadata');
65
- });
64
+ expect($('.ons-message-item__metadata:first').attr('aria-label')).toBe('Message metadata');
65
+ });
66
66
 
67
- it('has `aria-label` attribute on `.ons-message-item__metadata` using the provided value', () => {
68
- const $ = cheerio.load(renderComponent('message-list', EXAMPLE_MESSAGE_LIST));
67
+ it('has `aria-label` attribute on `.ons-message-item__metadata` using the provided value', () => {
68
+ const $ = cheerio.load(renderComponent('message-list', EXAMPLE_MESSAGE_LIST));
69
69
 
70
- expect($('.ons-message-item__metadata:first').attr('aria-label')).toBe('Message information');
71
- });
70
+ expect($('.ons-message-item__metadata:first').attr('aria-label')).toBe('Message information');
71
+ });
72
72
 
73
- it('has `aria-label` attribute on `.ons-message-item__body` with the correct default value', () => {
74
- const $ = cheerio.load(renderComponent('message-list', EXAMPLE_MESSAGE_LIST_MINIMAL));
73
+ it('has `aria-label` attribute on `.ons-message-item__body` with the correct default value', () => {
74
+ const $ = cheerio.load(renderComponent('message-list', EXAMPLE_MESSAGE_LIST_MINIMAL));
75
75
 
76
- expect($('.ons-message-item__body:first').attr('aria-label')).toBe('Message text');
77
- });
76
+ expect($('.ons-message-item__body:first').attr('aria-label')).toBe('Message text');
77
+ });
78
78
 
79
- it('has `aria-label` attribute on `.ons-message-item__body` using the provided value', () => {
80
- const $ = cheerio.load(renderComponent('message-list', EXAMPLE_MESSAGE_LIST));
79
+ it('has `aria-label` attribute on `.ons-message-item__body` using the provided value', () => {
80
+ const $ = cheerio.load(renderComponent('message-list', EXAMPLE_MESSAGE_LIST));
81
81
 
82
- expect($('.ons-message-item__body:first').attr('aria-label')).toBe('Message preview');
83
- });
82
+ expect($('.ons-message-item__body:first').attr('aria-label')).toBe('Message preview');
83
+ });
84
84
 
85
- it('has `unreadText` for unread messages', () => {
86
- const $ = cheerio.load(renderComponent('message-list', EXAMPLE_MESSAGE_LIST));
85
+ it('has `unreadText` for unread messages', () => {
86
+ const $ = cheerio.load(renderComponent('message-list', EXAMPLE_MESSAGE_LIST));
87
87
 
88
- expect($('#message1 .ons-message-item__unread').text().trim()).toBe('(New)');
89
- });
88
+ expect($('#message1 .ons-message-item__unread').text().trim()).toBe('(New)');
89
+ });
90
90
 
91
- it('has visually hidden label `fromLabel`', () => {
92
- const $ = cheerio.load(renderComponent('message-list', EXAMPLE_MESSAGE_LIST_MINIMAL));
91
+ it('has visually hidden label `fromLabel`', () => {
92
+ const $ = cheerio.load(renderComponent('message-list', EXAMPLE_MESSAGE_LIST_MINIMAL));
93
93
 
94
- expect($('.ons-message-item__metadata-term--from:first').text().trim()).toBe('From:');
95
- });
94
+ expect($('.ons-message-item__metadata-term--from:first').text().trim()).toBe('From:');
95
+ });
96
96
 
97
- it('has visually hidden label `dateLabel`', () => {
98
- const $ = cheerio.load(renderComponent('message-list', EXAMPLE_MESSAGE_LIST_MINIMAL));
97
+ it('has visually hidden label `dateLabel`', () => {
98
+ const $ = cheerio.load(renderComponent('message-list', EXAMPLE_MESSAGE_LIST_MINIMAL));
99
99
 
100
- expect($('.ons-message-item__metadata-term--date:first').text().trim()).toBe('Date:');
101
- });
100
+ expect($('.ons-message-item__metadata-term--date:first').text().trim()).toBe('Date:');
101
+ });
102
102
 
103
- it('has visually hidden label `hiddenReadLabel`', () => {
104
- const $ = cheerio.load(renderComponent('message-list', EXAMPLE_MESSAGE_LIST_MINIMAL));
103
+ it('has visually hidden label `hiddenReadLabel`', () => {
104
+ const $ = cheerio.load(renderComponent('message-list', EXAMPLE_MESSAGE_LIST_MINIMAL));
105
105
 
106
- expect($('.ons-message-item__link:first').text()).toContain('Read the message: ');
107
- });
106
+ expect($('.ons-message-item__link:first').text()).toContain('Read the message: ');
107
+ });
108
108
 
109
- it('has message as expected', () => {
110
- const $ = cheerio.load(renderComponent('message-list', EXAMPLE_MESSAGE_LIST_MINIMAL));
109
+ it('has message as expected', () => {
110
+ const $ = cheerio.load(renderComponent('message-list', EXAMPLE_MESSAGE_LIST_MINIMAL));
111
111
 
112
- const $message2 = $('.ons-message-item:nth-child(2)');
112
+ const $message2 = $('.ons-message-item:nth-child(2)');
113
113
 
114
- expect($message2.find('.ons-message-item__subject').text().trim()).toBe('Another example message subject');
115
- expect($message2.find('.ons-message-item__subject').attr('id')).toBe('message2');
116
- expect($message2.find('.ons-message-item__metadata-value--from').text().trim()).toBe('Example Sender 2');
117
- expect($message2.find('.ons-message-item__metadata-value--date').text().trim()).toBe('Mon 1 Oct 2019 at 9:52');
118
- expect($message2.find('.ons-message-item__body').text().trim()).toBe('Another example message.');
119
- expect($message2.find('.ons-message-item__link a').attr('href')).toBe('https://example.com/message/2');
120
- });
114
+ expect($message2.find('.ons-message-item__subject').text().trim()).toBe('Another example message subject');
115
+ expect($message2.find('.ons-message-item__subject').attr('id')).toBe('message2');
116
+ expect($message2.find('.ons-message-item__metadata-value--from').text().trim()).toBe('Example Sender 2');
117
+ expect($message2.find('.ons-message-item__metadata-value--date').text().trim()).toBe('Mon 1 Oct 2019 at 9:52');
118
+ expect($message2.find('.ons-message-item__body').text().trim()).toBe('Another example message.');
119
+ expect($message2.find('.ons-message-item__link a').attr('href')).toBe('https://example.com/message/2');
120
+ });
121
121
 
122
- it('has `aria-labelledby` attribute on message', () => {
123
- const $ = cheerio.load(renderComponent('message-list', EXAMPLE_MESSAGE_LIST_MINIMAL));
122
+ it('has `aria-labelledby` attribute on message', () => {
123
+ const $ = cheerio.load(renderComponent('message-list', EXAMPLE_MESSAGE_LIST_MINIMAL));
124
124
 
125
- expect($('.ons-message-item:first').attr('aria-labelledby')).toBe('message1');
126
- });
125
+ expect($('.ons-message-item:first').attr('aria-labelledby')).toBe('message1');
126
+ });
127
127
  });
@@ -1,26 +1,26 @@
1
1
  .ons-message-list {
2
- padding-left: 0;
2
+ padding-left: 0;
3
3
  }
4
4
 
5
5
  .ons-message-item {
6
- list-style: none;
7
- margin-bottom: 2rem;
8
- padding-bottom: 1.5rem;
6
+ list-style: none;
7
+ margin-bottom: 2rem;
8
+ padding-bottom: 1.5rem;
9
9
 
10
- &:not(:last-child) {
11
- border-bottom: 1px solid var(--ons-color-borders);
12
- }
10
+ &:not(:last-child) {
11
+ border-bottom: 1px solid var(--ons-color-borders);
12
+ }
13
13
 
14
- &__subject {
15
- margin: 0 0 0.2rem;
16
- }
14
+ &__subject {
15
+ margin: 0 0 0.2rem;
16
+ }
17
17
 
18
- &__metadata {
19
- margin: 0 0 1rem;
18
+ &__metadata {
19
+ margin: 0 0 1rem;
20
20
 
21
- &-term,
22
- &-value {
23
- margin: 0 0 0.3rem;
21
+ &-term,
22
+ &-value {
23
+ margin: 0 0 0.3rem;
24
+ }
24
25
  }
25
- }
26
26
  }