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