flatstrap-sass 2.3.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +14 -0
- data/README.md +52 -0
- data/lib/flatstrap-sass.rb +51 -0
- data/lib/flatstrap-sass/compass_functions.rb +19 -0
- data/lib/flatstrap-sass/engine.rb +7 -0
- data/lib/flatstrap-sass/sass_functions.rb +14 -0
- data/templates/project/manifest.rb +13 -0
- data/templates/project/styles.scss +5 -0
- data/vendor/assets/javascripts/application.js +154 -0
- data/vendor/assets/javascripts/bootstrap-affix.js +117 -0
- data/vendor/assets/javascripts/bootstrap-alert.js +99 -0
- data/vendor/assets/javascripts/bootstrap-button.js +105 -0
- data/vendor/assets/javascripts/bootstrap-carousel.js +207 -0
- data/vendor/assets/javascripts/bootstrap-collapse.js +167 -0
- data/vendor/assets/javascripts/bootstrap-dropdown.js +165 -0
- data/vendor/assets/javascripts/bootstrap-modal.js +247 -0
- data/vendor/assets/javascripts/bootstrap-popover.js +114 -0
- data/vendor/assets/javascripts/bootstrap-scrollspy.js +162 -0
- data/vendor/assets/javascripts/bootstrap-tab.js +144 -0
- data/vendor/assets/javascripts/bootstrap-tooltip.js +361 -0
- data/vendor/assets/javascripts/bootstrap-transition.js +60 -0
- data/vendor/assets/javascripts/bootstrap-typeahead.js +335 -0
- data/vendor/assets/javascripts/bootstrap.js +2159 -0
- data/vendor/assets/javascripts/bootstrap.min.js +6 -0
- data/vendor/assets/javascripts/google-code-prettify/prettify.js +28 -0
- data/vendor/assets/javascripts/jquery.js +2 -0
- data/vendor/assets/stylesheets/flatstrap-responsive.scss +1 -0
- data/vendor/assets/stylesheets/flatstrap.scss +1 -0
- data/vendor/assets/stylesheets/flatstrap/_accordion.scss +33 -0
- data/vendor/assets/stylesheets/flatstrap/_alerts.scss +78 -0
- data/vendor/assets/stylesheets/flatstrap/_breadcrumbs.scss +23 -0
- data/vendor/assets/stylesheets/flatstrap/_button-groups.scss +211 -0
- data/vendor/assets/stylesheets/flatstrap/_buttons.scss +215 -0
- data/vendor/assets/stylesheets/flatstrap/_carousel.scss +156 -0
- data/vendor/assets/stylesheets/flatstrap/_close.scss +32 -0
- data/vendor/assets/stylesheets/flatstrap/_code.scss +59 -0
- data/vendor/assets/stylesheets/flatstrap/_component-animations.scss +22 -0
- data/vendor/assets/stylesheets/flatstrap/_dropdowns.scss +231 -0
- data/vendor/assets/stylesheets/flatstrap/_font-awesome.scss +534 -0
- data/vendor/assets/stylesheets/flatstrap/_forms.scss +646 -0
- data/vendor/assets/stylesheets/flatstrap/_grid.scss +21 -0
- data/vendor/assets/stylesheets/flatstrap/_hero-unit.scss +24 -0
- data/vendor/assets/stylesheets/flatstrap/_labels-badges.scss +79 -0
- data/vendor/assets/stylesheets/flatstrap/_layouts.scss +16 -0
- data/vendor/assets/stylesheets/flatstrap/_media.scss +55 -0
- data/vendor/assets/stylesheets/flatstrap/_mixins.scss +654 -0
- data/vendor/assets/stylesheets/flatstrap/_modals.scss +91 -0
- data/vendor/assets/stylesheets/flatstrap/_navbar.scss +481 -0
- data/vendor/assets/stylesheets/flatstrap/_navs.scss +388 -0
- data/vendor/assets/stylesheets/flatstrap/_pager.scss +42 -0
- data/vendor/assets/stylesheets/flatstrap/_pagination.scss +94 -0
- data/vendor/assets/stylesheets/flatstrap/_popovers.scss +130 -0
- data/vendor/assets/stylesheets/flatstrap/_progress-bars.scss +118 -0
- data/vendor/assets/stylesheets/flatstrap/_reset.scss +216 -0
- data/vendor/assets/stylesheets/flatstrap/_responsive-1200px-min.scss +28 -0
- data/vendor/assets/stylesheets/flatstrap/_responsive-767px-max.scss +193 -0
- data/vendor/assets/stylesheets/flatstrap/_responsive-768px-979px.scss +19 -0
- data/vendor/assets/stylesheets/flatstrap/_responsive-navbar.scss +184 -0
- data/vendor/assets/stylesheets/flatstrap/_responsive-utilities.scss +74 -0
- data/vendor/assets/stylesheets/flatstrap/_scaffolding.scss +42 -0
- data/vendor/assets/stylesheets/flatstrap/_tables.scss +183 -0
- data/vendor/assets/stylesheets/flatstrap/_thumbnails.scss +50 -0
- data/vendor/assets/stylesheets/flatstrap/_tooltip.scss +69 -0
- data/vendor/assets/stylesheets/flatstrap/_type.scss +247 -0
- data/vendor/assets/stylesheets/flatstrap/_utilities.scss +45 -0
- data/vendor/assets/stylesheets/flatstrap/_variables.scss +296 -0
- data/vendor/assets/stylesheets/flatstrap/_wells.scss +25 -0
- data/vendor/assets/stylesheets/flatstrap/bootstrap-responsive.scss +48 -0
- data/vendor/assets/stylesheets/flatstrap/bootstrap.scss +63 -0
- metadata +180 -0
data/LICENSE
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
Copyright 2011 Twitter, Inc.
|
2
|
+
|
3
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
you may not use this file except in compliance with the License.
|
5
|
+
You may obtain a copy of the License at
|
6
|
+
|
7
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
|
9
|
+
Unless required by applicable law or agreed to in writing, software
|
10
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
See the License for the specific language governing permissions and
|
13
|
+
limitations under the License.
|
14
|
+
|
data/README.md
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
# Flatstrap for Sass
|
2
|
+
|
3
|
+
`flatstrap-sass` is an Sass-powered version of [Little Spark's Flatstrap](http://littlesparkvt.com/flatstrap/), ready to drop right into your Sass powered applications.
|
4
|
+
It is based on the work by Thomas McDonald on [bootstrap-sass](https://github.com/thomas-mcdonald/bootstrap-sass).
|
5
|
+
|
6
|
+
Enjoy.
|
7
|
+
|
8
|
+
## Usage
|
9
|
+
|
10
|
+
### Rails
|
11
|
+
|
12
|
+
In your Gemfile:
|
13
|
+
|
14
|
+
```ruby
|
15
|
+
gem 'sass-rails', '~> 3.2'
|
16
|
+
gem 'flatstrap-sass', '~> 2.3.1.0'
|
17
|
+
```
|
18
|
+
|
19
|
+
`bundle install` and restart your server to make the files available.
|
20
|
+
|
21
|
+
#### CSS
|
22
|
+
|
23
|
+
In your application.css.scss file:
|
24
|
+
|
25
|
+
```css
|
26
|
+
@import "flatstrap";
|
27
|
+
```
|
28
|
+
|
29
|
+
#### Javascripts
|
30
|
+
|
31
|
+
You can include the Bootstrap javascripts through two methods. In this case, Sprocket's `//= require` directives are useful, since there is no better alternative.
|
32
|
+
|
33
|
+
We have a helper that includes all available javascripts:
|
34
|
+
|
35
|
+
```js
|
36
|
+
// Loads all Bootstrap javascripts
|
37
|
+
//= require bootstrap
|
38
|
+
```
|
39
|
+
|
40
|
+
You can also load individual modules, provided you sort out any related dependencies.
|
41
|
+
|
42
|
+
```js
|
43
|
+
//= require bootstrap-scrollspy
|
44
|
+
//= require bootstrap-modal
|
45
|
+
//= require bootstrap-dropdown
|
46
|
+
```
|
47
|
+
|
48
|
+
Simples.
|
49
|
+
|
50
|
+
### Credits
|
51
|
+
|
52
|
+
All the credits goes to [Thomas McDonald](https://twitter.com/#!/thomasmcdonald_) and his fantastic job with [bootstrap-sass](https://github.com/thomas-mcdonald/bootstrap-sass). For further documentation, consult its page.
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module Flatstrap
|
2
|
+
class FrameworkNotFound < StandardError; end
|
3
|
+
|
4
|
+
# Inspired by Kaminari
|
5
|
+
def self.load!
|
6
|
+
if compass?
|
7
|
+
require 'flatstrap-sass/compass_functions'
|
8
|
+
register_compass_extension
|
9
|
+
elsif asset_pipeline?
|
10
|
+
require 'flatstrap-sass/sass_functions'
|
11
|
+
end
|
12
|
+
|
13
|
+
if rails?
|
14
|
+
require 'sass-rails'
|
15
|
+
register_rails_engine
|
16
|
+
end
|
17
|
+
|
18
|
+
if !(rails? || compass?)
|
19
|
+
raise Flatstrap::FrameworkNotFound, "flatstrap-sass requires either Rails > 3.1 or Compass, neither of which are loaded"
|
20
|
+
end
|
21
|
+
|
22
|
+
stylesheets = File.expand_path(File.join("..", 'vendor', 'assets', 'stylesheets'))
|
23
|
+
::Sass.load_paths << stylesheets
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
def self.asset_pipeline?
|
28
|
+
defined?(::Sprockets)
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.compass?
|
32
|
+
defined?(::Compass)
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.rails?
|
36
|
+
defined?(::Rails)
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.register_compass_extension
|
40
|
+
base = File.join(File.dirname(__FILE__), '..')
|
41
|
+
styles = File.join(base, 'vendor', 'assets', 'stylesheets')
|
42
|
+
templates = File.join(base, 'templates')
|
43
|
+
::Compass::Frameworks.register('flatstrap', :path => base, :stylesheets_directory => styles, :templates_directory => templates)
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.register_rails_engine
|
47
|
+
require 'flatstrap-sass/engine'
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
Flatstrap.load!
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# This contains functions for use with a project *only* using Compass.
|
2
|
+
module Sass::Script::Functions
|
3
|
+
def image_path(source, options = {})
|
4
|
+
if defined?(::Sprockets)
|
5
|
+
::Sass::Script::String.new sprockets_context.image_path(source.value).to_s, :string
|
6
|
+
elsif defined?(::Compass)
|
7
|
+
image_url(source, Sass::Script::Bool.new(true))
|
8
|
+
else
|
9
|
+
# Revert to the old compass-agnostic path determination
|
10
|
+
asset_sans_quotes = source.value.gsub('"', '')
|
11
|
+
Sass::Script::String.new("/images/#{asset_sans_quotes}", :string)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
protected
|
16
|
+
def sprockets_context # :nodoc:
|
17
|
+
options[:custom][:sprockets_context]
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'sass'
|
2
|
+
|
3
|
+
module Sass::Script::Functions
|
4
|
+
# LARS: Snatched from compass - 2011-11-29 - used for gradients in IE6-9
|
5
|
+
# returns an IE hex string for a color with an alpha channel
|
6
|
+
# suitable for passing to IE filters.
|
7
|
+
def ie_hex_str(color)
|
8
|
+
assert_type color, :Color
|
9
|
+
alpha = (color.alpha * 255).round
|
10
|
+
alphastr = alpha.to_s(16).rjust(2, '0')
|
11
|
+
Sass::Script::String.new("##{alphastr}#{color.send(:hex_str)[1..-1]}".upcase)
|
12
|
+
end
|
13
|
+
declare :ie_hex_str, [:color]
|
14
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
description "Flatstrap for Sass"
|
2
|
+
|
3
|
+
# Stylesheet importing bootstrap
|
4
|
+
stylesheet 'styles.scss'
|
5
|
+
|
6
|
+
#
|
7
|
+
# Other Bootstrap assets
|
8
|
+
basedir = '../../vendor/assets'
|
9
|
+
|
10
|
+
# Javascripts
|
11
|
+
%w(alert button carousel collapse dropdown modal popover scrollspy tab tooltip transition typeahead).each do |file|
|
12
|
+
javascript "#{basedir}/javascripts/bootstrap-#{file}.js", :to => "bootstrap-#{file}.js"
|
13
|
+
end
|
@@ -0,0 +1,154 @@
|
|
1
|
+
// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT
|
2
|
+
// IT'S ALL JUST JUNK FOR OUR DOCS!
|
3
|
+
// ++++++++++++++++++++++++++++++++++++++++++
|
4
|
+
|
5
|
+
!function ($) {
|
6
|
+
|
7
|
+
$(function(){
|
8
|
+
|
9
|
+
var $window = $(window)
|
10
|
+
|
11
|
+
// Disable certain links in docs
|
12
|
+
$('section [href^=#]').click(function (e) {
|
13
|
+
e.preventDefault()
|
14
|
+
})
|
15
|
+
|
16
|
+
// side bar
|
17
|
+
$('.bs-docs-sidenav').affix({
|
18
|
+
offset: {
|
19
|
+
top: function () { return $window.width() <= 980 ? 290 : 210 }
|
20
|
+
, bottom: 270
|
21
|
+
}
|
22
|
+
})
|
23
|
+
|
24
|
+
// make code pretty
|
25
|
+
window.prettyPrint && prettyPrint()
|
26
|
+
|
27
|
+
// add-ons
|
28
|
+
$('.add-on :checkbox').on('click', function () {
|
29
|
+
var $this = $(this)
|
30
|
+
, method = $this.attr('checked') ? 'addClass' : 'removeClass'
|
31
|
+
$(this).parents('.add-on')[method]('active')
|
32
|
+
})
|
33
|
+
|
34
|
+
// add tipsies to grid for scaffolding
|
35
|
+
if ($('#gridSystem').length) {
|
36
|
+
$('#gridSystem').tooltip({
|
37
|
+
selector: '.show-grid > div'
|
38
|
+
, title: function () { return $(this).width() + 'px' }
|
39
|
+
})
|
40
|
+
}
|
41
|
+
|
42
|
+
// tooltip demo
|
43
|
+
$('.tooltip-demo').tooltip({
|
44
|
+
selector: "a[rel=tooltip]"
|
45
|
+
})
|
46
|
+
|
47
|
+
$('.tooltip-test').tooltip()
|
48
|
+
$('.popover-test').popover()
|
49
|
+
|
50
|
+
// popover demo
|
51
|
+
$("a[rel=popover]")
|
52
|
+
.popover()
|
53
|
+
.click(function(e) {
|
54
|
+
e.preventDefault()
|
55
|
+
})
|
56
|
+
|
57
|
+
// button state demo
|
58
|
+
$('#fat-btn')
|
59
|
+
.click(function () {
|
60
|
+
var btn = $(this)
|
61
|
+
btn.button('loading')
|
62
|
+
setTimeout(function () {
|
63
|
+
btn.button('reset')
|
64
|
+
}, 3000)
|
65
|
+
})
|
66
|
+
|
67
|
+
// carousel demo
|
68
|
+
$('#myCarousel').carousel()
|
69
|
+
|
70
|
+
// javascript build logic
|
71
|
+
var inputsComponent = $("#components.download input")
|
72
|
+
, inputsPlugin = $("#plugins.download input")
|
73
|
+
, inputsVariables = $("#variables.download input")
|
74
|
+
|
75
|
+
// toggle all plugin checkboxes
|
76
|
+
$('#components.download .toggle-all').on('click', function (e) {
|
77
|
+
e.preventDefault()
|
78
|
+
inputsComponent.attr('checked', !inputsComponent.is(':checked'))
|
79
|
+
})
|
80
|
+
|
81
|
+
$('#plugins.download .toggle-all').on('click', function (e) {
|
82
|
+
e.preventDefault()
|
83
|
+
inputsPlugin.attr('checked', !inputsPlugin.is(':checked'))
|
84
|
+
})
|
85
|
+
|
86
|
+
$('#variables.download .toggle-all').on('click', function (e) {
|
87
|
+
e.preventDefault()
|
88
|
+
inputsVariables.val('')
|
89
|
+
})
|
90
|
+
|
91
|
+
// request built javascript
|
92
|
+
$('.download-btn').on('click', function () {
|
93
|
+
|
94
|
+
var css = $("#components.download input:checked")
|
95
|
+
.map(function () { return this.value })
|
96
|
+
.toArray()
|
97
|
+
, js = $("#plugins.download input:checked")
|
98
|
+
.map(function () { return this.value })
|
99
|
+
.toArray()
|
100
|
+
, vars = {}
|
101
|
+
, img = ['glyphicons-halflings.png', 'glyphicons-halflings-white.png']
|
102
|
+
|
103
|
+
$("#variables.download input")
|
104
|
+
.each(function () {
|
105
|
+
$(this).val() && (vars[ $(this).prev().text() ] = $(this).val())
|
106
|
+
})
|
107
|
+
|
108
|
+
$.ajax({
|
109
|
+
type: 'POST'
|
110
|
+
, url: /\?dev/.test(window.location) ? 'http://localhost:3000' : 'http://bootstrap.herokuapp.com'
|
111
|
+
, dataType: 'jsonpi'
|
112
|
+
, params: {
|
113
|
+
js: js
|
114
|
+
, css: css
|
115
|
+
, vars: vars
|
116
|
+
, img: img
|
117
|
+
}
|
118
|
+
})
|
119
|
+
})
|
120
|
+
})
|
121
|
+
|
122
|
+
// Modified from the original jsonpi https://github.com/benvinegar/jquery-jsonpi
|
123
|
+
$.ajaxTransport('jsonpi', function(opts, originalOptions, jqXHR) {
|
124
|
+
var url = opts.url;
|
125
|
+
|
126
|
+
return {
|
127
|
+
send: function(_, completeCallback) {
|
128
|
+
var name = 'jQuery_iframe_' + jQuery.now()
|
129
|
+
, iframe, form
|
130
|
+
|
131
|
+
iframe = $('<iframe>')
|
132
|
+
.attr('name', name)
|
133
|
+
.appendTo('head')
|
134
|
+
|
135
|
+
form = $('<form>')
|
136
|
+
.attr('method', opts.type) // GET or POST
|
137
|
+
.attr('action', url)
|
138
|
+
.attr('target', name)
|
139
|
+
|
140
|
+
$.each(opts.params, function(k, v) {
|
141
|
+
|
142
|
+
$('<input>')
|
143
|
+
.attr('type', 'hidden')
|
144
|
+
.attr('name', k)
|
145
|
+
.attr('value', typeof v == 'string' ? v : JSON.stringify(v))
|
146
|
+
.appendTo(form)
|
147
|
+
})
|
148
|
+
|
149
|
+
form.appendTo('body').submit()
|
150
|
+
}
|
151
|
+
}
|
152
|
+
})
|
153
|
+
|
154
|
+
}(window.jQuery)
|
@@ -0,0 +1,117 @@
|
|
1
|
+
/* ==========================================================
|
2
|
+
* bootstrap-affix.js v2.3.1
|
3
|
+
* http://twitter.github.com/bootstrap/javascript.html#affix
|
4
|
+
* ==========================================================
|
5
|
+
* Copyright 2012 Twitter, Inc.
|
6
|
+
*
|
7
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
* you may not use this file except in compliance with the License.
|
9
|
+
* You may obtain a copy of the License at
|
10
|
+
*
|
11
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
*
|
13
|
+
* Unless required by applicable law or agreed to in writing, software
|
14
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
+
* See the License for the specific language governing permissions and
|
17
|
+
* limitations under the License.
|
18
|
+
* ========================================================== */
|
19
|
+
|
20
|
+
|
21
|
+
!function ($) {
|
22
|
+
|
23
|
+
"use strict"; // jshint ;_;
|
24
|
+
|
25
|
+
|
26
|
+
/* AFFIX CLASS DEFINITION
|
27
|
+
* ====================== */
|
28
|
+
|
29
|
+
var Affix = function (element, options) {
|
30
|
+
this.options = $.extend({}, $.fn.affix.defaults, options)
|
31
|
+
this.$window = $(window)
|
32
|
+
.on('scroll.affix.data-api', $.proxy(this.checkPosition, this))
|
33
|
+
.on('click.affix.data-api', $.proxy(function () { setTimeout($.proxy(this.checkPosition, this), 1) }, this))
|
34
|
+
this.$element = $(element)
|
35
|
+
this.checkPosition()
|
36
|
+
}
|
37
|
+
|
38
|
+
Affix.prototype.checkPosition = function () {
|
39
|
+
if (!this.$element.is(':visible')) return
|
40
|
+
|
41
|
+
var scrollHeight = $(document).height()
|
42
|
+
, scrollTop = this.$window.scrollTop()
|
43
|
+
, position = this.$element.offset()
|
44
|
+
, offset = this.options.offset
|
45
|
+
, offsetBottom = offset.bottom
|
46
|
+
, offsetTop = offset.top
|
47
|
+
, reset = 'affix affix-top affix-bottom'
|
48
|
+
, affix
|
49
|
+
|
50
|
+
if (typeof offset != 'object') offsetBottom = offsetTop = offset
|
51
|
+
if (typeof offsetTop == 'function') offsetTop = offset.top()
|
52
|
+
if (typeof offsetBottom == 'function') offsetBottom = offset.bottom()
|
53
|
+
|
54
|
+
affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ?
|
55
|
+
false : offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ?
|
56
|
+
'bottom' : offsetTop != null && scrollTop <= offsetTop ?
|
57
|
+
'top' : false
|
58
|
+
|
59
|
+
if (this.affixed === affix) return
|
60
|
+
|
61
|
+
this.affixed = affix
|
62
|
+
this.unpin = affix == 'bottom' ? position.top - scrollTop : null
|
63
|
+
|
64
|
+
this.$element.removeClass(reset).addClass('affix' + (affix ? '-' + affix : ''))
|
65
|
+
}
|
66
|
+
|
67
|
+
|
68
|
+
/* AFFIX PLUGIN DEFINITION
|
69
|
+
* ======================= */
|
70
|
+
|
71
|
+
var old = $.fn.affix
|
72
|
+
|
73
|
+
$.fn.affix = function (option) {
|
74
|
+
return this.each(function () {
|
75
|
+
var $this = $(this)
|
76
|
+
, data = $this.data('affix')
|
77
|
+
, options = typeof option == 'object' && option
|
78
|
+
if (!data) $this.data('affix', (data = new Affix(this, options)))
|
79
|
+
if (typeof option == 'string') data[option]()
|
80
|
+
})
|
81
|
+
}
|
82
|
+
|
83
|
+
$.fn.affix.Constructor = Affix
|
84
|
+
|
85
|
+
$.fn.affix.defaults = {
|
86
|
+
offset: 0
|
87
|
+
}
|
88
|
+
|
89
|
+
|
90
|
+
/* AFFIX NO CONFLICT
|
91
|
+
* ================= */
|
92
|
+
|
93
|
+
$.fn.affix.noConflict = function () {
|
94
|
+
$.fn.affix = old
|
95
|
+
return this
|
96
|
+
}
|
97
|
+
|
98
|
+
|
99
|
+
/* AFFIX DATA-API
|
100
|
+
* ============== */
|
101
|
+
|
102
|
+
$(window).on('load', function () {
|
103
|
+
$('[data-spy="affix"]').each(function () {
|
104
|
+
var $spy = $(this)
|
105
|
+
, data = $spy.data()
|
106
|
+
|
107
|
+
data.offset = data.offset || {}
|
108
|
+
|
109
|
+
data.offsetBottom && (data.offset.bottom = data.offsetBottom)
|
110
|
+
data.offsetTop && (data.offset.top = data.offsetTop)
|
111
|
+
|
112
|
+
$spy.affix(data)
|
113
|
+
})
|
114
|
+
})
|
115
|
+
|
116
|
+
|
117
|
+
}(window.jQuery);
|