@govuk-one-login/frontend-ui 4.1.4 → 4.2.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/build/all.css +1 -0
- package/build/cjs/backend/index.cjs +257 -0
- package/build/cjs/backend/index.d.cts +39 -0
- package/build/cjs/backend/index.d.ts +39 -0
- package/build/cjs/backend/index.d.ts.map +1 -0
- package/build/cjs/backend/lib/helmet.d.ts +31 -0
- package/build/cjs/backend/lib/helmet.d.ts.map +1 -0
- package/build/cjs/backend/lib/index.d.ts +4 -0
- package/build/cjs/backend/lib/index.d.ts.map +1 -0
- package/build/cjs/backend/lib/locals.d.ts +11 -0
- package/build/cjs/backend/lib/locals.d.ts.map +1 -0
- package/build/cjs/backend/lib/settings.d.ts +21 -0
- package/build/cjs/backend/lib/settings.d.ts.map +1 -0
- package/build/cjs/backend/utils/logger.d.ts +9 -0
- package/build/cjs/backend/utils/logger.d.ts.map +1 -0
- package/build/cjs/frontend/index.cjs +443 -0
- package/build/cjs/frontend/index.d.cts +4 -0
- package/build/cjs/frontend/index.d.ts +4 -0
- package/build/cjs/frontend/index.d.ts.map +1 -0
- package/build/cjs/frontend/progress-button/progress-button.d.ts +2 -0
- package/build/cjs/frontend/progress-button/progress-button.d.ts.map +1 -0
- package/build/cjs/frontend/spinner/__tests__/spinner.test.d.ts +2 -0
- package/build/cjs/frontend/spinner/__tests__/spinner.test.d.ts.map +1 -0
- package/build/cjs/frontend/spinner/spinner.d.ts +64 -0
- package/build/cjs/frontend/spinner/spinner.d.ts.map +1 -0
- package/build/cjs/frontend/utils/types.d.ts +108 -0
- package/build/cjs/frontend/utils/types.d.ts.map +1 -0
- package/build/components/_all.scss +6 -0
- package/build/components/bases/auth/auth-base.njk +136 -0
- package/build/components/bases/home/home-base.njk +133 -0
- package/build/components/bases/identity/identity-base-form.njk +123 -0
- package/build/components/bases/identity/identity-base-page.njk +123 -0
- package/build/components/bases/ipv-core/ipv-core-base.njk +172 -0
- package/build/components/bases/mobile/mobile-base.njk +195 -0
- package/build/components/cookie-banner/cookie-banner.yaml +6 -0
- package/build/components/cookie-banner/macro.njk +1 -0
- package/build/components/cookie-banner/template.njk +106 -0
- package/build/components/footer/_index.scss +28 -0
- package/build/components/footer/footer.yaml +5 -0
- package/build/components/footer/macro.njk +1 -0
- package/build/components/footer/template.njk +12 -0
- package/build/components/header/README.md +34 -0
- package/build/components/header/_index.scss +102 -0
- package/build/components/header/header.yaml +16 -0
- package/build/components/header/macro.njk +3 -0
- package/build/components/header/template.njk +39 -0
- package/build/components/language-select/_index.scss +35 -0
- package/build/components/language-select/language-select.yaml +43 -0
- package/build/components/language-select/macro.njk +2 -0
- package/build/components/language-select/template.njk +38 -0
- package/build/components/macros/logo.njk +75 -0
- package/build/components/phase-banner/_index.scss +28 -0
- package/build/components/phase-banner/macro.njk +3 -0
- package/build/components/phase-banner/phase-banner.yaml +17 -0
- package/build/components/phase-banner/tag/macro.njk +3 -0
- package/build/components/phase-banner/tag/template.njk +3 -0
- package/build/components/phase-banner/template.njk +26 -0
- package/build/components/progress-button/_index.scss +51 -0
- package/build/components/progress-button/macro.njk +2 -0
- package/build/components/progress-button/progress-button.yaml +13 -0
- package/build/components/progress-button/template.njk +112 -0
- package/build/components/skip-link/README.md +10 -0
- package/build/components/skip-link/macro.njk +3 -0
- package/build/components/skip-link/skip-link.yaml +5 -0
- package/build/components/skip-link/template.njk +14 -0
- package/build/components/spinner/README.md +130 -0
- package/build/components/spinner/_index.scss +55 -0
- package/build/components/spinner/macro.njk +3 -0
- package/build/components/spinner/template.njk +18 -0
- package/build/esm/backend/index.d.ts +39 -0
- package/build/esm/backend/index.d.ts.map +1 -0
- package/build/esm/backend/index.js +247 -0
- package/build/esm/backend/lib/helmet.d.ts +31 -0
- package/build/esm/backend/lib/helmet.d.ts.map +1 -0
- package/build/esm/backend/lib/index.d.ts +4 -0
- package/build/esm/backend/lib/index.d.ts.map +1 -0
- package/build/esm/backend/lib/locals.d.ts +11 -0
- package/build/esm/backend/lib/locals.d.ts.map +1 -0
- package/build/esm/backend/lib/settings.d.ts +21 -0
- package/build/esm/backend/lib/settings.d.ts.map +1 -0
- package/build/esm/backend/utils/logger.d.ts +9 -0
- package/build/esm/backend/utils/logger.d.ts.map +1 -0
- package/build/esm/frontend/index.d.ts +4 -0
- package/build/esm/frontend/index.d.ts.map +1 -0
- package/build/esm/frontend/index.js +440 -0
- package/build/esm/frontend/progress-button/progress-button.d.ts +2 -0
- package/build/esm/frontend/progress-button/progress-button.d.ts.map +1 -0
- package/build/esm/frontend/spinner/__tests__/spinner.test.d.ts +2 -0
- package/build/esm/frontend/spinner/__tests__/spinner.test.d.ts.map +1 -0
- package/build/esm/frontend/spinner/spinner.d.ts +64 -0
- package/build/esm/frontend/spinner/spinner.d.ts.map +1 -0
- package/build/esm/frontend/utils/types.d.ts +108 -0
- package/build/esm/frontend/utils/types.d.ts.map +1 -0
- package/package.json +1 -2
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
{% if MAY_2025_REBRAND_ENABLED %}
|
|
2
|
+
{% set govukRebrand = true %}
|
|
3
|
+
{% endif %}
|
|
4
|
+
|
|
5
|
+
{% extends "govuk/template.njk" %}
|
|
6
|
+
|
|
7
|
+
{% from "frontend-ui/build/components/phase-banner/macro.njk" import frontendUiPhaseBanner %}
|
|
8
|
+
{% from "frontend-ui/build/components/cookie-banner/macro.njk" import frontendUiCookieBanner %}
|
|
9
|
+
{% from "frontend-ui/build/components/header/macro.njk" import frontendUiHeader %}
|
|
10
|
+
{% from "frontend-ui/build/components/footer/macro.njk" import frontendUiFooter %}
|
|
11
|
+
{% from "frontend-ui/build/components/language-select/macro.njk" import frontendUiLanguageSelect %}
|
|
12
|
+
{% from "govuk/components/notification-banner/macro.njk" import govukNotificationBanner %}
|
|
13
|
+
{% from "ga4-opl/macro.njk" import ga4OnPageLoad %}
|
|
14
|
+
|
|
15
|
+
{% if makeFullWidth %}
|
|
16
|
+
{% set columnWidth = "full" %}
|
|
17
|
+
{% else %}
|
|
18
|
+
{% set columnWidth = 'two-thirds' %}
|
|
19
|
+
{% endif %}
|
|
20
|
+
|
|
21
|
+
{% block head %}
|
|
22
|
+
<link href="/stylesheets/application.css" rel="stylesheet">
|
|
23
|
+
<link href="/stylesheets/language-toggle.css" rel="stylesheet">
|
|
24
|
+
<meta name="robots" content="noindex">
|
|
25
|
+
|
|
26
|
+
{% endblock %}
|
|
27
|
+
|
|
28
|
+
{% block pageTitle %}
|
|
29
|
+
{% if pageTitleName %}
|
|
30
|
+
{{ pageTitleName }}
|
|
31
|
+
-
|
|
32
|
+
{% endif %}
|
|
33
|
+
{{ 'general.serviceNameTitle' | translate }}
|
|
34
|
+
{% endblock %}
|
|
35
|
+
|
|
36
|
+
{% block bodyStart %}
|
|
37
|
+
{% block frontendUiCookieBanner %}
|
|
38
|
+
{{ frontendUiCookieBanner({
|
|
39
|
+
translations: translations.translation.cookieBanner
|
|
40
|
+
}
|
|
41
|
+
)}}
|
|
42
|
+
{% endblock %}
|
|
43
|
+
{% endblock %}
|
|
44
|
+
|
|
45
|
+
{% block header %}
|
|
46
|
+
{{ frontendUiHeader({
|
|
47
|
+
translations: translations.translation.header,
|
|
48
|
+
homepageUrl: "https://www.gov.uk"
|
|
49
|
+
}) }}
|
|
50
|
+
{% endblock %}
|
|
51
|
+
|
|
52
|
+
{% block main %}
|
|
53
|
+
<div class="govuk-width-container {{ containerClasses }}">
|
|
54
|
+
{% if doNotShowPhaseBanner %}
|
|
55
|
+
{% else %}
|
|
56
|
+
{{ frontendUiPhaseBanner({
|
|
57
|
+
translations: translations.translation.phaseBanner,
|
|
58
|
+
url: currentUrl,
|
|
59
|
+
contactUrl: supportFormLink,
|
|
60
|
+
noAppend: true
|
|
61
|
+
}) }}
|
|
62
|
+
{% endif %}
|
|
63
|
+
|
|
64
|
+
{% if showLanguageToggle %}
|
|
65
|
+
{{ frontendUiLanguageSelect({
|
|
66
|
+
translations: translations.translation.languageSelect,
|
|
67
|
+
url: currentUrl,
|
|
68
|
+
activeLanguage: htmlLang
|
|
69
|
+
}) }}
|
|
70
|
+
{% endif %}
|
|
71
|
+
|
|
72
|
+
{% if showBack %}
|
|
73
|
+
{{ govukBackLink({
|
|
74
|
+
text: "Back",
|
|
75
|
+
href: hrefBack
|
|
76
|
+
}) }}
|
|
77
|
+
{% endif %}
|
|
78
|
+
{% if showBackLinkHtml %}
|
|
79
|
+
<a href="#" id="back-button" class="govuk-back-link">{{'general.buttons.back' | translate}}</a>
|
|
80
|
+
{% endif %}
|
|
81
|
+
<main class="govuk-main-wrapper {{ mainClasses }} govuk-!-padding-top-2" id="main-content" role="main" >
|
|
82
|
+
<div class="govuk-grid-row">
|
|
83
|
+
<div class="govuk-grid-column-{{columnWidth}} {{ rowClasses }}">
|
|
84
|
+
{% if (displayBanner) %}
|
|
85
|
+
{{ govukNotificationBanner({
|
|
86
|
+
html: bannerMessage,
|
|
87
|
+
type: bannerType,
|
|
88
|
+
titleText: bannerTitleText
|
|
89
|
+
}) }}
|
|
90
|
+
{% endif %}
|
|
91
|
+
{% block content %}{% endblock %}
|
|
92
|
+
</div>
|
|
93
|
+
</div>
|
|
94
|
+
</main>
|
|
95
|
+
</div>
|
|
96
|
+
{% endblock %}
|
|
97
|
+
|
|
98
|
+
{% block footer %}
|
|
99
|
+
{{ frontendUiFooter({
|
|
100
|
+
translations: {
|
|
101
|
+
footerNavItems: [
|
|
102
|
+
{
|
|
103
|
+
href: 'general.base.footer.accessibility.link' | translate | safe,
|
|
104
|
+
text: 'general.base.footer.accessibility.linkText' | translate
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
href: 'general.cookieBanner.viewCookiesLink' | translate,
|
|
108
|
+
text: 'general.base.footer.cookies' | translate
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
href: 'general.base.footer.termsAndConditions.link' | translate,
|
|
112
|
+
text: 'general.base.footer.termsAndConditions.linkText' | translate,
|
|
113
|
+
attributes: { "data-pw": "terms-and-conditions-link" }
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
href: 'general.base.footer.privacy.link' | translate | safe,
|
|
117
|
+
text: 'general.base.footer.privacy.linkText' | translate,
|
|
118
|
+
attributes: { "data-pw": "privacy-notice-link" }
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
href: supportFormLink,
|
|
122
|
+
text: 'general.base.footer.support.linkText' | translate,
|
|
123
|
+
attributes: {
|
|
124
|
+
target: "_blank",
|
|
125
|
+
rel: "noopener noreferrer",
|
|
126
|
+
"data-pw": "footer-support-form-link"
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
],
|
|
130
|
+
contentLicence: {
|
|
131
|
+
html: 'general.base.footer.contentLicence.linkText' | translate | safe
|
|
132
|
+
},
|
|
133
|
+
copyright: {
|
|
134
|
+
text: 'general.base.footer.copyright.linkText' | translate
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}) }}
|
|
138
|
+
{% endblock %}
|
|
139
|
+
|
|
140
|
+
{% block bodyEnd %}
|
|
141
|
+
<script type="module" nonce='{{ scriptNonce }}' src="/public/scripts/govuk-frontend.min.js"></script>
|
|
142
|
+
<script type="module" nonce='{{ scriptNonce }}'>
|
|
143
|
+
import {initAll} from '/public/scripts/govuk-frontend.min.js'
|
|
144
|
+
initAll()
|
|
145
|
+
</script>
|
|
146
|
+
<script type="text/javascript" src="/public/scripts/application.js"></script>
|
|
147
|
+
<script type="text/javascript" src="/public/scripts/analytics.js" nonce='{{scriptNonce}}'></script>
|
|
148
|
+
<script type="text/javascript" nonce='{{scriptNonce}}'>
|
|
149
|
+
window.DI = window.DI || {};
|
|
150
|
+
window.DI.taxonomy_level2 = '{{taxonomy_level2}}'
|
|
151
|
+
</script>
|
|
152
|
+
<script type="text/javascript" {% if scriptNonce %} nonce="{{ scriptNonce }}"{% endif %}>
|
|
153
|
+
{% if analyticsDataSensitive is defined and isPageDataSensitive is defined %}
|
|
154
|
+
window
|
|
155
|
+
.DI
|
|
156
|
+
.appInit({
|
|
157
|
+
ga4ContainerId: "{{ga4ContainerId}}",
|
|
158
|
+
}, {
|
|
159
|
+
isDataSensitive: {{ analyticsDataSensitive | default(true) }},
|
|
160
|
+
isPageDataSensitive: {{ isPageDataSensitive | default(true) }},
|
|
161
|
+
enableGa4Tracking: {{ isGa4Enabled | default(false) }},
|
|
162
|
+
cookieDomain: "{{analyticsCookieDomain}}"
|
|
163
|
+
});
|
|
164
|
+
{% else %}
|
|
165
|
+
console.log("Using deprecated GA4 v2 config. Please add analyticsDataSensitive and isPageDataSensitive flags to your nunjucks environment to enable GA4 v4. This will be removed in a future version.");
|
|
166
|
+
window
|
|
167
|
+
.DI
|
|
168
|
+
.appInit({
|
|
169
|
+
ga4ContainerId: "{{ga4ContainerId}}",
|
|
170
|
+
uaContainerId: "{{uaContainerId}}"
|
|
171
|
+
}, {
|
|
172
|
+
isDataSensitive: false,
|
|
173
|
+
disableGa4Tracking: {{isGa4Disabled}},
|
|
174
|
+
disableUaTracking: {{isUaDisabled}},
|
|
175
|
+
cookieDomain: "{{analyticsCookieDomain}}"
|
|
176
|
+
});
|
|
177
|
+
{% endif %}
|
|
178
|
+
</script>
|
|
179
|
+
<script type="text/javascript" nonce='{{scriptNonce}}'>
|
|
180
|
+
if (document.getElementById('back-button'))
|
|
181
|
+
document
|
|
182
|
+
.getElementById('back-button')
|
|
183
|
+
.addEventListener('click', (e) => {
|
|
184
|
+
e.preventDefault();
|
|
185
|
+
window
|
|
186
|
+
.history
|
|
187
|
+
.back()
|
|
188
|
+
})
|
|
189
|
+
</script>
|
|
190
|
+
|
|
191
|
+
<script type="module" nonce="{{scriptNonce}}">
|
|
192
|
+
import {setFingerprintCookie} from "/public/scripts/index.js";
|
|
193
|
+
await setFingerprintCookie("{{analyticsCookieDomain}}");
|
|
194
|
+
</script>
|
|
195
|
+
{% endblock %}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{% macro frontendUiCookieBanner(params) %} {%- include "./template.njk" -%} {% endmacro %}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
{% from "govuk/components/cookie-banner/macro.njk" import govukCookieBanner %}
|
|
2
|
+
|
|
3
|
+
{% set lng = params.activeLanguage %}
|
|
4
|
+
{% set cookieBanner = params.translations %}
|
|
5
|
+
|
|
6
|
+
{% set html %}
|
|
7
|
+
<p class="govuk-body">{{ cookieBanner.body1 }}</p>
|
|
8
|
+
<p class="govuk-body">{{ cookieBanner.body2 }}</p>
|
|
9
|
+
{% endset %}
|
|
10
|
+
|
|
11
|
+
{% set acceptHtml %}
|
|
12
|
+
<p class="govuk-body">
|
|
13
|
+
{{ cookieBanner.cookieBannerAccept.body1 }}
|
|
14
|
+
<a class="govuk-link" href="https://signin.account.gov.uk/cookies">
|
|
15
|
+
{{ cookieBanner.changeCookiePreferencesLink }}
|
|
16
|
+
</a>
|
|
17
|
+
{{ cookieBanner.cookieBannerAccept.body2 }}
|
|
18
|
+
</p>
|
|
19
|
+
{% endset %}
|
|
20
|
+
|
|
21
|
+
{% set rejectedHtml %}
|
|
22
|
+
<p class="govuk-body">
|
|
23
|
+
{{ cookieBanner.cookieBannerReject.body1 }}
|
|
24
|
+
<a class="govuk-link" href="https://signin.account.gov.uk/cookies">
|
|
25
|
+
{{ cookieBanner.changeCookiePreferencesLink }}
|
|
26
|
+
</a>
|
|
27
|
+
{{ cookieBanner.cookieBannerReject.body2 }}
|
|
28
|
+
</p>
|
|
29
|
+
{% endset %}
|
|
30
|
+
|
|
31
|
+
{{ govukCookieBanner({
|
|
32
|
+
ariaLabel: cookieBanner.ariaLabel,
|
|
33
|
+
name: "gov-uk-cookie-banner",
|
|
34
|
+
messages: [
|
|
35
|
+
{
|
|
36
|
+
headingText: cookieBanner.headingText,
|
|
37
|
+
html: html,
|
|
38
|
+
attributes: {
|
|
39
|
+
"id": "cookies-banner-main"
|
|
40
|
+
},
|
|
41
|
+
actions: [
|
|
42
|
+
{
|
|
43
|
+
text: cookieBanner.acceptAdditionalCookies,
|
|
44
|
+
type: "button",
|
|
45
|
+
name: "cookiesAccept",
|
|
46
|
+
value: "accept",
|
|
47
|
+
attributes: {
|
|
48
|
+
"aria-label": cookieBanner.acceptAdditionalCookies
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
text: cookieBanner.rejectAdditionalCookies,
|
|
53
|
+
type: "button",
|
|
54
|
+
name: "cookiesReject",
|
|
55
|
+
value: "reject",
|
|
56
|
+
attributes: {
|
|
57
|
+
"aria-label": cookieBanner.rejectAdditionalCookies
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
text: cookieBanner.viewCookies,
|
|
62
|
+
href: "https://signin.account.gov.uk/cookies",
|
|
63
|
+
attributes: {
|
|
64
|
+
"aria-label": cookieBanner.viewCookies
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
]
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
html: acceptHtml,
|
|
71
|
+
attributes: {
|
|
72
|
+
"id": "cookies-accepted"
|
|
73
|
+
},
|
|
74
|
+
actions: [
|
|
75
|
+
{
|
|
76
|
+
text: cookieBanner.hideCookieMessage,
|
|
77
|
+
href: "#",
|
|
78
|
+
type: "button",
|
|
79
|
+
classes:"cookie-hide-button",
|
|
80
|
+
attributes: {
|
|
81
|
+
"aria-label": cookieBanner.hideCookieMessage
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
],
|
|
85
|
+
hidden: true
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
html: rejectedHtml,
|
|
89
|
+
attributes: {
|
|
90
|
+
"id": "cookies-rejected"
|
|
91
|
+
},
|
|
92
|
+
actions: [
|
|
93
|
+
{
|
|
94
|
+
text: cookieBanner.hideCookieMessage,
|
|
95
|
+
href: "#",
|
|
96
|
+
type: "button",
|
|
97
|
+
classes:"cookie-hide-button",
|
|
98
|
+
attributes: {
|
|
99
|
+
"aria-label": cookieBanner.hideCookieMessage
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
],
|
|
103
|
+
hidden: true
|
|
104
|
+
}
|
|
105
|
+
], hidden: false
|
|
106
|
+
}) }}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
@media (max-width: 256px) {
|
|
2
|
+
|
|
3
|
+
.govuk-footer__crown{
|
|
4
|
+
max-width: 100%;
|
|
5
|
+
max-height: auto;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.govuk-footer{
|
|
10
|
+
padding-top: 25px;
|
|
11
|
+
padding-bottom: 15px;
|
|
12
|
+
border-top: 1px solid #b1b4b6;
|
|
13
|
+
color: #0b0c0c;
|
|
14
|
+
background: #f3f2f1;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.govuk-template--rebranded .govuk-footer {
|
|
18
|
+
border-top: 10px solid #1d70b8;
|
|
19
|
+
background: #f4f8fb;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.govuk-footer__copyright-logo::before {
|
|
23
|
+
background: rgb(110,119,122,255);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.govuk-template--rebranded .govuk-footer__copyright-logo::before{
|
|
27
|
+
background: currentcolor
|
|
28
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{% macro frontendUiFooter(params) %} {%- include "./template.njk" -%} {% endmacro %}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{% set footer = params.translations %}
|
|
2
|
+
|
|
3
|
+
{% from "govuk/components/footer/macro.njk" import govukFooter %}
|
|
4
|
+
{{ govukFooter({
|
|
5
|
+
meta: { items: footer.footerNavItems },
|
|
6
|
+
contentLicence: { html: footer.contentLicence.html },
|
|
7
|
+
copyright: { text: footer.copyright.text },
|
|
8
|
+
rebrand: MAY_2025_REBRAND_ENABLED,
|
|
9
|
+
attributes: {
|
|
10
|
+
"aria-label": "footer"
|
|
11
|
+
}
|
|
12
|
+
}) }}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Header
|
|
2
|
+
|
|
3
|
+
###### For translations to work you __must__ pass in the `header: translations` varible
|
|
4
|
+
```html
|
|
5
|
+
{% block header %}
|
|
6
|
+
{{ frontendUiHeader
|
|
7
|
+
({
|
|
8
|
+
header: translations
|
|
9
|
+
})
|
|
10
|
+
}}
|
|
11
|
+
{% endblock %}
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
###### In order to remove the linking capability of the header logo and text include the `isEmbeddedMobileApp = true` variable within your repos basefile when you are calling the header
|
|
15
|
+
```html
|
|
16
|
+
{% block header %}
|
|
17
|
+
{{ frontendUiHeader
|
|
18
|
+
({
|
|
19
|
+
isEmbeddedMobileApp = true
|
|
20
|
+
})
|
|
21
|
+
}}
|
|
22
|
+
{% endblock %}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
###### To enable the sign out functionality of the heade include the `signOutLink` variable within your repos basefile when calling the header
|
|
26
|
+
```html
|
|
27
|
+
{% block header %}
|
|
28
|
+
{{ frontendUiHeader
|
|
29
|
+
({
|
|
30
|
+
signOutLink: 'https://signin.account.gov.uk/signed-out'
|
|
31
|
+
})
|
|
32
|
+
}}
|
|
33
|
+
{% endblock %}
|
|
34
|
+
```
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
@media (max-width: 640px) {
|
|
2
|
+
.govuk-header__navigation-item {
|
|
3
|
+
border-left: none !important;
|
|
4
|
+
}
|
|
5
|
+
.govuk-template--rebranded .govuk-header__navigation-list {
|
|
6
|
+
padding-bottom: 0px !important;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.govuk-header__navigation-item{
|
|
10
|
+
padding-top: 8px !important;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.frontendUi_header_signOut-item {
|
|
15
|
+
padding: 5px 0px 5px 30px;
|
|
16
|
+
border-left: 1px solid #b1b4b6;
|
|
17
|
+
margin-left: auto;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.frontendUi_header_signOut-item--rebrand {
|
|
21
|
+
border-left: none;
|
|
22
|
+
padding: 5px 0px 5px 0px;
|
|
23
|
+
margin-left: auto;
|
|
24
|
+
font-weight: 700 !important;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.frontendUi_header__signOut {
|
|
28
|
+
display: flex;
|
|
29
|
+
flex-wrap: wrap;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.frontendUi-header__content {
|
|
33
|
+
margin-left: auto;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.govuk-header__navigation--signOut {
|
|
37
|
+
padding: 15px 0 15px !important;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.govuk-template--rebranded .govuk-header__navigation {
|
|
41
|
+
padding: 15px 0 15px !important;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
@media (max-width: 640px) {
|
|
45
|
+
.govuk-header__navigation--signOut {
|
|
46
|
+
padding: 18px 0 8px !important;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.govuk-template--rebranded .govuk-header__navigation {
|
|
50
|
+
padding: 18px 0 8px !important;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.govuk-template--rebranded .govuk-header__navigation-item a {
|
|
55
|
+
font-weight: 700 !important;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.govuk-template--rebranded .govuk-header__navigation-item {
|
|
59
|
+
padding-top: 5px !important;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
@media (min-width: 20em) and (max-width: 48.0525em) {
|
|
63
|
+
.govuk-template--rebranded .govuk-header__navigation-list {
|
|
64
|
+
padding-bottom: 0px;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
@media (max-width: 323px) {
|
|
69
|
+
|
|
70
|
+
.govuk-header__logo{
|
|
71
|
+
padding-right: 5px;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.frontendUi_header_signOut-item
|
|
75
|
+
{
|
|
76
|
+
padding-left: 0px;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
@media (max-width: 261px) {
|
|
81
|
+
|
|
82
|
+
.frontendUi-header__content {
|
|
83
|
+
margin-left: unset;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
.govuk-template--rebranded .govuk-header__navigation {
|
|
90
|
+
padding: 0px 0 8px !important;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.govuk-header__logotype{
|
|
94
|
+
max-width: 100%;
|
|
95
|
+
max-height: auto;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.govuk-template--rebranded .govuk-header__logo{
|
|
99
|
+
padding-top: 5% !important;
|
|
100
|
+
padding-bottom: 5% !important;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
params:
|
|
2
|
+
- name: translations
|
|
3
|
+
type: string
|
|
4
|
+
required: true
|
|
5
|
+
description: translations from middleware
|
|
6
|
+
- name: isEmbeddedMobileApp
|
|
7
|
+
type: boolean
|
|
8
|
+
required: false
|
|
9
|
+
description: disables the gov.uk link in the header
|
|
10
|
+
- name: signOutLink
|
|
11
|
+
type: string
|
|
12
|
+
required: false
|
|
13
|
+
description: where the signout button will direct the user
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{% from "../macros/logo.njk" import govukLogo %}
|
|
2
|
+
{% set header = params.translations %}
|
|
3
|
+
|
|
4
|
+
{%if MAY_2025_REBRAND_ENABLED%}
|
|
5
|
+
{%- set _rebrand = params.rebrand | default(govukRebrand() if govukRebrand is callable else govukRebrand) -%}
|
|
6
|
+
{% endif %}
|
|
7
|
+
<header class="govuk-header {%- if params.classes %} {{ params.classes }}{% endif %}" data-module="govuk-header">
|
|
8
|
+
<div class="frontendUi_header__signOut govuk-header__container {{ params.containerClasses | default("govuk-width-container", true) }}">
|
|
9
|
+
<div class="govuk-header__logo">
|
|
10
|
+
{% if params.isEmbeddedMobileApp %}
|
|
11
|
+
<span class="govuk-header__link govuk-header__link--homepage" style="pointer-events: none;">
|
|
12
|
+
{% else %}
|
|
13
|
+
<a href="{{ params.homepageUrl | default('https://www.gov.uk/') }}" class="govuk-header__link govuk-header__link--homepage">
|
|
14
|
+
{% endif %}
|
|
15
|
+
{{ govukLogo({
|
|
16
|
+
classes: "govuk-header__logotype",
|
|
17
|
+
ariaLabelText: "GOV.UK",
|
|
18
|
+
useTudorCrown: params.useTudorCrown,
|
|
19
|
+
rebrand: MAY_2025_REBRAND_ENABLED
|
|
20
|
+
}) | trim | indent(8) }}
|
|
21
|
+
{% if not params.isEmbeddedMobileApp %}
|
|
22
|
+
</a>
|
|
23
|
+
{% endif %}
|
|
24
|
+
</div>
|
|
25
|
+
{% if params.signOutLink %}
|
|
26
|
+
<div class="frontendUi-header__content govuk-header__content">
|
|
27
|
+
<nav aria-label="{{header.ariaLabel}}" class="govuk-header__navigation {{ govuk-header__navigation--signOut if params.MAY_2025_REBRAND_ENABLED }}">
|
|
28
|
+
<ul id="navigation" class="frontendUi_header__signOut govuk-header__navigation-list">
|
|
29
|
+
<li class="{{ 'frontendUi_header_signOut-item--rebrand' if MAY_2025_REBRAND_ENABLED }} {{'frontendUi_header_signOut-item' if not MAY_2025_REBRAND_ENABLED}} govuk-header__navigation-item{{ ' govuk-header__navigation-item--active' if item.active }}">
|
|
30
|
+
<a aria-label="{{header.signOutAriaLabel}}" class="govuk-header__link" href="{{params.signOutLink}}">
|
|
31
|
+
{{header.signOut}}
|
|
32
|
+
</a>
|
|
33
|
+
</li>
|
|
34
|
+
</ul>
|
|
35
|
+
</nav>
|
|
36
|
+
</div>
|
|
37
|
+
{% endif %}
|
|
38
|
+
</div>
|
|
39
|
+
</header>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
.language-select {
|
|
2
|
+
margin: 15px 0 15px 0;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.language-select__list {
|
|
6
|
+
margin-top: 1em;
|
|
7
|
+
text-align: right;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.language-select__list-item {
|
|
11
|
+
display: inline-block;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.language-select__list-item:first-child::after {
|
|
15
|
+
content: "";
|
|
16
|
+
display: inline-block;
|
|
17
|
+
position: relative;
|
|
18
|
+
top: 0.1875em;
|
|
19
|
+
height: 1em;
|
|
20
|
+
border-right: 0.09375em solid black;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.language-select__list-item a,
|
|
24
|
+
.language-select__list-item [aria-current] {
|
|
25
|
+
padding: 0.3125em;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
@media screen and (max-width: 641px) {
|
|
29
|
+
.language-select__list {
|
|
30
|
+
float: none;
|
|
31
|
+
text-align: left;
|
|
32
|
+
padding-bottom: 10px;
|
|
33
|
+
border-bottom: 1px solid #b1b4b6;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
params:
|
|
2
|
+
- name: translations
|
|
3
|
+
type: string
|
|
4
|
+
required: true
|
|
5
|
+
description: translations from middleware
|
|
6
|
+
- name: activeLanguage
|
|
7
|
+
type: string
|
|
8
|
+
required: true
|
|
9
|
+
description: currently selected language
|
|
10
|
+
- name: currentUrl
|
|
11
|
+
type: string
|
|
12
|
+
required: true
|
|
13
|
+
description: current url to be used to append langauge variable
|
|
14
|
+
- name: ariaLabel
|
|
15
|
+
type: string
|
|
16
|
+
required: false
|
|
17
|
+
description: aria label for the nav tag
|
|
18
|
+
- name: class
|
|
19
|
+
type: string
|
|
20
|
+
required: false
|
|
21
|
+
description: css class you can add
|
|
22
|
+
- name: languages
|
|
23
|
+
type: array
|
|
24
|
+
required: false
|
|
25
|
+
description: array of languages object
|
|
26
|
+
params:
|
|
27
|
+
- name: language
|
|
28
|
+
type: object
|
|
29
|
+
required: false
|
|
30
|
+
description: language object
|
|
31
|
+
params:
|
|
32
|
+
- name: code
|
|
33
|
+
type: string
|
|
34
|
+
required: true
|
|
35
|
+
description: language code
|
|
36
|
+
- name: text
|
|
37
|
+
type: string
|
|
38
|
+
required: true
|
|
39
|
+
description: language text
|
|
40
|
+
- name: visuallyHidden
|
|
41
|
+
type: string
|
|
42
|
+
required: false
|
|
43
|
+
description: language text
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{% set languageSelect = params.translations %}
|
|
2
|
+
{% if params.languages %}
|
|
3
|
+
{% set languages = params.languages %}
|
|
4
|
+
{% else %}
|
|
5
|
+
{% set languages = [
|
|
6
|
+
{ code: "en", text: "English", visuallyHidden: "Change to English" },
|
|
7
|
+
{ code: "cy", text: "Cymraeg", visuallyHidden: "Newid yr iaith ir Gymraeg" }
|
|
8
|
+
] %}
|
|
9
|
+
{% endif %}
|
|
10
|
+
|
|
11
|
+
<nav
|
|
12
|
+
class="language-select {{params.class}}"
|
|
13
|
+
aria-label="{{languageSelect.ariaLabel}}"
|
|
14
|
+
role="navigation"
|
|
15
|
+
>
|
|
16
|
+
<ul
|
|
17
|
+
class="govuk-list language-select__list govuk-body-s govuk-!-margin-0"
|
|
18
|
+
role="list"
|
|
19
|
+
>
|
|
20
|
+
{% for lang in languages %}
|
|
21
|
+
<li class="language-select__list-item" role="listitem">
|
|
22
|
+
{% if params.activeLanguage == lang.code %}
|
|
23
|
+
<span aria-current="true">{{ lang.text }}</span>
|
|
24
|
+
{% else %}
|
|
25
|
+
<a
|
|
26
|
+
class="govuk-link govuk-link--no-visited-state"
|
|
27
|
+
href="{{ addLanguageParam(lang.code, params.url)}}"
|
|
28
|
+
data-journey-click="link - click:lang-select:{{ lang.code }}"
|
|
29
|
+
rel="alternate"
|
|
30
|
+
hreflang="{{ lang.code }}"
|
|
31
|
+
lang="{{lang.code}}"
|
|
32
|
+
role="link"
|
|
33
|
+
>{{ lang.text }}<div class="govuk-visually-hidden">{{ lang.visuallyHidden }}</div></a>
|
|
34
|
+
{% endif %}
|
|
35
|
+
</li>
|
|
36
|
+
{% endfor %}
|
|
37
|
+
</ul>
|
|
38
|
+
</nav>
|