govuk_publishing_components 31.1.2 → 32.0.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/images/govuk_publishing_components/action-link-arrow--blue.svg +8 -2
- data/app/assets/javascripts/govuk_publishing_components/analytics/track-click.js +1 -1
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-ecommerce-tracker.js +10 -5
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-event-tracker.js +2 -2
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-page-views.js +10 -3
- data/app/assets/stylesheets/govuk_publishing_components/components/_feedback.scss +81 -73
- data/app/views/govuk_publishing_components/components/_layout_super_navigation_header.html.erb +25 -1
- data/app/views/govuk_publishing_components/components/feedback/_problem_form.html.erb +20 -11
- data/app/views/govuk_publishing_components/components/feedback/_survey_signup_form.html.erb +20 -10
- data/app/views/govuk_publishing_components/components/feedback/_yes_no_banner.html.erb +44 -39
- data/config/locales/en.yml +1 -1
- data/lib/govuk_publishing_components/version.rb +1 -1
- data/node_modules/axe-core/README.md +7 -6
- data/node_modules/axe-core/axe.d.ts +1 -0
- data/node_modules/axe-core/axe.js +8911 -7204
- data/node_modules/axe-core/axe.min.js +2 -2
- data/node_modules/axe-core/locales/_template.json +1067 -0
- data/node_modules/axe-core/locales/fr.json +1 -1
- data/node_modules/axe-core/locales/he.json +1015 -0
- data/node_modules/axe-core/locales/no_NB.json +797 -0
- data/node_modules/axe-core/package.json +57 -59
- data/node_modules/axe-core/sri-history.json +4 -0
- metadata +5 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 40c8f5cd0a641b265004d0db4aa4dad79cc1f251bc6510655d69bc7fa954614f
|
|
4
|
+
data.tar.gz: 80b737085d4e49d8a2d5558472f918ed7632db5932d32c9945ad82d936c3a2d0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c18a6aee8070978fd4f72f29eb7d916d8899a261c3bac0fac075703a18d5c7e7b1854fc56dc3d9ee4bfae10e1c5725aa4693f0488edac5429bb5f9b6ceed3e33
|
|
7
|
+
data.tar.gz: 2903283d75f095a49ebd6940cb003bc6653bf3e2e96cd990f311b3b113b1925bf042b9bc689a0f01d1f951973aee8f58fd00945e771507477e1ec69fa29eca1b
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
-
<svg width="
|
|
2
|
-
<
|
|
1
|
+
<svg width="39" height="39" viewBox="0 0 39 39" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<circle cx="19.5" cy="19.5" r="19.5" fill="#366FB3" mask="url(#mask)"/>
|
|
3
|
+
|
|
4
|
+
<mask id="mask">
|
|
5
|
+
<rect width="100%" height="100%" fill="white"/>
|
|
6
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M24.0343 20L14.1812 10.1469L17.0096 7.31848L29.6912 20L17.0096 32.6815L14.1812 29.8531L24.0343 20Z" fill="black"/>
|
|
7
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M0.000423781 18L25.1328 18L25.1328 22L0.000423431 22L0.000423781 18Z" fill="black"/>
|
|
8
|
+
</mask>
|
|
3
9
|
</svg>
|
|
@@ -19,7 +19,7 @@ window.GOVUK.Modules = window.GOVUK.Modules || {};
|
|
|
19
19
|
var target = e.target
|
|
20
20
|
if (!trackLinksOnly) {
|
|
21
21
|
that.$module.handleClick(target)
|
|
22
|
-
} else if (trackLinksOnly && target.
|
|
22
|
+
} else if (trackLinksOnly && target.closest('a')) {
|
|
23
23
|
if (!limitToElementClass) {
|
|
24
24
|
that.$module.handleClick(target)
|
|
25
25
|
} else if (limitToElementClass && target.closest('.' + limitToElementClass)) {
|
data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-ecommerce-tracker.js
CHANGED
|
@@ -9,12 +9,17 @@
|
|
|
9
9
|
PIIRemover: new GOVUK.analyticsGa4.PIIRemover(),
|
|
10
10
|
DEFAULT_LIST_TITLE: 'Site search results',
|
|
11
11
|
|
|
12
|
-
init: function (
|
|
12
|
+
init: function (referrer) {
|
|
13
13
|
if (window.dataLayer) {
|
|
14
|
+
/* The referrer parameter is only passed to the init() function as a result of an AJAX request
|
|
15
|
+
(in live_search.js in the finder-frontend repository). Otherwise it will not be available and this indicates a fresh page load.
|
|
16
|
+
This is needed to trigger a fresh pageViewTracker push to the dataLayer on dynamic page updates and to prevent multiple
|
|
17
|
+
click listeners from being applied on this.searchResultsBlocks elements. */
|
|
18
|
+
var isNewPageLoad = !referrer
|
|
19
|
+
|
|
14
20
|
/* The data-ga4-ecommerce attribute may be present on several DOM elements e.g. search results and spelling
|
|
15
21
|
suggestions, hence why document.querySelectorAll is required */
|
|
16
22
|
this.searchResultsBlocks = document.querySelectorAll('[data-ga4-ecommerce]')
|
|
17
|
-
this.isNewPageLoad = isNewPageLoad
|
|
18
23
|
|
|
19
24
|
if (!this.searchResultsBlocks.length === 0) {
|
|
20
25
|
return
|
|
@@ -23,18 +28,18 @@
|
|
|
23
28
|
/* If the results are updated by JS, the URL of the page will change and this needs to be visible to PA's,
|
|
24
29
|
hence the pageView object push to the dataLayer. We do not need to send a pageView object on page load as
|
|
25
30
|
this is handled elsewhere. */
|
|
26
|
-
if (
|
|
31
|
+
if (referrer) {
|
|
27
32
|
var pageViewTracker = window.GOVUK.analyticsGa4.analyticsModules.PageViewTracker
|
|
28
33
|
|
|
29
34
|
if (pageViewTracker) {
|
|
30
|
-
pageViewTracker.init()
|
|
35
|
+
pageViewTracker.init(referrer)
|
|
31
36
|
}
|
|
32
37
|
}
|
|
33
38
|
|
|
34
39
|
for (var i = 0; i < this.searchResultsBlocks.length; i++) {
|
|
35
40
|
this.trackSearchResults(this.searchResultsBlocks[i])
|
|
36
41
|
|
|
37
|
-
if (
|
|
42
|
+
if (isNewPageLoad) {
|
|
38
43
|
this.searchResultsBlocks[i].addEventListener('click', this.handleClick.bind(this))
|
|
39
44
|
}
|
|
40
45
|
}
|
|
@@ -51,8 +51,8 @@ window.GOVUK.Modules = window.GOVUK.Modules || {};
|
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
|
|
55
|
-
if (target.closest('.gem-c-accordion')) {
|
|
54
|
+
/* Ensure it only tracks aria-expanded in an accordion or element with data-ga4-expandable on it. */
|
|
55
|
+
if (target.closest('.gem-c-accordion') || target.closest('[data-ga4-expandable]')) {
|
|
56
56
|
var ariaExpanded = this.getClosestAttribute(target, 'aria-expanded')
|
|
57
57
|
}
|
|
58
58
|
|
|
@@ -9,13 +9,15 @@ window.GOVUK.analyticsGa4.analyticsModules = window.GOVUK.analyticsGa4.analytics
|
|
|
9
9
|
PIIRemover: new window.GOVUK.analyticsGa4.PIIRemover(), // imported in analytics-ga4.js
|
|
10
10
|
nullValue: undefined,
|
|
11
11
|
|
|
12
|
-
init: function () {
|
|
12
|
+
init: function (referrer) {
|
|
13
13
|
if (window.dataLayer) {
|
|
14
14
|
var data = {
|
|
15
15
|
event: 'page_view',
|
|
16
16
|
page_view: {
|
|
17
17
|
location: this.getLocation(),
|
|
18
|
-
|
|
18
|
+
/* If the init() function receives a referrer parameter, this indicates that it has been called as a part of an AJAX request and
|
|
19
|
+
this.getReferrer() will not return the correct value. Therefore we need to rely on the referrer parameter. */
|
|
20
|
+
referrer: referrer || this.getReferrer(),
|
|
19
21
|
title: this.getTitle(),
|
|
20
22
|
status_code: this.getStatusCode(),
|
|
21
23
|
|
|
@@ -42,7 +44,12 @@ window.GOVUK.analyticsGa4.analyticsModules = window.GOVUK.analyticsGa4.analytics
|
|
|
42
44
|
political_status: this.getMetaContent('political-status'),
|
|
43
45
|
primary_publishing_organisation: this.getMetaContent('primary-publishing-organisation'),
|
|
44
46
|
organisations: this.getMetaContent('analytics:organisations'),
|
|
45
|
-
world_locations: this.getMetaContent('analytics:world-locations')
|
|
47
|
+
world_locations: this.getMetaContent('analytics:world-locations'),
|
|
48
|
+
|
|
49
|
+
/* The existence of a referrer parameter indicates that the page has been dynamically updated via an AJAX request
|
|
50
|
+
and therefore we can use it to set the dynamic property appropriately. This value is used by PA's to differentiate
|
|
51
|
+
between fresh page loads and dynamic page updates. */
|
|
52
|
+
dynamic: referrer ? 'true' : 'false'
|
|
46
53
|
}
|
|
47
54
|
}
|
|
48
55
|
window.GOVUK.analyticsGa4.core.sendData(data)
|
|
@@ -2,11 +2,20 @@
|
|
|
2
2
|
background: govuk-colour("white");
|
|
3
3
|
margin-top: govuk-spacing(6);
|
|
4
4
|
|
|
5
|
-
@include govuk-media-query($from:
|
|
5
|
+
@include govuk-media-query($from: desktop) {
|
|
6
6
|
margin-top: govuk-spacing(9);
|
|
7
|
-
border-bottom: 1px solid govuk-colour("white");
|
|
8
7
|
}
|
|
9
8
|
|
|
9
|
+
// New design has the box flush with edges of smaller screens
|
|
10
|
+
// We need to compensate for `govuk-width-container` margins:
|
|
11
|
+
@include govuk-media-query($until: tablet) {
|
|
12
|
+
margin-right: govuk-spacing(-3);
|
|
13
|
+
margin-left: govuk-spacing(-3);
|
|
14
|
+
}
|
|
15
|
+
@include govuk-media-query($from: tablet, $until: desktop) {
|
|
16
|
+
margin-right: govuk-spacing(-6);
|
|
17
|
+
margin-left: govuk-spacing(-6);
|
|
18
|
+
}
|
|
10
19
|
// Scoped to the feedback component temporarily
|
|
11
20
|
[hidden] {
|
|
12
21
|
// stylelint-disable-next-line declaration-no-important
|
|
@@ -14,92 +23,88 @@
|
|
|
14
23
|
}
|
|
15
24
|
}
|
|
16
25
|
|
|
17
|
-
.gem-c-feedback__prompt
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
26
|
+
.gem-c-feedback__prompt {
|
|
27
|
+
background-color: govuk-colour("light-grey");
|
|
28
|
+
color: govuk-colour("black");
|
|
29
|
+
border-top: 1px solid $govuk-border-colour;
|
|
30
|
+
outline: 0;
|
|
31
|
+
}
|
|
22
32
|
|
|
33
|
+
.gem-c-feedback__prompt-content {
|
|
34
|
+
display: flex;
|
|
35
|
+
flex-direction: column;
|
|
36
|
+
padding: 0 govuk-spacing(3);
|
|
23
37
|
@include govuk-media-query($from: tablet) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
border-bottom: 0;
|
|
38
|
+
flex-direction: row;
|
|
39
|
+
align-items: center;
|
|
40
|
+
justify-content: space-between;
|
|
28
41
|
}
|
|
29
42
|
}
|
|
30
43
|
|
|
31
|
-
.gem-c-feedback__prompt-questions
|
|
32
|
-
text-align:
|
|
33
|
-
|
|
44
|
+
.gem-c-feedback__prompt-questions {
|
|
45
|
+
text-align: left;
|
|
46
|
+
padding: govuk-spacing(4) 0;
|
|
34
47
|
@include govuk-media-query($from: tablet) {
|
|
35
|
-
|
|
36
|
-
vertical-align: bottom;
|
|
37
|
-
float: none;
|
|
48
|
+
margin: 0 govuk-spacing(3);
|
|
38
49
|
}
|
|
39
50
|
}
|
|
40
51
|
|
|
41
|
-
.gem-c-feedback__prompt {
|
|
42
|
-
|
|
43
|
-
background-color: govuk-colour("blue");
|
|
44
|
-
color: govuk-colour("white");
|
|
45
|
-
outline: 0;
|
|
46
|
-
|
|
52
|
+
.gem-c-feedback__prompt-questions--something-is-wrong {
|
|
53
|
+
border-top: 1px solid $govuk-border-colour;
|
|
47
54
|
@include govuk-media-query($from: tablet) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
55
|
+
border: 0;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.gem-c-feedback__prompt-question-answer {
|
|
60
|
+
display: flex;
|
|
61
|
+
align-items: center;
|
|
62
|
+
@include govuk-media-query($until: mobile) {
|
|
63
|
+
justify-content: center;
|
|
64
|
+
flex-wrap: wrap;
|
|
51
65
|
}
|
|
52
66
|
}
|
|
53
67
|
|
|
54
68
|
.gem-c-feedback__prompt-question,
|
|
55
69
|
.gem-c-feedback__prompt-success {
|
|
56
70
|
@include govuk-font(19, $weight: bold);
|
|
57
|
-
|
|
58
71
|
@include govuk-media-query($from: tablet) {
|
|
59
72
|
@include govuk-font(16, $weight: bold);
|
|
60
73
|
}
|
|
61
74
|
}
|
|
62
75
|
|
|
63
76
|
.gem-c-feedback__prompt-question {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
margin: govuk-spacing(2) govuk-spacing(4);
|
|
77
|
+
margin: 0;
|
|
78
|
+
padding-bottom: govuk-spacing(2);
|
|
67
79
|
|
|
68
80
|
&:focus {
|
|
69
81
|
outline: 0;
|
|
70
82
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
margin-
|
|
74
|
-
margin-top: 0;
|
|
75
|
-
display: block;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// This custom media-query is to account for some awkward positioning where the yes and no buttons are too big to sit inline with the prompt question
|
|
79
|
-
@include govuk-media-query($from: 950px) {
|
|
80
|
-
display: inline-block;
|
|
81
|
-
margin-top: govuk-spacing(2);
|
|
83
|
+
@include govuk-media-query($from: mobile) {
|
|
84
|
+
padding-bottom: 0;
|
|
85
|
+
margin-right: govuk-spacing(2);
|
|
82
86
|
}
|
|
83
87
|
}
|
|
84
88
|
|
|
85
89
|
.gem-c-feedback__prompt-link {
|
|
86
90
|
@include govuk-font(19);
|
|
87
91
|
background: transparent;
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
92
|
+
color: govuk-colour("black");
|
|
93
|
+
box-shadow: 0 3px 0 govuk-colour("black");
|
|
94
|
+
border: 1px govuk-colour("black") solid;
|
|
95
|
+
margin-bottom: 0;
|
|
96
|
+
width: 100%;
|
|
91
97
|
|
|
92
98
|
&:hover {
|
|
93
99
|
// backup style for browsers that don't support rgba
|
|
94
|
-
background: govuk-colour("
|
|
100
|
+
background: govuk-colour("mid-grey");
|
|
95
101
|
background: rgba(govuk-colour("black"), .2);
|
|
102
|
+
color: govuk-colour("black");
|
|
96
103
|
}
|
|
97
104
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
margin-bottom: 0;
|
|
105
|
+
&:active:focus:not(:hover) {
|
|
106
|
+
background: govuk-colour("yellow");
|
|
101
107
|
}
|
|
102
|
-
|
|
103
108
|
@include govuk-media-query($from: tablet) {
|
|
104
109
|
@include govuk-font(16);
|
|
105
110
|
}
|
|
@@ -108,42 +113,44 @@
|
|
|
108
113
|
.gem-c-feedback__email-link,
|
|
109
114
|
.gem-c-feedback__prompt-link {
|
|
110
115
|
position: relative;
|
|
116
|
+
|
|
117
|
+
&:focus:not(:active):not(:hover) {
|
|
118
|
+
border-color: govuk-colour("black");
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
&:focus,
|
|
122
|
+
&:active {
|
|
123
|
+
color: $govuk-focus-text-colour;
|
|
124
|
+
}
|
|
111
125
|
}
|
|
112
126
|
|
|
113
127
|
.gem-c-feedback__prompt-link:link,
|
|
114
128
|
.gem-c-feedback__prompt-link:visited {
|
|
115
|
-
color: govuk-colour("
|
|
129
|
+
color: govuk-colour("black");
|
|
116
130
|
|
|
117
|
-
&:focus
|
|
131
|
+
&:focus,
|
|
132
|
+
&:active {
|
|
118
133
|
color: $govuk-focus-text-colour;
|
|
119
134
|
}
|
|
120
135
|
}
|
|
121
136
|
|
|
122
137
|
.gem-c-feedback__option-list {
|
|
138
|
+
display: flex;
|
|
123
139
|
list-style-type: none;
|
|
124
140
|
margin: 0;
|
|
125
141
|
padding: 0;
|
|
126
|
-
margin-top: govuk-spacing(2);
|
|
127
|
-
|
|
128
|
-
@include govuk-media-query($from: mobile) {
|
|
129
|
-
display: inline-block;
|
|
130
|
-
margin-right: govuk-spacing(2);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
@include govuk-media-query($from: tablet) {
|
|
134
|
-
margin-top: 0;
|
|
135
|
-
}
|
|
136
142
|
}
|
|
137
143
|
|
|
138
144
|
.gem-c-feedback__option-list-item {
|
|
139
|
-
|
|
140
|
-
|
|
145
|
+
&:last-child {
|
|
146
|
+
margin-left: govuk-spacing(2);
|
|
141
147
|
}
|
|
142
148
|
}
|
|
143
149
|
|
|
144
|
-
.gem-c-feedback__option-list-item
|
|
145
|
-
|
|
146
|
-
|
|
150
|
+
.gem-c-feedback__option-list-item .gem-c-feedback__prompt-link {
|
|
151
|
+
min-width: 100px;
|
|
152
|
+
@include govuk-media-query($until: desktop) {
|
|
153
|
+
min-width: 80px;
|
|
147
154
|
}
|
|
148
155
|
}
|
|
149
156
|
|
|
@@ -158,7 +165,7 @@
|
|
|
158
165
|
outline: solid 3px $govuk-focus-colour;
|
|
159
166
|
}
|
|
160
167
|
|
|
161
|
-
@include govuk-media-query($from:
|
|
168
|
+
@include govuk-media-query($from: desktop) {
|
|
162
169
|
border-width: $govuk-border-width;
|
|
163
170
|
}
|
|
164
171
|
|
|
@@ -190,11 +197,11 @@
|
|
|
190
197
|
}
|
|
191
198
|
|
|
192
199
|
.gem-c-feedback__form {
|
|
193
|
-
padding: govuk-spacing(3)
|
|
194
|
-
border-top:
|
|
200
|
+
padding: govuk-spacing(3);
|
|
201
|
+
border-top: 1px solid $govuk-border-colour;
|
|
195
202
|
|
|
196
203
|
@include govuk-media-query($from: tablet) {
|
|
197
|
-
padding: govuk-spacing(6)
|
|
204
|
+
padding: govuk-spacing(6);
|
|
198
205
|
}
|
|
199
206
|
}
|
|
200
207
|
|
|
@@ -217,8 +224,10 @@
|
|
|
217
224
|
}
|
|
218
225
|
|
|
219
226
|
.gem-c-feedback__close {
|
|
220
|
-
|
|
221
|
-
|
|
227
|
+
margin: 0 govuk-spacing(2);
|
|
228
|
+
@include govuk-media-query($until: tablet) {
|
|
229
|
+
margin: govuk-spacing(4) 0 0;
|
|
230
|
+
}
|
|
222
231
|
}
|
|
223
232
|
|
|
224
233
|
.gem-c-feedback__email-link {
|
|
@@ -228,7 +237,6 @@
|
|
|
228
237
|
@include govuk-media-query($from: desktop) {
|
|
229
238
|
display: inline-block;
|
|
230
239
|
margin-top: govuk-spacing(2);
|
|
231
|
-
margin-left: govuk-spacing(3);
|
|
232
240
|
}
|
|
233
241
|
}
|
|
234
242
|
|
data/app/views/govuk_publishing_components/components/_layout_super_navigation_header.html.erb
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
hide_navigation_menu_text = t("components.layout_super_navigation_header.menu_toggle_label.hide", :label => "navigation")
|
|
16
16
|
show_navigation_menu_text = t("components.layout_super_navigation_header.menu_toggle_label.show", :label => "navigation")
|
|
17
17
|
%>
|
|
18
|
-
<header role="banner" class="gem-c-layout-super-navigation-header" data-module="gem-track-click" data-track-links-only>
|
|
18
|
+
<header role="banner" class="gem-c-layout-super-navigation-header" data-module="gem-track-click ga4-event-tracker" data-track-links-only data-ga4-expandable>
|
|
19
19
|
<div class="gem-c-layout-super-navigation-header__container govuk-width-container govuk-clearfix">
|
|
20
20
|
<div class="gem-c-layout-super-navigation-header__header-logo">
|
|
21
21
|
<a
|
|
@@ -78,6 +78,14 @@
|
|
|
78
78
|
hidden
|
|
79
79
|
id="super-navigation-menu-toggle"
|
|
80
80
|
type="button"
|
|
81
|
+
data-ga4="<%= {
|
|
82
|
+
"event_name": "select_content",
|
|
83
|
+
"type": "header menu bar",
|
|
84
|
+
"text": "Menu",
|
|
85
|
+
"index": 1,
|
|
86
|
+
"index_total": navigation_links.length + 2,
|
|
87
|
+
"section": "Menu"
|
|
88
|
+
}.to_json %>"
|
|
81
89
|
>
|
|
82
90
|
<span class="gem-c-layout-super-navigation-header__navigation-top-toggle-button-inner">
|
|
83
91
|
Menu
|
|
@@ -124,6 +132,14 @@
|
|
|
124
132
|
toggle_desktop_group: "top",
|
|
125
133
|
toggle_mobile_group: "second",
|
|
126
134
|
tracking_key: tracking_label,
|
|
135
|
+
ga4: {
|
|
136
|
+
event_name: "select_content",
|
|
137
|
+
type: "header menu bar",
|
|
138
|
+
text: link[:label],
|
|
139
|
+
index: index + 2,
|
|
140
|
+
index_total: navigation_links.length + 2,
|
|
141
|
+
section: link[:label]
|
|
142
|
+
}
|
|
127
143
|
},
|
|
128
144
|
hidden: true,
|
|
129
145
|
id: "super-navigation-menu__section-#{unique_id}-toggle",
|
|
@@ -217,6 +233,14 @@
|
|
|
217
233
|
hidden
|
|
218
234
|
id="super-search-menu-toggle"
|
|
219
235
|
type="button"
|
|
236
|
+
data-ga4="<%= {
|
|
237
|
+
"event_name": "select_content",
|
|
238
|
+
"type": "header menu bar",
|
|
239
|
+
"text": "Search",
|
|
240
|
+
"index": navigation_links.length + 2,
|
|
241
|
+
"index_total": navigation_links.length + 2,
|
|
242
|
+
"section": "Search"
|
|
243
|
+
}.to_json %>"
|
|
220
244
|
>
|
|
221
245
|
<span class="govuk-visually-hidden">
|
|
222
246
|
<%= search_text %>
|
|
@@ -5,14 +5,6 @@
|
|
|
5
5
|
data-track-action="GOV.UK Send Form"
|
|
6
6
|
method="post"
|
|
7
7
|
hidden>
|
|
8
|
-
<button
|
|
9
|
-
class="govuk-button govuk-button--secondary gem-c-feedback__close gem-c-feedback__js-show js-close-form"
|
|
10
|
-
data-track-category="Onsite Feedback"
|
|
11
|
-
data-track-action="GOV.UK Close Form"
|
|
12
|
-
aria-controls="something-is-wrong"
|
|
13
|
-
aria-expanded="true">
|
|
14
|
-
<%= t("components.feedback.close") %>
|
|
15
|
-
</button>
|
|
16
8
|
|
|
17
9
|
<div class="govuk-grid-row">
|
|
18
10
|
<div class="govuk-grid-column-two-thirds">
|
|
@@ -47,15 +39,32 @@
|
|
|
47
39
|
} %>
|
|
48
40
|
|
|
49
41
|
<%= render "govuk_publishing_components/components/button", {
|
|
50
|
-
text: t("components.feedback.send")
|
|
42
|
+
text: t("components.feedback.send"),
|
|
43
|
+
data_attributes: {
|
|
44
|
+
ga4: {
|
|
45
|
+
event_name: "form_submit",
|
|
46
|
+
type: "feedback",
|
|
47
|
+
text: "Send",
|
|
48
|
+
section: "Help us improve GOV.UK",
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
51
|
} %>
|
|
52
|
+
|
|
53
|
+
<button
|
|
54
|
+
class="govuk-button govuk-button--secondary gem-c-feedback__close gem-c-feedback__js-show js-close-form"
|
|
55
|
+
data-track-category="Onsite Feedback"
|
|
56
|
+
data-track-action="GOV.UK Close Form"
|
|
57
|
+
aria-controls="something-is-wrong"
|
|
58
|
+
aria-expanded="true">
|
|
59
|
+
<%= t("components.feedback.close") %>
|
|
60
|
+
</button>
|
|
52
61
|
</div>
|
|
53
62
|
</div>
|
|
54
63
|
</form>
|
|
55
64
|
|
|
56
65
|
<%
|
|
57
|
-
# I've added the following script inline in case of a scenario where a bot is able to parse the page,
|
|
58
|
-
# without downloading any of the external scripts.
|
|
66
|
+
# I've added the following script inline in case of a scenario where a bot is able to parse the page,
|
|
67
|
+
# without downloading any of the external scripts.
|
|
59
68
|
# This seems to be a more reliable way to make sure the script is executed.
|
|
60
69
|
%>
|
|
61
70
|
|
|
@@ -4,15 +4,6 @@
|
|
|
4
4
|
data-track-category="yesNoFeedbackForm"
|
|
5
5
|
data-track-action="Send Form"
|
|
6
6
|
method="post">
|
|
7
|
-
<button
|
|
8
|
-
class="govuk-button govuk-button--secondary gem-c-feedback__close js-close-form"
|
|
9
|
-
data-track-category="yesNoFeedbackForm"
|
|
10
|
-
data-track-action="ffFormClose"
|
|
11
|
-
aria-controls="page-is-not-useful"
|
|
12
|
-
aria-expanded="true"
|
|
13
|
-
hidden>
|
|
14
|
-
<%= t("components.feedback.close") %>
|
|
15
|
-
</button>
|
|
16
7
|
|
|
17
8
|
<div class="govuk-grid-row">
|
|
18
9
|
<div class="govuk-grid-column-two-thirds" id="survey-wrapper">
|
|
@@ -34,9 +25,28 @@
|
|
|
34
25
|
describedby: "survey_explanation"
|
|
35
26
|
} %>
|
|
36
27
|
|
|
37
|
-
|
|
28
|
+
<%= render "govuk_publishing_components/components/button", {
|
|
38
29
|
text: t("components.feedback.send_me_survey"),
|
|
30
|
+
data_attributes: {
|
|
31
|
+
ga4: {
|
|
32
|
+
event_name: "form_submit",
|
|
33
|
+
type: "feedback",
|
|
34
|
+
text: "Send me the survey",
|
|
35
|
+
section: "Help us improve GOV.UK",
|
|
36
|
+
}
|
|
37
|
+
}
|
|
39
38
|
} %>
|
|
39
|
+
|
|
40
|
+
<button
|
|
41
|
+
class="govuk-button govuk-button--secondary gem-c-feedback__close js-close-form"
|
|
42
|
+
data-track-category="yesNoFeedbackForm"
|
|
43
|
+
data-track-action="ffFormClose"
|
|
44
|
+
aria-controls="page-is-not-useful"
|
|
45
|
+
aria-expanded="true"
|
|
46
|
+
hidden>
|
|
47
|
+
<%= t("components.feedback.close") %>
|
|
48
|
+
</button>
|
|
49
|
+
|
|
40
50
|
</div>
|
|
41
51
|
</div>
|
|
42
52
|
</form>
|
|
@@ -1,42 +1,47 @@
|
|
|
1
1
|
<div class="gem-c-feedback__prompt gem-c-feedback__js-show js-prompt" tabindex="-1">
|
|
2
|
-
<div class="gem-c-feedback__prompt-
|
|
3
|
-
<
|
|
4
|
-
|
|
5
|
-
|
|
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
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
2
|
+
<div class="gem-c-feedback__prompt-content">
|
|
3
|
+
<div class="gem-c-feedback__prompt-questions js-prompt-questions" hidden>
|
|
4
|
+
<div class="gem-c-feedback__prompt-question-answer">
|
|
5
|
+
<h2 class="gem-c-feedback__prompt-question"><%= t("components.feedback.is_this_page_useful") %></h2>
|
|
6
|
+
<ul class="gem-c-feedback__option-list">
|
|
7
|
+
<li class="gem-c-feedback__option-list-item govuk-visually-hidden" style="display: none" hidden>
|
|
8
|
+
<% # Maybe button exists only to try and capture clicks by bots %>
|
|
9
|
+
<%= link_to "/contact/govuk", {
|
|
10
|
+
class: 'gem-c-feedback__prompt-link',
|
|
11
|
+
data: {
|
|
12
|
+
'track-category' => 'yesNoFeedbackForm',
|
|
13
|
+
'track-action' => 'ffMaybeClick'
|
|
14
|
+
},
|
|
15
|
+
role: 'button',
|
|
16
|
+
style: 'display: none',
|
|
17
|
+
hidden: 'hidden',
|
|
18
|
+
'aria-hidden': 'true',
|
|
19
|
+
} do %>
|
|
20
|
+
<%= t("components.feedback.maybe") %>
|
|
21
|
+
<% end %>
|
|
22
|
+
</li>
|
|
23
|
+
<li class="gem-c-feedback__option-list-item">
|
|
24
|
+
<button class="govuk-button gem-c-feedback__prompt-link js-page-is-useful" data-track-category="yesNoFeedbackForm" data-track-action="ffYesClick" data-ga4='{"event_name":"form_submit","type":"feedback","text":"Yes", "section": "Is this page useful?"}'>
|
|
25
|
+
<%= t("components.feedback.yes") %> <span class="govuk-visually-hidden"><%= t("components.feedback.is_useful") %></span>
|
|
26
|
+
</button>
|
|
27
|
+
</li>
|
|
28
|
+
<li class="gem-c-feedback__option-list-item">
|
|
29
|
+
<button class="govuk-button gem-c-feedback__prompt-link js-toggle-form js-page-is-not-useful" data-track-category="yesNoFeedbackForm" data-track-action="ffNoClick" aria-controls="page-is-not-useful" aria-expanded="false" data-ga4='{"event_name":"form_submit","type":"feedback","text":"No", "section": "Is this page useful?"}'>
|
|
30
|
+
<%= t("components.feedback.no") %> <span class="govuk-visually-hidden"><%= t("components.feedback.is_not_useful") %></span>
|
|
31
|
+
</button>
|
|
32
|
+
</li>
|
|
33
|
+
</ul>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
|
|
37
|
+
<div class="gem-c-feedback__prompt-questions gem-c-feedback__prompt-success js-prompt-success" role="alert" hidden>
|
|
38
|
+
<%= t("components.feedback.thank_you_for_feedback") %>
|
|
39
|
+
</div>
|
|
40
|
+
|
|
41
|
+
<div class="gem-c-feedback__prompt-questions gem-c-feedback__prompt-questions--something-is-wrong js-prompt-questions" hidden>
|
|
42
|
+
<button class="govuk-button gem-c-feedback__prompt-link js-toggle-form js-something-is-wrong" data-track-category="Onsite Feedback" data-track-action="GOV-UK Open Form" aria-controls="something-is-wrong" aria-expanded="false" data-ga4='{"event_name":"form_submit","type":"feedback","text":"Report a problem with this page", "section": "Is this page useful?"}'>
|
|
43
|
+
<%= t("components.feedback.something_wrong") %>
|
|
44
|
+
</button>
|
|
45
|
+
</div>
|
|
41
46
|
</div>
|
|
42
47
|
</div>
|
data/config/locales/en.yml
CHANGED
|
@@ -61,7 +61,7 @@ en:
|
|
|
61
61
|
publication: Publication for %{nation}
|
|
62
62
|
wales: Wales
|
|
63
63
|
feedback:
|
|
64
|
-
close:
|
|
64
|
+
close: Cancel
|
|
65
65
|
dont_include_personal_info: Don’t include personal or financial information like your National Insurance number or credit card details.
|
|
66
66
|
email_address: Email address
|
|
67
67
|
help_us_improve_govuk: Help us improve GOV.UK
|