You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							358 lines
						
					
					
						
							11 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							358 lines
						
					
					
						
							11 KiB
						
					
					
				| var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; | |
| 
 | |
| 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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | |
| 
 | |
| /** | |
|  * -------------------------------------------------------------------------- | |
|  * Bootstrap (v4.0.0-alpha.6): collapse.js | |
|  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) | |
|  * -------------------------------------------------------------------------- | |
|  */ | |
| 
 | |
| var Collapse = function ($) { | |
| 
 | |
|   /** | |
|    * ------------------------------------------------------------------------ | |
|    * Constants | |
|    * ------------------------------------------------------------------------ | |
|    */ | |
| 
 | |
|   var NAME = 'collapse'; | |
|   var VERSION = '4.0.0-alpha.6'; | |
|   var DATA_KEY = 'bs.collapse'; | |
|   var EVENT_KEY = '.' + DATA_KEY; | |
|   var DATA_API_KEY = '.data-api'; | |
|   var JQUERY_NO_CONFLICT = $.fn[NAME]; | |
|   var TRANSITION_DURATION = 600; | |
| 
 | |
|   var Default = { | |
|     toggle: true, | |
|     parent: '' | |
|   }; | |
| 
 | |
|   var DefaultType = { | |
|     toggle: 'boolean', | |
|     parent: 'string' | |
|   }; | |
| 
 | |
|   var Event = { | |
|     SHOW: 'show' + EVENT_KEY, | |
|     SHOWN: 'shown' + EVENT_KEY, | |
|     HIDE: 'hide' + EVENT_KEY, | |
|     HIDDEN: 'hidden' + EVENT_KEY, | |
|     CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY | |
|   }; | |
| 
 | |
|   var ClassName = { | |
|     SHOW: 'show', | |
|     COLLAPSE: 'collapse', | |
|     COLLAPSING: 'collapsing', | |
|     COLLAPSED: 'collapsed' | |
|   }; | |
| 
 | |
|   var Dimension = { | |
|     WIDTH: 'width', | |
|     HEIGHT: 'height' | |
|   }; | |
| 
 | |
|   var Selector = { | |
|     ACTIVES: '.card > .show, .card > .collapsing', | |
|     DATA_TOGGLE: '[data-toggle="collapse"]' | |
|   }; | |
| 
 | |
|   /** | |
|    * ------------------------------------------------------------------------ | |
|    * Class Definition | |
|    * ------------------------------------------------------------------------ | |
|    */ | |
| 
 | |
|   var Collapse = function () { | |
|     function Collapse(element, config) { | |
|       _classCallCheck(this, Collapse); | |
| 
 | |
|       this._isTransitioning = false; | |
|       this._element = element; | |
|       this._config = this._getConfig(config); | |
|       this._triggerArray = $.makeArray($('[data-toggle="collapse"][href="#' + element.id + '"],' + ('[data-toggle="collapse"][data-target="#' + element.id + '"]'))); | |
| 
 | |
|       this._parent = this._config.parent ? this._getParent() : null; | |
| 
 | |
|       if (!this._config.parent) { | |
|         this._addAriaAndCollapsedClass(this._element, this._triggerArray); | |
|       } | |
| 
 | |
|       if (this._config.toggle) { | |
|         this.toggle(); | |
|       } | |
|     } | |
| 
 | |
|     // getters | |
|  | |
|     // public | |
|  | |
|     Collapse.prototype.toggle = function toggle() { | |
|       if ($(this._element).hasClass(ClassName.SHOW)) { | |
|         this.hide(); | |
|       } else { | |
|         this.show(); | |
|       } | |
|     }; | |
| 
 | |
|     Collapse.prototype.show = function show() { | |
|       var _this = this; | |
| 
 | |
|       if (this._isTransitioning) { | |
|         throw new Error('Collapse is transitioning'); | |
|       } | |
| 
 | |
|       if ($(this._element).hasClass(ClassName.SHOW)) { | |
|         return; | |
|       } | |
| 
 | |
|       var actives = void 0; | |
|       var activesData = void 0; | |
| 
 | |
|       if (this._parent) { | |
|         actives = $.makeArray($(this._parent).find(Selector.ACTIVES)); | |
|         if (!actives.length) { | |
|           actives = null; | |
|         } | |
|       } | |
| 
 | |
|       if (actives) { | |
|         activesData = $(actives).data(DATA_KEY); | |
|         if (activesData && activesData._isTransitioning) { | |
|           return; | |
|         } | |
|       } | |
| 
 | |
|       var startEvent = $.Event(Event.SHOW); | |
|       $(this._element).trigger(startEvent); | |
|       if (startEvent.isDefaultPrevented()) { | |
|         return; | |
|       } | |
| 
 | |
|       if (actives) { | |
|         Collapse._jQueryInterface.call($(actives), 'hide'); | |
|         if (!activesData) { | |
|           $(actives).data(DATA_KEY, null); | |
|         } | |
|       } | |
| 
 | |
|       var dimension = this._getDimension(); | |
| 
 | |
|       $(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING); | |
| 
 | |
|       this._element.style[dimension] = 0; | |
|       this._element.setAttribute('aria-expanded', true); | |
| 
 | |
|       if (this._triggerArray.length) { | |
|         $(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true); | |
|       } | |
| 
 | |
|       this.setTransitioning(true); | |
| 
 | |
|       var complete = function complete() { | |
|         $(_this._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.SHOW); | |
| 
 | |
|         _this._element.style[dimension] = ''; | |
| 
 | |
|         _this.setTransitioning(false); | |
| 
 | |
|         $(_this._element).trigger(Event.SHOWN); | |
|       }; | |
| 
 | |
|       if (!Util.supportsTransitionEnd()) { | |
|         complete(); | |
|         return; | |
|       } | |
| 
 | |
|       var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); | |
|       var scrollSize = 'scroll' + capitalizedDimension; | |
| 
 | |
|       $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); | |
| 
 | |
|       this._element.style[dimension] = this._element[scrollSize] + 'px'; | |
|     }; | |
| 
 | |
|     Collapse.prototype.hide = function hide() { | |
|       var _this2 = this; | |
| 
 | |
|       if (this._isTransitioning) { | |
|         throw new Error('Collapse is transitioning'); | |
|       } | |
| 
 | |
|       if (!$(this._element).hasClass(ClassName.SHOW)) { | |
|         return; | |
|       } | |
| 
 | |
|       var startEvent = $.Event(Event.HIDE); | |
|       $(this._element).trigger(startEvent); | |
|       if (startEvent.isDefaultPrevented()) { | |
|         return; | |
|       } | |
| 
 | |
|       var dimension = this._getDimension(); | |
|       var offsetDimension = dimension === Dimension.WIDTH ? 'offsetWidth' : 'offsetHeight'; | |
| 
 | |
|       this._element.style[dimension] = this._element[offsetDimension] + 'px'; | |
| 
 | |
|       Util.reflow(this._element); | |
| 
 | |
|       $(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW); | |
| 
 | |
|       this._element.setAttribute('aria-expanded', false); | |
| 
 | |
|       if (this._triggerArray.length) { | |
|         $(this._triggerArray).addClass(ClassName.COLLAPSED).attr('aria-expanded', false); | |
|       } | |
| 
 | |
|       this.setTransitioning(true); | |
| 
 | |
|       var complete = function complete() { | |
|         _this2.setTransitioning(false); | |
|         $(_this2._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN); | |
|       }; | |
| 
 | |
|       this._element.style[dimension] = ''; | |
| 
 | |
|       if (!Util.supportsTransitionEnd()) { | |
|         complete(); | |
|         return; | |
|       } | |
| 
 | |
|       $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); | |
|     }; | |
| 
 | |
|     Collapse.prototype.setTransitioning = function setTransitioning(isTransitioning) { | |
|       this._isTransitioning = isTransitioning; | |
|     }; | |
| 
 | |
|     Collapse.prototype.dispose = function dispose() { | |
|       $.removeData(this._element, DATA_KEY); | |
| 
 | |
|       this._config = null; | |
|       this._parent = null; | |
|       this._element = null; | |
|       this._triggerArray = null; | |
|       this._isTransitioning = null; | |
|     }; | |
| 
 | |
|     // private | |
|  | |
|     Collapse.prototype._getConfig = function _getConfig(config) { | |
|       config = $.extend({}, Default, config); | |
|       config.toggle = Boolean(config.toggle); // coerce string values | |
|       Util.typeCheckConfig(NAME, config, DefaultType); | |
|       return config; | |
|     }; | |
| 
 | |
|     Collapse.prototype._getDimension = function _getDimension() { | |
|       var hasWidth = $(this._element).hasClass(Dimension.WIDTH); | |
|       return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT; | |
|     }; | |
| 
 | |
|     Collapse.prototype._getParent = function _getParent() { | |
|       var _this3 = this; | |
| 
 | |
|       var parent = $(this._config.parent)[0]; | |
|       var selector = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]'; | |
| 
 | |
|       $(parent).find(selector).each(function (i, element) { | |
|         _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]); | |
|       }); | |
| 
 | |
|       return parent; | |
|     }; | |
| 
 | |
|     Collapse.prototype._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) { | |
|       if (element) { | |
|         var isOpen = $(element).hasClass(ClassName.SHOW); | |
|         element.setAttribute('aria-expanded', isOpen); | |
| 
 | |
|         if (triggerArray.length) { | |
|           $(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen); | |
|         } | |
|       } | |
|     }; | |
| 
 | |
|     // static | |
|  | |
|     Collapse._getTargetFromElement = function _getTargetFromElement(element) { | |
|       var selector = Util.getSelectorFromElement(element); | |
|       return selector ? $(selector)[0] : null; | |
|     }; | |
| 
 | |
|     Collapse._jQueryInterface = function _jQueryInterface(config) { | |
|       return this.each(function () { | |
|         var $this = $(this); | |
|         var data = $this.data(DATA_KEY); | |
|         var _config = $.extend({}, Default, $this.data(), (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config); | |
| 
 | |
|         if (!data && _config.toggle && /show|hide/.test(config)) { | |
|           _config.toggle = false; | |
|         } | |
| 
 | |
|         if (!data) { | |
|           data = new Collapse(this, _config); | |
|           $this.data(DATA_KEY, data); | |
|         } | |
| 
 | |
|         if (typeof config === 'string') { | |
|           if (data[config] === undefined) { | |
|             throw new Error('No method named "' + config + '"'); | |
|           } | |
|           data[config](); | |
|         } | |
|       }); | |
|     }; | |
| 
 | |
|     _createClass(Collapse, null, [{ | |
|       key: 'VERSION', | |
|       get: function get() { | |
|         return VERSION; | |
|       } | |
|     }, { | |
|       key: 'Default', | |
|       get: function get() { | |
|         return Default; | |
|       } | |
|     }]); | |
| 
 | |
|     return Collapse; | |
|   }(); | |
| 
 | |
|   /** | |
|    * ------------------------------------------------------------------------ | |
|    * Data Api implementation | |
|    * ------------------------------------------------------------------------ | |
|    */ | |
| 
 | |
|   $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { | |
|     event.preventDefault(); | |
| 
 | |
|     var target = Collapse._getTargetFromElement(this); | |
|     var data = $(target).data(DATA_KEY); | |
|     var config = data ? 'toggle' : $(this).data(); | |
| 
 | |
|     Collapse._jQueryInterface.call($(target), config); | |
|   }); | |
| 
 | |
|   /** | |
|    * ------------------------------------------------------------------------ | |
|    * jQuery | |
|    * ------------------------------------------------------------------------ | |
|    */ | |
| 
 | |
|   $.fn[NAME] = Collapse._jQueryInterface; | |
|   $.fn[NAME].Constructor = Collapse; | |
|   $.fn[NAME].noConflict = function () { | |
|     $.fn[NAME] = JQUERY_NO_CONFLICT; | |
|     return Collapse._jQueryInterface; | |
|   }; | |
| 
 | |
|   return Collapse; | |
| }(jQuery); | |
| //# sourceMappingURL=collapse.js.map
 |