govuk_frontend_toolkit 4.13.0 → 4.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/CHANGELOG.md +6 -0
- data/app/assets/README.md +6 -0
- data/app/assets/VERSION.txt +1 -1
- data/app/assets/docs/javascript.md +32 -0
- data/app/assets/javascripts/govuk/analytics/analytics.js +6 -3
- data/app/assets/javascripts/govuk/analytics/download-link-tracker.js +8 -2
- data/app/assets/javascripts/govuk/analytics/error-tracking.js +12 -7
- data/app/assets/javascripts/govuk/analytics/external-link-tracker.js +9 -3
- data/app/assets/javascripts/govuk/analytics/google-analytics-universal-tracker.js +9 -6
- data/app/assets/javascripts/govuk/analytics/mailto-link-tracker.js +8 -2
- data/app/assets/javascripts/govuk/analytics/print-intent.js +10 -7
- data/app/assets/javascripts/govuk/modules/auto-track-event.js +7 -3
- data/app/assets/javascripts/govuk/modules.js +7 -3
- data/app/assets/javascripts/govuk/multivariate-test.js +24 -11
- data/app/assets/javascripts/govuk/primary-links.js +8 -3
- data/app/assets/javascripts/govuk/selection-buttons.js +6 -6
- data/app/assets/javascripts/govuk/stick-at-top-when-scrolling.js +15 -14
- data/app/assets/javascripts/govuk/stop-scrolling-at-footer.js +11 -9
- data/app/assets/javascripts/stageprompt.js +49 -42
- data/app/assets/jenkins.sh +1 -1
- data/app/assets/spec/support/load.js +2 -2
- data/app/assets/spec/unit/multivariate-test.spec.js +43 -0
- data/govuk_frontend_toolkit.gemspec +2 -2
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fcc2e1608a32115e7405c8579739e7673c4e12d6
|
4
|
+
data.tar.gz: d2a23439130453227958efe416ecda2ebf335e6c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4336246cb9440cd42fc7aa9d369112c6bc4f50319e43b3f5f62149e6e2ccafbf29c936b9fa32c7f28456c5549ae7d24340495fe5ed79d63937699cfa6316b027
|
7
|
+
data.tar.gz: 935e052dc4755027b64609e3837bd01802400f7b02ba5fcc57e00bd89f82a08d94d011471df5bc7e297baf9376f5529e6c30e792811aa897886da623c56f5370
|
data/app/assets/CHANGELOG.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
# 4.14.0
|
2
|
+
|
3
|
+
- Allow use of multiple GA customDimensionIndex. See [this section](https://github.com/alphagov/govuk_frontend_toolkit/blob/master/docs/javascript.md#using-google-custom-dimensions-with-your-own-statistical-model) of the documentation for more information.
|
4
|
+
- Configurable duration (in days) for AB Test cookie. See [this section](https://github.com/alphagov/govuk_frontend_toolkit/blob/master/docs/javascript.md#multivariate-test-framework) of the documentation for more information.
|
5
|
+
- Allow base scripts to run within a module loader. See [this PR](https://github.com/alphagov/govuk_frontend_toolkit/pull/290) for more information.
|
6
|
+
|
1
7
|
# 4.13.0
|
2
8
|
|
3
9
|
- Make headings block-level by default (PR #200). If you are styling elements you want to be inline with heading includes, you’ll need to explicitly make them inline in your CSS.
|
data/app/assets/README.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# GOV.UK frontend toolkit
|
2
2
|
|
3
|
+
---
|
4
|
+
|
5
|
+
#### You can help us improve the GOV.UK frontend toolkit by completing our [5 minute survey](https://www.surveymonkey.co.uk/r/2MZRS9H).
|
6
|
+
|
7
|
+
---
|
8
|
+
|
3
9
|
A collection of Sass and JavaScript files for using as part of your
|
4
10
|
application's frontend.
|
5
11
|
|
data/app/assets/VERSION.txt
CHANGED
@@ -1 +1 @@
|
|
1
|
-
4.
|
1
|
+
4.14.0
|
@@ -178,6 +178,20 @@ var test = new GOVUK.MultivariateTest({
|
|
178
178
|
});
|
179
179
|
```
|
180
180
|
|
181
|
+
If you want to set the cookie expiration then you can optionally set cookieDuration as follows:
|
182
|
+
|
183
|
+
```javascript
|
184
|
+
var test = new GOVUK.MultivariateTest({
|
185
|
+
name: 'car_tax_button_text',
|
186
|
+
cookieDuration: 14,
|
187
|
+
cohorts: {
|
188
|
+
pay_your_car_tax: {weight: 25, callback: function() { ... }}, // 25%
|
189
|
+
give_us_money: {weight: 75, callback: function() { ... }} // 75%
|
190
|
+
}
|
191
|
+
});
|
192
|
+
```
|
193
|
+
Here, it is set to expire in 14 days time. if this option is not set the default cookie expiration (30 days) take effect.
|
194
|
+
|
181
195
|
If you have a complex test, it may be worth extending MultivariateTest with
|
182
196
|
your own. Callbacks can be strings which will call a method of that name
|
183
197
|
on the current object.
|
@@ -250,6 +264,24 @@ var test = new GOVUK.MultivariateTest({
|
|
250
264
|
|
251
265
|
`customDimensionIndex` is the index of the custom variable in Google Analytics. GA only gives 50 integer slots to each account, and it is important that a unique integer is assigned to each test. Current contact for assigning a custom var slot for GOV.UK is: Tim Leighton-Boyce <tim.leighton-boyce@digital.cabinet-office.gov.uk>
|
252
266
|
|
267
|
+
For certain types of tests where the custom dimensions in Google Analytics can only have one of three scopes (hit, session, or user). Measuring performance of A/B tests, and want to compare test results for session-scoped custom dimensions (eg: index 222) against hit-scoped ones (eg: index 223) may become important.
|
268
|
+
|
269
|
+
Instead of supplying an integer (like the above example), `customDimensionIndex` can also accept an array of dimension indexes ([222, 223]), see below for more.
|
270
|
+
|
271
|
+
Make sure to check GA debugger that these values are being sent before deploying.
|
272
|
+
|
273
|
+
```js
|
274
|
+
var test = new GOVUK.MultivariateTest({
|
275
|
+
name: 'car_tax_button_text',
|
276
|
+
customDimensionIndex: [222, 223],
|
277
|
+
cohorts: {
|
278
|
+
pay_your_car_tax: {weight: 25},
|
279
|
+
give_us_money: {weight: 50}
|
280
|
+
}
|
281
|
+
});
|
282
|
+
```
|
283
|
+
|
284
|
+
|
253
285
|
## Primary Links
|
254
286
|
|
255
287
|
`GOVUK.PrimaryList` hides elements in a list which don't have a supplied
|
@@ -1,6 +1,7 @@
|
|
1
|
-
(function() {
|
1
|
+
(function(global) {
|
2
2
|
"use strict";
|
3
|
-
|
3
|
+
|
4
|
+
var GOVUK = global.GOVUK || {};
|
4
5
|
|
5
6
|
// For usage and initialisation see:
|
6
7
|
// https://github.com/alphagov/govuk_frontend_toolkit/blob/master/docs/analytics.md#create-an-analytics-tracker
|
@@ -61,4 +62,6 @@
|
|
61
62
|
};
|
62
63
|
|
63
64
|
GOVUK.Analytics = Analytics;
|
64
|
-
|
65
|
+
|
66
|
+
global.GOVUK = GOVUK;
|
67
|
+
})(window);
|
@@ -1,5 +1,9 @@
|
|
1
|
-
(function() {
|
1
|
+
(function(global) {
|
2
2
|
"use strict";
|
3
|
+
|
4
|
+
var $ = global.jQuery;
|
5
|
+
var GOVUK = global.GOVUK || {};
|
6
|
+
|
3
7
|
GOVUK.analyticsPlugins = GOVUK.analyticsPlugins || {};
|
4
8
|
GOVUK.analyticsPlugins.downloadLinkTracker = function (options) {
|
5
9
|
var options = options || {},
|
@@ -32,4 +36,6 @@
|
|
32
36
|
return $target;
|
33
37
|
}
|
34
38
|
}
|
35
|
-
|
39
|
+
|
40
|
+
global.GOVUK = GOVUK;
|
41
|
+
})(window);
|
@@ -1,6 +1,9 @@
|
|
1
1
|
// Extension to track errors using google analytics as a data store.
|
2
|
-
(function() {
|
2
|
+
(function(global) {
|
3
3
|
"use strict";
|
4
|
+
|
5
|
+
var GOVUK = global.GOVUK || {};
|
6
|
+
|
4
7
|
GOVUK.analyticsPlugins = GOVUK.analyticsPlugins || {};
|
5
8
|
|
6
9
|
GOVUK.analyticsPlugins.error = function (options) {
|
@@ -35,12 +38,14 @@
|
|
35
38
|
return false;
|
36
39
|
}
|
37
40
|
|
38
|
-
if (
|
39
|
-
|
40
|
-
} else if (
|
41
|
-
|
41
|
+
if (global.addEventListener) {
|
42
|
+
global.addEventListener('error', trackJavaScriptError, false);
|
43
|
+
} else if (global.attachEvent) {
|
44
|
+
global.attachEvent('onerror', trackJavaScriptError);
|
42
45
|
} else {
|
43
|
-
|
46
|
+
global.onerror = trackJavaScriptError;
|
44
47
|
}
|
45
48
|
}
|
46
|
-
|
49
|
+
|
50
|
+
global.GOVUK = GOVUK;
|
51
|
+
})(window);
|
@@ -1,5 +1,9 @@
|
|
1
|
-
(function() {
|
1
|
+
(function(global) {
|
2
2
|
"use strict";
|
3
|
+
|
4
|
+
var $ = global.jQuery;
|
5
|
+
var GOVUK = global.GOVUK || {};
|
6
|
+
|
3
7
|
GOVUK.analyticsPlugins = GOVUK.analyticsPlugins || {};
|
4
8
|
GOVUK.analyticsPlugins.externalLinkTracker = function () {
|
5
9
|
|
@@ -33,6 +37,8 @@
|
|
33
37
|
}
|
34
38
|
|
35
39
|
GOVUK.analyticsPlugins.externalLinkTracker.getHostname = function() {
|
36
|
-
return
|
40
|
+
return global.location.hostname;
|
37
41
|
}
|
38
|
-
|
42
|
+
|
43
|
+
global.GOVUK = GOVUK;
|
44
|
+
})(window);
|
@@ -1,6 +1,7 @@
|
|
1
|
-
(function() {
|
1
|
+
(function(global) {
|
2
2
|
"use strict";
|
3
|
-
|
3
|
+
|
4
|
+
var GOVUK = global.GOVUK || {};
|
4
5
|
|
5
6
|
var GoogleAnalyticsUniversalTracker = function(id, cookieDomain) {
|
6
7
|
configureProfile(id, cookieDomain);
|
@@ -20,7 +21,7 @@
|
|
20
21
|
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
21
22
|
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
22
23
|
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
23
|
-
})(
|
24
|
+
})(global,document,'script','//www.google-analytics.com/analytics.js','ga');
|
24
25
|
};
|
25
26
|
|
26
27
|
// https://developers.google.com/analytics/devguides/collection/analyticsjs/pages
|
@@ -140,10 +141,12 @@
|
|
140
141
|
};
|
141
142
|
|
142
143
|
function sendToGa() {
|
143
|
-
if (typeof
|
144
|
-
ga.apply(
|
144
|
+
if (typeof global.ga === "function") {
|
145
|
+
ga.apply(global, arguments);
|
145
146
|
}
|
146
147
|
}
|
147
148
|
|
148
149
|
GOVUK.GoogleAnalyticsUniversalTracker = GoogleAnalyticsUniversalTracker;
|
149
|
-
|
150
|
+
|
151
|
+
global.GOVUK = GOVUK;
|
152
|
+
})(window);
|
@@ -1,5 +1,9 @@
|
|
1
|
-
(function() {
|
1
|
+
(function(global) {
|
2
2
|
"use strict";
|
3
|
+
|
4
|
+
var $ = global.jQuery;
|
5
|
+
var GOVUK = global.GOVUK || {};
|
6
|
+
|
3
7
|
GOVUK.analyticsPlugins = GOVUK.analyticsPlugins || {};
|
4
8
|
GOVUK.analyticsPlugins.mailtoLinkTracker = function () {
|
5
9
|
|
@@ -30,4 +34,6 @@
|
|
30
34
|
return $target;
|
31
35
|
}
|
32
36
|
}
|
33
|
-
|
37
|
+
|
38
|
+
global.GOVUK = GOVUK;
|
39
|
+
})(window);
|
@@ -1,7 +1,9 @@
|
|
1
1
|
// Extension to monitor attempts to print pages.
|
2
|
-
(function () {
|
2
|
+
(function (global) {
|
3
3
|
"use strict";
|
4
4
|
|
5
|
+
var GOVUK = global.GOVUK || {};
|
6
|
+
|
5
7
|
GOVUK.analyticsPlugins = GOVUK.analyticsPlugins || {};
|
6
8
|
|
7
9
|
GOVUK.analyticsPlugins.printIntent = function () {
|
@@ -11,15 +13,15 @@
|
|
11
13
|
});
|
12
14
|
|
13
15
|
// Most browsers
|
14
|
-
if (
|
15
|
-
var mediaQueryList =
|
16
|
+
if (global.matchMedia) {
|
17
|
+
var mediaQueryList = global.matchMedia('print'),
|
16
18
|
mqlListenerCount = 0;
|
17
19
|
mediaQueryList.addListener(function (mql) {
|
18
20
|
if (!mql.matches && mqlListenerCount === 0) {
|
19
21
|
printAttempt();
|
20
22
|
mqlListenerCount++;
|
21
23
|
// If we try and print again within 3 seconds, don't log it
|
22
|
-
|
24
|
+
setTimeout(function () {
|
23
25
|
mqlListenerCount = 0;
|
24
26
|
// printing will be tracked again now
|
25
27
|
}, 3000);
|
@@ -28,10 +30,11 @@
|
|
28
30
|
}
|
29
31
|
|
30
32
|
// IE < 10
|
31
|
-
if (
|
32
|
-
|
33
|
+
if (global.onafterprint) {
|
34
|
+
global.onafterprint = printAttempt;
|
33
35
|
}
|
34
36
|
|
35
37
|
};
|
36
38
|
|
37
|
-
|
39
|
+
global.GOVUK = GOVUK;
|
40
|
+
})(window);
|
@@ -1,7 +1,10 @@
|
|
1
|
-
(function(
|
1
|
+
(function(global) {
|
2
2
|
"use strict";
|
3
3
|
|
4
|
-
|
4
|
+
var GOVUK = global.GOVUK || {};
|
5
|
+
GOVUK.Modules = GOVUK.Modules || {};
|
6
|
+
|
7
|
+
GOVUK.Modules.AutoTrackEvent = function() {
|
5
8
|
this.start = function(element) {
|
6
9
|
var options = {nonInteraction: 1}, // automatic events shouldn't affect bounce rate
|
7
10
|
category = element.data('track-category'),
|
@@ -23,4 +26,5 @@
|
|
23
26
|
}
|
24
27
|
};
|
25
28
|
|
26
|
-
|
29
|
+
global.GOVUK = GOVUK;
|
30
|
+
})(window);
|
@@ -1,6 +1,8 @@
|
|
1
|
-
(function(
|
1
|
+
(function(global) {
|
2
2
|
"use strict";
|
3
|
-
|
3
|
+
|
4
|
+
var $ = global.jQuery;
|
5
|
+
var GOVUK = global.GOVUK || {};
|
4
6
|
GOVUK.Modules = GOVUK.Modules || {};
|
5
7
|
|
6
8
|
GOVUK.modules = {
|
@@ -53,4 +55,6 @@
|
|
53
55
|
}
|
54
56
|
}
|
55
57
|
}
|
56
|
-
|
58
|
+
|
59
|
+
global.GOVUK = GOVUK;
|
60
|
+
})(window);
|
@@ -1,7 +1,8 @@
|
|
1
|
-
(function() {
|
1
|
+
(function(global) {
|
2
2
|
"use strict";
|
3
|
-
|
4
|
-
var $ =
|
3
|
+
|
4
|
+
var $ = global.jQuery;
|
5
|
+
var GOVUK = global.GOVUK || {};
|
5
6
|
|
6
7
|
// A multivariate test framework
|
7
8
|
//
|
@@ -17,6 +18,7 @@
|
|
17
18
|
this._loadOption(options, 'runImmediately', true);
|
18
19
|
this._loadOption(options, 'defaultWeight', 1);
|
19
20
|
this._loadOption(options, 'contentExperimentId', null);
|
21
|
+
this._loadOption(options, 'cookieDuration', 30);
|
20
22
|
|
21
23
|
if (this.runImmediately) {
|
22
24
|
this.run();
|
@@ -68,20 +70,29 @@
|
|
68
70
|
var cohort = GOVUK.cookie(this.cookieName());
|
69
71
|
if (!cohort || !this.cohorts[cohort]) {
|
70
72
|
cohort = this.chooseRandomCohort();
|
71
|
-
GOVUK.cookie(this.cookieName(), cohort, {days:
|
73
|
+
GOVUK.cookie(this.cookieName(), cohort, {days: this.cookieDuration});
|
72
74
|
}
|
73
75
|
return cohort;
|
74
76
|
};
|
75
77
|
|
76
78
|
MultivariateTest.prototype.setCustomVar = function(cohort) {
|
77
|
-
if (this.customDimensionIndex
|
78
|
-
|
79
|
-
|
80
|
-
this.
|
81
|
-
|
79
|
+
if (this.customDimensionIndex &&
|
80
|
+
this.customDimensionIndex.constructor === Array) {
|
81
|
+
for (var index = 0; index < this.customDimensionIndex.length; index++) {
|
82
|
+
this.setDimension(cohort, this.customDimensionIndex[index])
|
83
|
+
}
|
84
|
+
} else if (this.customDimensionIndex) {
|
85
|
+
this.setDimension(cohort, this.customDimensionIndex)
|
82
86
|
}
|
83
87
|
};
|
84
88
|
|
89
|
+
MultivariateTest.prototype.setDimension = function(cohort, dimension) {
|
90
|
+
GOVUK.analytics.setDimension(
|
91
|
+
dimension,
|
92
|
+
this.cookieName() + "__" + cohort
|
93
|
+
);
|
94
|
+
};
|
95
|
+
|
85
96
|
MultivariateTest.prototype.setUpContentExperiment = function(cohort) {
|
86
97
|
var contentExperimentId = this.contentExperimentId;
|
87
98
|
var cohortVariantId = this.cohorts[cohort]['variantId'];
|
@@ -130,5 +141,7 @@
|
|
130
141
|
return "multivariatetest_cohort_" + this.name;
|
131
142
|
};
|
132
143
|
|
133
|
-
|
134
|
-
|
144
|
+
GOVUK.MultivariateTest = MultivariateTest;
|
145
|
+
|
146
|
+
global.GOVUK = GOVUK;
|
147
|
+
})(window);
|
@@ -1,6 +1,8 @@
|
|
1
|
-
(function() {
|
1
|
+
(function(global) {
|
2
2
|
"use strict";
|
3
|
-
|
3
|
+
|
4
|
+
var $ = global.jQuery;
|
5
|
+
var GOVUK = global.GOVUK || {};
|
4
6
|
|
5
7
|
// Only show the first {n} items in a list, documentation is in the README.md
|
6
8
|
var PrimaryList = function(el, selector){
|
@@ -39,6 +41,7 @@
|
|
39
41
|
$(window).trigger('govuk.pageSizeChanged');
|
40
42
|
}
|
41
43
|
};
|
44
|
+
|
42
45
|
GOVUK.PrimaryList = PrimaryList;
|
43
46
|
|
44
47
|
GOVUK.primaryLinks = {
|
@@ -48,4 +51,6 @@
|
|
48
51
|
});
|
49
52
|
}
|
50
53
|
};
|
51
|
-
|
54
|
+
|
55
|
+
global.GOVUK = GOVUK;
|
56
|
+
})(window);
|
@@ -1,9 +1,8 @@
|
|
1
|
-
(function () {
|
1
|
+
(function (global) {
|
2
2
|
"use strict";
|
3
|
-
var root = this,
|
4
|
-
$ = root.jQuery;
|
5
3
|
|
6
|
-
|
4
|
+
var $ = global.jQuery;
|
5
|
+
var GOVUK = global.GOVUK || {};
|
7
6
|
|
8
7
|
var SelectionButtons = function (elmsOrSelector, opts) {
|
9
8
|
var $elms;
|
@@ -107,5 +106,6 @@
|
|
107
106
|
}
|
108
107
|
};
|
109
108
|
|
110
|
-
|
111
|
-
|
109
|
+
GOVUK.SelectionButtons = SelectionButtons;
|
110
|
+
global.GOVUK = GOVUK;
|
111
|
+
})(window);
|
@@ -1,8 +1,8 @@
|
|
1
|
-
(function () {
|
1
|
+
(function (global) {
|
2
2
|
"use strict";
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
|
4
|
+
var $ = global.jQuery;
|
5
|
+
var GOVUK = global.GOVUK || {};
|
6
6
|
|
7
7
|
// Stick elements to top of screen when you scroll past, documentation is in the README.md
|
8
8
|
var sticky = {
|
@@ -16,22 +16,22 @@
|
|
16
16
|
sticky.$els = $els;
|
17
17
|
|
18
18
|
if(sticky._scrollTimeout === false) {
|
19
|
-
$(
|
20
|
-
sticky._scrollTimeout =
|
19
|
+
$(global).scroll(sticky.onScroll);
|
20
|
+
sticky._scrollTimeout = global.setInterval(sticky.checkScroll, 50);
|
21
21
|
}
|
22
|
-
$(
|
22
|
+
$(global).resize(sticky.onResize);
|
23
23
|
}
|
24
|
-
if(
|
24
|
+
if(GOVUK.stopScrollingAtFooter){
|
25
25
|
$els.each(function(i,el){
|
26
26
|
var $img = $(el).find('img');
|
27
27
|
if($img.length > 0){
|
28
28
|
var image = new Image();
|
29
29
|
image.onload = function(){
|
30
|
-
|
30
|
+
GOVUK.stopScrollingAtFooter.addEl($(el), $(el).outerHeight());
|
31
31
|
};
|
32
32
|
image.src = $img.attr('src');
|
33
33
|
} else {
|
34
|
-
|
34
|
+
GOVUK.stopScrollingAtFooter.addEl($(el), $(el).outerHeight());
|
35
35
|
}
|
36
36
|
});
|
37
37
|
}
|
@@ -43,14 +43,14 @@
|
|
43
43
|
if(sticky._hasScrolled === true){
|
44
44
|
sticky._hasScrolled = false;
|
45
45
|
|
46
|
-
var windowVerticalPosition = $(
|
46
|
+
var windowVerticalPosition = $(global).scrollTop();
|
47
47
|
sticky.$els.each(function(i, el){
|
48
48
|
var $el = $(el),
|
49
49
|
scrolledFrom = $el.data('scrolled-from');
|
50
50
|
|
51
51
|
if (scrolledFrom && windowVerticalPosition < scrolledFrom){
|
52
52
|
sticky.release($el);
|
53
|
-
} else if($(
|
53
|
+
} else if($(global).width() > 768 && windowVerticalPosition >= $el.offset().top) {
|
54
54
|
sticky.stick($el);
|
55
55
|
}
|
56
56
|
});
|
@@ -72,5 +72,6 @@
|
|
72
72
|
}
|
73
73
|
}
|
74
74
|
};
|
75
|
-
|
76
|
-
|
75
|
+
GOVUK.stickAtTopWhenScrolling = sticky;
|
76
|
+
global.GOVUK = GOVUK;
|
77
|
+
})(window);
|
@@ -11,11 +11,11 @@
|
|
11
11
|
// itself.
|
12
12
|
|
13
13
|
|
14
|
-
(function () {
|
14
|
+
(function (global) {
|
15
15
|
"use strict";
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
|
17
|
+
var $ = global.jQuery;
|
18
|
+
var GOVUK = global.GOVUK || {};
|
19
19
|
|
20
20
|
var stopScrollingAtFooter = {
|
21
21
|
_pollingId: null,
|
@@ -32,7 +32,7 @@
|
|
32
32
|
fixedOffset = isNaN(fixedOffset) ? 0 : fixedOffset;
|
33
33
|
|
34
34
|
stopScrollingAtFooter.updateFooterTop();
|
35
|
-
$(
|
35
|
+
$(global).on('govuk.pageSizeChanged', stopScrollingAtFooter.updateFooterTop);
|
36
36
|
|
37
37
|
var $siblingEl = $('<div></div>');
|
38
38
|
$siblingEl.insertBefore($fixedEl);
|
@@ -63,7 +63,7 @@
|
|
63
63
|
}
|
64
64
|
},
|
65
65
|
onScroll: function(){
|
66
|
-
if (stopScrollingAtFooter._isPolling === false) {
|
66
|
+
if (stopScrollingAtFooter._isPolling === false) {
|
67
67
|
stopScrollingAtFooter.startPolling();
|
68
68
|
}
|
69
69
|
},
|
@@ -132,7 +132,9 @@
|
|
132
132
|
}
|
133
133
|
};
|
134
134
|
|
135
|
-
|
135
|
+
GOVUK.stopScrollingAtFooter = stopScrollingAtFooter;
|
136
|
+
|
137
|
+
$(global).load(function(){ $(global).trigger('govuk.pageSizeChanged'); });
|
136
138
|
|
137
|
-
|
138
|
-
})
|
139
|
+
global.GOVUK = GOVUK;
|
140
|
+
})(window);
|
@@ -1,63 +1,70 @@
|
|
1
1
|
// Stageprompt 2.0.1
|
2
|
-
//
|
2
|
+
//
|
3
3
|
// See: https://github.com/alphagov/stageprompt
|
4
|
-
//
|
5
|
-
// Stageprompt allows user journeys to be described and instrumented
|
4
|
+
//
|
5
|
+
// Stageprompt allows user journeys to be described and instrumented
|
6
6
|
// using data attributes.
|
7
|
-
//
|
7
|
+
//
|
8
8
|
// Setup (run this on document ready):
|
9
|
-
//
|
9
|
+
//
|
10
10
|
// GOVUK.performance.stageprompt.setupForGoogleAnalytics();
|
11
|
-
//
|
11
|
+
//
|
12
12
|
// Usage:
|
13
|
-
//
|
13
|
+
//
|
14
14
|
// Sending events on page load:
|
15
|
-
//
|
15
|
+
//
|
16
16
|
// <div id="wrapper" class="service" data-journey="pay-register-birth-abroad:start">
|
17
17
|
// [...]
|
18
18
|
// </div>
|
19
|
-
//
|
19
|
+
//
|
20
20
|
// Sending events on click:
|
21
|
-
//
|
21
|
+
//
|
22
22
|
// <a class="help-button" href="#" data-journey-click="stage:help:info">See more info...</a>
|
23
23
|
|
24
|
-
|
24
|
+
(function(global) {
|
25
|
+
"use strict";
|
25
26
|
|
26
|
-
|
27
|
+
var $ = global.jQuery;
|
28
|
+
var GOVUK = global.GOVUK || {};
|
27
29
|
|
28
|
-
GOVUK.performance
|
30
|
+
GOVUK.performance = GOVUK.performance || {};
|
29
31
|
|
30
|
-
|
32
|
+
GOVUK.performance.stageprompt = (function () {
|
31
33
|
|
32
|
-
|
33
|
-
var parts = action.split(':');
|
34
|
-
if (parts.length <= 3) return parts;
|
35
|
-
return [parts.shift(), parts.shift(), parts.join(':')];
|
36
|
-
};
|
34
|
+
var setup, setupForGoogleAnalytics, splitAction;
|
37
35
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
36
|
+
splitAction = function (action) {
|
37
|
+
var parts = action.split(':');
|
38
|
+
if (parts.length <= 3) return parts;
|
39
|
+
return [parts.shift(), parts.shift(), parts.join(':')];
|
40
|
+
};
|
41
|
+
|
42
|
+
setup = function (analyticsCallback) {
|
43
|
+
var journeyStage = $('[data-journey]').attr('data-journey'),
|
44
|
+
journeyHelpers = $('[data-journey-click]');
|
45
|
+
|
46
|
+
if (journeyStage) {
|
47
|
+
analyticsCallback.apply(null, splitAction(journeyStage));
|
48
|
+
}
|
49
|
+
|
50
|
+
journeyHelpers.on('click', function (event) {
|
51
|
+
analyticsCallback.apply(null, splitAction($(this).data('journey-click')));
|
52
|
+
});
|
53
|
+
};
|
54
|
+
|
55
|
+
setupForGoogleAnalytics = function () {
|
56
|
+
setup(GOVUK.performance.sendGoogleAnalyticsEvent);
|
57
|
+
};
|
58
|
+
|
59
|
+
return {
|
60
|
+
setup: setup,
|
61
|
+
setupForGoogleAnalytics: setupForGoogleAnalytics
|
62
|
+
};
|
63
|
+
}());
|
54
64
|
|
55
|
-
|
56
|
-
|
57
|
-
setupForGoogleAnalytics: setupForGoogleAnalytics
|
65
|
+
GOVUK.performance.sendGoogleAnalyticsEvent = function (category, event, label) {
|
66
|
+
_gaq.push(['_trackEvent', category, event, label, undefined, true]);
|
58
67
|
};
|
59
|
-
}());
|
60
68
|
|
61
|
-
GOVUK
|
62
|
-
|
63
|
-
};
|
69
|
+
global.GOVUK = GOVUK;
|
70
|
+
})(window);
|
data/app/assets/jenkins.sh
CHANGED
@@ -63,6 +63,26 @@ describe("MultivariateTest", function() {
|
|
63
63
|
);
|
64
64
|
});
|
65
65
|
|
66
|
+
it("should be able to set multiple custom vars with the name and cohort if one is defined as an array", function() {
|
67
|
+
GOVUK.cookie.and.returnValue('foo');
|
68
|
+
var test = new GOVUK.MultivariateTest({
|
69
|
+
name: 'stuff',
|
70
|
+
cohorts: {
|
71
|
+
foo: {},
|
72
|
+
bar: {}
|
73
|
+
},
|
74
|
+
customDimensionIndex: [2,3]
|
75
|
+
});
|
76
|
+
expect(GOVUK.analytics.setDimension).toHaveBeenCalledWith(
|
77
|
+
2,
|
78
|
+
'multivariatetest_cohort_stuff__foo'
|
79
|
+
);
|
80
|
+
expect(GOVUK.analytics.setDimension).toHaveBeenCalledWith(
|
81
|
+
3,
|
82
|
+
'multivariatetest_cohort_stuff__foo'
|
83
|
+
);
|
84
|
+
});
|
85
|
+
|
66
86
|
it("should trigger an event to track that the test has been run", function() {
|
67
87
|
GOVUK.cookie.and.returnValue('foo');
|
68
88
|
var test = new GOVUK.MultivariateTest({
|
@@ -124,6 +144,29 @@ describe("MultivariateTest", function() {
|
|
124
144
|
expect(test.fooCallback).toHaveBeenCalled();
|
125
145
|
});
|
126
146
|
|
147
|
+
it("should assign 30 if cookieDuration isn't defined", function() {
|
148
|
+
GOVUK.cookie.and.returnValue('foo');
|
149
|
+
var test = new GOVUK.MultivariateTest({
|
150
|
+
name: 'cookie_duration_test',
|
151
|
+
cohorts: {
|
152
|
+
foo: {callback: function(){}}
|
153
|
+
}
|
154
|
+
});
|
155
|
+
expect(test.cookieDuration).toEqual(30);
|
156
|
+
});
|
157
|
+
|
158
|
+
it("should assign the user's cookie duration, when cookieDuration is defined", function() {
|
159
|
+
GOVUK.cookie.and.returnValue('foo');
|
160
|
+
var test = new GOVUK.MultivariateTest({
|
161
|
+
name: 'cookie_duration_test',
|
162
|
+
cookieDuration: 14,
|
163
|
+
cohorts: {
|
164
|
+
foo: {callback: function(){}}
|
165
|
+
}
|
166
|
+
});
|
167
|
+
expect(test.cookieDuration).toEqual(14);
|
168
|
+
});
|
169
|
+
|
127
170
|
it("should assign a new random cohort if the assigned cohort does not exist", function() {
|
128
171
|
var fooSpy = jasmine.createSpy('fooSpy');
|
129
172
|
var barSpy = jasmine.createSpy('barSpy');
|
@@ -6,8 +6,8 @@ Gem::Specification.new do |s|
|
|
6
6
|
s.name = "govuk_frontend_toolkit"
|
7
7
|
s.version = GovUKFrontendToolkit.toolkit_version
|
8
8
|
s.summary = 'Tools for building frontend applications'
|
9
|
-
s.authors = [
|
10
|
-
s.email =
|
9
|
+
s.authors = ["Government Digital Service"]
|
10
|
+
s.email = ["govuk-dev@digital.cabinet-office.gov.uk"]
|
11
11
|
s.homepage = 'https://github.com/alphagov/govuk_frontend_toolkit'
|
12
12
|
s.license = 'MIT'
|
13
13
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: govuk_frontend_toolkit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.14.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Government Digital Service
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-07-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -67,7 +67,8 @@ dependencies:
|
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 0.9.2.2
|
69
69
|
description:
|
70
|
-
email:
|
70
|
+
email:
|
71
|
+
- govuk-dev@digital.cabinet-office.gov.uk
|
71
72
|
executables: []
|
72
73
|
extensions: []
|
73
74
|
extra_rdoc_files: []
|