bootstrap-sass 3.3.1.0 → 3.3.6
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of bootstrap-sass might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.travis.yml +8 -8
- data/CHANGELOG.md +44 -0
- data/CONTRIBUTING.md +8 -1
- data/Gemfile +1 -1
- data/LICENSE +1 -1
- data/README.md +69 -49
- data/Rakefile +46 -4
- data/assets/fonts/bootstrap/glyphicons-halflings-regular.eot +0 -0
- data/assets/fonts/bootstrap/glyphicons-halflings-regular.svg +273 -214
- data/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
- data/assets/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
- data/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2 +0 -0
- data/assets/javascripts/bootstrap/affix.js +7 -7
- data/assets/javascripts/bootstrap/alert.js +3 -3
- data/assets/javascripts/bootstrap/button.js +14 -10
- data/assets/javascripts/bootstrap/carousel.js +11 -14
- data/assets/javascripts/bootstrap/collapse.js +9 -9
- data/assets/javascripts/bootstrap/dropdown.js +49 -45
- data/assets/javascripts/bootstrap/modal.js +45 -32
- data/assets/javascripts/bootstrap/popover.js +9 -20
- data/assets/javascripts/bootstrap/scrollspy.js +18 -21
- data/assets/javascripts/bootstrap/tab.js +7 -5
- data/assets/javascripts/bootstrap/tooltip.js +82 -46
- data/assets/javascripts/bootstrap/transition.js +2 -2
- data/assets/javascripts/bootstrap-sprockets.js +2 -2
- data/assets/javascripts/bootstrap.js +1210 -1151
- data/assets/javascripts/bootstrap.min.js +7 -0
- data/assets/stylesheets/_bootstrap-compass.scss +2 -0
- data/assets/stylesheets/_bootstrap-mincer.scss +4 -2
- data/assets/stylesheets/_bootstrap-sprockets.scss +2 -0
- data/assets/stylesheets/_bootstrap.scss +6 -0
- data/assets/stylesheets/bootstrap/_alerts.scss +5 -0
- data/assets/stylesheets/bootstrap/_badges.scss +7 -2
- data/assets/stylesheets/bootstrap/_breadcrumbs.scss +3 -1
- data/assets/stylesheets/bootstrap/_button-groups.scss +5 -4
- data/assets/stylesheets/bootstrap/_buttons.scss +14 -6
- data/assets/stylesheets/bootstrap/_carousel.scss +16 -13
- data/assets/stylesheets/bootstrap/_close.scss +1 -0
- data/assets/stylesheets/bootstrap/_component-animations.scss +1 -2
- data/assets/stylesheets/bootstrap/_dropdowns.scss +6 -3
- data/assets/stylesheets/bootstrap/_forms.scss +98 -29
- data/assets/stylesheets/bootstrap/_glyphicons.scss +83 -10
- data/assets/stylesheets/bootstrap/_input-groups.scss +8 -3
- data/assets/stylesheets/bootstrap/_jumbotron.scss +8 -3
- data/assets/stylesheets/bootstrap/_list-group.scss +9 -3
- data/assets/stylesheets/bootstrap/_media.scss +19 -0
- data/assets/stylesheets/bootstrap/_mixins.scss +1 -0
- data/assets/stylesheets/bootstrap/_modals.scss +4 -2
- data/assets/stylesheets/bootstrap/_navbar.scss +1 -1
- data/assets/stylesheets/bootstrap/_navs.scss +0 -2
- data/assets/stylesheets/bootstrap/_normalize.scss +8 -11
- data/assets/stylesheets/bootstrap/_pagination.scss +4 -3
- data/assets/stylesheets/bootstrap/_panels.scss +11 -1
- data/assets/stylesheets/bootstrap/_popovers.scss +4 -8
- data/assets/stylesheets/bootstrap/_print.scss +0 -6
- data/assets/stylesheets/bootstrap/_responsive-embed.scss +8 -8
- data/assets/stylesheets/bootstrap/_responsive-utilities.scss +8 -3
- data/assets/stylesheets/bootstrap/_scaffolding.scss +11 -0
- data/assets/stylesheets/bootstrap/_tables.scss +3 -3
- data/assets/stylesheets/bootstrap/_theme.scss +26 -7
- data/assets/stylesheets/bootstrap/_tooltip.scss +4 -6
- data/assets/stylesheets/bootstrap/_type.scss +2 -2
- data/assets/stylesheets/bootstrap/_utilities.scss +0 -1
- data/assets/stylesheets/bootstrap/_variables.scss +20 -10
- data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +2 -1
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +19 -6
- data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +2 -2
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +4 -4
- data/assets/stylesheets/bootstrap/mixins/_hide-text.scss +3 -3
- data/assets/stylesheets/bootstrap/mixins/_list-group.scss +3 -2
- data/assets/stylesheets/bootstrap/mixins/_opacity.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_pagination.scss +2 -1
- data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +18 -0
- data/assets/stylesheets/bootstrap/mixins/_responsive-visibility.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +2 -1
- data/assets/stylesheets/bootstrap/mixins/_vendor-prefixes.scss +3 -3
- data/bootstrap-sass.gemspec +9 -9
- data/bower.json +5 -19
- data/composer.json +1 -1
- data/lib/bootstrap-sass/engine.rb +6 -1
- data/lib/bootstrap-sass/version.rb +2 -2
- data/lib/bootstrap-sass.rb +27 -5
- data/package.json +6 -6
- data/sache.json +1 -1
- data/tasks/bower.rake +2 -5
- data/tasks/converter/fonts_conversion.rb +1 -1
- data/tasks/converter/js_conversion.rb +7 -5
- data/tasks/converter/less_conversion.rb +41 -29
- data/tasks/converter/network.rb +10 -5
- data/tasks/converter.rb +1 -1
- data/templates/project/_bootstrap-variables.sass +20 -11
- data/templates/project/styles.sass +3 -0
- data/test/dummy_rails/app/assets/stylesheets/{application.css.sass → application.sass} +0 -0
- data/test/dummy_rails/app/views/pages/root.html.slim +43 -0
- data/test/dummy_rails/config/application.rb +1 -1
- data/test/dummy_rails/config/environments/development.rb +0 -3
- data/test/dummy_rails/config/environments/production.rb +7 -1
- data/test/dummy_rails/config/environments/test.rb +9 -1
- data/test/dummy_sass_only/Gemfile +1 -1
- data/test/gemfiles/rails_head.gemfile +17 -0
- data/test/node_mincer_test.rb +2 -3
- data/test/node_sass_compile_test.sh +2 -2
- data/test/sprockets_rails_test.rb +1 -1
- data/test/support/reporting.rb +10 -0
- data/test/test_helper.rb +1 -1
- metadata +36 -34
- data/test/dummy_rails/log/development.log +0 -0
- data/test/gemfiles/sass_3_2.gemfile +0 -6
@@ -1,8 +1,8 @@
|
|
1
1
|
/* ========================================================================
|
2
|
-
* Bootstrap: scrollspy.js v3.3.
|
2
|
+
* Bootstrap: scrollspy.js v3.3.6
|
3
3
|
* http://getbootstrap.com/javascript/#scrollspy
|
4
4
|
* ========================================================================
|
5
|
-
* Copyright 2011-
|
5
|
+
* Copyright 2011-2015 Twitter, Inc.
|
6
6
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
7
7
|
* ======================================================================== */
|
8
8
|
|
@@ -14,10 +14,8 @@
|
|
14
14
|
// ==========================
|
15
15
|
|
16
16
|
function ScrollSpy(element, options) {
|
17
|
-
|
18
|
-
|
19
|
-
this.$body = $('body')
|
20
|
-
this.$scrollElement = $(element).is('body') ? $(window) : $(element)
|
17
|
+
this.$body = $(document.body)
|
18
|
+
this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
|
21
19
|
this.options = $.extend({}, ScrollSpy.DEFAULTS, options)
|
22
20
|
this.selector = (this.options.target || '') + ' .nav li > a'
|
23
21
|
this.offsets = []
|
@@ -25,12 +23,12 @@
|
|
25
23
|
this.activeTarget = null
|
26
24
|
this.scrollHeight = 0
|
27
25
|
|
28
|
-
this.$scrollElement.on('scroll.bs.scrollspy', process)
|
26
|
+
this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))
|
29
27
|
this.refresh()
|
30
28
|
this.process()
|
31
29
|
}
|
32
30
|
|
33
|
-
ScrollSpy.VERSION = '3.3.
|
31
|
+
ScrollSpy.VERSION = '3.3.6'
|
34
32
|
|
35
33
|
ScrollSpy.DEFAULTS = {
|
36
34
|
offset: 10
|
@@ -41,20 +39,19 @@
|
|
41
39
|
}
|
42
40
|
|
43
41
|
ScrollSpy.prototype.refresh = function () {
|
44
|
-
var
|
45
|
-
var
|
42
|
+
var that = this
|
43
|
+
var offsetMethod = 'offset'
|
44
|
+
var offsetBase = 0
|
45
|
+
|
46
|
+
this.offsets = []
|
47
|
+
this.targets = []
|
48
|
+
this.scrollHeight = this.getScrollHeight()
|
46
49
|
|
47
50
|
if (!$.isWindow(this.$scrollElement[0])) {
|
48
51
|
offsetMethod = 'position'
|
49
52
|
offsetBase = this.$scrollElement.scrollTop()
|
50
53
|
}
|
51
54
|
|
52
|
-
this.offsets = []
|
53
|
-
this.targets = []
|
54
|
-
this.scrollHeight = this.getScrollHeight()
|
55
|
-
|
56
|
-
var self = this
|
57
|
-
|
58
55
|
this.$body
|
59
56
|
.find(this.selector)
|
60
57
|
.map(function () {
|
@@ -69,8 +66,8 @@
|
|
69
66
|
})
|
70
67
|
.sort(function (a, b) { return a[0] - b[0] })
|
71
68
|
.each(function () {
|
72
|
-
|
73
|
-
|
69
|
+
that.offsets.push(this[0])
|
70
|
+
that.targets.push(this[1])
|
74
71
|
})
|
75
72
|
}
|
76
73
|
|
@@ -99,7 +96,7 @@
|
|
99
96
|
for (i = offsets.length; i--;) {
|
100
97
|
activeTarget != targets[i]
|
101
98
|
&& scrollTop >= offsets[i]
|
102
|
-
&& (
|
99
|
+
&& (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])
|
103
100
|
&& this.activate(targets[i])
|
104
101
|
}
|
105
102
|
}
|
@@ -110,8 +107,8 @@
|
|
110
107
|
this.clear()
|
111
108
|
|
112
109
|
var selector = this.selector +
|
113
|
-
|
114
|
-
|
110
|
+
'[data-target="' + target + '"],' +
|
111
|
+
this.selector + '[href="' + target + '"]'
|
115
112
|
|
116
113
|
var active = $(selector)
|
117
114
|
.parents('li')
|
@@ -1,8 +1,8 @@
|
|
1
1
|
/* ========================================================================
|
2
|
-
* Bootstrap: tab.js v3.3.
|
2
|
+
* Bootstrap: tab.js v3.3.6
|
3
3
|
* http://getbootstrap.com/javascript/#tabs
|
4
4
|
* ========================================================================
|
5
|
-
* Copyright 2011-
|
5
|
+
* Copyright 2011-2015 Twitter, Inc.
|
6
6
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
7
7
|
* ======================================================================== */
|
8
8
|
|
@@ -14,10 +14,12 @@
|
|
14
14
|
// ====================
|
15
15
|
|
16
16
|
var Tab = function (element) {
|
17
|
+
// jscs:disable requireDollarBeforejQueryAssignment
|
17
18
|
this.element = $(element)
|
19
|
+
// jscs:enable requireDollarBeforejQueryAssignment
|
18
20
|
}
|
19
21
|
|
20
|
-
Tab.VERSION = '3.3.
|
22
|
+
Tab.VERSION = '3.3.6'
|
21
23
|
|
22
24
|
Tab.TRANSITION_DURATION = 150
|
23
25
|
|
@@ -65,7 +67,7 @@
|
|
65
67
|
var $active = container.find('> .active')
|
66
68
|
var transition = callback
|
67
69
|
&& $.support.transition
|
68
|
-
&& (
|
70
|
+
&& ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)
|
69
71
|
|
70
72
|
function next() {
|
71
73
|
$active
|
@@ -88,7 +90,7 @@
|
|
88
90
|
element.removeClass('fade')
|
89
91
|
}
|
90
92
|
|
91
|
-
if (element.parent('.dropdown-menu')) {
|
93
|
+
if (element.parent('.dropdown-menu').length) {
|
92
94
|
element
|
93
95
|
.closest('li.dropdown')
|
94
96
|
.addClass('active')
|
@@ -1,9 +1,9 @@
|
|
1
1
|
/* ========================================================================
|
2
|
-
* Bootstrap: tooltip.js v3.3.
|
2
|
+
* Bootstrap: tooltip.js v3.3.6
|
3
3
|
* http://getbootstrap.com/javascript/#tooltip
|
4
4
|
* Inspired by the original jQuery.tipsy by Jason Frame
|
5
5
|
* ========================================================================
|
6
|
-
* Copyright 2011-
|
6
|
+
* Copyright 2011-2015 Twitter, Inc.
|
7
7
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
8
8
|
* ======================================================================== */
|
9
9
|
|
@@ -15,17 +15,18 @@
|
|
15
15
|
// ===============================
|
16
16
|
|
17
17
|
var Tooltip = function (element, options) {
|
18
|
-
this.type =
|
19
|
-
this.options =
|
20
|
-
this.enabled =
|
21
|
-
this.timeout =
|
22
|
-
this.hoverState =
|
18
|
+
this.type = null
|
19
|
+
this.options = null
|
20
|
+
this.enabled = null
|
21
|
+
this.timeout = null
|
22
|
+
this.hoverState = null
|
23
23
|
this.$element = null
|
24
|
+
this.inState = null
|
24
25
|
|
25
26
|
this.init('tooltip', element, options)
|
26
27
|
}
|
27
28
|
|
28
|
-
Tooltip.VERSION = '3.3.
|
29
|
+
Tooltip.VERSION = '3.3.6'
|
29
30
|
|
30
31
|
Tooltip.TRANSITION_DURATION = 150
|
31
32
|
|
@@ -50,7 +51,12 @@
|
|
50
51
|
this.type = type
|
51
52
|
this.$element = $(element)
|
52
53
|
this.options = this.getOptions(options)
|
53
|
-
this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport)
|
54
|
+
this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
|
55
|
+
this.inState = { click: false, hover: false, focus: false }
|
56
|
+
|
57
|
+
if (this.$element[0] instanceof document.constructor && !this.options.selector) {
|
58
|
+
throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
|
59
|
+
}
|
54
60
|
|
55
61
|
var triggers = this.options.trigger.split(' ')
|
56
62
|
|
@@ -105,16 +111,20 @@
|
|
105
111
|
var self = obj instanceof this.constructor ?
|
106
112
|
obj : $(obj.currentTarget).data('bs.' + this.type)
|
107
113
|
|
108
|
-
if (self && self.$tip && self.$tip.is(':visible')) {
|
109
|
-
self.hoverState = 'in'
|
110
|
-
return
|
111
|
-
}
|
112
|
-
|
113
114
|
if (!self) {
|
114
115
|
self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
|
115
116
|
$(obj.currentTarget).data('bs.' + this.type, self)
|
116
117
|
}
|
117
118
|
|
119
|
+
if (obj instanceof $.Event) {
|
120
|
+
self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true
|
121
|
+
}
|
122
|
+
|
123
|
+
if (self.tip().hasClass('in') || self.hoverState == 'in') {
|
124
|
+
self.hoverState = 'in'
|
125
|
+
return
|
126
|
+
}
|
127
|
+
|
118
128
|
clearTimeout(self.timeout)
|
119
129
|
|
120
130
|
self.hoverState = 'in'
|
@@ -126,6 +136,14 @@
|
|
126
136
|
}, self.options.delay.show)
|
127
137
|
}
|
128
138
|
|
139
|
+
Tooltip.prototype.isInStateTrue = function () {
|
140
|
+
for (var key in this.inState) {
|
141
|
+
if (this.inState[key]) return true
|
142
|
+
}
|
143
|
+
|
144
|
+
return false
|
145
|
+
}
|
146
|
+
|
129
147
|
Tooltip.prototype.leave = function (obj) {
|
130
148
|
var self = obj instanceof this.constructor ?
|
131
149
|
obj : $(obj.currentTarget).data('bs.' + this.type)
|
@@ -135,6 +153,12 @@
|
|
135
153
|
$(obj.currentTarget).data('bs.' + this.type, self)
|
136
154
|
}
|
137
155
|
|
156
|
+
if (obj instanceof $.Event) {
|
157
|
+
self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
|
158
|
+
}
|
159
|
+
|
160
|
+
if (self.isInStateTrue()) return
|
161
|
+
|
138
162
|
clearTimeout(self.timeout)
|
139
163
|
|
140
164
|
self.hoverState = 'out'
|
@@ -181,6 +205,7 @@
|
|
181
205
|
.data('bs.' + this.type, this)
|
182
206
|
|
183
207
|
this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
|
208
|
+
this.$element.trigger('inserted.bs.' + this.type)
|
184
209
|
|
185
210
|
var pos = this.getPosition()
|
186
211
|
var actualWidth = $tip[0].offsetWidth
|
@@ -188,13 +213,12 @@
|
|
188
213
|
|
189
214
|
if (autoPlace) {
|
190
215
|
var orgPlacement = placement
|
191
|
-
var
|
192
|
-
var containerDim = this.getPosition($container)
|
216
|
+
var viewportDim = this.getPosition(this.$viewport)
|
193
217
|
|
194
|
-
placement = placement == 'bottom' && pos.bottom + actualHeight >
|
195
|
-
placement == 'top' && pos.top - actualHeight <
|
196
|
-
placement == 'right' && pos.right + actualWidth >
|
197
|
-
placement == 'left' && pos.left - actualWidth <
|
218
|
+
placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :
|
219
|
+
placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :
|
220
|
+
placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :
|
221
|
+
placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :
|
198
222
|
placement
|
199
223
|
|
200
224
|
$tip
|
@@ -235,8 +259,8 @@
|
|
235
259
|
if (isNaN(marginTop)) marginTop = 0
|
236
260
|
if (isNaN(marginLeft)) marginLeft = 0
|
237
261
|
|
238
|
-
offset.top
|
239
|
-
offset.left
|
262
|
+
offset.top += marginTop
|
263
|
+
offset.left += marginLeft
|
240
264
|
|
241
265
|
// $.fn.offset doesn't round pixel values
|
242
266
|
// so we use setOffset directly with our own function B-0
|
@@ -272,10 +296,10 @@
|
|
272
296
|
this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
|
273
297
|
}
|
274
298
|
|
275
|
-
Tooltip.prototype.replaceArrow = function (delta, dimension,
|
299
|
+
Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {
|
276
300
|
this.arrow()
|
277
|
-
.css(
|
278
|
-
.css(
|
301
|
+
.css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
|
302
|
+
.css(isVertical ? 'top' : 'left', '')
|
279
303
|
}
|
280
304
|
|
281
305
|
Tooltip.prototype.setContent = function () {
|
@@ -288,7 +312,7 @@
|
|
288
312
|
|
289
313
|
Tooltip.prototype.hide = function (callback) {
|
290
314
|
var that = this
|
291
|
-
var $tip = this
|
315
|
+
var $tip = $(this.$tip)
|
292
316
|
var e = $.Event('hide.bs.' + this.type)
|
293
317
|
|
294
318
|
function complete() {
|
@@ -305,7 +329,7 @@
|
|
305
329
|
|
306
330
|
$tip.removeClass('in')
|
307
331
|
|
308
|
-
$.support.transition &&
|
332
|
+
$.support.transition && $tip.hasClass('fade') ?
|
309
333
|
$tip
|
310
334
|
.one('bsTransitionEnd', complete)
|
311
335
|
.emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
|
@@ -318,7 +342,7 @@
|
|
318
342
|
|
319
343
|
Tooltip.prototype.fixTitle = function () {
|
320
344
|
var $e = this.$element
|
321
|
-
if ($e.attr('title') || typeof
|
345
|
+
if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {
|
322
346
|
$e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
|
323
347
|
}
|
324
348
|
}
|
@@ -346,10 +370,10 @@
|
|
346
370
|
}
|
347
371
|
|
348
372
|
Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
|
349
|
-
return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2
|
350
|
-
placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2
|
373
|
+
return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :
|
374
|
+
placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
|
351
375
|
placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
|
352
|
-
/* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width
|
376
|
+
/* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
|
353
377
|
|
354
378
|
}
|
355
379
|
|
@@ -373,7 +397,7 @@
|
|
373
397
|
var rightEdgeOffset = pos.left + viewportPadding + actualWidth
|
374
398
|
if (leftEdgeOffset < viewportDimensions.left) { // left overflow
|
375
399
|
delta.left = viewportDimensions.left - leftEdgeOffset
|
376
|
-
} else if (rightEdgeOffset > viewportDimensions.
|
400
|
+
} else if (rightEdgeOffset > viewportDimensions.right) { // right overflow
|
377
401
|
delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
|
378
402
|
}
|
379
403
|
}
|
@@ -399,7 +423,13 @@
|
|
399
423
|
}
|
400
424
|
|
401
425
|
Tooltip.prototype.tip = function () {
|
402
|
-
|
426
|
+
if (!this.$tip) {
|
427
|
+
this.$tip = $(this.options.template)
|
428
|
+
if (this.$tip.length != 1) {
|
429
|
+
throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')
|
430
|
+
}
|
431
|
+
}
|
432
|
+
return this.$tip
|
403
433
|
}
|
404
434
|
|
405
435
|
Tooltip.prototype.arrow = function () {
|
@@ -428,7 +458,13 @@
|
|
428
458
|
}
|
429
459
|
}
|
430
460
|
|
431
|
-
|
461
|
+
if (e) {
|
462
|
+
self.inState.click = !self.inState.click
|
463
|
+
if (self.isInStateTrue()) self.enter(self)
|
464
|
+
else self.leave(self)
|
465
|
+
} else {
|
466
|
+
self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
|
467
|
+
}
|
432
468
|
}
|
433
469
|
|
434
470
|
Tooltip.prototype.destroy = function () {
|
@@ -436,6 +472,12 @@
|
|
436
472
|
clearTimeout(this.timeout)
|
437
473
|
this.hide(function () {
|
438
474
|
that.$element.off('.' + that.type).removeData('bs.' + that.type)
|
475
|
+
if (that.$tip) {
|
476
|
+
that.$tip.detach()
|
477
|
+
}
|
478
|
+
that.$tip = null
|
479
|
+
that.$arrow = null
|
480
|
+
that.$viewport = null
|
439
481
|
})
|
440
482
|
}
|
441
483
|
|
@@ -445,18 +487,12 @@
|
|
445
487
|
|
446
488
|
function Plugin(option) {
|
447
489
|
return this.each(function () {
|
448
|
-
var $this
|
449
|
-
var data
|
450
|
-
var options
|
451
|
-
|
452
|
-
|
453
|
-
if (!data
|
454
|
-
if (selector) {
|
455
|
-
if (!data) $this.data('bs.tooltip', (data = {}))
|
456
|
-
if (!data[selector]) data[selector] = new Tooltip(this, options)
|
457
|
-
} else {
|
458
|
-
if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
|
459
|
-
}
|
490
|
+
var $this = $(this)
|
491
|
+
var data = $this.data('bs.tooltip')
|
492
|
+
var options = typeof option == 'object' && option
|
493
|
+
|
494
|
+
if (!data && /destroy|hide/.test(option)) return
|
495
|
+
if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
|
460
496
|
if (typeof option == 'string') data[option]()
|
461
497
|
})
|
462
498
|
}
|
@@ -1,8 +1,8 @@
|
|
1
1
|
/* ========================================================================
|
2
|
-
* Bootstrap: transition.js v3.3.
|
2
|
+
* Bootstrap: transition.js v3.3.6
|
3
3
|
* http://getbootstrap.com/javascript/#transitions
|
4
4
|
* ========================================================================
|
5
|
-
* Copyright 2011-
|
5
|
+
* Copyright 2011-2015 Twitter, Inc.
|
6
6
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
7
7
|
* ======================================================================== */
|
8
8
|
|
@@ -4,9 +4,9 @@
|
|
4
4
|
//= require ./bootstrap/carousel
|
5
5
|
//= require ./bootstrap/collapse
|
6
6
|
//= require ./bootstrap/dropdown
|
7
|
+
//= require ./bootstrap/modal
|
8
|
+
//= require ./bootstrap/scrollspy
|
7
9
|
//= require ./bootstrap/tab
|
8
10
|
//= require ./bootstrap/transition
|
9
|
-
//= require ./bootstrap/scrollspy
|
10
|
-
//= require ./bootstrap/modal
|
11
11
|
//= require ./bootstrap/tooltip
|
12
12
|
//= require ./bootstrap/popover
|