headroom-rails 0.0.1 → 0.0.2
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 +5 -5
- data/README.md +2 -0
- data/lib/headroom/version.rb +1 -1
- data/vendor/assets/javascripts/angular.headroom.js +27 -17
- data/vendor/assets/javascripts/headroom.js +132 -18
- data/vendor/assets/javascripts/headroom.min.js +3 -3
- data/vendor/assets/javascripts/jQuery.headroom.js +5 -1
- metadata +7 -8
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 2 | 
            +
            SHA256:
         | 
| 3 | 
            +
              metadata.gz: 40f3145160a96d3a2316531d30761aea69db6625978db6e1113854e486f3bc41
         | 
| 4 | 
            +
              data.tar.gz: aefe68b71a158e689dbae59a00653528792f60f6423f27c690eadf609699cc75
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 9e06ef49f40752e67481f19f80f18adcceac5065fde1620bcbedd39020ecc145296dcbde3ece846c691843b04accd854d4b0264b7380b6e4c8c526f887a71fc2
         | 
| 7 | 
            +
              data.tar.gz: fa10d25a9d5ac0cce6c3edce0d3d684b4c68e7014cab142d322e5b2a94e9e59bee63f02dc445aea22ecd8202d25e91766683b1d00dfba9f1f689e04906dbbb75
         | 
    
        data/README.md
    CHANGED
    
    
    
        data/lib/headroom/version.rb
    CHANGED
    
    
| @@ -1,33 +1,43 @@ | |
| 1 | 
            -
            (function(angular) {
         | 
| 1 | 
            +
            (function (angular, Headroom) {
         | 
| 2 2 |  | 
| 3 3 | 
             
              if(!angular) {
         | 
| 4 4 | 
             
                return;
         | 
| 5 5 | 
             
              }
         | 
| 6 6 |  | 
| 7 | 
            -
               | 
| 8 | 
            -
              // Directive //
         | 
| 9 | 
            -
              ///////////////
         | 
| 10 | 
            -
             | 
| 11 | 
            -
              angular.module('headroom', []).directive('headroom', function() {
         | 
| 7 | 
            +
              function headroom(HeadroomService) {
         | 
| 12 8 | 
             
                return {
         | 
| 13 | 
            -
                  restrict: 'EA',
         | 
| 14 9 | 
             
                  scope: {
         | 
| 15 10 | 
             
                    tolerance: '=',
         | 
| 16 11 | 
             
                    offset: '=',
         | 
| 17 | 
            -
                    classes: '='
         | 
| 12 | 
            +
                    classes: '=',
         | 
| 13 | 
            +
                    scroller: '@'
         | 
| 18 14 | 
             
                  },
         | 
| 19 | 
            -
                  link: function(scope, element) {
         | 
| 15 | 
            +
                  link: function ($scope, $element) {
         | 
| 20 16 | 
             
                    var options = {};
         | 
| 21 | 
            -
                     | 
| 22 | 
            -
             | 
| 23 | 
            -
             | 
| 24 | 
            -
                     | 
| 25 | 
            -
                     | 
| 26 | 
            -
             | 
| 17 | 
            +
                    var opts = HeadroomService.options;
         | 
| 18 | 
            +
                    for (var prop in opts) {
         | 
| 19 | 
            +
                      options[prop] = $scope[prop] || opts[prop];
         | 
| 20 | 
            +
                    }
         | 
| 21 | 
            +
                    if ($scope.scroller) {
         | 
| 22 | 
            +
                      options.scroller = document.querySelector($scope.scroller);
         | 
| 23 | 
            +
                    }
         | 
| 24 | 
            +
                    var headroom = new HeadroomService($element[0], options).init();
         | 
| 25 | 
            +
                    $scope.$on('$destroy', function(){
         | 
| 27 26 | 
             
                      headroom.destroy();
         | 
| 28 27 | 
             
                    });
         | 
| 29 28 | 
             
                  }
         | 
| 30 29 | 
             
                };
         | 
| 31 | 
            -
              } | 
| 30 | 
            +
              }
         | 
| 31 | 
            +
             | 
| 32 | 
            +
              headroom.$inject = ['HeadroomService'];
         | 
| 33 | 
            +
             | 
| 34 | 
            +
              function HeadroomService() {
         | 
| 35 | 
            +
                return Headroom;
         | 
| 36 | 
            +
              }
         | 
| 37 | 
            +
             | 
| 38 | 
            +
              angular
         | 
| 39 | 
            +
                .module('headroom', [])
         | 
| 40 | 
            +
                .directive('headroom', headroom)
         | 
| 41 | 
            +
                .factory('HeadroomService', HeadroomService);
         | 
| 32 42 |  | 
| 33 | 
            -
            }(window.angular) | 
| 43 | 
            +
            })(window.angular, window.Headroom);
         | 
| @@ -1,11 +1,25 @@ | |
| 1 1 | 
             
            /*!
         | 
| 2 | 
            -
             * headroom.js v0. | 
| 3 | 
            -
             * Copyright (c)  | 
| 2 | 
            +
             * headroom.js v0.9.4 - Give your page some headroom. Hide your header until you need it
         | 
| 3 | 
            +
             * Copyright (c) 2017 Nick Williams - http://wicky.nillia.ms/headroom.js
         | 
| 4 4 | 
             
             * License: MIT
         | 
| 5 5 | 
             
             */
         | 
| 6 6 |  | 
| 7 | 
            -
            (function( | 
| 7 | 
            +
            (function(root, factory) {
         | 
| 8 | 
            +
              'use strict';
         | 
| 8 9 |  | 
| 10 | 
            +
              if (typeof define === 'function' && define.amd) {
         | 
| 11 | 
            +
                // AMD. Register as an anonymous module.
         | 
| 12 | 
            +
                define([], factory);
         | 
| 13 | 
            +
              }
         | 
| 14 | 
            +
              else if (typeof exports === 'object') {
         | 
| 15 | 
            +
                // COMMONJS
         | 
| 16 | 
            +
                module.exports = factory();
         | 
| 17 | 
            +
              }
         | 
| 18 | 
            +
              else {
         | 
| 19 | 
            +
                // BROWSER
         | 
| 20 | 
            +
                root.Headroom = factory();
         | 
| 21 | 
            +
              }
         | 
| 22 | 
            +
            }(this, function() {
         | 
| 9 23 | 
             
              'use strict';
         | 
| 10 24 |  | 
| 11 25 | 
             
              /* exported features */
         | 
| @@ -56,6 +70,15 @@ | |
| 56 70 | 
             
                  this.requestTick();
         | 
| 57 71 | 
             
                }
         | 
| 58 72 | 
             
              };
         | 
| 73 | 
            +
              /**
         | 
| 74 | 
            +
               * Check if object is part of the DOM
         | 
| 75 | 
            +
               * @constructor
         | 
| 76 | 
            +
               * @param {Object} obj element to check
         | 
| 77 | 
            +
               */
         | 
| 78 | 
            +
              function isDOMElement(obj) {
         | 
| 79 | 
            +
                return obj && typeof window !== 'undefined' && (obj === window || obj.nodeType);
         | 
| 80 | 
            +
              }
         | 
| 81 | 
            +
             | 
| 59 82 | 
             
              /**
         | 
| 60 83 | 
             
               * Helper function for extending objects
         | 
| 61 84 | 
             
               */
         | 
| @@ -72,7 +95,8 @@ | |
| 72 95 | 
             
                  var replacement = arguments[i] || {};
         | 
| 73 96 |  | 
| 74 97 | 
             
                  for (key in replacement) {
         | 
| 75 | 
            -
                     | 
| 98 | 
            +
                    // Recurse into object except if the object is a DOM element
         | 
| 99 | 
            +
                    if(typeof result[key] === 'object' && ! isDOMElement(result[key])) {
         | 
| 76 100 | 
             
                      result[key] = extend(result[key], replacement[key]);
         | 
| 77 101 | 
             
                    }
         | 
| 78 102 | 
             
                    else {
         | 
| @@ -104,15 +128,17 @@ | |
| 104 128 |  | 
| 105 129 | 
             
                this.lastKnownScrollY = 0;
         | 
| 106 130 | 
             
                this.elem             = elem;
         | 
| 107 | 
            -
                this.debouncer        = new Debouncer(this.update.bind(this));
         | 
| 108 131 | 
             
                this.tolerance        = normalizeTolerance(options.tolerance);
         | 
| 109 132 | 
             
                this.classes          = options.classes;
         | 
| 110 133 | 
             
                this.offset           = options.offset;
         | 
| 134 | 
            +
                this.scroller         = options.scroller;
         | 
| 111 135 | 
             
                this.initialised      = false;
         | 
| 112 136 | 
             
                this.onPin            = options.onPin;
         | 
| 113 137 | 
             
                this.onUnpin          = options.onUnpin;
         | 
| 114 138 | 
             
                this.onTop            = options.onTop;
         | 
| 115 139 | 
             
                this.onNotTop         = options.onNotTop;
         | 
| 140 | 
            +
                this.onBottom         = options.onBottom;
         | 
| 141 | 
            +
                this.onNotBottom      = options.onNotBottom;
         | 
| 116 142 | 
             
              }
         | 
| 117 143 | 
             
              Headroom.prototype = {
         | 
| 118 144 | 
             
                constructor : Headroom,
         | 
| @@ -125,6 +151,7 @@ | |
| 125 151 | 
             
                    return;
         | 
| 126 152 | 
             
                  }
         | 
| 127 153 |  | 
| 154 | 
            +
                  this.debouncer = new Debouncer(this.update.bind(this));
         | 
| 128 155 | 
             
                  this.elem.classList.add(this.classes.initial);
         | 
| 129 156 |  | 
| 130 157 | 
             
                  // defer event registration to handle browser
         | 
| @@ -141,8 +168,14 @@ | |
| 141 168 | 
             
                  var classes = this.classes;
         | 
| 142 169 |  | 
| 143 170 | 
             
                  this.initialised = false;
         | 
| 144 | 
            -
             | 
| 145 | 
            -
                   | 
| 171 | 
            +
             | 
| 172 | 
            +
                  for (var key in classes) {
         | 
| 173 | 
            +
                    if(classes.hasOwnProperty(key)) {
         | 
| 174 | 
            +
                      this.elem.classList.remove(classes[key]);
         | 
| 175 | 
            +
                    }
         | 
| 176 | 
            +
                  }
         | 
| 177 | 
            +
             | 
| 178 | 
            +
                  this.scroller.removeEventListener('scroll', this.debouncer, false);
         | 
| 146 179 | 
             
                },
         | 
| 147 180 |  | 
| 148 181 | 
             
                /**
         | 
| @@ -153,7 +186,7 @@ | |
| 153 186 | 
             
                  if(!this.initialised){
         | 
| 154 187 | 
             
                    this.lastKnownScrollY = this.getScrollY();
         | 
| 155 188 | 
             
                    this.initialised = true;
         | 
| 156 | 
            -
                     | 
| 189 | 
            +
                    this.scroller.addEventListener('scroll', this.debouncer, false);
         | 
| 157 190 |  | 
| 158 191 | 
             
                    this.debouncer.handleEvent();
         | 
| 159 192 | 
             
                  }
         | 
| @@ -215,15 +248,42 @@ | |
| 215 248 | 
             
                  }
         | 
| 216 249 | 
             
                },
         | 
| 217 250 |  | 
| 251 | 
            +
                bottom : function() {
         | 
| 252 | 
            +
                  var classList = this.elem.classList,
         | 
| 253 | 
            +
                    classes = this.classes;
         | 
| 254 | 
            +
             | 
| 255 | 
            +
                  if(!classList.contains(classes.bottom)) {
         | 
| 256 | 
            +
                    classList.add(classes.bottom);
         | 
| 257 | 
            +
                    classList.remove(classes.notBottom);
         | 
| 258 | 
            +
                    this.onBottom && this.onBottom.call(this);
         | 
| 259 | 
            +
                  }
         | 
| 260 | 
            +
                },
         | 
| 261 | 
            +
             | 
| 262 | 
            +
                /**
         | 
| 263 | 
            +
                 * Handles the not top state
         | 
| 264 | 
            +
                 */
         | 
| 265 | 
            +
                notBottom : function() {
         | 
| 266 | 
            +
                  var classList = this.elem.classList,
         | 
| 267 | 
            +
                    classes = this.classes;
         | 
| 268 | 
            +
             | 
| 269 | 
            +
                  if(!classList.contains(classes.notBottom)) {
         | 
| 270 | 
            +
                    classList.add(classes.notBottom);
         | 
| 271 | 
            +
                    classList.remove(classes.bottom);
         | 
| 272 | 
            +
                    this.onNotBottom && this.onNotBottom.call(this);
         | 
| 273 | 
            +
                  }
         | 
| 274 | 
            +
                },
         | 
| 275 | 
            +
             | 
| 218 276 | 
             
                /**
         | 
| 219 277 | 
             
                 * Gets the Y scroll position
         | 
| 220 278 | 
             
                 * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollY
         | 
| 221 279 | 
             
                 * @return {Number} pixels the page has scrolled along the Y-axis
         | 
| 222 280 | 
             
                 */
         | 
| 223 281 | 
             
                getScrollY : function() {
         | 
| 224 | 
            -
                  return ( | 
| 225 | 
            -
                    ?  | 
| 226 | 
            -
                    : ( | 
| 282 | 
            +
                  return (this.scroller.pageYOffset !== undefined)
         | 
| 283 | 
            +
                    ? this.scroller.pageYOffset
         | 
| 284 | 
            +
                    : (this.scroller.scrollTop !== undefined)
         | 
| 285 | 
            +
                      ? this.scroller.scrollTop
         | 
| 286 | 
            +
                      : (document.documentElement || document.body.parentNode || document.body).scrollTop;
         | 
| 227 287 | 
             
                },
         | 
| 228 288 |  | 
| 229 289 | 
             
                /**
         | 
| @@ -237,6 +297,28 @@ | |
| 237 297 | 
             
                    || document.body.clientHeight;
         | 
| 238 298 | 
             
                },
         | 
| 239 299 |  | 
| 300 | 
            +
                /**
         | 
| 301 | 
            +
                 * Gets the physical height of the DOM element
         | 
| 302 | 
            +
                 * @param  {Object}  elm the element to calculate the physical height of which
         | 
| 303 | 
            +
                 * @return {int}     the physical height of the element in pixels
         | 
| 304 | 
            +
                 */
         | 
| 305 | 
            +
                getElementPhysicalHeight : function (elm) {
         | 
| 306 | 
            +
                  return Math.max(
         | 
| 307 | 
            +
                    elm.offsetHeight,
         | 
| 308 | 
            +
                    elm.clientHeight
         | 
| 309 | 
            +
                  );
         | 
| 310 | 
            +
                },
         | 
| 311 | 
            +
             | 
| 312 | 
            +
                /**
         | 
| 313 | 
            +
                 * Gets the physical height of the scroller element
         | 
| 314 | 
            +
                 * @return {int} the physical height of the scroller element in pixels
         | 
| 315 | 
            +
                 */
         | 
| 316 | 
            +
                getScrollerPhysicalHeight : function () {
         | 
| 317 | 
            +
                  return (this.scroller === window || this.scroller === document.body)
         | 
| 318 | 
            +
                    ? this.getViewportHeight()
         | 
| 319 | 
            +
                    : this.getElementPhysicalHeight(this.scroller);
         | 
| 320 | 
            +
                },
         | 
| 321 | 
            +
             | 
| 240 322 | 
             
                /**
         | 
| 241 323 | 
             
                 * Gets the height of the document
         | 
| 242 324 | 
             
                 * @see http://james.padolsey.com/javascript/get-document-height-cross-browser/
         | 
| @@ -247,12 +329,35 @@ | |
| 247 329 | 
             
                    documentElement = document.documentElement;
         | 
| 248 330 |  | 
| 249 331 | 
             
                  return Math.max(
         | 
| 250 | 
            -
             | 
| 251 | 
            -
             | 
| 252 | 
            -
             | 
| 332 | 
            +
                    body.scrollHeight, documentElement.scrollHeight,
         | 
| 333 | 
            +
                    body.offsetHeight, documentElement.offsetHeight,
         | 
| 334 | 
            +
                    body.clientHeight, documentElement.clientHeight
         | 
| 335 | 
            +
                  );
         | 
| 336 | 
            +
                },
         | 
| 337 | 
            +
             | 
| 338 | 
            +
                /**
         | 
| 339 | 
            +
                 * Gets the height of the DOM element
         | 
| 340 | 
            +
                 * @param  {Object}  elm the element to calculate the height of which
         | 
| 341 | 
            +
                 * @return {int}     the height of the element in pixels
         | 
| 342 | 
            +
                 */
         | 
| 343 | 
            +
                getElementHeight : function (elm) {
         | 
| 344 | 
            +
                  return Math.max(
         | 
| 345 | 
            +
                    elm.scrollHeight,
         | 
| 346 | 
            +
                    elm.offsetHeight,
         | 
| 347 | 
            +
                    elm.clientHeight
         | 
| 253 348 | 
             
                  );
         | 
| 254 349 | 
             
                },
         | 
| 255 350 |  | 
| 351 | 
            +
                /**
         | 
| 352 | 
            +
                 * Gets the height of the scroller element
         | 
| 353 | 
            +
                 * @return {int} the height of the scroller element in pixels
         | 
| 354 | 
            +
                 */
         | 
| 355 | 
            +
                getScrollerHeight : function () {
         | 
| 356 | 
            +
                  return (this.scroller === window || this.scroller === document.body)
         | 
| 357 | 
            +
                    ? this.getDocumentHeight()
         | 
| 358 | 
            +
                    : this.getElementHeight(this.scroller);
         | 
| 359 | 
            +
                },
         | 
| 360 | 
            +
             | 
| 256 361 | 
             
                /**
         | 
| 257 362 | 
             
                 * determines if the scroll position is outside of document boundaries
         | 
| 258 363 | 
             
                 * @param  {int}  currentScrollY the current y scroll position
         | 
| @@ -260,7 +365,7 @@ | |
| 260 365 | 
             
                 */
         | 
| 261 366 | 
             
                isOutOfBounds : function (currentScrollY) {
         | 
| 262 367 | 
             
                  var pastTop  = currentScrollY < 0,
         | 
| 263 | 
            -
                    pastBottom = currentScrollY + this. | 
| 368 | 
            +
                    pastBottom = currentScrollY + this.getScrollerPhysicalHeight() > this.getScrollerHeight();
         | 
| 264 369 |  | 
| 265 370 | 
             
                  return pastTop || pastBottom;
         | 
| 266 371 | 
             
                },
         | 
| @@ -318,6 +423,13 @@ | |
| 318 423 | 
             
                    this.notTop();
         | 
| 319 424 | 
             
                  }
         | 
| 320 425 |  | 
| 426 | 
            +
                  if(currentScrollY + this.getViewportHeight() >= this.getScrollerHeight()) {
         | 
| 427 | 
            +
                    this.bottom();
         | 
| 428 | 
            +
                  }
         | 
| 429 | 
            +
                  else {
         | 
| 430 | 
            +
                    this.notBottom();
         | 
| 431 | 
            +
                  }
         | 
| 432 | 
            +
             | 
| 321 433 | 
             
                  if(this.shouldUnpin(currentScrollY, toleranceExceeded)) {
         | 
| 322 434 | 
             
                    this.unpin();
         | 
| 323 435 | 
             
                  }
         | 
| @@ -338,16 +450,18 @@ | |
| 338 450 | 
             
                  down : 0
         | 
| 339 451 | 
             
                },
         | 
| 340 452 | 
             
                offset : 0,
         | 
| 453 | 
            +
                scroller: window,
         | 
| 341 454 | 
             
                classes : {
         | 
| 342 455 | 
             
                  pinned : 'headroom--pinned',
         | 
| 343 456 | 
             
                  unpinned : 'headroom--unpinned',
         | 
| 344 457 | 
             
                  top : 'headroom--top',
         | 
| 345 458 | 
             
                  notTop : 'headroom--not-top',
         | 
| 459 | 
            +
                  bottom : 'headroom--bottom',
         | 
| 460 | 
            +
                  notBottom : 'headroom--not-bottom',
         | 
| 346 461 | 
             
                  initial : 'headroom'
         | 
| 347 462 | 
             
                }
         | 
| 348 463 | 
             
              };
         | 
| 349 464 | 
             
              Headroom.cutsTheMustard = typeof features !== 'undefined' && features.rAF && features.bind && features.classList;
         | 
| 350 465 |  | 
| 351 | 
            -
               | 
| 352 | 
            -
             | 
| 353 | 
            -
            }(window, document));
         | 
| 466 | 
            +
              return Headroom;
         | 
| 467 | 
            +
            }));
         | 
| @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            /*!
         | 
| 2 | 
            -
             * headroom.js v0. | 
| 3 | 
            -
             * Copyright (c)  | 
| 2 | 
            +
             * headroom.js v0.9.4 - Give your page some headroom. Hide your header until you need it
         | 
| 3 | 
            +
             * Copyright (c) 2017 Nick Williams - http://wicky.nillia.ms/headroom.js
         | 
| 4 4 | 
             
             * License: MIT
         | 
| 5 5 | 
             
             */
         | 
| 6 6 |  | 
| 7 | 
            -
            !function(a,b){"use strict";function  | 
| 7 | 
            +
            !function(a,b){"use strict";"function"==typeof define&&define.amd?define([],b):"object"==typeof exports?module.exports=b():a.Headroom=b()}(this,function(){"use strict";function a(a){this.callback=a,this.ticking=!1}function b(a){return a&&"undefined"!=typeof window&&(a===window||a.nodeType)}function c(a){if(arguments.length<=0)throw new Error("Missing arguments in extend function");var d,e,f=a||{};for(e=1;e<arguments.length;e++){var g=arguments[e]||{};for(d in g)"object"!=typeof f[d]||b(f[d])?f[d]=f[d]||g[d]:f[d]=c(f[d],g[d])}return f}function d(a){return a===Object(a)?a:{down:a,up:a}}function e(a,b){b=c(b,e.options),this.lastKnownScrollY=0,this.elem=a,this.tolerance=d(b.tolerance),this.classes=b.classes,this.offset=b.offset,this.scroller=b.scroller,this.initialised=!1,this.onPin=b.onPin,this.onUnpin=b.onUnpin,this.onTop=b.onTop,this.onNotTop=b.onNotTop,this.onBottom=b.onBottom,this.onNotBottom=b.onNotBottom}var f={bind:!!function(){}.bind,classList:"classList"in document.documentElement,rAF:!!(window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame)};return window.requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame,a.prototype={constructor:a,update:function(){this.callback&&this.callback(),this.ticking=!1},requestTick:function(){this.ticking||(requestAnimationFrame(this.rafCallback||(this.rafCallback=this.update.bind(this))),this.ticking=!0)},handleEvent:function(){this.requestTick()}},e.prototype={constructor:e,init:function(){if(e.cutsTheMustard)return this.debouncer=new a(this.update.bind(this)),this.elem.classList.add(this.classes.initial),setTimeout(this.attachEvent.bind(this),100),this},destroy:function(){var a=this.classes;this.initialised=!1;for(var b in a)a.hasOwnProperty(b)&&this.elem.classList.remove(a[b]);this.scroller.removeEventListener("scroll",this.debouncer,!1)},attachEvent:function(){this.initialised||(this.lastKnownScrollY=this.getScrollY(),this.initialised=!0,this.scroller.addEventListener("scroll",this.debouncer,!1),this.debouncer.handleEvent())},unpin:function(){var a=this.elem.classList,b=this.classes;!a.contains(b.pinned)&&a.contains(b.unpinned)||(a.add(b.unpinned),a.remove(b.pinned),this.onUnpin&&this.onUnpin.call(this))},pin:function(){var a=this.elem.classList,b=this.classes;a.contains(b.unpinned)&&(a.remove(b.unpinned),a.add(b.pinned),this.onPin&&this.onPin.call(this))},top:function(){var a=this.elem.classList,b=this.classes;a.contains(b.top)||(a.add(b.top),a.remove(b.notTop),this.onTop&&this.onTop.call(this))},notTop:function(){var a=this.elem.classList,b=this.classes;a.contains(b.notTop)||(a.add(b.notTop),a.remove(b.top),this.onNotTop&&this.onNotTop.call(this))},bottom:function(){var a=this.elem.classList,b=this.classes;a.contains(b.bottom)||(a.add(b.bottom),a.remove(b.notBottom),this.onBottom&&this.onBottom.call(this))},notBottom:function(){var a=this.elem.classList,b=this.classes;a.contains(b.notBottom)||(a.add(b.notBottom),a.remove(b.bottom),this.onNotBottom&&this.onNotBottom.call(this))},getScrollY:function(){return void 0!==this.scroller.pageYOffset?this.scroller.pageYOffset:void 0!==this.scroller.scrollTop?this.scroller.scrollTop:(document.documentElement||document.body.parentNode||document.body).scrollTop},getViewportHeight:function(){return window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight},getElementPhysicalHeight:function(a){return Math.max(a.offsetHeight,a.clientHeight)},getScrollerPhysicalHeight:function(){return this.scroller===window||this.scroller===document.body?this.getViewportHeight():this.getElementPhysicalHeight(this.scroller)},getDocumentHeight:function(){var a=document.body,b=document.documentElement;return Math.max(a.scrollHeight,b.scrollHeight,a.offsetHeight,b.offsetHeight,a.clientHeight,b.clientHeight)},getElementHeight:function(a){return Math.max(a.scrollHeight,a.offsetHeight,a.clientHeight)},getScrollerHeight:function(){return this.scroller===window||this.scroller===document.body?this.getDocumentHeight():this.getElementHeight(this.scroller)},isOutOfBounds:function(a){var b=a<0,c=a+this.getScrollerPhysicalHeight()>this.getScrollerHeight();return b||c},toleranceExceeded:function(a,b){return Math.abs(a-this.lastKnownScrollY)>=this.tolerance[b]},shouldUnpin:function(a,b){var c=a>this.lastKnownScrollY,d=a>=this.offset;return c&&d&&b},shouldPin:function(a,b){var c=a<this.lastKnownScrollY,d=a<=this.offset;return c&&b||d},update:function(){var a=this.getScrollY(),b=a>this.lastKnownScrollY?"down":"up",c=this.toleranceExceeded(a,b);this.isOutOfBounds(a)||(a<=this.offset?this.top():this.notTop(),a+this.getViewportHeight()>=this.getScrollerHeight()?this.bottom():this.notBottom(),this.shouldUnpin(a,c)?this.unpin():this.shouldPin(a,c)&&this.pin(),this.lastKnownScrollY=a)}},e.options={tolerance:{up:0,down:0},offset:0,scroller:window,classes:{pinned:"headroom--pinned",unpinned:"headroom--unpinned",top:"headroom--top",notTop:"headroom--not-top",bottom:"headroom--bottom",notBottom:"headroom--not-bottom",initial:"headroom"}},e.cutsTheMustard="undefined"!=typeof f&&f.rAF&&f.bind&&f.classList,e});
         | 
| @@ -23,6 +23,10 @@ | |
| 23 23 | 
             
                  }
         | 
| 24 24 | 
             
                  if (typeof option === 'string') {
         | 
| 25 25 | 
             
                    data[option]();
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                    if(option === 'destroy'){
         | 
| 28 | 
            +
                      $this.removeData('headroom');
         | 
| 29 | 
            +
                    }
         | 
| 26 30 | 
             
                  }
         | 
| 27 31 | 
             
                });
         | 
| 28 32 | 
             
              };
         | 
| @@ -36,4 +40,4 @@ | |
| 36 40 | 
             
                $this.headroom($this.data());
         | 
| 37 41 | 
             
              });
         | 
| 38 42 |  | 
| 39 | 
            -
            }(window.Zepto || window.jQuery));
         | 
| 43 | 
            +
            }(window.Zepto || window.jQuery));
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: headroom-rails
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Brandon Hicks
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2019-05-28 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rails
         | 
| @@ -38,8 +38,8 @@ dependencies: | |
| 38 38 | 
             
                - - ">="
         | 
| 39 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 40 | 
             
                    version: '0'
         | 
| 41 | 
            -
            description: A lightweight that reacts to your scrolling and hides | 
| 42 | 
            -
              you need it.
         | 
| 41 | 
            +
            description: A lightweight javascript asset that reacts to your scrolling and hides
         | 
| 42 | 
            +
              your header until you need it.
         | 
| 43 43 | 
             
            email:
         | 
| 44 44 | 
             
            - tarellel@gmail.com
         | 
| 45 45 | 
             
            executables: []
         | 
| @@ -59,7 +59,8 @@ files: | |
| 59 59 | 
             
            - vendor/assets/javascripts/headroom.min.js
         | 
| 60 60 | 
             
            - vendor/assets/javascripts/jQuery.headroom.js
         | 
| 61 61 | 
             
            homepage: https://github.com/tarellel/headroom-rails
         | 
| 62 | 
            -
            licenses: | 
| 62 | 
            +
            licenses:
         | 
| 63 | 
            +
            - MIT
         | 
| 63 64 | 
             
            metadata: {}
         | 
| 64 65 | 
             
            post_install_message: 
         | 
| 65 66 | 
             
            rdoc_options: []
         | 
| @@ -76,10 +77,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 76 77 | 
             
                - !ruby/object:Gem::Version
         | 
| 77 78 | 
             
                  version: '0'
         | 
| 78 79 | 
             
            requirements: []
         | 
| 79 | 
            -
             | 
| 80 | 
            -
            rubygems_version: 2.2.2
         | 
| 80 | 
            +
            rubygems_version: 3.0.3
         | 
| 81 81 | 
             
            signing_key: 
         | 
| 82 82 | 
             
            specification_version: 4
         | 
| 83 83 | 
             
            summary: headroom.js packaged for the Rails assest pipeline
         | 
| 84 84 | 
             
            test_files: []
         | 
| 85 | 
            -
            has_rdoc: 
         |