govuk_publishing_components 37.1.0 → 37.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.
- checksums.yaml +4 -4
- data/app/assets/config/govuk_publishing_components_manifest.js +0 -2
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-core.js +6 -0
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-schemas.js +2 -2
- data/app/assets/javascripts/govuk_publishing_components/lib/cookie-settings.js +109 -0
- data/app/assets/javascripts/govuk_publishing_components/load-analytics.js +83 -60
- data/app/assets/stylesheets/component_guide/application.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_contents-list.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_image-card.scss +3 -3
- data/app/assets/stylesheets/govuk_publishing_components/components/_modal-dialogue.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_search.scss +2 -2
- data/app/assets/stylesheets/govuk_publishing_components/components/_share-links.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_step-by-step-nav-related.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_step-by-step-nav.scss +10 -10
- data/app/assets/stylesheets/govuk_publishing_components/components/_table.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_warning-callout.scss +2 -2
- data/app/assets/stylesheets/govuk_publishing_components/components/helpers/_markdown-typography.scss +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/mixins/_grid-helper.scss +1 -1
- data/app/models/govuk_publishing_components/audit_applications.rb +1 -1
- data/app/models/govuk_publishing_components/component_docs.rb +1 -1
- data/app/views/govuk_publishing_components/components/_details.html.erb +18 -2
- data/app/views/govuk_publishing_components/components/_image_card.html.erb +11 -11
- data/app/views/govuk_publishing_components/components/_layout_footer.html.erb +5 -0
- data/app/views/govuk_publishing_components/components/_layout_super_navigation_header.html.erb +7 -3
- data/app/views/govuk_publishing_components/components/_metadata.html.erb +1 -5
- data/app/views/govuk_publishing_components/components/docs/details.yml +21 -0
- data/app/views/govuk_publishing_components/components/docs/image_card.yml +18 -11
- data/app/views/govuk_publishing_components/components/feedback/_problem_form.html.erb +5 -1
- data/app/views/govuk_publishing_components/components/feedback/_survey_signup_form.html.erb +5 -1
- data/lib/govuk_publishing_components/presenters/absolute_links_helper.rb +20 -0
- data/lib/govuk_publishing_components/version.rb +1 -1
- data/lib/govuk_publishing_components.rb +1 -0
- data/node_modules/axe-core/axe.js +604 -440
- data/node_modules/axe-core/axe.min.js +2 -2
- data/node_modules/axe-core/package.json +1 -1
- data/node_modules/axe-core/sri-history.json +4 -0
- metadata +5 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 638e22aafc5fdc6f80b61babb5bcddf89bc41213e5e49afaf95c23a8ca62d5ea
|
|
4
|
+
data.tar.gz: 3af560c10c9beb1da8db5d930d5bd02b530f5ceeaa65734b5432baf2651a7e9b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3b4d262a5afcc7a3b436b9142daa46e994bbbda7bb5e780a8c98d95df894d9ae6d3a8ae46a62fac7daea39d33006311843d231f786f1b2ba5ebcd47c76a41d3d
|
|
7
|
+
data.tar.gz: f7274e4d9d134c750ae933b717b7a6efae8fb126c1c5c290646454ab35b153108d2ccda6971f702abea7e6554f079ce68e395fff789c2ff763d0f8a7df9c350f
|
|
@@ -34,8 +34,14 @@ window.GOVUK.analyticsGa4 = window.GOVUK.analyticsGa4 || {};
|
|
|
34
34
|
return navigator.userAgent
|
|
35
35
|
},
|
|
36
36
|
|
|
37
|
+
getTimestamp: function () {
|
|
38
|
+
return Date.now().toString()
|
|
39
|
+
},
|
|
40
|
+
|
|
37
41
|
sendData: function (data) {
|
|
38
42
|
data.govuk_gem_version = this.getGemVersion()
|
|
43
|
+
data.timestamp = this.getTimestamp()
|
|
44
|
+
|
|
39
45
|
// set this in the console as a debugging aid
|
|
40
46
|
if (window.GOVUK.analyticsGa4.showDebug) {
|
|
41
47
|
if (data.event_data) {
|
|
@@ -75,14 +75,14 @@
|
|
|
75
75
|
// given an object and a key, insert a value into object[key] if it exists
|
|
76
76
|
Schemas.prototype.addToObject = function (obj, key, value) {
|
|
77
77
|
if (key in obj) {
|
|
78
|
-
obj[key] = value
|
|
78
|
+
obj[key] = value + '' // ensure is a string
|
|
79
79
|
return obj
|
|
80
80
|
} else {
|
|
81
81
|
// check for one level of nesting in the object
|
|
82
82
|
for (var property in obj) {
|
|
83
83
|
if (this.isAnObject(obj[property])) {
|
|
84
84
|
if (key in obj[property]) {
|
|
85
|
-
obj[property][key] = value
|
|
85
|
+
obj[property][key] = value + '' // ensure is a string
|
|
86
86
|
return obj
|
|
87
87
|
}
|
|
88
88
|
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
window.GOVUK = window.GOVUK || {}
|
|
2
|
+
window.GOVUK.Modules = window.GOVUK.Modules || {};
|
|
3
|
+
|
|
4
|
+
(function (Modules) {
|
|
5
|
+
function CookieSettings ($module) {
|
|
6
|
+
this.$module = $module
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
CookieSettings.prototype.init = function () {
|
|
10
|
+
this.$module.submitSettingsForm = this.submitSettingsForm.bind(this)
|
|
11
|
+
|
|
12
|
+
document.querySelector('form[data-module=cookie-settings]')
|
|
13
|
+
.addEventListener('submit', this.$module.submitSettingsForm)
|
|
14
|
+
|
|
15
|
+
this.setInitialFormValues()
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
CookieSettings.prototype.setInitialFormValues = function () {
|
|
19
|
+
if (!window.GOVUK.cookie('cookies_policy')) {
|
|
20
|
+
window.GOVUK.setDefaultConsentCookie()
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
var currentConsentCookie = window.GOVUK.cookie('cookies_policy')
|
|
24
|
+
var currentConsentCookieJSON = JSON.parse(currentConsentCookie)
|
|
25
|
+
|
|
26
|
+
// We don't need the essential value as this cannot be changed by the user
|
|
27
|
+
delete currentConsentCookieJSON.essential
|
|
28
|
+
|
|
29
|
+
for (var cookieType in currentConsentCookieJSON) {
|
|
30
|
+
var radioButton
|
|
31
|
+
|
|
32
|
+
if (currentConsentCookieJSON[cookieType]) {
|
|
33
|
+
radioButton = document.querySelector('input[name=cookies-' + cookieType + '][value=on]')
|
|
34
|
+
} else {
|
|
35
|
+
radioButton = document.querySelector('input[name=cookies-' + cookieType + '][value=off]')
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (radioButton) {
|
|
39
|
+
radioButton.checked = true
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
CookieSettings.prototype.submitSettingsForm = function (event) {
|
|
45
|
+
event.preventDefault()
|
|
46
|
+
|
|
47
|
+
var formInputs = event.target.getElementsByTagName('input')
|
|
48
|
+
var options = {}
|
|
49
|
+
|
|
50
|
+
for (var i = 0; i < formInputs.length; i++) {
|
|
51
|
+
var input = formInputs[i]
|
|
52
|
+
if (input.checked) {
|
|
53
|
+
var name = input.name.replace('cookies-', '')
|
|
54
|
+
var value = input.value === 'on'
|
|
55
|
+
|
|
56
|
+
options[name] = value
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
window.GOVUK.setConsentCookie(options)
|
|
61
|
+
window.GOVUK.setCookie('cookies_preferences_set', true, { days: 365 })
|
|
62
|
+
|
|
63
|
+
this.fireAnalyticsEvent(options)
|
|
64
|
+
|
|
65
|
+
this.showConfirmationMessage()
|
|
66
|
+
|
|
67
|
+
return false
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
CookieSettings.prototype.fireAnalyticsEvent = function (consent) {
|
|
71
|
+
var eventLabel = ''
|
|
72
|
+
|
|
73
|
+
for (var option in consent) {
|
|
74
|
+
var optionValue = consent[option] ? 'yes' : 'no'
|
|
75
|
+
eventLabel += option + '-' + optionValue + ' '
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if (window.GOVUK.analytics && window.GOVUK.analytics.trackEvent) {
|
|
79
|
+
window.GOVUK.analytics.trackEvent('cookieSettings', 'Save changes', { label: eventLabel })
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
CookieSettings.prototype.showConfirmationMessage = function () {
|
|
84
|
+
var confirmationMessage = document.querySelector('div[data-cookie-confirmation]')
|
|
85
|
+
// hide the message if already visible so assistive tech is triggered when it appears
|
|
86
|
+
confirmationMessage.style.display = 'none'
|
|
87
|
+
var previousPageLink = document.querySelector('.cookie-settings__prev-page')
|
|
88
|
+
var referrer = CookieSettings.prototype.getReferrerLink()
|
|
89
|
+
|
|
90
|
+
document.body.scrollTop = document.documentElement.scrollTop = 0
|
|
91
|
+
|
|
92
|
+
if (previousPageLink) {
|
|
93
|
+
if (referrer && referrer !== document.location.pathname) {
|
|
94
|
+
previousPageLink.href = referrer
|
|
95
|
+
previousPageLink.style.display = 'inline'
|
|
96
|
+
} else {
|
|
97
|
+
previousPageLink.style.display = 'none'
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
confirmationMessage.style.display = 'block'
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
CookieSettings.prototype.getReferrerLink = function () {
|
|
105
|
+
return document.referrer ? new URL(document.referrer).pathname : false
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
Modules.CookieSettings = CookieSettings
|
|
109
|
+
})(window.GOVUK.Modules)
|
|
@@ -3,49 +3,75 @@
|
|
|
3
3
|
//= require govuk_publishing_components/analytics/linked-domains
|
|
4
4
|
|
|
5
5
|
window.GOVUK.loadAnalytics = {
|
|
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
|
-
|
|
6
|
+
domains: [
|
|
7
|
+
{
|
|
8
|
+
// need to have this one at the start, see loadGa4 function
|
|
9
|
+
name: 'development',
|
|
10
|
+
domains: [
|
|
11
|
+
'localhost',
|
|
12
|
+
'127.0.0.1',
|
|
13
|
+
'0.0.0.0',
|
|
14
|
+
'dev.gov.uk'
|
|
15
|
+
],
|
|
16
|
+
initialiseGA4: true,
|
|
17
|
+
id: 'GTM-MG7HG5W',
|
|
18
|
+
auth: 'bRiZ-jiEHtw6hHpGd6dF9w',
|
|
19
|
+
preview: 'env-3',
|
|
20
|
+
gaProperty: 'UA-UNSET',
|
|
21
|
+
gaPropertyCrossDomain: 'UA-UNSET'
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
name: 'production',
|
|
25
|
+
domains: [
|
|
26
|
+
'www.gov.uk',
|
|
27
|
+
'www-origin.publishing.service.gov.uk',
|
|
28
|
+
'assets.publishing.service.gov.uk'
|
|
29
|
+
],
|
|
30
|
+
initialiseGA4: true,
|
|
31
|
+
id: 'GTM-MG7HG5W',
|
|
32
|
+
gaProperty: 'UA-26179049-1',
|
|
33
|
+
gaPropertyCrossDomain: 'UA-145652997-1'
|
|
32
34
|
},
|
|
33
|
-
|
|
35
|
+
{
|
|
36
|
+
name: 'staging',
|
|
37
|
+
domains: [
|
|
38
|
+
'www.staging.publishing.service.gov.uk',
|
|
39
|
+
'www-origin.staging.publishing.service.gov.uk',
|
|
40
|
+
'assets.staging.publishing.service.gov.uk'
|
|
41
|
+
],
|
|
34
42
|
initialiseGA4: true,
|
|
43
|
+
id: 'GTM-MG7HG5W',
|
|
35
44
|
auth: 'oJWs562CxSIjZKn_GlB5Bw',
|
|
36
|
-
preview: 'env-5'
|
|
45
|
+
preview: 'env-5',
|
|
46
|
+
gaProperty: 'UA-26179049-20',
|
|
47
|
+
gaPropertyCrossDomain: 'UA-145652997-1'
|
|
37
48
|
},
|
|
38
|
-
|
|
49
|
+
{
|
|
50
|
+
name: 'integration',
|
|
51
|
+
domains: [
|
|
52
|
+
'www.integration.publishing.service.gov.uk',
|
|
53
|
+
'www-origin.integration.publishing.service.gov.uk',
|
|
54
|
+
'assets.integration.publishing.service.gov.uk'
|
|
55
|
+
],
|
|
39
56
|
initialiseGA4: true,
|
|
57
|
+
id: 'GTM-MG7HG5W',
|
|
40
58
|
auth: 'C7iYdcsOlYgGmiUJjZKrHQ',
|
|
41
|
-
preview: 'env-4'
|
|
59
|
+
preview: 'env-4',
|
|
60
|
+
gaProperty: 'UA-26179049-22',
|
|
61
|
+
gaPropertyCrossDomain: 'UA-145652997-1'
|
|
42
62
|
},
|
|
43
|
-
|
|
63
|
+
{
|
|
64
|
+
name: 'devdocs',
|
|
65
|
+
domains: [
|
|
66
|
+
'docs.publishing.service.gov.uk'
|
|
67
|
+
],
|
|
44
68
|
initialiseGA4: true,
|
|
45
|
-
|
|
46
|
-
preview: 'env-3'
|
|
69
|
+
id: 'GTM-TNKCK97'
|
|
47
70
|
}
|
|
48
|
-
|
|
71
|
+
],
|
|
72
|
+
|
|
73
|
+
// For Universal Analytics' cross domain tracking. linkedDomains is defined by the require statement at the top of the file.
|
|
74
|
+
linkedDomains: window.GOVUK.analytics.linkedDomains,
|
|
49
75
|
|
|
50
76
|
loadUa: function (currentDomain) {
|
|
51
77
|
currentDomain = currentDomain || window.location.hostname
|
|
@@ -57,17 +83,14 @@ window.GOVUK.loadAnalytics = {
|
|
|
57
83
|
window.GOVUK.analyticsVars.gaProperty = 'UA-UNSET'
|
|
58
84
|
window.GOVUK.analyticsVars.gaPropertyCrossDomain = 'UA-UNSET'
|
|
59
85
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
window.GOVUK.analyticsVars.gaProperty = 'UA-26179049-22'
|
|
68
|
-
window.GOVUK.analyticsVars.gaPropertyCrossDomain = 'UA-145652997-1'
|
|
86
|
+
for (var i = 0; i < this.domains.length; i++) {
|
|
87
|
+
var current = this.domains[i]
|
|
88
|
+
if (this.arrayContains(currentDomain, current.domains)) {
|
|
89
|
+
window.GOVUK.analyticsVars.gaProperty = current.gaProperty
|
|
90
|
+
window.GOVUK.analyticsVars.gaPropertyCrossDomain = current.gaPropertyCrossDomain
|
|
91
|
+
break
|
|
92
|
+
}
|
|
69
93
|
}
|
|
70
|
-
|
|
71
94
|
// Load universal analytics
|
|
72
95
|
if (typeof window.GOVUK.analyticsInit !== 'undefined') {
|
|
73
96
|
window.GOVUK.analyticsInit()
|
|
@@ -76,29 +99,29 @@ window.GOVUK.loadAnalytics = {
|
|
|
76
99
|
|
|
77
100
|
loadGa4: function (currentDomain) {
|
|
78
101
|
currentDomain = currentDomain || window.location.hostname
|
|
79
|
-
var environment =
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
102
|
+
var environment = false
|
|
103
|
+
// lots of dev domains, so simplify the matching process
|
|
104
|
+
if (currentDomain.match(/\/{2}[a-zA-Z0-9.]+dev\.gov\.uk/)) {
|
|
105
|
+
environment = this.domains[0]
|
|
106
|
+
} else {
|
|
107
|
+
for (var i = 0; i < this.domains.length; i++) {
|
|
108
|
+
if (this.arrayContains(currentDomain, this.domains[i].domains)) {
|
|
109
|
+
environment = this.domains[i]
|
|
110
|
+
break
|
|
111
|
+
}
|
|
112
|
+
}
|
|
90
113
|
}
|
|
91
114
|
|
|
92
115
|
// If we recognise the environment (i.e. the string isn't empty), load in GA4
|
|
93
116
|
if (environment) {
|
|
94
117
|
// If analytics-ga4.js exists and our detected environment has 'initialiseGA4' set to true, load GA4.
|
|
95
|
-
if (typeof window.GOVUK.analyticsGa4.init !== 'undefined' &&
|
|
118
|
+
if (typeof window.GOVUK.analyticsGa4.init !== 'undefined' && environment.initialiseGA4) {
|
|
96
119
|
window.GOVUK.analyticsGa4 = window.GOVUK.analyticsGa4 || {}
|
|
97
120
|
window.GOVUK.analyticsGa4.vars = window.GOVUK.analyticsGa4.vars || {}
|
|
98
|
-
window.GOVUK.analyticsGa4.vars.id =
|
|
99
|
-
window.GOVUK.analyticsGa4.vars.auth =
|
|
100
|
-
window.GOVUK.analyticsGa4.vars.preview =
|
|
101
|
-
window.GOVUK.analyticsGa4.vars.environment = environment // Used for testing and debugging
|
|
121
|
+
window.GOVUK.analyticsGa4.vars.id = environment.id
|
|
122
|
+
window.GOVUK.analyticsGa4.vars.auth = environment.auth
|
|
123
|
+
window.GOVUK.analyticsGa4.vars.preview = environment.preview
|
|
124
|
+
window.GOVUK.analyticsGa4.vars.environment = environment.name // Used for testing and debugging
|
|
102
125
|
|
|
103
126
|
window.GOVUK.analyticsGa4.vars.gem_version = 'not found'
|
|
104
127
|
var gemMeta = document.querySelector('meta[name="govuk:components_gem_version"]')
|
|
@@ -186,7 +186,7 @@
|
|
|
186
186
|
@include govuk-font($size: false);
|
|
187
187
|
font-size: 16px;
|
|
188
188
|
font-size: govuk-px-to-rem(16px);
|
|
189
|
-
margin: 0 0 (govuk-spacing(3) / 2);
|
|
189
|
+
margin: 0 0 calc(govuk-spacing(3) / 2);
|
|
190
190
|
color: govuk-colour("dark-grey", $legacy: "grey-1");
|
|
191
191
|
|
|
192
192
|
@include govuk-media-query($from: tablet) {
|
|
@@ -196,7 +196,7 @@
|
|
|
196
196
|
|
|
197
197
|
.gem-c-image-card__description {
|
|
198
198
|
@include govuk-font($size: 19);
|
|
199
|
-
padding-top: (govuk-spacing(3) / 2);
|
|
199
|
+
padding-top: calc(govuk-spacing(3) / 2);
|
|
200
200
|
word-wrap: break-word;
|
|
201
201
|
}
|
|
202
202
|
|
|
@@ -204,7 +204,7 @@
|
|
|
204
204
|
@include govuk-font($size: 19);
|
|
205
205
|
position: relative;
|
|
206
206
|
z-index: 2;
|
|
207
|
-
padding: (govuk-spacing(3) / 2) 0 0 0;
|
|
207
|
+
padding: calc(govuk-spacing(3) / 2) 0 0 0;
|
|
208
208
|
margin: 0;
|
|
209
209
|
list-style: none;
|
|
210
210
|
|
|
@@ -46,7 +46,7 @@ $govuk-modal-wide-breakpoint: $govuk-page-width + $govuk-modal-margin * 2 + $gov
|
|
|
46
46
|
bottom: inherit;
|
|
47
47
|
left: inherit;
|
|
48
48
|
width: auto;
|
|
49
|
-
max-width: $govuk-page-width * 2 / 3;
|
|
49
|
+
max-width: $govuk-page-width * calc(2 / 3);
|
|
50
50
|
height: auto;
|
|
51
51
|
margin: $govuk-modal-margin auto;
|
|
52
52
|
border: $govuk-border-width-form-element solid $govuk-input-border-colour;
|
|
@@ -65,7 +65,7 @@ $large-input-size: 50px;
|
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
.gem-c-search__input[type="search"] { // overly specific to prevent some overrides from outside
|
|
68
|
-
@include govuk-font($size: 19, $line-height: (28 / 19));
|
|
68
|
+
@include govuk-font($size: 19, $line-height: calc(28 / 19));
|
|
69
69
|
margin: 0;
|
|
70
70
|
width: 100%;
|
|
71
71
|
height: govuk-em(40, 16);
|
|
@@ -108,7 +108,7 @@ $large-input-size: 50px;
|
|
|
108
108
|
|
|
109
109
|
@mixin icon-positioning($container-size) {
|
|
110
110
|
$icon-dimension: 20px;
|
|
111
|
-
$icon-position: ($container-size - $icon-dimension) / 2;
|
|
111
|
+
$icon-position: calc(($container-size - $icon-dimension) / 2);
|
|
112
112
|
|
|
113
113
|
display: block;
|
|
114
114
|
pointer-events: none;
|
|
@@ -18,7 +18,7 @@ $share-button-height: 30px;
|
|
|
18
18
|
padding-left: ($share-button-width + govuk-spacing(2));
|
|
19
19
|
padding-right: govuk-spacing(2);
|
|
20
20
|
margin-bottom: govuk-spacing(2);
|
|
21
|
-
font-size: $share-button-height / 2;
|
|
21
|
+
font-size: calc($share-button-height / 2);
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
.gem-c-share-links__link {
|
|
@@ -17,12 +17,12 @@ $top-border: solid 1px govuk-colour("mid-grey", $legacy: "grey-3");
|
|
|
17
17
|
|
|
18
18
|
@mixin step-nav-line-position {
|
|
19
19
|
left: 0;
|
|
20
|
-
margin-left: govuk-em(($number-circle-size / 2) - ($stroke-width / 2), 16);
|
|
20
|
+
margin-left: govuk-em(calc($number-circle-size / 2) - calc($stroke-width / 2), 16);
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
@mixin step-nav-line-position-large {
|
|
24
24
|
left: 0;
|
|
25
|
-
margin-left: govuk-em(($number-circle-size-large / 2) - ($stroke-width / 2), 16);
|
|
25
|
+
margin-left: govuk-em(calc($number-circle-size-large / 2) - calc($stroke-width / 2), 16);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
// custom mixin as govuk-font does undesirable things at different breakpoints
|
|
@@ -260,8 +260,8 @@ $top-border: solid 1px govuk-colour("mid-grey", $legacy: "grey-3");
|
|
|
260
260
|
z-index: 6;
|
|
261
261
|
bottom: 0;
|
|
262
262
|
left: 0;
|
|
263
|
-
margin-left: $number-circle-size / 4;
|
|
264
|
-
width: $number-circle-size / 2;
|
|
263
|
+
margin-left: calc($number-circle-size / 4);
|
|
264
|
+
width: calc($number-circle-size / 2);
|
|
265
265
|
height: 0;
|
|
266
266
|
border-bottom: solid $stroke-width govuk-colour("mid-grey", $legacy: "grey-2");
|
|
267
267
|
}
|
|
@@ -278,8 +278,8 @@ $top-border: solid 1px govuk-colour("mid-grey", $legacy: "grey-3");
|
|
|
278
278
|
.gem-c-step-nav--large & {
|
|
279
279
|
@include govuk-media-query($from: tablet) {
|
|
280
280
|
&::before {
|
|
281
|
-
margin-left: $number-circle-size-large / 4;
|
|
282
|
-
width: $number-circle-size-large / 2;
|
|
281
|
+
margin-left: calc($number-circle-size-large / 4);
|
|
282
|
+
width: calc($number-circle-size-large / 2);
|
|
283
283
|
}
|
|
284
284
|
|
|
285
285
|
&::after {
|
|
@@ -508,9 +508,9 @@ $top-border: solid 1px govuk-colour("mid-grey", $legacy: "grey-3");
|
|
|
508
508
|
z-index: 5;
|
|
509
509
|
top: .6em; // position the dot to align with the first row of text in the link
|
|
510
510
|
left: -(govuk-spacing(6) + govuk-spacing(3));
|
|
511
|
-
margin-top: -($stroke-width / 2);
|
|
512
|
-
margin-left: ($number-circle-size / 2);
|
|
513
|
-
width: $number-circle-size / 2;
|
|
511
|
+
margin-top: - calc($stroke-width / 2);
|
|
512
|
+
margin-left: calc($number-circle-size / 2);
|
|
513
|
+
width: calc($number-circle-size / 2);
|
|
514
514
|
height: $stroke-width;
|
|
515
515
|
background: govuk-colour("black");
|
|
516
516
|
}
|
|
@@ -519,7 +519,7 @@ $top-border: solid 1px govuk-colour("mid-grey", $legacy: "grey-3");
|
|
|
519
519
|
@include govuk-media-query($from: tablet) {
|
|
520
520
|
&::before {
|
|
521
521
|
left: -(govuk-spacing(9));
|
|
522
|
-
margin-left: ($number-circle-size-large / 2);
|
|
522
|
+
margin-left: calc($number-circle-size-large / 2);
|
|
523
523
|
}
|
|
524
524
|
}
|
|
525
525
|
}
|
|
@@ -8,7 +8,7 @@ $table-header-background-colour: govuk-colour("light-grey", $legacy: "grey-3");
|
|
|
8
8
|
$sort-link-active-colour: govuk-colour("white");
|
|
9
9
|
$sort-link-arrow-size: 14px;
|
|
10
10
|
$sort-link-arrow-size-small: 8px;
|
|
11
|
-
$sort-link-arrow-spacing: $sort-link-arrow-size / 2;
|
|
11
|
+
$sort-link-arrow-spacing: calc($sort-link-arrow-size / 2);
|
|
12
12
|
$table-row-hover-background-colour: rgba(43, 140, 196, .2);
|
|
13
13
|
$table-row-even-background-colour: govuk-colour("light-grey", $legacy: "grey-4");
|
|
14
14
|
|
data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_warning-callout.scss
CHANGED
|
@@ -23,10 +23,10 @@
|
|
|
23
23
|
padding-left: $icon-size;
|
|
24
24
|
|
|
25
25
|
// Center the icon around the baseline
|
|
26
|
-
padding-top: ($icon-size - $line-height-mobile) / 2;
|
|
26
|
+
padding-top: calc(($icon-size - $line-height-mobile) / 2);
|
|
27
27
|
|
|
28
28
|
@include govuk-media-query($from: tablet) {
|
|
29
|
-
padding-top: ($icon-size - $line-height-tablet) / 2;
|
|
29
|
+
padding-top: calc(($icon-size - $line-height-tablet) / 2);
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
p {
|
|
@@ -2,23 +2,39 @@
|
|
|
2
2
|
add_gem_component_stylesheet("details")
|
|
3
3
|
|
|
4
4
|
shared_helper = GovukPublishingComponents::Presenters::SharedHelper.new(local_assigns)
|
|
5
|
-
|
|
6
5
|
open ||= nil
|
|
6
|
+
disable_ga4 ||= false
|
|
7
|
+
@ga4 ||= OpenStruct.new(index_section: 0) unless disable_ga4
|
|
8
|
+
@ga4[:index_section] += 1 unless disable_ga4
|
|
9
|
+
ga4_attributes ||= {}
|
|
10
|
+
|
|
7
11
|
margin_bottom ||= 3
|
|
8
12
|
css_classes = %w(gem-c-details govuk-details)
|
|
9
13
|
css_classes << shared_helper.get_margin_bottom
|
|
10
14
|
|
|
11
15
|
details_data_attributes = {}
|
|
12
16
|
details_data_attributes[:module] = 'govuk-details gem-details'
|
|
17
|
+
details_data_attributes[:module] = 'govuk-details gem-details ga4-event-tracker' unless disable_ga4
|
|
13
18
|
|
|
14
19
|
data_attributes ||= {}
|
|
15
20
|
data_attributes[:details_track_click] = ''
|
|
21
|
+
unless disable_ga4
|
|
22
|
+
ga4_event = {
|
|
23
|
+
event_name: "select_content",
|
|
24
|
+
type: "detail",
|
|
25
|
+
text: title,
|
|
26
|
+
section: title,
|
|
27
|
+
index_section: @ga4[:index_section],
|
|
28
|
+
}
|
|
29
|
+
ga4_event.merge!(ga4_attributes)
|
|
30
|
+
data_attributes[:ga4_event] = ga4_event
|
|
31
|
+
end
|
|
16
32
|
|
|
17
33
|
summary_aria_attributes ||= {}
|
|
18
34
|
%>
|
|
19
35
|
<%= tag.details class: css_classes, data: details_data_attributes, open: open do %>
|
|
20
36
|
<%= tag.summary class: "govuk-details__summary", data: data_attributes, aria: summary_aria_attributes do %>
|
|
21
|
-
<span class="govuk-details__summary-text"
|
|
37
|
+
<span class="govuk-details__summary-text" <% unless disable_ga4 %>data-ga4-expandable<% end %>>
|
|
22
38
|
<%= title %>
|
|
23
39
|
</span>
|
|
24
40
|
<% end %>
|
|
@@ -7,13 +7,13 @@
|
|
|
7
7
|
brand_helper = GovukPublishingComponents::AppHelpers::BrandHelper.new(brand)
|
|
8
8
|
card_helper = GovukPublishingComponents::Presenters::ImageCardHelper.new(local_assigns, brand_helper)
|
|
9
9
|
shared_helper = GovukPublishingComponents::Presenters::SharedHelper.new(local_assigns)
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
component_helper = GovukPublishingComponents::Presenters::ComponentWrapperHelper.new(local_assigns)
|
|
11
|
+
component_helper.add_class("gem-c-image-card")
|
|
12
|
+
component_helper.add_class("govuk-grid-row") if card_helper.two_thirds
|
|
13
|
+
component_helper.add_class("gem-c-image-card--large") if card_helper.large
|
|
14
|
+
component_helper.add_class("gem-c-image-card--two-thirds") if card_helper.two_thirds
|
|
15
|
+
component_helper.add_class("gem-c-image-card--no-image") unless (card_helper.image_src || card_helper.youtube_video_id)
|
|
16
|
+
component_helper.add_class(brand_helper.brand_class) if brand_helper.brand_class
|
|
17
17
|
|
|
18
18
|
text_wrapper_classes = %w[gem-c-image-card__text-wrapper]
|
|
19
19
|
text_wrapper_classes << "gem-c-image-card__text-wrapper--two-thirds" if card_helper.two_thirds
|
|
@@ -34,12 +34,12 @@
|
|
|
34
34
|
]
|
|
35
35
|
extra_link_classes << brand_helper.color_class
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
component_helper.add_data_attribute({ module: "gem-track-click" }) if card_helper.is_tracking?
|
|
38
|
+
component_helper.add_data_attribute({ module: "image-card" }) if card_helper.youtube_video_id
|
|
39
|
+
component_helper.set_lang(card_helper.lang)
|
|
40
40
|
%>
|
|
41
41
|
<% if card_helper.href || card_helper.extra_details.any? %>
|
|
42
|
-
<%=
|
|
42
|
+
<%= tag.div(**component_helper.all_attributes) do %>
|
|
43
43
|
<%= content_tag(:div, class: text_wrapper_classes) do %>
|
|
44
44
|
<div class="gem-c-image-card__header-and-context-wrapper">
|
|
45
45
|
<% if card_helper.heading_text %>
|