@ons/design-system 74.0.0-next.7 → 74.0.0-widen.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/README.md +2 -2
- package/components/access-code/example-access-code-error.njk +1 -1
- package/components/access-code/example-access-code.njk +1 -1
- package/components/address-input/_macro.njk +6 -6
- package/components/address-input/_macro.spec.js +0 -3
- package/components/address-input/autosuggest.address.spec.js +23 -0
- package/components/address-output/_macro.njk +1 -1
- package/components/announcement-banner/_announcement-banner.scss +5 -0
- package/components/autosuggest/_autosuggest.scss +8 -0
- package/components/autosuggest/autosuggest.spec.js +1 -0
- package/components/autosuggest/autosuggest.ui.js +11 -5
- package/components/back-to-top/_back-to-top.scss +7 -0
- package/components/back-to-top/_macro.njk +1 -1
- package/components/back-to-top/back-to-top.js +9 -1
- package/components/back-to-top/back-to-top.spec.js +46 -0
- package/components/breadcrumbs/example-breadcrumbs-wide.njk +52 -0
- package/components/card/example-card-set-with-headline-figures.njk +1 -1
- package/components/char-check-limit/_macro.njk +16 -14
- package/components/chart/_macro.njk +3 -0
- package/components/chart/_macro.spec.js +49 -0
- package/components/chart/bar-chart.js +18 -12
- package/components/chart/chart.js +4 -1
- package/components/chart/common-chart-options.js +1 -0
- package/components/chart/example-stacked-column-with-line-chart.njk +64 -0
- package/components/details/_details.scss +9 -0
- package/components/details/example-details-with-warning.njk +1 -1
- package/components/details-panel/_macro.njk +1 -1
- package/components/download-resources/download-resources.spec.js +1 -4
- package/components/featured-article/_macro.njk +4 -4
- package/components/featured-article/macro.spec.js +2 -2
- package/components/feedback/_macro.njk +4 -1
- package/components/feedback/_macro.spec.js +1 -1
- package/components/figure/_figure.scss +1 -0
- package/components/figure/_macro.njk +3 -3
- package/components/footer/_macro.njk +5 -2
- package/components/header/_macro.njk +1 -1
- package/components/header/_macro.spec.js +21 -0
- package/components/hero/_hero.scss +4 -0
- package/components/input/_input.scss +4 -0
- package/components/input/_macro.njk +4 -1
- package/components/label/_label.scss +3 -0
- package/components/list/_list.scss +5 -0
- package/components/message/_message.scss +3 -3
- package/components/message-list/_message-list.scss +2 -0
- package/components/panel/_macro.njk +1 -1
- package/components/panel/_panel.scss +8 -0
- package/components/panel/example-panel-bare.njk +1 -1
- package/components/phase-banner/_phase-banner.scss +1 -0
- package/components/quote/_macro.njk +1 -1
- package/components/skip-to-content/_macro.njk +1 -1
- package/components/skip-to-content/_skip.scss +8 -0
- package/components/tabs/tabs.spec.js +1 -4
- package/css/main.css +1 -1
- package/layout/_template.njk +1 -0
- package/package.json +55 -53
- package/scripts/chart.es5.js +1 -1
- package/scripts/chart.js +1 -1
- package/scripts/main.es5.js +3 -3
- package/scripts/main.js +3 -3
- package/scss/base/_typography.scss +9 -0
- package/scss/helpers/_mixins.scss +8 -0
- package/scss/objects/_container.scss +15 -3
- package/scss/utilities/_grid.scss +10 -25
- package/scss/utilities/_utilities.scss +10 -0
- package/scss/vars/_forms.scss +2 -1
- package/scss/vars/_grid.scss +20 -3
- package/scss/vars/_index.scss +1 -0
- package/scss/vars/_utilities.scss +2 -0
|
@@ -77,6 +77,15 @@ $details-caret-width: 1.75rem;
|
|
|
77
77
|
display: block;
|
|
78
78
|
margin: 1rem 0 0 0.5rem;
|
|
79
79
|
padding: 0 0 0 1.5rem;
|
|
80
|
+
|
|
81
|
+
// Restrict the width of textual content within the details content (paragraphs are already globally restricted)
|
|
82
|
+
|
|
83
|
+
ul,
|
|
84
|
+
ol,
|
|
85
|
+
label,
|
|
86
|
+
legend {
|
|
87
|
+
@include reading-width;
|
|
88
|
+
}
|
|
80
89
|
}
|
|
81
90
|
}
|
|
82
91
|
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
})
|
|
22
22
|
}}
|
|
23
23
|
</span>
|
|
24
|
-
<span class="ons-details-panel__banner-detail-title">
|
|
24
|
+
<span class="ons-details-panel__banner-detail-title ons-u-reading-width">
|
|
25
25
|
<span class="ons-details-panel__banner-detail-title--open"> {{ openText }} </span>
|
|
26
26
|
<span class="ons-details-panel__banner-detail-title--close"> {{ closeText }} </span>
|
|
27
27
|
</span>
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { setViewport } from '../../tests/helpers/puppeteer';
|
|
1
|
+
import { iPhoneX, setViewport } from '../../tests/helpers/puppeteer';
|
|
3
2
|
import { renderComponent, renderTemplate, setTestPage } from '../../tests/helpers/rendering';
|
|
4
3
|
|
|
5
|
-
const iPhoneX = KnownDevices['iPhone X'];
|
|
6
|
-
|
|
7
4
|
/* eslint-disable indent */
|
|
8
5
|
const EXAMPLE_PAGE = `
|
|
9
6
|
<div class="ons-page">
|
|
@@ -31,12 +31,12 @@
|
|
|
31
31
|
|
|
32
32
|
{# The media (a nested figure containing a chart or image) is provided via the caller
|
|
33
33
|
block, so the article does not need to know how the content is rendered. #}
|
|
34
|
-
<div class="ons-featured__media">
|
|
35
|
-
{{ caller() if caller }}
|
|
36
|
-
</div>
|
|
34
|
+
<div class="ons-featured__media">{{ caller() if caller }}</div>
|
|
37
35
|
|
|
38
36
|
{% if params.description %}
|
|
39
|
-
<div class="ons-featured__description">
|
|
37
|
+
<div class="ons-featured__description">
|
|
38
|
+
<div class="ons-u-reading-width">{{ params.description | safe }}</div>
|
|
39
|
+
</div>
|
|
40
40
|
{% endif %}
|
|
41
41
|
</div>
|
|
42
42
|
{% endmacro %}
|
|
@@ -123,8 +123,8 @@ describe('Macro: Featured Article', () => {
|
|
|
123
123
|
EXAMPLE_CHART_CALLER_CONTENT,
|
|
124
124
|
),
|
|
125
125
|
);
|
|
126
|
-
const
|
|
127
|
-
expect(
|
|
126
|
+
const description = $('.ons-featured__description .ons-u-reading-width').html().trim();
|
|
127
|
+
expect(description).toBe('Some description');
|
|
128
128
|
});
|
|
129
129
|
});
|
|
130
130
|
});
|
|
@@ -7,6 +7,9 @@
|
|
|
7
7
|
{{ params.heading }}
|
|
8
8
|
{{ closingHeadingTag | safe }}
|
|
9
9
|
<p class="ons-feedback__content">{{- params.content | safe -}}</p>
|
|
10
|
-
|
|
10
|
+
{# p tag ensures reading width is applied #}
|
|
11
|
+
<p class="ons-u-mb-no">
|
|
12
|
+
<a href="{{ params.linkUrl }}" class="ons-feedback__link">{{- params.linkText -}}</a>
|
|
13
|
+
</p>
|
|
11
14
|
</div>
|
|
12
15
|
{% endmacro %}
|
|
@@ -110,7 +110,7 @@ describe('FOR: Macro: Feedback', () => {
|
|
|
110
110
|
describe('WHEN: content is provided', () => {
|
|
111
111
|
const $ = cheerio.load(renderComponent('feedback', EXAMPLE_FEEDBACK));
|
|
112
112
|
test('THEN: renders paragraph with the provided content', () => {
|
|
113
|
-
expect($('p').text().trim()).toBe('Feedback content...');
|
|
113
|
+
expect($('p').first().text().trim()).toBe('Feedback content...');
|
|
114
114
|
});
|
|
115
115
|
});
|
|
116
116
|
});
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
|
|
35
35
|
{{ openingRootTag | safe }}
|
|
36
36
|
{% if params.figureNumber %}
|
|
37
|
-
<span class="ons-figure__number">{{ params.figureNumber }}</span>
|
|
37
|
+
<span class="ons-figure__number ons-u-reading-width">{{ params.figureNumber }}</span>
|
|
38
38
|
{% endif %}
|
|
39
39
|
{% if params.title %}
|
|
40
40
|
{{ openingTitleTag | safe }}{{ params.title }}{{ closingTitleTag | safe }}
|
|
@@ -61,9 +61,9 @@
|
|
|
61
61
|
|
|
62
62
|
{% if params.caption %}
|
|
63
63
|
{% if rootElement == 'figure' %}
|
|
64
|
-
<figcaption class="ons-figure__caption">{{ params.caption }}</figcaption>
|
|
64
|
+
<figcaption class="ons-figure__caption ons-u-reading-width">{{ params.caption }}</figcaption>
|
|
65
65
|
{% else %}
|
|
66
|
-
<span class="ons-figure__caption">{{ params.caption }}</span>
|
|
66
|
+
<span class="ons-figure__caption ons-u-reading-width">{{ params.caption }}</span>
|
|
67
67
|
{% endif %}
|
|
68
68
|
{% endif %}
|
|
69
69
|
{{ closingRootTag | safe }}
|
|
@@ -53,14 +53,17 @@
|
|
|
53
53
|
{% if params.footerWarning %}
|
|
54
54
|
{% from "components/panel/_macro.njk" import onsPanel %}
|
|
55
55
|
<div class="ons-footer__warning">
|
|
56
|
-
<div
|
|
56
|
+
<div
|
|
57
|
+
class="ons-container{{ ' ons-container--full-width' if params.fullWidth else "" }}{{ ' ons-container--wide' if params.wide else "" }}"
|
|
58
|
+
>
|
|
57
59
|
{%
|
|
58
60
|
call onsPanel({
|
|
59
61
|
"variant": "warn",
|
|
60
62
|
"classes": "ons-panel--warn--footer"
|
|
61
63
|
})
|
|
62
64
|
%}
|
|
63
|
-
{
|
|
65
|
+
{# p tag ensures reading width is applied #}
|
|
66
|
+
<div class="ons-u-reading-width">{{ params.footerWarning | safe }}</div>
|
|
64
67
|
{% endcall %}
|
|
65
68
|
</div>
|
|
66
69
|
</div>
|
|
@@ -370,7 +370,7 @@
|
|
|
370
370
|
"name": params.search.form.inputName | default('q'),
|
|
371
371
|
"width": 'full',
|
|
372
372
|
"label": {
|
|
373
|
-
"text": (params.search.form.inputLabel if params.search.form else params.searchLinks.searchNavigationInputLabel) | default('Chwilio’r SYG' if
|
|
373
|
+
"text": (params.search.form.inputLabel if params.search.form else params.searchLinks.searchNavigationInputLabel) | default('Chwilio’r SYG' if currentLanguageIsoCode == 'cy' else 'Search the ONS'),
|
|
374
374
|
"id": "header-search-input-label"
|
|
375
375
|
},
|
|
376
376
|
"searchButton": {
|
|
@@ -1131,6 +1131,27 @@ describe('FOR: Macro: Header', () => {
|
|
|
1131
1131
|
expect($('#header-search-input-label').text().trim()).toBe('Search the ONS');
|
|
1132
1132
|
});
|
|
1133
1133
|
});
|
|
1134
|
+
describe('WHEN: inputLabel is not provided and Welsh is the current language', () => {
|
|
1135
|
+
const $ = cheerio.load(
|
|
1136
|
+
renderComponent('header', {
|
|
1137
|
+
...EXAMPLE_HEADER_SEARCH,
|
|
1138
|
+
variants: 'basic',
|
|
1139
|
+
language: {
|
|
1140
|
+
languages: [
|
|
1141
|
+
{ url: '#0', isoCode: 'en', text: 'English', current: false },
|
|
1142
|
+
{ url: '#0', isoCode: 'cy', text: 'Cymraeg', current: true },
|
|
1143
|
+
],
|
|
1144
|
+
},
|
|
1145
|
+
search: {
|
|
1146
|
+
...EXAMPLE_HEADER_SEARCH.search,
|
|
1147
|
+
form: { ...EXAMPLE_HEADER_SEARCH.search.form, inputLabel: undefined },
|
|
1148
|
+
},
|
|
1149
|
+
}),
|
|
1150
|
+
);
|
|
1151
|
+
test('THEN: renders search input with Welsh default label', () => {
|
|
1152
|
+
expect($('#header-search-input-label').text().trim()).toBe('Chwilio’r SYG');
|
|
1153
|
+
});
|
|
1154
|
+
});
|
|
1134
1155
|
describe('WHEN: buttonText is provided', () => {
|
|
1135
1156
|
const $ = cheerio.load(renderComponent('header', { ...EXAMPLE_HEADER_SEARCH, variants: 'basic' }));
|
|
1136
1157
|
|
|
@@ -60,7 +60,10 @@
|
|
|
60
60
|
<!-- prettier-ignore-end -->
|
|
61
61
|
{% endif %}
|
|
62
62
|
{% if params.postTextboxLinkText %}
|
|
63
|
-
|
|
63
|
+
{# p tag ensures reading width is applied #}
|
|
64
|
+
<p class="ons-u-mb-no">
|
|
65
|
+
<a class="ons-u-fs-s ons-input__post-link" href="{{ params.postTextboxLinkUrl }}">{{ params.postTextboxLinkText }}</a>
|
|
66
|
+
</p>
|
|
64
67
|
{% endif %}
|
|
65
68
|
{% endset %}
|
|
66
69
|
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
padding: 0 0 0 1.5rem;
|
|
4
4
|
|
|
5
5
|
&__item {
|
|
6
|
+
@include reading-width;
|
|
7
|
+
|
|
6
8
|
&:first-child {
|
|
7
9
|
margin-top: 0.5rem;
|
|
8
10
|
}
|
|
@@ -109,14 +111,17 @@
|
|
|
109
111
|
}
|
|
110
112
|
|
|
111
113
|
@include bp-suffix('ons-list--inline') {
|
|
114
|
+
/* stylelint-disable-next-line nesting-selector-no-missing-scoping-root */
|
|
112
115
|
&:not(.ons-list--icons) {
|
|
113
116
|
margin: 0 1rem 0 0;
|
|
114
117
|
.ons-list__item {
|
|
118
|
+
max-width: none;
|
|
115
119
|
display: inline-block;
|
|
116
120
|
margin: 0 1rem 0 0;
|
|
117
121
|
}
|
|
118
122
|
}
|
|
119
123
|
|
|
124
|
+
/* stylelint-disable-next-line nesting-selector-no-missing-scoping-root */
|
|
120
125
|
&.ons-list--icons {
|
|
121
126
|
align-items: center;
|
|
122
127
|
display: flex;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
@use 'sass:math';
|
|
2
2
|
|
|
3
3
|
.ons-message {
|
|
4
|
-
border-radius: math.div($grid-
|
|
4
|
+
border-radius: math.div($grid-gutter-standard, 2);
|
|
5
5
|
margin-bottom: 2rem;
|
|
6
6
|
outline: 1px solid transparent; // Add transparent outline because Windows High Contrast Mode doesn't show background
|
|
7
7
|
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
|
|
24
24
|
&__head {
|
|
25
25
|
border-bottom: 1px solid var(--ons-color-borders);
|
|
26
|
-
padding: $grid-
|
|
26
|
+
padding: $grid-gutter-standard;
|
|
27
27
|
position: relative;
|
|
28
28
|
}
|
|
29
29
|
|
|
@@ -50,6 +50,6 @@
|
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
&__body {
|
|
53
|
-
padding: $grid-
|
|
53
|
+
padding: $grid-gutter-standard;
|
|
54
54
|
}
|
|
55
55
|
}
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
{% set closingTag = "</" ~ titleTag ~ ">" %}
|
|
63
63
|
<div class="ons-panel__header">
|
|
64
64
|
{{ openingTag | safe }} id="alert"{% if params.variant %}data-qa="{{ params.variant }}-header"{% endif %}
|
|
65
|
-
class="ons-panel__title ons-u-fs-r--b">{{ params.title | safe }}{{ closingTag | safe }}
|
|
65
|
+
class="ons-panel__title ons-u-fs-r--b ons-u-reading-width">{{ params.title | safe }}{{ closingTag | safe }}
|
|
66
66
|
</div>
|
|
67
67
|
{% else %}
|
|
68
68
|
{% if not params.variant or params.variant == "branded" or params.variant == "info" or params.variant == "bare" %}
|
|
@@ -112,6 +112,14 @@
|
|
|
112
112
|
margin: 0;
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
|
+
|
|
116
|
+
// Restrict the width of textual content within the panel body (paragraphs are already globally restricted)
|
|
117
|
+
ul,
|
|
118
|
+
ol,
|
|
119
|
+
label,
|
|
120
|
+
legend {
|
|
121
|
+
@include reading-width;
|
|
122
|
+
}
|
|
115
123
|
}
|
|
116
124
|
|
|
117
125
|
&__error {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{% macro onsSkipToContent(params) %}
|
|
2
2
|
<div role="region">
|
|
3
3
|
{% set text = params.text | default('Skip to content') %}
|
|
4
|
-
<a class="ons-skip-to-content ons-u-fs-r--b" href="{{ params.url }}">{{ text }}</a>
|
|
4
|
+
<a class="ons-skip-to-content ons-u-fs-r--b" href="{{ params.url }}"><span class="ons-skip-to-content__text">{{ text }}</span></a>
|
|
5
5
|
</div>
|
|
6
6
|
{% endmacro %}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
.ons-skip-to-content {
|
|
2
|
+
/* stylelint-disable-next-line property-no-deprecated */
|
|
2
3
|
clip: rect(0 0 0 0);
|
|
3
4
|
clip-path: inset(50%);
|
|
4
5
|
display: block;
|
|
@@ -13,6 +14,7 @@
|
|
|
13
14
|
&:focus {
|
|
14
15
|
background-color: var(--ons-color-focus);
|
|
15
16
|
box-shadow: 0;
|
|
17
|
+
/* stylelint-disable-next-line property-no-deprecated */
|
|
16
18
|
clip: auto;
|
|
17
19
|
clip-path: none;
|
|
18
20
|
color: var(--ons-color-text-link-focus);
|
|
@@ -28,4 +30,10 @@
|
|
|
28
30
|
white-space: inherit;
|
|
29
31
|
width: auto;
|
|
30
32
|
}
|
|
33
|
+
|
|
34
|
+
&__text {
|
|
35
|
+
// Reading width max-width is hard-coded as skip to content sits outside the `ons-container` class
|
|
36
|
+
max-width: $reading-width;
|
|
37
|
+
display: block;
|
|
38
|
+
}
|
|
31
39
|
}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { setViewport } from '../../tests/helpers/puppeteer';
|
|
1
|
+
import { iPhoneX, setViewport } from '../../tests/helpers/puppeteer';
|
|
3
2
|
import { renderComponent, setTestPage } from '../../tests/helpers/rendering';
|
|
4
3
|
|
|
5
|
-
const iPhoneX = KnownDevices['iPhone X'];
|
|
6
|
-
|
|
7
4
|
const EXAMPLE_TABS = {
|
|
8
5
|
title: 'Example tabs',
|
|
9
6
|
titleClasses: 'ons-u-fs-m',
|