@ons/design-system 53.0.4 → 54.0.0
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/components/accordion/_macro.njk +2 -3
- package/components/accordion/_macro.spec.js +3 -40
- package/components/accordion/accordion.dom.js +19 -0
- package/components/{collapsible/collapsible.group.js → accordion/accordion.js} +12 -5
- package/components/accordion/accordion.spec.js +56 -51
- package/components/autosuggest/_autosuggest.scss +1 -1
- package/components/browser-banner/_browser-banner.scss +39 -0
- package/components/browser-banner/_macro.njk +17 -0
- package/components/browser-banner/_macro.spec.js +83 -0
- package/components/checkboxes/_macro.njk +1 -1
- package/components/collapsible/_collapsible.scss +58 -85
- package/components/collapsible/_macro.njk +6 -39
- package/components/collapsible/_macro.spec.js +0 -53
- package/components/collapsible/collapsible.dom.js +3 -12
- package/components/collapsible/collapsible.js +3 -45
- package/components/collapsible/collapsible.spec.js +6 -139
- package/components/cookies-banner/_cookies-banner.scss +15 -7
- package/components/cookies-banner/_macro.njk +66 -22
- package/components/cookies-banner/_macro.spec.js +172 -114
- package/components/cookies-banner/cookies-banner.js +35 -13
- package/components/cookies-banner/cookies-banner.spec.js +58 -54
- package/components/duration/_macro.njk +1 -1
- package/components/duration/_macro.spec.js +1 -1
- package/components/fieldset/_fieldset.scss +3 -6
- package/components/header/_macro.njk +7 -0
- package/components/input/_macro.njk +20 -15
- package/components/input/_macro.spec.js +56 -0
- package/components/label/_label.scss +1 -1
- package/components/mutually-exclusive/mutually-exclusive.duration.spec.js +2 -0
- package/components/mutually-exclusive/mutually-exclusive.number.spec.js +1 -0
- package/css/census.css +1 -1
- package/css/error.css +1 -1
- package/css/ids.css +1 -1
- package/css/main.css +1 -1
- package/js/main.js +1 -0
- package/layout/_template.njk +1 -0
- package/package.json +1 -1
- package/scripts/main.es5.js +1 -1
- package/scripts/main.js +2 -2
- package/scss/main.scss +1 -0
- package/scss/objects/_page.scss +1 -1
- package/scss/vars/_colors.scss +1 -0
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
onsButton({
|
|
16
16
|
"type": "button",
|
|
17
17
|
"text": params.allButton.open,
|
|
18
|
-
"classes": "ons-js-
|
|
18
|
+
"classes": "ons-js-accordion-all ons-u-mb-s ons-u-d-no",
|
|
19
19
|
"variants": ["secondary", "small"],
|
|
20
|
-
"innerClasses": "ons-js-
|
|
20
|
+
"innerClasses": "ons-js-accordion-all-inner",
|
|
21
21
|
"attributes": attributes
|
|
22
22
|
})
|
|
23
23
|
}}
|
|
@@ -36,7 +36,6 @@
|
|
|
36
36
|
"content": item.content,
|
|
37
37
|
"group": params.id,
|
|
38
38
|
"saveState": params.saveState,
|
|
39
|
-
"variants": params.variants,
|
|
40
39
|
"open": params.open
|
|
41
40
|
})
|
|
42
41
|
}}
|
|
@@ -54,18 +54,6 @@ describe('macro: accordion', () => {
|
|
|
54
54
|
});
|
|
55
55
|
|
|
56
56
|
describe('item', () => {
|
|
57
|
-
it('has provided variant style classes', () => {
|
|
58
|
-
const $ = cheerio.load(
|
|
59
|
-
renderComponent('accordion', {
|
|
60
|
-
...EXAMPLE_ACCORDION_WITH_TWO_ITEMS,
|
|
61
|
-
variants: ['variant-a', 'variant-b'],
|
|
62
|
-
}),
|
|
63
|
-
);
|
|
64
|
-
|
|
65
|
-
expect($('.ons-collapsible--variant-a').length).toBe(2);
|
|
66
|
-
expect($('.ons-collapsible--variant-b').length).toBe(2);
|
|
67
|
-
});
|
|
68
|
-
|
|
69
57
|
it('has provided title text', () => {
|
|
70
58
|
const $ = cheerio.load(renderComponent('accordion', EXAMPLE_ACCORDION_WITH_TWO_ITEMS));
|
|
71
59
|
|
|
@@ -103,31 +91,6 @@ describe('macro: accordion', () => {
|
|
|
103
91
|
expect(titleText).toBe('Content for item 1');
|
|
104
92
|
});
|
|
105
93
|
|
|
106
|
-
it('outputs a button with the expected class', () => {
|
|
107
|
-
const $ = cheerio.load(
|
|
108
|
-
renderComponent('accordion', {
|
|
109
|
-
itemsList: [
|
|
110
|
-
{
|
|
111
|
-
title: 'Title for item 1',
|
|
112
|
-
button: {
|
|
113
|
-
open: 'Open label',
|
|
114
|
-
close: 'Close label',
|
|
115
|
-
},
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
title: 'Title for item 2',
|
|
119
|
-
button: {
|
|
120
|
-
open: 'Open label',
|
|
121
|
-
close: 'Close label',
|
|
122
|
-
},
|
|
123
|
-
},
|
|
124
|
-
],
|
|
125
|
-
}),
|
|
126
|
-
);
|
|
127
|
-
|
|
128
|
-
expect($('button.ons-js-collapsible-button').length).toBe(2);
|
|
129
|
-
});
|
|
130
|
-
|
|
131
94
|
it('has additionally provided `attributes`', () => {
|
|
132
95
|
const $ = cheerio.load(
|
|
133
96
|
renderComponent('accordion', {
|
|
@@ -199,7 +162,7 @@ describe('macro: accordion', () => {
|
|
|
199
162
|
}),
|
|
200
163
|
);
|
|
201
164
|
|
|
202
|
-
expect($('button.ons-js-
|
|
165
|
+
expect($('button.ons-js-accordion-all').length).toBe(1);
|
|
203
166
|
});
|
|
204
167
|
|
|
205
168
|
it('has additionally provided `attributes`', () => {
|
|
@@ -217,8 +180,8 @@ describe('macro: accordion', () => {
|
|
|
217
180
|
}),
|
|
218
181
|
);
|
|
219
182
|
|
|
220
|
-
expect($('button.ons-js-
|
|
221
|
-
expect($('button.ons-js-
|
|
183
|
+
expect($('button.ons-js-accordion-all').attr('a')).toBe('123');
|
|
184
|
+
expect($('button.ons-js-accordion-all').attr('b')).toBe('456');
|
|
222
185
|
});
|
|
223
186
|
});
|
|
224
187
|
});
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import domready from '../../js/domready';
|
|
2
|
+
|
|
3
|
+
async function initialiseAccordions() {
|
|
4
|
+
const toggleAllButtons = [...document.querySelectorAll('.ons-js-accordion-all')];
|
|
5
|
+
|
|
6
|
+
if (toggleAllButtons.length) {
|
|
7
|
+
const collapsibleComponents = [...document.querySelectorAll('.ons-js-collapsible')];
|
|
8
|
+
|
|
9
|
+
const Collapsible = (await import('../collapsible/collapsible')).default;
|
|
10
|
+
const Accordion = (await import('./accordion')).default;
|
|
11
|
+
const collapsibles = collapsibleComponents.map(element => new Collapsible(element));
|
|
12
|
+
|
|
13
|
+
toggleAllButtons.forEach(button => {
|
|
14
|
+
new Accordion(button, collapsibles);
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
domready(initialiseAccordions);
|
|
@@ -1,23 +1,28 @@
|
|
|
1
|
-
export default class
|
|
1
|
+
export default class Accordion {
|
|
2
2
|
constructor(button, collapsibles) {
|
|
3
3
|
this.openCollapsibles = 0;
|
|
4
4
|
|
|
5
5
|
this.button = button;
|
|
6
|
-
this.buttonInner = button.querySelector('.ons-js-
|
|
6
|
+
this.buttonInner = button.querySelector('.ons-js-accordion-all-inner');
|
|
7
7
|
this.group = button.getAttribute('data-group');
|
|
8
8
|
this.collapsibles = collapsibles.filter(collapsible => collapsible.group === this.group);
|
|
9
|
-
|
|
10
9
|
this.totalCollapsibles = this.collapsibles.length;
|
|
11
|
-
this.
|
|
10
|
+
this.buttonOpenEl = this.buttonInner.querySelector('.ons-btn__text');
|
|
11
|
+
this.buttonOpen = this.buttonOpenEl.innerHTML.trim();
|
|
12
12
|
this.closeButton = button.getAttribute('data-close-all');
|
|
13
|
+
this.open = this.collapsibles.find(collapsible => collapsible.open === true);
|
|
13
14
|
|
|
14
15
|
this.collapsibles.forEach(collapsible => {
|
|
15
16
|
collapsible.onOpen = this.onOpen.bind(this);
|
|
16
17
|
collapsible.onClose = this.onClose.bind(this);
|
|
17
18
|
});
|
|
18
19
|
|
|
19
|
-
|
|
20
|
+
if (this.open) {
|
|
21
|
+
this.openCollapsibles = this.totalCollapsibles;
|
|
22
|
+
}
|
|
20
23
|
|
|
24
|
+
this.button.addEventListener('click', this.handleButtonClick.bind(this));
|
|
25
|
+
this.setButton();
|
|
21
26
|
this.button.classList.remove('ons-u-d-no');
|
|
22
27
|
}
|
|
23
28
|
|
|
@@ -49,9 +54,11 @@ export default class CollapsibleGroup {
|
|
|
49
54
|
if (this.canClose()) {
|
|
50
55
|
this.buttonInner.innerHTML = this.closeButton;
|
|
51
56
|
this.button.setAttribute('data-ga-label', this.buttonOpen);
|
|
57
|
+
this.button.setAttribute('aria-expanded', 'true');
|
|
52
58
|
} else {
|
|
53
59
|
this.buttonInner.innerHTML = this.buttonOpen;
|
|
54
60
|
this.button.setAttribute('data-ga-label', this.closeButton);
|
|
61
|
+
this.button.setAttribute('aria-expanded', 'false');
|
|
55
62
|
}
|
|
56
63
|
}
|
|
57
64
|
}
|
|
@@ -6,26 +6,14 @@ const EXAMPLE_ACCORDION_WITH_THREE_ITEMS = {
|
|
|
6
6
|
{
|
|
7
7
|
title: 'Title for item 1',
|
|
8
8
|
content: 'Content for item 1',
|
|
9
|
-
button: {
|
|
10
|
-
open: 'Open item',
|
|
11
|
-
close: 'Close item',
|
|
12
|
-
},
|
|
13
9
|
},
|
|
14
10
|
{
|
|
15
11
|
title: 'Title for item 2',
|
|
16
12
|
content: 'Content for item 2',
|
|
17
|
-
button: {
|
|
18
|
-
open: 'Open item',
|
|
19
|
-
close: 'Close item',
|
|
20
|
-
},
|
|
21
13
|
},
|
|
22
14
|
{
|
|
23
15
|
title: 'Title for item 3',
|
|
24
16
|
content: 'Content for item 3',
|
|
25
|
-
button: {
|
|
26
|
-
open: 'Open item',
|
|
27
|
-
close: 'Close item',
|
|
28
|
-
},
|
|
29
17
|
},
|
|
30
18
|
],
|
|
31
19
|
};
|
|
@@ -42,43 +30,68 @@ const EXAMPLE_ACCORDION_WITH_ALL_BUTTON = {
|
|
|
42
30
|
};
|
|
43
31
|
|
|
44
32
|
describe('script: accordion', () => {
|
|
45
|
-
it('begins with all items
|
|
46
|
-
await setTestPage(
|
|
33
|
+
it('begins with all items open when specified', async () => {
|
|
34
|
+
await setTestPage(
|
|
35
|
+
'/test',
|
|
36
|
+
renderComponent('accordion', {
|
|
37
|
+
...EXAMPLE_ACCORDION_WITH_THREE_ITEMS,
|
|
38
|
+
open: true,
|
|
39
|
+
}),
|
|
40
|
+
);
|
|
47
41
|
|
|
48
|
-
const
|
|
49
|
-
expect(
|
|
42
|
+
const openElements = await page.$$eval('.ons-js-collapsible', nodes => nodes.filter(node => node.open));
|
|
43
|
+
expect(openElements[0]).not.toBe(undefined);
|
|
44
|
+
expect(openElements[1]).not.toBe(undefined);
|
|
45
|
+
expect(openElements[2]).not.toBe(undefined);
|
|
50
46
|
});
|
|
51
47
|
|
|
52
|
-
it('
|
|
48
|
+
it('sets toggle all button label to "Hide all" when open is specified', async () => {
|
|
53
49
|
await setTestPage(
|
|
54
50
|
'/test',
|
|
55
51
|
renderComponent('accordion', {
|
|
56
|
-
...
|
|
52
|
+
...EXAMPLE_ACCORDION_WITH_ALL_BUTTON,
|
|
53
|
+
open: true,
|
|
54
|
+
}),
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
const buttonText = await page.$eval('button[data-test-trigger]', element => element.innerText);
|
|
58
|
+
expect(buttonText.trim()).toBe('Close all');
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
it('sets toggle all button aria-expanded set to true when open is specified', async () => {
|
|
62
|
+
await setTestPage(
|
|
63
|
+
'/test',
|
|
64
|
+
renderComponent('accordion', {
|
|
65
|
+
...EXAMPLE_ACCORDION_WITH_ALL_BUTTON,
|
|
57
66
|
open: true,
|
|
58
67
|
}),
|
|
59
68
|
);
|
|
60
69
|
|
|
61
|
-
const
|
|
62
|
-
expect(
|
|
70
|
+
const ariaExpanded = await page.$eval('button[data-test-trigger]', element => element.getAttribute('aria-expanded'));
|
|
71
|
+
expect(ariaExpanded).toBe('true');
|
|
63
72
|
});
|
|
64
73
|
|
|
65
|
-
it('opens all items when accordion
|
|
74
|
+
it('opens all items when accordion `allbutton` is clicked', async () => {
|
|
66
75
|
await setTestPage('/test', renderComponent('accordion', EXAMPLE_ACCORDION_WITH_ALL_BUTTON));
|
|
67
76
|
|
|
68
77
|
await page.click('button[data-test-trigger]');
|
|
69
78
|
|
|
70
|
-
const
|
|
71
|
-
expect(
|
|
79
|
+
const openElements = await page.$$eval('.ons-js-collapsible', nodes => nodes.filter(node => node.open));
|
|
80
|
+
expect(openElements[0]).not.toBe(undefined);
|
|
81
|
+
expect(openElements[1]).not.toBe(undefined);
|
|
82
|
+
expect(openElements[2]).not.toBe(undefined);
|
|
72
83
|
});
|
|
73
84
|
|
|
74
|
-
it('closes all items when accordion
|
|
85
|
+
it('closes all items when accordion `allbutton` is clicked twice', async () => {
|
|
75
86
|
await setTestPage('/test', renderComponent('accordion', EXAMPLE_ACCORDION_WITH_ALL_BUTTON));
|
|
76
87
|
|
|
77
88
|
await page.click('button[data-test-trigger]');
|
|
78
89
|
await page.click('button[data-test-trigger]');
|
|
79
90
|
|
|
80
|
-
const
|
|
81
|
-
expect(
|
|
91
|
+
const openElements = await page.$$eval('.ons-js-collapsible', nodes => nodes.filter(node => node.open));
|
|
92
|
+
expect(openElements[0]).toBe(undefined);
|
|
93
|
+
expect(openElements[1]).toBe(undefined);
|
|
94
|
+
expect(openElements[2]).toBe(undefined);
|
|
82
95
|
});
|
|
83
96
|
|
|
84
97
|
it('starts with the toggle all button labelled as "Open all"', async () => {
|
|
@@ -88,47 +101,39 @@ describe('script: accordion', () => {
|
|
|
88
101
|
expect(buttonText.trim()).toBe('Open all');
|
|
89
102
|
});
|
|
90
103
|
|
|
91
|
-
it('
|
|
104
|
+
it('starts with the toggle all button aria-expanded set to false', async () => {
|
|
92
105
|
await setTestPage('/test', renderComponent('accordion', EXAMPLE_ACCORDION_WITH_ALL_BUTTON));
|
|
93
106
|
|
|
94
|
-
await page
|
|
95
|
-
|
|
96
|
-
const buttonText = await page.$eval('button[data-test-trigger]', element => element.innerText);
|
|
97
|
-
expect(buttonText.trim()).toBe('Close all');
|
|
107
|
+
const ariaExpanded = await page.$eval('button[data-test-trigger]', element => element.getAttribute('aria-expanded'));
|
|
108
|
+
expect(ariaExpanded).toBe('false');
|
|
98
109
|
});
|
|
99
110
|
|
|
100
|
-
it('sets toggle all button label to "Hide all" when
|
|
111
|
+
it('sets toggle all button label to "Hide all" when clicked', async () => {
|
|
101
112
|
await setTestPage('/test', renderComponent('accordion', EXAMPLE_ACCORDION_WITH_ALL_BUTTON));
|
|
102
113
|
|
|
103
|
-
await page.click('
|
|
104
|
-
await page.click('#example-accordion-2 .ons-collapsible__btn');
|
|
105
|
-
await page.click('#example-accordion-3 .ons-collapsible__btn');
|
|
114
|
+
await page.click('button[data-test-trigger]');
|
|
106
115
|
|
|
107
116
|
const buttonText = await page.$eval('button[data-test-trigger]', element => element.innerText);
|
|
108
117
|
expect(buttonText.trim()).toBe('Close all');
|
|
109
118
|
});
|
|
110
119
|
|
|
111
|
-
it('
|
|
112
|
-
await setTestPage('/test', renderComponent('accordion',
|
|
120
|
+
it('sets toggle all button aria-expanded set to true when clicked', async () => {
|
|
121
|
+
await setTestPage('/test', renderComponent('accordion', EXAMPLE_ACCORDION_WITH_ALL_BUTTON));
|
|
113
122
|
|
|
114
|
-
await page.click('
|
|
115
|
-
await page.click('#example-accordion-3 .ons-collapsible__btn');
|
|
123
|
+
await page.click('button[data-test-trigger]');
|
|
116
124
|
|
|
117
|
-
const
|
|
118
|
-
expect(
|
|
125
|
+
const ariaExpanded = await page.$eval('button[data-test-trigger]', element => element.getAttribute('aria-expanded'));
|
|
126
|
+
expect(ariaExpanded).toBe('true');
|
|
119
127
|
});
|
|
120
128
|
|
|
121
|
-
it('
|
|
122
|
-
await setTestPage('/test', renderComponent('accordion',
|
|
123
|
-
|
|
124
|
-
await page.click('#example-accordion-2 .ons-collapsible__btn');
|
|
125
|
-
await page.click('#example-accordion-3 .ons-collapsible__btn');
|
|
126
|
-
await page.click('#example-accordion-3 .ons-collapsible__btn');
|
|
129
|
+
it('sets toggle all button label to "Hide all" when all items are shown', async () => {
|
|
130
|
+
await setTestPage('/test', renderComponent('accordion', EXAMPLE_ACCORDION_WITH_ALL_BUTTON));
|
|
127
131
|
|
|
128
|
-
|
|
129
|
-
|
|
132
|
+
await page.click('#example-accordion-1 .ons-collapsible__heading');
|
|
133
|
+
await page.click('#example-accordion-2 .ons-collapsible__heading');
|
|
134
|
+
await page.click('#example-accordion-3 .ons-collapsible__heading');
|
|
130
135
|
|
|
131
|
-
const
|
|
132
|
-
expect(
|
|
136
|
+
const buttonText = await page.$eval('button[data-test-trigger]', element => element.innerText);
|
|
137
|
+
expect(buttonText.trim()).toBe('Close all');
|
|
133
138
|
});
|
|
134
139
|
});
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
.ons-browser-banner {
|
|
2
|
+
background-color: $color-banner-browser-bg;
|
|
3
|
+
display: none; // Hides unsupported browser banner unless targeted below
|
|
4
|
+
padding: 0.8rem 0;
|
|
5
|
+
|
|
6
|
+
&__content {
|
|
7
|
+
@extend .ons-u-fs-s;
|
|
8
|
+
|
|
9
|
+
color: $color-text-inverse;
|
|
10
|
+
margin: 0;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
&__lead {
|
|
14
|
+
@extend .ons-u-fw-b;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
&__link {
|
|
18
|
+
color: $color-text-inverse-link;
|
|
19
|
+
|
|
20
|
+
&:hover {
|
|
21
|
+
color: $color-text-inverse-link-hover;
|
|
22
|
+
text-decoration: underline solid $color-text-inverse-link-hover 2px;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Targets browsers IE10 & IE11 and displays unsupported browser banner
|
|
28
|
+
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
|
|
29
|
+
.ons-browser-banner {
|
|
30
|
+
display: block;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Targets browsers IE8 & IE9 and displays unsupported browser banner
|
|
35
|
+
@media screen\0 {
|
|
36
|
+
.ons-browser-banner {
|
|
37
|
+
display: block;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{% macro onsBrowserBanner(params) %}
|
|
2
|
+
{% if params.lang == "cy" %}
|
|
3
|
+
{% set bannerLeadingText = 'Nid yw’r wefan hon yn cefnogi eich porwr mwyach.' %}
|
|
4
|
+
{% set bannerLinkUrl = 'https://cy.ons.gov.uk/help/browsers' %}
|
|
5
|
+
{% set bannerCTA = 'Gallwch <a class="ons-browser-banner__link" href="' + bannerLinkUrl + '">ddiweddaru eich porwr i’r fersiwn ddiweddaraf</a>.' %}
|
|
6
|
+
{% else %}
|
|
7
|
+
{% set bannerLeadingText = 'This website no longer supports your browser.' %}
|
|
8
|
+
{% set bannerLinkUrl = 'https://www.ons.gov.uk/help/browsers' %}
|
|
9
|
+
{% set bannerCTA = 'You can <a class="ons-browser-banner__link" href="' + bannerLinkUrl + '">upgrade your browser to the latest version</a>.' %}
|
|
10
|
+
{% endif %}
|
|
11
|
+
|
|
12
|
+
<div class="ons-browser-banner">
|
|
13
|
+
<div class="ons-container{{ ' ons-container--wide' if params.wide is defined and params.wide }}">
|
|
14
|
+
<p class="ons-browser-banner__content"><span class="ons-browser-banner__lead">{{ bannerLeadingText }}</span><span class="ons-browser-banner__cta"> {{ bannerCTA | safe }}</span></p>
|
|
15
|
+
</div>
|
|
16
|
+
</div>
|
|
17
|
+
{% endmacro %}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/** @jest-environment jsdom */
|
|
2
|
+
|
|
3
|
+
import * as cheerio from 'cheerio';
|
|
4
|
+
|
|
5
|
+
import axe from '../../tests/helpers/axe';
|
|
6
|
+
import { renderComponent } from '../../tests/helpers/rendering';
|
|
7
|
+
|
|
8
|
+
const EXAMPLE_BROWSER_BANNER_DEFAULT = {};
|
|
9
|
+
|
|
10
|
+
describe('macro: browser-banner', () => {
|
|
11
|
+
it('passes jest-axe checks with', async () => {
|
|
12
|
+
const $ = cheerio.load(renderComponent('browser-banner', EXAMPLE_BROWSER_BANNER_DEFAULT));
|
|
13
|
+
|
|
14
|
+
const results = await axe($.html());
|
|
15
|
+
expect(results).toHaveNoViolations();
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it('has the default `bannerLeadingText`', () => {
|
|
19
|
+
const $ = cheerio.load(renderComponent('browser-banner', EXAMPLE_BROWSER_BANNER_DEFAULT));
|
|
20
|
+
|
|
21
|
+
const bannerLeadingText = $('.ons-browser-banner__lead')
|
|
22
|
+
.text()
|
|
23
|
+
.trim();
|
|
24
|
+
expect(bannerLeadingText).toBe('This website no longer supports your browser.');
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it('has the default `bannerCTA`', () => {
|
|
28
|
+
const $ = cheerio.load(renderComponent('browser-banner', EXAMPLE_BROWSER_BANNER_DEFAULT));
|
|
29
|
+
|
|
30
|
+
const bannerCtaHtml = $('.ons-browser-banner__cta')
|
|
31
|
+
.text()
|
|
32
|
+
.trim();
|
|
33
|
+
expect(bannerCtaHtml).toBe('You can upgrade your browser to the latest version.');
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
it('has the default `bannerLinkUrl`', () => {
|
|
37
|
+
const $ = cheerio.load(renderComponent('browser-banner', EXAMPLE_BROWSER_BANNER_DEFAULT));
|
|
38
|
+
|
|
39
|
+
expect($('.ons-browser-banner__link').attr('href')).toBe('https://www.ons.gov.uk/help/browsers');
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
it('has `container--wide` class when `wide` is true', () => {
|
|
43
|
+
const $ = cheerio.load(
|
|
44
|
+
renderComponent('browser-banner', {
|
|
45
|
+
...EXAMPLE_BROWSER_BANNER_DEFAULT,
|
|
46
|
+
wide: true,
|
|
47
|
+
}),
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
expect($('.ons-container').hasClass('ons-container--wide')).toBe(true);
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
describe('mode: Welsh language', () => {
|
|
55
|
+
it('has the welsh version of default `bannerLeadingText`', () => {
|
|
56
|
+
const $ = cheerio.load(
|
|
57
|
+
renderComponent('browser-banner', {
|
|
58
|
+
...EXAMPLE_BROWSER_BANNER_DEFAULT,
|
|
59
|
+
lang: 'cy',
|
|
60
|
+
}),
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
const bannerLeadingText = $('.ons-browser-banner__lead')
|
|
64
|
+
.text()
|
|
65
|
+
.trim();
|
|
66
|
+
expect(bannerLeadingText).toBe('Nid yw’r wefan hon yn cefnogi eich porwr mwyach.');
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
it('has the welsh version of default `bannerCTA`', () => {
|
|
70
|
+
const $ = cheerio.load(renderComponent('browser-banner', { lang: 'cy' }));
|
|
71
|
+
|
|
72
|
+
const bannerCtaHtml = $('.ons-browser-banner__cta')
|
|
73
|
+
.text()
|
|
74
|
+
.trim();
|
|
75
|
+
expect(bannerCtaHtml).toBe('Gallwch ddiweddaru eich porwr i’r fersiwn ddiweddaraf.');
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
it('has the welsh version of default `bannerLinkUrl`', () => {
|
|
79
|
+
const $ = cheerio.load(renderComponent('browser-banner', { lang: 'cy' }));
|
|
80
|
+
|
|
81
|
+
expect($('.ons-browser-banner__link').attr('href')).toBe('https://cy.ons.gov.uk/help/browsers');
|
|
82
|
+
});
|
|
83
|
+
});
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
"text": checkbox.other.label.text
|
|
86
86
|
},
|
|
87
87
|
"legend": checkbox.other.legend,
|
|
88
|
-
"legendClasses": checkbox.other.legendClasses
|
|
88
|
+
"legendClasses": checkbox.other.legendClasses,
|
|
89
89
|
"value": checkbox.other.value,
|
|
90
90
|
"autoSelect": checkbox.other.autoSelect,
|
|
91
91
|
"selectAllChildren": checkbox.other.selectAllChildren,
|