govuk_publishing_components 37.0.0 → 37.1.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/analytics-ga4/ga4-copy-tracker.js +55 -0
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-schemas.js +1 -1
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-video-tracker.js +1 -1
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4.js +1 -0
- data/app/assets/javascripts/govuk_publishing_components/components/option-select.js +1 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/_layout-header.scss +1 -0
- data/app/views/govuk_publishing_components/components/_feedback.html.erb +8 -4
- data/app/views/govuk_publishing_components/components/docs/feedback.yml +5 -0
- data/app/views/govuk_publishing_components/components/feedback/_problem_form.html.erb +12 -6
- data/app/views/govuk_publishing_components/components/feedback/_survey_signup_form.html.erb +12 -6
- data/app/views/govuk_publishing_components/components/feedback/_yes_no_banner.html.erb +58 -6
- 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: 43da95e575a63b626abef7368fbe99d286682778b3933f9b021768277b3a8d17
|
4
|
+
data.tar.gz: a2959e0efd156b0c5d5a70b61561725d55a4c67e58f0e60537970439af0088db
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 60593190a4219cf35788d97f6f491c9f36ad873772d2b3908bcb21c347fcadcd061e35c25225acaa89199f5cabb6f0769376847521738cc26ff23eb088febce5
|
7
|
+
data.tar.gz: 22a37d5ff61c2164ef441774aae4f9268a9a46b19e7d5dbc847b7e290af706ce038894cd70a992ffe525a17e61ad205476bdb1d4eedc5e486a9f006a38532183
|
@@ -0,0 +1,55 @@
|
|
1
|
+
window.GOVUK = window.GOVUK || {}
|
2
|
+
window.GOVUK.analyticsGa4 = window.GOVUK.analyticsGa4 || {}
|
3
|
+
window.GOVUK.analyticsGa4.analyticsModules = window.GOVUK.analyticsGa4.analyticsModules || {};
|
4
|
+
|
5
|
+
(function (analyticsModules) {
|
6
|
+
'use strict'
|
7
|
+
|
8
|
+
var Ga4CopyTracker = {
|
9
|
+
init: function () {
|
10
|
+
window.addEventListener('copy', this.trackCopy.bind(this))
|
11
|
+
},
|
12
|
+
|
13
|
+
trackCopy: function (event) {
|
14
|
+
try {
|
15
|
+
var text = this.getSelectedText()
|
16
|
+
if (!text) {
|
17
|
+
return // do nothing if no text has been selected
|
18
|
+
}
|
19
|
+
var target = event.target.tagName
|
20
|
+
if (target === 'INPUT' || target === 'TEXTAREA') {
|
21
|
+
return // do nothing if text is being copied from an input
|
22
|
+
}
|
23
|
+
|
24
|
+
var PIIRemover = new window.GOVUK.analyticsGa4.PIIRemover()
|
25
|
+
text = window.GOVUK.analyticsGa4.core.trackFunctions.removeLinesAndExtraSpaces(text)
|
26
|
+
text = PIIRemover.stripPIIWithOverride(text, true, true)
|
27
|
+
var length = text.length
|
28
|
+
text = text.substring(0, 30)
|
29
|
+
|
30
|
+
var data = {
|
31
|
+
event_name: 'copy',
|
32
|
+
type: 'copy',
|
33
|
+
action: 'copy',
|
34
|
+
method: 'browser copy',
|
35
|
+
text: text,
|
36
|
+
length: length
|
37
|
+
}
|
38
|
+
window.GOVUK.analyticsGa4.core.applySchemaAndSendData(data, 'event_data')
|
39
|
+
} catch (e) {
|
40
|
+
console.warn('GA4 copy tracker error: ' + e.message, window.location)
|
41
|
+
}
|
42
|
+
},
|
43
|
+
|
44
|
+
getSelectedText: function () {
|
45
|
+
if (window.getSelection) {
|
46
|
+
return window.getSelection().toString()
|
47
|
+
} else if (document.selection) {
|
48
|
+
return document.selection.createRange().text
|
49
|
+
}
|
50
|
+
return false
|
51
|
+
}
|
52
|
+
}
|
53
|
+
|
54
|
+
analyticsModules.Ga4CopyTracker = Ga4CopyTracker
|
55
|
+
})(window.GOVUK.analyticsGa4.analyticsModules)
|
@@ -78,7 +78,7 @@ window.GOVUK.analyticsGa4.analyticsModules = window.GOVUK.analyticsGa4.analytics
|
|
78
78
|
data.url = this.handlers['video-' + player.id + '-url']
|
79
79
|
data.text = this.handlers['video-' + player.id + '-title']
|
80
80
|
data.video_current_time = Math.round(player.getCurrentTime())
|
81
|
-
data.
|
81
|
+
data.length = this.handlers['video-' + player.id + '-duration']
|
82
82
|
data.video_percent = position
|
83
83
|
|
84
84
|
window.GOVUK.analyticsGa4.core.applySchemaAndSendData(data, 'event_data')
|
@@ -4,6 +4,7 @@
|
|
4
4
|
//= require ./analytics-ga4/pii-remover
|
5
5
|
//= require ./analytics-ga4/ga4-page-views
|
6
6
|
//= require ./analytics-ga4/ga4-print-intent-tracker
|
7
|
+
//= require ./analytics-ga4/ga4-copy-tracker
|
7
8
|
//= require ./analytics-ga4/ga4-specialist-link-tracker
|
8
9
|
//= require ./analytics-ga4/ga4-link-tracker
|
9
10
|
//= require ./analytics-ga4/ga4-event-tracker
|
@@ -172,7 +172,7 @@ window.GOVUK.Modules = window.GOVUK.Modules || {};
|
|
172
172
|
try {
|
173
173
|
buttonAttributes = JSON.parse(buttonAttributes)
|
174
174
|
for (var rawKey in buttonAttributes) {
|
175
|
-
var key = rawKey.replace(/_/
|
175
|
+
var key = rawKey.replace(/_/g, '-').toLowerCase()
|
176
176
|
var rawValue = buttonAttributes[rawKey]
|
177
177
|
var value = typeof rawValue === 'object' ? JSON.stringify(rawValue) : rawValue
|
178
178
|
button.setAttribute('data-' + key, value)
|
@@ -9,10 +9,14 @@
|
|
9
9
|
email_regex = /[^\s=\/?&]+(?:@|%40)[^\s=\/?&]+/
|
10
10
|
url_without_pii = utf_encode(request.original_url.gsub(email_regex, '[email]'))
|
11
11
|
path_without_pii = utf_encode(request.fullpath.gsub(email_regex, '[email]'))
|
12
|
+
|
13
|
+
disable_ga4 ||= false
|
14
|
+
data_module = "feedback"
|
15
|
+
data_module << " ga4-event-tracker" unless disable_ga4
|
12
16
|
%>
|
13
17
|
|
14
|
-
<div class="gem-c-feedback govuk-!-display-none-print" data-module="
|
15
|
-
<%= render "govuk_publishing_components/components/feedback/yes_no_banner" %>
|
16
|
-
<%= render "govuk_publishing_components/components/feedback/problem_form", url_without_pii: url_without_pii %>
|
17
|
-
<%= render "govuk_publishing_components/components/feedback/survey_signup_form", path_without_pii: path_without_pii %>
|
18
|
+
<div class="gem-c-feedback govuk-!-display-none-print" data-module="<%= data_module %>">
|
19
|
+
<%= render "govuk_publishing_components/components/feedback/yes_no_banner", disable_ga4: %>
|
20
|
+
<%= render "govuk_publishing_components/components/feedback/problem_form", url_without_pii: url_without_pii, disable_ga4: %>
|
21
|
+
<%= render "govuk_publishing_components/components/feedback/survey_signup_form", path_without_pii: path_without_pii, disable_ga4: %>
|
18
22
|
</div>
|
@@ -25,3 +25,8 @@ shared_accessibility_criteria:
|
|
25
25
|
examples:
|
26
26
|
default:
|
27
27
|
data: {}
|
28
|
+
with_ga4_tracking_disabled:
|
29
|
+
description: |
|
30
|
+
Disables GA4 tracking on the feedback component. Tracking is enabled by default, which adds a data module and data-attributes with JSONs to the feedback buttons. See the [ga4-event-tracker documentation](https://github.com/alphagov/govuk_publishing_components/blob/main/docs/analytics-ga4/ga4-event-tracker.md) for more information.
|
31
|
+
data:
|
32
|
+
disable_ga4: true
|
@@ -38,15 +38,21 @@
|
|
38
38
|
rows: 3
|
39
39
|
} %>
|
40
40
|
|
41
|
+
<%
|
42
|
+
unless disable_ga4
|
43
|
+
ga4_submit_button_event = {
|
44
|
+
event_name: "form_submit",
|
45
|
+
type: "feedback",
|
46
|
+
text: t("components.feedback.send", locale: :en),
|
47
|
+
section: t("components.feedback.help_us_improve_govuk", locale: :en),
|
48
|
+
}.to_json
|
49
|
+
end
|
50
|
+
%>
|
51
|
+
|
41
52
|
<%= render "govuk_publishing_components/components/button", {
|
42
53
|
text: t("components.feedback.send"),
|
43
54
|
data_attributes: {
|
44
|
-
ga4_event:
|
45
|
-
event_name: "form_submit",
|
46
|
-
type: "feedback",
|
47
|
-
text: "Send",
|
48
|
-
section: "Help us improve GOV.UK",
|
49
|
-
}
|
55
|
+
ga4_event: ga4_submit_button_event
|
50
56
|
}
|
51
57
|
} %>
|
52
58
|
|
@@ -25,15 +25,21 @@
|
|
25
25
|
describedby: "survey_explanation"
|
26
26
|
} %>
|
27
27
|
|
28
|
+
<%
|
29
|
+
unless disable_ga4
|
30
|
+
ga4_send_button_event = {
|
31
|
+
event_name: "form_submit",
|
32
|
+
type: "feedback",
|
33
|
+
text: t("components.feedback.send_me_survey", locale: :en),
|
34
|
+
section: t("components.feedback.help_us_improve_govuk", locale: :en),
|
35
|
+
}.to_json
|
36
|
+
end
|
37
|
+
%>
|
38
|
+
|
28
39
|
<%= render "govuk_publishing_components/components/button", {
|
29
40
|
text: t("components.feedback.send_me_survey"),
|
30
41
|
data_attributes: {
|
31
|
-
ga4_event:
|
32
|
-
event_name: "form_submit",
|
33
|
-
type: "feedback",
|
34
|
-
text: "Send me the survey",
|
35
|
-
section: "Help us improve GOV.UK",
|
36
|
-
}
|
42
|
+
ga4_event: ga4_send_button_event
|
37
43
|
}
|
38
44
|
} %>
|
39
45
|
|
@@ -1,3 +1,28 @@
|
|
1
|
+
<%
|
2
|
+
unless disable_ga4
|
3
|
+
ga4_yes_button_event = {
|
4
|
+
"event_name": "form_submit",
|
5
|
+
"type": "feedback",
|
6
|
+
"text": t("components.feedback.yes", locale: :en),
|
7
|
+
"section": t("components.feedback.is_this_page_useful", locale: :en),
|
8
|
+
}.to_json
|
9
|
+
|
10
|
+
ga4_no_button_event = {
|
11
|
+
"event_name": "form_submit",
|
12
|
+
"type": "feedback",
|
13
|
+
"text": t("components.feedback.no", locale: :en),
|
14
|
+
"section": t("components.feedback.is_this_page_useful", locale: :en)
|
15
|
+
}.to_json
|
16
|
+
|
17
|
+
ga4_problem_button_event = {
|
18
|
+
"event_name": "form_submit",
|
19
|
+
"type": "feedback",
|
20
|
+
"text": t("components.feedback.something_wrong", locale: :en),
|
21
|
+
"section": t("components.feedback.is_this_page_useful", locale: :en)
|
22
|
+
}.to_json
|
23
|
+
end
|
24
|
+
%>
|
25
|
+
|
1
26
|
<div class="gem-c-feedback__prompt gem-c-feedback__js-show js-prompt" tabindex="-1">
|
2
27
|
<div class="gem-c-feedback__prompt-content">
|
3
28
|
<div class="gem-c-feedback__prompt-questions js-prompt-questions" hidden>
|
@@ -20,14 +45,31 @@
|
|
20
45
|
<% end %>
|
21
46
|
</li>
|
22
47
|
<li class="gem-c-feedback__option-list-item">
|
23
|
-
|
48
|
+
<%= tag.button(
|
49
|
+
class: "govuk-button gem-c-feedback__prompt-link js-page-is-useful",
|
50
|
+
data: {
|
51
|
+
track_category: "yesNoFeedbackForm",
|
52
|
+
track_action: "ffYesClick",
|
53
|
+
ga4_event: ga4_yes_button_event,
|
54
|
+
}) do %>
|
24
55
|
<%= t("components.feedback.yes") %> <span class="govuk-visually-hidden"><%= t("components.feedback.is_useful") %></span>
|
25
|
-
|
56
|
+
<% end %>
|
26
57
|
</li>
|
27
58
|
<li class="gem-c-feedback__option-list-item">
|
28
|
-
|
59
|
+
|
60
|
+
<%= tag.button(
|
61
|
+
class: "govuk-button gem-c-feedback__prompt-link js-toggle-form js-page-is-not-useful",
|
62
|
+
aria: {
|
63
|
+
controls: "page-is-not-useful",
|
64
|
+
expanded: "false",
|
65
|
+
},
|
66
|
+
data: {
|
67
|
+
track_category: "yesNoFeedbackForm",
|
68
|
+
track_action: "ffNoClick",
|
69
|
+
ga4_event: ga4_no_button_event,
|
70
|
+
}) do %>
|
29
71
|
<%= t("components.feedback.no") %> <span class="govuk-visually-hidden"><%= t("components.feedback.is_not_useful") %></span>
|
30
|
-
|
72
|
+
<% end %>
|
31
73
|
</li>
|
32
74
|
</ul>
|
33
75
|
</div>
|
@@ -38,9 +80,19 @@
|
|
38
80
|
</div>
|
39
81
|
|
40
82
|
<div class="gem-c-feedback__prompt-questions gem-c-feedback__prompt-questions--something-is-wrong js-prompt-questions" hidden>
|
41
|
-
|
83
|
+
<%= tag.button(
|
84
|
+
class: "govuk-button gem-c-feedback__prompt-link js-toggle-form js-something-is-wrong",
|
85
|
+
aria: {
|
86
|
+
expanded: "false",
|
87
|
+
controls: "something-is-wrong"
|
88
|
+
},
|
89
|
+
data: {
|
90
|
+
track_category: "Onsite Feedback",
|
91
|
+
track_action: "GOV-UK Open Form",
|
92
|
+
ga4_event: ga4_problem_button_event,
|
93
|
+
}) do %>
|
42
94
|
<%= t("components.feedback.something_wrong") %>
|
43
|
-
|
95
|
+
<% end %>
|
44
96
|
</div>
|
45
97
|
</div>
|
46
98
|
</div>
|
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: 37.
|
4
|
+
version: 37.1.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-12-
|
11
|
+
date: 2023-12-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: govuk_app_config
|
@@ -452,6 +452,7 @@ files:
|
|
452
452
|
- app/assets/javascripts/govuk_publishing_components/all_components.js
|
453
453
|
- app/assets/javascripts/govuk_publishing_components/analytics-ga4.js
|
454
454
|
- app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-auto-tracker.js
|
455
|
+
- app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-copy-tracker.js
|
455
456
|
- app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-core.js
|
456
457
|
- app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-ecommerce-tracker.js
|
457
458
|
- app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-event-tracker.js
|