twitter_bootstrap 0.0.8 → 2.0.0

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.
Files changed (52) hide show
  1. data/README.markdown +16 -1
  2. data/lib/twitter_bootstrap/version.rb +1 -1
  3. data/vendor/assets/images/twitter/bootstrap/glyphicons-halflings-white.png +0 -0
  4. data/vendor/assets/images/twitter/bootstrap/glyphicons-halflings.png +0 -0
  5. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-alert.js +91 -0
  6. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-button.js +98 -0
  7. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-carousel.js +154 -0
  8. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-collapse.js +136 -0
  9. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-dropdown.js +58 -21
  10. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-modal.js +64 -114
  11. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-popover.js +38 -33
  12. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-scrollspy.js +62 -44
  13. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-tab.js +130 -0
  14. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-tooltip.js +270 -0
  15. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-transition.js +51 -0
  16. data/vendor/assets/javascripts/twitter/bootstrap/bootstrap-typeahead.js +271 -0
  17. data/vendor/toolkit/twitter/bootstrap/accordion.less +28 -0
  18. data/vendor/toolkit/twitter/bootstrap/alerts.less +70 -0
  19. data/vendor/toolkit/twitter/bootstrap/bootstrap.less +41 -5
  20. data/vendor/toolkit/twitter/bootstrap/breadcrumbs.less +22 -0
  21. data/vendor/toolkit/twitter/bootstrap/button-groups.less +147 -0
  22. data/vendor/toolkit/twitter/bootstrap/buttons.less +165 -0
  23. data/vendor/toolkit/twitter/bootstrap/carousel.less +121 -0
  24. data/vendor/toolkit/twitter/bootstrap/close.less +18 -0
  25. data/vendor/toolkit/twitter/bootstrap/code.less +44 -0
  26. data/vendor/toolkit/twitter/bootstrap/component-animations.less +18 -0
  27. data/vendor/toolkit/twitter/bootstrap/dropdowns.less +131 -0
  28. data/vendor/toolkit/twitter/bootstrap/forms.less +335 -299
  29. data/vendor/toolkit/twitter/bootstrap/grid.less +8 -0
  30. data/vendor/toolkit/twitter/bootstrap/hero-unit.less +20 -0
  31. data/vendor/toolkit/twitter/bootstrap/labels.less +16 -0
  32. data/vendor/toolkit/twitter/bootstrap/layouts.less +17 -0
  33. data/vendor/toolkit/twitter/bootstrap/mixins.less +391 -76
  34. data/vendor/toolkit/twitter/bootstrap/modals.less +72 -0
  35. data/vendor/toolkit/twitter/bootstrap/navbar.less +292 -0
  36. data/vendor/toolkit/twitter/bootstrap/navs.less +344 -0
  37. data/vendor/toolkit/twitter/bootstrap/pager.less +30 -0
  38. data/vendor/toolkit/twitter/bootstrap/pagination.less +55 -0
  39. data/vendor/toolkit/twitter/bootstrap/popovers.less +49 -0
  40. data/vendor/toolkit/twitter/bootstrap/progress-bars.less +95 -0
  41. data/vendor/toolkit/twitter/bootstrap/reset.less +37 -52
  42. data/vendor/toolkit/twitter/bootstrap/responsive.less +323 -0
  43. data/vendor/toolkit/twitter/bootstrap/scaffolding.less +13 -123
  44. data/vendor/toolkit/twitter/bootstrap/sprites.less +156 -0
  45. data/vendor/toolkit/twitter/bootstrap/tables.less +75 -160
  46. data/vendor/toolkit/twitter/bootstrap/thumbnails.less +35 -0
  47. data/vendor/toolkit/twitter/bootstrap/tooltip.less +35 -0
  48. data/vendor/toolkit/twitter/bootstrap/type.less +100 -70
  49. data/vendor/toolkit/twitter/bootstrap/utilities.less +23 -0
  50. data/vendor/toolkit/twitter/bootstrap/variables.less +94 -55
  51. data/vendor/toolkit/twitter/bootstrap/wells.less +17 -0
  52. metadata +53 -16
@@ -1,8 +1,8 @@
1
1
  /* =============================================================
2
- * bootstrap-scrollspy.js v1.4.0
2
+ * bootstrap-scrollspy.js v2.0.0
3
3
  * http://twitter.github.com/bootstrap/javascript.html#scrollspy
4
4
  * =============================================================
5
- * Copyright 2011 Twitter, Inc.
5
+ * Copyright 2012 Twitter, Inc.
6
6
  *
7
7
  * Licensed under the Apache License, Version 2.0 (the "License");
8
8
  * you may not use this file except in compliance with the License.
@@ -17,38 +17,46 @@
17
17
  * limitations under the License.
18
18
  * ============================================================== */
19
19
 
20
-
21
20
  !function ( $ ) {
22
21
 
23
22
  "use strict"
24
23
 
25
- var $window = $(window)
26
-
27
- function ScrollSpy( topbar, selector ) {
28
- var processScroll = $.proxy(this.processScroll, this)
29
- this.$topbar = $(topbar)
30
- this.selector = selector || 'li > a'
24
+ /* SCROLLSPY CLASS DEFINITION
25
+ * ========================== */
26
+
27
+ function ScrollSpy( element, options) {
28
+ var process = $.proxy(this.process, this)
29
+ , $element = $(element).is('body') ? $(window) : $(element)
30
+ , href
31
+ this.options = $.extend({}, $.fn.scrollspy.defaults, options)
32
+ this.$scrollElement = $element.on('scroll.scroll.data-api', process)
33
+ this.selector = (this.options.target
34
+ || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
35
+ || '') + ' .nav li > a'
36
+ this.$body = $('body').on('click.scroll.data-api', this.selector, process)
31
37
  this.refresh()
32
- this.$topbar.delegate(this.selector, 'click', processScroll)
33
- $window.scroll(processScroll)
34
- this.processScroll()
38
+ this.process()
35
39
  }
36
40
 
37
41
  ScrollSpy.prototype = {
38
42
 
39
- refresh: function () {
40
- this.targets = this.$topbar.find(this.selector).map(function () {
41
- var href = $(this).attr('href')
42
- return /^#\w/.test(href) && $(href).length ? href : null
43
- })
43
+ constructor: ScrollSpy
44
+
45
+ , refresh: function () {
46
+ this.targets = this.$body
47
+ .find(this.selector)
48
+ .map(function () {
49
+ var href = $(this).attr('href')
50
+ return /^#\w/.test(href) && $(href).length ? href : null
51
+ })
44
52
 
45
53
  this.offsets = $.map(this.targets, function (id) {
46
- return $(id).offset().top
54
+ return $(id).position().top
47
55
  })
48
56
  }
49
57
 
50
- , processScroll: function () {
51
- var scrollTop = $window.scrollTop() + 10
58
+ , process: function () {
59
+ var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
52
60
  , offsets = this.offsets
53
61
  , targets = this.targets
54
62
  , activeTarget = this.activeTarget
@@ -58,50 +66,60 @@
58
66
  activeTarget != targets[i]
59
67
  && scrollTop >= offsets[i]
60
68
  && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
61
- && this.activateButton( targets[i] )
69
+ && this.activate( targets[i] )
62
70
  }
63
71
  }
64
72
 
65
- , activateButton: function (target) {
73
+ , activate: function (target) {
74
+ var active
75
+
66
76
  this.activeTarget = target
67
77
 
68
- this.$topbar
78
+ this.$body
69
79
  .find(this.selector).parent('.active')
70
80
  .removeClass('active')
71
81
 
72
- this.$topbar
82
+ active = this.$body
73
83
  .find(this.selector + '[href="' + target + '"]')
74
84
  .parent('li')
75
85
  .addClass('active')
86
+
87
+ if ( active.parent('.dropdown-menu') ) {
88
+ active.closest('li.dropdown').addClass('active')
89
+ }
76
90
  }
77
91
 
78
92
  }
79
93
 
80
- /* SCROLLSPY PLUGIN DEFINITION
81
- * =========================== */
82
-
83
- $.fn.scrollSpy = function( options ) {
84
- var scrollspy = this.data('scrollspy')
85
94
 
86
- if (!scrollspy) {
87
- return this.each(function () {
88
- $(this).data('scrollspy', new ScrollSpy( this, options ))
89
- })
90
- }
95
+ /* SCROLLSPY PLUGIN DEFINITION
96
+ * =========================== */
91
97
 
92
- if ( options === true ) {
93
- return scrollspy
94
- }
98
+ $.fn.scrollspy = function ( option ) {
99
+ return this.each(function () {
100
+ var $this = $(this)
101
+ , data = $this.data('scrollspy')
102
+ , options = typeof option == 'object' && option
103
+ if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options)))
104
+ if (typeof option == 'string') data[option]()
105
+ })
106
+ }
95
107
 
96
- if ( typeof options == 'string' ) {
97
- scrollspy[options]()
98
- }
108
+ $.fn.scrollspy.Constructor = ScrollSpy
99
109
 
100
- return this
110
+ $.fn.scrollspy.defaults = {
111
+ offset: 10
101
112
  }
102
113
 
103
- $(document).ready(function () {
104
- $('body').scrollSpy('[data-scrollspy] li > a')
114
+
115
+ /* SCROLLSPY DATA-API
116
+ * ================== */
117
+
118
+ $(function () {
119
+ $('[data-spy="scroll"]').each(function () {
120
+ var $spy = $(this)
121
+ $spy.scrollspy($spy.data())
122
+ })
105
123
  })
106
124
 
107
- }( window.jQuery || window.ender );
125
+ }( window.jQuery )
@@ -0,0 +1,130 @@
1
+ /* ========================================================
2
+ * bootstrap-tab.js v2.0.0
3
+ * http://twitter.github.com/bootstrap/javascript.html#tabs
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"
24
+
25
+ /* TAB CLASS DEFINITION
26
+ * ==================== */
27
+
28
+ var Tab = function ( element ) {
29
+ this.element = $(element)
30
+ }
31
+
32
+ Tab.prototype = {
33
+
34
+ constructor: Tab
35
+
36
+ , show: function () {
37
+ var $this = this.element
38
+ , $ul = $this.closest('ul:not(.dropdown-menu)')
39
+ , selector = $this.attr('data-target')
40
+ , previous
41
+ , $target
42
+
43
+ if (!selector) {
44
+ selector = $this.attr('href')
45
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
46
+ }
47
+
48
+ if ( $this.parent('li').hasClass('active') ) return
49
+
50
+ previous = $ul.find('.active a').last()[0]
51
+
52
+ $this.trigger({
53
+ type: 'show'
54
+ , relatedTarget: previous
55
+ })
56
+
57
+ $target = $(selector)
58
+
59
+ this.activate($this.parent('li'), $ul)
60
+ this.activate($target, $target.parent(), function () {
61
+ $this.trigger({
62
+ type: 'shown'
63
+ , relatedTarget: previous
64
+ })
65
+ })
66
+ }
67
+
68
+ , activate: function ( element, container, callback) {
69
+ var $active = container.find('> .active')
70
+ , transition = callback
71
+ && $.support.transition
72
+ && $active.hasClass('fade')
73
+
74
+ function next() {
75
+ $active
76
+ .removeClass('active')
77
+ .find('> .dropdown-menu > .active')
78
+ .removeClass('active')
79
+
80
+ element.addClass('active')
81
+
82
+ if (transition) {
83
+ element[0].offsetWidth // reflow for transition
84
+ element.addClass('in')
85
+ } else {
86
+ element.removeClass('fade')
87
+ }
88
+
89
+ if ( element.parent('.dropdown-menu') ) {
90
+ element.closest('li.dropdown').addClass('active')
91
+ }
92
+
93
+ callback && callback()
94
+ }
95
+
96
+ transition ?
97
+ $active.one($.support.transition.end, next) :
98
+ next()
99
+
100
+ $active.removeClass('in')
101
+ }
102
+ }
103
+
104
+
105
+ /* TAB PLUGIN DEFINITION
106
+ * ===================== */
107
+
108
+ $.fn.tab = function ( option ) {
109
+ return this.each(function () {
110
+ var $this = $(this)
111
+ , data = $this.data('tab')
112
+ if (!data) $this.data('tab', (data = new Tab(this)))
113
+ if (typeof option == 'string') data[option]()
114
+ })
115
+ }
116
+
117
+ $.fn.tab.Constructor = Tab
118
+
119
+
120
+ /* TAB DATA-API
121
+ * ============ */
122
+
123
+ $(function () {
124
+ $('body').on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
125
+ e.preventDefault()
126
+ $(this).tab('show')
127
+ })
128
+ })
129
+
130
+ }( window.jQuery )
@@ -0,0 +1,270 @@
1
+ /* ===========================================================
2
+ * bootstrap-tooltip.js v2.0.0
3
+ * http://twitter.github.com/bootstrap/javascript.html#tooltips
4
+ * Inspired by the original jQuery.tipsy by Jason Frame
5
+ * ===========================================================
6
+ * Copyright 2012 Twitter, Inc.
7
+ *
8
+ * Licensed under the Apache License, Version 2.0 (the "License");
9
+ * you may not use this file except in compliance with the License.
10
+ * You may obtain a copy of the License at
11
+ *
12
+ * http://www.apache.org/licenses/LICENSE-2.0
13
+ *
14
+ * Unless required by applicable law or agreed to in writing, software
15
+ * distributed under the License is distributed on an "AS IS" BASIS,
16
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ * See the License for the specific language governing permissions and
18
+ * limitations under the License.
19
+ * ========================================================== */
20
+
21
+ !function( $ ) {
22
+
23
+ "use strict"
24
+
25
+ /* TOOLTIP PUBLIC CLASS DEFINITION
26
+ * =============================== */
27
+
28
+ var Tooltip = function ( element, options ) {
29
+ this.init('tooltip', element, options)
30
+ }
31
+
32
+ Tooltip.prototype = {
33
+
34
+ constructor: Tooltip
35
+
36
+ , init: function ( type, element, options ) {
37
+ var eventIn
38
+ , eventOut
39
+
40
+ this.type = type
41
+ this.$element = $(element)
42
+ this.options = this.getOptions(options)
43
+ this.enabled = true
44
+
45
+ if (this.options.trigger != 'manual') {
46
+ eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus'
47
+ eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur'
48
+ this.$element.on(eventIn, this.options.selector, $.proxy(this.enter, this))
49
+ this.$element.on(eventOut, this.options.selector, $.proxy(this.leave, this))
50
+ }
51
+
52
+ this.options.selector ?
53
+ (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
54
+ this.fixTitle()
55
+ }
56
+
57
+ , getOptions: function ( options ) {
58
+ options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data())
59
+
60
+ if (options.delay && typeof options.delay == 'number') {
61
+ options.delay = {
62
+ show: options.delay
63
+ , hide: options.delay
64
+ }
65
+ }
66
+
67
+ return options
68
+ }
69
+
70
+ , enter: function ( e ) {
71
+ var self = $(e.currentTarget)[this.type](this._options).data(this.type)
72
+
73
+ if (!self.options.delay || !self.options.delay.show) {
74
+ self.show()
75
+ } else {
76
+ self.hoverState = 'in'
77
+ setTimeout(function() {
78
+ if (self.hoverState == 'in') {
79
+ self.show()
80
+ }
81
+ }, self.options.delay.show)
82
+ }
83
+ }
84
+
85
+ , leave: function ( e ) {
86
+ var self = $(e.currentTarget)[this.type](this._options).data(this.type)
87
+
88
+ if (!self.options.delay || !self.options.delay.hide) {
89
+ self.hide()
90
+ } else {
91
+ self.hoverState = 'out'
92
+ setTimeout(function() {
93
+ if (self.hoverState == 'out') {
94
+ self.hide()
95
+ }
96
+ }, self.options.delay.hide)
97
+ }
98
+ }
99
+
100
+ , show: function () {
101
+ var $tip
102
+ , inside
103
+ , pos
104
+ , actualWidth
105
+ , actualHeight
106
+ , placement
107
+ , tp
108
+
109
+ if (this.hasContent() && this.enabled) {
110
+ $tip = this.tip()
111
+ this.setContent()
112
+
113
+ if (this.options.animation) {
114
+ $tip.addClass('fade')
115
+ }
116
+
117
+ placement = typeof this.options.placement == 'function' ?
118
+ this.options.placement.call(this, $tip[0], this.$element[0]) :
119
+ this.options.placement
120
+
121
+ inside = /in/.test(placement)
122
+
123
+ $tip
124
+ .remove()
125
+ .css({ top: 0, left: 0, display: 'block' })
126
+ .appendTo(inside ? this.$element : document.body)
127
+
128
+ pos = this.getPosition(inside)
129
+
130
+ actualWidth = $tip[0].offsetWidth
131
+ actualHeight = $tip[0].offsetHeight
132
+
133
+ switch (inside ? placement.split(' ')[1] : placement) {
134
+ case 'bottom':
135
+ tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
136
+ break
137
+ case 'top':
138
+ tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}
139
+ break
140
+ case 'left':
141
+ tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}
142
+ break
143
+ case 'right':
144
+ tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}
145
+ break
146
+ }
147
+
148
+ $tip
149
+ .css(tp)
150
+ .addClass(placement)
151
+ .addClass('in')
152
+ }
153
+ }
154
+
155
+ , setContent: function () {
156
+ var $tip = this.tip()
157
+ $tip.find('.tooltip-inner').html(this.getTitle())
158
+ $tip.removeClass('fade in top bottom left right')
159
+ }
160
+
161
+ , hide: function () {
162
+ var that = this
163
+ , $tip = this.tip()
164
+
165
+ $tip.removeClass('in')
166
+
167
+ function removeWithAnimation() {
168
+ var timeout = setTimeout(function () {
169
+ $tip.off($.support.transition.end).remove()
170
+ }, 500)
171
+
172
+ $tip.one($.support.transition.end, function () {
173
+ clearTimeout(timeout)
174
+ $tip.remove()
175
+ })
176
+ }
177
+
178
+ $.support.transition && this.$tip.hasClass('fade') ?
179
+ removeWithAnimation() :
180
+ $tip.remove()
181
+ }
182
+
183
+ , fixTitle: function () {
184
+ var $e = this.$element
185
+ if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
186
+ $e.attr('data-original-title', $e.attr('title') || '').removeAttr('title')
187
+ }
188
+ }
189
+
190
+ , hasContent: function () {
191
+ return this.getTitle()
192
+ }
193
+
194
+ , getPosition: function (inside) {
195
+ return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
196
+ width: this.$element[0].offsetWidth
197
+ , height: this.$element[0].offsetHeight
198
+ })
199
+ }
200
+
201
+ , getTitle: function () {
202
+ var title
203
+ , $e = this.$element
204
+ , o = this.options
205
+
206
+ title = $e.attr('data-original-title')
207
+ || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
208
+
209
+ title = title.toString().replace(/(^\s*|\s*$)/, "")
210
+
211
+ return title
212
+ }
213
+
214
+ , tip: function () {
215
+ return this.$tip = this.$tip || $(this.options.template)
216
+ }
217
+
218
+ , validate: function () {
219
+ if (!this.$element[0].parentNode) {
220
+ this.hide()
221
+ this.$element = null
222
+ this.options = null
223
+ }
224
+ }
225
+
226
+ , enable: function () {
227
+ this.enabled = true
228
+ }
229
+
230
+ , disable: function () {
231
+ this.enabled = false
232
+ }
233
+
234
+ , toggleEnabled: function () {
235
+ this.enabled = !this.enabled
236
+ }
237
+
238
+ , toggle: function () {
239
+ this[this.tip().hasClass('in') ? 'hide' : 'show']()
240
+ }
241
+
242
+ }
243
+
244
+
245
+ /* TOOLTIP PLUGIN DEFINITION
246
+ * ========================= */
247
+
248
+ $.fn.tooltip = function ( option ) {
249
+ return this.each(function () {
250
+ var $this = $(this)
251
+ , data = $this.data('tooltip')
252
+ , options = typeof option == 'object' && option
253
+ if (!data) $this.data('tooltip', (data = new Tooltip(this, options)))
254
+ if (typeof option == 'string') data[option]()
255
+ })
256
+ }
257
+
258
+ $.fn.tooltip.Constructor = Tooltip
259
+
260
+ $.fn.tooltip.defaults = {
261
+ animation: true
262
+ , delay: 0
263
+ , selector: false
264
+ , placement: 'top'
265
+ , trigger: 'hover'
266
+ , title: ''
267
+ , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
268
+ }
269
+
270
+ }( window.jQuery )