Blame view
app/bower_components/bootstrap/js/tab.js
3.81 KB
f986e111b
|
1 |
/* ======================================================================== |
87c93a029
|
2 |
* Bootstrap: tab.js v3.3.7 |
f986e111b
|
3 4 |
* http://getbootstrap.com/javascript/#tabs * ======================================================================== |
87c93a029
|
5 6 |
* Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
f986e111b
|
7 |
* ======================================================================== */ |
87c93a029
|
8 9 |
+function ($) { 'use strict'; |
f986e111b
|
10 11 12 13 14 |
// TAB CLASS DEFINITION // ==================== var Tab = function (element) { |
87c93a029
|
15 |
// jscs:disable requireDollarBeforejQueryAssignment |
f986e111b
|
16 |
this.element = $(element) |
87c93a029
|
17 |
// jscs:enable requireDollarBeforejQueryAssignment |
f986e111b
|
18 |
} |
87c93a029
|
19 20 21 |
Tab.VERSION = '3.3.7' Tab.TRANSITION_DURATION = 150 |
f986e111b
|
22 23 24 25 26 27 28 |
Tab.prototype.show = function () { var $this = this.element var $ul = $this.closest('ul:not(.dropdown-menu)') var selector = $this.data('target') if (!selector) { selector = $this.attr('href') |
87c93a029
|
29 |
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 |
f986e111b
|
30 31 32 |
} if ($this.parent('li').hasClass('active')) return |
87c93a029
|
33 34 35 36 37 38 |
var $previous = $ul.find('.active:last a') var hideEvent = $.Event('hide.bs.tab', { relatedTarget: $this[0] }) var showEvent = $.Event('show.bs.tab', { relatedTarget: $previous[0] |
f986e111b
|
39 |
}) |
87c93a029
|
40 41 |
$previous.trigger(hideEvent) $this.trigger(showEvent) |
f986e111b
|
42 |
|
87c93a029
|
43 |
if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return |
f986e111b
|
44 45 |
var $target = $(selector) |
87c93a029
|
46 |
this.activate($this.closest('li'), $ul) |
f986e111b
|
47 |
this.activate($target, $target.parent(), function () { |
87c93a029
|
48 49 50 51 |
$previous.trigger({ type: 'hidden.bs.tab', relatedTarget: $this[0] }) |
f986e111b
|
52 |
$this.trigger({ |
87c93a029
|
53 54 |
type: 'shown.bs.tab', relatedTarget: $previous[0] |
f986e111b
|
55 56 57 58 59 60 61 62 |
}) }) } Tab.prototype.activate = function (element, container, callback) { var $active = container.find('> .active') var transition = callback && $.support.transition |
87c93a029
|
63 |
&& ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length) |
f986e111b
|
64 65 66 67 68 |
function next() { $active .removeClass('active') .find('> .dropdown-menu > .active') |
87c93a029
|
69 70 71 72 |
.removeClass('active') .end() .find('[data-toggle="tab"]') .attr('aria-expanded', false) |
f986e111b
|
73 |
|
87c93a029
|
74 75 76 77 |
element .addClass('active') .find('[data-toggle="tab"]') .attr('aria-expanded', true) |
f986e111b
|
78 79 80 81 82 83 84 |
if (transition) { element[0].offsetWidth // reflow for transition element.addClass('in') } else { element.removeClass('fade') } |
87c93a029
|
85 86 87 88 89 90 91 |
if (element.parent('.dropdown-menu').length) { element .closest('li.dropdown') .addClass('active') .end() .find('[data-toggle="tab"]') .attr('aria-expanded', true) |
f986e111b
|
92 93 94 95 |
} callback && callback() } |
87c93a029
|
96 |
$active.length && transition ? |
f986e111b
|
97 |
$active |
87c93a029
|
98 99 |
.one('bsTransitionEnd', next) .emulateTransitionEnd(Tab.TRANSITION_DURATION) : |
f986e111b
|
100 101 102 103 104 105 106 107 |
next() $active.removeClass('in') } // TAB PLUGIN DEFINITION // ===================== |
87c93a029
|
108 |
function Plugin(option) { |
f986e111b
|
109 110 111 112 113 114 115 116 |
return this.each(function () { var $this = $(this) var data = $this.data('bs.tab') if (!data) $this.data('bs.tab', (data = new Tab(this))) if (typeof option == 'string') data[option]() }) } |
87c93a029
|
117 118 119 |
var old = $.fn.tab $.fn.tab = Plugin |
f986e111b
|
120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
$.fn.tab.Constructor = Tab // TAB NO CONFLICT // =============== $.fn.tab.noConflict = function () { $.fn.tab = old return this } // TAB DATA-API // ============ |
87c93a029
|
134 |
var clickHandler = function (e) { |
f986e111b
|
135 |
e.preventDefault() |
87c93a029
|
136 137 138 139 140 141 |
Plugin.call($(this), 'show') } $(document) .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) |
f986e111b
|
142 143 |
}(jQuery); |