headhesivejs-rails 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 701b3b62454a564d9d62272cc76822343790b70e
4
+ data.tar.gz: a0d7e7fdaed347188463aabe0de6867913d1e060
5
+ SHA512:
6
+ metadata.gz: 478f5e5a990111db248e5c630b3d83443e0b616452447115d676664e2d2c210b1fa2a666a6f9de8e99fcd221a4683cf960df3a4279b1c6e7881239148b0c6283
7
+ data.tar.gz: 868602b4fec2f70355cdcd52ba717ddf9471ff23fa99b207e59f403a71c7dfcfc73f2016363e869c906909c6b93b93d53a8718f8a027ff239263096d6646c9f7
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in headhesivejs-rails.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2015 brettimus
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,37 @@
1
+ # Headhesivejs::Rails
2
+
3
+
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'headhesivejs-rails'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install headhesivejs-rails
20
+
21
+ Then include in your `application.js` file:
22
+
23
+ ```javascript
24
+ //= require headhesive
25
+ ```
26
+
27
+ ## Usage
28
+
29
+ Consult the [headhesive repo](https://github.com/markgoodyear/headhesive.js/tree/master/dist).
30
+
31
+ ## Contributing
32
+
33
+ 1. Fork it ( https://github.com/[my-github-username]/headhesivejs-rails/fork )
34
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
35
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
36
+ 4. Push to the branch (`git push origin my-new-feature`)
37
+ 5. Create a new Pull Request
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
@@ -0,0 +1,24 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'headhesivejs/rails/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "headhesivejs-rails"
8
+ spec.version = Headhesivejs::Rails::VERSION
9
+ spec.authors = ["brettimus"]
10
+ spec.email = ["brbeut@gmail.com"]
11
+ spec.summary = %q{An asset gem to include headhesive.js in your rails application.}
12
+ spec.description = %q{}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency "railties"
22
+ spec.add_development_dependency "bundler", "~> 1.7"
23
+ spec.add_development_dependency "rake", "~> 10.0"
24
+ end
@@ -0,0 +1,8 @@
1
+ require "headhesivejs/rails/version"
2
+
3
+ module Headhesivejs
4
+ module Rails
5
+ class Engine < ::Rails::Engine
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,5 @@
1
+ module Headhesivejs
2
+ module Rails
3
+ VERSION = "1.1.1"
4
+ end
5
+ end
@@ -0,0 +1,127 @@
1
+ /*!
2
+ * headhesive v1.1.1 - An on-demand sticky header
3
+ * Url: http://markgoodyear.com/labs/headhesive
4
+ * Copyright (c) Mark Goodyear — @markgdyr — http://markgoodyear.com
5
+ * License: MIT
6
+ */
7
+ (function(window, document, undefined) {
8
+ "use strict";
9
+ var _mergeObj = function(to, from) {
10
+ for (var p in from) {
11
+ if (from.hasOwnProperty(p)) {
12
+ to[p] = typeof from[p] === "object" ? _mergeObj(to[p], from[p]) : from[p];
13
+ }
14
+ }
15
+ return to;
16
+ };
17
+ var _throttle = function(func, wait) {
18
+ var _now = Date.now || function() {
19
+ return new Date().getTime();
20
+ };
21
+ var context, args, result;
22
+ var timeout = null;
23
+ var previous = 0;
24
+ var later = function() {
25
+ previous = _now();
26
+ timeout = null;
27
+ result = func.apply(context, args);
28
+ context = args = null;
29
+ };
30
+ return function() {
31
+ var now = _now();
32
+ var remaining = wait - (now - previous);
33
+ context = this;
34
+ args = arguments;
35
+ if (remaining <= 0) {
36
+ clearTimeout(timeout);
37
+ timeout = null;
38
+ previous = now;
39
+ result = func.apply(context, args);
40
+ context = args = null;
41
+ } else if (!timeout) {
42
+ timeout = setTimeout(later, remaining);
43
+ }
44
+ return result;
45
+ };
46
+ };
47
+ var _getScrollY = function() {
48
+ return window.pageYOffset !== undefined ? window.pageYOffset : (document.documentElement || document.body.parentNode || document.body).scrollTop;
49
+ };
50
+ function _getElemY(elem) {
51
+ var top = 0;
52
+ while (elem) {
53
+ top += elem.offsetTop;
54
+ elem = elem.offsetParent;
55
+ }
56
+ return top;
57
+ }
58
+ var Headhesive = function(elem, options) {
59
+ if (!("querySelector" in document && "addEventListener" in window)) {
60
+ return;
61
+ }
62
+ this.visible = false;
63
+ this.options = {
64
+ offset: 300,
65
+ classes: {
66
+ clone: "headhesive",
67
+ stick: "headhesive--stick",
68
+ unstick: "headhesive--unstick"
69
+ },
70
+ throttle: 250,
71
+ onInit: function() {},
72
+ onStick: function() {},
73
+ onUnstick: function() {},
74
+ onDestroy: function() {}
75
+ };
76
+ this.elem = typeof elem === "string" ? document.querySelector(elem) : elem;
77
+ this.options = _mergeObj(this.options, options);
78
+ this.init();
79
+ };
80
+ Headhesive.prototype = {
81
+ constructor: Headhesive,
82
+ init: function() {
83
+ this.clonedElem = this.elem.cloneNode(true);
84
+ this.clonedElem.className += " " + this.options.classes.clone;
85
+ document.body.insertBefore(this.clonedElem, document.body.firstChild);
86
+ if (typeof this.options.offset === "number") {
87
+ this.scrollOffset = this.options.offset;
88
+ } else if (typeof this.options.offset === "string") {
89
+ this.scrollOffset = _getElemY(document.querySelector(this.options.offset));
90
+ } else {
91
+ throw new Error("Invalid offset: " + this.options.offset);
92
+ }
93
+ this._throttleUpdate = _throttle(this.update.bind(this), this.options.throttle);
94
+ window.addEventListener("scroll", this._throttleUpdate, false);
95
+ this.options.onInit.call(this);
96
+ },
97
+ destroy: function() {
98
+ document.body.removeChild(this.clonedElem);
99
+ window.removeEventListener("scroll", this._throttleUpdate);
100
+ this.options.onDestroy.call(this);
101
+ },
102
+ stick: function() {
103
+ if (!this.visible) {
104
+ this.clonedElem.className = this.clonedElem.className.replace(new RegExp("(^|\\s)*" + this.options.classes.unstick + "(\\s|$)*", "g"), "");
105
+ this.clonedElem.className += " " + this.options.classes.stick;
106
+ this.visible = true;
107
+ this.options.onStick.call(this);
108
+ }
109
+ },
110
+ unstick: function() {
111
+ if (this.visible) {
112
+ this.clonedElem.className = this.clonedElem.className.replace(new RegExp("(^|\\s)*" + this.options.classes.stick + "(\\s|$)*", "g"), "");
113
+ this.clonedElem.className += " " + this.options.classes.unstick;
114
+ this.visible = false;
115
+ this.options.onUnstick.call(this);
116
+ }
117
+ },
118
+ update: function() {
119
+ if (_getScrollY() > this.scrollOffset) {
120
+ this.stick();
121
+ } else {
122
+ this.unstick();
123
+ }
124
+ }
125
+ };
126
+ window.Headhesive = Headhesive;
127
+ })(window, document);
metadata ADDED
@@ -0,0 +1,95 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: headhesivejs-rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.1
5
+ platform: ruby
6
+ authors:
7
+ - brettimus
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-02-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: railties
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.7'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.7'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10.0'
55
+ description: ''
56
+ email:
57
+ - brbeut@gmail.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - ".gitignore"
63
+ - Gemfile
64
+ - LICENSE.txt
65
+ - README.md
66
+ - Rakefile
67
+ - headhesivejs-rails.gemspec
68
+ - lib/headhesivejs/rails.rb
69
+ - lib/headhesivejs/rails/version.rb
70
+ - vendor/assets/javascripts/headhesive.js
71
+ homepage: ''
72
+ licenses:
73
+ - MIT
74
+ metadata: {}
75
+ post_install_message:
76
+ rdoc_options: []
77
+ require_paths:
78
+ - lib
79
+ required_ruby_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ required_rubygems_version: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ requirements: []
90
+ rubyforge_project:
91
+ rubygems_version: 2.4.3
92
+ signing_key:
93
+ specification_version: 4
94
+ summary: An asset gem to include headhesive.js in your rails application.
95
+ test_files: []