active_frontend 2.0.9 → 2.0.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/active_frontend/version.rb +1 -1
- data/vendor/assets/javascripts/affix.js +1 -1
- data/vendor/assets/javascripts/button.js +7 -11
- data/vendor/assets/javascripts/dropdown.js +39 -43
- data/vendor/assets/javascripts/tab.js +1 -3
- data/vendor/assets/javascripts/tooltip.js +18 -56
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 576555d691b295ba9265dc4fd32e049c06e04bfa
|
4
|
+
data.tar.gz: 85d74447ddb42b659379b9815db67d6d40308f45
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b1499946410932f21737263b53e0ca01ae328c0fb27a49ea0e6c4cb811a73ac6708be90e6eb0761a5ae2be7696fb40f5c90cabe84ece59346607d3ae36a8fdd8
|
7
|
+
data.tar.gz: 2f1aa2db4da2028d6da5b8a9c84abb132c4eb5ed35f99493ab9cd73350b6d1991733e3dc71f900c06db1cb17f708ad98f33fc6f4dd6a3f68e5cc1763ad5dcf85
|
@@ -69,7 +69,7 @@
|
|
69
69
|
var offset = this.options.offset
|
70
70
|
var offsetTop = offset.top
|
71
71
|
var offsetBottom = offset.bottom
|
72
|
-
var scrollHeight =
|
72
|
+
var scrollHeight = $(document.body).height()
|
73
73
|
|
74
74
|
if (typeof offset != 'object') offsetBottom = offsetTop = offset
|
75
75
|
if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)
|
@@ -22,7 +22,7 @@
|
|
22
22
|
var val = $el.is('input') ? 'val' : 'html'
|
23
23
|
var data = $el.data()
|
24
24
|
|
25
|
-
state
|
25
|
+
state = state + 'Text'
|
26
26
|
|
27
27
|
if (data.resetText == null) $el.data('resetText', $el[val]())
|
28
28
|
|
@@ -47,19 +47,15 @@
|
|
47
47
|
if ($parent.length) {
|
48
48
|
var $input = this.$element.find('input')
|
49
49
|
if ($input.prop('type') == 'radio') {
|
50
|
-
if ($input.prop('checked')) changed = false
|
51
|
-
$parent.find('.active').removeClass('active')
|
52
|
-
this.$element.addClass('active')
|
53
|
-
} else if ($input.prop('type') == 'checkbox') {
|
54
|
-
if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false
|
55
|
-
this.$element.toggleClass('active')
|
50
|
+
if ($input.prop('checked') && this.$element.hasClass('active')) changed = false
|
51
|
+
else $parent.find('.active').removeClass('active')
|
56
52
|
}
|
57
|
-
$input.prop('checked', this.$element.hasClass('active'))
|
58
|
-
if (changed) $input.trigger('change')
|
53
|
+
if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')
|
59
54
|
} else {
|
60
55
|
this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
|
61
|
-
this.$element.toggleClass('active')
|
62
56
|
}
|
57
|
+
|
58
|
+
if (changed) this.$element.toggleClass('active')
|
63
59
|
}
|
64
60
|
|
65
61
|
|
@@ -102,7 +98,7 @@
|
|
102
98
|
var $btn = $(e.target)
|
103
99
|
if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
|
104
100
|
Plugin.call($btn, 'toggle')
|
105
|
-
|
101
|
+
e.preventDefault()
|
106
102
|
})
|
107
103
|
.on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
|
108
104
|
$(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
|
@@ -12,40 +12,6 @@
|
|
12
12
|
|
13
13
|
Dropdown.VERSION = '3.3.4'
|
14
14
|
|
15
|
-
function getParent($this) {
|
16
|
-
var selector = $this.attr('data-target')
|
17
|
-
|
18
|
-
if (!selector) {
|
19
|
-
selector = $this.attr('href')
|
20
|
-
selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
|
21
|
-
}
|
22
|
-
|
23
|
-
var $parent = selector && $(selector)
|
24
|
-
|
25
|
-
return $parent && $parent.length ? $parent : $this.parent()
|
26
|
-
}
|
27
|
-
|
28
|
-
function clearMenus(e) {
|
29
|
-
if (e && e.which === 3) return
|
30
|
-
$(backdrop).remove()
|
31
|
-
$(toggle).each(function () {
|
32
|
-
var $this = $(this)
|
33
|
-
var $parent = getParent($this)
|
34
|
-
var relatedTarget = { relatedTarget: this }
|
35
|
-
|
36
|
-
if (!$parent.hasClass('open')) return
|
37
|
-
|
38
|
-
if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
|
39
|
-
|
40
|
-
$parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
|
41
|
-
|
42
|
-
if (e.isDefaultPrevented()) return
|
43
|
-
|
44
|
-
$this.attr('aria-expanded', 'false')
|
45
|
-
$parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)
|
46
|
-
})
|
47
|
-
}
|
48
|
-
|
49
15
|
Dropdown.prototype.toggle = function (e) {
|
50
16
|
var $this = $(this)
|
51
17
|
|
@@ -59,10 +25,7 @@
|
|
59
25
|
if (!isActive) {
|
60
26
|
if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
|
61
27
|
// if mobile we use a backdrop because click events don't delegate
|
62
|
-
$(
|
63
|
-
.addClass('dropdown-backdrop')
|
64
|
-
.insertAfter($(this))
|
65
|
-
.on('click', clearMenus)
|
28
|
+
$('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus)
|
66
29
|
}
|
67
30
|
|
68
31
|
var relatedTarget = { relatedTarget: this }
|
@@ -95,7 +58,7 @@
|
|
95
58
|
var $parent = getParent($this)
|
96
59
|
var isActive = $parent.hasClass('open')
|
97
60
|
|
98
|
-
if (!isActive && e.which != 27 || isActive && e.which == 27) {
|
61
|
+
if ((!isActive && e.which != 27) || (isActive && e.which == 27)) {
|
99
62
|
if (e.which == 27) $parent.find(toggle).trigger('focus')
|
100
63
|
return $this.trigger('click')
|
101
64
|
}
|
@@ -107,13 +70,45 @@
|
|
107
70
|
|
108
71
|
var index = $items.index(e.target)
|
109
72
|
|
110
|
-
if (e.which == 38 && index > 0) index--
|
111
|
-
if (e.which == 40 && index < $items.length - 1) index++
|
112
|
-
if (!~index)
|
73
|
+
if (e.which == 38 && index > 0) index-- // up
|
74
|
+
if (e.which == 40 && index < $items.length - 1) index++ // down
|
75
|
+
if (!~index) index = 0
|
113
76
|
|
114
77
|
$items.eq(index).trigger('focus')
|
115
78
|
}
|
116
79
|
|
80
|
+
function clearMenus(e) {
|
81
|
+
if (e && e.which === 3) return
|
82
|
+
$(backdrop).remove()
|
83
|
+
$(toggle).each(function () {
|
84
|
+
var $this = $(this)
|
85
|
+
var $parent = getParent($this)
|
86
|
+
var relatedTarget = { relatedTarget: this }
|
87
|
+
|
88
|
+
if (!$parent.hasClass('open')) return
|
89
|
+
|
90
|
+
$parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
|
91
|
+
|
92
|
+
if (e.isDefaultPrevented()) return
|
93
|
+
|
94
|
+
$this.attr('aria-expanded', 'false')
|
95
|
+
$parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)
|
96
|
+
})
|
97
|
+
}
|
98
|
+
|
99
|
+
function getParent($this) {
|
100
|
+
var selector = $this.attr('data-target')
|
101
|
+
|
102
|
+
if (!selector) {
|
103
|
+
selector = $this.attr('href')
|
104
|
+
selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
|
105
|
+
}
|
106
|
+
|
107
|
+
var $parent = selector && $(selector)
|
108
|
+
|
109
|
+
return $parent && $parent.length ? $parent : $this.parent()
|
110
|
+
}
|
111
|
+
|
117
112
|
|
118
113
|
// DROPDOWN PLUGIN DEFINITION
|
119
114
|
// ==========================
|
@@ -151,6 +146,7 @@
|
|
151
146
|
.on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
|
152
147
|
.on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
|
153
148
|
.on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
|
154
|
-
.on('keydown.bs.dropdown.data-api', '
|
149
|
+
.on('keydown.bs.dropdown.data-api', '[role="menu"]', Dropdown.prototype.keydown)
|
150
|
+
.on('keydown.bs.dropdown.data-api', '[role="listbox"]', Dropdown.prototype.keydown)
|
155
151
|
|
156
152
|
}(jQuery);
|
@@ -5,9 +5,7 @@
|
|
5
5
|
// ====================
|
6
6
|
|
7
7
|
var Tab = function (element) {
|
8
|
-
// jscs:disable requireDollarBeforejQueryAssignment
|
9
8
|
this.element = $(element)
|
10
|
-
// jscs:enable requireDollarBeforejQueryAssignment
|
11
9
|
}
|
12
10
|
|
13
11
|
Tab.VERSION = '3.3.4'
|
@@ -58,7 +56,7 @@
|
|
58
56
|
var $active = container.find('> .active')
|
59
57
|
var transition = callback
|
60
58
|
&& $.support.transition
|
61
|
-
&& ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)
|
59
|
+
&& (($active.length && $active.hasClass('fade')) || !!container.find('> .fade').length)
|
62
60
|
|
63
61
|
function next() {
|
64
62
|
$active
|
@@ -11,7 +11,6 @@
|
|
11
11
|
this.timeout = null
|
12
12
|
this.hoverState = null
|
13
13
|
this.$element = null
|
14
|
-
this.inState = null
|
15
14
|
|
16
15
|
this.init('tooltip', element, options)
|
17
16
|
}
|
@@ -41,8 +40,7 @@
|
|
41
40
|
this.type = type
|
42
41
|
this.$element = $(element)
|
43
42
|
this.options = this.getOptions(options)
|
44
|
-
this.$viewport = this.options.viewport && $(
|
45
|
-
this.inState = { click: false, hover: false, focus: false }
|
43
|
+
this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport)
|
46
44
|
|
47
45
|
if (this.$element[0] instanceof document.constructor && !this.options.selector) {
|
48
46
|
throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
|
@@ -101,20 +99,16 @@
|
|
101
99
|
var self = obj instanceof this.constructor ?
|
102
100
|
obj : $(obj.currentTarget).data('bs.' + this.type)
|
103
101
|
|
102
|
+
if (self && self.$tip && self.$tip.is(':visible')) {
|
103
|
+
self.hoverState = 'in'
|
104
|
+
return
|
105
|
+
}
|
106
|
+
|
104
107
|
if (!self) {
|
105
108
|
self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
|
106
109
|
$(obj.currentTarget).data('bs.' + this.type, self)
|
107
110
|
}
|
108
111
|
|
109
|
-
if (obj instanceof $.Event) {
|
110
|
-
self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true
|
111
|
-
}
|
112
|
-
|
113
|
-
if (self.tip().hasClass('in') || self.hoverState == 'in') {
|
114
|
-
self.hoverState = 'in'
|
115
|
-
return
|
116
|
-
}
|
117
|
-
|
118
112
|
clearTimeout(self.timeout)
|
119
113
|
|
120
114
|
self.hoverState = 'in'
|
@@ -126,14 +120,6 @@
|
|
126
120
|
}, self.options.delay.show)
|
127
121
|
}
|
128
122
|
|
129
|
-
Tooltip.prototype.isInStateTrue = function () {
|
130
|
-
for (var key in this.inState) {
|
131
|
-
if (this.inState[key]) return true
|
132
|
-
}
|
133
|
-
|
134
|
-
return false
|
135
|
-
}
|
136
|
-
|
137
123
|
Tooltip.prototype.leave = function (obj) {
|
138
124
|
var self = obj instanceof this.constructor ?
|
139
125
|
obj : $(obj.currentTarget).data('bs.' + this.type)
|
@@ -143,12 +129,6 @@
|
|
143
129
|
$(obj.currentTarget).data('bs.' + this.type, self)
|
144
130
|
}
|
145
131
|
|
146
|
-
if (obj instanceof $.Event) {
|
147
|
-
self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
|
148
|
-
}
|
149
|
-
|
150
|
-
if (self.isInStateTrue()) return
|
151
|
-
|
152
132
|
clearTimeout(self.timeout)
|
153
133
|
|
154
134
|
self.hoverState = 'out'
|
@@ -195,7 +175,6 @@
|
|
195
175
|
.data('bs.' + this.type, this)
|
196
176
|
|
197
177
|
this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
|
198
|
-
this.$element.trigger('inserted.bs.' + this.type)
|
199
178
|
|
200
179
|
var pos = this.getPosition()
|
201
180
|
var actualWidth = $tip[0].offsetWidth
|
@@ -203,12 +182,13 @@
|
|
203
182
|
|
204
183
|
if (autoPlace) {
|
205
184
|
var orgPlacement = placement
|
206
|
-
var
|
185
|
+
var $container = this.options.container ? $(this.options.container) : this.$element.parent()
|
186
|
+
var containerDim = this.getPosition($container)
|
207
187
|
|
208
|
-
placement = placement == 'bottom' && pos.bottom + actualHeight >
|
209
|
-
placement == 'top' && pos.top - actualHeight <
|
210
|
-
placement == 'right' && pos.right + actualWidth >
|
211
|
-
placement == 'left' && pos.left - actualWidth <
|
188
|
+
placement = placement == 'bottom' && pos.bottom + actualHeight > containerDim.bottom ? 'top' :
|
189
|
+
placement == 'top' && pos.top - actualHeight < containerDim.top ? 'bottom' :
|
190
|
+
placement == 'right' && pos.right + actualWidth > containerDim.width ? 'left' :
|
191
|
+
placement == 'left' && pos.left - actualWidth < containerDim.left ? 'right' :
|
212
192
|
placement
|
213
193
|
|
214
194
|
$tip
|
@@ -249,8 +229,8 @@
|
|
249
229
|
if (isNaN(marginTop)) marginTop = 0
|
250
230
|
if (isNaN(marginLeft)) marginLeft = 0
|
251
231
|
|
252
|
-
offset.top
|
253
|
-
offset.left
|
232
|
+
offset.top = offset.top + marginTop
|
233
|
+
offset.left = offset.left + marginLeft
|
254
234
|
|
255
235
|
// $.fn.offset doesn't round pixel values
|
256
236
|
// so we use setOffset directly with our own function B-0
|
@@ -332,7 +312,7 @@
|
|
332
312
|
|
333
313
|
Tooltip.prototype.fixTitle = function () {
|
334
314
|
var $e = this.$element
|
335
|
-
if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {
|
315
|
+
if ($e.attr('title') || typeof ($e.attr('data-original-title')) != 'string') {
|
336
316
|
$e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
|
337
317
|
}
|
338
318
|
}
|
@@ -387,7 +367,7 @@
|
|
387
367
|
var rightEdgeOffset = pos.left + viewportPadding + actualWidth
|
388
368
|
if (leftEdgeOffset < viewportDimensions.left) { // left overflow
|
389
369
|
delta.left = viewportDimensions.left - leftEdgeOffset
|
390
|
-
} else if (rightEdgeOffset > viewportDimensions.
|
370
|
+
} else if (rightEdgeOffset > viewportDimensions.width) { // right overflow
|
391
371
|
delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
|
392
372
|
}
|
393
373
|
}
|
@@ -413,13 +393,7 @@
|
|
413
393
|
}
|
414
394
|
|
415
395
|
Tooltip.prototype.tip = function () {
|
416
|
-
|
417
|
-
this.$tip = $(this.options.template)
|
418
|
-
if (this.$tip.length != 1) {
|
419
|
-
throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')
|
420
|
-
}
|
421
|
-
}
|
422
|
-
return this.$tip
|
396
|
+
return (this.$tip = this.$tip || $(this.options.template))
|
423
397
|
}
|
424
398
|
|
425
399
|
Tooltip.prototype.arrow = function () {
|
@@ -448,13 +422,7 @@
|
|
448
422
|
}
|
449
423
|
}
|
450
424
|
|
451
|
-
|
452
|
-
self.inState.click = !self.inState.click
|
453
|
-
if (self.isInStateTrue()) self.enter(self)
|
454
|
-
else self.leave(self)
|
455
|
-
} else {
|
456
|
-
self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
|
457
|
-
}
|
425
|
+
self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
|
458
426
|
}
|
459
427
|
|
460
428
|
Tooltip.prototype.destroy = function () {
|
@@ -462,12 +430,6 @@
|
|
462
430
|
clearTimeout(this.timeout)
|
463
431
|
this.hide(function () {
|
464
432
|
that.$element.off('.' + that.type).removeData('bs.' + that.type)
|
465
|
-
if (that.$tip) {
|
466
|
-
that.$tip.detach()
|
467
|
-
}
|
468
|
-
that.$tip = null
|
469
|
-
that.$arrow = null
|
470
|
-
that.$viewport = null
|
471
433
|
})
|
472
434
|
}
|
473
435
|
|