hof 22.12.0 → 22.13.0-frontend-v4-beta.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.
- package/CHANGELOG.md +13 -1
- package/build/tasks/images/index.js +20 -6
- package/build/tasks/watch/index.js +9 -2
- package/components/date/templates/date.html +1 -1
- package/config/builder-defaults.js +6 -2
- package/frontend/govuk-template/build/config.js +2 -0
- package/frontend/govuk-template/build/govuk_template.html +59 -43
- package/frontend/govuk-template/govuk_template_generated.html +118 -0
- package/frontend/template-mixins/mixins/template-mixins.js +5 -4
- package/frontend/template-mixins/partials/forms/checkbox.html +5 -1
- package/frontend/template-mixins/partials/forms/input-text-date.html +2 -1
- package/frontend/template-mixins/partials/forms/input-text-group.html +1 -1
- package/frontend/template-mixins/partials/forms/textarea-group.html +1 -1
- package/frontend/template-partials/views/layout.html +1 -1
- package/frontend/template-partials/views/partials/cookie-banner.html +50 -32
- package/frontend/template-partials/views/partials/navigation.html +2 -2
- package/frontend/themes/gov-uk/client-js/cookieSettings.js +35 -23
- package/frontend/toolkit/assets/rebrand/images/govuk-logo.svg +25 -0
- package/index.js +4 -2
- package/package.json +2 -6
- package/sandbox/apps/sandbox/translations/en/default.json +245 -0
- package/sandbox/package.json +1 -1
- package/sandbox/public/css/app.css +11708 -0
- package/sandbox/public/images/govuk-logo.svg +25 -0
- package/sandbox/public/images/icons/icon-caret-left.png +0 -0
- package/sandbox/public/images/icons/icon-complete.png +0 -0
- package/sandbox/public/images/icons/icon-cross-remove-sign.png +0 -0
- package/sandbox/public/js/bundle.js +39258 -0
- package/sandbox/server.js +4 -1
- package/sandbox/yarn.lock +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
## 2025-12-09, Version 22.13.0 (Stable), @Rhodine-orleans-lindsay
|
|
2
|
+
### Changed
|
|
3
|
+
- Updated cookie banner view to follow GOV.UK design system. Updated cookieSettings.js to allow for different confirmation text based on whether cookies were accepted or rejected
|
|
4
|
+
- Added inputmode='numeric' to date component
|
|
5
|
+
- Added span for checkbox error messages
|
|
6
|
+
- Updated imported javascript
|
|
7
|
+
- Added data-module attribute for govuk-skip-link for screen readers
|
|
8
|
+
- Removed aria-polite=live for character-count and removed pattern attribute for date input
|
|
9
|
+
- Replaced deprecated govuk-header__link--service-name with govuk-header__service-name
|
|
10
|
+
- Added a modifier for phone text input styles that accept sequences of digits
|
|
11
|
+
- Added govuk-template--rebranded class to govuk template html to enable govuk rebrand styles:
|
|
12
|
+
- Updated header and footer to follow GOV.UK design system as part of rebrand
|
|
13
|
+
|
|
1
14
|
## 2025-11-20, Version 22.12.0 (Stable), @dk4g @jamiecarterHO
|
|
2
15
|
|
|
3
16
|
### Infrastructure
|
|
@@ -31,7 +44,6 @@ For testing purposes, you can use the following command to generate a random val
|
|
|
31
44
|
- For custom session timeout handling that is not linked to the redis session ttl, The following variables must be set: `CUSTOM_SESSION_EXPIRY` to the relevant expiry time e.g.600 and `USE_CUSTOM_SESSION_TIMEOUT` to true.
|
|
32
45
|
- If a behaviour is required on the '/session-timeout` step, the '/session-timeout' step must be set in the project's index.js, along with any relevant behaviours.
|
|
33
46
|
|
|
34
|
-
|
|
35
47
|
## 2025-10-10, Version 22.10.4 (Stable), @dk4g
|
|
36
48
|
### Security
|
|
37
49
|
- Upgraded axios version to address a security vulnerability
|
|
@@ -4,20 +4,34 @@
|
|
|
4
4
|
const fs = require('fs');
|
|
5
5
|
const chalk = require('chalk');
|
|
6
6
|
const spawn = require('../../lib/spawn');
|
|
7
|
-
const mkdir = require('../../lib/mkdir');
|
|
8
7
|
|
|
9
8
|
module.exports = config => {
|
|
10
9
|
if (!config.images) {
|
|
11
10
|
return Promise.resolve();
|
|
12
11
|
}
|
|
12
|
+
const imagesOutput = config.images.out;
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
.
|
|
18
|
-
|
|
14
|
+
// Due to govuk rebrand logo, images are copied from multiple sources & mapping can cause 'File exists' error.
|
|
15
|
+
// Remove if exists as a file
|
|
16
|
+
if (fs.existsSync(imagesOutput) && !fs.lstatSync(imagesOutput).isDirectory()) {
|
|
17
|
+
fs.unlinkSync(imagesOutput);
|
|
18
|
+
}
|
|
19
|
+
// Ensure directory exists
|
|
20
|
+
if (!fs.existsSync(imagesOutput)) {
|
|
21
|
+
fs.mkdirSync(imagesOutput, { recursive: true });
|
|
22
|
+
}
|
|
23
|
+
const srcs = Array.isArray(config.images.src) ? config.images.src : [config.images.src];
|
|
24
|
+
|
|
25
|
+
return Promise.all(srcs.map(src => {
|
|
26
|
+
if (!fs.existsSync(src)) {
|
|
27
|
+
console.log(`${chalk.yellow('warning')}: Skipping missing images folder: ${src}`);
|
|
28
|
+
return Promise.resolve();
|
|
29
|
+
}
|
|
30
|
+
return spawn('cp', ['-r', `${src}/.`, imagesOutput]);
|
|
31
|
+
}))
|
|
19
32
|
.catch(e => {
|
|
20
33
|
if (e.code !== 'ENOENT') {
|
|
34
|
+
console.error(`${chalk.red('error')}: Failed to copy images - ${e.message}`);
|
|
21
35
|
throw e;
|
|
22
36
|
} else {
|
|
23
37
|
console.log(`${chalk.yellow('warning')}: no images directory found at ${config.images.src}`);
|
|
@@ -32,7 +32,14 @@ module.exports = config => {
|
|
|
32
32
|
}, {});
|
|
33
33
|
|
|
34
34
|
function triggersTask(file) {
|
|
35
|
-
return Object.keys(matchers).filter(key =>
|
|
35
|
+
return Object.keys(matchers).filter(key => {
|
|
36
|
+
const pattern = matchers[key];
|
|
37
|
+
// Only call minimatch if pattern is a non-empty string or array of strings
|
|
38
|
+
if (Array.isArray(pattern)) {
|
|
39
|
+
return pattern.some(p => typeof p === 'string' && p.length > 0 && match(file, p));
|
|
40
|
+
}
|
|
41
|
+
return typeof pattern === 'string' && pattern.length > 0 && match(file, pattern);
|
|
42
|
+
});
|
|
36
43
|
}
|
|
37
44
|
|
|
38
45
|
function restart() {
|
|
@@ -94,7 +101,7 @@ module.exports = config => {
|
|
|
94
101
|
process.stdin.setEncoding('utf8');
|
|
95
102
|
process.stdin.on('data', data => {
|
|
96
103
|
const dataType = (data + '').trim().toLowerCase();
|
|
97
|
-
if (dataType
|
|
104
|
+
if (dataType === config.watch.restart) {
|
|
98
105
|
restart();
|
|
99
106
|
}
|
|
100
107
|
});
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
{{#isPageHeading}}</h1>{{/isPageHeading}}
|
|
7
7
|
</legend>
|
|
8
8
|
{{#hint}}
|
|
9
|
-
<
|
|
9
|
+
<div id="{{key}}-hint" class="govuk-hint">{{{hint}}}</div>
|
|
10
10
|
{{/hint}}
|
|
11
11
|
{{#error}}
|
|
12
12
|
<p id="{{key}}-error" class="govuk-error-message">
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
+
const toolkitImages =
|
|
3
|
+
process.env.HOF_SANDBOX === 'true'
|
|
4
|
+
? '../frontend/toolkit/assets/rebrand/images'
|
|
5
|
+
: 'node_modules/hof/frontend/toolkit/assets/rebrand/images';
|
|
2
6
|
|
|
3
7
|
module.exports = {
|
|
4
8
|
browserify: {
|
|
@@ -24,8 +28,8 @@ module.exports = {
|
|
|
24
28
|
shared: 'apps/common/translations/src'
|
|
25
29
|
},
|
|
26
30
|
images: {
|
|
27
|
-
src: 'assets/images',
|
|
28
|
-
out: 'public',
|
|
31
|
+
src: ['assets/rebrand/images', 'assets/images', toolkitImages],
|
|
32
|
+
out: 'public/images',
|
|
29
33
|
match: 'assets/images/**/*',
|
|
30
34
|
restart: false
|
|
31
35
|
},
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
module.exports = {
|
|
4
4
|
htmlLang: '{{htmlLang}}',
|
|
5
5
|
assetPath: '{{govukAssetPath}}',
|
|
6
|
+
assetRebrandPath: '{{govukAssetPath}}rebrand/',
|
|
7
|
+
themeColour: '#1d70b8',
|
|
6
8
|
afterHeader: '{{$afterHeader}}{{/afterHeader}}',
|
|
7
9
|
bodyClasses: '{{$bodyClasses}}{{/bodyClasses}}',
|
|
8
10
|
bodyStart: '{{$bodyStart}}{{/bodyStart}}',
|
|
@@ -1,31 +1,24 @@
|
|
|
1
1
|
|
|
2
2
|
<!DOCTYPE html>
|
|
3
3
|
<!--[if lt IE 9]><html class="lte-ie8" lang="{{ htmlLang }}"><![endif]-->
|
|
4
|
-
<!--[if gt IE 8]><!--><html lang="{{ htmlLang }}" class="govuk-template"><!--<![endif]-->
|
|
4
|
+
<!--[if gt IE 8]><!--><html lang="{{ htmlLang }}" class="govuk-template--rebranded"><!--<![endif]-->
|
|
5
5
|
<head>
|
|
6
6
|
<meta charset="utf-8" />
|
|
7
7
|
<title>{{ pageTitle }}</title>
|
|
8
8
|
{{{ head }}}
|
|
9
|
-
|
|
10
|
-
<
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
<meta name="theme-color" content="#0b0c0c" />
|
|
19
|
-
|
|
20
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
<meta property="og:image" content="{{assetPath}}images/opengraph-image.png">
|
|
9
|
+
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
|
|
10
|
+
<meta name="theme-color" content="{{themeColour}}">
|
|
11
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
12
|
+
<link rel="icon" sizes="48x48" href="{{assetRebrandPath}}images/favicon.ico">
|
|
13
|
+
<link rel="icon" sizes="any" href="{{assetRebrandPath}}images/favicon.svg" type="image/svg+xml">
|
|
14
|
+
<link rel="mask-icon" href="{{assetRebrandPath}}images/govuk-icon-mask.svg" color="{{themeColour}}">
|
|
15
|
+
<link rel="apple-touch-icon" href="{{assetRebrandPath}}images/govuk-icon-180.png">
|
|
16
|
+
<link rel="manifest" href="{{assetRebrandPath}}manifest.json">
|
|
17
|
+
<meta property="og:image" content="{{assetRebrandPath}}images/govuk-opengraph-image.png">
|
|
24
18
|
</head>
|
|
25
19
|
|
|
26
20
|
<body class="{{ bodyClasses }} govuk-template__body js-enabled" >
|
|
27
|
-
<script>document.body.className
|
|
28
|
-
|
|
21
|
+
<script>document.body.className += ' js-enabled' + ('noModule' in HTMLScriptElement.prototype ? ' govuk-frontend-supported' : '');</script>
|
|
29
22
|
|
|
30
23
|
|
|
31
24
|
<div id="global-cookie-message" class="gem-c-cookie-banner govuk-clearfix" data-module="cookie-banner" role="region" aria-label="cookie banner" data-nosnippet="">
|
|
@@ -39,19 +32,13 @@
|
|
|
39
32
|
|
|
40
33
|
<div class="govuk-header__logo">
|
|
41
34
|
<a href="{{{ homepageUrl }}}" title="{{ logoLinkTitle }}" id="logo" class="govuk-header__link govuk-header__link--homepage" target="_blank" data-module="track-click" data-track-category="homeLinkClicked" data-track-action="homeHeader">
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
<img src="{{ assetPath }}images/govuk-logotype-tudor-crown.png" class="govuk-header__logotype-crown-fallback-image" width="32" height="30" alt="">
|
|
50
|
-
<![endif]-->
|
|
51
|
-
</span>
|
|
52
|
-
<span class="govuk-header__logotype-text">
|
|
53
|
-
{{{ globalHeaderText }}}
|
|
54
|
-
</span>
|
|
35
|
+
<!--[if gt IE 8]><!-->
|
|
36
|
+
<div id="govuk-header__logo"></div>
|
|
37
|
+
<img src="/public/images/govuk-logo.svg" id="govuk-header__logo" alt="Logo" loading="lazy" />
|
|
38
|
+
<!--<![endif]-->
|
|
39
|
+
<!--[if IE 8]>
|
|
40
|
+
<img src="{{ assetRebrandPath }}images/govuk-logotype-tudor-crown.png" class="govuk-header__logotype-crown-fallback-image" width="32" height="30" alt="">
|
|
41
|
+
<![endif]-->
|
|
55
42
|
</a>
|
|
56
43
|
</div>
|
|
57
44
|
{{{ insideHeader }}}
|
|
@@ -66,25 +53,54 @@
|
|
|
66
53
|
|
|
67
54
|
{{{ content }}}
|
|
68
55
|
|
|
69
|
-
<footer class="govuk-footer"
|
|
70
|
-
|
|
56
|
+
<footer class="govuk-footer">
|
|
71
57
|
<div class="govuk-width-container">
|
|
72
|
-
|
|
73
|
-
|
|
58
|
+
<svg
|
|
59
|
+
focusable="false"
|
|
60
|
+
role="presentation"
|
|
61
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
62
|
+
viewBox="0 0 64 60"
|
|
63
|
+
height="30"
|
|
64
|
+
width="32"
|
|
65
|
+
fill="currentcolor" class="govuk-footer__crown">
|
|
66
|
+
<g>
|
|
67
|
+
<circle cx="20" cy="17.6" r="3.7" />
|
|
68
|
+
<circle cx="10.2" cy="23.5" r="3.7" />
|
|
69
|
+
<circle cx="3.7" cy="33.2" r="3.7" />
|
|
70
|
+
<circle cx="31.7" cy="30.6" r="3.7" />
|
|
71
|
+
<circle cx="43.3" cy="17.6" r="3.7" />
|
|
72
|
+
<circle cx="53.2" cy="23.5" r="3.7" />
|
|
73
|
+
<circle cx="59.7" cy="33.2" r="3.7" />
|
|
74
|
+
<circle cx="31.7" cy="30.6" r="3.7" />
|
|
75
|
+
<path d="M33.1,9.8c.2-.1.3-.3.5-.5l4.6,2.4v-6.8l-4.6,1.5c-.1-.2-.3-.3-.5-.5l1.9-5.9h-6.7l1.9,5.9c-.2.1-.3.3-.5.5l-4.6-1.5v6.8l4.6-2.4c.1.2.3.3.5.5l-2.6,8c-.9,2.8,1.2,5.7,4.1,5.7h0c3,0,5.1-2.9,4.1-5.7l-2.6-8ZM37,37.9s-3.4,3.8-4.1,6.1c2.2,0,4.2-.5,6.4-2.8l-.7,8.5c-2-2.8-4.4-4.1-5.7-3.8.1,3.1.5,6.7,5.8,7.2,3.7.3,6.7-1.5,7-3.8.4-2.6-2-4.3-3.7-1.6-1.4-4.5,2.4-6.1,4.9-3.2-1.9-4.5-1.8-7.7,2.4-10.9,3,4,2.6,7.3-1.2,11.1,2.4-1.3,6.2,0,4,4.6-1.2-2.8-3.7-2.2-4.2.2-.3,1.7.7,3.7,3,4.2,1.9.3,4.7-.9,7-5.9-1.3,0-2.4.7-3.9,1.7l2.4-8c.6,2.3,1.4,3.7,2.2,4.5.6-1.6.5-2.8,0-5.3l5,1.8c-2.6,3.6-5.2,8.7-7.3,17.5-7.4-1.1-15.7-1.7-24.5-1.7h0c-8.8,0-17.1.6-24.5,1.7-2.1-8.9-4.7-13.9-7.3-17.5l5-1.8c-.5,2.5-.6,3.7,0,5.3.8-.8,1.6-2.3,2.2-4.5l2.4,8c-1.5-1-2.6-1.7-3.9-1.7,2.3,5,5.2,6.2,7,5.9,2.3-.4,3.3-2.4,3-4.2-.5-2.4-3-3.1-4.2-.2-2.2-4.6,1.6-6,4-4.6-3.7-3.7-4.2-7.1-1.2-11.1,4.2,3.2,4.3,6.4,2.4,10.9,2.5-2.8,6.3-1.3,4.9,3.2-1.8-2.7-4.1-1-3.7,1.6.3,2.3,3.3,4.1,7,3.8,5.4-.5,5.7-4.2,5.8-7.2-1.3-.2-3.7,1-5.7,3.8l-.7-8.5c2.2,2.3,4.2,2.7,6.4,2.8-.7-2.3-4.1-6.1-4.1-6.1h10.6,0Z" />
|
|
76
|
+
</g>
|
|
77
|
+
</svg>
|
|
74
78
|
<div class="govuk-footer__meta">
|
|
75
79
|
<div class="govuk-footer__meta-item govuk-footer__meta-item--grow">
|
|
76
|
-
|
|
80
|
+
<h2 class="govuk-visually-hidden">Support links</h2>
|
|
77
81
|
{{{ footerSupportLinks }}}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
82
|
+
<svg
|
|
83
|
+
aria-hidden="true"
|
|
84
|
+
focusable="false"
|
|
85
|
+
class="govuk-footer__licence-logo"
|
|
86
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
87
|
+
viewBox="0 0 483.2 195.7"
|
|
88
|
+
height="17"
|
|
89
|
+
width="41">
|
|
90
|
+
<path
|
|
91
|
+
fill="currentColor"
|
|
92
|
+
d="M421.5 142.8V.1l-50.7 32.3v161.1h112.4v-50.7zm-122.3-9.6A47.12 47.12 0 0 1 221 97.8c0-26 21.1-47.1 47.1-47.1 16.7 0 31.4 8.7 39.7 21.8l42.7-27.2A97.63 97.63 0 0 0 268.1 0c-36.5 0-68.3 20.1-85.1 49.7A98 98 0 0 0 97.8 0C43.9 0 0 43.9 0 97.8s43.9 97.8 97.8 97.8c36.5 0 68.3-20.1 85.1-49.7a97.76 97.76 0 0 0 149.6 25.4l19.4 22.2h3v-87.8h-80l24.3 27.5zM97.8 145c-26 0-47.1-21.1-47.1-47.1s21.1-47.1 47.1-47.1 47.2 21 47.2 47S123.8 145 97.8 145" />
|
|
81
93
|
</svg>
|
|
82
|
-
|
|
83
|
-
|
|
94
|
+
<span class="govuk-footer__licence-description">
|
|
95
|
+
{{{ licenceMessage }}}
|
|
96
|
+
</span>
|
|
84
97
|
</div>
|
|
85
|
-
|
|
86
98
|
<div class="govuk-footer__meta-item">
|
|
87
|
-
<a
|
|
99
|
+
<a
|
|
100
|
+
class="govuk-footer__link govuk-footer__copyright-logo"
|
|
101
|
+
href="https://www.nationalarchives.gov.uk/information-management/re-using-public-sector-information/uk-government-licensing-framework/crown-copyright/">
|
|
102
|
+
{{{ crownCopyrightMessage }}}
|
|
103
|
+
</a>
|
|
88
104
|
</div>
|
|
89
105
|
</div>
|
|
90
106
|
</div>
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
|
|
2
|
+
<!DOCTYPE html>
|
|
3
|
+
<!--[if lt IE 9]><html class="lte-ie8" lang="{{htmlLang}}"><![endif]-->
|
|
4
|
+
<!--[if gt IE 8]><!--><html lang="{{htmlLang}}" class="govuk-template--rebranded"><!--<![endif]-->
|
|
5
|
+
<head>
|
|
6
|
+
<meta charset="utf-8" />
|
|
7
|
+
<title>{{$pageTitle}}{{/pageTitle}}</title>
|
|
8
|
+
{{$head}}{{/head}}
|
|
9
|
+
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
|
|
10
|
+
<meta name="theme-color" content="#1d70b8">
|
|
11
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
12
|
+
<link rel="icon" sizes="48x48" href="{{govukAssetPath}}rebrand/images/favicon.ico">
|
|
13
|
+
<link rel="icon" sizes="any" href="{{govukAssetPath}}rebrand/images/favicon.svg" type="image/svg+xml">
|
|
14
|
+
<link rel="mask-icon" href="{{govukAssetPath}}rebrand/images/govuk-icon-mask.svg" color="#1d70b8">
|
|
15
|
+
<link rel="apple-touch-icon" href="{{govukAssetPath}}rebrand/images/govuk-icon-180.png">
|
|
16
|
+
<link rel="manifest" href="{{govukAssetPath}}rebrand/manifest.json">
|
|
17
|
+
<meta property="og:image" content="{{govukAssetPath}}rebrand/images/govuk-opengraph-image.png">
|
|
18
|
+
</head>
|
|
19
|
+
|
|
20
|
+
<body class="{{$bodyClasses}}{{/bodyClasses}} govuk-template__body js-enabled" >
|
|
21
|
+
<script {{#nonce}}nonce="{{nonce}}"{{/nonce}}>document.body.className += ' js-enabled' + ('noModule' in HTMLScriptElement.prototype ? ' govuk-frontend-supported' : '');</script>
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
<div id="global-cookie-message" class="gem-c-cookie-banner govuk-clearfix" data-module="cookie-banner" role="region" aria-label="cookie banner" data-nosnippet="">
|
|
25
|
+
{{$cookieMessage}}{{/cookieMessage}}
|
|
26
|
+
</div>
|
|
27
|
+
|
|
28
|
+
{{$bodyStart}}{{/bodyStart}}
|
|
29
|
+
|
|
30
|
+
<header role="banner" id="govuk-header" class="{{$headerClass}}{{/headerClass}}">
|
|
31
|
+
<div class="govuk-header__container govuk-width-container">
|
|
32
|
+
|
|
33
|
+
<div class="govuk-header__logo">
|
|
34
|
+
<a href="{{$homepageUrl}}https://www.gov.uk{{/homepageUrl}}" title="{{$logoLinkTitle}}Go to the GOV.UK homepage{{/logoLinkTitle}}" id="logo" class="govuk-header__link govuk-header__link--homepage" target="_blank" data-module="track-click" data-track-category="homeLinkClicked" data-track-action="homeHeader">
|
|
35
|
+
<!--[if gt IE 8]><!-->
|
|
36
|
+
<div id="govuk-header__logo"></div>
|
|
37
|
+
<img src="/public/images/govuk-logo.svg" id="govuk-header__logo" alt="Logo" loading="lazy" />
|
|
38
|
+
<!--<![endif]-->
|
|
39
|
+
<!--[if IE 8]>
|
|
40
|
+
<img src="{{govukAssetPath}}rebrand/images/govuk-logotype-tudor-crown.png" class="govuk-header__logotype-crown-fallback-image" width="32" height="30" alt="">
|
|
41
|
+
<![endif]-->
|
|
42
|
+
</a>
|
|
43
|
+
</div>
|
|
44
|
+
{{$insideHeader}}{{/insideHeader}}
|
|
45
|
+
|
|
46
|
+
{{$propositionHeader}}{{/propositionHeader}}
|
|
47
|
+
</div>
|
|
48
|
+
</header>
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
{{$afterHeader}}{{/afterHeader}}
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
{{$main}}{{/main}}
|
|
55
|
+
|
|
56
|
+
<footer class="govuk-footer">
|
|
57
|
+
<div class="govuk-width-container">
|
|
58
|
+
<svg
|
|
59
|
+
focusable="false"
|
|
60
|
+
role="presentation"
|
|
61
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
62
|
+
viewBox="0 0 64 60"
|
|
63
|
+
height="30"
|
|
64
|
+
width="32"
|
|
65
|
+
fill="currentcolor" class="govuk-footer__crown">
|
|
66
|
+
<g>
|
|
67
|
+
<circle cx="20" cy="17.6" r="3.7" />
|
|
68
|
+
<circle cx="10.2" cy="23.5" r="3.7" />
|
|
69
|
+
<circle cx="3.7" cy="33.2" r="3.7" />
|
|
70
|
+
<circle cx="31.7" cy="30.6" r="3.7" />
|
|
71
|
+
<circle cx="43.3" cy="17.6" r="3.7" />
|
|
72
|
+
<circle cx="53.2" cy="23.5" r="3.7" />
|
|
73
|
+
<circle cx="59.7" cy="33.2" r="3.7" />
|
|
74
|
+
<circle cx="31.7" cy="30.6" r="3.7" />
|
|
75
|
+
<path d="M33.1,9.8c.2-.1.3-.3.5-.5l4.6,2.4v-6.8l-4.6,1.5c-.1-.2-.3-.3-.5-.5l1.9-5.9h-6.7l1.9,5.9c-.2.1-.3.3-.5.5l-4.6-1.5v6.8l4.6-2.4c.1.2.3.3.5.5l-2.6,8c-.9,2.8,1.2,5.7,4.1,5.7h0c3,0,5.1-2.9,4.1-5.7l-2.6-8ZM37,37.9s-3.4,3.8-4.1,6.1c2.2,0,4.2-.5,6.4-2.8l-.7,8.5c-2-2.8-4.4-4.1-5.7-3.8.1,3.1.5,6.7,5.8,7.2,3.7.3,6.7-1.5,7-3.8.4-2.6-2-4.3-3.7-1.6-1.4-4.5,2.4-6.1,4.9-3.2-1.9-4.5-1.8-7.7,2.4-10.9,3,4,2.6,7.3-1.2,11.1,2.4-1.3,6.2,0,4,4.6-1.2-2.8-3.7-2.2-4.2.2-.3,1.7.7,3.7,3,4.2,1.9.3,4.7-.9,7-5.9-1.3,0-2.4.7-3.9,1.7l2.4-8c.6,2.3,1.4,3.7,2.2,4.5.6-1.6.5-2.8,0-5.3l5,1.8c-2.6,3.6-5.2,8.7-7.3,17.5-7.4-1.1-15.7-1.7-24.5-1.7h0c-8.8,0-17.1.6-24.5,1.7-2.1-8.9-4.7-13.9-7.3-17.5l5-1.8c-.5,2.5-.6,3.7,0,5.3.8-.8,1.6-2.3,2.2-4.5l2.4,8c-1.5-1-2.6-1.7-3.9-1.7,2.3,5,5.2,6.2,7,5.9,2.3-.4,3.3-2.4,3-4.2-.5-2.4-3-3.1-4.2-.2-2.2-4.6,1.6-6,4-4.6-3.7-3.7-4.2-7.1-1.2-11.1,4.2,3.2,4.3,6.4,2.4,10.9,2.5-2.8,6.3-1.3,4.9,3.2-1.8-2.7-4.1-1-3.7,1.6.3,2.3,3.3,4.1,7,3.8,5.4-.5,5.7-4.2,5.8-7.2-1.3-.2-3.7,1-5.7,3.8l-.7-8.5c2.2,2.3,4.2,2.7,6.4,2.8-.7-2.3-4.1-6.1-4.1-6.1h10.6,0Z" />
|
|
76
|
+
</g>
|
|
77
|
+
</svg>
|
|
78
|
+
<div class="govuk-footer__meta">
|
|
79
|
+
<div class="govuk-footer__meta-item govuk-footer__meta-item--grow">
|
|
80
|
+
<h2 class="govuk-visually-hidden">Support links</h2>
|
|
81
|
+
{{$footerSupportLinks}}{{/footerSupportLinks}}
|
|
82
|
+
<svg
|
|
83
|
+
aria-hidden="true"
|
|
84
|
+
focusable="false"
|
|
85
|
+
class="govuk-footer__licence-logo"
|
|
86
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
87
|
+
viewBox="0 0 483.2 195.7"
|
|
88
|
+
height="17"
|
|
89
|
+
width="41">
|
|
90
|
+
<path
|
|
91
|
+
fill="currentColor"
|
|
92
|
+
d="M421.5 142.8V.1l-50.7 32.3v161.1h112.4v-50.7zm-122.3-9.6A47.12 47.12 0 0 1 221 97.8c0-26 21.1-47.1 47.1-47.1 16.7 0 31.4 8.7 39.7 21.8l42.7-27.2A97.63 97.63 0 0 0 268.1 0c-36.5 0-68.3 20.1-85.1 49.7A98 98 0 0 0 97.8 0C43.9 0 0 43.9 0 97.8s43.9 97.8 97.8 97.8c36.5 0 68.3-20.1 85.1-49.7a97.76 97.76 0 0 0 149.6 25.4l19.4 22.2h3v-87.8h-80l24.3 27.5zM97.8 145c-26 0-47.1-21.1-47.1-47.1s21.1-47.1 47.1-47.1 47.2 21 47.2 47S123.8 145 97.8 145" />
|
|
93
|
+
</svg>
|
|
94
|
+
<span class="govuk-footer__licence-description">
|
|
95
|
+
{{$licenceMessage}}All content is available under the <a href="https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/" id="open-government-licence" class="govuk-footer__link" target="_blank" rel="license">Open Government Licence v3.0</a>, except where otherwise stated{{/licenceMessage}}
|
|
96
|
+
</span>
|
|
97
|
+
</div>
|
|
98
|
+
<div class="govuk-footer__meta-item">
|
|
99
|
+
<a
|
|
100
|
+
class="govuk-footer__link govuk-footer__copyright-logo"
|
|
101
|
+
href="https://www.nationalarchives.gov.uk/information-management/re-using-public-sector-information/uk-government-licensing-framework/crown-copyright/">
|
|
102
|
+
{{$crownCopyrightMessage}}© Crown copyright{{/crownCopyrightMessage}}
|
|
103
|
+
</a>
|
|
104
|
+
</div>
|
|
105
|
+
</div>
|
|
106
|
+
</div>
|
|
107
|
+
</footer>
|
|
108
|
+
|
|
109
|
+
<div id="global-app-error" class="app-error hidden"></div>
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
{{$bodyEnd}}{{/bodyEnd}}
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
<script {{#nonce}}nonce="{{nonce}}"{{/nonce}}>if (typeof window.GOVUK === 'undefined') document.body.className = document.body.className.replace('js-enabled', '');</script>
|
|
116
|
+
|
|
117
|
+
</body>
|
|
118
|
+
</html>
|
|
@@ -358,7 +358,8 @@ module.exports = function (options) {
|
|
|
358
358
|
path: 'partials/forms/input-text-group',
|
|
359
359
|
renderWith: inputText,
|
|
360
360
|
options: {
|
|
361
|
-
maxlength: 18
|
|
361
|
+
maxlength: 18,
|
|
362
|
+
className: 'govuk-input'
|
|
362
363
|
}
|
|
363
364
|
},
|
|
364
365
|
'input-file': {
|
|
@@ -459,12 +460,12 @@ module.exports = function (options) {
|
|
|
459
460
|
const parts = [];
|
|
460
461
|
|
|
461
462
|
if (isExact) {
|
|
462
|
-
const dayPart = compiled['partials/forms/input-text-date'].render(inputText.call(this, key + '-day', {
|
|
463
|
+
const dayPart = compiled['partials/forms/input-text-date'].render(inputText.call(this, key + '-day', { inputmode: 'numeric', min: 1, max: 31, maxlength: 2, hintId: key + '-hint', date: true, autocomplete: autocomplete.day, formGroupClassName, className: classNameDay, isThisRequired }));
|
|
463
464
|
parts.push(dayPart);
|
|
464
465
|
}
|
|
465
466
|
|
|
466
|
-
const monthPart = compiled['partials/forms/input-text-date'].render(inputText.call(this, key + '-month', {
|
|
467
|
-
const yearPart = compiled['partials/forms/input-text-date'].render(inputText.call(this, key + '-year', {
|
|
467
|
+
const monthPart = compiled['partials/forms/input-text-date'].render(inputText.call(this, key + '-month', { inputmode: 'numeric', min: 1, max: 12, maxlength: 2, hintId: key + '-hint', date: true, autocomplete: autocomplete.month, formGroupClassName, className: classNameMonth, isThisRequired }));
|
|
468
|
+
const yearPart = compiled['partials/forms/input-text-date'].render(inputText.call(this, key + '-year', { inputmode: 'numeric', maxlength: 4, hintId: key + '-hint', date: true, autocomplete: autocomplete.year, formGroupClassName, className: classNameYear, isThisRequired }));
|
|
468
469
|
|
|
469
470
|
return parts.concat(monthPart, yearPart).join('\n');
|
|
470
471
|
};
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
<div id="{{key}}-group" class="govuk-form-group {{#compound}} form-group-compound{{/compound}}{{#formGroupClassName}} {{formGroupClassName}}{{/formGroupClassName}}{{#error}} govuk-form-group--error{{/error}}">
|
|
2
|
-
{{#error}}
|
|
2
|
+
{{#error}}
|
|
3
|
+
<p id="{{key}}-error" class="govuk-error-message" aria-hidden="true">
|
|
4
|
+
<span class="govuk-visually-hidden">Error:</span> {{error.message}}
|
|
5
|
+
</p>
|
|
6
|
+
{{/error}}
|
|
3
7
|
<div class="govuk-checkboxes__item">
|
|
4
8
|
<input class="govuk-checkboxes__input" type="checkbox" id="{{key}}" name="{{key}}" value="true" aria-required="{{required}}"{{#error}} aria-invalid="true"{{/error}}{{^error}}{{#toggle}} data-toggle="{{toggle}}"{{/toggle}}{{#selected}} checked="checked"{{/selected}}{{/error}}>
|
|
5
9
|
<label for="{{key}}" class="{{#className}}{{className}} {{/className}}{{#invalid}}invalid-input{{/invalid}}">
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<label for="{{id}}" class="{{labelClassName}}">
|
|
4
4
|
<span class="label-text">{{{label}}}</span>
|
|
5
5
|
</label>
|
|
6
|
-
{{#hint}}<
|
|
6
|
+
{{#hint}}<div {{$hintId}}id="{{hintId}}" {{/hintId}}class="govuk-hint">{{{hint}}}</div>{{/hint}}
|
|
7
7
|
{{#renderChild}}{{/renderChild}}
|
|
8
8
|
{{#attributes}}
|
|
9
9
|
{{#prefix}}
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
{{#max}} max="{{max}}"{{/max}}
|
|
22
22
|
{{#maxlength}} maxlength="{{maxlength}}"{{/maxlength}}
|
|
23
23
|
{{#pattern}} pattern="{{pattern}}"{{/pattern}}
|
|
24
|
+
{{#inputmode}}inputmode="{{inputmode}}"{{/inputmode}}
|
|
24
25
|
{{#hintId}} aria-describedby="{{hintId}}"{{/hintId}}
|
|
25
26
|
{{#error}} aria-invalid="true"{{/error}}
|
|
26
27
|
{{#autocomplete}} autocomplete="{{autocomplete}}"{{/autocomplete}}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
{{{label}}}
|
|
4
4
|
</label>
|
|
5
5
|
{{#isPageHeading}}</h1>{{/isPageHeading}}
|
|
6
|
-
{{#hint}}<
|
|
6
|
+
{{#hint}}<div {{$hintId}}id="{{hintId}}" {{/hintId}}class="govuk-hint">{{{hint}}}</div>{{/hint}}
|
|
7
7
|
{{#error}}
|
|
8
8
|
<p class="govuk-error-message">
|
|
9
9
|
<span class="govuk-visually-hidden">Error:</span> {{error.message}}
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
{{#error}} aria-invalid="true" aria-describedby="{{id}}-error" {{/error}}
|
|
30
30
|
>{{value}}</textarea>
|
|
31
31
|
{{#isMaxlengthOrMaxword}}
|
|
32
|
-
<div id="{{id}}-info" class=" govuk-hint govuk-character-count__message"
|
|
32
|
+
<div id="{{id}}-info" class=" govuk-hint govuk-character-count__message">You have {{#maxlength}}{{maxlength}} characters{{/maxlength}}{{#maxword}}{{maxword}}
|
|
33
33
|
words{{/maxword}} remaining
|
|
34
34
|
</div>
|
|
35
35
|
{{/isMaxlengthOrMaxword}}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
{{#errorlist.length}}{{#t}}errorlist.prefix{{/t}}{{/errorlist.length}}{{#title}}{{title}}{{/title}}{{^title}}{{$header}}{{/header}}{{/title}}{{#serviceName}} – {{serviceName}}{{/serviceName}} – GOV.UK
|
|
7
7
|
{{/pageTitle}}
|
|
8
8
|
{{$bodyStart}}
|
|
9
|
-
<a href="#{{#skipToMain}}{{skipToMain}}{{/skipToMain}}{{^skipToMain}}main-content{{/skipToMain}}" class="govuk-skip-link" id="skip-to-main">Skip to main content</a>
|
|
9
|
+
<a href="#{{#skipToMain}}{{skipToMain}}{{/skipToMain}}{{^skipToMain}}main-content{{/skipToMain}}" class="govuk-skip-link" data-module="govuk-skip-link" id="skip-to-main">Skip to main content</a>
|
|
10
10
|
{{/bodyStart}}
|
|
11
11
|
{{$headerClass}}govuk-header{{/headerClass}}
|
|
12
12
|
{{$insideHeader}}{{/insideHeader}}
|
|
@@ -1,33 +1,51 @@
|
|
|
1
|
-
<div id="cookie-banner" class="govuk-cookie-banner
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
1
|
+
<div id="cookie-banner" class="govuk-cookie-banner" data-nosnippet="" role="region" aria-label="Cookies on {{#appName}}{{appName}}{{/appName}}{{^appName}}this service{{/appName}}">
|
|
2
|
+
<div class="govuk-cookie-banner__message govuk-width-container">
|
|
3
|
+
<div id="cookie-banner-info" class="govuk-grid-row">
|
|
4
|
+
<div class="govuk-grid-column-two-thirds">
|
|
5
|
+
<h2 class="govuk-cookie-banner__heading govuk-heading-m">Cookies on {{#appName}}{{appName}}{{/appName}}{{^appName}}this service{{/appName}}</h2>
|
|
6
|
+
<div class="govuk-cookie-banner__content">
|
|
7
|
+
<p class="govuk-body">{{#t}}cookies.banner.message{{/t}}</p>
|
|
8
|
+
{{#hasGoogleAnalytics}}
|
|
9
|
+
<p class="govuk-body">We'd like to set additional cookies to understand how you use GOV.UK, remember your settings and improve government services.</p>
|
|
10
|
+
<p class="govuk-body">We also use cookies set by other sites to help us deliver content from their services.</p>
|
|
11
|
+
{{/hasGoogleAnalytics}}
|
|
12
|
+
</div>
|
|
13
|
+
</div>
|
|
14
|
+
</div>
|
|
15
|
+
<div id="cookie-banner-actions" class="govuk-button-group">
|
|
16
|
+
{{#hasGoogleAnalytics}}
|
|
17
|
+
<button id="accept-cookies-button" value="yes" type="submit" name="cookies[additional]" class="govuk-button" data-module="govuk-button" data-accept-cookies="true" data-track-category="cookieBanner" data-track-action="Cookie banner accepted" data-cookie-types="all">Accept additional cookies</button>
|
|
18
|
+
<button id="reject-cookies-button" value="no" type="submit" name="cookies[additional]" class="govuk-button" data-module="govuk-button" data-reject-cookies="true" data-track-category="cookieBanner" data-track-action="Cookie banner rejected">Reject additional cookies</button>
|
|
19
|
+
{{/hasGoogleAnalytics}}
|
|
20
|
+
<a class="govuk-link" href="/cookies">{{#t}}cookies.banner.link{{/t}}</a>
|
|
21
|
+
</div>
|
|
22
|
+
</div>
|
|
23
|
+
<div id="cookie-banner-submitted-accepted" data-accept-cookies="true" class="govuk-cookie-banner__message govuk-width-container" role="alert" hidden >
|
|
24
|
+
<div class="govuk-grid-row">
|
|
25
|
+
<div class="govuk-grid-column-two-thirds">
|
|
26
|
+
<div class="govuk-cookie-banner__content">
|
|
27
|
+
<p class="govuk-body">You've accepted additional cookies. You can <a class="govuk-link" href="/cookies">change your cookie settings</a> at any time.</p>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
</div>
|
|
31
|
+
<div class="govuk-button-group">
|
|
32
|
+
<button id="hide-accept-cookie-banner" value="yes" type="submit" name="cookies[hide]" class="govuk-button" data-module="govuk-button">
|
|
33
|
+
Hide cookie message
|
|
34
|
+
</button>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
<div id="cookie-banner-submitted-rejected" class="govuk-cookie-banner__message govuk-width-container" role="alert" hidden>
|
|
38
|
+
<div class="govuk-grid-row">
|
|
39
|
+
<div class="govuk-grid-column-two-thirds">
|
|
40
|
+
<div class="govuk-cookie-banner__content">
|
|
41
|
+
<p class="govuk-body">You've rejected additional cookies. You can <a class="govuk-link" href="/cookies">change your cookie settings</a> at any time.</p>
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
<div class="govuk-button-group">
|
|
46
|
+
<button id="hide-reject-cookie-banner" value="yes" type="submit" name="cookies[hide]" class="govuk-button" data-module="govuk-button">
|
|
47
|
+
Hide cookie message
|
|
48
|
+
</button>
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
33
51
|
</div>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<div class="govuk-header__content">
|
|
2
2
|
{{#startPageRedirectUrl}}
|
|
3
|
-
<a href="{{startPageRedirectUrl}}" class="govuk-header__link govuk-
|
|
3
|
+
<a href="{{startPageRedirectUrl}}" class="govuk-header__link govuk-header__service-name" id="proposition-name">{{$journeyHeader}}{{/journeyHeader}}</a>
|
|
4
4
|
{{/startPageRedirectUrl}}
|
|
5
5
|
{{^startPageRedirectUrl}}
|
|
6
|
-
<a href="{{journeyHeaderURL}}" class="govuk-header__link govuk-
|
|
6
|
+
<a href="{{journeyHeaderURL}}" class="govuk-header__link govuk-header__service-name" id="proposition-name">{{$journeyHeader}}{{/journeyHeader}}</a>
|
|
7
7
|
{{/startPageRedirectUrl}}
|
|
8
8
|
</div>
|