govuk_publishing_components 34.5.1 → 34.6.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/javascripts/govuk_publishing_components/analytics-ga4/ga4-core.js +29 -1
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/init-ga4.js +28 -0
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4.js +1 -0
- data/app/assets/javascripts/govuk_publishing_components/dependencies.js +10 -0
- data/app/assets/javascripts/govuk_publishing_components/load-analytics.js +30 -126
- data/lib/govuk_publishing_components/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e64d34524575e781292e650596fdb06fc0cf9644329d27aa66fd32e8d0dbdfd5
|
4
|
+
data.tar.gz: 757292d30401fc24dc3d99c2f67a5c7fc11f528e531a4e2605004bbd367b1c0c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 67e4ebd3c3796d54b3d514b65138f800db901996f39bf2a55559230eb3cd9c475c2ac5344d41b53ad41c0f24f42d6d92a9a90fd772dc2bc06d686e0642c75b4e
|
7
|
+
data.tar.gz: 70758cb00c5f1d4726cae67de5036258f1dc5545397d9432227086b46b4ba98bf7f5644712be779c327f9065a693e749e5b42fc3d5288ef7d64166787ede4af5
|
@@ -6,11 +6,39 @@ window.GOVUK.analyticsGa4 = window.GOVUK.analyticsGa4 || {};
|
|
6
6
|
'use strict'
|
7
7
|
|
8
8
|
var core = {
|
9
|
+
load: function () {
|
10
|
+
var firstScript = document.getElementsByTagName('script')[0]
|
11
|
+
var newScript = document.createElement('script')
|
12
|
+
newScript.async = true
|
13
|
+
|
14
|
+
// initialise GTM
|
15
|
+
window.dataLayer = window.dataLayer || []
|
16
|
+
window.dataLayer.push({ 'gtm.blocklist': ['customPixels', 'customScripts', 'html', 'nonGoogleScripts'] })
|
17
|
+
window.dataLayer.push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' })
|
18
|
+
|
19
|
+
var auth = window.GOVUK.analyticsGa4.vars.auth || ''
|
20
|
+
var preview = window.GOVUK.analyticsGa4.vars.preview || ''
|
21
|
+
if (auth) {
|
22
|
+
auth = '>m_auth=' + auth
|
23
|
+
}
|
24
|
+
if (preview) {
|
25
|
+
preview = '>m_preview=' + preview + '>m_cookies_win=x'
|
26
|
+
}
|
27
|
+
|
28
|
+
this.googleSrc = 'https://www.googletagmanager.com/gtm.js?id=' + window.GOVUK.analyticsGa4.vars.id + auth + preview
|
29
|
+
newScript.src = this.googleSrc
|
30
|
+
firstScript.parentNode.insertBefore(newScript, firstScript)
|
31
|
+
},
|
32
|
+
|
9
33
|
sendData: function (data) {
|
10
|
-
data.govuk_gem_version =
|
34
|
+
data.govuk_gem_version = this.getGemVersion()
|
11
35
|
window.dataLayer.push(data)
|
12
36
|
},
|
13
37
|
|
38
|
+
getGemVersion: function () {
|
39
|
+
return window.GOVUK.analyticsGa4.vars.gem_version || 'not found'
|
40
|
+
},
|
41
|
+
|
14
42
|
trackFunctions: {
|
15
43
|
findTrackingAttributes: function (clicked, trackingTrigger) {
|
16
44
|
if (clicked.hasAttribute('[' + trackingTrigger + ']')) {
|
@@ -0,0 +1,28 @@
|
|
1
|
+
window.GOVUK = window.GOVUK || {}
|
2
|
+
window.GOVUK.analyticsGa4 = window.GOVUK.analyticsGa4 || {}
|
3
|
+
|
4
|
+
var initFunction = function () {
|
5
|
+
// to be added: digital identity consent mechanism
|
6
|
+
|
7
|
+
var consentCookie = window.GOVUK.getConsentCookie()
|
8
|
+
|
9
|
+
if (consentCookie && consentCookie.usage) {
|
10
|
+
window.GOVUK.analyticsGa4.vars.internalDomains = []
|
11
|
+
window.GOVUK.analyticsGa4.vars.internalDomains.push(window.GOVUK.analyticsGa4.core.trackFunctions.getHostname())
|
12
|
+
window.GOVUK.analyticsGa4.core.trackFunctions.appendDomainsWithoutWWW(window.GOVUK.analyticsGa4.vars.internalDomains)
|
13
|
+
window.GOVUK.analyticsGa4.core.load()
|
14
|
+
|
15
|
+
var analyticsModules = window.GOVUK.analyticsGa4.analyticsModules
|
16
|
+
for (var property in analyticsModules) {
|
17
|
+
var module = analyticsModules[property]
|
18
|
+
if (typeof module.init === 'function') {
|
19
|
+
module.init()
|
20
|
+
}
|
21
|
+
}
|
22
|
+
// to be added: cross domain tracking code
|
23
|
+
} else {
|
24
|
+
window.addEventListener('cookie-consent', window.GOVUK.analyticsGa4.init)
|
25
|
+
}
|
26
|
+
}
|
27
|
+
|
28
|
+
window.GOVUK.analyticsGa4.init = initFunction
|
@@ -8,5 +8,15 @@ document.addEventListener('DOMContentLoaded', function () {
|
|
8
8
|
window.GOVUK.analyticsGa4 = window.GOVUK.analyticsGa4 || {}
|
9
9
|
window.GOVUK.analyticsVars = window.GOVUK.analyticsVars || {}
|
10
10
|
|
11
|
+
// if statements ensure these functions don't execute during testing
|
12
|
+
if (typeof window.GOVUK.loadAnalytics !== 'undefined') {
|
13
|
+
if (typeof window.GOVUK.analyticsGa4.vars === 'undefined') {
|
14
|
+
window.GOVUK.loadAnalytics.loadGa4()
|
15
|
+
}
|
16
|
+
if (typeof window.GOVUK.analyticsVars.gaProperty === 'undefined') {
|
17
|
+
window.GOVUK.loadAnalytics.loadUa()
|
18
|
+
}
|
19
|
+
}
|
20
|
+
|
11
21
|
window.GOVUK.modules.start()
|
12
22
|
})
|
@@ -2,8 +2,6 @@
|
|
2
2
|
//= require govuk_publishing_components/analytics-ga4
|
3
3
|
//= require govuk_publishing_components/analytics/linked-domains
|
4
4
|
|
5
|
-
window.GOVUK = window.GOVUK || {}
|
6
|
-
|
7
5
|
window.GOVUK.loadAnalytics = {
|
8
6
|
productionDomains: [
|
9
7
|
'www.gov.uk',
|
@@ -47,7 +45,6 @@ window.GOVUK.loadAnalytics = {
|
|
47
45
|
},
|
48
46
|
|
49
47
|
loadUa: function (currentDomain) {
|
50
|
-
// The domain can be overridden. This is needed for testing as we need to fake the domain that we are on to test each environment.
|
51
48
|
currentDomain = currentDomain || window.location.hostname
|
52
49
|
|
53
50
|
// Universal Analytics variables
|
@@ -57,13 +54,13 @@ window.GOVUK.loadAnalytics = {
|
|
57
54
|
window.GOVUK.analyticsVars.gaProperty = 'UA-UNSET'
|
58
55
|
window.GOVUK.analyticsVars.gaPropertyCrossDomain = 'UA-UNSET'
|
59
56
|
|
60
|
-
if (this.arrayContains(
|
57
|
+
if (this.arrayContains(currentDomain, this.productionDomains)) {
|
61
58
|
window.GOVUK.analyticsVars.gaProperty = 'UA-26179049-1'
|
62
59
|
window.GOVUK.analyticsVars.gaPropertyCrossDomain = 'UA-145652997-1'
|
63
|
-
} else if (this.arrayContains(
|
60
|
+
} else if (this.arrayContains(currentDomain, this.stagingDomains)) {
|
64
61
|
window.GOVUK.analyticsVars.gaProperty = 'UA-26179049-20'
|
65
62
|
window.GOVUK.analyticsVars.gaPropertyCrossDomain = 'UA-145652997-1'
|
66
|
-
} else if (this.arrayContains(
|
63
|
+
} else if (this.arrayContains(currentDomain, this.integrationDomains)) {
|
67
64
|
window.GOVUK.analyticsVars.gaProperty = 'UA-26179049-22'
|
68
65
|
window.GOVUK.analyticsVars.gaPropertyCrossDomain = 'UA-145652997-1'
|
69
66
|
}
|
@@ -74,136 +71,43 @@ window.GOVUK.loadAnalytics = {
|
|
74
71
|
}
|
75
72
|
},
|
76
73
|
|
77
|
-
loadGa4Vars: function () {
|
78
|
-
// If we recognise the environment, load the GA4 vars
|
79
|
-
if (this.ga4EnvironmentVariables[this.environment]) {
|
80
|
-
window.GOVUK.analyticsGa4 = window.GOVUK.analyticsGa4 || {}
|
81
|
-
window.GOVUK.analyticsGa4.vars = window.GOVUK.analyticsGa4.vars || {}
|
82
|
-
window.GOVUK.analyticsGa4.vars.id = 'GTM-MG7HG5W'
|
83
|
-
window.GOVUK.analyticsGa4.vars.auth = this.ga4EnvironmentVariables[this.environment].auth
|
84
|
-
window.GOVUK.analyticsGa4.vars.preview = this.ga4EnvironmentVariables[this.environment].preview
|
85
|
-
window.GOVUK.analyticsGa4.vars.environment = this.environment // Used for testing and debugging
|
86
|
-
|
87
|
-
window.GOVUK.analyticsGa4.vars.gem_version = 'not found'
|
88
|
-
var gemMeta = document.querySelector('meta[name="govuk:components_gem_version"]')
|
89
|
-
if (gemMeta) {
|
90
|
-
window.GOVUK.analyticsGa4.vars.gem_version = gemMeta.getAttribute('content')
|
91
|
-
}
|
92
|
-
|
93
|
-
window.GOVUK.analyticsGa4.vars.internalDomains = []
|
94
|
-
window.GOVUK.analyticsGa4.vars.internalDomains.push(window.GOVUK.analyticsGa4.core.trackFunctions.getHostname())
|
95
|
-
window.GOVUK.analyticsGa4.core.trackFunctions.appendDomainsWithoutWWW(window.GOVUK.analyticsGa4.vars.internalDomains)
|
96
|
-
}
|
97
|
-
},
|
98
|
-
|
99
|
-
addGtmScriptToDom: function () {
|
100
|
-
var firstScript = document.getElementsByTagName('script')[0]
|
101
|
-
var newScript = document.createElement('script')
|
102
|
-
newScript.async = true
|
103
|
-
|
104
|
-
// initialise GTM
|
105
|
-
window.dataLayer = window.dataLayer || []
|
106
|
-
window.dataLayer.push({ 'gtm.blocklist': ['customPixels', 'customScripts', 'html', 'nonGoogleScripts'] })
|
107
|
-
window.dataLayer.push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' })
|
108
|
-
|
109
|
-
var auth = window.GOVUK.analyticsGa4.vars.auth || ''
|
110
|
-
var preview = window.GOVUK.analyticsGa4.vars.preview || ''
|
111
|
-
if (auth) {
|
112
|
-
auth = '>m_auth=' + auth
|
113
|
-
}
|
114
|
-
if (preview) {
|
115
|
-
preview = '>m_preview=' + preview + '>m_cookies_win=x'
|
116
|
-
}
|
117
|
-
|
118
|
-
this.googleSrc = 'https://www.googletagmanager.com/gtm.js?id=' + window.GOVUK.analyticsGa4.vars.id + auth + preview
|
119
|
-
newScript.src = this.googleSrc
|
120
|
-
firstScript.parentNode.insertBefore(newScript, firstScript)
|
121
|
-
},
|
122
|
-
|
123
74
|
loadGa4: function (currentDomain) {
|
124
|
-
// The domain can be overridden. This is needed for testing as we need to fake the domain that we are on to test each environment.
|
125
75
|
currentDomain = currentDomain || window.location.hostname
|
76
|
+
var environment = ''
|
126
77
|
|
127
|
-
window.GOVUK.analyticsGa4 = window.GOVUK.analyticsGa4 || {}
|
128
|
-
|
129
|
-
if (typeof window.GOVUK.analyticsGa4.core === 'undefined') {
|
130
|
-
console.warn('load-analytics.js: window.GOVUK.analyticsGa4.core was not found - has ./analytics-ga4.js been imported?')
|
131
|
-
return
|
132
|
-
}
|
133
|
-
|
134
|
-
this.environment = ''
|
135
78
|
// Categorise current environment
|
136
|
-
if (this.arrayContains(
|
137
|
-
|
138
|
-
} else if (this.arrayContains(
|
139
|
-
|
140
|
-
} else if (this.arrayContains(
|
141
|
-
|
142
|
-
} else if (this.arrayContains(
|
143
|
-
|
144
|
-
}
|
145
|
-
|
146
|
-
if (!this.environment) {
|
147
|
-
console.warn('load-analytics.js: environment for GA4 not recognised - ' + this.environment + ' on ' + currentDomain)
|
148
|
-
return
|
149
|
-
}
|
150
|
-
|
151
|
-
// Don't load GA4 if initialiseGA4 is set to false. This allows us to disable analytics if required.
|
152
|
-
if (!this.ga4EnvironmentVariables[this.environment].initialiseGA4) {
|
153
|
-
return
|
79
|
+
if (this.arrayContains(currentDomain, this.productionDomains)) {
|
80
|
+
environment = 'production'
|
81
|
+
} else if (this.arrayContains(currentDomain, this.stagingDomains)) {
|
82
|
+
environment = 'staging'
|
83
|
+
} else if (this.arrayContains(currentDomain, this.integrationDomains)) {
|
84
|
+
environment = 'integration'
|
85
|
+
} else if (this.arrayContains(currentDomain, this.developmentDomains) || currentDomain.indexOf('.dev.gov.uk') !== -1) {
|
86
|
+
environment = 'development'
|
154
87
|
}
|
155
88
|
|
156
|
-
//
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
window.GOVUK.loadAnalytics.startGa4Modules()
|
172
|
-
})
|
173
|
-
}
|
174
|
-
|
175
|
-
// to be added: cross domain tracking code
|
176
|
-
} else {
|
177
|
-
window.addEventListener('cookie-consent', function (e) {
|
178
|
-
window.GOVUK.loadAnalytics.loadGa4()
|
179
|
-
})
|
180
|
-
}
|
181
|
-
},
|
182
|
-
|
183
|
-
startGa4Modules: function () {
|
184
|
-
// Some tests initialise GA4, but we do not want our modules initialising, so this check is in place.
|
185
|
-
if (!window.GOVUK.analyticsGa4.vars.disableModules) {
|
186
|
-
var analyticsModules = window.GOVUK.analyticsGa4.analyticsModules
|
187
|
-
for (var property in analyticsModules) {
|
188
|
-
var module = analyticsModules[property]
|
189
|
-
if (typeof module.init === 'function') {
|
190
|
-
module.init()
|
89
|
+
// If we recognise the environment (i.e. the string isn't empty), load in GA4
|
90
|
+
if (environment) {
|
91
|
+
// If analytics-ga4.js exists and our detected environment has 'initialiseGA4' set to true, load GA4.
|
92
|
+
if (typeof window.GOVUK.analyticsGa4.init !== 'undefined' && this.ga4EnvironmentVariables[environment].initialiseGA4) {
|
93
|
+
window.GOVUK.analyticsGa4 = window.GOVUK.analyticsGa4 || {}
|
94
|
+
window.GOVUK.analyticsGa4.vars = window.GOVUK.analyticsGa4.vars || {}
|
95
|
+
window.GOVUK.analyticsGa4.vars.id = 'GTM-MG7HG5W'
|
96
|
+
window.GOVUK.analyticsGa4.vars.auth = this.ga4EnvironmentVariables[environment].auth
|
97
|
+
window.GOVUK.analyticsGa4.vars.preview = this.ga4EnvironmentVariables[environment].preview
|
98
|
+
window.GOVUK.analyticsGa4.vars.environment = environment // Used for testing and debugging
|
99
|
+
|
100
|
+
window.GOVUK.analyticsGa4.vars.gem_version = 'not found'
|
101
|
+
var gemMeta = document.querySelector('meta[name="govuk:components_gem_version"]')
|
102
|
+
if (gemMeta) {
|
103
|
+
window.GOVUK.analyticsGa4.vars.gem_version = gemMeta.getAttribute('content')
|
191
104
|
}
|
105
|
+
window.GOVUK.analyticsGa4.init()
|
192
106
|
}
|
193
107
|
}
|
194
108
|
},
|
195
109
|
|
196
|
-
arrayContains: function (
|
197
|
-
|
198
|
-
return false
|
199
|
-
}
|
200
|
-
|
201
|
-
return params.array.indexOf(params.valueToFind) !== -1
|
110
|
+
arrayContains: function (valueToFind, array) {
|
111
|
+
return array.indexOf(valueToFind) !== -1
|
202
112
|
}
|
203
113
|
}
|
204
|
-
|
205
|
-
// This if statement stops this function running during testing
|
206
|
-
if (!window.jasmine) {
|
207
|
-
window.GOVUK.loadAnalytics.loadUa()
|
208
|
-
window.GOVUK.loadAnalytics.loadGa4()
|
209
|
-
}
|
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: 34.
|
4
|
+
version: 34.6.0
|
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: 2023-01-
|
11
|
+
date: 2023-01-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: govuk_app_config
|
@@ -446,6 +446,7 @@ files:
|
|
446
446
|
- app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-page-views.js
|
447
447
|
- app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-schemas.js
|
448
448
|
- app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-specialist-link-tracker.js
|
449
|
+
- app/assets/javascripts/govuk_publishing_components/analytics-ga4/init-ga4.js
|
449
450
|
- app/assets/javascripts/govuk_publishing_components/analytics-ga4/pii-remover.js
|
450
451
|
- app/assets/javascripts/govuk_publishing_components/analytics.js
|
451
452
|
- app/assets/javascripts/govuk_publishing_components/analytics/analytics.js
|