less-rails-bootstrap 2.1.1 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. data/CHANGELOG.md +5 -0
  2. data/lib/less/rails/bootstrap/version.rb +1 -1
  3. data/scripts/update_bootstrap.sh +1 -1
  4. data/vendor/assets/javascripts/twitter/bootstrap/affix.js +4 -2
  5. data/vendor/assets/javascripts/twitter/bootstrap/alert.js +2 -4
  6. data/vendor/assets/javascripts/twitter/bootstrap/button.js +5 -7
  7. data/vendor/assets/javascripts/twitter/bootstrap/carousel.js +12 -12
  8. data/vendor/assets/javascripts/twitter/bootstrap/collapse.js +9 -11
  9. data/vendor/assets/javascripts/twitter/bootstrap/dropdown.js +9 -11
  10. data/vendor/assets/javascripts/twitter/bootstrap/modal.js +20 -25
  11. data/vendor/assets/javascripts/twitter/bootstrap/popover.js +1 -1
  12. data/vendor/assets/javascripts/twitter/bootstrap/scrollspy.js +1 -1
  13. data/vendor/assets/javascripts/twitter/bootstrap/tab.js +5 -7
  14. data/vendor/assets/javascripts/twitter/bootstrap/tooltip.js +12 -11
  15. data/vendor/assets/javascripts/twitter/bootstrap/transition.js +5 -5
  16. data/vendor/assets/javascripts/twitter/bootstrap/typeahead.js +19 -9
  17. data/vendor/frameworks/twitter/bootstrap/accordion.less +1 -1
  18. data/vendor/frameworks/twitter/bootstrap/alerts.less +1 -1
  19. data/vendor/frameworks/twitter/bootstrap/bootstrap.less +2 -1
  20. data/vendor/frameworks/twitter/bootstrap/breadcrumbs.less +1 -1
  21. data/vendor/frameworks/twitter/bootstrap/button-groups.less +5 -8
  22. data/vendor/frameworks/twitter/bootstrap/buttons.less +17 -16
  23. data/vendor/frameworks/twitter/bootstrap/close.less +1 -1
  24. data/vendor/frameworks/twitter/bootstrap/code.less +2 -2
  25. data/vendor/frameworks/twitter/bootstrap/dropdowns.less +32 -5
  26. data/vendor/frameworks/twitter/bootstrap/forms.less +47 -14
  27. data/vendor/frameworks/twitter/bootstrap/hero-unit.less +6 -5
  28. data/vendor/frameworks/twitter/bootstrap/labels-badges.less +4 -2
  29. data/vendor/frameworks/twitter/bootstrap/layouts.less +1 -1
  30. data/vendor/frameworks/twitter/bootstrap/media.less +55 -0
  31. data/vendor/frameworks/twitter/bootstrap/mixins.less +15 -10
  32. data/vendor/frameworks/twitter/bootstrap/modals.less +7 -11
  33. data/vendor/frameworks/twitter/bootstrap/navbar.less +6 -6
  34. data/vendor/frameworks/twitter/bootstrap/navs.less +3 -2
  35. data/vendor/frameworks/twitter/bootstrap/pager.less +11 -10
  36. data/vendor/frameworks/twitter/bootstrap/pagination.less +69 -12
  37. data/vendor/frameworks/twitter/bootstrap/popovers.less +2 -2
  38. data/vendor/frameworks/twitter/bootstrap/progress-bars.less +2 -2
  39. data/vendor/frameworks/twitter/bootstrap/reset.less +5 -4
  40. data/vendor/frameworks/twitter/bootstrap/responsive-767px-max.less +20 -1
  41. data/vendor/frameworks/twitter/bootstrap/responsive-navbar.less +12 -4
  42. data/vendor/frameworks/twitter/bootstrap/responsive.less +1 -1
  43. data/vendor/frameworks/twitter/bootstrap/sprites.less +3 -3
  44. data/vendor/frameworks/twitter/bootstrap/tables.less +20 -29
  45. data/vendor/frameworks/twitter/bootstrap/thumbnails.less +1 -1
  46. data/vendor/frameworks/twitter/bootstrap/tooltip.less +1 -1
  47. data/vendor/frameworks/twitter/bootstrap/type.less +30 -24
  48. data/vendor/frameworks/twitter/bootstrap/variables.less +23 -1
  49. data/vendor/frameworks/twitter/bootstrap/wells.less +3 -3
  50. metadata +33 -11
data/CHANGELOG.md CHANGED
@@ -1,6 +1,11 @@
1
1
  CHANGELOG
2
2
  =========
3
3
 
4
+ 2.2.0 - 10/31/2012
5
+
6
+ * Update bootstrap to 2.2.1. Thanks to @spider-network
7
+
8
+
4
9
  2.1.1 - 09/05/2012
5
10
 
6
11
  * Use bootstrap 2.1.1. Thanks @erdah.
@@ -1,7 +1,7 @@
1
1
  module Less
2
2
  module Rails
3
3
  module Bootstrap
4
- VERSION = "2.1.1"
4
+ VERSION = "2.2.0"
5
5
  end
6
6
  end
7
7
  end
@@ -1,6 +1,6 @@
1
1
  #!/bin/bash
2
2
 
3
- bs_dir='../bootstrap'
3
+ bs_dir='../../twitter/bootstrap'
4
4
  lrb_dir='.'
5
5
  lrb_img_dir="$lrb_dir/vendor/assets/images/twitter/bootstrap"
6
6
  lrb_js_dir="$lrb_dir/vendor/assets/javascripts/twitter/bootstrap"
@@ -1,5 +1,5 @@
1
1
  /* ==========================================================
2
- * bootstrap-affix.js v2.1.1
2
+ * bootstrap-affix.js v2.2.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#affix
4
4
  * ==========================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -28,7 +28,9 @@
28
28
 
29
29
  var Affix = function (element, options) {
30
30
  this.options = $.extend({}, $.fn.affix.defaults, options)
31
- this.$window = $(window).on('scroll.affix.data-api', $.proxy(this.checkPosition, this))
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))
32
34
  this.$element = $(element)
33
35
  this.checkPosition()
34
36
  }
@@ -1,5 +1,5 @@
1
1
  /* ==========================================================
2
- * bootstrap-alert.js v2.1.1
2
+ * bootstrap-alert.js v2.2.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#alerts
4
4
  * ==========================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -83,8 +83,6 @@
83
83
  /* ALERT DATA-API
84
84
  * ============== */
85
85
 
86
- $(function () {
87
- $('body').on('click.alert.data-api', dismiss, Alert.prototype.close)
88
- })
86
+ $(document).on('click.alert.data-api', dismiss, Alert.prototype.close)
89
87
 
90
88
  }(window.jQuery);
@@ -1,5 +1,5 @@
1
1
  /* ============================================================
2
- * bootstrap-button.js v2.1.1
2
+ * bootstrap-button.js v2.2.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#buttons
4
4
  * ============================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -85,12 +85,10 @@
85
85
  /* BUTTON DATA-API
86
86
  * =============== */
87
87
 
88
- $(function () {
89
- $('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) {
90
- var $btn = $(e.target)
91
- if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
92
- $btn.button('toggle')
93
- })
88
+ $(document).on('click.button.data-api', '[data-toggle^=button]', function (e) {
89
+ var $btn = $(e.target)
90
+ if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
91
+ $btn.button('toggle')
94
92
  })
95
93
 
96
94
  }(window.jQuery);
@@ -1,5 +1,5 @@
1
1
  /* ==========================================================
2
- * bootstrap-carousel.js v2.1.1
2
+ * bootstrap-carousel.js v2.2.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#carousel
4
4
  * ==========================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -94,9 +94,7 @@
94
94
  , direction = type == 'next' ? 'left' : 'right'
95
95
  , fallback = type == 'next' ? 'first' : 'last'
96
96
  , that = this
97
- , e = $.Event('slide', {
98
- relatedTarget: $next[0]
99
- })
97
+ , e
100
98
 
101
99
  this.sliding = true
102
100
 
@@ -104,6 +102,10 @@
104
102
 
105
103
  $next = $next.length ? $next : this.$element.find('.item')[fallback]()
106
104
 
105
+ e = $.Event('slide', {
106
+ relatedTarget: $next[0]
107
+ })
108
+
107
109
  if ($next.hasClass('active')) return
108
110
 
109
111
  if ($.support.transition && this.$element.hasClass('slide')) {
@@ -163,14 +165,12 @@
163
165
  /* CAROUSEL DATA-API
164
166
  * ================= */
165
167
 
166
- $(function () {
167
- $('body').on('click.carousel.data-api', '[data-slide]', function ( e ) {
168
- var $this = $(this), href
169
- , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
170
- , options = !$target.data('modal') && $.extend({}, $target.data(), $this.data())
171
- $target.carousel(options)
172
- e.preventDefault()
173
- })
168
+ $(document).on('click.carousel.data-api', '[data-slide]', function (e) {
169
+ var $this = $(this), href
170
+ , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
171
+ , options = $.extend({}, $target.data(), $this.data())
172
+ $target.carousel(options)
173
+ e.preventDefault()
174
174
  })
175
175
 
176
176
  }(window.jQuery);
@@ -1,5 +1,5 @@
1
1
  /* =============================================================
2
- * bootstrap-collapse.js v2.1.1
2
+ * bootstrap-collapse.js v2.2.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#collapse
4
4
  * =============================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -143,16 +143,14 @@
143
143
  /* COLLAPSIBLE DATA-API
144
144
  * ==================== */
145
145
 
146
- $(function () {
147
- $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function (e) {
148
- var $this = $(this), href
149
- , target = $this.attr('data-target')
150
- || e.preventDefault()
151
- || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
152
- , option = $(target).data('collapse') ? 'toggle' : $this.data()
153
- $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
154
- $(target).collapse(option)
155
- })
146
+ $(document).on('click.collapse.data-api', '[data-toggle=collapse]', function (e) {
147
+ var $this = $(this), href
148
+ , target = $this.attr('data-target')
149
+ || e.preventDefault()
150
+ || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
151
+ , option = $(target).data('collapse') ? 'toggle' : $this.data()
152
+ $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
153
+ $(target).collapse(option)
156
154
  })
157
155
 
158
156
  }(window.jQuery);
@@ -1,5 +1,5 @@
1
1
  /* ============================================================
2
- * bootstrap-dropdown.js v2.1.1
2
+ * bootstrap-dropdown.js v2.2.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#dropdowns
4
4
  * ============================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -100,8 +100,9 @@
100
100
  }
101
101
 
102
102
  function clearMenus() {
103
- getParent($(toggle))
104
- .removeClass('open')
103
+ $(toggle).each(function () {
104
+ getParent($(this)).removeClass('open')
105
+ })
105
106
  }
106
107
 
107
108
  function getParent($this) {
@@ -138,13 +139,10 @@
138
139
  /* APPLY TO STANDARD DROPDOWN ELEMENTS
139
140
  * =================================== */
140
141
 
141
- $(function () {
142
- $('html')
143
- .on('click.dropdown.data-api touchstart.dropdown.data-api', clearMenus)
144
- $('body')
145
- .on('click.dropdown touchstart.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
146
- .on('click.dropdown.data-api touchstart.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
147
- .on('keydown.dropdown.data-api touchstart.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
148
- })
142
+ $(document)
143
+ .on('click.dropdown.data-api touchstart.dropdown.data-api', clearMenus)
144
+ .on('click.dropdown touchstart.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
145
+ .on('click.dropdown.data-api touchstart.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
146
+ .on('keydown.dropdown.data-api touchstart.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
149
147
 
150
148
  }(window.jQuery);
@@ -1,5 +1,5 @@
1
1
  /* =========================================================
2
- * bootstrap-modal.js v2.1.1
2
+ * bootstrap-modal.js v2.2.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#modals
4
4
  * =========================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -49,8 +49,6 @@
49
49
 
50
50
  if (this.isShown || e.isDefaultPrevented()) return
51
51
 
52
- $('body').addClass('modal-open')
53
-
54
52
  this.isShown = true
55
53
 
56
54
  this.escape()
@@ -72,13 +70,12 @@
72
70
  that.$element
73
71
  .addClass('in')
74
72
  .attr('aria-hidden', false)
75
- .focus()
76
73
 
77
74
  that.enforceFocus()
78
75
 
79
76
  transition ?
80
- that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) :
81
- that.$element.trigger('shown')
77
+ that.$element.one($.support.transition.end, function () { that.$element.focus().trigger('shown') }) :
78
+ that.$element.focus().trigger('shown')
82
79
 
83
80
  })
84
81
  }
@@ -96,8 +93,6 @@
96
93
 
97
94
  this.isShown = false
98
95
 
99
- $('body').removeClass('modal-open')
100
-
101
96
  this.escape()
102
97
 
103
98
  $(document).off('focusin.modal')
@@ -167,9 +162,11 @@
167
162
  this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
168
163
  .appendTo(document.body)
169
164
 
170
- if (this.options.backdrop != 'static') {
171
- this.$backdrop.click($.proxy(this.hide, this))
172
- }
165
+ this.$backdrop.click(
166
+ this.options.backdrop == 'static' ?
167
+ $.proxy(this.$element[0].focus, this.$element[0])
168
+ : $.proxy(this.hide, this)
169
+ )
173
170
 
174
171
  if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
175
172
 
@@ -219,21 +216,19 @@
219
216
  /* MODAL DATA-API
220
217
  * ============== */
221
218
 
222
- $(function () {
223
- $('body').on('click.modal.data-api', '[data-toggle="modal"]', function ( e ) {
224
- var $this = $(this)
225
- , href = $this.attr('href')
226
- , $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
227
- , option = $target.data('modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
219
+ $(document).on('click.modal.data-api', '[data-toggle="modal"]', function (e) {
220
+ var $this = $(this)
221
+ , href = $this.attr('href')
222
+ , $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
223
+ , option = $target.data('modal') ? 'toggle' : $.extend({ remote:!/#/.test(href) && href }, $target.data(), $this.data())
228
224
 
229
- e.preventDefault()
225
+ e.preventDefault()
230
226
 
231
- $target
232
- .modal(option)
233
- .one('hide', function () {
234
- $this.focus()
235
- })
236
- })
227
+ $target
228
+ .modal(option)
229
+ .one('hide', function () {
230
+ $this.focus()
231
+ })
237
232
  })
238
233
 
239
- }(window.jQuery);
234
+ }(window.jQuery);
@@ -1,5 +1,5 @@
1
1
  /* ===========================================================
2
- * bootstrap-popover.js v2.1.1
2
+ * bootstrap-popover.js v2.2.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#popovers
4
4
  * ===========================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -1,5 +1,5 @@
1
1
  /* =============================================================
2
- * bootstrap-scrollspy.js v2.1.1
2
+ * bootstrap-scrollspy.js v2.2.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#scrollspy
4
4
  * =============================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -1,5 +1,5 @@
1
1
  /* ========================================================
2
- * bootstrap-tab.js v2.1.1
2
+ * bootstrap-tab.js v2.2.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#tabs
4
4
  * ========================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -49,7 +49,7 @@
49
49
 
50
50
  if ( $this.parent('li').hasClass('active') ) return
51
51
 
52
- previous = $ul.find('.active a').last()[0]
52
+ previous = $ul.find('.active:last a')[0]
53
53
 
54
54
  e = $.Event('show', {
55
55
  relatedTarget: previous
@@ -125,11 +125,9 @@
125
125
  /* TAB DATA-API
126
126
  * ============ */
127
127
 
128
- $(function () {
129
- $('body').on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
130
- e.preventDefault()
131
- $(this).tab('show')
132
- })
128
+ $(document).on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
129
+ e.preventDefault()
130
+ $(this).tab('show')
133
131
  })
134
132
 
135
133
  }(window.jQuery);
@@ -1,5 +1,5 @@
1
1
  /* ===========================================================
2
- * bootstrap-tooltip.js v2.1.1
2
+ * bootstrap-tooltip.js v2.2.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#tooltips
4
4
  * Inspired by the original jQuery.tipsy by Jason Frame
5
5
  * ===========================================================
@@ -119,9 +119,9 @@
119
119
  inside = /in/.test(placement)
120
120
 
121
121
  $tip
122
- .remove()
122
+ .detach()
123
123
  .css({ top: 0, left: 0, display: 'block' })
124
- .appendTo(inside ? this.$element : document.body)
124
+ .insertAfter(this.$element)
125
125
 
126
126
  pos = this.getPosition(inside)
127
127
 
@@ -144,7 +144,7 @@
144
144
  }
145
145
 
146
146
  $tip
147
- .css(tp)
147
+ .offset(tp)
148
148
  .addClass(placement)
149
149
  .addClass('in')
150
150
  }
@@ -166,18 +166,18 @@
166
166
 
167
167
  function removeWithAnimation() {
168
168
  var timeout = setTimeout(function () {
169
- $tip.off($.support.transition.end).remove()
169
+ $tip.off($.support.transition.end).detach()
170
170
  }, 500)
171
171
 
172
172
  $tip.one($.support.transition.end, function () {
173
173
  clearTimeout(timeout)
174
- $tip.remove()
174
+ $tip.detach()
175
175
  })
176
176
  }
177
177
 
178
178
  $.support.transition && this.$tip.hasClass('fade') ?
179
179
  removeWithAnimation() :
180
- $tip.remove()
180
+ $tip.detach()
181
181
 
182
182
  return this
183
183
  }
@@ -235,8 +235,9 @@
235
235
  this.enabled = !this.enabled
236
236
  }
237
237
 
238
- , toggle: function () {
239
- this[this.tip().hasClass('in') ? 'hide' : 'show']()
238
+ , toggle: function (e) {
239
+ var self = $(e.currentTarget)[this.type](this._options).data(this.type)
240
+ self[self.tip().hasClass('in') ? 'hide' : 'show']()
240
241
  }
241
242
 
242
243
  , destroy: function () {
@@ -269,7 +270,7 @@
269
270
  , trigger: 'hover'
270
271
  , title: ''
271
272
  , delay: 0
272
- , html: true
273
+ , html: false
273
274
  }
274
275
 
275
- }(window.jQuery);
276
+ }(window.jQuery);
@@ -1,5 +1,5 @@
1
1
  /* ===================================================
2
- * bootstrap-transition.js v2.1.1
2
+ * bootstrap-transition.js v2.2.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#transitions
4
4
  * ===================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -20,13 +20,13 @@
20
20
 
21
21
  !function ($) {
22
22
 
23
- $(function () {
23
+ "use strict"; // jshint ;_;
24
24
 
25
- "use strict"; // jshint ;_;
26
25
 
26
+ /* CSS TRANSITION SUPPORT (http://www.modernizr.com/)
27
+ * ======================================================= */
27
28
 
28
- /* CSS TRANSITION SUPPORT (http://www.modernizr.com/)
29
- * ======================================================= */
29
+ $(function () {
30
30
 
31
31
  $.support.transition = (function () {
32
32
 
@@ -1,5 +1,5 @@
1
1
  /* =============================================================
2
- * bootstrap-typeahead.js v2.1.1
2
+ * bootstrap-typeahead.js v2.2.1
3
3
  * http://twitter.github.com/bootstrap/javascript.html#typeahead
4
4
  * =============================================================
5
5
  * Copyright 2012 Twitter, Inc.
@@ -174,7 +174,7 @@
174
174
  .on('keypress', $.proxy(this.keypress, this))
175
175
  .on('keyup', $.proxy(this.keyup, this))
176
176
 
177
- if ($.browser.chrome || $.browser.webkit || $.browser.msie) {
177
+ if (this.eventSupported('keydown')) {
178
178
  this.$element.on('keydown', $.proxy(this.keydown, this))
179
179
  }
180
180
 
@@ -183,6 +183,15 @@
183
183
  .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
184
184
  }
185
185
 
186
+ , eventSupported: function(eventName) {
187
+ var isSupported = eventName in this.$element
188
+ if (!isSupported) {
189
+ this.$element.setAttribute(eventName, 'return;')
190
+ isSupported = typeof this.$element[eventName] === 'function'
191
+ }
192
+ return isSupported
193
+ }
194
+
186
195
  , move: function (e) {
187
196
  if (!this.shown) return
188
197
 
@@ -221,6 +230,9 @@
221
230
  switch(e.keyCode) {
222
231
  case 40: // down arrow
223
232
  case 38: // up arrow
233
+ case 16: // shift
234
+ case 17: // ctrl
235
+ case 18: // alt
224
236
  break
225
237
 
226
238
  case 9: // tab
@@ -288,13 +300,11 @@
288
300
  /* TYPEAHEAD DATA-API
289
301
  * ================== */
290
302
 
291
- $(function () {
292
- $('body').on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
293
- var $this = $(this)
294
- if ($this.data('typeahead')) return
295
- e.preventDefault()
296
- $this.typeahead($this.data())
297
- })
303
+ $(document).on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
304
+ var $this = $(this)
305
+ if ($this.data('typeahead')) return
306
+ e.preventDefault()
307
+ $this.typeahead($this.data())
298
308
  })
299
309
 
300
310
  }(window.jQuery);