govuk_frontend_toolkit 4.18.3 → 4.18.4

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.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/.gitignore +1 -0
  3. data/app/assets/CHANGELOG.md +5 -0
  4. data/app/assets/Gruntfile.js +21 -22
  5. data/app/assets/README.md +4 -0
  6. data/app/assets/VERSION.txt +1 -1
  7. data/app/assets/docs/javascript.md +29 -28
  8. data/app/assets/javascripts/govuk/analytics/analytics.js +37 -37
  9. data/app/assets/javascripts/govuk/analytics/download-link-tracker.js +21 -21
  10. data/app/assets/javascripts/govuk/analytics/error-tracking.js +19 -19
  11. data/app/assets/javascripts/govuk/analytics/external-link-tracker.js +23 -24
  12. data/app/assets/javascripts/govuk/analytics/google-analytics-universal-tracker.js +71 -70
  13. data/app/assets/javascripts/govuk/analytics/mailto-link-tracker.js +20 -21
  14. data/app/assets/javascripts/govuk/analytics/print-intent.js +19 -20
  15. data/app/assets/javascripts/govuk/modules.js +33 -32
  16. data/app/assets/javascripts/govuk/modules/auto-track-event.js +18 -18
  17. data/app/assets/javascripts/govuk/multivariate-test.js +83 -85
  18. data/app/assets/javascripts/govuk/primary-links.js +39 -38
  19. data/app/assets/javascripts/govuk/selection-buttons.js +57 -58
  20. data/app/assets/javascripts/govuk/shim-links-with-button-role.js +14 -15
  21. data/app/assets/javascripts/govuk/stick-at-top-when-scrolling.js +70 -70
  22. data/app/assets/javascripts/govuk/stop-scrolling-at-footer.js +74 -75
  23. data/app/assets/javascripts/govuk_toolkit.js +1 -1
  24. data/app/assets/javascripts/stageprompt.js +24 -25
  25. data/app/assets/javascripts/vendor/jquery/jquery.player.min.js +1 -1
  26. data/app/assets/package.json +10 -3
  27. data/app/assets/spec/manifest.js +2 -0
  28. data/app/assets/spec/support/console-runner.js +0 -1
  29. data/app/assets/spec/unit/analytics/analytics.spec.js +51 -47
  30. data/app/assets/spec/unit/analytics/download-link-tracker.spec.js +59 -51
  31. data/app/assets/spec/unit/analytics/error-tracking.spec.js +35 -30
  32. data/app/assets/spec/unit/analytics/external-link-tracker.spec.js +69 -61
  33. data/app/assets/spec/unit/analytics/google-analytics-universal-tracker.spec.js +129 -122
  34. data/app/assets/spec/unit/analytics/mailto-link-tracker.spec.js +55 -47
  35. data/app/assets/spec/unit/modules.spec.js +82 -78
  36. data/app/assets/spec/unit/modules/auto-track-event.spec.js +45 -40
  37. data/app/assets/spec/unit/multivariate-test.spec.js +150 -145
  38. data/app/assets/spec/unit/primary-links.spec.js +53 -47
  39. data/app/assets/spec/unit/selection-button.spec.js +701 -693
  40. data/app/assets/spec/unit/shim-links-with-button-role.spec.js +33 -28
  41. data/app/assets/spec/unit/show-hide-content.spec.js +5 -1
  42. data/app/assets/spec/unit/stick-at-top-when-scrolling.spec.js +104 -107
  43. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ff89585fe100d23ffb900f2b96330c86e7f0fdf5
4
- data.tar.gz: 36ef8152896403bea8a5904192b42956109a8425
3
+ metadata.gz: ed31373cbe3fd29495e7825368045f0961c44b00
4
+ data.tar.gz: 5e1914525810948b8ea7ebeb6a863500c3b8dc7e
5
5
  SHA512:
6
- metadata.gz: 550dae177f300cb2c69a4220ed10bf07f05789478afd1529697d033569ab486b0ea35c006e1548ab171f0ffbd2bdb1ae3e9b898fd506dbdf195b8681b0b3d35d
7
- data.tar.gz: 199cd1b7031db11cd65ec393be4eaa0749e9d690e9d28607073b8f82fdfefe2d2ef5eeba353dfaa4ab944b8418e6e3cfcde172a4cab7fb2214e0daf2e5836c1b
6
+ metadata.gz: 6de494a693da9ee1f4650cec2e256de23b91b46627f035e7d688e4ab4625e9dfce928809b6f1ae921e32879bf8de4a32f5492111fe37f88e1742047510128e5c
7
+ data.tar.gz: 1581b99971f60eebab602605fe1bc1de2e32b69ccec3b4d00653759b9e8f000e76c63d5c3543f08829958e2bebf9bb045f51bf6410a8b19e7b669b4c260f5f34
@@ -2,3 +2,4 @@ node_modules/
2
2
  .sass-cache
3
3
  npm-debug.log
4
4
  spec/stylesheets
5
+ _SpecRunner.html
@@ -1,3 +1,8 @@
1
+ # 4.18.4
2
+
3
+ - Lint codebase using standard ([PR #334](https://github.com/alphagov/govuk_frontend_toolkit/pull/334))
4
+ - Add semicolons at the start of IIFE's ([PR #339](https://github.com/alphagov/govuk_frontend_toolkit/pull/339))
5
+
1
6
  # 4.18.3
2
7
 
3
8
  - For smaller screens (<768px) ensure that the GOVUK.StickAtTopWhenScrolling JS "unsticks" the element which was previously "stuck" (by removing both the class which sets fixed positioning and the shim). ([PR #329](https://github.com/alphagov/govuk_frontend_toolkit/pull/329))
@@ -1,30 +1,29 @@
1
- module.exports = function(grunt) {
2
- var allSassFiles = [];
3
-
4
- var path = require('path');
1
+ module.exports = function (grunt) {
2
+ var allSassFiles = []
5
3
 
6
4
  grunt.file.recurse(
7
- "./stylesheets/",
8
- function(abspath, rootdir, subdir, filename) {
9
- if(typeof subdir !== 'undefined'){
10
- var relpath = subdir + '/' + filename;
5
+ './stylesheets/',
6
+ function (abspath, rootdir, subdir, filename) {
7
+ var relpath
8
+ if (typeof subdir !== 'undefined') {
9
+ relpath = subdir + '/' + filename
11
10
  } else {
12
- var relpath = filename;
11
+ relpath = filename
13
12
  }
14
13
  if (filename.match(/\.scss/)) {
15
- allSassFiles.push("@import '" + relpath + "';");
14
+ allSassFiles.push("@import '" + relpath + "';")
16
15
  }
17
16
  }
18
- );
17
+ )
19
18
 
20
19
  grunt.file.write(
21
- "./spec/stylesheets/test.scss",
22
- allSassFiles.join("\n")
23
- );
20
+ './spec/stylesheets/test.scss',
21
+ allSassFiles.join('\n')
22
+ )
24
23
 
25
24
  grunt.initConfig({
26
25
  clean: {
27
- sass: ["spec/stylesheets/test*css"]
26
+ sass: ['spec/stylesheets/test*css']
28
27
  },
29
28
  jasmine: {
30
29
  javascripts: {
@@ -53,12 +52,12 @@ module.exports = function(grunt) {
53
52
  }
54
53
  }
55
54
  }
56
- });
55
+ })
57
56
 
58
- grunt.loadNpmTasks('grunt-contrib-clean');
59
- grunt.loadNpmTasks('grunt-contrib-jasmine');
60
- grunt.loadNpmTasks('grunt-contrib-sass');
57
+ grunt.loadNpmTasks('grunt-contrib-clean')
58
+ grunt.loadNpmTasks('grunt-contrib-jasmine')
59
+ grunt.loadNpmTasks('grunt-contrib-sass')
61
60
 
62
- grunt.registerTask('test', ['sass', 'clean', 'jasmine']);
63
- grunt.registerTask('default', ['test']);
64
- };
61
+ grunt.registerTask('test', ['sass', 'clean', 'jasmine'])
62
+ grunt.registerTask('default', ['test'])
63
+ }
data/app/assets/README.md CHANGED
@@ -94,6 +94,10 @@ npm install
94
94
  npm test
95
95
  ```
96
96
 
97
+ ### Standard JavaScript
98
+ `govuk_frontend_toolkit` uses [standardjs](http://standardjs.com/), an opinionated JavaScript linter.
99
+ All JavaScript files follow its conventions. [Read more](https://github.com/alphagov/govuk_prototype_kit/blob/master/docs/linting.md)
100
+
97
101
  ### Using the local test runner
98
102
 
99
103
  The test suite can be run by opening the `./spec/support/LocalTestRunner.html` file in a browser for a more detailed trace of errors.
@@ -1 +1 @@
1
- 4.18.3
1
+ 4.18.4
@@ -23,7 +23,7 @@ Modules can be found and started by including `govuk/modules.js` and running:
23
23
 
24
24
  ```javascript
25
25
  $(document).ready(function(){
26
- GOVUK.modules.start();
26
+ GOVUK.modules.start()
27
27
  });
28
28
  ```
29
29
 
@@ -32,15 +32,15 @@ This will attempt to find and start all modules in the page. For the example abo
32
32
  The module will be instantiated and then its `start` method called. The HTML element with the `data-module` attribute is passed as the first argument to the module. This limits modules to acting only within their containing elements.
33
33
 
34
34
  ```javascript
35
- module = new GOVUK.Modules[type]();
36
- module.start(element);
35
+ module = new GOVUK.Modules[type]()
36
+ module.start(element)
37
37
  ```
38
38
 
39
39
  Running `GOVUK.modules.start()` multiple times will have no additional affect. When a module is started a flag is set on the element using the data attribute `module-started`. `data-module-started` is a reserved attribute. It can however be called with an element as the first argument, to allow modules to be started in dynamically loaded content:
40
40
 
41
41
  ```javascript
42
- var $container = $('.dynamic-content');
43
- GOVUK.modules.start($container);
42
+ var $container = $('.dynamic-content')
43
+ GOVUK.modules.start($container)
44
44
  ```
45
45
 
46
46
  ### Module structure
@@ -49,14 +49,15 @@ A module must add its constructor to `GOVUK.Modules` and it must have a `start`
49
49
  The simplest module looks like:
50
50
 
51
51
  ```javascript
52
- (function(Modules) {
53
- "use strict";
52
+ ;(function(Modules) {
53
+ 'use strict'
54
+
54
55
  Modules.SomeModule = function() {
55
56
  this.start = function($element) {
56
57
  // module code
57
58
  }
58
- };
59
- })(window.GOVUK.Modules);
59
+ }
60
+ })(window.GOVUK.Modules)
60
61
  ```
61
62
 
62
63
  ### Writing modules
@@ -80,8 +81,8 @@ Beginning with a set of event listeners clearly indicates the module’s intenti
80
81
 
81
82
  ```js
82
83
  this.start = function($element) {
83
- $element.on('click', '.js-toggle', toggle);
84
- $element.on('click', '.js-cancel', cancel);
84
+ $element.on('click', '.js-toggle', toggle)
85
+ $element.on('click', '.js-cancel', cancel)
85
86
  }
86
87
  ```
87
88
 
@@ -302,13 +303,13 @@ To add it to all lists which have items with the class `primary-item` use
302
303
  something like:
303
304
 
304
305
  ```javascript
305
- GOVUK.primaryLinks.init('.primary-item');
306
+ GOVUK.primaryLinks.init('.primary-item')
306
307
  ```
307
308
 
308
309
  Or to add it just to that list you could use:
309
310
 
310
311
  ```javascript
311
- new GOVUK.PrimaryList($('#primary-list'), '.primary-item');
312
+ new GOVUK.PrimaryList($('#primary-list'), '.primary-item')
312
313
  ```
313
314
 
314
315
  ## Stick at top when scrolling
@@ -333,7 +334,7 @@ The following would cause the element to stay when you scroll:
333
334
  ```
334
335
 
335
336
  ```javascript
336
- GOVUK.stickAtTopWhenScrolling.init();
337
+ GOVUK.stickAtTopWhenScrolling.init()
337
338
  ```
338
339
 
339
340
  If you also include the `stopScrollingAtFooter` JavaScript this will also try
@@ -356,14 +357,14 @@ When the input is focused or its `checked` attribute is set, classes are added t
356
357
  To apply this behaviour to elements with the above HTML pattern, call the `GOVUK.SelectionButtons` constructor with their inputs:
357
358
 
358
359
  ```
359
- var $buttons = $("label input[type='radio'], label input[type='checkbox']");
360
- var selectionButtons = new GOVUK.SelectionButtons($buttons);
360
+ var $buttons = $("label input[type='radio'], label input[type='checkbox']")
361
+ var selectionButtons = new GOVUK.SelectionButtons($buttons)
361
362
  ```
362
363
 
363
364
  You can also call `GOVUK.SelectionButtons` with a selector:
364
365
 
365
366
  ```
366
- var selectionButtons = new GOVUK.SelectionButtons("label input[type='radio'], label input[type='checkbox']");
367
+ var selectionButtons = new GOVUK.SelectionButtons("label input[type='radio'], label input[type='checkbox']")
367
368
  ```
368
369
 
369
370
  This will bind all events to the document, meaning any changes to content (for example, by AJAX) will not effect the button's behaviour.
@@ -371,10 +372,10 @@ This will bind all events to the document, meaning any changes to content (for e
371
372
  The classes that get added to the `<label>` tags can be passed in as options:
372
373
 
373
374
  ```
374
- var $buttons = $("label input[type='radio'], label input[type='checkbox']");
375
- var selectionButtons = new GOVUK.SelectionButtons($buttons, { focusedClass : 'selectable-focused', selectedClass : 'selectable-selected' });
375
+ var $buttons = $("label input[type='radio'], label input[type='checkbox']")
376
+ var selectionButtons = new GOVUK.SelectionButtons($buttons, { focusedClass : 'selectable-focused', selectedClass : 'selectable-selected' })
376
377
 
377
- var selectionButtons = new GOVUK.SelectionButtons("label input[type='radio'], label input[type='checkbox']", { focusedClass : 'selectable-focused', selectedClass : 'selectable-selected' });
378
+ var selectionButtons = new GOVUK.SelectionButtons("label input[type='radio'], label input[type='checkbox']", { focusedClass : 'selectable-focused', selectedClass : 'selectable-selected' })
378
379
  ```
379
380
 
380
381
  #### destroy method
@@ -393,8 +394,8 @@ The previous method of calling selection buttons is now deprecated. If you need
393
394
 
394
395
  ```
395
396
  GOVUK.selectionButtons = function (elms, opts) {
396
- new GOVUK.SelectionButtons(elms, opts);
397
- };
397
+ new GOVUK.SelectionButtons(elms, opts)
398
+ }
398
399
  ```
399
400
 
400
401
  This method will mean the `destroy` method is not available to call.
@@ -412,7 +413,7 @@ By default, this behaviour will only be applied to links with a role of button.
412
413
  ```
413
414
 
414
415
  ```javascript
415
- GOVUK.shimLinksWithButtonRole.init();
416
+ GOVUK.shimLinksWithButtonRole.init()
416
417
  ```
417
418
 
418
419
  If you need to override the elements this is applied to then you can do that by passing in a custom selector to the initialiser:
@@ -420,7 +421,7 @@ If you need to override the elements this is applied to then you can do that by
420
421
  ```javascript
421
422
  GOVUK.shimLinksWithButtonRole.init({
422
423
  selector: '.my-class'
423
- });
424
+ })
424
425
  ```
425
426
 
426
427
  It’s also possible to define more or different keycodes to activate against:
@@ -457,8 +458,8 @@ When the input's `checked` attribute is set, the show/hide content's `.js-hidden
457
458
  To apply this behaviour to elements with the above HTML pattern, call the `GOVUK.ShowHideContent` constructor:
458
459
 
459
460
  ```
460
- var showHideContent = new GOVUK.ShowHideContent();
461
- showHideContent.init();
461
+ var showHideContent = new GOVUK.ShowHideContent()
462
+ showHideContent.init()
462
463
  ```
463
464
 
464
465
  This will bind two event handlers to $(document.body), one for radio inputs and one for checkboxes. By listening for events bubbling up to the `body` tag, additional show/hide content added to the page will still be picked up after `.init()` is called.
@@ -466,6 +467,6 @@ This will bind two event handlers to $(document.body), one for radio inputs and
466
467
  Alternatively, pass in your own selector. In the example below, event handlers are bound to the form instead.
467
468
 
468
469
  ```
469
- var showHideContent = new GOVUK.ShowHideContent();
470
- showHideContent.init($('form.example'));
470
+ var showHideContent = new GOVUK.ShowHideContent()
471
+ showHideContent.init($('form.example'))
471
472
  ```
@@ -1,38 +1,38 @@
1
- (function(global) {
2
- "use strict";
1
+ ;(function (global) {
2
+ 'use strict'
3
3
 
4
- var GOVUK = global.GOVUK || {};
4
+ var GOVUK = global.GOVUK || {}
5
5
 
6
6
  // For usage and initialisation see:
7
7
  // https://github.com/alphagov/govuk_frontend_toolkit/blob/master/docs/analytics.md#create-an-analytics-tracker
8
8
 
9
- var Analytics = function(config) {
10
- this.trackers = [];
11
- if (typeof config.universalId != 'undefined') {
12
- var universalId = config.universalId;
13
- delete config.universalId;
14
- this.trackers.push(new GOVUK.GoogleAnalyticsUniversalTracker(universalId, config));
9
+ var Analytics = function (config) {
10
+ this.trackers = []
11
+ if (typeof config.universalId !== 'undefined') {
12
+ var universalId = config.universalId
13
+ delete config.universalId
14
+ this.trackers.push(new GOVUK.GoogleAnalyticsUniversalTracker(universalId, config))
15
15
  }
16
- };
16
+ }
17
17
 
18
- Analytics.prototype.sendToTrackers = function(method, args) {
18
+ Analytics.prototype.sendToTrackers = function (method, args) {
19
19
  for (var i = 0, l = this.trackers.length; i < l; i++) {
20
- var tracker = this.trackers[i],
21
- fn = tracker[method];
20
+ var tracker = this.trackers[i]
21
+ var fn = tracker[method]
22
22
 
23
- if (typeof fn === "function") {
24
- fn.apply(tracker, args);
23
+ if (typeof fn === 'function') {
24
+ fn.apply(tracker, args)
25
25
  }
26
26
  }
27
- };
27
+ }
28
28
 
29
- Analytics.load = function() {
30
- GOVUK.GoogleAnalyticsUniversalTracker.load();
31
- };
29
+ Analytics.load = function () {
30
+ GOVUK.GoogleAnalyticsUniversalTracker.load()
31
+ }
32
32
 
33
- Analytics.prototype.trackPageview = function(path, title, options) {
34
- this.sendToTrackers('trackPageview', arguments);
35
- };
33
+ Analytics.prototype.trackPageview = function (path, title, options) {
34
+ this.sendToTrackers('trackPageview', arguments)
35
+ }
36
36
 
37
37
  /*
38
38
  https://developers.google.com/analytics/devguides/collection/analyticsjs/events
@@ -40,30 +40,30 @@
40
40
  options.value – Values must be non-negative. Useful to pass counts
41
41
  options.nonInteraction – Prevent event from impacting bounce rate
42
42
  */
43
- Analytics.prototype.trackEvent = function(category, action, options) {
44
- this.sendToTrackers('trackEvent', arguments);
45
- };
43
+ Analytics.prototype.trackEvent = function (category, action, options) {
44
+ this.sendToTrackers('trackEvent', arguments)
45
+ }
46
46
 
47
- Analytics.prototype.trackShare = function(network) {
48
- this.sendToTrackers('trackSocial', [network, 'share', location.pathname]);
49
- };
47
+ Analytics.prototype.trackShare = function (network) {
48
+ this.sendToTrackers('trackSocial', [network, 'share', global.location.pathname])
49
+ }
50
50
 
51
51
  /*
52
52
  The custom dimension index must be configured within the
53
53
  Universal Analytics profile
54
54
  */
55
- Analytics.prototype.setDimension = function(index, value) {
56
- this.sendToTrackers('setDimension', arguments);
57
- };
55
+ Analytics.prototype.setDimension = function (index, value) {
56
+ this.sendToTrackers('setDimension', arguments)
57
+ }
58
58
 
59
59
  /*
60
60
  Add a beacon to track a page in another GA account on another domain.
61
61
  */
62
- Analytics.prototype.addLinkedTrackerDomain = function(trackerId, name, domain) {
63
- this.sendToTrackers('addLinkedTrackerDomain', arguments);
64
- };
62
+ Analytics.prototype.addLinkedTrackerDomain = function (trackerId, name, domain) {
63
+ this.sendToTrackers('addLinkedTrackerDomain', arguments)
64
+ }
65
65
 
66
- GOVUK.Analytics = Analytics;
66
+ GOVUK.Analytics = Analytics
67
67
 
68
- global.GOVUK = GOVUK;
69
- })(window);
68
+ global.GOVUK = GOVUK
69
+ })(window)
@@ -1,41 +1,41 @@
1
- (function(global) {
2
- "use strict";
1
+ ;(function (global) {
2
+ 'use strict'
3
3
 
4
- var $ = global.jQuery;
5
- var GOVUK = global.GOVUK || {};
4
+ var $ = global.jQuery
5
+ var GOVUK = global.GOVUK || {}
6
6
 
7
- GOVUK.analyticsPlugins = GOVUK.analyticsPlugins || {};
7
+ GOVUK.analyticsPlugins = GOVUK.analyticsPlugins || {}
8
8
  GOVUK.analyticsPlugins.downloadLinkTracker = function (options) {
9
- var options = options || {},
10
- downloadLinkSelector = options.selector;
9
+ options = options || {}
10
+ var downloadLinkSelector = options.selector
11
11
 
12
12
  if (downloadLinkSelector) {
13
- $('body').on('click', downloadLinkSelector, trackDownload);
13
+ $('body').on('click', downloadLinkSelector, trackDownload)
14
14
  }
15
15
 
16
- function trackDownload(evt) {
17
- var $link = getLinkFromEvent(evt),
18
- href = $link.attr('href'),
19
- evtOptions = {transport: 'beacon'},
20
- linkText = $.trim($link.text());
16
+ function trackDownload (evt) {
17
+ var $link = getLinkFromEvent(evt)
18
+ var href = $link.attr('href')
19
+ var evtOptions = {transport: 'beacon'}
20
+ var linkText = $.trim($link.text())
21
21
 
22
22
  if (linkText) {
23
- evtOptions.label = linkText;
23
+ evtOptions.label = linkText
24
24
  }
25
25
 
26
- GOVUK.analytics.trackEvent('Download Link Clicked', href, evtOptions);
26
+ GOVUK.analytics.trackEvent('Download Link Clicked', href, evtOptions)
27
27
  }
28
28
 
29
- function getLinkFromEvent(evt) {
30
- var $target = $(evt.target);
29
+ function getLinkFromEvent (evt) {
30
+ var $target = $(evt.target)
31
31
 
32
32
  if (!$target.is('a')) {
33
- $target = $target.parents('a');
33
+ $target = $target.parents('a')
34
34
  }
35
35
 
36
- return $target;
36
+ return $target
37
37
  }
38
38
  }
39
39
 
40
- global.GOVUK = GOVUK;
41
- })(window);
40
+ global.GOVUK = GOVUK
41
+ })(window)
@@ -1,51 +1,51 @@
1
1
  // Extension to track errors using google analytics as a data store.
2
- (function(global) {
3
- "use strict";
2
+ ;(function (global) {
3
+ 'use strict'
4
4
 
5
- var GOVUK = global.GOVUK || {};
5
+ var GOVUK = global.GOVUK || {}
6
6
 
7
- GOVUK.analyticsPlugins = GOVUK.analyticsPlugins || {};
7
+ GOVUK.analyticsPlugins = GOVUK.analyticsPlugins || {}
8
8
 
9
9
  GOVUK.analyticsPlugins.error = function (options) {
10
- var options = options || {},
11
- filenameMustMatch = options.filenameMustMatch;
10
+ options = options || {}
11
+ var filenameMustMatch = options.filenameMustMatch
12
12
 
13
13
  var trackJavaScriptError = function (e) {
14
- var errorFilename = e.filename,
15
- errorSource = errorFilename + ': ' + e.lineno;
14
+ var errorFilename = e.filename
15
+ var errorSource = errorFilename + ': ' + e.lineno
16
16
 
17
17
  if (shouldTrackThisError(errorFilename)) {
18
18
  GOVUK.analytics.trackEvent('JavaScript Error', e.message, {
19
19
  label: errorSource,
20
20
  value: 1,
21
21
  nonInteraction: true
22
- });
22
+ })
23
23
  }
24
- };
24
+ }
25
25
 
26
- function shouldTrackThisError(errorFilename) {
26
+ function shouldTrackThisError (errorFilename) {
27
27
  // Errors in page should always be tracked
28
28
  // If there's no filename filter, everything is tracked
29
29
  if (!errorFilename || !filenameMustMatch) {
30
- return true;
30
+ return true
31
31
  }
32
32
 
33
33
  // If there's a filter and the error matches it, track it
34
34
  if (filenameMustMatch.test(errorFilename)) {
35
- return true;
35
+ return true
36
36
  }
37
37
 
38
- return false;
38
+ return false
39
39
  }
40
40
 
41
41
  if (global.addEventListener) {
42
- global.addEventListener('error', trackJavaScriptError, false);
42
+ global.addEventListener('error', trackJavaScriptError, false)
43
43
  } else if (global.attachEvent) {
44
- global.attachEvent('onerror', trackJavaScriptError);
44
+ global.attachEvent('onerror', trackJavaScriptError)
45
45
  } else {
46
- global.onerror = trackJavaScriptError;
46
+ global.onerror = trackJavaScriptError
47
47
  }
48
48
  }
49
49
 
50
- global.GOVUK = GOVUK;
51
- })(window);
50
+ global.GOVUK = GOVUK
51
+ })(window)