jombo 1.0.1 → 1.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.
data/.rvmrc CHANGED
@@ -1,2 +1,2 @@
1
1
  # Use this gemset. If it does not exist, create it.
2
- rvm use ruby-1.9.3-p0@jombo-gem --create
2
+ rvm use ruby-1.9.3-p125@jombo-gem --create
data/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  ## Back-story
8
8
 
9
- I'm a phenomenal fan of [Bootstrap](http://twitter.github.com/bootstrap/). One might even say a cheerleader! Anyhow, I use [Rails](http://rubyonrails.org/) and wanted to experiment with the bleeding edge of Bootstrap as it was being developed. Manually adding adding and updating the assets in one project was fine. Doing it for two or three projects over-and-over started to become cumbersome.
9
+ I'm a phenomenal fan of [Bootstrap](http://twitter.github.com/bootstrap/). One might even say a cheerleader! Anyhow, I use [Rails](http://rubyonrails.org/) and wanted to experiment with the bleeding edge of Bootstrap as it was being developed. Manually adding adding and updating the assets in one project was fine. Doing it for two or three projects over-and-over started to become cumbersome.
10
10
 
11
11
  I had never made a gem before. The shiny new Rails 3 Asset Pipeline offered an interesting new piece of learning. So, here it is, my first Ruby gem in living history.
12
12
 
data/lib/jombo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Jombo
2
- VERSION = "1.0.1"
2
+ VERSION = "1.0.2"
3
3
  end
@@ -1,5 +1,5 @@
1
1
  /* ==========================================================
2
- * bootstrap-alert.js v2.0.0
2
+ * bootstrap-alert.js v2.0.2
3
3
  * http://twitter.github.com/bootstrap/javascript.html#alerts
4
4
  * ==========================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -51,11 +51,14 @@
51
51
 
52
52
  $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent())
53
53
 
54
- $parent.removeClass('in')
54
+ $parent
55
+ .trigger('close')
56
+ .removeClass('in')
55
57
 
56
58
  function removeElement() {
57
- $parent.remove()
58
- $parent.trigger('closed')
59
+ $parent
60
+ .trigger('closed')
61
+ .remove()
59
62
  }
60
63
 
61
64
  $.support.transition && $parent.hasClass('fade') ?
@@ -88,4 +91,4 @@
88
91
  $('body').on('click.alert.data-api', dismiss, Alert.prototype.close)
89
92
  })
90
93
 
91
- }( window.jQuery )
94
+ }( window.jQuery );
@@ -1,5 +1,5 @@
1
1
  /* ============================================================
2
- * bootstrap-button.js v2.0.0
2
+ * bootstrap-button.js v2.0.2
3
3
  * http://twitter.github.com/bootstrap/javascript.html#buttons
4
4
  * ============================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -91,8 +91,10 @@
91
91
 
92
92
  $(function () {
93
93
  $('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) {
94
- $(e.target).button('toggle')
94
+ var $btn = $(e.target)
95
+ if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
96
+ $btn.button('toggle')
95
97
  })
96
98
  })
97
99
 
98
- }( window.jQuery )
100
+ }( window.jQuery );
@@ -1,5 +1,5 @@
1
1
  /* ==========================================================
2
- * bootstrap-carousel.js v2.0.0
2
+ * bootstrap-carousel.js v2.0.2
3
3
  * http://twitter.github.com/bootstrap/javascript.html#carousel
4
4
  * ==========================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -27,14 +27,18 @@
27
27
 
28
28
  var Carousel = function (element, options) {
29
29
  this.$element = $(element)
30
- this.options = $.extend({}, $.fn.carousel.defaults, options)
30
+ this.options = options
31
31
  this.options.slide && this.slide(this.options.slide)
32
+ this.options.pause == 'hover' && this.$element
33
+ .on('mouseenter', $.proxy(this.pause, this))
34
+ .on('mouseleave', $.proxy(this.cycle, this))
32
35
  }
33
36
 
34
37
  Carousel.prototype = {
35
38
 
36
39
  cycle: function () {
37
- this.interval = setInterval($.proxy(this.next, this), this.options.interval)
40
+ this.options.interval
41
+ && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
38
42
  return this
39
43
  }
40
44
 
@@ -61,6 +65,7 @@
61
65
 
62
66
  , pause: function () {
63
67
  clearInterval(this.interval)
68
+ this.interval = null
64
69
  return this
65
70
  }
66
71
 
@@ -88,13 +93,9 @@
88
93
 
89
94
  $next = $next.length ? $next : this.$element.find('.item')[fallback]()
90
95
 
91
- if (!$.support.transition && this.$element.hasClass('slide')) {
92
- this.$element.trigger('slide')
93
- $active.removeClass('active')
94
- $next.addClass('active')
95
- this.sliding = false
96
- this.$element.trigger('slid')
97
- } else {
96
+ if ($next.hasClass('active')) return
97
+
98
+ if ($.support.transition && this.$element.hasClass('slide')) {
98
99
  $next.addClass(type)
99
100
  $next[0].offsetWidth // force reflow
100
101
  $active.addClass(direction)
@@ -106,6 +107,12 @@
106
107
  that.sliding = false
107
108
  setTimeout(function () { that.$element.trigger('slid') }, 0)
108
109
  })
110
+ } else {
111
+ this.$element.trigger('slide')
112
+ $active.removeClass('active')
113
+ $next.addClass('active')
114
+ this.sliding = false
115
+ this.$element.trigger('slid')
109
116
  }
110
117
 
111
118
  isCycling && this.cycle()
@@ -123,16 +130,17 @@
123
130
  return this.each(function () {
124
131
  var $this = $(this)
125
132
  , data = $this.data('carousel')
126
- , options = typeof option == 'object' && option
133
+ , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option)
127
134
  if (!data) $this.data('carousel', (data = new Carousel(this, options)))
128
135
  if (typeof option == 'number') data.to(option)
129
136
  else if (typeof option == 'string' || (option = options.slide)) data[option]()
130
- else data.cycle()
137
+ else if (options.interval) data.cycle()
131
138
  })
132
139
  }
133
140
 
134
141
  $.fn.carousel.defaults = {
135
142
  interval: 5000
143
+ , pause: 'hover'
136
144
  }
137
145
 
138
146
  $.fn.carousel.Constructor = Carousel
@@ -151,4 +159,4 @@
151
159
  })
152
160
  })
153
161
 
154
- }( window.jQuery )
162
+ }( window.jQuery );
@@ -1,5 +1,5 @@
1
1
  /* =============================================================
2
- * bootstrap-collapse.js v2.0.0
2
+ * bootstrap-collapse.js v2.0.2
3
3
  * http://twitter.github.com/bootstrap/javascript.html#collapse
4
4
  * =============================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -42,11 +42,18 @@
42
42
  }
43
43
 
44
44
  , show: function () {
45
- var dimension = this.dimension()
46
- , scroll = $.camelCase(['scroll', dimension].join('-'))
47
- , actives = this.$parent && this.$parent.find('.in')
45
+ var dimension
46
+ , scroll
47
+ , actives
48
48
  , hasData
49
49
 
50
+ if (this.transitioning) return
51
+
52
+ dimension = this.dimension()
53
+ scroll = $.camelCase(['scroll', dimension].join('-'))
54
+ actives = this.$parent && this.$parent.find('> .accordion-group > .in')
55
+ hasData
56
+
50
57
  if (actives && actives.length) {
51
58
  hasData = actives.data('collapse')
52
59
  actives.collapse('hide')
@@ -56,11 +63,12 @@
56
63
  this.$element[dimension](0)
57
64
  this.transition('addClass', 'show', 'shown')
58
65
  this.$element[dimension](this.$element[0][scroll])
59
-
60
66
  }
61
67
 
62
68
  , hide: function () {
63
- var dimension = this.dimension()
69
+ var dimension
70
+ if (this.transitioning) return
71
+ dimension = this.dimension()
64
72
  this.reset(this.$element[dimension]())
65
73
  this.transition('removeClass', 'hide', 'hidden')
66
74
  this.$element[dimension](0)
@@ -74,16 +82,21 @@
74
82
  [dimension](size || 'auto')
75
83
  [0].offsetWidth
76
84
 
77
- this.$element.addClass('collapse')
85
+ this.$element[size != null ? 'addClass' : 'removeClass']('collapse')
86
+
87
+ return this
78
88
  }
79
89
 
80
90
  , transition: function ( method, startEvent, completeEvent ) {
81
91
  var that = this
82
92
  , complete = function () {
83
93
  if (startEvent == 'show') that.reset()
94
+ that.transitioning = 0
84
95
  that.$element.trigger(completeEvent)
85
96
  }
86
97
 
98
+ this.transitioning = 1
99
+
87
100
  this.$element
88
101
  .trigger(startEvent)
89
102
  [method]('in')
@@ -133,4 +146,4 @@
133
146
  })
134
147
  })
135
148
 
136
- }( window.jQuery )
149
+ }( window.jQuery );
@@ -1,5 +1,5 @@
1
1
  /* ============================================================
2
- * bootstrap-dropdown.js v2.0.0
2
+ * bootstrap-dropdown.js v2.0.2
3
3
  * http://twitter.github.com/bootstrap/javascript.html#dropdowns
4
4
  * ============================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -86,7 +86,9 @@
86
86
 
87
87
  $(function () {
88
88
  $('html').on('click.dropdown.data-api', clearMenus)
89
- $('body').on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle)
89
+ $('body')
90
+ .on('click.dropdown', '.dropdown form', function (e) { e.stopPropagation() })
91
+ .on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle)
90
92
  })
91
93
 
92
- }( window.jQuery )
94
+ }( window.jQuery );
@@ -1,5 +1,5 @@
1
1
  /* =========================================================
2
- * bootstrap-modal.js v2.0.0
2
+ * bootstrap-modal.js v2.0.2
3
3
  * http://twitter.github.com/bootstrap/javascript.html#modals
4
4
  * =========================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -26,7 +26,7 @@
26
26
  * ====================== */
27
27
 
28
28
  var Modal = function ( content, options ) {
29
- this.options = $.extend({}, $.fn.modal.defaults, options)
29
+ this.options = options
30
30
  this.$element = $(content)
31
31
  .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
32
32
  }
@@ -177,16 +177,17 @@
177
177
  return this.each(function () {
178
178
  var $this = $(this)
179
179
  , data = $this.data('modal')
180
- , options = typeof option == 'object' && option
180
+ , options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option)
181
181
  if (!data) $this.data('modal', (data = new Modal(this, options)))
182
182
  if (typeof option == 'string') data[option]()
183
- else data.show()
183
+ else if (options.show) data.show()
184
184
  })
185
185
  }
186
186
 
187
187
  $.fn.modal.defaults = {
188
188
  backdrop: true
189
189
  , keyboard: true
190
+ , show: true
190
191
  }
191
192
 
192
193
  $.fn.modal.Constructor = Modal
@@ -206,4 +207,4 @@
206
207
  })
207
208
  })
208
209
 
209
- }( window.jQuery )
210
+ }( window.jQuery );
@@ -1,5 +1,5 @@
1
1
  /* ===========================================================
2
- * bootstrap-popover.js v2.0.0
2
+ * bootstrap-popover.js v2.0.2
3
3
  * http://twitter.github.com/bootstrap/javascript.html#popovers
4
4
  * ===========================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -38,8 +38,8 @@
38
38
  , title = this.getTitle()
39
39
  , content = this.getContent()
40
40
 
41
- $tip.find('.popover-title')[ $.type(title) == 'object' ? 'append' : 'html' ](title)
42
- $tip.find('.popover-content > *')[ $.type(content) == 'object' ? 'append' : 'html' ](content)
41
+ $tip.find('.popover-title').html(title)
42
+ $tip.find('.popover-content > *').html(content)
43
43
 
44
44
  $tip.removeClass('fade top bottom left right in')
45
45
  }
@@ -56,8 +56,6 @@
56
56
  content = $e.attr('data-content')
57
57
  || (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)
58
58
 
59
- content = content.toString().replace(/(^\s*|\s*$)/, "")
60
-
61
59
  return content
62
60
  }
63
61
 
@@ -92,4 +90,4 @@
92
90
  , template: '<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'
93
91
  })
94
92
 
95
- }( window.jQuery )
93
+ }( window.jQuery );
@@ -1,5 +1,5 @@
1
1
  /* =============================================================
2
- * bootstrap-scrollspy.js v2.0.0
2
+ * bootstrap-scrollspy.js v2.0.2
3
3
  * http://twitter.github.com/bootstrap/javascript.html#scrollspy
4
4
  * =============================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -43,25 +43,42 @@
43
43
  constructor: ScrollSpy
44
44
 
45
45
  , refresh: function () {
46
- this.targets = this.$body
46
+ var self = this
47
+ , $targets
48
+
49
+ this.offsets = []
50
+ this.targets = []
51
+
52
+ $targets = this.$body
47
53
  .find(this.selector)
48
54
  .map(function () {
49
55
  var href = $(this).attr('href')
50
- return /^#\w/.test(href) && $(href).length ? href : null
56
+ , $href = /^#\w/.test(href) && $(href)
57
+ return ( $href
58
+ && href.length
59
+ && [[ $href.position().top, href ]] ) || null
60
+ })
61
+ .sort(function (a, b) { return a[0] - b[0] })
62
+ .each(function () {
63
+ self.offsets.push(this[0])
64
+ self.targets.push(this[1])
51
65
  })
52
-
53
- this.offsets = $.map(this.targets, function (id) {
54
- return $(id).position().top
55
- })
56
66
  }
57
67
 
58
68
  , process: function () {
59
69
  var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
70
+ , scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
71
+ , maxScroll = scrollHeight - this.$scrollElement.height()
60
72
  , offsets = this.offsets
61
73
  , targets = this.targets
62
74
  , activeTarget = this.activeTarget
63
75
  , i
64
76
 
77
+ if (scrollTop >= maxScroll) {
78
+ return activeTarget != (i = targets.last()[0])
79
+ && this.activate ( i )
80
+ }
81
+
65
82
  for (i = offsets.length; i--;) {
66
83
  activeTarget != targets[i]
67
84
  && scrollTop >= offsets[i]
@@ -85,8 +102,10 @@
85
102
  .addClass('active')
86
103
 
87
104
  if ( active.parent('.dropdown-menu') ) {
88
- active.closest('li.dropdown').addClass('active')
105
+ active = active.closest('li.dropdown').addClass('active')
89
106
  }
107
+
108
+ active.trigger('activate')
90
109
  }
91
110
 
92
111
  }
@@ -122,4 +141,4 @@
122
141
  })
123
142
  })
124
143
 
125
- }( window.jQuery )
144
+ }( window.jQuery );
@@ -1,5 +1,5 @@
1
1
  /* ========================================================
2
- * bootstrap-tab.js v2.0.0
2
+ * bootstrap-tab.js v2.0.2
3
3
  * http://twitter.github.com/bootstrap/javascript.html#tabs
4
4
  * ========================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -127,4 +127,4 @@
127
127
  })
128
128
  })
129
129
 
130
- }( window.jQuery )
130
+ }( window.jQuery );
@@ -1,5 +1,5 @@
1
1
  /* ===========================================================
2
- * bootstrap-tooltip.js v2.0.0
2
+ * bootstrap-tooltip.js v2.0.2
3
3
  * http://twitter.github.com/bootstrap/javascript.html#tooltips
4
4
  * Inspired by the original jQuery.tipsy by Jason Frame
5
5
  * ===========================================================
@@ -73,8 +73,9 @@
73
73
  if (!self.options.delay || !self.options.delay.show) {
74
74
  self.show()
75
75
  } else {
76
+ clearTimeout(this.timeout)
76
77
  self.hoverState = 'in'
77
- setTimeout(function() {
78
+ this.timeout = setTimeout(function() {
78
79
  if (self.hoverState == 'in') {
79
80
  self.show()
80
81
  }
@@ -88,8 +89,9 @@
88
89
  if (!self.options.delay || !self.options.delay.hide) {
89
90
  self.hide()
90
91
  } else {
92
+ clearTimeout(this.timeout)
91
93
  self.hoverState = 'out'
92
- setTimeout(function() {
94
+ this.timeout = setTimeout(function() {
93
95
  if (self.hoverState == 'out') {
94
96
  self.hide()
95
97
  }
@@ -206,8 +208,6 @@
206
208
  title = $e.attr('data-original-title')
207
209
  || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
208
210
 
209
- title = title.toString().replace(/(^\s*|\s*$)/, "")
210
-
211
211
  return title
212
212
  }
213
213
 
@@ -267,4 +267,4 @@
267
267
  , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
268
268
  }
269
269
 
270
- }( window.jQuery )
270
+ }( window.jQuery );