active_frontend 2.0.9 → 2.0.10
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.
- 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
|
|