@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.
- package/README.md +11 -17
- package/components/access-code/_macro.spec.js +145 -145
- package/components/access-code/access-code.dom.js +5 -5
- package/components/access-code/access-code.js +16 -16
- package/components/access-code/access-code.scss +22 -22
- package/components/access-code/access-code.spec.js +17 -17
- package/components/accordion/_macro.spec.js +154 -154
- package/components/accordion/accordion.dom.js +10 -10
- package/components/accordion/accordion.js +50 -50
- package/components/accordion/accordion.spec.js +104 -104
- package/components/address-input/_macro.spec.js +420 -420
- package/components/address-input/autosuggest.address.dom.js +5 -5
- package/components/address-input/autosuggest.address.error.js +77 -77
- package/components/address-input/autosuggest.address.js +357 -357
- package/components/address-input/autosuggest.address.setter.js +95 -95
- package/components/address-input/autosuggest.address.spec.js +668 -651
- package/components/address-input/example-address-input-editable.njk +1 -1
- package/components/address-input/example-address-input.njk +1 -1
- package/components/address-output/_address-output.scss +3 -3
- package/components/address-output/_macro.spec.js +84 -84
- package/components/autosuggest/_autosuggest.scss +114 -114
- package/components/autosuggest/_macro.spec.js +255 -255
- package/components/autosuggest/autosuggest.dom.js +5 -5
- package/components/autosuggest/autosuggest.helpers.js +11 -11
- package/components/autosuggest/autosuggest.helpers.spec.js +73 -73
- package/components/autosuggest/autosuggest.js +20 -20
- package/components/autosuggest/autosuggest.spec.js +542 -536
- package/components/autosuggest/autosuggest.ui.js +478 -475
- package/components/autosuggest/fuse-config.js +17 -17
- package/components/back-to-top/_back-to-top.scss +27 -27
- package/components/back-to-top/_macro.spec.js +49 -49
- package/components/back-to-top/back-to-top.dom.js +5 -5
- package/components/back-to-top/back-to-top.js +52 -52
- package/components/back-to-top/back-to-top.spec.js +106 -106
- package/components/back-to-top/example-back-to-top.njk +6 -6
- package/components/breadcrumbs/_breadcrumbs.scss +63 -65
- package/components/breadcrumbs/_macro.spec.js +91 -91
- package/components/browser-banner/_browser-banner.scss +23 -23
- package/components/browser-banner/_macro.spec.js +92 -92
- package/components/button/_button.scss +482 -483
- package/components/button/_macro.spec.js +363 -363
- package/components/button/button.dom.js +15 -15
- package/components/button/button.js +53 -53
- package/components/button/button.spec.js +248 -240
- package/components/call-to-action/_call-to-action.scss +5 -5
- package/components/call-to-action/_macro.spec.js +28 -28
- package/components/card/_card.scss +23 -23
- package/components/card/_macro.spec.js +180 -180
- package/components/char-check-limit/_macro.spec.js +48 -48
- package/components/char-check-limit/character-check.js +58 -58
- package/components/char-check-limit/character-check.spec.js +173 -173
- package/components/char-check-limit/character-limit.js +40 -40
- package/components/checkboxes/_checkbox-macro.spec.js +355 -355
- package/components/checkboxes/_checkbox.scss +180 -180
- package/components/checkboxes/_checkboxes.scss +37 -27
- package/components/checkboxes/_macro.spec.js +261 -261
- package/components/checkboxes/checkbox-with-autoselect.js +32 -32
- package/components/checkboxes/checkbox-with-fieldset.js +21 -21
- package/components/checkboxes/checkboxes-with-reveal.js +10 -10
- package/components/checkboxes/checkboxes.dom.js +27 -27
- package/components/checkboxes/checkboxes.spec.js +183 -183
- package/components/content-pagination/_content-pagination.scss +41 -41
- package/components/content-pagination/_macro.spec.js +159 -159
- package/components/cookies-banner/_cookies-banner.scss +22 -22
- package/components/cookies-banner/_macro.spec.js +177 -177
- package/components/cookies-banner/cookies-banner.dom.js +7 -7
- package/components/cookies-banner/cookies-banner.js +76 -76
- package/components/cookies-banner/cookies-banner.spec.js +72 -68
- package/components/date-input/_macro.spec.js +338 -338
- package/components/description-list/_description-list.scss +23 -23
- package/components/description-list/_macro.spec.js +144 -144
- package/components/details/_details.scss +109 -109
- package/components/details/_macro.spec.js +132 -132
- package/components/details/details.dom.js +6 -6
- package/components/details/details.js +60 -60
- package/components/details/details.spec.js +106 -106
- package/components/document-list/_macro.spec.js +444 -444
- package/components/document-list/document-list.scss +145 -149
- package/components/download-resources/_download-resources.scss +109 -108
- package/components/download-resources/download-resources.js +907 -900
- package/components/download-resources/download-resources.spec.js +461 -461
- package/components/duration/_macro.spec.js +291 -291
- package/components/error/_macro.spec.js +72 -72
- package/components/external-link/_external-link.scss +19 -19
- package/components/external-link/_macro.spec.js +68 -68
- package/components/feedback/_feedback.scss +31 -31
- package/components/feedback/_macro.spec.js +72 -72
- package/components/field/_field-group.scss +10 -10
- package/components/field/_field.scss +16 -16
- package/components/field/_macro.spec.js +80 -80
- package/components/fieldset/_fieldset.scss +27 -27
- package/components/fieldset/_macro.spec.js +161 -161
- package/components/footer/_footer.scss +45 -45
- package/components/footer/_macro.spec.js +452 -452
- package/components/header/_header.scss +202 -202
- package/components/header/_macro.spec.js +833 -829
- package/components/helpers/_grid.scss +4 -4
- package/components/hero/_hero.scss +48 -48
- package/components/hero/_macro.spec.js +59 -59
- package/components/icon/_icon.scss +44 -44
- package/components/icon/_macro.spec.js +110 -110
- package/components/image/_image.scss +11 -11
- package/components/image/_macro.spec.js +81 -81
- package/components/input/_input-type.scss +86 -89
- package/components/input/_input.scss +123 -124
- package/components/input/_macro.spec.js +604 -604
- package/components/input/character-check.dom.js +5 -5
- package/components/input/input.dom.js +5 -5
- package/components/input/input.js +10 -10
- package/components/input/input.spec.js +18 -18
- package/components/label/_label.scss +24 -24
- package/components/label/_macro.spec.js +173 -170
- package/components/language-selector/_macro.spec.js +97 -97
- package/components/language-selector/language.scss +7 -7
- package/components/list/_list.scss +84 -84
- package/components/list/_macro.njk +2 -2
- package/components/list/_macro.spec.js +583 -583
- package/components/message/_macro.njk +5 -5
- package/components/message/_macro.spec.js +74 -74
- package/components/message/_message.scss +39 -39
- package/components/message-list/_macro.spec.js +86 -86
- package/components/message-list/_message-list.scss +16 -16
- package/components/modal/_macro.spec.js +69 -69
- package/components/modal/_modal.scss +36 -36
- package/components/modal/modal.dom.js +6 -6
- package/components/modal/modal.js +89 -89
- package/components/modal/modal.spec.js +50 -50
- package/components/mutually-exclusive/_macro.spec.js +140 -140
- package/components/mutually-exclusive/mutually-exclusive.checkboxes.spec.js +188 -188
- package/components/mutually-exclusive/mutually-exclusive.date.spec.js +211 -211
- package/components/mutually-exclusive/mutually-exclusive.dom.js +5 -5
- package/components/mutually-exclusive/mutually-exclusive.duration.spec.js +210 -210
- package/components/mutually-exclusive/mutually-exclusive.email.spec.js +90 -90
- package/components/mutually-exclusive/mutually-exclusive.js +137 -137
- package/components/mutually-exclusive/mutually-exclusive.multiple-options.checkboxes.spec.js +197 -197
- package/components/mutually-exclusive/mutually-exclusive.number.spec.js +96 -96
- package/components/mutually-exclusive/mutually-exclusive.textarea.spec.js +102 -102
- package/components/navigation/_macro.spec.js +360 -354
- package/components/navigation/_navigation.scss +122 -123
- package/components/navigation/navigation.dom.js +35 -35
- package/components/navigation/navigation.js +49 -49
- package/components/navigation/navigation.spec.js +249 -249
- package/components/pagination/_macro.spec.js +342 -335
- package/components/pagination/_pagination.scss +58 -58
- package/components/panel/_macro.spec.js +372 -372
- package/components/panel/_panel.scss +200 -199
- package/components/password/_macro.spec.js +95 -95
- package/components/password/password.dom.js +5 -5
- package/components/password/password.js +10 -10
- package/components/password/password.spec.js +26 -26
- package/components/phase-banner/_macro.spec.js +86 -86
- package/components/phase-banner/_phase-banner.scss +16 -16
- package/components/question/_macro.spec.js +235 -235
- package/components/question/_question.scss +24 -24
- package/components/quote/_macro.spec.js +52 -52
- package/components/quote/_quote.scss +24 -24
- package/components/radios/_macro.spec.js +524 -524
- package/components/radios/_radio.scss +49 -48
- package/components/radios/_radios.scss +14 -20
- package/components/radios/check-radios.js +21 -21
- package/components/radios/clear-radios.js +45 -45
- package/components/radios/radio-with-fieldset.js +22 -22
- package/components/radios/radios.dom.js +32 -32
- package/components/radios/radios.spec.js +251 -251
- package/components/related-content/_macro.spec.js +109 -109
- package/components/related-content/_related-content.scss +12 -12
- package/components/related-content/_section-macro.spec.js +20 -20
- package/components/relationships/_macro.spec.js +94 -94
- package/components/relationships/_relationships.scss +9 -9
- package/components/relationships/relationships.dom.js +5 -5
- package/components/relationships/relationships.js +18 -18
- package/components/relationships/relationships.spec.js +71 -71
- package/components/reply/_macro.spec.js +47 -47
- package/components/reply/reply-input.js +15 -15
- package/components/reply/reply.dom.js +5 -5
- package/components/reply/reply.spec.js +57 -57
- package/components/section-navigation/_macro.spec.js +210 -210
- package/components/section-navigation/_section-navigation.scss +76 -76
- package/components/select/_macro.spec.js +166 -166
- package/components/share-page/_macro.spec.js +68 -68
- package/components/skip-to-content/_macro.spec.js +54 -54
- package/components/skip-to-content/_skip.scss +30 -30
- package/components/skip-to-content/skip-to-content.dom.js +6 -6
- package/components/skip-to-content/skip-to-content.js +7 -7
- package/components/skip-to-content/skip-to-content.spec.js +21 -21
- package/components/status/_macro.spec.js +53 -53
- package/components/status/_status.scss +32 -32
- package/components/summary/_macro.spec.js +551 -535
- package/components/summary/_summary.scss +191 -195
- package/components/table/_macro.spec.js +499 -499
- package/components/table/_table.scss +204 -201
- package/components/table/scrollable-table.dom.js +5 -5
- package/components/table/scrollable-table.js +60 -60
- package/components/table/sortable-table.dom.js +5 -5
- package/components/table/sortable-table.js +135 -135
- package/components/table/table.spec.js +144 -140
- package/components/table-of-contents/_macro.spec.js +125 -125
- package/components/table-of-contents/_toc.scss +9 -9
- package/components/table-of-contents/toc.dom.js +5 -5
- package/components/table-of-contents/toc.js +30 -30
- package/components/table-of-contents/toc.spec.js +88 -88
- package/components/tabs/_macro.spec.js +92 -92
- package/components/tabs/_tabs.scss +120 -115
- package/components/tabs/tabs.dom.js +5 -5
- package/components/tabs/tabs.js +266 -266
- package/components/tabs/tabs.spec.js +268 -268
- package/components/text-indent/_macro.spec.js +33 -33
- package/components/text-indent/_text-indent.scss +3 -3
- package/components/textarea/_macro.spec.js +238 -238
- package/components/textarea/textarea.dom.js +5 -5
- package/components/textarea/textarea.spec.js +78 -74
- package/components/timeline/_macro.spec.js +83 -83
- package/components/timeline/_timeline.scss +26 -26
- package/components/timeout-modal/_macro.spec.js +47 -47
- package/components/timeout-modal/timeout-modal.dom.js +9 -9
- package/components/timeout-modal/timeout-modal.js +66 -66
- package/components/timeout-modal/timeout-modal.spec.js +157 -157
- package/components/timeout-panel/_macro.spec.js +41 -41
- package/components/timeout-panel/timeout-panel.dom.js +8 -8
- package/components/timeout-panel/timeout-panel.spec.js +118 -118
- package/components/upload/_macro.spec.js +52 -52
- package/components/upload/_upload.scss +28 -28
- package/components/video/_macro.spec.js +42 -42
- package/components/video/_video.scss +16 -16
- package/components/video/video.dom.js +5 -5
- package/components/video/video.js +32 -32
- package/components/video/video.spec.js +103 -97
- package/css/main.css +1 -1
- package/favicons/android-chrome-192x192.png +0 -0
- package/favicons/android-chrome-512x512.png +0 -0
- package/favicons/apple-touch-icon.png +0 -0
- package/favicons/favicon-16x16.png +0 -0
- package/favicons/favicon-32x32.png +0 -0
- package/favicons/favicon.ico +0 -0
- package/favicons/manifest.json +25 -25
- package/favicons/maskable_icon.png +0 -0
- package/favicons/opengraph.png +0 -0
- package/favicons/twitter.png +0 -0
- package/img/large/alison-pritchard-featured.jpg +0 -0
- package/img/large/alison-pritchard.jpg +0 -0
- package/img/large/census-monuments-lights-featured.jpg +0 -0
- package/img/large/census-monuments-lights.jpg +0 -0
- package/img/large/mother-and-daughter-in-ireland.jpg +0 -0
- package/img/large/mum-and-child-healthcare-belfast.jpg +0 -0
- package/img/large/ons-award-winners.jpg +0 -0
- package/img/large/placeholder-card.png +0 -0
- package/img/large/placeholder-news-medium.png +0 -0
- package/img/large/placeholder-news.png +0 -0
- package/img/large/placeholder-portrait.png +0 -0
- package/img/large/students.jpg +0 -0
- package/img/large/woman-in-purple-dress-shirt.jpg +0 -0
- package/img/small/alison-pritchard-featured.jpg +0 -0
- package/img/small/alison-pritchard.jpg +0 -0
- package/img/small/census-monuments-lights-featured.jpg +0 -0
- package/img/small/census-monuments-lights.jpg +0 -0
- package/img/small/mother-and-daughter-in-ireland.jpg +0 -0
- package/img/small/mum-and-child-healthcare-belfast.jpg +0 -0
- package/img/small/ons-award-winners.jpg +0 -0
- package/img/small/placeholder-card.png +0 -0
- package/img/small/placeholder-news-medium.png +0 -0
- package/img/small/placeholder-news.png +0 -0
- package/img/small/placeholder-portrait.png +0 -0
- package/img/small/students.jpg +0 -0
- package/img/small/woman-in-purple-dress-shirt.jpg +0 -0
- package/js/abortable-fetch.js +23 -23
- package/js/analytics.js +53 -53
- package/js/cookies-functions.js +135 -135
- package/js/cookies-settings.dom.js +7 -7
- package/js/cookies-settings.js +77 -77
- package/js/cookies-settings.spec.js +106 -106
- package/js/domready.js +8 -8
- package/js/fetch.js +14 -14
- package/js/inpagelink.dom.js +5 -5
- package/js/inpagelink.js +19 -19
- package/js/polyfills.js +0 -1
- package/js/print-button.js +6 -6
- package/js/timeout.js +211 -211
- package/layout/_template.njk +5 -7
- package/package.json +131 -127
- package/scripts/main.es5.js +1 -1
- package/scripts/main.js +1 -1
- package/scss/base/_forms.scss +10 -10
- package/scss/base/_global.scss +45 -44
- package/scss/base/_typography.scss +20 -20
- package/scss/helpers/_functions.scss +18 -15
- package/scss/helpers/_mixins.scss +59 -53
- package/scss/helpers/_mq.scss +62 -65
- package/scss/objects/_container.scss +20 -20
- package/scss/objects/_page.scss +33 -33
- package/scss/objects/_spacing.scss +10 -10
- package/scss/overrides/hcm.scss +237 -237
- package/scss/overrides/rtl.scss +95 -95
- package/scss/print.scss +47 -47
- package/scss/utilities/_border.scss +7 -7
- package/scss/utilities/_colors.scss +6 -6
- package/scss/utilities/_display.scss +8 -8
- package/scss/utilities/_float.scss +7 -7
- package/scss/utilities/_grid.scss +144 -144
- package/scss/utilities/_highlight.scss +4 -4
- package/scss/utilities/_margin.scss +17 -17
- package/scss/utilities/_pad.scss +15 -15
- package/scss/utilities/_typography.scss +35 -33
- package/scss/utilities/_utilities.scss +8 -8
- package/scss/utilities/_visibility.scss +25 -25
- package/scss/vars/_colors.scss +116 -116
- package/scss/vars/_forms.scss +22 -22
- package/scss/vars/_grid.scss +11 -9
- package/scss/vars/_typography.scss +54 -54
|
@@ -3,201 +3,201 @@ import { renderComponent, setTestPage } from '../../tests/helpers/rendering';
|
|
|
3
3
|
const SCREEN_READER_TIMEOUT_DELAY = 300;
|
|
4
4
|
|
|
5
5
|
const EXAMPLE_MUTUALLY_EXCLUSIVE_CHECKBOXES_PARAMS = {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
id: 'electric',
|
|
19
|
-
label: {
|
|
20
|
-
text: 'Electric',
|
|
21
|
-
},
|
|
22
|
-
value: 'electric',
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
id: 'solid-fuel',
|
|
26
|
-
label: {
|
|
27
|
-
text: 'Solid fuel',
|
|
28
|
-
},
|
|
29
|
-
value: 'solid-fuel',
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
id: 'other-fuel',
|
|
33
|
-
label: {
|
|
34
|
-
text: 'Other',
|
|
35
|
-
},
|
|
36
|
-
value: 'other',
|
|
37
|
-
other: {
|
|
38
|
-
id: 'other-fuel-textbox',
|
|
39
|
-
name: 'other-fuel-answer',
|
|
40
|
-
label: {
|
|
41
|
-
text: 'Please specify',
|
|
6
|
+
legend: 'What type of central heating do you have?',
|
|
7
|
+
checkboxesLabel: 'Select all that apply',
|
|
8
|
+
name: 'mutually-exclusive',
|
|
9
|
+
checkboxes: [
|
|
10
|
+
{
|
|
11
|
+
id: 'gas',
|
|
12
|
+
label: {
|
|
13
|
+
text: 'Gas',
|
|
14
|
+
},
|
|
15
|
+
value: 'gas',
|
|
42
16
|
},
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
17
|
+
{
|
|
18
|
+
id: 'electric',
|
|
19
|
+
label: {
|
|
20
|
+
text: 'Electric',
|
|
21
|
+
},
|
|
22
|
+
value: 'electric',
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
id: 'solid-fuel',
|
|
26
|
+
label: {
|
|
27
|
+
text: 'Solid fuel',
|
|
28
|
+
},
|
|
29
|
+
value: 'solid-fuel',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
id: 'other-fuel',
|
|
33
|
+
label: {
|
|
34
|
+
text: 'Other',
|
|
35
|
+
},
|
|
36
|
+
value: 'other',
|
|
37
|
+
other: {
|
|
38
|
+
id: 'other-fuel-textbox',
|
|
39
|
+
name: 'other-fuel-answer',
|
|
40
|
+
label: {
|
|
41
|
+
text: 'Please specify',
|
|
42
|
+
},
|
|
43
|
+
},
|
|
56
44
|
},
|
|
57
|
-
value: 'no-central-heating',
|
|
58
|
-
},
|
|
59
45
|
],
|
|
60
|
-
|
|
46
|
+
mutuallyExclusive: {
|
|
47
|
+
or: 'or',
|
|
48
|
+
deselectMessage: 'Selecting this will uncheck all other checkboxes',
|
|
49
|
+
deselectGroupAdjective: 'deselected',
|
|
50
|
+
deselectExclusiveOptionAdjective: 'deselected',
|
|
51
|
+
exclusiveOptions: [
|
|
52
|
+
{
|
|
53
|
+
id: 'no-central-heating',
|
|
54
|
+
label: {
|
|
55
|
+
text: 'No central heating',
|
|
56
|
+
},
|
|
57
|
+
value: 'no-central-heating',
|
|
58
|
+
},
|
|
59
|
+
],
|
|
60
|
+
},
|
|
61
61
|
};
|
|
62
62
|
|
|
63
63
|
describe('script: mutually-exclusive', () => {
|
|
64
|
-
|
|
65
|
-
beforeEach(async () => {
|
|
66
|
-
await setTestPage('/test', renderComponent('checkboxes', EXAMPLE_MUTUALLY_EXCLUSIVE_CHECKBOXES_PARAMS));
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
describe('Given the user has clicked multiple non-exclusive options', () => {
|
|
70
|
-
beforeEach(async () => {
|
|
71
|
-
await page.click('#gas');
|
|
72
|
-
await page.click('#electric');
|
|
73
|
-
await page.click('#other-fuel');
|
|
74
|
-
await page.type('#other-fuel-textbox', 'Biofuel');
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
describe('when the user clicks the mutually exclusive option', () => {
|
|
78
|
-
beforeEach(async () => {
|
|
79
|
-
await page.click('#no-central-heating');
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
it('then the mutually exclusive option is checked', async () => {
|
|
83
|
-
const isChecked = await page.$eval('#no-central-heating', (node) => node.checked);
|
|
84
|
-
expect(isChecked).toBe(true);
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
it('then the checkboxes are not checked', async () => {
|
|
88
|
-
expect(await page.$eval('#gas', (node) => node.checked)).toBe(false);
|
|
89
|
-
expect(await page.$eval('#electric', (node) => node.checked)).toBe(false);
|
|
90
|
-
expect(await page.$eval('#solid-fuel', (node) => node.checked)).toBe(false);
|
|
91
|
-
expect(await page.$eval('#other-fuel', (node) => node.checked)).toBe(false);
|
|
92
|
-
expect(await page.$eval('#other-fuel-textbox', (node) => node.value)).toBe('');
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
it('then the aria-live message should reflect the removed non exclusive options', async () => {
|
|
96
|
-
await page.waitForTimeout(SCREEN_READER_TIMEOUT_DELAY);
|
|
97
|
-
|
|
98
|
-
const alertText = await page.$eval('.ons-js-exclusive-alert', (node) => node.textContent);
|
|
99
|
-
expect(alertText).toBe('Gas deselected. Electric deselected. Other deselected. Please specify deselected.');
|
|
100
|
-
});
|
|
101
|
-
});
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
describe('Given the user has clicked the mutually exclusive option', () => {
|
|
105
|
-
beforeEach(async () => {
|
|
106
|
-
await page.click('#no-central-heating');
|
|
107
|
-
});
|
|
108
|
-
|
|
109
|
-
describe('when the user clicks the non-exclusive options', () => {
|
|
64
|
+
describe('checkboxes', () => {
|
|
110
65
|
beforeEach(async () => {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
});
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
66
|
+
await setTestPage('/test', renderComponent('checkboxes', EXAMPLE_MUTUALLY_EXCLUSIVE_CHECKBOXES_PARAMS));
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
describe('Given the user has clicked multiple non-exclusive options', () => {
|
|
70
|
+
beforeEach(async () => {
|
|
71
|
+
await page.click('#gas');
|
|
72
|
+
await page.click('#electric');
|
|
73
|
+
await page.click('#other-fuel');
|
|
74
|
+
await page.type('#other-fuel-textbox', 'Biofuel');
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
describe('when the user clicks the mutually exclusive option', () => {
|
|
78
|
+
beforeEach(async () => {
|
|
79
|
+
await page.click('#no-central-heating');
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
it('then the mutually exclusive option is checked', async () => {
|
|
83
|
+
const isChecked = await page.$eval('#no-central-heating', (node) => node.checked);
|
|
84
|
+
expect(isChecked).toBe(true);
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
it('then the checkboxes are not checked', async () => {
|
|
88
|
+
expect(await page.$eval('#gas', (node) => node.checked)).toBe(false);
|
|
89
|
+
expect(await page.$eval('#electric', (node) => node.checked)).toBe(false);
|
|
90
|
+
expect(await page.$eval('#solid-fuel', (node) => node.checked)).toBe(false);
|
|
91
|
+
expect(await page.$eval('#other-fuel', (node) => node.checked)).toBe(false);
|
|
92
|
+
expect(await page.$eval('#other-fuel-textbox', (node) => node.value)).toBe('');
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
it('then the aria-live message should reflect the removed non exclusive options', async () => {
|
|
96
|
+
await page.waitForTimeout(SCREEN_READER_TIMEOUT_DELAY);
|
|
97
|
+
|
|
98
|
+
const alertText = await page.$eval('.ons-js-exclusive-alert', (node) => node.textContent);
|
|
99
|
+
expect(alertText).toBe('Gas deselected. Electric deselected. Other deselected. Please specify deselected.');
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
describe('Given the user has clicked the mutually exclusive option', () => {
|
|
105
|
+
beforeEach(async () => {
|
|
106
|
+
await page.click('#no-central-heating');
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
describe('when the user clicks the non-exclusive options', () => {
|
|
110
|
+
beforeEach(async () => {
|
|
111
|
+
await page.click('#gas');
|
|
112
|
+
await page.click('#electric');
|
|
113
|
+
await page.click('#other-fuel');
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
it('then the expected checkboxes are checked', async () => {
|
|
117
|
+
expect(await page.$eval('#gas', (node) => node.checked)).toBe(true);
|
|
118
|
+
expect(await page.$eval('#electric', (node) => node.checked)).toBe(true);
|
|
119
|
+
expect(await page.$eval('#solid-fuel', (node) => node.checked)).toBe(false);
|
|
120
|
+
expect(await page.$eval('#other-fuel', (node) => node.checked)).toBe(true);
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
it('then the exclusive option should not be checked', async () => {
|
|
124
|
+
expect(await page.$eval('#no-central-heating', (node) => node.checked)).toBe(false);
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
it('then the aria-live message should reflect the removed exclusive option', async () => {
|
|
128
|
+
await page.waitForTimeout(SCREEN_READER_TIMEOUT_DELAY);
|
|
129
|
+
|
|
130
|
+
const alertText = await page.$eval('.ons-js-exclusive-alert', (node) => node.textContent);
|
|
131
|
+
expect(alertText).toBe('No central heating deselected.');
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
describe('and the user deselects an non-exclusive option', () => {
|
|
135
|
+
beforeEach(async () => {
|
|
136
|
+
await page.click('#electric');
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
it('the aria-live message should not be updated', async () => {
|
|
140
|
+
await page.waitForTimeout(SCREEN_READER_TIMEOUT_DELAY);
|
|
141
|
+
|
|
142
|
+
const alertText = await page.$eval('.ons-js-exclusive-alert', (node) => node.textContent);
|
|
143
|
+
expect(alertText).toBe('No central heating deselected.');
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
describe('Given the user has not clicked the mutually exclusive option', () => {
|
|
150
|
+
describe('when the user clicks multiple non-exclusive options', () => {
|
|
151
|
+
beforeEach(async () => {
|
|
152
|
+
await page.click('#gas');
|
|
153
|
+
await page.click('#electric');
|
|
154
|
+
await page.click('#other-fuel');
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
it('then the expected checkboxes are checked', async () => {
|
|
158
|
+
expect(await page.$eval('#gas', (node) => node.checked)).toBe(true);
|
|
159
|
+
expect(await page.$eval('#electric', (node) => node.checked)).toBe(true);
|
|
160
|
+
expect(await page.$eval('#solid-fuel', (node) => node.checked)).toBe(false);
|
|
161
|
+
expect(await page.$eval('#other-fuel', (node) => node.checked)).toBe(true);
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
it('then the exclusive option should not be checked', async () => {
|
|
165
|
+
expect(await page.$eval('#no-central-heating', (node) => node.checked)).toBe(false);
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
it('then the aria-live message should say nothing', async () => {
|
|
169
|
+
await page.waitForTimeout(SCREEN_READER_TIMEOUT_DELAY);
|
|
170
|
+
|
|
171
|
+
const alertText = await page.$eval('.ons-js-exclusive-alert', (node) => node.textContent);
|
|
172
|
+
expect(alertText).toBe('');
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
describe('Given the user has not clicked any of the non-exclusive options', () => {
|
|
178
|
+
describe('when the user clicks the mutually exclusive option', () => {
|
|
179
|
+
beforeEach(async () => {
|
|
180
|
+
await page.click('#no-central-heating');
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
it('then the expected checkboxes are not checked', async () => {
|
|
184
|
+
expect(await page.$eval('#gas', (node) => node.checked)).toBe(false);
|
|
185
|
+
expect(await page.$eval('#electric', (node) => node.checked)).toBe(false);
|
|
186
|
+
expect(await page.$eval('#solid-fuel', (node) => node.checked)).toBe(false);
|
|
187
|
+
expect(await page.$eval('#other-fuel', (node) => node.checked)).toBe(false);
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
it('then the exclusive option should be checked', async () => {
|
|
191
|
+
expect(await page.$eval('#no-central-heating', (node) => node.checked)).toBe(true);
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
it('then the aria-live message should say nothing', async () => {
|
|
195
|
+
await page.waitForTimeout(SCREEN_READER_TIMEOUT_DELAY);
|
|
196
|
+
|
|
197
|
+
const alertText = await page.$eval('.ons-js-exclusive-alert', (node) => node.textContent);
|
|
198
|
+
expect(alertText).toBe('');
|
|
199
|
+
});
|
|
200
|
+
});
|
|
199
201
|
});
|
|
200
|
-
});
|
|
201
202
|
});
|
|
202
|
-
});
|
|
203
203
|
});
|