govuk_publishing_components 31.1.1 → 31.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d8f89b321d55b2623a30beb4b0f53a54a6b5174bbcc1ba7f4e15097fbaf0e4b0
4
- data.tar.gz: db8e005e0bf1068eededf53799905388fe09ea2ca8bb0c5fe62de95e8347e3de
3
+ metadata.gz: 91b9d62f7f0bee126ffb2fa60dcca311f06489100cdc686a4c4404f54ae4c4e3
4
+ data.tar.gz: df1410de982d60ae348bad56b9dda41ea67666d1c4117b5f61260998aaac9bea
5
5
  SHA512:
6
- metadata.gz: 29904c326d8df2559116c9adfaaed028ff593a371585a04c1409067b7d21221a937bdace0ab8904b421e744fdc2cd12dcefda6428b370c98dcd3defe7da0b03e
7
- data.tar.gz: 016de6ad1910ffa3563760f7dc8dd79102b4258bf7c56f0f1f72da4815925753252e7b3682e23e4b40942f9f3ca5536e3aeea7afc2fa8f070f8d913bd4bcf5ce
6
+ metadata.gz: 3ce3821fa73df20270408a383dba70232b5312628fe31299bc8b3b6577dc786da3e1afe24e72dcd38a1217e04739563b2a09bde9f4a8228f50c1a63c656ca7b9
7
+ data.tar.gz: 8ea5b431d7ed318852c4c1fdd1991b09f28d8abca00d8732b5cb6cf4de698a1a66a98fb5298ac49769666867d5641275e284fff04d8f12e950ee22c0809a4359
@@ -22,6 +22,7 @@ window.GOVUK.analyticsGa4 = window.GOVUK.analyticsGa4 || {};
22
22
  } else {
23
23
  // initialise GTM
24
24
  window.dataLayer = window.dataLayer || []
25
+ window.dataLayer.push({ 'gtm.blocklist': ['customPixels', 'customScripts', 'html', 'nonGoogleScripts'] })
25
26
  window.dataLayer.push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' })
26
27
 
27
28
  var auth = window.GOVUK.analyticsGa4.vars.auth || ''
@@ -36,7 +37,6 @@ window.GOVUK.analyticsGa4 = window.GOVUK.analyticsGa4 || {};
36
37
  this.googleSrc = 'https://www.googletagmanager.com/gtm.js?id=' + window.GOVUK.analyticsGa4.vars.id + auth + preview
37
38
  newScript.src = this.googleSrc
38
39
  firstScript.parentNode.insertBefore(newScript, firstScript)
39
- window.dataLayer.push({ 'gtm.blocklist': ['customPixels', 'customScripts', 'html', 'nonGoogleScripts'] })
40
40
  }
41
41
  },
42
42
 
@@ -44,17 +44,15 @@ window.GOVUK.analyticsGa4.analyticsModules = window.GOVUK.analyticsGa4.analytics
44
44
  return
45
45
  }
46
46
 
47
- var clickData = {}
48
47
  var href = element.getAttribute('href')
49
48
 
50
49
  if (!href) {
51
50
  return
52
51
  }
53
-
52
+ var clickData = {}
54
53
  var linkAttributes = element.getAttribute('data-ga4-link')
55
54
  if (linkAttributes) {
56
- linkAttributes = JSON.parse(linkAttributes)
57
- clickData = window.GOVUK.extendObject(clickData, linkAttributes)
55
+ clickData = JSON.parse(linkAttributes)
58
56
 
59
57
  /* Since external links can't be determined in the template, we use populated-via-js as a signal
60
58
  for our JavaScript to determine this value. */
@@ -62,41 +60,47 @@ window.GOVUK.analyticsGa4.analyticsModules = window.GOVUK.analyticsGa4.analytics
62
60
  clickData.external = this.isExternalLink(clickData.url) ? 'true' : 'false'
63
61
  }
64
62
 
65
- if (clickData.link_method === 'populated-via-js') {
66
- clickData.link_method = this.getClickType(event)
63
+ if (clickData.method === 'populated-via-js') {
64
+ clickData.method = this.getClickType(event)
67
65
  }
68
66
 
69
67
  if (clickData.index) {
70
- clickData.index = parseInt(linkAttributes.index)
68
+ clickData.index = parseInt(clickData.index)
71
69
  }
72
70
 
73
71
  if (clickData.index_total) {
74
- clickData.index_total = parseInt(linkAttributes.index_total)
72
+ clickData.index_total = parseInt(clickData.index_total)
75
73
  }
76
74
  } else if (this.isMailToLink(href)) {
77
75
  clickData.event_name = 'navigation'
78
76
  clickData.type = 'email'
79
77
  clickData.external = 'true'
80
78
  clickData.url = href
81
- clickData.text = element.textContent.trim()
82
- clickData.link_method = this.getClickType(event)
79
+ clickData.text = this.removeLinesAndExtraSpaces(element.textContent)
80
+ clickData.method = this.getClickType(event)
83
81
  } else if (this.isDownloadLink(href)) {
84
82
  clickData.event_name = 'file_download'
85
83
  clickData.type = this.isPreviewLink(href) ? 'preview' : 'generic download'
86
84
  clickData.external = this.isExternalLink(href) ? 'true' : 'false'
87
85
  clickData.url = href
88
- clickData.text = element.textContent.trim()
89
- clickData.link_method = this.getClickType(event)
86
+ clickData.text = this.removeLinesAndExtraSpaces(element.textContent)
87
+ clickData.method = this.getClickType(event)
90
88
  } else if (this.isExternalLink(href)) {
91
89
  clickData.event_name = 'navigation'
92
90
  clickData.type = 'generic link'
93
91
  clickData.external = 'true'
94
92
  clickData.url = href
95
- clickData.text = element.textContent.trim()
96
- clickData.link_method = this.getClickType(event)
93
+ clickData.text = this.removeLinesAndExtraSpaces(element.textContent)
94
+ clickData.method = this.getClickType(event)
97
95
  }
98
96
 
99
97
  if (Object.keys(clickData).length > 0) {
98
+ if (clickData.url) {
99
+ clickData.url = this.removeCrossDomainParams(clickData.url)
100
+ clickData.link_domain = this.populateLinkDomain(clickData.url)
101
+ clickData.link_path_parts = this.populateLinkPathParts(clickData.url)
102
+ }
103
+
100
104
  var schema = new window.GOVUK.analyticsGa4.Schemas().eventSchema()
101
105
  schema.event = 'event_data'
102
106
 
@@ -112,6 +116,49 @@ window.GOVUK.analyticsGa4.analyticsModules = window.GOVUK.analyticsGa4.analytics
112
116
  }
113
117
  },
114
118
 
119
+ populateLinkPathParts: function (href) {
120
+ var path = ''
121
+ if (this.hrefIsRelative(href) || this.isMailToLink(href)) {
122
+ path = href
123
+ } else {
124
+ // This regex matches a protocol and domain name at the start of a string such as https://www.gov.uk, http://gov.uk, //gov.uk
125
+ path = href.replace(/^(http:||https:)?(\/\/)([^\/]*)/, '') // eslint-disable-line no-useless-escape
126
+ }
127
+
128
+ if (path === '/' || path.length === 0) {
129
+ return
130
+ }
131
+
132
+ /*
133
+ This will create an object with 5 keys that are indexes ("1", "2", etc.)
134
+ The values will be each part of the link path split every 100 characters, or undefined.
135
+ For example: {"1": "/hello/world/etc...", "2": "/more/path/text...", "3": undefined, "4": undefined, "5": undefined}
136
+ Undefined values are needed to override the persistent object in GTM so that any values from old pushes are overwritten.
137
+ */
138
+ var parts = path.match(/.{1,100}/g)
139
+ var obj = {}
140
+ for (var i = 0; i < 5; i++) {
141
+ obj[(i + 1).toString()] = parts[i]
142
+ }
143
+ return obj
144
+ },
145
+
146
+ populateLinkDomain: function (href) {
147
+ // We always want mailto links to have an undefined link_domain
148
+ if (this.isMailToLink(href)) {
149
+ return undefined
150
+ }
151
+
152
+ if (this.hrefIsRelative(href)) {
153
+ return this.getProtocol() + '//' + this.getHostname()
154
+ } else {
155
+ // This regex matches a protocol and domain name at the start of a string such as https://www.gov.uk, http://gov.uk, //gov.uk
156
+ var domainRegex = /^(http:||https:)?(\/\/)([^\/]*)/ // eslint-disable-line no-useless-escape
157
+ var domain = domainRegex.exec(href)[0]
158
+ return domain
159
+ }
160
+ },
161
+
115
162
  appendDomainsWithoutWWW: function (domainsArrays) {
116
163
  // Add domains with www. removed, in case site hrefs are marked up without www. included.
117
164
  for (var i = 0; i < domainsArrays.length; i++) {
@@ -123,6 +170,13 @@ window.GOVUK.analyticsGa4.analyticsModules = window.GOVUK.analyticsGa4.analytics
123
170
  }
124
171
  },
125
172
 
173
+ removeLinesAndExtraSpaces: function (text) {
174
+ text = text.trim()
175
+ text = text.replace(/(\r\n|\n|\r)/gm, ' ') // Replace line breaks with 1 space
176
+ text = text.replace(/\s+/g, ' ') // Replace instances of 2+ spaces with 1 space
177
+ return text
178
+ },
179
+
126
180
  getClickType: function (event) {
127
181
  switch (event.type) {
128
182
  case 'click':
@@ -236,6 +290,10 @@ window.GOVUK.analyticsGa4.analyticsModules = window.GOVUK.analyticsGa4.analytics
236
290
  return string.substring(0, stringToFind.length) === stringToFind
237
291
  },
238
292
 
293
+ stringEndsWith: function (string, stringToFind) {
294
+ return string.substring(string.length - stringToFind.length, string.length) === stringToFind
295
+ },
296
+
239
297
  hrefIsRelative: function (href) {
240
298
  // Checks that a link is relative, but is not a protocol relative url
241
299
  return href[0] === '/' && href[1] !== '/'
@@ -247,6 +305,25 @@ window.GOVUK.analyticsGa4.analyticsModules = window.GOVUK.analyticsGa4.analytics
247
305
 
248
306
  getHostname: function () {
249
307
  return window.location.hostname
308
+ },
309
+
310
+ getProtocol: function () {
311
+ return window.location.protocol
312
+ },
313
+
314
+ removeCrossDomainParams: function (href) {
315
+ if (href.indexOf('_ga') !== -1 || href.indexOf('_gl') !== -1) {
316
+ // _ga & _gl are values needed for cross domain tracking, but we don't want them included in our click tracking.
317
+ href = href.replaceAll(/_g[al]=([^&]*)/g, '')
318
+
319
+ // The following code cleans up inconsistencies such as gov.uk/&&, gov.uk/?&hello=world, gov.uk/?, and gov.uk/&.
320
+ href = href.replaceAll(/(&&)+/g, '&')
321
+ href = href.replace('?&', '?')
322
+ if (this.stringEndsWith(href, '?') || this.stringEndsWith(href, '&')) {
323
+ href = href.substring(0, href.length - 1)
324
+ }
325
+ }
326
+ return href
250
327
  }
251
328
  }
252
329
 
@@ -21,7 +21,9 @@
21
21
  section: this.undefined,
22
22
  action: this.undefined,
23
23
  external: this.undefined,
24
- link_method: this.undefined
24
+ method: this.undefined,
25
+ link_domain: this.undefined,
26
+ link_path_parts: this.undefined
25
27
  }
26
28
  }
27
29
  }
@@ -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: tablet) {
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-questions {
18
- text-align: center;
19
- border-bottom: 1px solid govuk-colour("white");
20
- padding: govuk-spacing(5) govuk-spacing(5) govuk-spacing(5) govuk-spacing(5);
21
- box-sizing: border-box;
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
- width: 50%;
25
- display: table-cell;
26
- text-align: left;
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--something-is-wrong {
32
- text-align: center;
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
- text-align: right;
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
- @include govuk-clearfix;
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
- @include govuk-font(16, $weight: bold);
49
- display: table;
50
- width: 100%;
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
- vertical-align: top;
65
- display: inline-block;
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
- @include govuk-media-query($from: tablet) {
73
- margin-left: 0;
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
- box-shadow: 0 2px 0 govuk-colour("white");
89
- border: 1px govuk-colour("white") solid;
90
- min-width: 100%;
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("black");
100
+ background: govuk-colour("mid-grey");
95
101
  background: rgba(govuk-colour("black"), .2);
102
+ color: govuk-colour("black");
96
103
  }
97
104
 
98
- @include govuk-media-query($from: mobile) {
99
- min-width: 100px;
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("white");
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
- @include govuk-media-query($from: mobile) {
140
- display: inline-block;
145
+ &:last-child {
146
+ margin-left: govuk-spacing(2);
141
147
  }
142
148
  }
143
149
 
144
- .gem-c-feedback__option-list-item:last-child {
145
- @include govuk-media-query($from: mobile) {
146
- margin-left: govuk-spacing(4);
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: tablet) {
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) 0;
194
- border-top: govuk-spacing(2) solid govuk-colour("blue");
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) 0;
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
- float: right;
221
- margin: 0 govuk-spacing(1) govuk-spacing(2) 0;
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
 
@@ -49,7 +49,7 @@
49
49
  'index': index + 1,
50
50
  'index_total': links.length,
51
51
  'text': link[:icon],
52
- 'link_method': 'populated-via-js'
52
+ 'method': 'populated-via-js'
53
53
  }
54
54
  end
55
55
  if track_as_follow
@@ -61,7 +61,7 @@
61
61
  'text': link[:text],
62
62
  'external': 'populated-via-js',
63
63
  'url': link[:href],
64
- 'link_method': 'populated-via-js'
64
+ 'method': 'populated-via-js'
65
65
  }
66
66
  end
67
67
  %>
@@ -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">
@@ -49,6 +41,16 @@
49
41
  <%= render "govuk_publishing_components/components/button", {
50
42
  text: t("components.feedback.send")
51
43
  } %>
44
+
45
+ <button
46
+ class="govuk-button govuk-button--secondary gem-c-feedback__close gem-c-feedback__js-show js-close-form"
47
+ data-track-category="Onsite Feedback"
48
+ data-track-action="GOV.UK Close Form"
49
+ aria-controls="something-is-wrong"
50
+ aria-expanded="true">
51
+ <%= t("components.feedback.close") %>
52
+ </button>
53
+
52
54
  </div>
53
55
  </div>
54
56
  </form>
@@ -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">
@@ -37,6 +28,17 @@
37
28
  <%= render "govuk_publishing_components/components/button", {
38
29
  text: t("components.feedback.send_me_survey"),
39
30
  } %>
31
+
32
+ <button
33
+ class="govuk-button govuk-button--secondary gem-c-feedback__close js-close-form"
34
+ data-track-category="yesNoFeedbackForm"
35
+ data-track-action="ffFormClose"
36
+ aria-controls="page-is-not-useful"
37
+ aria-expanded="true"
38
+ hidden>
39
+ <%= t("components.feedback.close") %>
40
+ </button>
41
+
40
42
  </div>
41
43
  </div>
42
44
  </form>
@@ -1,42 +1,48 @@
1
1
  <div class="gem-c-feedback__prompt gem-c-feedback__js-show js-prompt" tabindex="-1">
2
- <div class="gem-c-feedback__prompt-questions js-prompt-questions" hidden>
3
- <h2 class="gem-c-feedback__prompt-question"><%= t("components.feedback.is_this_page_useful") %></h2>
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">
43
+ <%= t("components.feedback.something_wrong") %>
44
+ </button>
45
+ </div>
4
46
 
5
- <ul class="gem-c-feedback__option-list">
6
- <li class="gem-c-feedback__option-list-item govuk-visually-hidden" style="display: none" hidden>
7
- <% # Maybe button exists only to try and capture clicks by bots %>
8
- <%= link_to "/contact/govuk", {
9
- class: 'gem-c-feedback__prompt-link',
10
- data: {
11
- 'track-category' => 'yesNoFeedbackForm',
12
- 'track-action' => 'ffMaybeClick'
13
- },
14
- role: 'button',
15
- style: 'display: none',
16
- hidden: 'hidden',
17
- 'aria-hidden': 'true',
18
- } do %>
19
- <%= t("components.feedback.maybe") %>
20
- <% end %>
21
- </li>
22
- <li class="gem-c-feedback__option-list-item">
23
- <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?"}'>
24
- <%= t("components.feedback.yes") %> <span class="govuk-visually-hidden"><%= t("components.feedback.is_useful") %></span>
25
- </button>
26
- </li>
27
- <li class="gem-c-feedback__option-list-item">
28
- <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?"}'>
29
- <%= t("components.feedback.no") %> <span class="govuk-visually-hidden"><%= t("components.feedback.is_not_useful") %></span>
30
- </button>
31
- </li>
32
- </ul>
33
- </div>
34
- <div class="gem-c-feedback__prompt-questions gem-c-feedback__prompt-success js-prompt-success" role="alert" hidden>
35
- <%= t("components.feedback.thank_you_for_feedback") %>
36
- </div>
37
- <div class="gem-c-feedback__prompt-questions gem-c-feedback__prompt-questions--something-is-wrong js-prompt-questions" hidden>
38
- <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">
39
- <%= t("components.feedback.something_wrong") %>
40
- </button>
41
47
  </div>
42
48
  </div>
@@ -61,7 +61,7 @@ en:
61
61
  publication: Publication for %{nation}
62
62
  wales: Wales
63
63
  feedback:
64
- close: 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
@@ -1,3 +1,3 @@
1
1
  module GovukPublishingComponents
2
- VERSION = "31.1.1".freeze
2
+ VERSION = "31.2.0".freeze
3
3
  end
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: 31.1.1
4
+ version: 31.2.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: 2022-10-12 00:00:00.000000000 Z
11
+ date: 2022-10-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: govuk_app_config
@@ -1361,7 +1361,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1361
1361
  - !ruby/object:Gem::Version
1362
1362
  version: '0'
1363
1363
  requirements: []
1364
- rubygems_version: 3.3.23
1364
+ rubygems_version: 3.3.24
1365
1365
  signing_key:
1366
1366
  specification_version: 4
1367
1367
  summary: A gem to document components in GOV.UK frontend applications