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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 81ebfe8572c51d258f5954e6b403e976246cb798
4
- data.tar.gz: 6e86acdd423ddbe1c1b3f122e6b4265381d6d0a4
2
+ SHA256:
3
+ metadata.gz: 40f3145160a96d3a2316531d30761aea69db6625978db6e1113854e486f3bc41
4
+ data.tar.gz: aefe68b71a158e689dbae59a00653528792f60f6423f27c690eadf609699cc75
5
5
  SHA512:
6
- metadata.gz: 6c899ab7bc0b86b6dee869f3d01018fd6778ad9924d9ca25c676ec995dd709ca633a290f9da2e1a022eab41fc33697e05f9079d88b1ad09854d63760225648ca
7
- data.tar.gz: b8724a306635265f0f1538eb17d0611cc13adf22b1472a0e54b0891ca0b804ed36e56f90cdbed40c34915669ba83b0fa8aafecd087c1a61ef0e95a73789f5cff
6
+ metadata.gz: 9e06ef49f40752e67481f19f80f18adcceac5065fde1620bcbedd39020ecc145296dcbde3ece846c691843b04accd854d4b0264b7380b6e4c8c526f887a71fc2
7
+ data.tar.gz: fa10d25a9d5ac0cce6c3edce0d3d684b4c68e7014cab142d322e5b2a94e9e59bee63f02dc445aea22ecd8202d25e91766683b1d00dfba9f1f689e04906dbbb75
data/README.md CHANGED
@@ -4,6 +4,8 @@
4
4
 
5
5
  License: [MIT License](http://opensource.org/licenses/MIT) (just as headroom.js is)
6
6
 
7
+ ![](https://badgen.net/rubygems/dt/headroom-rails) ![](https://badgen.net/rubygems/v/headroom-rails)
8
+
7
9
  ## Installation
8
10
 
9
11
  Add this line to your application's Gemfile:
@@ -1,5 +1,5 @@
1
1
  module Headroom
2
2
  module Rails
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  end
5
5
  end
@@ -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
- angular.forEach(Headroom.options, function(value, key) {
22
- options[key] = scope[key] || Headroom.options[key];
23
- });
24
- var headroom = new Headroom(element[0], options);
25
- headroom.init();
26
- scope.$on('destroy', function() {
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.6.0 - Give your page some headroom. Hide your header until you need it
3
- * Copyright (c) 2014 Nick Williams - http://wicky.nillia.ms/headroom.js
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(window, document) {
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
- if(typeof result[key] === 'object') {
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
- window.removeEventListener('scroll', this.debouncer, false);
145
- this.elem.classList.remove(classes.unpinned, classes.pinned, classes.top, classes.initial);
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
- window.addEventListener('scroll', this.debouncer, false);
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 (window.pageYOffset !== undefined)
225
- ? window.pageYOffset
226
- : (document.documentElement || document.body.parentNode || document.body).scrollTop;
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
- body.scrollHeight, documentElement.scrollHeight,
251
- body.offsetHeight, documentElement.offsetHeight,
252
- body.clientHeight, documentElement.clientHeight
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.getViewportHeight() > this.getDocumentHeight();
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
- window.Headroom = Headroom;
352
-
353
- }(window, document));
466
+ return Headroom;
467
+ }));
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * headroom.js v0.6.0 - Give your page some headroom. Hide your header until you need it
3
- * Copyright (c) 2014 Nick Williams - http://wicky.nillia.ms/headroom.js
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 c(a){this.callback=a,this.ticking=!1}function d(a){if(arguments.length<=0)throw new Error("Missing arguments in extend function");var b,c,e=a||{};for(c=1;c<arguments.length;c++){var f=arguments[c]||{};for(b in f)e[b]="object"==typeof e[b]?d(e[b],f[b]):e[b]||f[b]}return e}function e(a){return a===Object(a)?a:{down:a,up:a}}function f(a,b){b=d(b,f.options),this.lastKnownScrollY=0,this.elem=a,this.debouncer=new c(this.update.bind(this)),this.tolerance=e(b.tolerance),this.classes=b.classes,this.offset=b.offset,this.initialised=!1,this.onPin=b.onPin,this.onUnpin=b.onUnpin,this.onTop=b.onTop,this.onNotTop=b.onNotTop}var g={bind:!!function(){}.bind,classList:"classList"in b.documentElement,rAF:!!(a.requestAnimationFrame||a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame)};a.requestAnimationFrame=a.requestAnimationFrame||a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame,c.prototype={constructor:c,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()}},f.prototype={constructor:f,init:function(){return f.cutsTheMustard?(this.elem.classList.add(this.classes.initial),setTimeout(this.attachEvent.bind(this),100),this):void 0},destroy:function(){var b=this.classes;this.initialised=!1,a.removeEventListener("scroll",this.debouncer,!1),this.elem.classList.remove(b.unpinned,b.pinned,b.top,b.initial)},attachEvent:function(){this.initialised||(this.lastKnownScrollY=this.getScrollY(),this.initialised=!0,a.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))},getScrollY:function(){return void 0!==a.pageYOffset?a.pageYOffset:(b.documentElement||b.body.parentNode||b.body).scrollTop},getViewportHeight:function(){return a.innerHeight||b.documentElement.clientHeight||b.body.clientHeight},getDocumentHeight:function(){var a=b.body,c=b.documentElement;return Math.max(a.scrollHeight,c.scrollHeight,a.offsetHeight,c.offsetHeight,a.clientHeight,c.clientHeight)},isOutOfBounds:function(a){var b=0>a,c=a+this.getViewportHeight()>this.getDocumentHeight();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(),this.shouldUnpin(a,c)?this.unpin():this.shouldPin(a,c)&&this.pin(),this.lastKnownScrollY=a)}},f.options={tolerance:{up:0,down:0},offset:0,classes:{pinned:"headroom--pinned",unpinned:"headroom--unpinned",top:"headroom--top",notTop:"headroom--not-top",initial:"headroom"}},f.cutsTheMustard="undefined"!=typeof g&&g.rAF&&g.bind&&g.classList,a.Headroom=f}(window,document);
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.1
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: 2014-06-30 00:00:00.000000000 Z
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 you header until
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
- rubyforge_project:
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: