govuk_publishing_components 20.5.1 → 20.5.2
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.
- checksums.yaml +4 -4
- data/app/assets/stylesheets/govuk_publishing_components/components/_step-by-step-nav.scss +1 -7
- data/lib/govuk_publishing_components/version.rb +1 -1
- data/node_modules/govuk-frontend/govuk/all.js +56 -63
- data/node_modules/govuk-frontend/govuk/components/accordion/README.md +0 -2
- data/node_modules/govuk-frontend/govuk/components/accordion/template.njk +18 -16
- data/node_modules/govuk-frontend/govuk/components/button/_button.scss +11 -0
- data/node_modules/govuk-frontend/govuk/components/button/macro-options.json +6 -0
- data/node_modules/govuk-frontend/govuk/components/button/template.njk +3 -3
- data/node_modules/govuk-frontend/govuk/components/character-count/macro-options.json +14 -0
- data/node_modules/govuk-frontend/govuk/components/character-count/template.njk +1 -0
- data/node_modules/govuk-frontend/govuk/components/checkboxes/template.njk +47 -45
- data/node_modules/govuk-frontend/govuk/components/date-input/template.njk +2 -3
- data/node_modules/govuk-frontend/govuk/components/details/details.js +56 -63
- data/node_modules/govuk-frontend/govuk/components/fieldset/_fieldset.scss +0 -2
- data/node_modules/govuk-frontend/govuk/components/fieldset/macro-options.json +6 -0
- data/node_modules/govuk-frontend/govuk/components/fieldset/template.njk +1 -0
- data/node_modules/govuk-frontend/govuk/components/footer/_footer.scss +4 -2
- data/node_modules/govuk-frontend/govuk/components/input/macro-options.json +6 -0
- data/node_modules/govuk-frontend/govuk/components/input/template.njk +1 -0
- data/node_modules/govuk-frontend/govuk/components/radios/template.njk +48 -46
- data/node_modules/govuk-frontend/govuk/components/select/template.njk +6 -4
- data/node_modules/govuk-frontend/govuk/components/summary-list/macro-options.json +7 -1
- data/node_modules/govuk-frontend/govuk/components/summary-list/template.njk +27 -25
- data/node_modules/govuk-frontend/govuk/components/table/template.njk +20 -18
- data/node_modules/govuk-frontend/govuk/components/tabs/template.njk +15 -11
- data/node_modules/govuk-frontend/govuk/helpers/_font-faces.scss +20 -18
- data/node_modules/govuk-frontend/package.json +18 -18
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 38f751bcc662ac5194c82e962eddca8edd4b0fa27c1af17f1cb59dc2d9c19e4a
|
4
|
+
data.tar.gz: 4c87626b816dd2bebc14ab205f8cb5752c6010b07ebc1e08dd80b7e4c9465039
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b53285bb7fe7369a290e2cb0d40ca82edf0e54c5131dbec6611b14e548026f34f1baf39cdd2b7dc20b3a60f6a122cae9eae202ecca70411d6039038ae6ac64b6
|
7
|
+
data.tar.gz: 502a6b3a0650938848b4cd46cb16f6de1e43157e215073297578ce1400b21533e4e735ca6ac0a983a53ac091216fc7b47a3031383d07a969693a62488dac5260
|
@@ -262,7 +262,7 @@ $top-border: solid 2px govuk-colour("mid-grey", $legacy: "grey-3");
|
|
262
262
|
}
|
263
263
|
|
264
264
|
&:hover {
|
265
|
-
.gem-c-step-nav__button,
|
265
|
+
.gem-c-step-nav__button:not(:focus),
|
266
266
|
.gem-c-step-nav__circle {
|
267
267
|
color: $govuk-link-colour;
|
268
268
|
}
|
@@ -272,12 +272,6 @@ $top-border: solid 2px govuk-colour("mid-grey", $legacy: "grey-3");
|
|
272
272
|
}
|
273
273
|
}
|
274
274
|
|
275
|
-
&:focus {
|
276
|
-
.gem-c-step-nav__button {
|
277
|
-
color: $govuk-focus-text-colour;
|
278
|
-
}
|
279
|
-
}
|
280
|
-
|
281
275
|
.gem-c-step-nav--large & {
|
282
276
|
@include govuk-media-query($from: tablet) {
|
283
277
|
padding: govuk-spacing(6) 0;
|
@@ -1361,58 +1361,28 @@ Button.prototype.init = function () {
|
|
1361
1361
|
var KEY_ENTER = 13;
|
1362
1362
|
var KEY_SPACE$1 = 32;
|
1363
1363
|
|
1364
|
-
// Create a flag to know if the browser supports navtive details
|
1365
|
-
var NATIVE_DETAILS = typeof document.createElement('details').open === 'boolean';
|
1366
|
-
|
1367
1364
|
function Details ($module) {
|
1368
1365
|
this.$module = $module;
|
1369
1366
|
}
|
1370
1367
|
|
1371
|
-
|
1372
|
-
|
1373
|
-
|
1374
|
-
|
1375
|
-
*/
|
1376
|
-
Details.prototype.handleInputs = function (node, callback) {
|
1377
|
-
node.addEventListener('keypress', function (event) {
|
1378
|
-
var target = event.target;
|
1379
|
-
// When the key gets pressed - check if it is enter or space
|
1380
|
-
if (event.keyCode === KEY_ENTER || event.keyCode === KEY_SPACE$1) {
|
1381
|
-
if (target.nodeName.toLowerCase() === 'summary') {
|
1382
|
-
// Prevent space from scrolling the page
|
1383
|
-
// and enter from submitting a form
|
1384
|
-
event.preventDefault();
|
1385
|
-
// Click to let the click event do all the necessary action
|
1386
|
-
if (target.click) {
|
1387
|
-
target.click();
|
1388
|
-
} else {
|
1389
|
-
// except Safari 5.1 and under don't support .click() here
|
1390
|
-
callback(event);
|
1391
|
-
}
|
1392
|
-
}
|
1393
|
-
}
|
1394
|
-
});
|
1368
|
+
Details.prototype.init = function () {
|
1369
|
+
if (!this.$module) {
|
1370
|
+
return
|
1371
|
+
}
|
1395
1372
|
|
1396
|
-
//
|
1397
|
-
|
1398
|
-
var target = event.target;
|
1399
|
-
if (event.keyCode === KEY_SPACE$1) {
|
1400
|
-
if (target.nodeName.toLowerCase() === 'summary') {
|
1401
|
-
event.preventDefault();
|
1402
|
-
}
|
1403
|
-
}
|
1404
|
-
});
|
1373
|
+
// If there is native details support, we want to avoid running code to polyfill native behaviour.
|
1374
|
+
var hasNativeDetails = typeof this.$module.open === 'boolean';
|
1405
1375
|
|
1406
|
-
|
1376
|
+
if (hasNativeDetails) {
|
1377
|
+
return
|
1378
|
+
}
|
1379
|
+
|
1380
|
+
this.polyfillDetails();
|
1407
1381
|
};
|
1408
1382
|
|
1409
|
-
Details.prototype.
|
1383
|
+
Details.prototype.polyfillDetails = function () {
|
1410
1384
|
var $module = this.$module;
|
1411
1385
|
|
1412
|
-
if (!$module) {
|
1413
|
-
return
|
1414
|
-
}
|
1415
|
-
|
1416
1386
|
// Save shortcuts to the inner summary and content elements
|
1417
1387
|
var $summary = this.$summary = $module.getElementsByTagName('summary').item(0);
|
1418
1388
|
var $content = this.$content = $module.getElementsByTagName('div').item(0);
|
@@ -1442,9 +1412,7 @@ Details.prototype.init = function () {
|
|
1442
1412
|
//
|
1443
1413
|
// We have to use the camelcase `tabIndex` property as there is a bug in IE6/IE7 when we set the correct attribute lowercase:
|
1444
1414
|
// See http://web.archive.org/web/20170120194036/http://www.saliences.com/browserBugs/tabIndex.html for more information.
|
1445
|
-
|
1446
|
-
$summary.tabIndex = 0;
|
1447
|
-
}
|
1415
|
+
$summary.tabIndex = 0;
|
1448
1416
|
|
1449
1417
|
// Detect initial open state
|
1450
1418
|
var openAttr = $module.getAttribute('open') !== null;
|
@@ -1454,20 +1422,18 @@ Details.prototype.init = function () {
|
|
1454
1422
|
} else {
|
1455
1423
|
$summary.setAttribute('aria-expanded', 'false');
|
1456
1424
|
$content.setAttribute('aria-hidden', 'true');
|
1457
|
-
|
1458
|
-
$content.style.display = 'none';
|
1459
|
-
}
|
1425
|
+
$content.style.display = 'none';
|
1460
1426
|
}
|
1461
1427
|
|
1462
1428
|
// Bind an event to handle summary elements
|
1463
|
-
this.
|
1429
|
+
this.polyfillHandleInputs($summary, this.polyfillSetAttributes.bind(this));
|
1464
1430
|
};
|
1465
1431
|
|
1466
1432
|
/**
|
1467
1433
|
* Define a statechange function that updates aria-expanded and style.display
|
1468
1434
|
* @param {object} summary element
|
1469
1435
|
*/
|
1470
|
-
Details.prototype.
|
1436
|
+
Details.prototype.polyfillSetAttributes = function () {
|
1471
1437
|
var $module = this.$module;
|
1472
1438
|
var $summary = this.$summary;
|
1473
1439
|
var $content = this.$content;
|
@@ -1478,27 +1444,54 @@ Details.prototype.setAttributes = function () {
|
|
1478
1444
|
$summary.setAttribute('aria-expanded', (expanded ? 'false' : 'true'));
|
1479
1445
|
$content.setAttribute('aria-hidden', (hidden ? 'false' : 'true'));
|
1480
1446
|
|
1481
|
-
|
1482
|
-
$content.style.display = (expanded ? 'none' : '');
|
1447
|
+
$content.style.display = (expanded ? 'none' : '');
|
1483
1448
|
|
1484
|
-
|
1485
|
-
|
1486
|
-
|
1487
|
-
|
1488
|
-
|
1489
|
-
}
|
1449
|
+
var hasOpenAttr = $module.getAttribute('open') !== null;
|
1450
|
+
if (!hasOpenAttr) {
|
1451
|
+
$module.setAttribute('open', 'open');
|
1452
|
+
} else {
|
1453
|
+
$module.removeAttribute('open');
|
1490
1454
|
}
|
1455
|
+
|
1491
1456
|
return true
|
1492
1457
|
};
|
1493
1458
|
|
1494
1459
|
/**
|
1495
|
-
*
|
1460
|
+
* Handle cross-modal click events
|
1496
1461
|
* @param {object} node element
|
1462
|
+
* @param {function} callback function
|
1497
1463
|
*/
|
1498
|
-
Details.prototype.
|
1499
|
-
node.
|
1500
|
-
|
1501
|
-
|
1464
|
+
Details.prototype.polyfillHandleInputs = function (node, callback) {
|
1465
|
+
node.addEventListener('keypress', function (event) {
|
1466
|
+
var target = event.target;
|
1467
|
+
// When the key gets pressed - check if it is enter or space
|
1468
|
+
if (event.keyCode === KEY_ENTER || event.keyCode === KEY_SPACE$1) {
|
1469
|
+
if (target.nodeName.toLowerCase() === 'summary') {
|
1470
|
+
// Prevent space from scrolling the page
|
1471
|
+
// and enter from submitting a form
|
1472
|
+
event.preventDefault();
|
1473
|
+
// Click to let the click event do all the necessary action
|
1474
|
+
if (target.click) {
|
1475
|
+
target.click();
|
1476
|
+
} else {
|
1477
|
+
// except Safari 5.1 and under don't support .click() here
|
1478
|
+
callback(event);
|
1479
|
+
}
|
1480
|
+
}
|
1481
|
+
}
|
1482
|
+
});
|
1483
|
+
|
1484
|
+
// Prevent keyup to prevent clicking twice in Firefox when using space key
|
1485
|
+
node.addEventListener('keyup', function (event) {
|
1486
|
+
var target = event.target;
|
1487
|
+
if (event.keyCode === KEY_SPACE$1) {
|
1488
|
+
if (target.nodeName.toLowerCase() === 'summary') {
|
1489
|
+
event.preventDefault();
|
1490
|
+
}
|
1491
|
+
}
|
1492
|
+
});
|
1493
|
+
|
1494
|
+
node.addEventListener('click', callback);
|
1502
1495
|
};
|
1503
1496
|
|
1504
1497
|
function CharacterCount ($module) {
|
@@ -12,6 +12,4 @@ Find out when to use the details component in your service in the [GOV.UK Design
|
|
12
12
|
|
13
13
|
Use options to customise the appearance, content and behaviour of a component when using a macro, for example, changing the text.
|
14
14
|
|
15
|
-
`id` option given to instances of the component must be **unique** across the domain of your service (as the expanded state of individual instances of the component persists across page loads using [`localStorage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage)).
|
16
|
-
|
17
15
|
See [options table](https://design-system.service.gov.uk/components/accordion/#options-example-default) for details.
|
@@ -4,22 +4,24 @@
|
|
4
4
|
<div class="govuk-accordion {%- if params.classes %} {{ params.classes }}{% endif -%}" data-module="govuk-accordion" id="{{ id }}"
|
5
5
|
{%- for attribute, value in params.attributes %} {{attribute}}="{{value}}"{% endfor %}>
|
6
6
|
{% for item in params.items %}
|
7
|
-
|
8
|
-
<div class="govuk-accordion__section-
|
9
|
-
<
|
10
|
-
<
|
11
|
-
{{
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
7
|
+
{% if item %}
|
8
|
+
<div class="govuk-accordion__section {% if item.expanded %}govuk-accordion__section--expanded{% endif %}">
|
9
|
+
<div class="govuk-accordion__section-header">
|
10
|
+
<h{{ headingLevel }} class="govuk-accordion__section-heading">
|
11
|
+
<span class="govuk-accordion__section-button" id="{{ id }}-heading-{{ loop.index }}">
|
12
|
+
{{ item.heading.html | safe if item.heading.html else item.heading.text }}
|
13
|
+
</span>
|
14
|
+
</h{{ headingLevel }}>
|
15
|
+
{% if item.summary.html or item.summary.text %}
|
16
|
+
<div class="govuk-accordion__section-summary govuk-body" id="{{ id }}-summary-{{ loop.index }}">
|
17
|
+
{{ item.summary.html | safe if item.summary.html else item.summary.text }}
|
18
|
+
</div>
|
19
|
+
{% endif %}
|
20
|
+
</div>
|
21
|
+
<div id="{{ id }}-content-{{ loop.index }}" class="govuk-accordion__section-content" aria-labelledby="{{ id }}-heading-{{ loop.index }}">
|
22
|
+
{{ item.content.html | safe if item.content.html else item.content.text }}
|
23
|
+
</div>
|
19
24
|
</div>
|
20
|
-
|
21
|
-
{{ item.content.html | safe if item.content.html else item.content.text }}
|
22
|
-
</div>
|
23
|
-
</div>
|
25
|
+
{% endif %}
|
24
26
|
{% endfor %}
|
25
27
|
</div>
|
@@ -98,6 +98,17 @@
|
|
98
98
|
box-shadow: inset 0 0 0 1px $govuk-focus-colour;
|
99
99
|
}
|
100
100
|
|
101
|
+
// alphagov/govuk_template includes a specific a:link:focus selector
|
102
|
+
// designed to make unvisited links a slightly darker blue when focussed, so
|
103
|
+
// we need to override the text colour for that combination of selectors so
|
104
|
+
// so that unvisited links styled as buttons do not end up with dark blue
|
105
|
+
// text when focussed.
|
106
|
+
@include govuk-compatibility(govuk_template) {
|
107
|
+
&:link:focus {
|
108
|
+
color: $govuk-button-text-colour;
|
109
|
+
}
|
110
|
+
}
|
111
|
+
|
101
112
|
&:focus:not(:active):not(:hover) {
|
102
113
|
border-color: $govuk-focus-colour;
|
103
114
|
color: $govuk-focus-text-colour;
|
@@ -64,5 +64,11 @@
|
|
64
64
|
"type": "boolean",
|
65
65
|
"required": false,
|
66
66
|
"description": "Prevent accidental double clicks on submit buttons from submitting forms multiple times"
|
67
|
+
},
|
68
|
+
{
|
69
|
+
"name": "isStartButton",
|
70
|
+
"type": "boolean",
|
71
|
+
"required": false,
|
72
|
+
"description": "Use for the main call to action on your service's start page."
|
67
73
|
}
|
68
74
|
]
|
@@ -37,7 +37,7 @@ treat it as an interactive element - without this it will be
|
|
37
37
|
|
38
38
|
{#- Define common attributes we can use for both button and input types #}
|
39
39
|
|
40
|
-
{%- set buttonAttributes %}{% if params.name %} name="{{ params.name }}"{% endif %}
|
40
|
+
{%- set buttonAttributes %}{% if params.name %} name="{{ params.name }}"{% endif %}{% if params.disabled %} disabled="disabled" aria-disabled="true"{% endif %}{% if params.preventDoubleClick %} data-prevent-double-click="true"{% endif %}{% endset %}
|
41
41
|
|
42
42
|
{#- Actually create a button... or a link! #}
|
43
43
|
|
@@ -49,12 +49,12 @@ treat it as an interactive element - without this it will be
|
|
49
49
|
</a>
|
50
50
|
|
51
51
|
{%- elseif element == 'button' %}
|
52
|
-
<button {%- if params.value %} value="{{ params.value }}"{% endif %} {{- buttonAttributes | safe }} {{- commonAttributes | safe }}>
|
52
|
+
<button {%- if params.value %} value="{{ params.value }}"{% endif %}{%- if params.type %} type="{{ params.type }}"{% endif %} {{- buttonAttributes | safe }} {{- commonAttributes | safe }}>
|
53
53
|
{{ params.html | safe if params.html else params.text }}
|
54
54
|
{# Indentation is intentional to output HTML nicely #}
|
55
55
|
{{- iconHtml | safe | trim | indent(2, true) if iconHtml -}}
|
56
56
|
</button>
|
57
57
|
|
58
58
|
{%- elseif element == 'input' %}
|
59
|
-
<input value="{{ params.text }}" {{- buttonAttributes | safe }} {{- commonAttributes | safe }}>
|
59
|
+
<input value="{{ params.text }}" type="{{ params.type if params.type else 'submit' }}" {{- buttonAttributes | safe }} {{- commonAttributes | safe }}>
|
60
60
|
{%- endif %}
|
@@ -62,6 +62,20 @@
|
|
62
62
|
"description": "Options for the errorMessage component (e.g. text).",
|
63
63
|
"isComponent": true
|
64
64
|
},
|
65
|
+
{
|
66
|
+
"name": "formGroup",
|
67
|
+
"type": "object",
|
68
|
+
"required": false,
|
69
|
+
"description": "Options for the form-group wrapper",
|
70
|
+
"params": [
|
71
|
+
{
|
72
|
+
"name": "classes",
|
73
|
+
"type": "string",
|
74
|
+
"required": false,
|
75
|
+
"description": "Classes to add to the form group (e.g. to show error state for the whole group)"
|
76
|
+
}
|
77
|
+
]
|
78
|
+
},
|
65
79
|
{
|
66
80
|
"name": "classes",
|
67
81
|
"type": "string",
|
@@ -10,6 +10,7 @@
|
|
10
10
|
describedBy: params.id + '-info',
|
11
11
|
rows: params.rows,
|
12
12
|
value: params.value,
|
13
|
+
formGroup: params.formGroup,
|
13
14
|
classes: 'govuk-js-character-count ' + (' govuk-textarea--error' if params.errorMessage) + (params.classes if params.classes),
|
14
15
|
label: {
|
15
16
|
html: params.label.html,
|
@@ -53,52 +53,54 @@
|
|
53
53
|
{%- for attribute, value in params.attributes %} {{ attribute }}="{{ value }}"{% endfor %}
|
54
54
|
{%- if isConditional %} data-module="govuk-checkboxes"{% endif -%}>
|
55
55
|
{% for item in params.items %}
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
56
|
+
{% if item %}
|
57
|
+
{#- If the user explicitly sets an id, use this instead of the regular idPrefix -#}
|
58
|
+
{%- if item.id -%}
|
59
|
+
{%- set id = item.id -%}
|
60
|
+
{%- else -%}
|
61
|
+
{#- The first id should not have a number suffix so it's easy to link to from the error summary component -#}
|
62
|
+
{%- if loop.first -%}
|
63
|
+
{%- set id = idPrefix %}
|
64
|
+
{% else %}
|
65
|
+
{%- set id = idPrefix + "-" + loop.index -%}
|
66
|
+
{%- endif -%}
|
67
|
+
{%- endif -%}
|
68
|
+
{% set name = item.name if item.name else params.name %}
|
69
|
+
{% set conditionalId = "conditional-" + id %}
|
70
|
+
{% set hasHint = true if item.hint.text or item.hint.html %}
|
71
|
+
{% set itemHintId = id + "-item-hint" if hasHint else "" %}
|
72
|
+
{% set itemDescribedBy = describedBy if not hasFieldset else "" %}
|
73
|
+
{% set itemDescribedBy = (itemDescribedBy + " " + itemHintId) | trim %}
|
74
|
+
<div class="govuk-checkboxes__item">
|
75
|
+
<input class="govuk-checkboxes__input" id="{{ id }}" name="{{ name }}" type="checkbox" value="{{ item.value }}"
|
76
|
+
{{-" checked" if item.checked }}
|
77
|
+
{{-" disabled" if item.disabled }}
|
78
|
+
{%- if item.conditional %} data-aria-controls="{{ conditionalId }}"{% endif -%}
|
79
|
+
{%- if itemDescribedBy %} aria-describedby="{{ itemDescribedBy }}"{% endif -%}
|
80
|
+
{%- for attribute, value in item.attributes %} {{ attribute }}="{{ value }}"{% endfor -%}>
|
81
|
+
{{ govukLabel({
|
82
|
+
html: item.html,
|
83
|
+
text: item.text,
|
84
|
+
classes: 'govuk-checkboxes__label' + (' ' + item.label.classes if item.label.classes),
|
85
|
+
attributes: item.label.attributes,
|
86
|
+
for: id
|
87
|
+
}) | indent(6) | trim }}
|
88
|
+
{% if hasHint %}
|
89
|
+
{{ govukHint({
|
90
|
+
id: itemHintId,
|
91
|
+
classes: 'govuk-checkboxes__hint',
|
92
|
+
attributes: item.hint.attributes,
|
93
|
+
html: item.hint.html,
|
94
|
+
text: item.hint.text
|
95
|
+
}) | indent(6) | trim }}
|
96
|
+
{% endif %}
|
97
|
+
</div>
|
98
|
+
{% if item.conditional %}
|
99
|
+
<div class="govuk-checkboxes__conditional{% if not item.checked %} govuk-checkboxes__conditional--hidden{% endif %}" id="{{ conditionalId }}">
|
100
|
+
{{ item.conditional.html | safe }}
|
101
|
+
</div>
|
102
|
+
{% endif %}
|
95
103
|
{% endif %}
|
96
|
-
</div>
|
97
|
-
{% if item.conditional %}
|
98
|
-
<div class="govuk-checkboxes__conditional{% if not item.checked %} govuk-checkboxes__conditional--hidden{% endif %}" id="{{ conditionalId }}">
|
99
|
-
{{ item.conditional.html | safe }}
|
100
|
-
</div>
|
101
|
-
{% endif %}
|
102
104
|
{% endfor %}
|
103
105
|
</div>
|
104
106
|
{% endset -%}
|
@@ -84,9 +84,8 @@
|
|
84
84
|
{% call govukFieldset({
|
85
85
|
describedBy: describedBy,
|
86
86
|
classes: params.fieldset.classes,
|
87
|
-
|
88
|
-
|
89
|
-
},
|
87
|
+
role: 'group',
|
88
|
+
attributes: params.fieldset.attributes,
|
90
89
|
legend: params.fieldset.legend
|
91
90
|
}) %}
|
92
91
|
{{ innerHtml | trim | safe }}
|
@@ -690,58 +690,28 @@ function generateUniqueID () {
|
|
690
690
|
var KEY_ENTER = 13;
|
691
691
|
var KEY_SPACE = 32;
|
692
692
|
|
693
|
-
// Create a flag to know if the browser supports navtive details
|
694
|
-
var NATIVE_DETAILS = typeof document.createElement('details').open === 'boolean';
|
695
|
-
|
696
693
|
function Details ($module) {
|
697
694
|
this.$module = $module;
|
698
695
|
}
|
699
696
|
|
700
|
-
|
701
|
-
|
702
|
-
|
703
|
-
|
704
|
-
*/
|
705
|
-
Details.prototype.handleInputs = function (node, callback) {
|
706
|
-
node.addEventListener('keypress', function (event) {
|
707
|
-
var target = event.target;
|
708
|
-
// When the key gets pressed - check if it is enter or space
|
709
|
-
if (event.keyCode === KEY_ENTER || event.keyCode === KEY_SPACE) {
|
710
|
-
if (target.nodeName.toLowerCase() === 'summary') {
|
711
|
-
// Prevent space from scrolling the page
|
712
|
-
// and enter from submitting a form
|
713
|
-
event.preventDefault();
|
714
|
-
// Click to let the click event do all the necessary action
|
715
|
-
if (target.click) {
|
716
|
-
target.click();
|
717
|
-
} else {
|
718
|
-
// except Safari 5.1 and under don't support .click() here
|
719
|
-
callback(event);
|
720
|
-
}
|
721
|
-
}
|
722
|
-
}
|
723
|
-
});
|
697
|
+
Details.prototype.init = function () {
|
698
|
+
if (!this.$module) {
|
699
|
+
return
|
700
|
+
}
|
724
701
|
|
725
|
-
//
|
726
|
-
|
727
|
-
var target = event.target;
|
728
|
-
if (event.keyCode === KEY_SPACE) {
|
729
|
-
if (target.nodeName.toLowerCase() === 'summary') {
|
730
|
-
event.preventDefault();
|
731
|
-
}
|
732
|
-
}
|
733
|
-
});
|
702
|
+
// If there is native details support, we want to avoid running code to polyfill native behaviour.
|
703
|
+
var hasNativeDetails = typeof this.$module.open === 'boolean';
|
734
704
|
|
735
|
-
|
705
|
+
if (hasNativeDetails) {
|
706
|
+
return
|
707
|
+
}
|
708
|
+
|
709
|
+
this.polyfillDetails();
|
736
710
|
};
|
737
711
|
|
738
|
-
Details.prototype.
|
712
|
+
Details.prototype.polyfillDetails = function () {
|
739
713
|
var $module = this.$module;
|
740
714
|
|
741
|
-
if (!$module) {
|
742
|
-
return
|
743
|
-
}
|
744
|
-
|
745
715
|
// Save shortcuts to the inner summary and content elements
|
746
716
|
var $summary = this.$summary = $module.getElementsByTagName('summary').item(0);
|
747
717
|
var $content = this.$content = $module.getElementsByTagName('div').item(0);
|
@@ -771,9 +741,7 @@ Details.prototype.init = function () {
|
|
771
741
|
//
|
772
742
|
// We have to use the camelcase `tabIndex` property as there is a bug in IE6/IE7 when we set the correct attribute lowercase:
|
773
743
|
// See http://web.archive.org/web/20170120194036/http://www.saliences.com/browserBugs/tabIndex.html for more information.
|
774
|
-
|
775
|
-
$summary.tabIndex = 0;
|
776
|
-
}
|
744
|
+
$summary.tabIndex = 0;
|
777
745
|
|
778
746
|
// Detect initial open state
|
779
747
|
var openAttr = $module.getAttribute('open') !== null;
|
@@ -783,20 +751,18 @@ Details.prototype.init = function () {
|
|
783
751
|
} else {
|
784
752
|
$summary.setAttribute('aria-expanded', 'false');
|
785
753
|
$content.setAttribute('aria-hidden', 'true');
|
786
|
-
|
787
|
-
$content.style.display = 'none';
|
788
|
-
}
|
754
|
+
$content.style.display = 'none';
|
789
755
|
}
|
790
756
|
|
791
757
|
// Bind an event to handle summary elements
|
792
|
-
this.
|
758
|
+
this.polyfillHandleInputs($summary, this.polyfillSetAttributes.bind(this));
|
793
759
|
};
|
794
760
|
|
795
761
|
/**
|
796
762
|
* Define a statechange function that updates aria-expanded and style.display
|
797
763
|
* @param {object} summary element
|
798
764
|
*/
|
799
|
-
Details.prototype.
|
765
|
+
Details.prototype.polyfillSetAttributes = function () {
|
800
766
|
var $module = this.$module;
|
801
767
|
var $summary = this.$summary;
|
802
768
|
var $content = this.$content;
|
@@ -807,27 +773,54 @@ Details.prototype.setAttributes = function () {
|
|
807
773
|
$summary.setAttribute('aria-expanded', (expanded ? 'false' : 'true'));
|
808
774
|
$content.setAttribute('aria-hidden', (hidden ? 'false' : 'true'));
|
809
775
|
|
810
|
-
|
811
|
-
$content.style.display = (expanded ? 'none' : '');
|
776
|
+
$content.style.display = (expanded ? 'none' : '');
|
812
777
|
|
813
|
-
|
814
|
-
|
815
|
-
|
816
|
-
|
817
|
-
|
818
|
-
}
|
778
|
+
var hasOpenAttr = $module.getAttribute('open') !== null;
|
779
|
+
if (!hasOpenAttr) {
|
780
|
+
$module.setAttribute('open', 'open');
|
781
|
+
} else {
|
782
|
+
$module.removeAttribute('open');
|
819
783
|
}
|
784
|
+
|
820
785
|
return true
|
821
786
|
};
|
822
787
|
|
823
788
|
/**
|
824
|
-
*
|
789
|
+
* Handle cross-modal click events
|
825
790
|
* @param {object} node element
|
791
|
+
* @param {function} callback function
|
826
792
|
*/
|
827
|
-
Details.prototype.
|
828
|
-
node.
|
829
|
-
|
830
|
-
|
793
|
+
Details.prototype.polyfillHandleInputs = function (node, callback) {
|
794
|
+
node.addEventListener('keypress', function (event) {
|
795
|
+
var target = event.target;
|
796
|
+
// When the key gets pressed - check if it is enter or space
|
797
|
+
if (event.keyCode === KEY_ENTER || event.keyCode === KEY_SPACE) {
|
798
|
+
if (target.nodeName.toLowerCase() === 'summary') {
|
799
|
+
// Prevent space from scrolling the page
|
800
|
+
// and enter from submitting a form
|
801
|
+
event.preventDefault();
|
802
|
+
// Click to let the click event do all the necessary action
|
803
|
+
if (target.click) {
|
804
|
+
target.click();
|
805
|
+
} else {
|
806
|
+
// except Safari 5.1 and under don't support .click() here
|
807
|
+
callback(event);
|
808
|
+
}
|
809
|
+
}
|
810
|
+
}
|
811
|
+
});
|
812
|
+
|
813
|
+
// Prevent keyup to prevent clicking twice in Firefox when using space key
|
814
|
+
node.addEventListener('keyup', function (event) {
|
815
|
+
var target = event.target;
|
816
|
+
if (event.keyCode === KEY_SPACE) {
|
817
|
+
if (target.nodeName.toLowerCase() === 'summary') {
|
818
|
+
event.preventDefault();
|
819
|
+
}
|
820
|
+
}
|
821
|
+
});
|
822
|
+
|
823
|
+
node.addEventListener('click', callback);
|
831
824
|
};
|
832
825
|
|
833
826
|
return Details;
|
@@ -43,6 +43,12 @@
|
|
43
43
|
"required": false,
|
44
44
|
"description": "Classes to add to the fieldset container."
|
45
45
|
},
|
46
|
+
{
|
47
|
+
"name": "role",
|
48
|
+
"type": "string",
|
49
|
+
"required": false,
|
50
|
+
"description": "Optional ARIA role attribute."
|
51
|
+
},
|
46
52
|
{
|
47
53
|
"name": "attributes",
|
48
54
|
"type": "object",
|
@@ -1,5 +1,6 @@
|
|
1
1
|
<fieldset class="govuk-fieldset
|
2
2
|
{%- if params.classes %} {{ params.classes }}{% endif %}"
|
3
|
+
{%- if params.role %} role="{{ params.role }}"{% endif %}
|
3
4
|
{%- if params.describedBy %} aria-describedby="{{ params.describedBy }}"{% endif %}
|
4
5
|
{%- for attribute, value in params.attributes %} {{ attribute }}="{{ value }}"{% endfor %}>
|
5
6
|
{% if params.legend.html or params.legend.text %}
|
@@ -224,9 +224,11 @@
|
|
224
224
|
}
|
225
225
|
}
|
226
226
|
|
227
|
-
//
|
227
|
+
// If there are only two sections, set the layout to be two-third:one-third on desktop
|
228
228
|
@include mq ($from: desktop) {
|
229
|
-
|
229
|
+
// We match the first section with `:first-child`.
|
230
|
+
// To ensure the section is one of two, we can count backwards using `:nth-last-child(2)`.
|
231
|
+
.govuk-footer__section:first-child:nth-last-child(2) {
|
230
232
|
-webkit-box-flex: 2;
|
231
233
|
-webkit-flex-grow: 2;
|
232
234
|
-ms-flex-positive: 2;
|
@@ -17,6 +17,12 @@
|
|
17
17
|
"required": false,
|
18
18
|
"description": "Type of input control to render. Defaults to \"text\"."
|
19
19
|
},
|
20
|
+
{
|
21
|
+
"name": "inputmode",
|
22
|
+
"type": "string",
|
23
|
+
"require": false,
|
24
|
+
"description": "Optional value for [inputmode](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inputmode)."
|
25
|
+
},
|
20
26
|
{
|
21
27
|
"name": "value",
|
22
28
|
"type": "string",
|
@@ -42,5 +42,6 @@
|
|
42
42
|
{%- if describedBy %} aria-describedby="{{ describedBy }}"{% endif %}
|
43
43
|
{%- if params.autocomplete %} autocomplete="{{ params.autocomplete}}"{% endif %}
|
44
44
|
{%- if params.pattern %} pattern="{{ params.pattern }}"{% endif %}
|
45
|
+
{%- if params.inputmode %} inputmode="{{ params.inputmode }}"{% endif %}
|
45
46
|
{%- for attribute, value in params.attributes %} {{ attribute }}="{{ value }}"{% endfor -%}>
|
46
47
|
</div>
|
@@ -47,53 +47,55 @@
|
|
47
47
|
{%- for attribute, value in params.attributes %} {{ attribute }}="{{ value }}"{% endfor %}
|
48
48
|
{%- if isConditional %} data-module="govuk-radios"{% endif -%}>
|
49
49
|
{% for item in params.items %}
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
50
|
+
{% if item %}
|
51
|
+
{#- If the user explicitly sets an id, use this instead of the regular idPrefix -#}
|
52
|
+
{%- if item.id -%}
|
53
|
+
{%- set id = item.id -%}
|
54
|
+
{%- else -%}
|
55
|
+
{#- The first id should not have a number suffix so it's easy to link to from the error summary component -#}
|
56
|
+
{%- if loop.first -%}
|
57
|
+
{%- set id = idPrefix %}
|
58
|
+
{% else %}
|
59
|
+
{%- set id = idPrefix + "-" + loop.index -%}
|
60
|
+
{%- endif -%}
|
61
|
+
{%- endif -%}
|
62
|
+
{% set conditionalId = "conditional-" + id %}
|
63
|
+
{%- if item.divider %}
|
64
|
+
<div class="govuk-radios__divider">{{ item.divider }}</div>
|
65
|
+
{%- else %}
|
66
|
+
{% set hasHint = true if item.hint.text or item.hint.html %}
|
67
|
+
{% set itemHintId = id + '-item-hint' %}
|
68
|
+
<div class="govuk-radios__item">
|
69
|
+
<input class="govuk-radios__input" id="{{ id }}" name="{{ params.name }}" type="radio" value="{{ item.value }}"
|
70
|
+
{{-" checked" if item.checked }}
|
71
|
+
{{-" disabled" if item.disabled }}
|
72
|
+
{%- if item.conditional %} data-aria-controls="{{ conditionalId }}"{% endif -%}
|
73
|
+
{%- if hasHint %} aria-describedby="{{ itemHintId }}"{% endif -%}
|
74
|
+
{%- for attribute, value in item.attributes %} {{ attribute }}="{{ value }}"{% endfor -%}>
|
75
|
+
{{ govukLabel({
|
76
|
+
html: item.html,
|
77
|
+
text: item.text,
|
78
|
+
classes: 'govuk-radios__label' + (' ' + item.label.classes if item.label.classes),
|
79
|
+
attributes: item.label.attributes,
|
80
|
+
for: id
|
81
|
+
}) | indent(6) | trim }}
|
82
|
+
{% if hasHint %}
|
83
|
+
{{ govukHint({
|
84
|
+
id: itemHintId,
|
85
|
+
classes: 'govuk-radios__hint',
|
86
|
+
attributes: item.hint.attributes,
|
87
|
+
html: item.hint.html,
|
88
|
+
text: item.hint.text
|
89
|
+
}) | indent(6) | trim }}
|
90
|
+
{% endif %}
|
91
|
+
</div>
|
92
|
+
{% if item.conditional %}
|
93
|
+
<div class="govuk-radios__conditional{% if not item.checked %} govuk-radios__conditional--hidden{% endif %}" id="{{ conditionalId }}">
|
94
|
+
{{ item.conditional.html | safe }}
|
95
|
+
</div>
|
96
|
+
{% endif %}
|
97
|
+
{% endif %}
|
89
98
|
{% endif %}
|
90
|
-
</div>
|
91
|
-
{% if item.conditional %}
|
92
|
-
<div class="govuk-radios__conditional{% if not item.checked %} govuk-radios__conditional--hidden{% endif %}" id="{{ conditionalId }}">
|
93
|
-
{{ item.conditional.html | safe }}
|
94
|
-
</div>
|
95
|
-
{% endif %}
|
96
|
-
{% endif %}
|
97
99
|
{% endfor %}
|
98
100
|
</div>
|
99
101
|
{% endset -%}
|
@@ -40,10 +40,12 @@
|
|
40
40
|
<select class="govuk-select
|
41
41
|
{%- if params.classes %} {{ params.classes }}{% endif %}{%- if params.errorMessage %} govuk-select--error{% endif %}" id="{{ params.id }}" name="{{ params.name }}" {%- if describedBy %} aria-describedby="{{ describedBy }}"{% endif %} {%- for attribute, value in params.attributes %} {{ attribute }}="{{ value }}"{% endfor %}>
|
42
42
|
{% for item in params.items %}
|
43
|
-
|
44
|
-
{{
|
45
|
-
|
46
|
-
|
43
|
+
{% if item %}
|
44
|
+
<option value="{{ item.value }}"
|
45
|
+
{{-" selected" if item.selected }}
|
46
|
+
{{-" disabled" if item.disabled }}
|
47
|
+
{%- for attribute, value in item.attributes %} {{ attribute }}="{{ value }}"{% endfor -%}>{{ item.text }}</option>
|
48
|
+
{% endif %}
|
47
49
|
{% endfor %}
|
48
50
|
</select>
|
49
51
|
</div>
|
@@ -3,8 +3,14 @@
|
|
3
3
|
"name": "rows",
|
4
4
|
"type": "array",
|
5
5
|
"required": true,
|
6
|
-
"description": "Array of row item objects",
|
6
|
+
"description": "Array of row item objects.",
|
7
7
|
"params": [
|
8
|
+
{
|
9
|
+
"name": "classes",
|
10
|
+
"type": "string",
|
11
|
+
"required": false,
|
12
|
+
"description": "Classes to add to the row `div`"
|
13
|
+
},
|
8
14
|
{
|
9
15
|
"name": "key.text",
|
10
16
|
"type": "string",
|
@@ -15,31 +15,33 @@
|
|
15
15
|
|
16
16
|
<dl class="govuk-summary-list {%- if params.classes %} {{ params.classes }}{% endif %}"{% for attribute, value in params.attributes %} {{attribute}}="{{value}}"{% endfor %}>
|
17
17
|
{% for row in params.rows %}
|
18
|
-
|
19
|
-
<
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
{% if row.actions.items.length %}
|
26
|
-
<dd class="govuk-summary-list__actions {%- if row.actions.classes %} {{ row.actions.classes }}{% endif %}">
|
27
|
-
{% if row.actions.items.length == 1 %}
|
28
|
-
{{ _actionLink(row.actions.items[0]) | indent(12) | trim }}
|
29
|
-
{% else %}
|
30
|
-
<ul class="govuk-summary-list__actions-list">
|
31
|
-
{% for action in row.actions.items %}
|
32
|
-
<li class="govuk-summary-list__actions-list-item">
|
33
|
-
{{ _actionLink(action) | indent(18) | trim }}
|
34
|
-
</li>
|
35
|
-
{% endfor %}
|
36
|
-
</ul>
|
37
|
-
{% endif %}
|
18
|
+
{% if row %}
|
19
|
+
<div class="govuk-summary-list__row {%- if row.classes %} {{ row.classes }}{% endif %}">
|
20
|
+
<dt class="govuk-summary-list__key {%- if row.key.classes %} {{ row.key.classes }}{% endif %}">
|
21
|
+
{{ row.key.html | safe if row.key.html else row.key.text }}
|
22
|
+
</dt>
|
23
|
+
<dd class="govuk-summary-list__value {%- if row.value.classes %} {{ row.value.classes }}{% endif %}">
|
24
|
+
{{ row.value.html | indent(8) | trim | safe if row.value.html else row.value.text }}
|
38
25
|
</dd>
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
26
|
+
{% if row.actions.items.length %}
|
27
|
+
<dd class="govuk-summary-list__actions {%- if row.actions.classes %} {{ row.actions.classes }}{% endif %}">
|
28
|
+
{% if row.actions.items.length == 1 %}
|
29
|
+
{{ _actionLink(row.actions.items[0]) | indent(12) | trim }}
|
30
|
+
{% else %}
|
31
|
+
<ul class="govuk-summary-list__actions-list">
|
32
|
+
{% for action in row.actions.items %}
|
33
|
+
<li class="govuk-summary-list__actions-list-item">
|
34
|
+
{{ _actionLink(action) | indent(18) | trim }}
|
35
|
+
</li>
|
36
|
+
{% endfor %}
|
37
|
+
</ul>
|
38
|
+
{% endif %}
|
39
|
+
</dd>
|
40
|
+
{% elseif anyRowHasActions %}
|
41
|
+
{# Add dummy column to extend border #}
|
42
|
+
<span class="govuk-summary-list__actions"></span>
|
43
|
+
{% endif %}
|
44
|
+
</div>
|
45
|
+
{% endif %}
|
44
46
|
{% endfor %}
|
45
47
|
</dl>
|
@@ -19,25 +19,27 @@
|
|
19
19
|
{% endif %}
|
20
20
|
<tbody class="govuk-table__body">
|
21
21
|
{% for row in params.rows %}
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
22
|
+
{% if row %}
|
23
|
+
<tr class="govuk-table__row">
|
24
|
+
{% for cell in row %}
|
25
|
+
{% set commonAttributes %}
|
26
|
+
{%- if cell.colspan %} colspan="{{ cell.colspan }}"{% endif %}
|
27
|
+
{%- if cell.rowspan %} rowspan="{{ cell.rowspan }}"{% endif %}{% for attribute, value in cell.attributes %} {{ attribute }}="{{ value }}"{% endfor %}
|
28
|
+
{% endset %}
|
29
|
+
{% if loop.first and params.firstCellIsHeader %}
|
30
|
+
<th scope="row" class="govuk-table__header{%- if cell.classes %} {{ cell.classes }}{% endif %}"
|
31
|
+
{{- commonAttributes | safe -}}
|
32
|
+
>{{ cell.html | safe if cell.html else cell.text }}</th>
|
33
|
+
{% else %}
|
34
|
+
<td class="govuk-table__cell
|
35
|
+
{%- if cell.format %} govuk-table__cell--{{ cell.format }}{% endif %}
|
36
|
+
{%- if cell.classes %} {{ cell.classes }}{% endif %}"
|
37
|
+
{{- commonAttributes | safe -}}
|
38
|
+
>{{ cell.html | safe if cell.html else cell.text }}</td>
|
39
|
+
{% endif %}
|
40
|
+
{% endfor %}
|
41
|
+
</tr>
|
38
42
|
{% endif %}
|
39
43
|
{% endfor %}
|
40
|
-
</tr>
|
41
|
-
{% endfor %}
|
42
44
|
</tbody>
|
43
45
|
</table>
|
@@ -9,20 +9,24 @@
|
|
9
9
|
{% if(params.items) %}
|
10
10
|
<ul class="govuk-tabs__list">
|
11
11
|
{% for item in params.items %}
|
12
|
-
|
13
|
-
|
14
|
-
<
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
12
|
+
{% if item %}
|
13
|
+
{% set id = item.id if item.id else idPrefix + "-" + loop.index %}
|
14
|
+
<li class="govuk-tabs__list-item{% if loop.index == 1 %} govuk-tabs__list-item--selected{% endif %}">
|
15
|
+
<a class="govuk-tabs__tab" href="#{{ id }}"
|
16
|
+
{%- for attribute, value in item.attributes %} {{attribute}}="{{value}}"{% endfor %}>
|
17
|
+
{{ item.label }}
|
18
|
+
</a>
|
19
|
+
</li>
|
20
|
+
{% endif %}
|
19
21
|
{% endfor %}
|
20
22
|
</ul>
|
21
23
|
{% endif %}
|
22
24
|
{% for item in params.items %}
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
25
|
+
{% if item %}
|
26
|
+
{% set id = item.id if item.id else idPrefix + "-" + loop.index %}
|
27
|
+
<section class="govuk-tabs__panel{% if loop.index > 1 %} govuk-tabs__panel--hidden{% endif %}" id="{{ id }}"{% for attribute, value in item.panel.attributes %} {{attribute}}="{{value}}"{% endfor %}>
|
28
|
+
{{ item.panel.html | safe if item.panel.html else item.panel.text }}
|
29
|
+
</section>
|
30
|
+
{% endif %}
|
27
31
|
{% endfor %}
|
28
32
|
</div>
|
@@ -15,26 +15,28 @@
|
|
15
15
|
/// @access private
|
16
16
|
|
17
17
|
@mixin _govuk-font-face-gds-transport {
|
18
|
-
@include govuk-
|
19
|
-
@
|
20
|
-
|
18
|
+
@include govuk-not-ie8 { // In IE8, which cannot render WOFF format, we fall back to system fonts
|
19
|
+
@include govuk-exports("govuk/helpers/font-faces") {
|
20
|
+
@at-root {
|
21
|
+
/*! Copyright (c) 2011 by Margaret Calvert & Henrik Kubel. All rights reserved. The font has been customised for exclusive use on gov.uk. This cut is not commercially available. */
|
21
22
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
23
|
+
@font-face {
|
24
|
+
font-family: "GDS Transport";
|
25
|
+
src: govuk-font-url("light-94a07e06a1-v2.woff2") format("woff2"),
|
26
|
+
govuk-font-url("light-f591b13f7d-v2.woff") format("woff");
|
27
|
+
font-weight: normal;
|
28
|
+
font-style: normal;
|
29
|
+
font-display: fallback;
|
30
|
+
}
|
30
31
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
32
|
+
@font-face {
|
33
|
+
font-family: "GDS Transport";
|
34
|
+
src: govuk-font-url("bold-b542beb274-v2.woff2") format("woff2"),
|
35
|
+
govuk-font-url("bold-affa96571d-v2.woff") format("woff");
|
36
|
+
font-weight: bold;
|
37
|
+
font-style: normal;
|
38
|
+
font-display: fallback;
|
39
|
+
}
|
38
40
|
}
|
39
41
|
}
|
40
42
|
}
|
@@ -2,26 +2,26 @@
|
|
2
2
|
"_args": [
|
3
3
|
[
|
4
4
|
{
|
5
|
-
"raw": "govuk-frontend@3.
|
5
|
+
"raw": "govuk-frontend@3.2.0",
|
6
6
|
"scope": null,
|
7
7
|
"escapedName": "govuk-frontend",
|
8
8
|
"name": "govuk-frontend",
|
9
|
-
"rawSpec": "3.
|
10
|
-
"spec": "3.
|
9
|
+
"rawSpec": "3.2.0",
|
10
|
+
"spec": "3.2.0",
|
11
11
|
"type": "version"
|
12
12
|
},
|
13
13
|
"/var/lib/jenkins/workspace/ublishing_components_master-N4FWJIUY4CIFHKGZOAAEVVXODRY3YBORQOPIBBXWX72VUPSGJRRQ"
|
14
14
|
]
|
15
15
|
],
|
16
|
-
"_from": "govuk-frontend@3.
|
16
|
+
"_from": "govuk-frontend@3.2.0",
|
17
17
|
"_hasShrinkwrap": false,
|
18
|
-
"_id": "govuk-frontend@3.
|
18
|
+
"_id": "govuk-frontend@3.2.0",
|
19
19
|
"_inCache": true,
|
20
20
|
"_location": "/govuk-frontend",
|
21
21
|
"_nodeVersion": "10.15.1",
|
22
22
|
"_npmOperationalInternal": {
|
23
23
|
"host": "s3://npm-registry-packages",
|
24
|
-
"tmp": "tmp/govuk-frontend_3.
|
24
|
+
"tmp": "tmp/govuk-frontend_3.2.0_1568198961302_0.8446682726447414"
|
25
25
|
},
|
26
26
|
"_npmUser": {
|
27
27
|
"name": "govuk-patterns-and-tools",
|
@@ -30,21 +30,21 @@
|
|
30
30
|
"_npmVersion": "6.4.1",
|
31
31
|
"_phantomChildren": {},
|
32
32
|
"_requested": {
|
33
|
-
"raw": "govuk-frontend@3.
|
33
|
+
"raw": "govuk-frontend@3.2.0",
|
34
34
|
"scope": null,
|
35
35
|
"escapedName": "govuk-frontend",
|
36
36
|
"name": "govuk-frontend",
|
37
|
-
"rawSpec": "3.
|
38
|
-
"spec": "3.
|
37
|
+
"rawSpec": "3.2.0",
|
38
|
+
"spec": "3.2.0",
|
39
39
|
"type": "version"
|
40
40
|
},
|
41
41
|
"_requiredBy": [
|
42
42
|
"/"
|
43
43
|
],
|
44
|
-
"_resolved": "https://registry.npmjs.org/govuk-frontend/-/govuk-frontend-3.
|
45
|
-
"_shasum": "
|
44
|
+
"_resolved": "https://registry.npmjs.org/govuk-frontend/-/govuk-frontend-3.2.0.tgz",
|
45
|
+
"_shasum": "0f935bee092929455bf7ed08bba40ab07ea72769",
|
46
46
|
"_shrinkwrap": null,
|
47
|
-
"_spec": "govuk-frontend@3.
|
47
|
+
"_spec": "govuk-frontend@3.2.0",
|
48
48
|
"_where": "/var/lib/jenkins/workspace/ublishing_components_master-N4FWJIUY4CIFHKGZOAAEVVXODRY3YBORQOPIBBXWX72VUPSGJRRQ",
|
49
49
|
"author": {
|
50
50
|
"name": "GOV.UK Design System Team",
|
@@ -59,12 +59,12 @@
|
|
59
59
|
"devDependencies": {},
|
60
60
|
"directories": {},
|
61
61
|
"dist": {
|
62
|
-
"integrity": "sha512-
|
63
|
-
"shasum": "
|
64
|
-
"tarball": "https://registry.npmjs.org/govuk-frontend/-/govuk-frontend-3.
|
62
|
+
"integrity": "sha512-OtJozAGMEKFu195fNVVrQHUX7+znCkA4cXDKs4lgFlRQOTzN1ogT9010GBARuoTwbeL0VqQ8nerZYjVxH/wafA==",
|
63
|
+
"shasum": "0f935bee092929455bf7ed08bba40ab07ea72769",
|
64
|
+
"tarball": "https://registry.npmjs.org/govuk-frontend/-/govuk-frontend-3.2.0.tgz",
|
65
65
|
"fileCount": 247,
|
66
|
-
"unpackedSize":
|
67
|
-
"npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\
|
66
|
+
"unpackedSize": 1024849,
|
67
|
+
"npm-signature": "-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdeNEyCRA9TVsSAnZWagAAvgEP/1HO7jFF0rLInQ94X27S\nRAfPVJBV5YE6jlwZfTU7SEXph6KTVCP5WSW9MI1gunkU0EX2KnxT9Pn4Q5/L\nzs9+8dy/R5ejDQKi1ftwaO7MwGOnrOC81TSKPiOL0c3hib3ipfyD5Fqozh/k\nxtHvmQYJ8CwcVE7EK8GbFo9/Qe8MWulQtcd4hsNe+umdd+SyY7I67ysYvV2k\nFD+P5gvwqpPWEyEJ00TjG3YjJAXzE7zcqT6HNVIz3XwC2FH8mmKHatX+n8Mp\nWj/76If933/nG2VvO11uma+T6/buFie/MljkziM2fduc5IUxE/hl1qJegtrq\naWZzAjVU/H+ysrrWfF5rSPTQx866iQUzKd1IQ4Cm68Ativd21JFhEtnJYNhn\n43PF9virumnJoQWCXktOWFpH6/WuPsd2btnLlT3RBRM7Lb5MIsAtloLmE00b\n1qYgaXqnoP41N1HAC/jhXTN9qh33zI4NHX+sJUbjbQLXShQs8V6dq1QoVj2l\nN3MtS8rvIpwaG8Iy2jmy/84dGNh+WguSDv5RipLomWSAY+dGY8Cw4NNpldLm\nG4AUL9bnORIL4tj3zoHoRURI8COe+kDgG5hqpLv44LOFMM8sOrBxEUKqKd4T\nYpEHZ+CFF3bFZOH/80WhKOjy+XJCQIGtL/Lmge2yKNB88rqD66LGweCfjxbt\nXApr\r\n=T15p\r\n-----END PGP SIGNATURE-----\r\n"
|
68
68
|
},
|
69
69
|
"engines": {
|
70
70
|
"node": ">= 4.2.0"
|
@@ -92,5 +92,5 @@
|
|
92
92
|
"url": "git+https://github.com/alphagov/govuk-frontend.git"
|
93
93
|
},
|
94
94
|
"sass": "govuk/all.scss",
|
95
|
-
"version": "3.
|
95
|
+
"version": "3.2.0"
|
96
96
|
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: govuk_publishing_components
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 20.5.
|
4
|
+
version: 20.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GOV.UK Dev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-09-
|
11
|
+
date: 2019-09-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gds-api-adapters
|