bootstrap 5.0.0.beta2 → 5.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -3
  3. data/assets/javascripts/bootstrap-sprockets.js +8 -7
  4. data/assets/javascripts/bootstrap.js +2525 -2460
  5. data/assets/javascripts/bootstrap.min.js +2 -2
  6. data/assets/javascripts/bootstrap/alert.js +77 -179
  7. data/assets/javascripts/bootstrap/base-component.js +140 -38
  8. data/assets/javascripts/bootstrap/button.js +54 -100
  9. data/assets/javascripts/bootstrap/carousel.js +335 -451
  10. data/assets/javascripts/bootstrap/collapse.js +195 -303
  11. data/assets/javascripts/bootstrap/dom/data.js +34 -47
  12. data/assets/javascripts/bootstrap/dom/event-handler.js +95 -90
  13. data/assets/javascripts/bootstrap/dom/manipulator.js +23 -21
  14. data/assets/javascripts/bootstrap/dom/selector-engine.js +20 -28
  15. data/assets/javascripts/bootstrap/dropdown.js +323 -358
  16. data/assets/javascripts/bootstrap/modal.js +537 -489
  17. data/assets/javascripts/bootstrap/offcanvas.js +720 -0
  18. data/assets/javascripts/bootstrap/popover.js +112 -180
  19. data/assets/javascripts/bootstrap/scrollspy.js +167 -235
  20. data/assets/javascripts/bootstrap/tab.js +121 -188
  21. data/assets/javascripts/bootstrap/toast.js +166 -243
  22. data/assets/javascripts/bootstrap/tooltip.js +333 -495
  23. data/assets/stylesheets/_bootstrap-grid.scss +1 -1
  24. data/assets/stylesheets/_bootstrap-reboot.scss +1 -1
  25. data/assets/stylesheets/_bootstrap.scss +2 -1
  26. data/assets/stylesheets/bootstrap/_accordion.scss +24 -32
  27. data/assets/stylesheets/bootstrap/_buttons.scss +2 -0
  28. data/assets/stylesheets/bootstrap/_card.scss +6 -6
  29. data/assets/stylesheets/bootstrap/_carousel.scss +2 -2
  30. data/assets/stylesheets/bootstrap/_dropdown.scss +14 -23
  31. data/assets/stylesheets/bootstrap/_functions.scss +61 -3
  32. data/assets/stylesheets/bootstrap/_images.scss +1 -1
  33. data/assets/stylesheets/bootstrap/_list-group.scss +16 -5
  34. data/assets/stylesheets/bootstrap/_mixins.scss +1 -0
  35. data/assets/stylesheets/bootstrap/_modal.scss +8 -24
  36. data/assets/stylesheets/bootstrap/_nav.scss +7 -0
  37. data/assets/stylesheets/bootstrap/_navbar.scss +2 -0
  38. data/assets/stylesheets/bootstrap/_offcanvas.scss +79 -0
  39. data/assets/stylesheets/bootstrap/_popover.scss +10 -10
  40. data/assets/stylesheets/bootstrap/_progress.scss +3 -0
  41. data/assets/stylesheets/bootstrap/_reboot.scss +7 -21
  42. data/assets/stylesheets/bootstrap/_spinners.scss +6 -2
  43. data/assets/stylesheets/bootstrap/_tables.scss +1 -0
  44. data/assets/stylesheets/bootstrap/_toasts.scss +1 -1
  45. data/assets/stylesheets/bootstrap/_tooltip.scss +4 -4
  46. data/assets/stylesheets/bootstrap/_transitions.scss +2 -0
  47. data/assets/stylesheets/bootstrap/_utilities.scss +65 -37
  48. data/assets/stylesheets/bootstrap/_variables.scss +162 -50
  49. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +1 -1
  50. data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +3 -1
  51. data/assets/stylesheets/bootstrap/forms/_form-check.scss +1 -1
  52. data/assets/stylesheets/bootstrap/forms/_form-control.scss +0 -4
  53. data/assets/stylesheets/bootstrap/forms/_form-range.scss +1 -1
  54. data/assets/stylesheets/bootstrap/forms/_form-select.scss +3 -0
  55. data/assets/stylesheets/bootstrap/mixins/_alert.scss +2 -0
  56. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +2 -0
  57. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +7 -2
  58. data/assets/stylesheets/bootstrap/mixins/_caret.scss +2 -0
  59. data/assets/stylesheets/bootstrap/mixins/_color-scheme.scss +7 -0
  60. data/assets/stylesheets/bootstrap/mixins/_forms.scss +25 -5
  61. data/assets/stylesheets/bootstrap/mixins/_grid.scss +23 -11
  62. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +2 -0
  63. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +2 -0
  64. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +55 -13
  65. data/bootstrap.gemspec +1 -1
  66. data/lib/bootstrap/version.rb +2 -2
  67. data/tasks/updater/js.rb +1 -1
  68. data/tasks/updater/network.rb +7 -1
  69. metadata +9 -6
@@ -1,94 +1,35 @@
1
1
  /*!
2
- * Bootstrap collapse.js v5.0.0-beta2 (https://getbootstrap.com/)
2
+ * Bootstrap collapse.js v5.0.2 (https://getbootstrap.com/)
3
3
  * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
5
  */
6
6
  (function (global, factory) {
7
- typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./dom/selector-engine.js'), require('./base-component.js')) :
8
- typeof define === 'function' && define.amd ? define(['./dom/data', './dom/event-handler', './dom/manipulator', './dom/selector-engine', './base-component'], factory) :
9
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Collapse = factory(global.Data, global.EventHandler, global.Manipulator, global.SelectorEngine, global.Base));
10
- }(this, (function (Data, EventHandler, Manipulator, SelectorEngine, BaseComponent) { 'use strict';
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/selector-engine.js'), require('./dom/data.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./base-component.js')) :
8
+ typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/data', './dom/event-handler', './dom/manipulator', './base-component'], factory) :
9
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Collapse = factory(global.SelectorEngine, global.Data, global.EventHandler, global.Manipulator, global.Base));
10
+ }(this, (function (SelectorEngine, Data, EventHandler, Manipulator, BaseComponent) { 'use strict';
11
11
 
12
12
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
13
 
14
+ var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
14
15
  var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data);
15
16
  var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
16
17
  var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);
17
- var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
18
18
  var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
19
19
 
20
- function _defineProperties(target, props) {
21
- for (var i = 0; i < props.length; i++) {
22
- var descriptor = props[i];
23
- descriptor.enumerable = descriptor.enumerable || false;
24
- descriptor.configurable = true;
25
- if ("value" in descriptor) descriptor.writable = true;
26
- Object.defineProperty(target, descriptor.key, descriptor);
27
- }
28
- }
29
-
30
- function _createClass(Constructor, protoProps, staticProps) {
31
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
32
- if (staticProps) _defineProperties(Constructor, staticProps);
33
- return Constructor;
34
- }
35
-
36
- function _extends() {
37
- _extends = Object.assign || function (target) {
38
- for (var i = 1; i < arguments.length; i++) {
39
- var source = arguments[i];
40
-
41
- for (var key in source) {
42
- if (Object.prototype.hasOwnProperty.call(source, key)) {
43
- target[key] = source[key];
44
- }
45
- }
46
- }
47
-
48
- return target;
49
- };
50
-
51
- return _extends.apply(this, arguments);
52
- }
53
-
54
- function _inheritsLoose(subClass, superClass) {
55
- subClass.prototype = Object.create(superClass.prototype);
56
- subClass.prototype.constructor = subClass;
57
-
58
- _setPrototypeOf(subClass, superClass);
59
- }
60
-
61
- function _setPrototypeOf(o, p) {
62
- _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
63
- o.__proto__ = p;
64
- return o;
65
- };
66
-
67
- return _setPrototypeOf(o, p);
68
- }
69
-
70
- /**
71
- * --------------------------------------------------------------------------
72
- * Bootstrap (v5.0.0-beta2): util/index.js
73
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
74
- * --------------------------------------------------------------------------
75
- */
76
- var MILLISECONDS_MULTIPLIER = 1000;
77
- var TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
78
-
79
- var toType = function toType(obj) {
20
+ const toType = obj => {
80
21
  if (obj === null || obj === undefined) {
81
- return "" + obj;
22
+ return `${obj}`;
82
23
  }
83
24
 
84
25
  return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
85
26
  };
86
27
 
87
- var getSelector = function getSelector(element) {
88
- var selector = element.getAttribute('data-bs-target');
28
+ const getSelector = element => {
29
+ let selector = element.getAttribute('data-bs-target');
89
30
 
90
31
  if (!selector || selector === '#') {
91
- var hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,
32
+ let hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,
92
33
  // so everything starting with `#` or `.`. If a "real" URL is used as the selector,
93
34
  // `document.querySelector` will rightfully complain it is invalid.
94
35
  // See https://github.com/twbs/bootstrap/issues/32273
@@ -99,7 +40,7 @@
99
40
 
100
41
 
101
42
  if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {
102
- hrefAttr = '#' + hrefAttr.split('#')[1];
43
+ hrefAttr = `#${hrefAttr.split('#')[1]}`;
103
44
  }
104
45
 
105
46
  selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
@@ -108,8 +49,8 @@
108
49
  return selector;
109
50
  };
110
51
 
111
- var getSelectorFromElement = function getSelectorFromElement(element) {
112
- var selector = getSelector(element);
52
+ const getSelectorFromElement = element => {
53
+ const selector = getSelector(element);
113
54
 
114
55
  if (selector) {
115
56
  return document.querySelector(selector) ? selector : null;
@@ -118,79 +59,54 @@
118
59
  return null;
119
60
  };
120
61
 
121
- var getElementFromSelector = function getElementFromSelector(element) {
122
- var selector = getSelector(element);
62
+ const getElementFromSelector = element => {
63
+ const selector = getSelector(element);
123
64
  return selector ? document.querySelector(selector) : null;
124
65
  };
125
66
 
126
- var getTransitionDurationFromElement = function getTransitionDurationFromElement(element) {
127
- if (!element) {
128
- return 0;
129
- } // Get transition-duration of the element
130
-
131
-
132
- var _window$getComputedSt = window.getComputedStyle(element),
133
- transitionDuration = _window$getComputedSt.transitionDuration,
134
- transitionDelay = _window$getComputedSt.transitionDelay;
135
-
136
- var floatTransitionDuration = Number.parseFloat(transitionDuration);
137
- var floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
138
-
139
- if (!floatTransitionDuration && !floatTransitionDelay) {
140
- return 0;
141
- } // If multiple durations are defined, take the first
142
-
143
-
144
- transitionDuration = transitionDuration.split(',')[0];
145
- transitionDelay = transitionDelay.split(',')[0];
146
- return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
147
- };
67
+ const isElement = obj => {
68
+ if (!obj || typeof obj !== 'object') {
69
+ return false;
70
+ }
148
71
 
149
- var triggerTransitionEnd = function triggerTransitionEnd(element) {
150
- element.dispatchEvent(new Event(TRANSITION_END));
151
- };
72
+ if (typeof obj.jquery !== 'undefined') {
73
+ obj = obj[0];
74
+ }
152
75
 
153
- var isElement = function isElement(obj) {
154
- return (obj[0] || obj).nodeType;
76
+ return typeof obj.nodeType !== 'undefined';
155
77
  };
156
78
 
157
- var emulateTransitionEnd = function emulateTransitionEnd(element, duration) {
158
- var called = false;
159
- var durationPadding = 5;
160
- var emulatedDuration = duration + durationPadding;
79
+ const getElement = obj => {
80
+ if (isElement(obj)) {
81
+ // it's a jQuery object or a node element
82
+ return obj.jquery ? obj[0] : obj;
83
+ }
161
84
 
162
- function listener() {
163
- called = true;
164
- element.removeEventListener(TRANSITION_END, listener);
85
+ if (typeof obj === 'string' && obj.length > 0) {
86
+ return SelectorEngine__default['default'].findOne(obj);
165
87
  }
166
88
 
167
- element.addEventListener(TRANSITION_END, listener);
168
- setTimeout(function () {
169
- if (!called) {
170
- triggerTransitionEnd(element);
171
- }
172
- }, emulatedDuration);
89
+ return null;
173
90
  };
174
91
 
175
- var typeCheckConfig = function typeCheckConfig(componentName, config, configTypes) {
176
- Object.keys(configTypes).forEach(function (property) {
177
- var expectedTypes = configTypes[property];
178
- var value = config[property];
179
- var valueType = value && isElement(value) ? 'element' : toType(value);
92
+ const typeCheckConfig = (componentName, config, configTypes) => {
93
+ Object.keys(configTypes).forEach(property => {
94
+ const expectedTypes = configTypes[property];
95
+ const value = config[property];
96
+ const valueType = value && isElement(value) ? 'element' : toType(value);
180
97
 
181
98
  if (!new RegExp(expectedTypes).test(valueType)) {
182
- throw new TypeError(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
99
+ throw new TypeError(`${componentName.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`);
183
100
  }
184
101
  });
185
102
  };
186
103
 
187
- var reflow = function reflow(element) {
188
- return element.offsetHeight;
189
- };
104
+ const reflow = element => element.offsetHeight;
190
105
 
191
- var getjQuery = function getjQuery() {
192
- var _window = window,
193
- jQuery = _window.jQuery;
106
+ const getjQuery = () => {
107
+ const {
108
+ jQuery
109
+ } = window;
194
110
 
195
111
  if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
196
112
  return jQuery;
@@ -199,27 +115,35 @@
199
115
  return null;
200
116
  };
201
117
 
202
- var onDOMContentLoaded = function onDOMContentLoaded(callback) {
118
+ const DOMContentLoadedCallbacks = [];
119
+
120
+ const onDOMContentLoaded = callback => {
203
121
  if (document.readyState === 'loading') {
204
- document.addEventListener('DOMContentLoaded', callback);
122
+ // add listener on the first call when the document is in loading state
123
+ if (!DOMContentLoadedCallbacks.length) {
124
+ document.addEventListener('DOMContentLoaded', () => {
125
+ DOMContentLoadedCallbacks.forEach(callback => callback());
126
+ });
127
+ }
128
+
129
+ DOMContentLoadedCallbacks.push(callback);
205
130
  } else {
206
131
  callback();
207
132
  }
208
133
  };
209
134
 
210
- document.documentElement.dir === 'rtl';
211
-
212
- var defineJQueryPlugin = function defineJQueryPlugin(name, plugin) {
213
- onDOMContentLoaded(function () {
214
- var $ = getjQuery();
135
+ const defineJQueryPlugin = plugin => {
136
+ onDOMContentLoaded(() => {
137
+ const $ = getjQuery();
215
138
  /* istanbul ignore if */
216
139
 
217
140
  if ($) {
218
- var JQUERY_NO_CONFLICT = $.fn[name];
141
+ const name = plugin.NAME;
142
+ const JQUERY_NO_CONFLICT = $.fn[name];
219
143
  $.fn[name] = plugin.jQueryInterface;
220
144
  $.fn[name].Constructor = plugin;
221
145
 
222
- $.fn[name].noConflict = function () {
146
+ $.fn[name].noConflict = () => {
223
147
  $.fn[name] = JQUERY_NO_CONFLICT;
224
148
  return plugin.jQueryInterface;
225
149
  };
@@ -227,108 +151,110 @@
227
151
  });
228
152
  };
229
153
 
154
+ /**
155
+ * --------------------------------------------------------------------------
156
+ * Bootstrap (v5.0.2): collapse.js
157
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
158
+ * --------------------------------------------------------------------------
159
+ */
230
160
  /**
231
161
  * ------------------------------------------------------------------------
232
162
  * Constants
233
163
  * ------------------------------------------------------------------------
234
164
  */
235
165
 
236
- var NAME = 'collapse';
237
- var DATA_KEY = 'bs.collapse';
238
- var EVENT_KEY = "." + DATA_KEY;
239
- var DATA_API_KEY = '.data-api';
240
- var Default = {
166
+ const NAME = 'collapse';
167
+ const DATA_KEY = 'bs.collapse';
168
+ const EVENT_KEY = `.${DATA_KEY}`;
169
+ const DATA_API_KEY = '.data-api';
170
+ const Default = {
241
171
  toggle: true,
242
172
  parent: ''
243
173
  };
244
- var DefaultType = {
174
+ const DefaultType = {
245
175
  toggle: 'boolean',
246
176
  parent: '(string|element)'
247
177
  };
248
- var EVENT_SHOW = "show" + EVENT_KEY;
249
- var EVENT_SHOWN = "shown" + EVENT_KEY;
250
- var EVENT_HIDE = "hide" + EVENT_KEY;
251
- var EVENT_HIDDEN = "hidden" + EVENT_KEY;
252
- var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
253
- var CLASS_NAME_SHOW = 'show';
254
- var CLASS_NAME_COLLAPSE = 'collapse';
255
- var CLASS_NAME_COLLAPSING = 'collapsing';
256
- var CLASS_NAME_COLLAPSED = 'collapsed';
257
- var WIDTH = 'width';
258
- var HEIGHT = 'height';
259
- var SELECTOR_ACTIVES = '.show, .collapsing';
260
- var SELECTOR_DATA_TOGGLE = '[data-bs-toggle="collapse"]';
178
+ const EVENT_SHOW = `show${EVENT_KEY}`;
179
+ const EVENT_SHOWN = `shown${EVENT_KEY}`;
180
+ const EVENT_HIDE = `hide${EVENT_KEY}`;
181
+ const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
182
+ const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
183
+ const CLASS_NAME_SHOW = 'show';
184
+ const CLASS_NAME_COLLAPSE = 'collapse';
185
+ const CLASS_NAME_COLLAPSING = 'collapsing';
186
+ const CLASS_NAME_COLLAPSED = 'collapsed';
187
+ const WIDTH = 'width';
188
+ const HEIGHT = 'height';
189
+ const SELECTOR_ACTIVES = '.show, .collapsing';
190
+ const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="collapse"]';
261
191
  /**
262
192
  * ------------------------------------------------------------------------
263
193
  * Class Definition
264
194
  * ------------------------------------------------------------------------
265
195
  */
266
196
 
267
- var Collapse = /*#__PURE__*/function (_BaseComponent) {
268
- _inheritsLoose(Collapse, _BaseComponent);
269
-
270
- function Collapse(element, config) {
271
- var _this;
197
+ class Collapse extends BaseComponent__default['default'] {
198
+ constructor(element, config) {
199
+ super(element);
200
+ this._isTransitioning = false;
201
+ this._config = this._getConfig(config);
202
+ this._triggerArray = SelectorEngine__default['default'].find(`${SELECTOR_DATA_TOGGLE}[href="#${this._element.id}"],` + `${SELECTOR_DATA_TOGGLE}[data-bs-target="#${this._element.id}"]`);
203
+ const toggleList = SelectorEngine__default['default'].find(SELECTOR_DATA_TOGGLE);
272
204
 
273
- _this = _BaseComponent.call(this, element) || this;
274
- _this._isTransitioning = false;
275
- _this._config = _this._getConfig(config);
276
- _this._triggerArray = SelectorEngine__default['default'].find(SELECTOR_DATA_TOGGLE + "[href=\"#" + element.id + "\"]," + (SELECTOR_DATA_TOGGLE + "[data-bs-target=\"#" + element.id + "\"]"));
277
- var toggleList = SelectorEngine__default['default'].find(SELECTOR_DATA_TOGGLE);
278
-
279
- for (var i = 0, len = toggleList.length; i < len; i++) {
280
- var elem = toggleList[i];
281
- var selector = getSelectorFromElement(elem);
282
- var filterElement = SelectorEngine__default['default'].find(selector).filter(function (foundElem) {
283
- return foundElem === element;
284
- });
205
+ for (let i = 0, len = toggleList.length; i < len; i++) {
206
+ const elem = toggleList[i];
207
+ const selector = getSelectorFromElement(elem);
208
+ const filterElement = SelectorEngine__default['default'].find(selector).filter(foundElem => foundElem === this._element);
285
209
 
286
210
  if (selector !== null && filterElement.length) {
287
- _this._selector = selector;
211
+ this._selector = selector;
288
212
 
289
- _this._triggerArray.push(elem);
213
+ this._triggerArray.push(elem);
290
214
  }
291
215
  }
292
216
 
293
- _this._parent = _this._config.parent ? _this._getParent() : null;
217
+ this._parent = this._config.parent ? this._getParent() : null;
294
218
 
295
- if (!_this._config.parent) {
296
- _this._addAriaAndCollapsedClass(_this._element, _this._triggerArray);
219
+ if (!this._config.parent) {
220
+ this._addAriaAndCollapsedClass(this._element, this._triggerArray);
297
221
  }
298
222
 
299
- if (_this._config.toggle) {
300
- _this.toggle();
223
+ if (this._config.toggle) {
224
+ this.toggle();
301
225
  }
302
-
303
- return _this;
304
226
  } // Getters
305
227
 
306
228
 
307
- var _proto = Collapse.prototype;
229
+ static get Default() {
230
+ return Default;
231
+ }
232
+
233
+ static get NAME() {
234
+ return NAME;
235
+ } // Public
236
+
308
237
 
309
- // Public
310
- _proto.toggle = function toggle() {
238
+ toggle() {
311
239
  if (this._element.classList.contains(CLASS_NAME_SHOW)) {
312
240
  this.hide();
313
241
  } else {
314
242
  this.show();
315
243
  }
316
- };
317
-
318
- _proto.show = function show() {
319
- var _this2 = this;
244
+ }
320
245
 
246
+ show() {
321
247
  if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {
322
248
  return;
323
249
  }
324
250
 
325
- var actives;
326
- var activesData;
251
+ let actives;
252
+ let activesData;
327
253
 
328
254
  if (this._parent) {
329
- actives = SelectorEngine__default['default'].find(SELECTOR_ACTIVES, this._parent).filter(function (elem) {
330
- if (typeof _this2._config.parent === 'string') {
331
- return elem.getAttribute('data-bs-parent') === _this2._config.parent;
255
+ actives = SelectorEngine__default['default'].find(SELECTOR_ACTIVES, this._parent).filter(elem => {
256
+ if (typeof this._config.parent === 'string') {
257
+ return elem.getAttribute('data-bs-parent') === this._config.parent;
332
258
  }
333
259
 
334
260
  return elem.classList.contains(CLASS_NAME_COLLAPSE);
@@ -339,38 +265,36 @@
339
265
  }
340
266
  }
341
267
 
342
- var container = SelectorEngine__default['default'].findOne(this._selector);
268
+ const container = SelectorEngine__default['default'].findOne(this._selector);
343
269
 
344
270
  if (actives) {
345
- var tempActiveData = actives.find(function (elem) {
346
- return container !== elem;
347
- });
348
- activesData = tempActiveData ? Data__default['default'].getData(tempActiveData, DATA_KEY) : null;
271
+ const tempActiveData = actives.find(elem => container !== elem);
272
+ activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null;
349
273
 
350
274
  if (activesData && activesData._isTransitioning) {
351
275
  return;
352
276
  }
353
277
  }
354
278
 
355
- var startEvent = EventHandler__default['default'].trigger(this._element, EVENT_SHOW);
279
+ const startEvent = EventHandler__default['default'].trigger(this._element, EVENT_SHOW);
356
280
 
357
281
  if (startEvent.defaultPrevented) {
358
282
  return;
359
283
  }
360
284
 
361
285
  if (actives) {
362
- actives.forEach(function (elemActive) {
286
+ actives.forEach(elemActive => {
363
287
  if (container !== elemActive) {
364
288
  Collapse.collapseInterface(elemActive, 'hide');
365
289
  }
366
290
 
367
291
  if (!activesData) {
368
- Data__default['default'].setData(elemActive, DATA_KEY, null);
292
+ Data__default['default'].set(elemActive, DATA_KEY, null);
369
293
  }
370
294
  });
371
295
  }
372
296
 
373
- var dimension = this._getDimension();
297
+ const dimension = this._getDimension();
374
298
 
375
299
  this._element.classList.remove(CLASS_NAME_COLLAPSE);
376
300
 
@@ -379,7 +303,7 @@
379
303
  this._element.style[dimension] = 0;
380
304
 
381
305
  if (this._triggerArray.length) {
382
- this._triggerArray.forEach(function (element) {
306
+ this._triggerArray.forEach(element => {
383
307
  element.classList.remove(CLASS_NAME_COLLAPSED);
384
308
  element.setAttribute('aria-expanded', true);
385
309
  });
@@ -387,54 +311,50 @@
387
311
 
388
312
  this.setTransitioning(true);
389
313
 
390
- var complete = function complete() {
391
- _this2._element.classList.remove(CLASS_NAME_COLLAPSING);
314
+ const complete = () => {
315
+ this._element.classList.remove(CLASS_NAME_COLLAPSING);
392
316
 
393
- _this2._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
317
+ this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
394
318
 
395
- _this2._element.style[dimension] = '';
396
-
397
- _this2.setTransitioning(false);
398
-
399
- EventHandler__default['default'].trigger(_this2._element, EVENT_SHOWN);
319
+ this._element.style[dimension] = '';
320
+ this.setTransitioning(false);
321
+ EventHandler__default['default'].trigger(this._element, EVENT_SHOWN);
400
322
  };
401
323
 
402
- var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
403
- var scrollSize = "scroll" + capitalizedDimension;
404
- var transitionDuration = getTransitionDurationFromElement(this._element);
405
- EventHandler__default['default'].one(this._element, 'transitionend', complete);
406
- emulateTransitionEnd(this._element, transitionDuration);
407
- this._element.style[dimension] = this._element[scrollSize] + "px";
408
- };
324
+ const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
325
+ const scrollSize = `scroll${capitalizedDimension}`;
409
326
 
410
- _proto.hide = function hide() {
411
- var _this3 = this;
327
+ this._queueCallback(complete, this._element, true);
412
328
 
329
+ this._element.style[dimension] = `${this._element[scrollSize]}px`;
330
+ }
331
+
332
+ hide() {
413
333
  if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) {
414
334
  return;
415
335
  }
416
336
 
417
- var startEvent = EventHandler__default['default'].trigger(this._element, EVENT_HIDE);
337
+ const startEvent = EventHandler__default['default'].trigger(this._element, EVENT_HIDE);
418
338
 
419
339
  if (startEvent.defaultPrevented) {
420
340
  return;
421
341
  }
422
342
 
423
- var dimension = this._getDimension();
343
+ const dimension = this._getDimension();
424
344
 
425
- this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
345
+ this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;
426
346
  reflow(this._element);
427
347
 
428
348
  this._element.classList.add(CLASS_NAME_COLLAPSING);
429
349
 
430
350
  this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
431
351
 
432
- var triggerArrayLength = this._triggerArray.length;
352
+ const triggerArrayLength = this._triggerArray.length;
433
353
 
434
354
  if (triggerArrayLength > 0) {
435
- for (var i = 0; i < triggerArrayLength; i++) {
436
- var trigger = this._triggerArray[i];
437
- var elem = getElementFromSelector(trigger);
355
+ for (let i = 0; i < triggerArrayLength; i++) {
356
+ const trigger = this._triggerArray[i];
357
+ const elem = getElementFromSelector(trigger);
438
358
 
439
359
  if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {
440
360
  trigger.classList.add(CLASS_NAME_COLLAPSED);
@@ -445,78 +365,61 @@
445
365
 
446
366
  this.setTransitioning(true);
447
367
 
448
- var complete = function complete() {
449
- _this3.setTransitioning(false);
368
+ const complete = () => {
369
+ this.setTransitioning(false);
450
370
 
451
- _this3._element.classList.remove(CLASS_NAME_COLLAPSING);
371
+ this._element.classList.remove(CLASS_NAME_COLLAPSING);
452
372
 
453
- _this3._element.classList.add(CLASS_NAME_COLLAPSE);
373
+ this._element.classList.add(CLASS_NAME_COLLAPSE);
454
374
 
455
- EventHandler__default['default'].trigger(_this3._element, EVENT_HIDDEN);
375
+ EventHandler__default['default'].trigger(this._element, EVENT_HIDDEN);
456
376
  };
457
377
 
458
378
  this._element.style[dimension] = '';
459
- var transitionDuration = getTransitionDurationFromElement(this._element);
460
- EventHandler__default['default'].one(this._element, 'transitionend', complete);
461
- emulateTransitionEnd(this._element, transitionDuration);
462
- };
463
379
 
464
- _proto.setTransitioning = function setTransitioning(isTransitioning) {
465
- this._isTransitioning = isTransitioning;
466
- };
467
-
468
- _proto.dispose = function dispose() {
469
- _BaseComponent.prototype.dispose.call(this);
380
+ this._queueCallback(complete, this._element, true);
381
+ }
470
382
 
471
- this._config = null;
472
- this._parent = null;
473
- this._triggerArray = null;
474
- this._isTransitioning = null;
383
+ setTransitioning(isTransitioning) {
384
+ this._isTransitioning = isTransitioning;
475
385
  } // Private
476
- ;
477
386
 
478
- _proto._getConfig = function _getConfig(config) {
479
- config = _extends({}, Default, config);
387
+
388
+ _getConfig(config) {
389
+ config = { ...Default,
390
+ ...config
391
+ };
480
392
  config.toggle = Boolean(config.toggle); // Coerce string values
481
393
 
482
394
  typeCheckConfig(NAME, config, DefaultType);
483
395
  return config;
484
- };
396
+ }
485
397
 
486
- _proto._getDimension = function _getDimension() {
398
+ _getDimension() {
487
399
  return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT;
488
- };
489
-
490
- _proto._getParent = function _getParent() {
491
- var _this4 = this;
492
-
493
- var parent = this._config.parent;
494
-
495
- if (isElement(parent)) {
496
- // it's a jQuery object
497
- if (typeof parent.jquery !== 'undefined' || typeof parent[0] !== 'undefined') {
498
- parent = parent[0];
499
- }
500
- } else {
501
- parent = SelectorEngine__default['default'].findOne(parent);
502
- }
400
+ }
503
401
 
504
- var selector = SELECTOR_DATA_TOGGLE + "[data-bs-parent=\"" + parent + "\"]";
505
- SelectorEngine__default['default'].find(selector, parent).forEach(function (element) {
506
- var selected = getElementFromSelector(element);
402
+ _getParent() {
403
+ let {
404
+ parent
405
+ } = this._config;
406
+ parent = getElement(parent);
407
+ const selector = `${SELECTOR_DATA_TOGGLE}[data-bs-parent="${parent}"]`;
408
+ SelectorEngine__default['default'].find(selector, parent).forEach(element => {
409
+ const selected = getElementFromSelector(element);
507
410
 
508
- _this4._addAriaAndCollapsedClass(selected, [element]);
411
+ this._addAriaAndCollapsedClass(selected, [element]);
509
412
  });
510
413
  return parent;
511
- };
414
+ }
512
415
 
513
- _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
416
+ _addAriaAndCollapsedClass(element, triggerArray) {
514
417
  if (!element || !triggerArray.length) {
515
418
  return;
516
419
  }
517
420
 
518
- var isOpen = element.classList.contains(CLASS_NAME_SHOW);
519
- triggerArray.forEach(function (elem) {
421
+ const isOpen = element.classList.contains(CLASS_NAME_SHOW);
422
+ triggerArray.forEach(elem => {
520
423
  if (isOpen) {
521
424
  elem.classList.remove(CLASS_NAME_COLLAPSED);
522
425
  } else {
@@ -526,12 +429,14 @@
526
429
  elem.setAttribute('aria-expanded', isOpen);
527
430
  });
528
431
  } // Static
529
- ;
530
432
 
531
- Collapse.collapseInterface = function collapseInterface(element, config) {
532
- var data = Data__default['default'].getData(element, DATA_KEY);
533
433
 
534
- var _config = _extends({}, Default, Manipulator__default['default'].getDataAttributes(element), typeof config === 'object' && config ? config : {});
434
+ static collapseInterface(element, config) {
435
+ let data = Collapse.getInstance(element);
436
+ const _config = { ...Default,
437
+ ...Manipulator__default['default'].getDataAttributes(element),
438
+ ...(typeof config === 'object' && config ? config : {})
439
+ };
535
440
 
536
441
  if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {
537
442
  _config.toggle = false;
@@ -543,33 +448,20 @@
543
448
 
544
449
  if (typeof config === 'string') {
545
450
  if (typeof data[config] === 'undefined') {
546
- throw new TypeError("No method named \"" + config + "\"");
451
+ throw new TypeError(`No method named "${config}"`);
547
452
  }
548
453
 
549
454
  data[config]();
550
455
  }
551
- };
456
+ }
552
457
 
553
- Collapse.jQueryInterface = function jQueryInterface(config) {
458
+ static jQueryInterface(config) {
554
459
  return this.each(function () {
555
460
  Collapse.collapseInterface(this, config);
556
461
  });
557
- };
558
-
559
- _createClass(Collapse, null, [{
560
- key: "Default",
561
- get: function get() {
562
- return Default;
563
- }
564
- }, {
565
- key: "DATA_KEY",
566
- get: function get() {
567
- return DATA_KEY;
568
- }
569
- }]);
462
+ }
570
463
 
571
- return Collapse;
572
- }(BaseComponent__default['default']);
464
+ }
573
465
  /**
574
466
  * ------------------------------------------------------------------------
575
467
  * Data Api implementation
@@ -583,12 +475,12 @@
583
475
  event.preventDefault();
584
476
  }
585
477
 
586
- var triggerData = Manipulator__default['default'].getDataAttributes(this);
587
- var selector = getSelectorFromElement(this);
588
- var selectorElements = SelectorEngine__default['default'].find(selector);
589
- selectorElements.forEach(function (element) {
590
- var data = Data__default['default'].getData(element, DATA_KEY);
591
- var config;
478
+ const triggerData = Manipulator__default['default'].getDataAttributes(this);
479
+ const selector = getSelectorFromElement(this);
480
+ const selectorElements = SelectorEngine__default['default'].find(selector);
481
+ selectorElements.forEach(element => {
482
+ const data = Collapse.getInstance(element);
483
+ let config;
592
484
 
593
485
  if (data) {
594
486
  // update parent attribute
@@ -612,7 +504,7 @@
612
504
  * add .Collapse to jQuery only if jQuery is present
613
505
  */
614
506
 
615
- defineJQueryPlugin(NAME, Collapse);
507
+ defineJQueryPlugin(Collapse);
616
508
 
617
509
  return Collapse;
618
510