govuk_publishing_components 34.13.0 → 34.14.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-auto-tracker.js +4 -1
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-core.js +31 -0
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-event-tracker.js +1 -0
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-link-tracker.js +1 -0
- data/app/views/govuk_publishing_components/components/_contextual_breadcrumbs.html.erb +7 -4
- data/app/views/govuk_publishing_components/components/_contextual_sidebar.html.erb +3 -2
- data/app/views/govuk_publishing_components/components/_step_by_step_nav_header.html.erb +9 -1
- data/app/views/govuk_publishing_components/components/_step_by_step_nav_related.html.erb +20 -9
- data/app/views/govuk_publishing_components/components/docs/contextual_breadcrumbs.yml +13 -0
- data/app/views/govuk_publishing_components/components/docs/contextual_sidebar.yml +11 -0
- data/app/views/govuk_publishing_components/components/docs/step_by_step_nav_header.yml +6 -0
- data/app/views/govuk_publishing_components/components/docs/step_by_step_nav_related.yml +10 -0
- data/lib/govuk_publishing_components/presenters/breadcrumb_selector.rb +3 -2
- data/lib/govuk_publishing_components/presenters/breadcrumbs.rb +3 -1
- data/lib/govuk_publishing_components/presenters/page_with_step_by_step_navigation.rb +2 -1
- data/lib/govuk_publishing_components/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c4137db9fa2f61ba41157832c2d8a959756eb36e11837e4d58654b264d68a3f0
|
|
4
|
+
data.tar.gz: a3eb50516bf440839af9b74e1fc5ab44e9fc21ee0afb7910cdb742d10a6d3182
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3e780d3b9f9f2e72c471767c7be3bb611bae0eb7f2b211e19ae85b6fdae4338ae20d346c53b72c6d1b1d0e3d06447084eb389aeb64960df48b68d60bdaa4ed7e
|
|
7
|
+
data.tar.gz: 7cfd8703805c415ffad093fd18dc104d6d41c7e51305673c178b90778eb52bf3037b52ea2550cdb42c0ba4291d6e53c95c577800f2b8fe398ee503c1a3910b76
|
|
@@ -28,13 +28,16 @@ window.GOVUK.Modules = window.GOVUK.Modules || {};
|
|
|
28
28
|
if (window.dataLayer) {
|
|
29
29
|
try {
|
|
30
30
|
var data = this.module.getAttribute(this.trackingTrigger)
|
|
31
|
-
data = JSON.parse(data)
|
|
31
|
+
data = JSON.parse(data) || {}
|
|
32
32
|
} catch (e) {
|
|
33
33
|
// if there's a problem with the config, don't start the tracker
|
|
34
34
|
console.error('GA4 configuration error: ' + e.message, window.location)
|
|
35
35
|
return
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
+
if (data.index) {
|
|
39
|
+
data.index = window.GOVUK.analyticsGa4.core.trackFunctions.createIndexObject(data.index)
|
|
40
|
+
}
|
|
38
41
|
var schemas = new window.GOVUK.analyticsGa4.Schemas()
|
|
39
42
|
var schema = schemas.mergeProperties(data, 'event_data')
|
|
40
43
|
|
|
@@ -237,6 +237,37 @@ window.GOVUK.analyticsGa4 = window.GOVUK.analyticsGa4 || {};
|
|
|
237
237
|
var ga4LinkData = JSON.parse(module.getAttribute('data-ga4-link'))
|
|
238
238
|
ga4LinkData.index_total = totalLinks
|
|
239
239
|
module.setAttribute('data-ga4-link', JSON.stringify(ga4LinkData))
|
|
240
|
+
},
|
|
241
|
+
|
|
242
|
+
// index is given as a string of the form 1.2.3 or 1.2
|
|
243
|
+
// split this into named sub-parameters
|
|
244
|
+
createIndexObject: function (index) {
|
|
245
|
+
if (typeof index === 'undefined') {
|
|
246
|
+
return undefined
|
|
247
|
+
}
|
|
248
|
+
if (typeof index === 'object') {
|
|
249
|
+
return index
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
index = index.toString().split('.')
|
|
253
|
+
// this will soon include 'index_section_count'
|
|
254
|
+
// number of sections overall in the thing being tracked (but not yet in use)
|
|
255
|
+
switch (index.length) {
|
|
256
|
+
case 1:
|
|
257
|
+
return {
|
|
258
|
+
index_section: parseInt(index[0])
|
|
259
|
+
}
|
|
260
|
+
case 2:
|
|
261
|
+
return {
|
|
262
|
+
index_section: parseInt(index[0]),
|
|
263
|
+
index_link: parseInt(index[1])
|
|
264
|
+
}
|
|
265
|
+
case 3:
|
|
266
|
+
return {
|
|
267
|
+
index_section: parseInt(index[1]),
|
|
268
|
+
index_link: parseInt(index[2])
|
|
269
|
+
}
|
|
270
|
+
}
|
|
240
271
|
}
|
|
241
272
|
},
|
|
242
273
|
|
|
@@ -42,6 +42,7 @@ window.GOVUK.Modules = window.GOVUK.Modules || {};
|
|
|
42
42
|
|
|
43
43
|
var text = data.text || event.target.textContent
|
|
44
44
|
data.text = window.GOVUK.analyticsGa4.core.trackFunctions.removeLinesAndExtraSpaces(text)
|
|
45
|
+
data.index = window.GOVUK.analyticsGa4.core.trackFunctions.createIndexObject(data.index)
|
|
45
46
|
|
|
46
47
|
var schemas = new window.GOVUK.analyticsGa4.Schemas()
|
|
47
48
|
var schema = schemas.mergeProperties(data, 'event_data')
|
|
@@ -87,6 +87,7 @@ window.GOVUK.Modules = window.GOVUK.Modules || {};
|
|
|
87
87
|
data.method = window.GOVUK.analyticsGa4.core.trackFunctions.getClickType(event)
|
|
88
88
|
data.external = window.GOVUK.analyticsGa4.core.trackFunctions.isExternalLink(data.url) ? 'true' : 'false'
|
|
89
89
|
data.index = event.target.getAttribute('data-ga4-index') ? parseInt(event.target.getAttribute('data-ga4-index')) : data.index || undefined
|
|
90
|
+
data.index = window.GOVUK.analyticsGa4.core.trackFunctions.createIndexObject(data.index)
|
|
90
91
|
|
|
91
92
|
var schemas = new window.GOVUK.analyticsGa4.Schemas()
|
|
92
93
|
var schema = schemas.mergeProperties(data, 'event_data')
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
<%
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
<%
|
|
2
|
+
ga4_tracking ||= false
|
|
3
|
+
prioritise_taxon_breadcrumbs ||= false
|
|
4
|
+
breadcrumb_selector = GovukPublishingComponents::Presenters::BreadcrumbSelector.new(content_item, request, prioritise_taxon_breadcrumbs, ga4_tracking)
|
|
5
|
+
inverse ||= false
|
|
6
|
+
collapse_on_mobile ||= true unless local_assigns[:collapse_on_mobile].eql?(false)
|
|
7
|
+
%>
|
|
5
8
|
|
|
6
9
|
<div class="gem-c-contextual-breadcrumbs">
|
|
7
10
|
<% if breadcrumb_selector.step_by_step %>
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
<div class="gem-c-contextual-sidebar">
|
|
11
11
|
<% if navigation.content_tagged_to_a_reasonable_number_of_step_by_steps? %>
|
|
12
12
|
<%# Rendering step by step related items because there are a few but not too many of them %>
|
|
13
|
-
<%= render 'govuk_publishing_components/components/step_by_step_nav_related', links: navigation.step_nav_helper.related_links %>
|
|
13
|
+
<%= render 'govuk_publishing_components/components/step_by_step_nav_related', links: navigation.step_nav_helper.related_links, ga4_tracking: ga4_tracking %>
|
|
14
14
|
<% end %>
|
|
15
15
|
|
|
16
16
|
<% if navigation.content_tagged_to_current_step_by_step? %>
|
|
@@ -26,7 +26,8 @@
|
|
|
26
26
|
<%= render 'govuk_publishing_components/components/step_by_step_nav_related', {
|
|
27
27
|
pretitle: t("components.contextual_sidebar.pretitle"),
|
|
28
28
|
links: navigation.step_nav_helper.also_part_of_step_nav,
|
|
29
|
-
always_display_as_list: true
|
|
29
|
+
always_display_as_list: true,
|
|
30
|
+
ga4_tracking: ga4_tracking
|
|
30
31
|
} %>
|
|
31
32
|
<% end %>
|
|
32
33
|
|
|
@@ -3,12 +3,17 @@
|
|
|
3
3
|
|
|
4
4
|
title ||= false
|
|
5
5
|
path ||= false
|
|
6
|
+
ga4_tracking ||= false
|
|
6
7
|
breadcrumbs = [
|
|
7
8
|
{ title: "Home", url: "/" },
|
|
8
9
|
{ title: title, url: path }
|
|
9
10
|
]
|
|
10
11
|
breadcrumb_presenter = GovukPublishingComponents::Presenters::Breadcrumbs.new(breadcrumbs)
|
|
11
12
|
|
|
13
|
+
data = {}
|
|
14
|
+
data[:module] = "gem-track-click"
|
|
15
|
+
data[:module] << " ga4-link-tracker" if ga4_tracking
|
|
16
|
+
|
|
12
17
|
tracking_id ||= false
|
|
13
18
|
tracking_category ||= "stepNavHeaderClicked"
|
|
14
19
|
tracking_action ||= "top"
|
|
@@ -30,7 +35,7 @@
|
|
|
30
35
|
<%= raw JSON.pretty_generate(breadcrumb_presenter.structured_data) %>
|
|
31
36
|
</script>
|
|
32
37
|
|
|
33
|
-
<%= tag.div
|
|
38
|
+
<%= tag.div(class: classes, data: data) do %>
|
|
34
39
|
<strong class="gem-c-step-nav-header__part-of">Part of</strong>
|
|
35
40
|
<% if path %>
|
|
36
41
|
<a href="<%= path %>"
|
|
@@ -38,6 +43,9 @@
|
|
|
38
43
|
data-track-category="<%= tracking_category %>"
|
|
39
44
|
data-track-action="<%= tracking_action %>"
|
|
40
45
|
data-track-label="<%= tracking_label %>"
|
|
46
|
+
<% if ga4_tracking %>
|
|
47
|
+
data-ga4-link='{"event_name":"navigation", "type":"super breadcrumb", "index":{"index_link": "1"}, "index_total":"1"}'
|
|
48
|
+
<% end %>
|
|
41
49
|
<% if tracking_dimension_enabled %>
|
|
42
50
|
data-track-dimension="<%= tracking_dimension %>"
|
|
43
51
|
data-track-dimension-index="<%= tracking_dimension_index %>"
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
<%
|
|
2
2
|
add_gem_component_stylesheet("step-by-step-nav-related")
|
|
3
|
-
|
|
3
|
+
ga4_tracking ||= false
|
|
4
4
|
links ||= []
|
|
5
5
|
pretitle ||= t("components.step_by_step_nav_related.part_of")
|
|
6
6
|
always_display_as_list ||= false
|
|
7
|
+
classes = %w(gem-c-step-nav-related)
|
|
8
|
+
classes << "gem-c-step-nav-related--singular" if links.length == 1
|
|
9
|
+
data = {}
|
|
10
|
+
data[:module] = "gem-track-click"
|
|
11
|
+
data[:module] << " ga4-link-tracker" if ga4_tracking
|
|
7
12
|
%>
|
|
8
13
|
<% if links.any? %>
|
|
9
|
-
|
|
10
|
-
class="gem-c-step-nav-related <%= "gem-c-step-nav-related--singular" if links.length == 1 %>"
|
|
11
|
-
data-module="gem-track-click">
|
|
14
|
+
<%= tag.div(class: classes, data: data) do %>
|
|
12
15
|
<h2 class="gem-c-step-nav-related__heading">
|
|
13
16
|
<span class="gem-c-step-nav-related__pretitle"><%= pretitle %></span>
|
|
14
17
|
<% if links.length == 1 && !always_display_as_list %>
|
|
@@ -19,14 +22,18 @@
|
|
|
19
22
|
data-track-label="<%= links[0][:href] %>"
|
|
20
23
|
data-track-dimension="<%= links[0][:text] %>"
|
|
21
24
|
data-track-dimension-index="29"
|
|
22
|
-
data-track-options='{"dimension96" : "<%= links[0][:tracking_id] %>" }'
|
|
25
|
+
data-track-options='{"dimension96" : "<%= links[0][:tracking_id] %>" }'
|
|
26
|
+
<% if ga4_tracking %>
|
|
27
|
+
data-ga4-link='{"event_name":"navigation", "type":"related content", "index":{"index_link": "1"}, "index_total":"1"}'
|
|
28
|
+
<% end %>
|
|
29
|
+
>
|
|
23
30
|
<%= links[0][:text] %>
|
|
24
31
|
</a>
|
|
25
32
|
</h2>
|
|
26
33
|
<% else %>
|
|
27
34
|
</h2>
|
|
28
35
|
<ul class="gem-c-step-nav-related__links">
|
|
29
|
-
<% links.
|
|
36
|
+
<% links.each_with_index do |link, index| %>
|
|
30
37
|
<li class="gem-c-step-nav-related__link-item">
|
|
31
38
|
<a href="<%= link[:href] %>"
|
|
32
39
|
class="govuk-link"
|
|
@@ -35,12 +42,16 @@
|
|
|
35
42
|
data-track-label="<%= link[:href] %>"
|
|
36
43
|
data-track-dimension="<%= link[:text] %>"
|
|
37
44
|
data-track-dimension-index="29"
|
|
38
|
-
data-track-options='{"dimension96" : "<%= link[:tracking_id] %>" }'
|
|
45
|
+
data-track-options='{"dimension96" : "<%= link[:tracking_id] %>" }'
|
|
46
|
+
<% if ga4_tracking %>
|
|
47
|
+
data-ga4-link='{"event_name":"navigation", "type":"related content", "index":{"index_link": "<%= index + 1 %>"}, "index_total": "<%= links.length %>"}'
|
|
48
|
+
<% end %>
|
|
49
|
+
>
|
|
39
50
|
<%= link[:text] %>
|
|
40
51
|
</a>
|
|
41
52
|
</li>
|
|
42
53
|
<% end %>
|
|
43
54
|
</ul>
|
|
44
55
|
<% end %>
|
|
45
|
-
|
|
46
|
-
<% end %>
|
|
56
|
+
<% end %>
|
|
57
|
+
<% end %>
|
|
@@ -32,3 +32,16 @@ examples:
|
|
|
32
32
|
inverse: true
|
|
33
33
|
context:
|
|
34
34
|
dark_background: true
|
|
35
|
+
with_ga4_tracking:
|
|
36
|
+
description: |
|
|
37
|
+
Adds GA4 tracking to the step by step nav header component when it is rendered as a breadcrumb. See the
|
|
38
|
+
[ga4-link-tracker documentation](https://github.com/alphagov/govuk_publishing_components/blob/main/docs/analytics-ga4/ga4-link-tracker.md) for more information.
|
|
39
|
+
Note: tracking on regular breadcrumbs is enabled by default and does not require activating.
|
|
40
|
+
data:
|
|
41
|
+
ga4_tracking: true
|
|
42
|
+
content_item:
|
|
43
|
+
title: "A content item"
|
|
44
|
+
links:
|
|
45
|
+
part_of_step_navs:
|
|
46
|
+
- title: "Learn to drive a car: step by step"
|
|
47
|
+
base_path: "/micropigs-vs-micropugs"
|
|
@@ -157,3 +157,14 @@ examples:
|
|
|
157
157
|
- text: Arrange the funeral
|
|
158
158
|
href: "/after-a-death/arrange-the-funeral"
|
|
159
159
|
optional: false
|
|
160
|
+
with_ga4_tracking_on_part_of_step_by_step_heading(s):
|
|
161
|
+
description: Adds Google Analytics 4 tracking to the "Part of" step by step heading(s) in the sidebar. Currently only the Related Navigation component, Step by Step navigation component and Ukraine CTA accept this option.
|
|
162
|
+
data:
|
|
163
|
+
ga4_tracking: true
|
|
164
|
+
content_item:
|
|
165
|
+
links:
|
|
166
|
+
part_of_step_navs:
|
|
167
|
+
- title: "Choosing a micropig or micropug: step by step"
|
|
168
|
+
base_path: "/micropigs-vs-micropugs"
|
|
169
|
+
- title: "Walk your micropig: step by step"
|
|
170
|
+
base_path: "/porgs-step-by-step"
|
|
@@ -51,3 +51,9 @@ examples:
|
|
|
51
51
|
tracking_action: "customTrackingAction"
|
|
52
52
|
tracking_label: "customTrackingLabel"
|
|
53
53
|
tracking_dimension_enabled: false
|
|
54
|
+
with_ga4_tracking:
|
|
55
|
+
description: The ga4_tracking boolean allows you to add Google Analytics 4 (GA4) tracking to your component. Setting this to true will add the `ga4-link-tracker` module to your component. The JavaScript will then add a `data-ga4-link` attribute which contains a JSON object with data relevant to our tracking. See the [ga4-link-tracker docs](https://github.com/alphagov/govuk_publishing_components/blob/main/docs/analytics-ga4/ga4-link-tracker.md) for more information.
|
|
56
|
+
data:
|
|
57
|
+
ga4_tracking: true
|
|
58
|
+
title: 'Learn to drive a motorbike: step by step'
|
|
59
|
+
path: /learn-to-drive-a-motorbike
|
|
@@ -76,3 +76,13 @@ examples:
|
|
|
76
76
|
text: 'Learn to drive a motorbike: step by step'
|
|
77
77
|
}
|
|
78
78
|
]
|
|
79
|
+
with_ga4_tracking:
|
|
80
|
+
description: The ga4_tracking boolean allows you to add Google Analytics 4 (GA4) tracking to your component. Setting this to true will add the `ga4-link-tracker` module to your component. The JavaScript will then add a `data-ga4-link` attribute which contains a JSON object with data relevant to our tracking. See the [ga4-link-tracker docs](https://github.com/alphagov/govuk_publishing_components/blob/main/docs/analytics-ga4/ga4-link-tracker.md) for more information.
|
|
81
|
+
data:
|
|
82
|
+
ga4_tracking: true
|
|
83
|
+
links: [
|
|
84
|
+
{
|
|
85
|
+
href: '#',
|
|
86
|
+
text: 'With ga4 tracking'
|
|
87
|
+
}
|
|
88
|
+
]
|
|
@@ -3,10 +3,11 @@ module GovukPublishingComponents
|
|
|
3
3
|
class BreadcrumbSelector
|
|
4
4
|
attr_reader :content_item, :request, :prioritise_taxon_breadcrumbs
|
|
5
5
|
|
|
6
|
-
def initialize(content_item, request, prioritise_taxon_breadcrumbs)
|
|
6
|
+
def initialize(content_item, request, prioritise_taxon_breadcrumbs, ga4_tracking)
|
|
7
7
|
@content_item = content_item
|
|
8
8
|
@request = request
|
|
9
9
|
@prioritise_taxon_breadcrumbs = prioritise_taxon_breadcrumbs
|
|
10
|
+
@ga4_tracking = ga4_tracking
|
|
10
11
|
end
|
|
11
12
|
|
|
12
13
|
def breadcrumbs
|
|
@@ -37,7 +38,7 @@ module GovukPublishingComponents
|
|
|
37
38
|
elsif navigation.content_tagged_to_current_step_by_step?
|
|
38
39
|
{
|
|
39
40
|
step_by_step: true,
|
|
40
|
-
breadcrumbs: navigation.step_nav_helper.header,
|
|
41
|
+
breadcrumbs: navigation.step_nav_helper.header(@ga4_tracking),
|
|
41
42
|
}
|
|
42
43
|
elsif navigation.content_is_tagged_to_a_live_taxon? && prioritise_taxon_breadcrumbs
|
|
43
44
|
{
|
|
@@ -82,12 +82,13 @@ module GovukPublishingComponents
|
|
|
82
82
|
end
|
|
83
83
|
end
|
|
84
84
|
|
|
85
|
-
def header
|
|
85
|
+
def header(ga4_tracking)
|
|
86
86
|
if show_header?
|
|
87
87
|
{
|
|
88
88
|
title: current_step_nav.title,
|
|
89
89
|
path: current_step_nav.base_path,
|
|
90
90
|
tracking_id: current_step_nav.content_id,
|
|
91
|
+
ga4_tracking: ga4_tracking,
|
|
91
92
|
}
|
|
92
93
|
else
|
|
93
94
|
{}
|
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.14.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-
|
|
11
|
+
date: 2023-03-06 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: govuk_app_config
|