govuk_publishing_components 40.1.0 → 41.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/govuk_publishing_components/components/accordion.js +1 -79
- data/app/assets/javascripts/govuk_publishing_components/components/checkboxes.js +1 -34
- data/app/assets/javascripts/govuk_publishing_components/components/feedback.js +0 -17
- data/app/assets/javascripts/govuk_publishing_components/components/layout-super-navigation-header.js +0 -6
- data/app/assets/javascripts/govuk_publishing_components/components/single-page-notification-button.js +0 -7
- data/app/assets/javascripts/govuk_publishing_components/components/step-by-step-nav.js +8 -74
- data/app/assets/javascripts/govuk_publishing_components/dependencies.js +0 -4
- data/app/assets/javascripts/govuk_publishing_components/domain-config.js +0 -8
- data/app/assets/javascripts/govuk_publishing_components/lib/cookie-functions.js +0 -4
- data/app/assets/javascripts/govuk_publishing_components/lib/cookie-settings.js +0 -14
- data/app/assets/javascripts/govuk_publishing_components/lib/govspeak/youtube-link-enhancement.js +0 -20
- data/app/assets/javascripts/govuk_publishing_components/lib/toggle.js +0 -33
- data/app/assets/javascripts/govuk_publishing_components/load-analytics.js +0 -25
- data/app/views/govuk_publishing_components/components/_accordion.html.erb +1 -8
- data/app/views/govuk_publishing_components/components/_breadcrumbs.html.erb +1 -1
- data/app/views/govuk_publishing_components/components/_cards.html.erb +3 -11
- data/app/views/govuk_publishing_components/components/_contents_list.html.erb +2 -15
- data/app/views/govuk_publishing_components/components/_cookie_banner.html.erb +3 -19
- data/app/views/govuk_publishing_components/components/_details.html.erb +9 -11
- data/app/views/govuk_publishing_components/components/_image_card.html.erb +1 -5
- data/app/views/govuk_publishing_components/components/_intervention.html.erb +4 -4
- data/app/views/govuk_publishing_components/components/_layout_footer.html.erb +7 -21
- data/app/views/govuk_publishing_components/components/_layout_super_navigation_header.html.erb +1 -26
- data/app/views/govuk_publishing_components/components/_metadata.html.erb +2 -5
- data/app/views/govuk_publishing_components/components/_organisation_logo.html.erb +2 -7
- data/app/views/govuk_publishing_components/components/_previous_and_next_navigation.html.erb +0 -10
- data/app/views/govuk_publishing_components/components/_related_navigation.html.erb +1 -3
- data/app/views/govuk_publishing_components/components/_search.html.erb +0 -1
- data/app/views/govuk_publishing_components/components/_select.html.erb +1 -2
- data/app/views/govuk_publishing_components/components/_share_links.html.erb +1 -10
- data/app/views/govuk_publishing_components/components/_single_page_notification_button.html.erb +0 -1
- data/app/views/govuk_publishing_components/components/_step_by_step_nav.html.erb +1 -1
- data/app/views/govuk_publishing_components/components/_step_by_step_nav_header.html.erb +1 -24
- data/app/views/govuk_publishing_components/components/_step_by_step_nav_related.html.erb +1 -14
- data/app/views/govuk_publishing_components/components/_subscription_links.html.erb +1 -4
- data/app/views/govuk_publishing_components/components/_translation_nav.html.erb +0 -1
- data/app/views/govuk_publishing_components/components/contextual_sidebar/_ukraine_cta.html.erb +1 -7
- data/app/views/govuk_publishing_components/components/docs/accordion.yml +1 -60
- data/app/views/govuk_publishing_components/components/docs/big_number.yml +2 -6
- data/app/views/govuk_publishing_components/components/docs/breadcrumbs.yml +0 -1
- data/app/views/govuk_publishing_components/components/docs/button.yml +1 -1
- data/app/views/govuk_publishing_components/components/docs/cards.yml +3 -13
- data/app/views/govuk_publishing_components/components/docs/checkboxes.yml +0 -33
- data/app/views/govuk_publishing_components/components/docs/cookie_banner.yml +2 -2
- data/app/views/govuk_publishing_components/components/docs/details.yml +0 -15
- data/app/views/govuk_publishing_components/components/docs/document_list.yml +11 -18
- data/app/views/govuk_publishing_components/components/docs/error_alert.yml +1 -1
- data/app/views/govuk_publishing_components/components/docs/govspeak.yml +0 -11
- data/app/views/govuk_publishing_components/components/docs/image_card.yml +0 -31
- data/app/views/govuk_publishing_components/components/docs/intervention.yml +0 -26
- data/app/views/govuk_publishing_components/components/docs/layout_for_public.yml +2 -2
- data/app/views/govuk_publishing_components/components/docs/meta_tags.yml +0 -2
- data/app/views/govuk_publishing_components/components/docs/option_select.yml +4 -16
- data/app/views/govuk_publishing_components/components/docs/organisation_logo.yml +0 -15
- data/app/views/govuk_publishing_components/components/docs/print_link.yml +2 -9
- data/app/views/govuk_publishing_components/components/docs/select.yml +0 -36
- data/app/views/govuk_publishing_components/components/docs/share_links.yml +2 -4
- data/app/views/govuk_publishing_components/components/docs/step_by_step_nav.yml +2 -25
- data/app/views/govuk_publishing_components/components/docs/step_by_step_nav_header.yml +0 -23
- data/app/views/govuk_publishing_components/components/docs/step_by_step_nav_related.yml +0 -10
- data/app/views/govuk_publishing_components/components/docs/subscription_links.yml +3 -15
- data/app/views/govuk_publishing_components/components/docs/table.yml +1 -1
- data/app/views/govuk_publishing_components/components/docs/tabs.yml +1 -1
- data/app/views/govuk_publishing_components/components/docs/translation_nav.yml +3 -27
- data/app/views/govuk_publishing_components/components/feedback/_problem_form.html.erb +1 -5
- data/app/views/govuk_publishing_components/components/feedback/_survey_signup_form.html.erb +0 -2
- data/app/views/govuk_publishing_components/components/feedback/_yes_no_banner.html.erb +0 -10
- data/app/views/govuk_publishing_components/components/layout_header/_header_logo.html.erb +1 -1
- data/app/views/govuk_publishing_components/components/layout_header/_search.html.erb +0 -5
- data/app/views/govuk_publishing_components/components/related_navigation/_section.html.erb +0 -7
- data/lib/govuk_publishing_components/presenters/breadcrumbs_helper.rb +1 -19
- data/lib/govuk_publishing_components/presenters/image_card_helper.rb +1 -15
- data/lib/govuk_publishing_components/presenters/public_layout_helper.rb +2 -24
- data/lib/govuk_publishing_components/presenters/select_helper.rb +0 -4
- data/lib/govuk_publishing_components/presenters/single_page_notification_button_helper.rb +0 -5
- data/lib/govuk_publishing_components/presenters/translation_nav_helper.rb +0 -7
- data/lib/govuk_publishing_components/version.rb +1 -1
- metadata +1 -23
- data/app/assets/javascripts/govuk_publishing_components/analytics/analytics.js +0 -92
- data/app/assets/javascripts/govuk_publishing_components/analytics/auto-scroll-tracker.js +0 -221
- data/app/assets/javascripts/govuk_publishing_components/analytics/auto-track-event.js +0 -30
- data/app/assets/javascripts/govuk_publishing_components/analytics/cross-domain-tracking.js +0 -55
- data/app/assets/javascripts/govuk_publishing_components/analytics/custom-dimensions.js +0 -133
- data/app/assets/javascripts/govuk_publishing_components/analytics/download-link-tracker.js +0 -46
- data/app/assets/javascripts/govuk_publishing_components/analytics/ecommerce.js +0 -101
- data/app/assets/javascripts/govuk_publishing_components/analytics/error-tracking.js +0 -51
- data/app/assets/javascripts/govuk_publishing_components/analytics/explicit-cross-domain-links.js +0 -88
- data/app/assets/javascripts/govuk_publishing_components/analytics/external-link-tracker.js +0 -68
- data/app/assets/javascripts/govuk_publishing_components/analytics/google-analytics-universal-tracker.js +0 -220
- data/app/assets/javascripts/govuk_publishing_components/analytics/init.js +0 -60
- data/app/assets/javascripts/govuk_publishing_components/analytics/linked-domains.js +0 -135
- data/app/assets/javascripts/govuk_publishing_components/analytics/mailto-link-tracker.js +0 -43
- data/app/assets/javascripts/govuk_publishing_components/analytics/page-content.js +0 -160
- data/app/assets/javascripts/govuk_publishing_components/analytics/pii.js +0 -115
- data/app/assets/javascripts/govuk_publishing_components/analytics/print-intent.js +0 -39
- data/app/assets/javascripts/govuk_publishing_components/analytics/static-analytics.js +0 -132
- data/app/assets/javascripts/govuk_publishing_components/analytics/track-click.js +0 -75
- data/app/assets/javascripts/govuk_publishing_components/analytics/track-select-change.js +0 -56
- data/app/assets/javascripts/govuk_publishing_components/analytics.js +0 -23
- data/app/assets/javascripts/govuk_publishing_components/components/details.js +0 -48
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e9ecd6d3b0b215006949226c1b78eb7b68f775b34e12e79fef923da49e96310d
|
4
|
+
data.tar.gz: 362a4fa295d01bcbd8a56690236160c9058776e7ec5d730b11dadfe5c5da32b3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6bcbbd412cd4247af43891bc0f41b1d1c1484f6a7dcc4a9bd59f507cdcb7bb64c70aab383ad9ea3538ad7007828bd2e9b900b9840de3cb2d8d97c34822db933c
|
7
|
+
data.tar.gz: 247e5643e44d4dd298f684afafe8a1aee2f57340b6fa51099a996d2df99ae0aaaba2853ce4137e80cad1184c071c28f9342efd2d2aea3bb3dabad78f0c45eaa7
|
@@ -35,30 +35,6 @@ window.GOVUK.Modules.GovukAccordion = window.GOVUKFrontend.Accordion;
|
|
35
35
|
this.openByAnchorOnLoad()
|
36
36
|
this.addEventListenersForAnchors()
|
37
37
|
}
|
38
|
-
// Feature flag for "Show all sections" GA click event tracking
|
39
|
-
if (this.$module.getAttribute('data-track-show-all-clicks') === 'true') {
|
40
|
-
this.addAccordionOpenAllTracking()
|
41
|
-
}
|
42
|
-
// Feature flag for each section GA click event tracking
|
43
|
-
if (this.$module.getAttribute('data-track-sections') === 'true') {
|
44
|
-
this.addEventListenerSections()
|
45
|
-
}
|
46
|
-
|
47
|
-
// look for data attributes to put onto the 'show/hide all' link
|
48
|
-
var showAllAttributes = this.$module.getAttribute('data-show-all-attributes')
|
49
|
-
var showAll
|
50
|
-
if (showAllAttributes) {
|
51
|
-
try {
|
52
|
-
showAll = this.$module.querySelector(this.showAllControls)
|
53
|
-
var values = JSON.parse(showAllAttributes)
|
54
|
-
var keys = Object.keys(values)
|
55
|
-
for (var i = 0; i < keys.length; i++) {
|
56
|
-
showAll.setAttribute('data-' + keys[i], values[keys[i]])
|
57
|
-
}
|
58
|
-
} catch (e) {
|
59
|
-
console.error('Could not read accordion data attributes error: ' + e.message, window.location)
|
60
|
-
}
|
61
|
-
}
|
62
38
|
|
63
39
|
// if GA4 is enabled, set attributes on 'show all sections' for tracking using ga4-event-tracker
|
64
40
|
var dataModule = this.$module.getAttribute('data-module')
|
@@ -66,7 +42,7 @@ window.GOVUK.Modules.GovukAccordion = window.GOVUKFrontend.Accordion;
|
|
66
42
|
if (isGa4Enabled) {
|
67
43
|
var indexTotal = this.$module.querySelectorAll('.govuk-accordion__section').length
|
68
44
|
var showAllAttributesGa4 = { event_name: 'select_content', type: 'accordion', index_section: 0, index_section_count: indexTotal }
|
69
|
-
showAll = this.$module.querySelector(this.showAllControls)
|
45
|
+
var showAll = this.$module.querySelector(this.showAllControls)
|
70
46
|
showAll.setAttribute('data-ga4-event', JSON.stringify(showAllAttributesGa4))
|
71
47
|
}
|
72
48
|
}
|
@@ -126,59 +102,5 @@ window.GOVUK.Modules.GovukAccordion = window.GOVUKFrontend.Accordion;
|
|
126
102
|
}
|
127
103
|
}
|
128
104
|
|
129
|
-
// To track the Accordion's "Show all sections" / "Hide all sections" button click events and pass them to the GA event tracking
|
130
|
-
GemAccordion.prototype.addAccordionOpenAllTracking = function () {
|
131
|
-
this.$module.querySelector(this.showAllControls).addEventListener('click', function (event) {
|
132
|
-
var expanded = event.target.getAttribute('aria-expanded') === 'true'
|
133
|
-
var label = expanded ? 'Show all sections' : 'Hide all sections'
|
134
|
-
var action = expanded ? 'accordionOpened' : 'accordionClosed'
|
135
|
-
var options = { transport: 'beacon', label: label }
|
136
|
-
|
137
|
-
var extraOptions = event.target && event.target.getAttribute('data-track-options')
|
138
|
-
|
139
|
-
// this uses the same logic as track-click.js handleClick
|
140
|
-
// means we can add a custom dimensions on click
|
141
|
-
if (extraOptions) {
|
142
|
-
extraOptions = JSON.parse(extraOptions)
|
143
|
-
for (var k in extraOptions) options[k] = extraOptions[k]
|
144
|
-
}
|
145
|
-
|
146
|
-
if (window.GOVUK.analytics && window.GOVUK.analytics.trackEvent) {
|
147
|
-
window.GOVUK.analytics.trackEvent('pageElementInteraction', action, options)
|
148
|
-
}
|
149
|
-
})
|
150
|
-
}
|
151
|
-
|
152
|
-
GemAccordion.prototype.addEventListenerSections = function () {
|
153
|
-
var sections = this.$module.querySelectorAll(this.sectionButton)
|
154
|
-
for (var section of sections) {
|
155
|
-
section.addEventListener('click', this.addAccordionSectionTracking.bind(this, section))
|
156
|
-
}
|
157
|
-
}
|
158
|
-
|
159
|
-
// If the Accordion's sections are opened on click, then pass them to the GA event tracking
|
160
|
-
GemAccordion.prototype.addAccordionSectionTracking = function (section) {
|
161
|
-
var expanded = section.getAttribute('aria-expanded') === 'false'
|
162
|
-
var label = section.querySelector(this.headingText).textContent
|
163
|
-
var action = expanded ? 'accordionOpened' : 'accordionClosed'
|
164
|
-
var options = { transport: 'beacon', label: label }
|
165
|
-
|
166
|
-
// optional parameters are added to the parent
|
167
|
-
// heading not the button that is clicked
|
168
|
-
var extraOptions = section.parentElement && section.parentElement.getAttribute('data-track-options')
|
169
|
-
|
170
|
-
// this uses the same logic as track-click.js handleClick
|
171
|
-
// means we can add a custom dimensions on click
|
172
|
-
// (such as the index of the accordion on the page)
|
173
|
-
if (extraOptions) {
|
174
|
-
extraOptions = JSON.parse(extraOptions)
|
175
|
-
for (var k in extraOptions) options[k] = extraOptions[k]
|
176
|
-
}
|
177
|
-
|
178
|
-
if (window.GOVUK.analytics && window.GOVUK.analytics.trackEvent) {
|
179
|
-
window.GOVUK.analytics.trackEvent('pageElementInteraction', action, options)
|
180
|
-
}
|
181
|
-
}
|
182
|
-
|
183
105
|
Modules.GemAccordion = GemAccordion
|
184
106
|
})(window.GOVUK.Modules)
|
@@ -13,44 +13,11 @@ window.GOVUK.Modules.GovukCheckboxes = window.GOVUKFrontend.Checkboxes;
|
|
13
13
|
GemCheckboxes.prototype.init = function () {
|
14
14
|
this.applyAriaControlsAttributes(this.$module)
|
15
15
|
|
16
|
-
for (var i = 0; i < this.$
|
17
|
-
this.$checkboxes[i].addEventListener('change', this.handleCheckboxChange)
|
18
|
-
}
|
19
|
-
|
20
|
-
for (i = 0; i < this.$nestedCheckboxes.length; i++) {
|
16
|
+
for (var i = 0; i < this.$nestedCheckboxes.length; i++) {
|
21
17
|
this.$nestedCheckboxes[i].addEventListener('change', this.handleNestedCheckboxChange.bind(this))
|
22
18
|
}
|
23
19
|
}
|
24
20
|
|
25
|
-
GemCheckboxes.prototype.handleCheckboxChange = function (event) {
|
26
|
-
if (window.GOVUK.analytics && window.GOVUK.analytics.trackEvent) {
|
27
|
-
// Where checkboxes are manipulated externally in finders, `suppressAnalytics`
|
28
|
-
// is passed to prevent duplicate GA events.
|
29
|
-
// use Oliver Steele's Nested Object Access Pattern https://hackernoon.com/accessing-nested-objects-in-javascript-f02f1bd6387f
|
30
|
-
var allowAnalytics = ((event || {}).detail || {}).suppressAnalytics !== true
|
31
|
-
if (allowAnalytics) {
|
32
|
-
var $checkbox = event.target
|
33
|
-
var category = $checkbox.getAttribute('data-track-category')
|
34
|
-
if (category) {
|
35
|
-
var uncheckTrackCategory = $checkbox.getAttribute('data-uncheck-track-category')
|
36
|
-
if (!$checkbox.checked && uncheckTrackCategory) {
|
37
|
-
category = uncheckTrackCategory
|
38
|
-
}
|
39
|
-
var action = $checkbox.getAttribute('data-track-action')
|
40
|
-
var options = $checkbox.getAttribute('data-track-options')
|
41
|
-
if (options) {
|
42
|
-
options = JSON.parse(options)
|
43
|
-
} else {
|
44
|
-
options = {}
|
45
|
-
}
|
46
|
-
options.value = $checkbox.getAttribute('data-track-value')
|
47
|
-
options.label = $checkbox.getAttribute('data-track-label')
|
48
|
-
window.GOVUK.analytics.trackEvent(category, action, options)
|
49
|
-
}
|
50
|
-
}
|
51
|
-
}
|
52
|
-
}
|
53
|
-
|
54
21
|
GemCheckboxes.prototype.handleNestedCheckboxChange = function (event) {
|
55
22
|
var $checkbox = event.target
|
56
23
|
var $isNested = $checkbox.closest('.govuk-checkboxes--nested')
|
@@ -38,7 +38,6 @@ window.GOVUK.Modules = window.GOVUK.Modules || {};
|
|
38
38
|
e.preventDefault()
|
39
39
|
var el = e.target.closest('button')
|
40
40
|
this.toggleForm(el.getAttribute('aria-controls'))
|
41
|
-
this.trackEvent(this.getTrackEventParams(el))
|
42
41
|
this.updateAriaAttributes(el)
|
43
42
|
}.bind(this))
|
44
43
|
}
|
@@ -50,7 +49,6 @@ window.GOVUK.Modules = window.GOVUK.Modules || {};
|
|
50
49
|
var el = e.target
|
51
50
|
var formToToggle = el.getAttribute('aria-controls')
|
52
51
|
this.toggleForm(formToToggle)
|
53
|
-
this.trackEvent(this.getTrackEventParams(el))
|
54
52
|
this.setInitialAriaAttributes()
|
55
53
|
this.revealInitialPrompt()
|
56
54
|
var refocusClass = '.js-' + formToToggle
|
@@ -60,7 +58,6 @@ window.GOVUK.Modules = window.GOVUK.Modules || {};
|
|
60
58
|
|
61
59
|
this.pageIsUsefulButton.addEventListener('click', function (e) {
|
62
60
|
e.preventDefault()
|
63
|
-
this.trackEvent(this.getTrackEventParams(this.pageIsUsefulButton))
|
64
61
|
this.showFormSuccess()
|
65
62
|
this.revealInitialPrompt()
|
66
63
|
}.bind(this))
|
@@ -87,7 +84,6 @@ window.GOVUK.Modules = window.GOVUK.Modules || {};
|
|
87
84
|
|
88
85
|
this.done = function () {
|
89
86
|
if (xhr.status === 200) {
|
90
|
-
this.trackEvent(this.getTrackEventParams($form))
|
91
87
|
this.showFormSuccess(xhr.message)
|
92
88
|
this.revealInitialPrompt()
|
93
89
|
this.setInitialAriaAttributes()
|
@@ -186,19 +182,6 @@ window.GOVUK.Modules = window.GOVUK.Modules || {};
|
|
186
182
|
}
|
187
183
|
}
|
188
184
|
|
189
|
-
Feedback.prototype.getTrackEventParams = function ($node) {
|
190
|
-
return {
|
191
|
-
category: $node.getAttribute('data-track-category'),
|
192
|
-
action: $node.getAttribute('data-track-action')
|
193
|
-
}
|
194
|
-
}
|
195
|
-
|
196
|
-
Feedback.prototype.trackEvent = function (trackEventParams) {
|
197
|
-
if (window.GOVUK.analytics && window.GOVUK.analytics.trackEvent) {
|
198
|
-
window.GOVUK.analytics.trackEvent(trackEventParams.category, trackEventParams.action)
|
199
|
-
}
|
200
|
-
}
|
201
|
-
|
202
185
|
Feedback.prototype.showError = function (error) {
|
203
186
|
var genericError = [
|
204
187
|
'<h2>Sorry, we’re unable to receive your message right now.</h2>',
|
data/app/assets/javascripts/govuk_publishing_components/components/layout-super-navigation-header.js
CHANGED
@@ -38,17 +38,11 @@ window.GOVUK.Modules = window.GOVUK.Modules || {};
|
|
38
38
|
|
39
39
|
var toggle = function ($button, $menu) {
|
40
40
|
var isOpen = $button.getAttribute('aria-expanded') === 'true'
|
41
|
-
var trackingLabel = $button.getAttribute('data-tracking-key')
|
42
41
|
if (isOpen) {
|
43
42
|
hide($button, $menu)
|
44
43
|
} else {
|
45
44
|
show($button, $menu)
|
46
45
|
}
|
47
|
-
|
48
|
-
// Fire analytics if analytics are available
|
49
|
-
if (window.GOVUK.analytics && window.GOVUK.analytics.trackEvent && trackingLabel) {
|
50
|
-
window.GOVUK.analytics.trackEvent('headerClicked', trackingLabel + (isOpen ? 'Closed' : 'Opened'), { label: 'none' })
|
51
|
-
}
|
52
46
|
}
|
53
47
|
|
54
48
|
// Clicking an element inside a `button` element causes the `event.target` to
|
@@ -37,19 +37,12 @@ window.GOVUK.Modules = window.GOVUK.Modules || {};
|
|
37
37
|
// Only set custom button text if both text items are provided
|
38
38
|
var customText = customSubscribeText && customUnsubscribeText
|
39
39
|
|
40
|
-
// Append '-[button-location]' to the tracking data attribute value if data-button-location is set
|
41
|
-
var optionalButtonLocation = this.$module.getAttribute('data-button-location') ? '-' + this.$module.getAttribute('data-button-location') : ''
|
42
|
-
|
43
40
|
// If response returns active, user has subscribed to notifications
|
44
41
|
if (active === true) {
|
45
|
-
this.$module.setAttribute('data-track-action', 'Unsubscribe-button' + optionalButtonLocation)
|
46
|
-
|
47
42
|
if (customText) {
|
48
43
|
this.$module.querySelector('.gem-c-single-page-notication-button__text').textContent = customUnsubscribeText
|
49
44
|
}
|
50
45
|
} else {
|
51
|
-
this.$module.setAttribute('data-track-action', 'Subscribe-button' + optionalButtonLocation)
|
52
|
-
|
53
46
|
if (customText) {
|
54
47
|
this.$module.querySelector('.gem-c-single-page-notication-button__text').textContent = customSubscribeText
|
55
48
|
}
|
@@ -43,8 +43,6 @@ window.GOVUK.Modules = window.GOVUK.Modules || {};
|
|
43
43
|
this.$module.sessionStoreLink = this.$module.sessionStoreLink + '_' + this.$module.uniqueId
|
44
44
|
}
|
45
45
|
|
46
|
-
var stepNavTracker = new this.StepNavTracker(this.$module.uniqueId, this.$module.totalSteps, this.$module.totalLinks)
|
47
|
-
|
48
46
|
this.getTextForInsertedElements()
|
49
47
|
this.addButtonstoSteps()
|
50
48
|
this.addShowHideAllButton()
|
@@ -54,9 +52,9 @@ window.GOVUK.Modules = window.GOVUK.Modules || {};
|
|
54
52
|
this.ensureOnlyOneActiveLink()
|
55
53
|
this.showPreviouslyOpenedSteps()
|
56
54
|
|
57
|
-
this.bindToggleForSteps(
|
58
|
-
this.bindToggleShowHideAllButton(
|
59
|
-
this.bindComponentLinkClicks(
|
55
|
+
this.bindToggleForSteps()
|
56
|
+
this.bindToggleShowHideAllButton()
|
57
|
+
this.bindComponentLinkClicks()
|
60
58
|
}
|
61
59
|
|
62
60
|
Gemstepnav.prototype.getTextForInsertedElements = function () {
|
@@ -207,19 +205,14 @@ window.GOVUK.Modules = window.GOVUK.Modules || {};
|
|
207
205
|
}
|
208
206
|
}
|
209
207
|
|
210
|
-
Gemstepnav.prototype.bindToggleForSteps = function (
|
208
|
+
Gemstepnav.prototype.bindToggleForSteps = function () {
|
211
209
|
var that = this
|
212
210
|
var togglePanels = this.$module.querySelectorAll('.js-toggle-panel')
|
213
211
|
|
214
212
|
for (var i = 0; i < togglePanels.length; i++) {
|
215
|
-
togglePanels[i].addEventListener('click', function (
|
213
|
+
togglePanels[i].addEventListener('click', function () {
|
216
214
|
var stepView = new that.StepView(this.parentNode, that.$module)
|
217
215
|
stepView.toggle()
|
218
|
-
|
219
|
-
var stepIsOptional = this.parentNode.hasAttribute('data-optional')
|
220
|
-
var toggleClick = new that.StepToggleClick(event, stepView, stepNavTracker, stepIsOptional, that.$module.stepNavSize)
|
221
|
-
toggleClick.trackClick()
|
222
|
-
|
223
216
|
that.setShowHideAllText()
|
224
217
|
that.rememberStepState(this.parentNode)
|
225
218
|
})
|
@@ -246,16 +239,13 @@ window.GOVUK.Modules = window.GOVUK.Modules || {};
|
|
246
239
|
}
|
247
240
|
}
|
248
241
|
|
249
|
-
|
250
|
-
Gemstepnav.prototype.bindComponentLinkClicks = function (stepNavTracker) {
|
242
|
+
Gemstepnav.prototype.bindComponentLinkClicks = function () {
|
251
243
|
var jsLinks = this.$module.querySelectorAll('.js-link')
|
252
244
|
var that = this
|
253
245
|
|
254
246
|
for (var i = 0; i < jsLinks.length; i++) {
|
255
247
|
jsLinks[i].addEventListener('click', function (event) {
|
256
248
|
var dataPosition = this.getAttribute('data-position')
|
257
|
-
var linkClick = new that.ComponentLinkClick(event, stepNavTracker, dataPosition, that.$module.stepNavSize)
|
258
|
-
linkClick.trackClick()
|
259
249
|
|
260
250
|
if (this.getAttribute('rel') !== 'external') {
|
261
251
|
that.saveToSessionStorage(that.$module.sessionStoreLink, dataPosition)
|
@@ -353,18 +343,13 @@ window.GOVUK.Modules = window.GOVUK.Modules || {};
|
|
353
343
|
}
|
354
344
|
}
|
355
345
|
|
356
|
-
Gemstepnav.prototype.bindToggleShowHideAllButton = function (
|
346
|
+
Gemstepnav.prototype.bindToggleShowHideAllButton = function () {
|
357
347
|
var that = this
|
358
348
|
|
359
349
|
this.$module.showOrHideAllButton.addEventListener('click', function (event) {
|
360
350
|
var textContent = this.textContent || this.innerText
|
361
351
|
var shouldShowAll = textContent === that.$module.actions.showAllText
|
362
352
|
|
363
|
-
// Fire GA click tracking
|
364
|
-
stepNavTracker.trackClick('pageElementInteraction', (shouldShowAll ? 'stepNavAllShown' : 'stepNavAllHidden'), {
|
365
|
-
label: (shouldShowAll ? that.$module.actions.showAllText : that.$module.actions.hideAllText) + ': ' + that.$module.stepNavSize
|
366
|
-
})
|
367
|
-
|
368
353
|
that.setAllStepsShownState(shouldShowAll)
|
369
354
|
that.$module.showOrHideAllButton.setAttribute('aria-expanded', shouldShowAll)
|
370
355
|
that.setShowHideAllText()
|
@@ -445,30 +430,16 @@ window.GOVUK.Modules = window.GOVUK.Modules || {};
|
|
445
430
|
}
|
446
431
|
}
|
447
432
|
|
448
|
-
Gemstepnav.prototype.StepToggleClick = function (event, stepView,
|
433
|
+
Gemstepnav.prototype.StepToggleClick = function (event, stepView, stepIsOptional, stepNavSize) {
|
449
434
|
this.target = event.target
|
450
435
|
this.stepIsOptional = stepIsOptional
|
451
436
|
this.stepNavSize = stepNavSize
|
452
437
|
|
453
|
-
this.trackClick = function () {
|
454
|
-
var trackingOptions = { label: this.trackingLabel(), dimension28: stepView.numberOfContentItems().toString() }
|
455
|
-
stepNavTracker.trackClick('pageElementInteraction', this.trackingAction(), trackingOptions)
|
456
|
-
}
|
457
|
-
|
458
|
-
this.trackingLabel = function () {
|
459
|
-
var clickedNearbyToggle = this.target.closest('.js-step').querySelectorAll('.js-toggle-panel')[0]
|
460
|
-
return clickedNearbyToggle.getAttribute('data-position') + ' - ' + stepView.title + ' - ' + this.locateClickElement() + ': ' + this.stepNavSize + this.isOptional()
|
461
|
-
}
|
462
|
-
|
463
438
|
// returns index of the clicked step in the overall number of steps
|
464
439
|
this.stepIndex = function () { // eslint-disable-line no-unused-vars
|
465
440
|
return this.$module.steps.index(stepView.element) + 1
|
466
441
|
}
|
467
442
|
|
468
|
-
this.trackingAction = function () {
|
469
|
-
return (stepView.isHidden() ? 'stepNavHidden' : 'stepNavShown')
|
470
|
-
}
|
471
|
-
|
472
443
|
this.locateClickElement = function () {
|
473
444
|
if (this.clickedOnIcon()) {
|
474
445
|
return this.iconType() + ' click'
|
@@ -496,42 +467,5 @@ window.GOVUK.Modules = window.GOVUK.Modules || {};
|
|
496
467
|
}
|
497
468
|
}
|
498
469
|
|
499
|
-
Gemstepnav.prototype.ComponentLinkClick = function (event, stepNavTracker, linkPosition, size) {
|
500
|
-
this.size = size
|
501
|
-
this.target = event.target
|
502
|
-
|
503
|
-
this.trackClick = function () {
|
504
|
-
var trackingOptions = { label: this.target.getAttribute('href') + ' : ' + this.size }
|
505
|
-
var dimension28 = this.target.closest('.gem-c-step-nav__list').getAttribute('data-length')
|
506
|
-
|
507
|
-
if (dimension28) {
|
508
|
-
trackingOptions.dimension28 = dimension28
|
509
|
-
}
|
510
|
-
|
511
|
-
stepNavTracker.trackClick('stepNavLinkClicked', linkPosition, trackingOptions)
|
512
|
-
}
|
513
|
-
}
|
514
|
-
|
515
|
-
// A helper that sends a custom event request to Google Analytics if
|
516
|
-
// the GOVUK module is setup
|
517
|
-
Gemstepnav.prototype.StepNavTracker = function (uniqueId, totalSteps, totalLinks) {
|
518
|
-
this.totalSteps = totalSteps
|
519
|
-
this.totalLinks = totalLinks
|
520
|
-
this.uniqueId = uniqueId
|
521
|
-
|
522
|
-
this.trackClick = function (category, action, options) {
|
523
|
-
// dimension26 records the total number of expand/collapse steps in this step nav
|
524
|
-
// dimension27 records the total number of links in this step nav
|
525
|
-
// dimension28 records the number of links in the step that was shown/hidden (handled in click event)
|
526
|
-
if (window.GOVUK.analytics && window.GOVUK.analytics.trackEvent) {
|
527
|
-
options = options || {}
|
528
|
-
options.dimension26 = options.dimension26 || this.totalSteps.toString()
|
529
|
-
options.dimension27 = options.dimension27 || this.totalLinks.toString()
|
530
|
-
options.dimension96 = options.dimension96 || this.uniqueId
|
531
|
-
window.GOVUK.analytics.trackEvent(category, action, options)
|
532
|
-
}
|
533
|
-
}
|
534
|
-
}
|
535
|
-
|
536
470
|
Modules.Gemstepnav = Gemstepnav
|
537
471
|
})(window.GOVUK.Modules)
|
@@ -6,7 +6,6 @@
|
|
6
6
|
|
7
7
|
document.addEventListener('DOMContentLoaded', function () {
|
8
8
|
window.GOVUK.analyticsGa4 = window.GOVUK.analyticsGa4 || {}
|
9
|
-
window.GOVUK.analyticsVars = window.GOVUK.analyticsVars || {}
|
10
9
|
|
11
10
|
// if statements ensure these functions don't execute during testing
|
12
11
|
if (typeof window.GOVUK.loadAnalytics !== 'undefined') {
|
@@ -14,9 +13,6 @@ document.addEventListener('DOMContentLoaded', function () {
|
|
14
13
|
if (typeof window.GOVUK.analyticsGa4.vars === 'undefined') {
|
15
14
|
window.GOVUK.loadAnalytics.loadGa4()
|
16
15
|
}
|
17
|
-
if (typeof window.GOVUK.analyticsVars.gaProperty === 'undefined') {
|
18
|
-
window.GOVUK.loadAnalytics.loadUa()
|
19
|
-
}
|
20
16
|
}
|
21
17
|
|
22
18
|
window.GOVUK.modules.start()
|
@@ -14,8 +14,6 @@ window.GOVUK.vars.domains = [
|
|
14
14
|
id: 'GTM-MG7HG5W',
|
15
15
|
auth: 'bRiZ-jiEHtw6hHpGd6dF9w',
|
16
16
|
preview: 'env-3',
|
17
|
-
gaProperty: 'UA-UNSET',
|
18
|
-
gaPropertyCrossDomain: 'UA-UNSET',
|
19
17
|
consentApiUrl: 'staging'
|
20
18
|
},
|
21
19
|
{
|
@@ -27,8 +25,6 @@ window.GOVUK.vars.domains = [
|
|
27
25
|
],
|
28
26
|
initialiseGA4: true,
|
29
27
|
id: 'GTM-MG7HG5W',
|
30
|
-
gaProperty: 'UA-26179049-1',
|
31
|
-
gaPropertyCrossDomain: 'UA-145652997-1',
|
32
28
|
consentApiUrl: 'production'
|
33
29
|
},
|
34
30
|
{
|
@@ -42,8 +38,6 @@ window.GOVUK.vars.domains = [
|
|
42
38
|
id: 'GTM-MG7HG5W',
|
43
39
|
auth: 'oJWs562CxSIjZKn_GlB5Bw',
|
44
40
|
preview: 'env-5',
|
45
|
-
gaProperty: 'UA-26179049-20',
|
46
|
-
gaPropertyCrossDomain: 'UA-145652997-1',
|
47
41
|
consentApiUrl: 'staging'
|
48
42
|
},
|
49
43
|
{
|
@@ -57,8 +51,6 @@ window.GOVUK.vars.domains = [
|
|
57
51
|
id: 'GTM-MG7HG5W',
|
58
52
|
auth: 'C7iYdcsOlYgGmiUJjZKrHQ',
|
59
53
|
preview: 'env-4',
|
60
|
-
gaProperty: 'UA-26179049-22',
|
61
|
-
gaPropertyCrossDomain: 'UA-145652997-1',
|
62
54
|
consentApiUrl: 'staging'
|
63
55
|
},
|
64
56
|
{
|
@@ -25,11 +25,7 @@
|
|
25
25
|
global_bar_seen: 'settings',
|
26
26
|
govuk_browser_upgrade_dismisssed: 'settings',
|
27
27
|
govuk_not_first_visit: 'settings',
|
28
|
-
analytics_next_page_call: 'usage',
|
29
28
|
user_nation: 'settings',
|
30
|
-
_ga: 'usage',
|
31
|
-
_gid: 'usage',
|
32
|
-
_gat: 'usage',
|
33
29
|
'JS-Detection': 'usage',
|
34
30
|
TLSversion: 'usage',
|
35
31
|
_ga_VBLT2V3FZR: 'usage', // gtag cookie used to persist the session state, integration
|
@@ -77,24 +77,10 @@ window.GOVUK.Modules = window.GOVUK.Modules || {};
|
|
77
77
|
window.GOVUK.setCookie('cookies_preferences_set', true, { days: 365 })
|
78
78
|
}
|
79
79
|
|
80
|
-
this.fireAnalyticsEvent(options)
|
81
80
|
this.showConfirmationMessage()
|
82
81
|
return false
|
83
82
|
}
|
84
83
|
|
85
|
-
CookieSettings.prototype.fireAnalyticsEvent = function (consent) {
|
86
|
-
var eventLabel = ''
|
87
|
-
|
88
|
-
for (var option in consent) {
|
89
|
-
var optionValue = consent[option] ? 'yes' : 'no'
|
90
|
-
eventLabel += option + '-' + optionValue + ' '
|
91
|
-
}
|
92
|
-
|
93
|
-
if (window.GOVUK.analytics && window.GOVUK.analytics.trackEvent) {
|
94
|
-
window.GOVUK.analytics.trackEvent('cookieSettings', 'Save changes', { label: eventLabel })
|
95
|
-
}
|
96
|
-
}
|
97
|
-
|
98
84
|
CookieSettings.prototype.showConfirmationMessage = function () {
|
99
85
|
var confirmationMessage = document.querySelector('div[data-cookie-confirmation]')
|
100
86
|
// hide the message if already visible so assistive tech is triggered when it appears
|
data/app/assets/javascripts/govuk_publishing_components/lib/govspeak/youtube-link-enhancement.js
CHANGED
@@ -28,18 +28,10 @@
|
|
28
28
|
for (var i = 0; i < $youtubeLinks.length; ++i) {
|
29
29
|
var $link = $youtubeLinks[i]
|
30
30
|
var href = $link.getAttribute('href')
|
31
|
-
var hasTracking = $link.hasAttribute('data-youtube-player-analytics')
|
32
31
|
var options = {
|
33
32
|
link: $link
|
34
33
|
}
|
35
34
|
|
36
|
-
if (hasTracking) {
|
37
|
-
options.tracking = {
|
38
|
-
hasTracking: hasTracking,
|
39
|
-
category: $link.getAttribute('data-youtube-player-analytics-category')
|
40
|
-
}
|
41
|
-
}
|
42
|
-
|
43
35
|
if (href.indexOf('/live_stream') >= 0) {
|
44
36
|
var channelId = YoutubeLinkEnhancement.parseLivestream(href)
|
45
37
|
|
@@ -122,7 +114,6 @@
|
|
122
114
|
},
|
123
115
|
onStateChange: function (event) {
|
124
116
|
var eventData = event.data
|
125
|
-
var eventTarget = event.target
|
126
117
|
var states = {
|
127
118
|
/* eslint-disable quote-props */
|
128
119
|
'-1': 'VideoUnstarted',
|
@@ -133,17 +124,6 @@
|
|
133
124
|
'5': 'VideoCued'
|
134
125
|
/* eslint-enable */
|
135
126
|
}
|
136
|
-
if (states[eventData] && options.tracking && options.tracking.hasTracking &&
|
137
|
-
window.GOVUK.analytics && window.GOVUK.analytics.trackEvent) {
|
138
|
-
var tracking = {
|
139
|
-
category: options.tracking.category,
|
140
|
-
action: states[eventData],
|
141
|
-
label: { transport: 'beacon', label: eventTarget.getVideoData && eventTarget.getVideoData().title }
|
142
|
-
}
|
143
|
-
|
144
|
-
window.GOVUK.analytics.trackEvent(tracking.category, tracking.action, tracking.label)
|
145
|
-
}
|
146
|
-
|
147
127
|
if (window.GOVUK.analyticsGa4.analyticsModules.VideoTracker) {
|
148
128
|
window.GOVUK.analyticsGa4.analyticsModules.VideoTracker.trackVideo(event, states[eventData])
|
149
129
|
}
|
@@ -66,22 +66,6 @@
|
|
66
66
|
|
67
67
|
`data-controls` can contain more than one element, space
|
68
68
|
separated.
|
69
|
-
|
70
|
-
With tracking:
|
71
|
-
|
72
|
-
<div data-module="gem-toggle">
|
73
|
-
<a href="#" data-controls="target6" data-expanded="true" data-track-category="category" data-track-action="action" data-toggled-text="Show more">
|
74
|
-
Show less
|
75
|
-
</a>
|
76
|
-
<div id="target6">
|
77
|
-
Content shown on page load, tracked when expanded and collapsed
|
78
|
-
</div>
|
79
|
-
</div>
|
80
|
-
|
81
|
-
Use `data-track-category` and `data-track-action` together
|
82
|
-
to enable analytics on the element. The track label will be
|
83
|
-
determined based on the text present within the element
|
84
|
-
at the time it was clicked.
|
85
69
|
*/
|
86
70
|
window.GOVUK = window.GOVUK || {}
|
87
71
|
window.GOVUK.Modules = window.GOVUK.Modules || {};
|
@@ -96,14 +80,6 @@ window.GOVUK.Modules = window.GOVUK.Modules || {};
|
|
96
80
|
|
97
81
|
if (this.$module.toggleTrigger) {
|
98
82
|
this.$module.toggleClass = this.$module.getAttribute('data-toggle-class') || 'js-hidden'
|
99
|
-
|
100
|
-
this.$module.isTrackable = this.$module.toggleTrigger.hasAttribute('data-track-category') && this.$module.toggleTrigger.hasAttribute('data-track-action')
|
101
|
-
|
102
|
-
if (this.$module.isTrackable) {
|
103
|
-
this.$module.trackCategory = this.$module.toggleTrigger.getAttribute('data-track-category')
|
104
|
-
this.$module.trackAction = this.$module.toggleTrigger.getAttribute('data-track-action')
|
105
|
-
}
|
106
|
-
|
107
83
|
this.addAriaAttrs()
|
108
84
|
this.toggleOnClick()
|
109
85
|
}
|
@@ -156,17 +132,8 @@ window.GOVUK.Modules = window.GOVUK.Modules || {};
|
|
156
132
|
this.setAttribute('data-toggled-text', this.innerText)
|
157
133
|
this.innerText = toggledText
|
158
134
|
}
|
159
|
-
|
160
|
-
if (window.GOVUK.analytics && window.GOVUK.analytics.trackEvent && that.$module.isTrackable) {
|
161
|
-
that.track()
|
162
|
-
}
|
163
135
|
})
|
164
136
|
}
|
165
137
|
|
166
|
-
GemToggle.prototype.track = function () {
|
167
|
-
var options = { label: this.$module.toggleTrigger.getAttribute('data-toggled-text') || this.$module.toggleTrigger.innerText }
|
168
|
-
window.GOVUK.analytics.trackEvent(this.$module.trackCategory, this.$module.trackAction, options)
|
169
|
-
}
|
170
|
-
|
171
138
|
Modules.GemToggle = GemToggle
|
172
139
|
})(window.GOVUK.Modules)
|
@@ -1,6 +1,4 @@
|
|
1
|
-
//= require govuk_publishing_components/analytics
|
2
1
|
//= require govuk_publishing_components/analytics-ga4
|
3
|
-
//= require govuk_publishing_components/analytics/linked-domains
|
4
2
|
//= require govuk_publishing_components/domain-config
|
5
3
|
|
6
4
|
window.GOVUK.loadAnalytics = {
|
@@ -10,29 +8,6 @@ window.GOVUK.loadAnalytics = {
|
|
10
8
|
}
|
11
9
|
},
|
12
10
|
|
13
|
-
// For Universal Analytics' cross domain tracking. linkedDomains is defined by the require statement at the top of the file.
|
14
|
-
linkedDomains: window.GOVUK.analytics.linkedDomains,
|
15
|
-
|
16
|
-
loadUa: function (currentDomain) {
|
17
|
-
currentDomain = currentDomain || window.location.hostname
|
18
|
-
|
19
|
-
// Universal Analytics variables
|
20
|
-
window.GOVUK.analyticsVars = window.GOVUK.analyticsVars || {}
|
21
|
-
window.GOVUK.analyticsVars.primaryLinkedDomains = ['account.gov.uk']
|
22
|
-
window.GOVUK.analyticsVars.linkedDomains = this.linkedDomains
|
23
|
-
window.GOVUK.analyticsVars.gaProperty = 'UA-UNSET'
|
24
|
-
window.GOVUK.analyticsVars.gaPropertyCrossDomain = 'UA-UNSET'
|
25
|
-
|
26
|
-
for (var i = 0; i < window.GOVUK.vars.domains.length; i++) {
|
27
|
-
var current = window.GOVUK.vars.domains[i]
|
28
|
-
if (this.arrayContains(currentDomain, current.domains)) {
|
29
|
-
window.GOVUK.analyticsVars.gaProperty = current.gaProperty
|
30
|
-
window.GOVUK.analyticsVars.gaPropertyCrossDomain = current.gaPropertyCrossDomain
|
31
|
-
break
|
32
|
-
}
|
33
|
-
}
|
34
|
-
},
|
35
|
-
|
36
11
|
loadGa4: function (currentDomain) {
|
37
12
|
currentDomain = currentDomain || window.location.hostname
|
38
13
|
var environment = this.getEnvironment(currentDomain)
|
@@ -8,10 +8,7 @@
|
|
8
8
|
id ||= "default-id-#{SecureRandom.hex(4)}"
|
9
9
|
items ||= []
|
10
10
|
anchor_navigation ||= false
|
11
|
-
track_show_all_clicks ||= false
|
12
|
-
track_sections ||= false
|
13
11
|
disable_ga4 ||= false
|
14
|
-
data_attributes_show_all ||= nil
|
15
12
|
|
16
13
|
component_helper = GovukPublishingComponents::Presenters::ComponentWrapperHelper.new(local_assigns)
|
17
14
|
component_helper.set_id(id)
|
@@ -22,9 +19,6 @@
|
|
22
19
|
component_helper.add_data_attribute({ module: "ga4-event-tracker" }) unless disable_ga4
|
23
20
|
component_helper.add_data_attribute({ ga4_expandable: "" }) unless disable_ga4
|
24
21
|
component_helper.add_data_attribute({ anchor_navigation: anchor_navigation }) if anchor_navigation
|
25
|
-
component_helper.add_data_attribute({ track_show_all_clicks: track_show_all_clicks }) if track_show_all_clicks
|
26
|
-
component_helper.add_data_attribute({ track_sections: track_sections }) if track_sections
|
27
|
-
component_helper.add_data_attribute({ show_all_attributes: data_attributes_show_all }) if data_attributes_show_all
|
28
22
|
component_helper.add_data_attribute(accordion_helper.apply_translations)
|
29
23
|
%>
|
30
24
|
<% if items.any? %>
|
@@ -51,8 +45,7 @@
|
|
51
45
|
}.to_json
|
52
46
|
|
53
47
|
# These attributes have been created separately from the item[:data_attributes]
|
54
|
-
# object in order to keep them from colliding with GA4 event tracking
|
55
|
-
# tracking attributes
|
48
|
+
# object in order to keep them from colliding with GA4 event tracking attributes
|
56
49
|
ga4_link_data_attributes = {}
|
57
50
|
ga4_link_data_attributes[:module] = "ga4-link-tracker"
|
58
51
|
ga4_link_data_attributes[:ga4_track_links_only] = ""
|