| 
									
										
										
										
											2015-05-28 06:49:55 +08:00
										 |  |  | (function (global, factory) { | 
					
						
							|  |  |  |   if (typeof define === 'function' && define.amd) { | 
					
						
							|  |  |  |     define(['exports', 'module', './util'], factory); | 
					
						
							|  |  |  |   } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { | 
					
						
							|  |  |  |     factory(exports, module, require('./util')); | 
					
						
							|  |  |  |   } else { | 
					
						
							|  |  |  |     var mod = { | 
					
						
							|  |  |  |       exports: {} | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |     factory(mod.exports, mod, global.Util); | 
					
						
							|  |  |  |     global.tab = mod.exports; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | })(this, function (exports, module, _util) { | 
					
						
							|  |  |  |   'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   var _createClass = (function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   var _Util = _interopRequireDefault(_util); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /** | 
					
						
							|  |  |  |    * -------------------------------------------------------------------------- | 
					
						
							|  |  |  |    * Bootstrap (v4.0.0): tab.js | 
					
						
							|  |  |  |    * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 | 
					
						
							|  |  |  |    * -------------------------------------------------------------------------- | 
					
						
							|  |  |  |    */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   var Tab = (function ($) { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * ------------------------------------------------------------------------ | 
					
						
							|  |  |  |      * Constants | 
					
						
							|  |  |  |      * ------------------------------------------------------------------------ | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     var NAME = 'tab'; | 
					
						
							|  |  |  |     var VERSION = '4.0.0'; | 
					
						
							|  |  |  |     var DATA_KEY = 'bs.tab'; | 
					
						
							|  |  |  |     var EVENT_KEY = '.' + DATA_KEY; | 
					
						
							|  |  |  |     var DATA_API_KEY = '.data-api'; | 
					
						
							|  |  |  |     var JQUERY_NO_CONFLICT = $.fn[NAME]; | 
					
						
							|  |  |  |     var TRANSITION_DURATION = 150; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     var Event = { | 
					
						
							|  |  |  |       HIDE: 'hide' + EVENT_KEY, | 
					
						
							|  |  |  |       HIDDEN: 'hidden' + EVENT_KEY, | 
					
						
							|  |  |  |       SHOW: 'show' + EVENT_KEY, | 
					
						
							|  |  |  |       SHOWN: 'shown' + EVENT_KEY, | 
					
						
							| 
									
										
										
										
											2015-08-13 12:17:43 +08:00
										 |  |  |       CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY | 
					
						
							| 
									
										
										
										
											2015-05-28 06:49:55 +08:00
										 |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     var ClassName = { | 
					
						
							|  |  |  |       DROPDOWN_MENU: 'dropdown-menu', | 
					
						
							|  |  |  |       ACTIVE: 'active', | 
					
						
							|  |  |  |       FADE: 'fade', | 
					
						
							|  |  |  |       IN: 'in' | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     var Selector = { | 
					
						
							|  |  |  |       A: 'a', | 
					
						
							|  |  |  |       LI: 'li', | 
					
						
							| 
									
										
										
										
											2015-08-19 13:23:44 +08:00
										 |  |  |       DROPDOWN: '.dropdown', | 
					
						
							| 
									
										
										
										
											2015-05-28 06:49:55 +08:00
										 |  |  |       UL: 'ul:not(.dropdown-menu)', | 
					
						
							| 
									
										
										
										
											2015-08-19 13:23:44 +08:00
										 |  |  |       FADE_CHILD: '> .nav-item .fade, > .fade', | 
					
						
							| 
									
										
										
										
											2015-05-28 06:49:55 +08:00
										 |  |  |       ACTIVE: '.active', | 
					
						
							| 
									
										
										
										
											2015-08-19 13:23:44 +08:00
										 |  |  |       ACTIVE_CHILD: '> .nav-item > .active, > .active', | 
					
						
							| 
									
										
										
										
											2015-05-28 06:49:55 +08:00
										 |  |  |       DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"]', | 
					
						
							| 
									
										
										
										
											2015-08-19 13:23:44 +08:00
										 |  |  |       DROPDOWN_TOGGLE: '.dropdown-toggle', | 
					
						
							|  |  |  |       DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active' | 
					
						
							| 
									
										
										
										
											2015-05-28 06:49:55 +08:00
										 |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * ------------------------------------------------------------------------ | 
					
						
							|  |  |  |      * Class Definition | 
					
						
							|  |  |  |      * ------------------------------------------------------------------------ | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     var Tab = (function () { | 
					
						
							|  |  |  |       function Tab(element) { | 
					
						
							|  |  |  |         _classCallCheck(this, Tab); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         this._element = element; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-13 12:17:43 +08:00
										 |  |  |       /** | 
					
						
							|  |  |  |        * ------------------------------------------------------------------------ | 
					
						
							|  |  |  |        * Data Api implementation | 
					
						
							|  |  |  |        * ------------------------------------------------------------------------ | 
					
						
							|  |  |  |        */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       // getters
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-28 06:49:55 +08:00
										 |  |  |       _createClass(Tab, [{ | 
					
						
							|  |  |  |         key: 'show', | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // public
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         value: function show() { | 
					
						
							|  |  |  |           var _this = this; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-19 13:23:44 +08:00
										 |  |  |           if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName.ACTIVE)) { | 
					
						
							| 
									
										
										
										
											2015-05-28 06:49:55 +08:00
										 |  |  |             return; | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           var target = undefined; | 
					
						
							|  |  |  |           var previous = undefined; | 
					
						
							|  |  |  |           var ulElement = $(this._element).closest(Selector.UL)[0]; | 
					
						
							|  |  |  |           var selector = _Util['default'].getSelectorFromElement(this._element); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           if (ulElement) { | 
					
						
							|  |  |  |             previous = $.makeArray($(ulElement).find(Selector.ACTIVE)); | 
					
						
							|  |  |  |             previous = previous[previous.length - 1]; | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           var hideEvent = $.Event(Event.HIDE, { | 
					
						
							|  |  |  |             relatedTarget: this._element | 
					
						
							|  |  |  |           }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           var showEvent = $.Event(Event.SHOW, { | 
					
						
							|  |  |  |             relatedTarget: previous | 
					
						
							|  |  |  |           }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           if (previous) { | 
					
						
							|  |  |  |             $(previous).trigger(hideEvent); | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           $(this._element).trigger(showEvent); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) { | 
					
						
							|  |  |  |             return; | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           if (selector) { | 
					
						
							|  |  |  |             target = $(selector)[0]; | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-19 13:23:44 +08:00
										 |  |  |           this._activate(this._element, ulElement); | 
					
						
							| 
									
										
										
										
											2015-05-28 06:49:55 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |           var complete = function complete() { | 
					
						
							|  |  |  |             var hiddenEvent = $.Event(Event.HIDDEN, { | 
					
						
							|  |  |  |               relatedTarget: _this._element | 
					
						
							|  |  |  |             }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             var shownEvent = $.Event(Event.SHOWN, { | 
					
						
							|  |  |  |               relatedTarget: previous | 
					
						
							|  |  |  |             }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $(previous).trigger(hiddenEvent); | 
					
						
							|  |  |  |             $(_this._element).trigger(shownEvent); | 
					
						
							|  |  |  |           }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           if (target) { | 
					
						
							|  |  |  |             this._activate(target, target.parentNode, complete); | 
					
						
							|  |  |  |           } else { | 
					
						
							|  |  |  |             complete(); | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       }, { | 
					
						
							|  |  |  |         key: 'dispose', | 
					
						
							|  |  |  |         value: function dispose() { | 
					
						
							|  |  |  |           $.removeClass(this._element, DATA_KEY); | 
					
						
							|  |  |  |           this._element = null; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // private
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-13 12:17:43 +08:00
										 |  |  |       }, { | 
					
						
							|  |  |  |         key: '_activate', | 
					
						
							| 
									
										
										
										
											2015-05-28 06:49:55 +08:00
										 |  |  |         value: function _activate(element, container, callback) { | 
					
						
							|  |  |  |           var active = $(container).find(Selector.ACTIVE_CHILD)[0]; | 
					
						
							| 
									
										
										
										
											2015-08-19 11:28:45 +08:00
										 |  |  |           var isTransitioning = callback && _Util['default'].supportsTransitionEnd() && (active && $(active).hasClass(ClassName.FADE) || Boolean($(container).find(Selector.FADE_CHILD)[0])); | 
					
						
							| 
									
										
										
										
											2015-05-28 06:49:55 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |           var complete = $.proxy(this._transitionComplete, this, element, active, isTransitioning, callback); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           if (active && isTransitioning) { | 
					
						
							|  |  |  |             $(active).one(_Util['default'].TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); | 
					
						
							|  |  |  |           } else { | 
					
						
							|  |  |  |             complete(); | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           if (active) { | 
					
						
							|  |  |  |             $(active).removeClass(ClassName.IN); | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       }, { | 
					
						
							|  |  |  |         key: '_transitionComplete', | 
					
						
							|  |  |  |         value: function _transitionComplete(element, active, isTransitioning, callback) { | 
					
						
							|  |  |  |           if (active) { | 
					
						
							|  |  |  |             $(active).removeClass(ClassName.ACTIVE); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             var dropdownChild = $(active).find(Selector.DROPDOWN_ACTIVE_CHILD)[0]; | 
					
						
							| 
									
										
										
										
											2015-08-19 13:23:44 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-28 06:49:55 +08:00
										 |  |  |             if (dropdownChild) { | 
					
						
							|  |  |  |               $(dropdownChild).removeClass(ClassName.ACTIVE); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-19 13:23:44 +08:00
										 |  |  |             active.setAttribute('aria-expanded', false); | 
					
						
							| 
									
										
										
										
											2015-05-28 06:49:55 +08:00
										 |  |  |           } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           $(element).addClass(ClassName.ACTIVE); | 
					
						
							| 
									
										
										
										
											2015-08-19 13:23:44 +08:00
										 |  |  |           element.setAttribute('aria-expanded', true); | 
					
						
							| 
									
										
										
										
											2015-05-28 06:49:55 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |           if (isTransitioning) { | 
					
						
							|  |  |  |             _Util['default'].reflow(element); | 
					
						
							|  |  |  |             $(element).addClass(ClassName.IN); | 
					
						
							|  |  |  |           } else { | 
					
						
							|  |  |  |             $(element).removeClass(ClassName.FADE); | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           if (element.parentNode && $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-19 13:23:44 +08:00
										 |  |  |             var dropdownElement = $(element).closest(Selector.DROPDOWN)[0]; | 
					
						
							| 
									
										
										
										
											2015-05-28 06:49:55 +08:00
										 |  |  |             if (dropdownElement) { | 
					
						
							| 
									
										
										
										
											2015-08-19 13:23:44 +08:00
										 |  |  |               $(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE); | 
					
						
							| 
									
										
										
										
											2015-05-28 06:49:55 +08:00
										 |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-19 13:23:44 +08:00
										 |  |  |             element.setAttribute('aria-expanded', true); | 
					
						
							| 
									
										
										
										
											2015-05-28 06:49:55 +08:00
										 |  |  |           } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           if (callback) { | 
					
						
							|  |  |  |             callback(); | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // static
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-13 12:17:43 +08:00
										 |  |  |       }], [{ | 
					
						
							|  |  |  |         key: '_jQueryInterface', | 
					
						
							| 
									
										
										
										
											2015-05-28 06:49:55 +08:00
										 |  |  |         value: function _jQueryInterface(config) { | 
					
						
							|  |  |  |           return this.each(function () { | 
					
						
							|  |  |  |             var $this = $(this); | 
					
						
							|  |  |  |             var data = $this.data(DATA_KEY); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             if (!data) { | 
					
						
							|  |  |  |               data = data = new Tab(this); | 
					
						
							|  |  |  |               $this.data(DATA_KEY, data); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             if (typeof config === 'string') { | 
					
						
							|  |  |  |               data[config](); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |           }); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2015-06-19 06:48:54 +08:00
										 |  |  |       }, { | 
					
						
							|  |  |  |         key: 'VERSION', | 
					
						
							| 
									
										
										
										
											2015-08-13 12:17:43 +08:00
										 |  |  |         get: function get() { | 
					
						
							| 
									
										
										
										
											2015-06-19 06:48:54 +08:00
										 |  |  |           return VERSION; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2015-05-28 06:49:55 +08:00
										 |  |  |       }]); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       return Tab; | 
					
						
							|  |  |  |     })(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { | 
					
						
							|  |  |  |       event.preventDefault(); | 
					
						
							|  |  |  |       Tab._jQueryInterface.call($(this), 'show'); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * ------------------------------------------------------------------------ | 
					
						
							|  |  |  |      * jQuery | 
					
						
							|  |  |  |      * ------------------------------------------------------------------------ | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     $.fn[NAME] = Tab._jQueryInterface; | 
					
						
							|  |  |  |     $.fn[NAME].Constructor = Tab; | 
					
						
							|  |  |  |     $.fn[NAME].noConflict = function () { | 
					
						
							|  |  |  |       $.fn[NAME] = JQUERY_NO_CONFLICT; | 
					
						
							|  |  |  |       return Tab._jQueryInterface; | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return Tab; | 
					
						
							|  |  |  |   })(jQuery); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   module.exports = Tab; | 
					
						
							| 
									
										
										
										
											2015-06-19 06:48:54 +08:00
										 |  |  | }); |