@ons/design-system 53.0.4 → 53.1.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.
@@ -131,7 +131,7 @@
131
131
  box-shadow: 0 0 5px 0 rgba($color-black, 0.6);
132
132
  left: 0;
133
133
  position: absolute;
134
- z-index: 1;
134
+ z-index: 10;
135
135
  }
136
136
  }
137
137
  }
@@ -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
+ });
@@ -2,6 +2,7 @@
2
2
  {% from "components/button/_macro.njk" import onsButton %}
3
3
  {% from "components/icons/_macro.njk" import onsIcon %}
4
4
  {% from "components/navigation/_macro.njk" import onsNavigation %}
5
+ {% from "components/browser-banner/_macro.njk" import onsBrowserBanner %}
5
6
 
6
7
  {% set title_tag = "h1" if params.titleAsH1 else "div" %}
7
8
  {% set currentLanguageISOCode = "en" %}
@@ -12,6 +13,12 @@
12
13
  {% endif %}
13
14
 
14
15
  <header class="ons-header {% if params.classes is defined and params.classes %} {{ params.classes }}{% endif %}{% if params.variants is not string %}{% for variant in params.variants %} ons-header--{{ variant }}{% endfor %}{% else %} ons-header--{{ params.variants }}{% endif %}" role="banner">
16
+ {{
17
+ onsBrowserBanner({
18
+ "lang": currentLanguageISOCode,
19
+ "wide": params.wide
20
+ })
21
+ }}
15
22
  {% if params.phase is defined and params.phase %}
16
23
  {% from "components/phase-banner/_macro.njk" import onsPhaseBanner %}
17
24
  {{ onsPhaseBanner(params.phase) }}