bootstrap 5.0.0.beta2 → 5.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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