1 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
; };
3 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
; }; }();
5 function _classCallCheck(instance
, Constructor
) { if (!(instance
instanceof Constructor
)) { throw new TypeError("Cannot call a class as a function"); } }
8 * --------------------------------------------------------------------------
9 * Bootstrap (v4.0.0-alpha.6): collapse.js
10 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
11 * --------------------------------------------------------------------------
14 var Collapse = function ($) {
17 * ------------------------------------------------------------------------
19 * ------------------------------------------------------------------------
22 var NAME
= 'collapse';
23 var VERSION
= '4.0.0-alpha.6';
24 var DATA_KEY
= 'bs.collapse';
25 var EVENT_KEY
= '.' + DATA_KEY
;
26 var DATA_API_KEY
= '.data-api';
27 var JQUERY_NO_CONFLICT
= $.fn
[NAME
];
28 var TRANSITION_DURATION
= 600;
41 SHOW
: 'show' + EVENT_KEY
,
42 SHOWN
: 'shown' + EVENT_KEY
,
43 HIDE
: 'hide' + EVENT_KEY
,
44 HIDDEN
: 'hidden' + EVENT_KEY
,
45 CLICK_DATA_API
: 'click' + EVENT_KEY
+ DATA_API_KEY
51 COLLAPSING
: 'collapsing',
52 COLLAPSED
: 'collapsed'
61 ACTIVES
: '.card > .show, .card > .collapsing',
62 DATA_TOGGLE
: '[data-toggle="collapse"]'
66 * ------------------------------------------------------------------------
68 * ------------------------------------------------------------------------
71 var Collapse = function () {
72 function Collapse(element
, config
) {
73 _classCallCheck(this, Collapse
);
75 this._isTransitioning
= false;
76 this._element
= element
;
77 this._config
= this._getConfig(config
);
78 this._triggerArray
= $.makeArray($('[data-toggle="collapse"][href="#' + element
.id
+ '"],' + ('[data-toggle="collapse"][data-target="#' + element
.id
+ '"]')));
80 this._parent
= this._config
.parent
? this._getParent() : null;
82 if (!this._config
.parent
) {
83 this._addAriaAndCollapsedClass(this._element
, this._triggerArray
);
86 if (this._config
.toggle
) {
95 Collapse
.prototype.toggle
= function toggle() {
96 if ($(this._element
).hasClass(ClassName
.SHOW
)) {
103 Collapse
.prototype.show
= function show() {
106 if (this._isTransitioning
) {
107 throw new Error('Collapse is transitioning');
110 if ($(this._element
).hasClass(ClassName
.SHOW
)) {
114 var actives
= void 0;
115 var activesData
= void 0;
118 actives
= $.makeArray($(this._parent
).find(Selector
.ACTIVES
));
119 if (!actives
.length
) {
125 activesData
= $(actives
).data(DATA_KEY
);
126 if (activesData
&& activesData
._isTransitioning
) {
131 var startEvent
= $.Event(Event
.SHOW
);
132 $(this._element
).trigger(startEvent
);
133 if (startEvent
.isDefaultPrevented()) {
138 Collapse
._jQueryInterface
.call($(actives
), 'hide');
140 $(actives
).data(DATA_KEY
, null);
144 var dimension
= this._getDimension();
146 $(this._element
).removeClass(ClassName
.COLLAPSE
).addClass(ClassName
.COLLAPSING
);
148 this._element
.style
[dimension
] = 0;
149 this._element
.setAttribute('aria-expanded', true);
151 if (this._triggerArray
.length
) {
152 $(this._triggerArray
).removeClass(ClassName
.COLLAPSED
).attr('aria-expanded', true);
155 this.setTransitioning(true);
157 var complete
= function complete() {
158 $(_this
._element
).removeClass(ClassName
.COLLAPSING
).addClass(ClassName
.COLLAPSE
).addClass(ClassName
.SHOW
);
160 _this
._element
.style
[dimension
] = '';
162 _this
.setTransitioning(false);
164 $(_this
._element
).trigger(Event
.SHOWN
);
167 if (!Util
.supportsTransitionEnd()) {
172 var capitalizedDimension
= dimension
[0].toUpperCase() + dimension
.slice(1);
173 var scrollSize
= 'scroll' + capitalizedDimension
;
175 $(this._element
).one(Util
.TRANSITION_END
, complete
).emulateTransitionEnd(TRANSITION_DURATION
);
177 this._element
.style
[dimension
] = this._element
[scrollSize
] + 'px';
180 Collapse
.prototype.hide
= function hide() {
183 if (this._isTransitioning
) {
184 throw new Error('Collapse is transitioning');
187 if (!$(this._element
).hasClass(ClassName
.SHOW
)) {
191 var startEvent
= $.Event(Event
.HIDE
);
192 $(this._element
).trigger(startEvent
);
193 if (startEvent
.isDefaultPrevented()) {
197 var dimension
= this._getDimension();
198 var offsetDimension
= dimension
=== Dimension
.WIDTH
? 'offsetWidth' : 'offsetHeight';
200 this._element
.style
[dimension
] = this._element
[offsetDimension
] + 'px';
202 Util
.reflow(this._element
);
204 $(this._element
).addClass(ClassName
.COLLAPSING
).removeClass(ClassName
.COLLAPSE
).removeClass(ClassName
.SHOW
);
206 this._element
.setAttribute('aria-expanded', false);
208 if (this._triggerArray
.length
) {
209 $(this._triggerArray
).addClass(ClassName
.COLLAPSED
).attr('aria-expanded', false);
212 this.setTransitioning(true);
214 var complete
= function complete() {
215 _this2
.setTransitioning(false);
216 $(_this2
._element
).removeClass(ClassName
.COLLAPSING
).addClass(ClassName
.COLLAPSE
).trigger(Event
.HIDDEN
);
219 this._element
.style
[dimension
] = '';
221 if (!Util
.supportsTransitionEnd()) {
226 $(this._element
).one(Util
.TRANSITION_END
, complete
).emulateTransitionEnd(TRANSITION_DURATION
);
229 Collapse
.prototype.setTransitioning
= function setTransitioning(isTransitioning
) {
230 this._isTransitioning
= isTransitioning
;
233 Collapse
.prototype.dispose
= function dispose() {
234 $.removeData(this._element
, DATA_KEY
);
238 this._element
= null;
239 this._triggerArray
= null;
240 this._isTransitioning
= null;
245 Collapse
.prototype._getConfig
= function _getConfig(config
) {
246 config
= $.extend({}, Default
, config
);
247 config
.toggle
= Boolean(config
.toggle
); // coerce string values
248 Util
.typeCheckConfig(NAME
, config
, DefaultType
);
252 Collapse
.prototype._getDimension
= function _getDimension() {
253 var hasWidth
= $(this._element
).hasClass(Dimension
.WIDTH
);
254 return hasWidth
? Dimension
.WIDTH
: Dimension
.HEIGHT
;
257 Collapse
.prototype._getParent
= function _getParent() {
260 var parent
= $(this._config
.parent
)[0];
261 var selector
= '[data-toggle="collapse"][data-parent="' + this._config
.parent
+ '"]';
263 $(parent
).find(selector
).each(function (i
, element
) {
264 _this3
._addAriaAndCollapsedClass(Collapse
._getTargetFromElement(element
), [element
]);
270 Collapse
.prototype._addAriaAndCollapsedClass
= function _addAriaAndCollapsedClass(element
, triggerArray
) {
272 var isOpen
= $(element
).hasClass(ClassName
.SHOW
);
273 element
.setAttribute('aria-expanded', isOpen
);
275 if (triggerArray
.length
) {
276 $(triggerArray
).toggleClass(ClassName
.COLLAPSED
, !isOpen
).attr('aria-expanded', isOpen
);
283 Collapse
._getTargetFromElement
= function _getTargetFromElement(element
) {
284 var selector
= Util
.getSelectorFromElement(element
);
285 return selector
? $(selector
)[0] : null;
288 Collapse
._jQueryInterface
= function _jQueryInterface(config
) {
289 return this.each(function () {
291 var data
= $this.data(DATA_KEY
);
292 var _config
= $.extend({}, Default
, $this.data(), (typeof config
=== 'undefined' ? 'undefined' : _typeof(config
)) === 'object' && config
);
294 if (!data
&& _config
.toggle
&& /show|hide/.test(config
)) {
295 _config
.toggle
= false;
299 data
= new Collapse(this, _config
);
300 $this.data(DATA_KEY
, data
);
303 if (typeof config
=== 'string') {
304 if (data
[config
] === undefined) {
305 throw new Error('No method named "' + config
+ '"');
312 _createClass(Collapse
, null, [{
314 get: function get() {
319 get: function get() {
328 * ------------------------------------------------------------------------
329 * Data Api implementation
330 * ------------------------------------------------------------------------
333 $(document
).on(Event
.CLICK_DATA_API
, Selector
.DATA_TOGGLE
, function (event
) {
334 event
.preventDefault();
336 var target
= Collapse
._getTargetFromElement(this);
337 var data
= $(target
).data(DATA_KEY
);
338 var config
= data
? 'toggle' : $(this).data();
340 Collapse
._jQueryInterface
.call($(target
), config
);
344 * ------------------------------------------------------------------------
346 * ------------------------------------------------------------------------
349 $.fn
[NAME
] = Collapse
._jQueryInterface
;
350 $.fn
[NAME
].Constructor
= Collapse
;
351 $.fn
[NAME
].noConflict = function () {
352 $.fn
[NAME
] = JQUERY_NO_CONFLICT
;
353 return Collapse
._jQueryInterface
;
358 //# sourceMappingURL=collapse.js.map