UNPKG

7.49 kBJavaScriptView Raw
1function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
2
3function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
4
5/**
6 * --------------------------------------------------------------------------
7 * Bootstrap (v4.1.0): tab.js
8 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
9 * --------------------------------------------------------------------------
10 */
11var Tab = function ($) {
12 /**
13 * ------------------------------------------------------------------------
14 * Constants
15 * ------------------------------------------------------------------------
16 */
17 var NAME = 'tab';
18 var VERSION = '4.1.0';
19 var DATA_KEY = 'bs.tab';
20 var EVENT_KEY = "." + DATA_KEY;
21 var DATA_API_KEY = '.data-api';
22 var JQUERY_NO_CONFLICT = $.fn[NAME];
23 var Event = {
24 HIDE: "hide" + EVENT_KEY,
25 HIDDEN: "hidden" + EVENT_KEY,
26 SHOW: "show" + EVENT_KEY,
27 SHOWN: "shown" + EVENT_KEY,
28 CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
29 };
30 var ClassName = {
31 DROPDOWN_MENU: 'dropdown-menu',
32 ACTIVE: 'active',
33 DISABLED: 'disabled',
34 FADE: 'fade',
35 SHOW: 'show'
36 };
37 var Selector = {
38 DROPDOWN: '.dropdown',
39 NAV_LIST_GROUP: '.nav, .list-group',
40 ACTIVE: '.active',
41 ACTIVE_UL: '> li > .active',
42 DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',
43 DROPDOWN_TOGGLE: '.dropdown-toggle',
44 DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'
45 /**
46 * ------------------------------------------------------------------------
47 * Class Definition
48 * ------------------------------------------------------------------------
49 */
50
51 };
52
53 var Tab =
54 /*#__PURE__*/
55 function () {
56 function Tab(element) {
57 this._element = element;
58 } // Getters
59
60
61 var _proto = Tab.prototype;
62
63 // Public
64 _proto.show = function show() {
65 var _this = this;
66
67 if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName.ACTIVE) || $(this._element).hasClass(ClassName.DISABLED)) {
68 return;
69 }
70
71 var target;
72 var previous;
73 var listElement = $(this._element).closest(Selector.NAV_LIST_GROUP)[0];
74 var selector = Util.getSelectorFromElement(this._element);
75
76 if (listElement) {
77 var itemSelector = listElement.nodeName === 'UL' ? Selector.ACTIVE_UL : Selector.ACTIVE;
78 previous = $.makeArray($(listElement).find(itemSelector));
79 previous = previous[previous.length - 1];
80 }
81
82 var hideEvent = $.Event(Event.HIDE, {
83 relatedTarget: this._element
84 });
85 var showEvent = $.Event(Event.SHOW, {
86 relatedTarget: previous
87 });
88
89 if (previous) {
90 $(previous).trigger(hideEvent);
91 }
92
93 $(this._element).trigger(showEvent);
94
95 if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {
96 return;
97 }
98
99 if (selector) {
100 target = $(selector)[0];
101 }
102
103 this._activate(this._element, listElement);
104
105 var complete = function complete() {
106 var hiddenEvent = $.Event(Event.HIDDEN, {
107 relatedTarget: _this._element
108 });
109 var shownEvent = $.Event(Event.SHOWN, {
110 relatedTarget: previous
111 });
112 $(previous).trigger(hiddenEvent);
113 $(_this._element).trigger(shownEvent);
114 };
115
116 if (target) {
117 this._activate(target, target.parentNode, complete);
118 } else {
119 complete();
120 }
121 };
122
123 _proto.dispose = function dispose() {
124 $.removeData(this._element, DATA_KEY);
125 this._element = null;
126 }; // Private
127
128
129 _proto._activate = function _activate(element, container, callback) {
130 var _this2 = this;
131
132 var activeElements;
133
134 if (container.nodeName === 'UL') {
135 activeElements = $(container).find(Selector.ACTIVE_UL);
136 } else {
137 activeElements = $(container).children(Selector.ACTIVE);
138 }
139
140 var active = activeElements[0];
141 var isTransitioning = callback && active && $(active).hasClass(ClassName.FADE);
142
143 var complete = function complete() {
144 return _this2._transitionComplete(element, active, callback);
145 };
146
147 if (active && isTransitioning) {
148 var transitionDuration = Util.getTransitionDurationFromElement(active);
149 $(active).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
150 } else {
151 complete();
152 }
153 };
154
155 _proto._transitionComplete = function _transitionComplete(element, active, callback) {
156 if (active) {
157 $(active).removeClass(ClassName.SHOW + " " + ClassName.ACTIVE);
158 var dropdownChild = $(active.parentNode).find(Selector.DROPDOWN_ACTIVE_CHILD)[0];
159
160 if (dropdownChild) {
161 $(dropdownChild).removeClass(ClassName.ACTIVE);
162 }
163
164 if (active.getAttribute('role') === 'tab') {
165 active.setAttribute('aria-selected', false);
166 }
167 }
168
169 $(element).addClass(ClassName.ACTIVE);
170
171 if (element.getAttribute('role') === 'tab') {
172 element.setAttribute('aria-selected', true);
173 }
174
175 Util.reflow(element);
176 $(element).addClass(ClassName.SHOW);
177
178 if (element.parentNode && $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {
179 var dropdownElement = $(element).closest(Selector.DROPDOWN)[0];
180
181 if (dropdownElement) {
182 $(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
183 }
184
185 element.setAttribute('aria-expanded', true);
186 }
187
188 if (callback) {
189 callback();
190 }
191 }; // Static
192
193
194 Tab._jQueryInterface = function _jQueryInterface(config) {
195 return this.each(function () {
196 var $this = $(this);
197 var data = $this.data(DATA_KEY);
198
199 if (!data) {
200 data = new Tab(this);
201 $this.data(DATA_KEY, data);
202 }
203
204 if (typeof config === 'string') {
205 if (typeof data[config] === 'undefined') {
206 throw new TypeError("No method named \"" + config + "\"");
207 }
208
209 data[config]();
210 }
211 });
212 };
213
214 _createClass(Tab, null, [{
215 key: "VERSION",
216 get: function get() {
217 return VERSION;
218 }
219 }]);
220
221 return Tab;
222 }();
223 /**
224 * ------------------------------------------------------------------------
225 * Data Api implementation
226 * ------------------------------------------------------------------------
227 */
228
229
230 $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
231 event.preventDefault();
232
233 Tab._jQueryInterface.call($(this), 'show');
234 });
235 /**
236 * ------------------------------------------------------------------------
237 * jQuery
238 * ------------------------------------------------------------------------
239 */
240
241 $.fn[NAME] = Tab._jQueryInterface;
242 $.fn[NAME].Constructor = Tab;
243
244 $.fn[NAME].noConflict = function () {
245 $.fn[NAME] = JQUERY_NO_CONFLICT;
246 return Tab._jQueryInterface;
247 };
248
249 return Tab;
250}($);
251//# sourceMappingURL=tab.js.map
\No newline at end of file