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.
- checksums.yaml +4 -4
- data/app/assets/.gitignore +1 -0
- data/app/assets/CHANGELOG.md +5 -0
- data/app/assets/Gruntfile.js +21 -22
- data/app/assets/README.md +4 -0
- data/app/assets/VERSION.txt +1 -1
- data/app/assets/docs/javascript.md +29 -28
- data/app/assets/javascripts/govuk/analytics/analytics.js +37 -37
- data/app/assets/javascripts/govuk/analytics/download-link-tracker.js +21 -21
- data/app/assets/javascripts/govuk/analytics/error-tracking.js +19 -19
- data/app/assets/javascripts/govuk/analytics/external-link-tracker.js +23 -24
- data/app/assets/javascripts/govuk/analytics/google-analytics-universal-tracker.js +71 -70
- data/app/assets/javascripts/govuk/analytics/mailto-link-tracker.js +20 -21
- data/app/assets/javascripts/govuk/analytics/print-intent.js +19 -20
- data/app/assets/javascripts/govuk/modules.js +33 -32
- data/app/assets/javascripts/govuk/modules/auto-track-event.js +18 -18
- data/app/assets/javascripts/govuk/multivariate-test.js +83 -85
- data/app/assets/javascripts/govuk/primary-links.js +39 -38
- data/app/assets/javascripts/govuk/selection-buttons.js +57 -58
- data/app/assets/javascripts/govuk/shim-links-with-button-role.js +14 -15
- data/app/assets/javascripts/govuk/stick-at-top-when-scrolling.js +70 -70
- data/app/assets/javascripts/govuk/stop-scrolling-at-footer.js +74 -75
- data/app/assets/javascripts/govuk_toolkit.js +1 -1
- data/app/assets/javascripts/stageprompt.js +24 -25
- data/app/assets/javascripts/vendor/jquery/jquery.player.min.js +1 -1
- data/app/assets/package.json +10 -3
- data/app/assets/spec/manifest.js +2 -0
- data/app/assets/spec/support/console-runner.js +0 -1
- data/app/assets/spec/unit/analytics/analytics.spec.js +51 -47
- data/app/assets/spec/unit/analytics/download-link-tracker.spec.js +59 -51
- data/app/assets/spec/unit/analytics/error-tracking.spec.js +35 -30
- data/app/assets/spec/unit/analytics/external-link-tracker.spec.js +69 -61
- data/app/assets/spec/unit/analytics/google-analytics-universal-tracker.spec.js +129 -122
- data/app/assets/spec/unit/analytics/mailto-link-tracker.spec.js +55 -47
- data/app/assets/spec/unit/modules.spec.js +82 -78
- data/app/assets/spec/unit/modules/auto-track-event.spec.js +45 -40
- data/app/assets/spec/unit/multivariate-test.spec.js +150 -145
- data/app/assets/spec/unit/primary-links.spec.js +53 -47
- data/app/assets/spec/unit/selection-button.spec.js +701 -693
- data/app/assets/spec/unit/shim-links-with-button-role.spec.js +33 -28
- data/app/assets/spec/unit/show-hide-content.spec.js +5 -1
- data/app/assets/spec/unit/stick-at-top-when-scrolling.spec.js +104 -107
- metadata +2 -2
| @@ -8,11 +8,11 @@ | |
| 8 8 | 
             
            // object with your own selector for the target elements and addional keyup
         | 
| 9 9 | 
             
            // codes if there becomes a need to do so. For example:
         | 
| 10 10 | 
             
            // GOVUK.shimLinksWithButtonRole.init({ selector: '[role="button"]' });
         | 
| 11 | 
            -
            (function(global) {
         | 
| 12 | 
            -
               | 
| 11 | 
            +
            ;(function (global) {
         | 
| 12 | 
            +
              'use strict'
         | 
| 13 13 |  | 
| 14 | 
            -
              var $ = global.jQuery | 
| 15 | 
            -
              var GOVUK = global.GOVUK || {} | 
| 14 | 
            +
              var $ = global.jQuery
         | 
| 15 | 
            +
              var GOVUK = global.GOVUK || {}
         | 
| 16 16 |  | 
| 17 17 | 
             
              GOVUK.shimLinksWithButtonRole = {
         | 
| 18 18 |  | 
| @@ -27,12 +27,12 @@ | |
| 27 27 | 
             
                },
         | 
| 28 28 |  | 
| 29 29 | 
             
                // event behaviour (not a typical anonymous function for resuse if needed)
         | 
| 30 | 
            -
                triggerClickOnTarget: function triggerClickOnTarget(event) {
         | 
| 30 | 
            +
                triggerClickOnTarget: function triggerClickOnTarget (event) {
         | 
| 31 31 | 
             
                  // if the code from this event is in the keycodes array then
         | 
| 32 32 | 
             
                  if ($.inArray(event.which, this.config.keycodes) !== -1) {
         | 
| 33 | 
            -
                    event.preventDefault() | 
| 33 | 
            +
                    event.preventDefault()
         | 
| 34 34 | 
             
                    // trigger the target's click event
         | 
| 35 | 
            -
                    event.target.click() | 
| 35 | 
            +
                    event.target.click()
         | 
| 36 36 | 
             
                  }
         | 
| 37 37 | 
             
                },
         | 
| 38 38 |  | 
| @@ -42,19 +42,18 @@ | |
| 42 42 | 
             
                // @param  {Object}   customConfig                object to override default configuration
         | 
| 43 43 | 
             
                //         {String}   customConfig.selector       a selector for the elements to be 'clicked'
         | 
| 44 44 | 
             
                //         {Array}    customConfig.keycodes       an array of javascript keycode values to match against that when pressed will trigger the click
         | 
| 45 | 
            -
                init: function init(customConfig) {
         | 
| 45 | 
            +
                init: function init (customConfig) {
         | 
| 46 46 | 
             
                  // extend the default config with any custom attributes passed in
         | 
| 47 | 
            -
                  this.config = $.extend(this.config, customConfig) | 
| 47 | 
            +
                  this.config = $.extend(this.config, customConfig)
         | 
| 48 48 | 
             
                  // if we have found elements then:
         | 
| 49 | 
            -
                  if($(this.config.selector).length > 0) {
         | 
| 49 | 
            +
                  if ($(this.config.selector).length > 0) {
         | 
| 50 50 | 
             
                    // listen to 'document' for keyup event on the elements and fire the triggerClickOnTarget
         | 
| 51 | 
            -
                    $(document).on('keyup', this.config.selector, this.triggerClickOnTarget.bind(this)) | 
| 51 | 
            +
                    $(document).on('keyup', this.config.selector, this.triggerClickOnTarget.bind(this))
         | 
| 52 52 | 
             
                  }
         | 
| 53 53 | 
             
                }
         | 
| 54 54 |  | 
| 55 | 
            -
              } | 
| 55 | 
            +
              }
         | 
| 56 56 |  | 
| 57 57 | 
             
              // hand back to global
         | 
| 58 | 
            -
              global.GOVUK = GOVUK | 
| 59 | 
            -
             | 
| 60 | 
            -
            })(window);
         | 
| 58 | 
            +
              global.GOVUK = GOVUK
         | 
| 59 | 
            +
            })(window)
         | 
| @@ -1,8 +1,8 @@ | |
| 1 | 
            -
            (function (global) {
         | 
| 2 | 
            -
               | 
| 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 7 | 
             
              // Stick elements to top of screen when you scroll past, documentation is in the README.md
         | 
| 8 8 | 
             
              var sticky = {
         | 
| @@ -11,108 +11,108 @@ | |
| 11 11 | 
             
                _hasResized: false,
         | 
| 12 12 | 
             
                _resizeTimeout: false,
         | 
| 13 13 |  | 
| 14 | 
            -
                getWindowDimensions: function() {
         | 
| 14 | 
            +
                getWindowDimensions: function () {
         | 
| 15 15 | 
             
                  return {
         | 
| 16 16 | 
             
                    height: $(global).height(),
         | 
| 17 17 | 
             
                    width: $(global).width()
         | 
| 18 | 
            -
                  } | 
| 18 | 
            +
                  }
         | 
| 19 19 | 
             
                },
         | 
| 20 | 
            -
                getWindowPositions: function() {
         | 
| 20 | 
            +
                getWindowPositions: function () {
         | 
| 21 21 | 
             
                  return {
         | 
| 22 22 | 
             
                    scrollTop: $(global).scrollTop()
         | 
| 23 | 
            -
                  } | 
| 23 | 
            +
                  }
         | 
| 24 24 | 
             
                },
         | 
| 25 | 
            -
                getElementOffset: function($el) {
         | 
| 25 | 
            +
                getElementOffset: function ($el) {
         | 
| 26 26 | 
             
                  return $el.offset()
         | 
| 27 27 | 
             
                },
         | 
| 28 | 
            -
                init: function(){
         | 
| 29 | 
            -
                  var $els = $('.js-stick-at-top-when-scrolling') | 
| 28 | 
            +
                init: function () {
         | 
| 29 | 
            +
                  var $els = $('.js-stick-at-top-when-scrolling')
         | 
| 30 30 |  | 
| 31 | 
            -
                  if($els.length > 0){
         | 
| 32 | 
            -
                    sticky.$els = $els | 
| 31 | 
            +
                  if ($els.length > 0) {
         | 
| 32 | 
            +
                    sticky.$els = $els
         | 
| 33 33 |  | 
| 34 | 
            -
                    if(sticky._scrollTimeout === false) {
         | 
| 35 | 
            -
                      $(global).scroll(sticky.onScroll) | 
| 36 | 
            -
                      sticky._scrollTimeout = global.setInterval(sticky.checkScroll, 50) | 
| 34 | 
            +
                    if (sticky._scrollTimeout === false) {
         | 
| 35 | 
            +
                      $(global).scroll(sticky.onScroll)
         | 
| 36 | 
            +
                      sticky._scrollTimeout = global.setInterval(sticky.checkScroll, 50)
         | 
| 37 37 | 
             
                    }
         | 
| 38 38 |  | 
| 39 | 
            -
                    if(sticky._resizeTimeout === false) {
         | 
| 40 | 
            -
                      $(global).resize(sticky.onResize) | 
| 41 | 
            -
                      sticky._resizeTimeout = global.setInterval(sticky.checkResize, 50) | 
| 39 | 
            +
                    if (sticky._resizeTimeout === false) {
         | 
| 40 | 
            +
                      $(global).resize(sticky.onResize)
         | 
| 41 | 
            +
                      sticky._resizeTimeout = global.setInterval(sticky.checkResize, 50)
         | 
| 42 42 | 
             
                    }
         | 
| 43 43 | 
             
                  }
         | 
| 44 | 
            -
                  if(GOVUK.stopScrollingAtFooter){
         | 
| 45 | 
            -
                    $els.each(function(i,el){
         | 
| 46 | 
            -
                      var $img = $(el).find('img') | 
| 47 | 
            -
                      if($img.length > 0){
         | 
| 48 | 
            -
                        var image = new Image() | 
| 49 | 
            -
                        image.onload = function(){
         | 
| 50 | 
            -
                          GOVUK.stopScrollingAtFooter.addEl($(el), $(el).outerHeight()) | 
| 51 | 
            -
                        } | 
| 52 | 
            -
                        image.src = $img.attr('src') | 
| 44 | 
            +
                  if (GOVUK.stopScrollingAtFooter) {
         | 
| 45 | 
            +
                    $els.each(function (i, el) {
         | 
| 46 | 
            +
                      var $img = $(el).find('img')
         | 
| 47 | 
            +
                      if ($img.length > 0) {
         | 
| 48 | 
            +
                        var image = new global.Image()
         | 
| 49 | 
            +
                        image.onload = function () {
         | 
| 50 | 
            +
                          GOVUK.stopScrollingAtFooter.addEl($(el), $(el).outerHeight())
         | 
| 51 | 
            +
                        }
         | 
| 52 | 
            +
                        image.src = $img.attr('src')
         | 
| 53 53 | 
             
                      } else {
         | 
| 54 | 
            -
                        GOVUK.stopScrollingAtFooter.addEl($(el), $(el).outerHeight()) | 
| 54 | 
            +
                        GOVUK.stopScrollingAtFooter.addEl($(el), $(el).outerHeight())
         | 
| 55 55 | 
             
                      }
         | 
| 56 | 
            -
                    }) | 
| 56 | 
            +
                    })
         | 
| 57 57 | 
             
                  }
         | 
| 58 58 | 
             
                },
         | 
| 59 | 
            -
                onScroll: function(){
         | 
| 60 | 
            -
                  sticky._hasScrolled = true | 
| 59 | 
            +
                onScroll: function () {
         | 
| 60 | 
            +
                  sticky._hasScrolled = true
         | 
| 61 61 | 
             
                },
         | 
| 62 | 
            -
                onResize: function(){
         | 
| 63 | 
            -
                  sticky._hasResized = true | 
| 62 | 
            +
                onResize: function () {
         | 
| 63 | 
            +
                  sticky._hasResized = true
         | 
| 64 64 | 
             
                },
         | 
| 65 | 
            -
                checkScroll: function(){
         | 
| 66 | 
            -
                  if(sticky._hasScrolled === true){
         | 
| 67 | 
            -
                    sticky._hasScrolled = false | 
| 65 | 
            +
                checkScroll: function () {
         | 
| 66 | 
            +
                  if (sticky._hasScrolled === true) {
         | 
| 67 | 
            +
                    sticky._hasScrolled = false
         | 
| 68 68 |  | 
| 69 | 
            -
                    var windowVerticalPosition = sticky.getWindowPositions().scrollTop | 
| 69 | 
            +
                    var windowVerticalPosition = sticky.getWindowPositions().scrollTop
         | 
| 70 70 |  | 
| 71 | 
            -
                    var windowDimensions = sticky.getWindowDimensions() | 
| 71 | 
            +
                    var windowDimensions = sticky.getWindowDimensions()
         | 
| 72 72 |  | 
| 73 | 
            -
                    sticky.$els.each(function(i, el){
         | 
| 74 | 
            -
                      var $el = $(el) | 
| 75 | 
            -
             | 
| 73 | 
            +
                    sticky.$els.each(function (i, el) {
         | 
| 74 | 
            +
                      var $el = $(el)
         | 
| 75 | 
            +
                      var scrolledFrom = $el.data('scrolled-from')
         | 
| 76 76 |  | 
| 77 | 
            -
                      if (scrolledFrom && windowVerticalPosition < scrolledFrom){
         | 
| 78 | 
            -
                        sticky.release($el) | 
| 79 | 
            -
                      } else if(windowDimensions.width > 768 && windowVerticalPosition >= sticky.getElementOffset($el).top) {
         | 
| 80 | 
            -
                        sticky.stick($el) | 
| 77 | 
            +
                      if (scrolledFrom && windowVerticalPosition < scrolledFrom) {
         | 
| 78 | 
            +
                        sticky.release($el)
         | 
| 79 | 
            +
                      } else if (windowDimensions.width > 768 && windowVerticalPosition >= sticky.getElementOffset($el).top) {
         | 
| 80 | 
            +
                        sticky.stick($el)
         | 
| 81 81 | 
             
                      }
         | 
| 82 | 
            -
                    }) | 
| 82 | 
            +
                    })
         | 
| 83 83 | 
             
                  }
         | 
| 84 84 | 
             
                },
         | 
| 85 | 
            -
                checkResize: function() {
         | 
| 86 | 
            -
                  if(sticky._hasResized === true){
         | 
| 87 | 
            -
                    sticky._hasResized = false | 
| 85 | 
            +
                checkResize: function () {
         | 
| 86 | 
            +
                  if (sticky._hasResized === true) {
         | 
| 87 | 
            +
                    sticky._hasResized = false
         | 
| 88 88 |  | 
| 89 | 
            -
                    var windowDimensions = sticky.getWindowDimensions() | 
| 89 | 
            +
                    var windowDimensions = sticky.getWindowDimensions()
         | 
| 90 90 |  | 
| 91 | 
            -
                    sticky.$els.each(function(i, el){
         | 
| 92 | 
            -
                      var $el = $(el) | 
| 91 | 
            +
                    sticky.$els.each(function (i, el) {
         | 
| 92 | 
            +
                      var $el = $(el)
         | 
| 93 93 |  | 
| 94 | 
            -
                      if(windowDimensions.width <= 768) {
         | 
| 95 | 
            -
                        sticky.release($el) | 
| 94 | 
            +
                      if (windowDimensions.width <= 768) {
         | 
| 95 | 
            +
                        sticky.release($el)
         | 
| 96 96 | 
             
                      }
         | 
| 97 | 
            -
                    }) | 
| 97 | 
            +
                    })
         | 
| 98 98 | 
             
                  }
         | 
| 99 99 | 
             
                },
         | 
| 100 | 
            -
                stick: function($el){
         | 
| 100 | 
            +
                stick: function ($el) {
         | 
| 101 101 | 
             
                  if (!$el.hasClass('content-fixed')) {
         | 
| 102 | 
            -
                    $el.data('scrolled-from', sticky.getElementOffset($el).top) | 
| 103 | 
            -
                    var height = Math.max($el.height(), 1) | 
| 104 | 
            -
                    $el.before('<div class="shim" style="width: '+ $el.width() + 'px; height: ' + height + 'px"> </div>') | 
| 105 | 
            -
                    $el.css('width', $el.width() +  | 
| 102 | 
            +
                    $el.data('scrolled-from', sticky.getElementOffset($el).top)
         | 
| 103 | 
            +
                    var height = Math.max($el.height(), 1)
         | 
| 104 | 
            +
                    $el.before('<div class="shim" style="width: ' + $el.width() + 'px; height: ' + height + 'px"> </div>')
         | 
| 105 | 
            +
                    $el.css('width', $el.width() + 'px').addClass('content-fixed')
         | 
| 106 106 | 
             
                  }
         | 
| 107 107 | 
             
                },
         | 
| 108 | 
            -
                release: function($el){
         | 
| 109 | 
            -
                  if($el.hasClass('content-fixed')){
         | 
| 110 | 
            -
                    $el.data('scrolled-from', false) | 
| 111 | 
            -
                    $el.removeClass('content-fixed').css('width', '') | 
| 112 | 
            -
                    $el.siblings('.shim').remove() | 
| 108 | 
            +
                release: function ($el) {
         | 
| 109 | 
            +
                  if ($el.hasClass('content-fixed')) {
         | 
| 110 | 
            +
                    $el.data('scrolled-from', false)
         | 
| 111 | 
            +
                    $el.removeClass('content-fixed').css('width', '')
         | 
| 112 | 
            +
                    $el.siblings('.shim').remove()
         | 
| 113 113 | 
             
                  }
         | 
| 114 114 | 
             
                }
         | 
| 115 | 
            -
              } | 
| 116 | 
            -
              GOVUK.stickAtTopWhenScrolling = sticky | 
| 117 | 
            -
              global.GOVUK = GOVUK | 
| 118 | 
            -
            })(window) | 
| 115 | 
            +
              }
         | 
| 116 | 
            +
              GOVUK.stickAtTopWhenScrolling = sticky
         | 
| 117 | 
            +
              global.GOVUK = GOVUK
         | 
| 118 | 
            +
            })(window)
         | 
| @@ -10,12 +10,11 @@ | |
| 10 10 | 
             
            // Height is passed in separatly incase the scrolling element has no height
         | 
| 11 11 | 
             
            // itself.
         | 
| 12 12 |  | 
| 13 | 
            +
            ;(function (global) {
         | 
| 14 | 
            +
              'use strict'
         | 
| 13 15 |  | 
| 14 | 
            -
             | 
| 15 | 
            -
               | 
| 16 | 
            -
             | 
| 17 | 
            -
              var $ = global.jQuery;
         | 
| 18 | 
            -
              var GOVUK = global.GOVUK || {};
         | 
| 16 | 
            +
              var $ = global.jQuery
         | 
| 17 | 
            +
              var GOVUK = global.GOVUK || {}
         | 
| 19 18 |  | 
| 20 19 | 
             
              var stopScrollingAtFooter = {
         | 
| 21 20 | 
             
                _pollingId: null,
         | 
| @@ -23,118 +22,118 @@ | |
| 23 22 | 
             
                _hasScrollEvt: false,
         | 
| 24 23 | 
             
                _els: [],
         | 
| 25 24 |  | 
| 26 | 
            -
                addEl: function($fixedEl, height){
         | 
| 27 | 
            -
                  var fixedOffset | 
| 25 | 
            +
                addEl: function ($fixedEl, height) {
         | 
| 26 | 
            +
                  var fixedOffset
         | 
| 28 27 |  | 
| 29 | 
            -
                  if(!$fixedEl.length) { return | 
| 28 | 
            +
                  if (!$fixedEl.length) { return }
         | 
| 30 29 |  | 
| 31 | 
            -
                  fixedOffset = parseInt($fixedEl.css('top'), 10) | 
| 32 | 
            -
                  fixedOffset = isNaN(fixedOffset) ? 0 : fixedOffset | 
| 30 | 
            +
                  fixedOffset = parseInt($fixedEl.css('top'), 10)
         | 
| 31 | 
            +
                  fixedOffset = isNaN(fixedOffset) ? 0 : fixedOffset
         | 
| 33 32 |  | 
| 34 | 
            -
                  stopScrollingAtFooter.updateFooterTop() | 
| 35 | 
            -
                  $(global).on('govuk.pageSizeChanged', stopScrollingAtFooter.updateFooterTop) | 
| 33 | 
            +
                  stopScrollingAtFooter.updateFooterTop()
         | 
| 34 | 
            +
                  $(global).on('govuk.pageSizeChanged', stopScrollingAtFooter.updateFooterTop)
         | 
| 36 35 |  | 
| 37 | 
            -
                  var $siblingEl = $('<div></div>') | 
| 38 | 
            -
                  $siblingEl.insertBefore($fixedEl) | 
| 39 | 
            -
                  var fixedTop = $siblingEl.offset().top - $siblingEl.position().top | 
| 40 | 
            -
                  $siblingEl.remove() | 
| 36 | 
            +
                  var $siblingEl = $('<div></div>')
         | 
| 37 | 
            +
                  $siblingEl.insertBefore($fixedEl)
         | 
| 38 | 
            +
                  var fixedTop = $siblingEl.offset().top - $siblingEl.position().top
         | 
| 39 | 
            +
                  $siblingEl.remove()
         | 
| 41 40 |  | 
| 42 41 | 
             
                  var el = {
         | 
| 43 42 | 
             
                    $fixedEl: $fixedEl,
         | 
| 44 43 | 
             
                    height: height + fixedOffset,
         | 
| 45 44 | 
             
                    fixedTop: height + fixedTop,
         | 
| 46 45 | 
             
                    state: 'fixed'
         | 
| 47 | 
            -
                  } | 
| 48 | 
            -
                  stopScrollingAtFooter._els.push(el) | 
| 46 | 
            +
                  }
         | 
| 47 | 
            +
                  stopScrollingAtFooter._els.push(el)
         | 
| 49 48 |  | 
| 50 | 
            -
                  stopScrollingAtFooter.initTimeout() | 
| 49 | 
            +
                  stopScrollingAtFooter.initTimeout()
         | 
| 51 50 | 
             
                },
         | 
| 52 | 
            -
                updateFooterTop: function(){
         | 
| 53 | 
            -
                  var footer = $('.js-footer:eq(0)') | 
| 51 | 
            +
                updateFooterTop: function () {
         | 
| 52 | 
            +
                  var footer = $('.js-footer:eq(0)')
         | 
| 54 53 | 
             
                  if (footer.length === 0) {
         | 
| 55 | 
            -
                    return 0 | 
| 54 | 
            +
                    return 0
         | 
| 56 55 | 
             
                  }
         | 
| 57 | 
            -
                  stopScrollingAtFooter.footerTop = footer.offset().top - 10 | 
| 56 | 
            +
                  stopScrollingAtFooter.footerTop = footer.offset().top - 10
         | 
| 58 57 | 
             
                },
         | 
| 59 | 
            -
                initTimeout: function(){
         | 
| 60 | 
            -
                  if(stopScrollingAtFooter._hasScrollEvt === false) {
         | 
| 61 | 
            -
                    $(window).scroll(stopScrollingAtFooter.onScroll) | 
| 62 | 
            -
                    stopScrollingAtFooter._hasScrollEvt = true | 
| 58 | 
            +
                initTimeout: function () {
         | 
| 59 | 
            +
                  if (stopScrollingAtFooter._hasScrollEvt === false) {
         | 
| 60 | 
            +
                    $(window).scroll(stopScrollingAtFooter.onScroll)
         | 
| 61 | 
            +
                    stopScrollingAtFooter._hasScrollEvt = true
         | 
| 63 62 | 
             
                  }
         | 
| 64 63 | 
             
                },
         | 
| 65 | 
            -
                onScroll: function(){
         | 
| 64 | 
            +
                onScroll: function () {
         | 
| 66 65 | 
             
                  if (stopScrollingAtFooter._isPolling === false) {
         | 
| 67 | 
            -
                    stopScrollingAtFooter.startPolling() | 
| 66 | 
            +
                    stopScrollingAtFooter.startPolling()
         | 
| 68 67 | 
             
                  }
         | 
| 69 68 | 
             
                },
         | 
| 70 | 
            -
                startPolling: (function(){
         | 
| 69 | 
            +
                startPolling: (function () {
         | 
| 71 70 | 
             
                  if (window.requestAnimationFrame) {
         | 
| 72 | 
            -
                    return  | 
| 73 | 
            -
                      var callback = function(){
         | 
| 74 | 
            -
                        stopScrollingAtFooter.checkScroll() | 
| 71 | 
            +
                    return function () {
         | 
| 72 | 
            +
                      var callback = function () {
         | 
| 73 | 
            +
                        stopScrollingAtFooter.checkScroll()
         | 
| 75 74 | 
             
                        if (stopScrollingAtFooter._isPolling === true) {
         | 
| 76 | 
            -
                          stopScrollingAtFooter.startPolling() | 
| 75 | 
            +
                          stopScrollingAtFooter.startPolling()
         | 
| 77 76 | 
             
                        }
         | 
| 78 | 
            -
                      } | 
| 79 | 
            -
                      stopScrollingAtFooter._pollingId = window.requestAnimationFrame(callback) | 
| 80 | 
            -
                      stopScrollingAtFooter._isPolling = true | 
| 81 | 
            -
                    } | 
| 77 | 
            +
                      }
         | 
| 78 | 
            +
                      stopScrollingAtFooter._pollingId = window.requestAnimationFrame(callback)
         | 
| 79 | 
            +
                      stopScrollingAtFooter._isPolling = true
         | 
| 80 | 
            +
                    }
         | 
| 82 81 | 
             
                  } else {
         | 
| 83 | 
            -
                    return  | 
| 84 | 
            -
                      stopScrollingAtFooter._pollingId = window.setInterval(stopScrollingAtFooter.checkScroll, 16) | 
| 85 | 
            -
                      stopScrollingAtFooter._isPolling = true | 
| 86 | 
            -
                    } | 
| 82 | 
            +
                    return function () {
         | 
| 83 | 
            +
                      stopScrollingAtFooter._pollingId = window.setInterval(stopScrollingAtFooter.checkScroll, 16)
         | 
| 84 | 
            +
                      stopScrollingAtFooter._isPolling = true
         | 
| 85 | 
            +
                    }
         | 
| 87 86 | 
             
                  }
         | 
| 88 87 | 
             
                }()),
         | 
| 89 | 
            -
                stopPolling: (function(){
         | 
| 88 | 
            +
                stopPolling: (function () {
         | 
| 90 89 | 
             
                  if (window.requestAnimationFrame) {
         | 
| 91 | 
            -
                    return  | 
| 92 | 
            -
                      window.cancelAnimationFrame(stopScrollingAtFooter._pollingId) | 
| 93 | 
            -
                      stopScrollingAtFooter._isPolling = false | 
| 94 | 
            -
                    } | 
| 90 | 
            +
                    return function () {
         | 
| 91 | 
            +
                      window.cancelAnimationFrame(stopScrollingAtFooter._pollingId)
         | 
| 92 | 
            +
                      stopScrollingAtFooter._isPolling = false
         | 
| 93 | 
            +
                    }
         | 
| 95 94 | 
             
                  } else {
         | 
| 96 | 
            -
                    return  | 
| 97 | 
            -
                      window.clearInterval(stopScrollingAtFooter._pollingId) | 
| 98 | 
            -
                      stopScrollingAtFooter._isPolling = false | 
| 99 | 
            -
                    } | 
| 95 | 
            +
                    return function () {
         | 
| 96 | 
            +
                      window.clearInterval(stopScrollingAtFooter._pollingId)
         | 
| 97 | 
            +
                      stopScrollingAtFooter._isPolling = false
         | 
| 98 | 
            +
                    }
         | 
| 100 99 | 
             
                  }
         | 
| 101 100 | 
             
                }()),
         | 
| 102 | 
            -
                checkScroll: function(){
         | 
| 103 | 
            -
                  var cachedScrollTop = $(window).scrollTop() | 
| 101 | 
            +
                checkScroll: function () {
         | 
| 102 | 
            +
                  var cachedScrollTop = $(window).scrollTop()
         | 
| 104 103 | 
             
                  if ((cachedScrollTop < (stopScrollingAtFooter.cachedScrollTop + 2)) && (cachedScrollTop > (stopScrollingAtFooter.cachedScrollTop - 2))) {
         | 
| 105 | 
            -
                    stopScrollingAtFooter.stopPolling() | 
| 106 | 
            -
                    return | 
| 104 | 
            +
                    stopScrollingAtFooter.stopPolling()
         | 
| 105 | 
            +
                    return
         | 
| 107 106 | 
             
                  } else {
         | 
| 108 | 
            -
                    stopScrollingAtFooter.cachedScrollTop = cachedScrollTop | 
| 107 | 
            +
                    stopScrollingAtFooter.cachedScrollTop = cachedScrollTop
         | 
| 109 108 | 
             
                  }
         | 
| 110 109 |  | 
| 111 | 
            -
                  $.each(stopScrollingAtFooter._els, function(i, el){
         | 
| 112 | 
            -
                    var bottomOfEl = cachedScrollTop + el.height | 
| 110 | 
            +
                  $.each(stopScrollingAtFooter._els, function (i, el) {
         | 
| 111 | 
            +
                    var bottomOfEl = cachedScrollTop + el.height
         | 
| 113 112 |  | 
| 114 | 
            -
                    if (bottomOfEl > stopScrollingAtFooter.footerTop){
         | 
| 115 | 
            -
                      stopScrollingAtFooter.stick(el) | 
| 113 | 
            +
                    if (bottomOfEl > stopScrollingAtFooter.footerTop) {
         | 
| 114 | 
            +
                      stopScrollingAtFooter.stick(el)
         | 
| 116 115 | 
             
                    } else {
         | 
| 117 | 
            -
                      stopScrollingAtFooter.unstick(el) | 
| 116 | 
            +
                      stopScrollingAtFooter.unstick(el)
         | 
| 118 117 | 
             
                    }
         | 
| 119 | 
            -
                  }) | 
| 118 | 
            +
                  })
         | 
| 120 119 | 
             
                },
         | 
| 121 | 
            -
                stick: function(el){
         | 
| 122 | 
            -
                  if(el.state === 'fixed' && el.$fixedEl.css('position') === 'fixed'){
         | 
| 123 | 
            -
                    el.$fixedEl.css({ 'position': 'absolute', 'top': stopScrollingAtFooter.footerTop - el.fixedTop }) | 
| 124 | 
            -
                    el.state = 'absolute' | 
| 120 | 
            +
                stick: function (el) {
         | 
| 121 | 
            +
                  if (el.state === 'fixed' && el.$fixedEl.css('position') === 'fixed') {
         | 
| 122 | 
            +
                    el.$fixedEl.css({ 'position': 'absolute', 'top': stopScrollingAtFooter.footerTop - el.fixedTop })
         | 
| 123 | 
            +
                    el.state = 'absolute'
         | 
| 125 124 | 
             
                  }
         | 
| 126 125 | 
             
                },
         | 
| 127 | 
            -
                unstick: function(el){
         | 
| 128 | 
            -
                  if(el.state === 'absolute'){
         | 
| 129 | 
            -
                    el.$fixedEl.css({ 'position': '', 'top': '' }) | 
| 130 | 
            -
                    el.state = 'fixed' | 
| 126 | 
            +
                unstick: function (el) {
         | 
| 127 | 
            +
                  if (el.state === 'absolute') {
         | 
| 128 | 
            +
                    el.$fixedEl.css({ 'position': '', 'top': '' })
         | 
| 129 | 
            +
                    el.state = 'fixed'
         | 
| 131 130 | 
             
                  }
         | 
| 132 131 | 
             
                }
         | 
| 133 | 
            -
              } | 
| 132 | 
            +
              }
         | 
| 134 133 |  | 
| 135 | 
            -
              GOVUK.stopScrollingAtFooter = stopScrollingAtFooter | 
| 134 | 
            +
              GOVUK.stopScrollingAtFooter = stopScrollingAtFooter
         | 
| 136 135 |  | 
| 137 | 
            -
              $(global).load(function(){ $(global).trigger('govuk.pageSizeChanged') | 
| 136 | 
            +
              $(global).load(function () { $(global).trigger('govuk.pageSizeChanged') })
         | 
| 138 137 |  | 
| 139 | 
            -
              global.GOVUK = GOVUK | 
| 140 | 
            -
            })(window) | 
| 138 | 
            +
              global.GOVUK = GOVUK
         | 
| 139 | 
            +
            })(window)
         |