bootstrap 5.1.1 → 5.2.0

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 (95) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/assets/javascripts/bootstrap/alert.js +18 -153
  4. data/assets/javascripts/bootstrap/base-component.js +44 -127
  5. data/assets/javascripts/bootstrap/button.js +16 -80
  6. data/assets/javascripts/bootstrap/carousel.js +225 -497
  7. data/assets/javascripts/bootstrap/collapse.js +79 -262
  8. data/assets/javascripts/bootstrap/dom/data.js +6 -8
  9. data/assets/javascripts/bootstrap/dom/event-handler.js +95 -133
  10. data/assets/javascripts/bootstrap/dom/manipulator.js +25 -29
  11. data/assets/javascripts/bootstrap/dom/selector-engine.js +17 -59
  12. data/assets/javascripts/bootstrap/dropdown.js +124 -342
  13. data/assets/javascripts/bootstrap/modal.js +122 -767
  14. data/assets/javascripts/bootstrap/offcanvas.js +102 -671
  15. data/assets/javascripts/bootstrap/popover.js +42 -124
  16. data/assets/javascripts/bootstrap/scrollspy.js +186 -269
  17. data/assets/javascripts/bootstrap/tab.js +222 -221
  18. data/assets/javascripts/bootstrap/toast.js +41 -227
  19. data/assets/javascripts/bootstrap/tooltip.js +283 -629
  20. data/assets/javascripts/bootstrap/util/backdrop.js +165 -0
  21. data/assets/javascripts/bootstrap/util/component-functions.js +46 -0
  22. data/assets/javascripts/bootstrap/util/config.js +79 -0
  23. data/assets/javascripts/bootstrap/util/focustrap.js +129 -0
  24. data/assets/javascripts/bootstrap/util/index.js +350 -0
  25. data/assets/javascripts/bootstrap/util/sanitizer.js +122 -0
  26. data/assets/javascripts/bootstrap/util/scrollbar.js +138 -0
  27. data/assets/javascripts/bootstrap/util/swipe.js +155 -0
  28. data/assets/javascripts/bootstrap/util/template-factory.js +177 -0
  29. data/assets/javascripts/bootstrap-global-this-define.js +1 -1
  30. data/assets/javascripts/bootstrap-sprockets.js +16 -7
  31. data/assets/javascripts/bootstrap.js +2094 -1891
  32. data/assets/javascripts/bootstrap.min.js +3 -3
  33. data/assets/stylesheets/_bootstrap-grid.scss +3 -6
  34. data/assets/stylesheets/_bootstrap-reboot.scss +3 -7
  35. data/assets/stylesheets/_bootstrap.scss +4 -6
  36. data/assets/stylesheets/bootstrap/_accordion.scss +52 -24
  37. data/assets/stylesheets/bootstrap/_alert.scss +18 -4
  38. data/assets/stylesheets/bootstrap/_badge.scss +14 -5
  39. data/assets/stylesheets/bootstrap/_breadcrumb.scss +22 -10
  40. data/assets/stylesheets/bootstrap/_button-group.scss +3 -0
  41. data/assets/stylesheets/bootstrap/_buttons.scss +97 -22
  42. data/assets/stylesheets/bootstrap/_card.scss +55 -37
  43. data/assets/stylesheets/bootstrap/_close.scss +1 -1
  44. data/assets/stylesheets/bootstrap/_containers.scss +1 -1
  45. data/assets/stylesheets/bootstrap/_dropdown.scss +83 -75
  46. data/assets/stylesheets/bootstrap/_functions.scss +7 -7
  47. data/assets/stylesheets/bootstrap/_grid.scss +3 -3
  48. data/assets/stylesheets/bootstrap/_helpers.scss +1 -0
  49. data/assets/stylesheets/bootstrap/_list-group.scss +44 -27
  50. data/assets/stylesheets/bootstrap/_maps.scss +54 -0
  51. data/assets/stylesheets/bootstrap/_modal.scss +71 -43
  52. data/assets/stylesheets/bootstrap/_nav.scss +53 -20
  53. data/assets/stylesheets/bootstrap/_navbar.scss +91 -150
  54. data/assets/stylesheets/bootstrap/_offcanvas.scss +119 -59
  55. data/assets/stylesheets/bootstrap/_pagination.scss +66 -21
  56. data/assets/stylesheets/bootstrap/_placeholders.scss +1 -1
  57. data/assets/stylesheets/bootstrap/_popover.scss +90 -52
  58. data/assets/stylesheets/bootstrap/_progress.scss +20 -9
  59. data/assets/stylesheets/bootstrap/_reboot.scss +25 -40
  60. data/assets/stylesheets/bootstrap/_root.scss +40 -21
  61. data/assets/stylesheets/bootstrap/_spinners.scss +38 -22
  62. data/assets/stylesheets/bootstrap/_tables.scss +38 -25
  63. data/assets/stylesheets/bootstrap/_toasts.scss +35 -16
  64. data/assets/stylesheets/bootstrap/_tooltip.scss +61 -56
  65. data/assets/stylesheets/bootstrap/_type.scss +2 -0
  66. data/assets/stylesheets/bootstrap/_utilities.scss +43 -26
  67. data/assets/stylesheets/bootstrap/_variables.scss +118 -124
  68. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +3 -6
  69. data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +14 -3
  70. data/assets/stylesheets/bootstrap/forms/_form-check.scss +28 -5
  71. data/assets/stylesheets/bootstrap/forms/_form-control.scss +12 -37
  72. data/assets/stylesheets/bootstrap/forms/_form-select.scss +2 -1
  73. data/assets/stylesheets/bootstrap/forms/_input-group.scss +15 -7
  74. data/assets/stylesheets/bootstrap/helpers/_color-bg.scss +10 -0
  75. data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +2 -2
  76. data/assets/stylesheets/bootstrap/helpers/_position.scss +7 -1
  77. data/assets/stylesheets/bootstrap/helpers/_ratio.scss +2 -2
  78. data/assets/stylesheets/bootstrap/helpers/_vr.scss +1 -1
  79. data/assets/stylesheets/bootstrap/mixins/_alert.scss +7 -3
  80. data/assets/stylesheets/bootstrap/mixins/_banner.scss +9 -0
  81. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +8 -8
  82. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +32 -95
  83. data/assets/stylesheets/bootstrap/mixins/_container.scss +4 -2
  84. data/assets/stylesheets/bootstrap/mixins/_forms.scss +8 -0
  85. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +1 -1
  86. data/assets/stylesheets/bootstrap/mixins/_grid.scss +13 -12
  87. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +4 -25
  88. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +1 -1
  89. data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +12 -9
  90. data/assets/stylesheets/bootstrap/mixins/_utilities.scss +12 -4
  91. data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +1 -1
  92. data/bootstrap.gemspec +1 -1
  93. data/lib/bootstrap/version.rb +2 -2
  94. data/tasks/updater/js.rb +9 -4
  95. metadata +16 -4
@@ -1,199 +1,34 @@
1
1
  /*!
2
- * Bootstrap collapse.js v5.1.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
2
+ * Bootstrap collapse.js v5.2.0 (https://getbootstrap.com/)
3
+ * Copyright 2011-2022 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('./util/index'), require('./dom/event-handler'), require('./dom/selector-engine'), require('./base-component')) :
8
+ typeof define === 'function' && define.amd ? define(['./util/index', './dom/event-handler', './dom/selector-engine', './base-component'], factory) :
9
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Collapse = factory(global.Index, global.EventHandler, global.SelectorEngine, global.BaseComponent));
10
+ })(this, (function (index, EventHandler, SelectorEngine, BaseComponent) { 'use strict';
11
11
 
12
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
12
+ const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e };
13
13
 
14
- var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data);
15
- var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
16
- var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);
17
- var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
18
- var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
14
+ const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
15
+ const SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
16
+ const BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
19
17
 
20
18
  /**
21
19
  * --------------------------------------------------------------------------
22
- * Bootstrap (v5.1.1): util/index.js
20
+ * Bootstrap (v5.2.0): collapse.js
23
21
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
24
22
  * --------------------------------------------------------------------------
25
23
  */
26
-
27
- const toType = obj => {
28
- if (obj === null || obj === undefined) {
29
- return `${obj}`;
30
- }
31
-
32
- return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
33
- };
34
-
35
- const getSelector = element => {
36
- let selector = element.getAttribute('data-bs-target');
37
-
38
- if (!selector || selector === '#') {
39
- let hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,
40
- // so everything starting with `#` or `.`. If a "real" URL is used as the selector,
41
- // `document.querySelector` will rightfully complain it is invalid.
42
- // See https://github.com/twbs/bootstrap/issues/32273
43
-
44
- if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) {
45
- return null;
46
- } // Just in case some CMS puts out a full URL with the anchor appended
47
-
48
-
49
- if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {
50
- hrefAttr = `#${hrefAttr.split('#')[1]}`;
51
- }
52
-
53
- selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
54
- }
55
-
56
- return selector;
57
- };
58
-
59
- const getSelectorFromElement = element => {
60
- const selector = getSelector(element);
61
-
62
- if (selector) {
63
- return document.querySelector(selector) ? selector : null;
64
- }
65
-
66
- return null;
67
- };
68
-
69
- const getElementFromSelector = element => {
70
- const selector = getSelector(element);
71
- return selector ? document.querySelector(selector) : null;
72
- };
73
-
74
- const isElement = obj => {
75
- if (!obj || typeof obj !== 'object') {
76
- return false;
77
- }
78
-
79
- if (typeof obj.jquery !== 'undefined') {
80
- obj = obj[0];
81
- }
82
-
83
- return typeof obj.nodeType !== 'undefined';
84
- };
85
-
86
- const getElement = obj => {
87
- if (isElement(obj)) {
88
- // it's a jQuery object or a node element
89
- return obj.jquery ? obj[0] : obj;
90
- }
91
-
92
- if (typeof obj === 'string' && obj.length > 0) {
93
- return document.querySelector(obj);
94
- }
95
-
96
- return null;
97
- };
98
-
99
- const typeCheckConfig = (componentName, config, configTypes) => {
100
- Object.keys(configTypes).forEach(property => {
101
- const expectedTypes = configTypes[property];
102
- const value = config[property];
103
- const valueType = value && isElement(value) ? 'element' : toType(value);
104
-
105
- if (!new RegExp(expectedTypes).test(valueType)) {
106
- throw new TypeError(`${componentName.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`);
107
- }
108
- });
109
- };
110
- /**
111
- * Trick to restart an element's animation
112
- *
113
- * @param {HTMLElement} element
114
- * @return void
115
- *
116
- * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation
117
- */
118
-
119
-
120
- const reflow = element => {
121
- // eslint-disable-next-line no-unused-expressions
122
- element.offsetHeight;
123
- };
124
-
125
- const getjQuery = () => {
126
- const {
127
- jQuery
128
- } = window;
129
-
130
- if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
131
- return jQuery;
132
- }
133
-
134
- return null;
135
- };
136
-
137
- const DOMContentLoadedCallbacks = [];
138
-
139
- const onDOMContentLoaded = callback => {
140
- if (document.readyState === 'loading') {
141
- // add listener on the first call when the document is in loading state
142
- if (!DOMContentLoadedCallbacks.length) {
143
- document.addEventListener('DOMContentLoaded', () => {
144
- DOMContentLoadedCallbacks.forEach(callback => callback());
145
- });
146
- }
147
-
148
- DOMContentLoadedCallbacks.push(callback);
149
- } else {
150
- callback();
151
- }
152
- };
153
-
154
- const defineJQueryPlugin = plugin => {
155
- onDOMContentLoaded(() => {
156
- const $ = getjQuery();
157
- /* istanbul ignore if */
158
-
159
- if ($) {
160
- const name = plugin.NAME;
161
- const JQUERY_NO_CONFLICT = $.fn[name];
162
- $.fn[name] = plugin.jQueryInterface;
163
- $.fn[name].Constructor = plugin;
164
-
165
- $.fn[name].noConflict = () => {
166
- $.fn[name] = JQUERY_NO_CONFLICT;
167
- return plugin.jQueryInterface;
168
- };
169
- }
170
- });
171
- };
172
-
173
24
  /**
174
- * --------------------------------------------------------------------------
175
- * Bootstrap (v5.1.1): collapse.js
176
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
177
- * --------------------------------------------------------------------------
178
- */
179
- /**
180
- * ------------------------------------------------------------------------
181
25
  * Constants
182
- * ------------------------------------------------------------------------
183
26
  */
184
27
 
185
28
  const NAME = 'collapse';
186
29
  const DATA_KEY = 'bs.collapse';
187
30
  const EVENT_KEY = `.${DATA_KEY}`;
188
31
  const DATA_API_KEY = '.data-api';
189
- const Default = {
190
- toggle: true,
191
- parent: null
192
- };
193
- const DefaultType = {
194
- toggle: 'boolean',
195
- parent: '(null|element)'
196
- };
197
32
  const EVENT_SHOW = `show${EVENT_KEY}`;
198
33
  const EVENT_SHOWN = `shown${EVENT_KEY}`;
199
34
  const EVENT_HIDE = `hide${EVENT_KEY}`;
@@ -203,33 +38,36 @@
203
38
  const CLASS_NAME_COLLAPSE = 'collapse';
204
39
  const CLASS_NAME_COLLAPSING = 'collapsing';
205
40
  const CLASS_NAME_COLLAPSED = 'collapsed';
41
+ const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;
206
42
  const CLASS_NAME_HORIZONTAL = 'collapse-horizontal';
207
43
  const WIDTH = 'width';
208
44
  const HEIGHT = 'height';
209
45
  const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';
210
46
  const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="collapse"]';
47
+ const Default = {
48
+ parent: null,
49
+ toggle: true
50
+ };
51
+ const DefaultType = {
52
+ parent: '(null|element)',
53
+ toggle: 'boolean'
54
+ };
211
55
  /**
212
- * ------------------------------------------------------------------------
213
- * Class Definition
214
- * ------------------------------------------------------------------------
56
+ * Class definition
215
57
  */
216
58
 
217
- class Collapse extends BaseComponent__default['default'] {
59
+ class Collapse extends BaseComponent__default.default {
218
60
  constructor(element, config) {
219
- super(element);
61
+ super(element, config);
220
62
  this._isTransitioning = false;
221
- this._config = this._getConfig(config);
222
63
  this._triggerArray = [];
223
- const toggleList = SelectorEngine__default['default'].find(SELECTOR_DATA_TOGGLE);
64
+ const toggleList = SelectorEngine__default.default.find(SELECTOR_DATA_TOGGLE);
224
65
 
225
- for (let i = 0, len = toggleList.length; i < len; i++) {
226
- const elem = toggleList[i];
227
- const selector = getSelectorFromElement(elem);
228
- const filterElement = SelectorEngine__default['default'].find(selector).filter(foundElem => foundElem === this._element);
66
+ for (const elem of toggleList) {
67
+ const selector = index.getSelectorFromElement(elem);
68
+ const filterElement = SelectorEngine__default.default.find(selector).filter(foundElement => foundElement === this._element);
229
69
 
230
70
  if (selector !== null && filterElement.length) {
231
- this._selector = selector;
232
-
233
71
  this._triggerArray.push(elem);
234
72
  }
235
73
  }
@@ -250,6 +88,10 @@
250
88
  return Default;
251
89
  }
252
90
 
91
+ static get DefaultType() {
92
+ return DefaultType;
93
+ }
94
+
253
95
  static get NAME() {
254
96
  return NAME;
255
97
  } // Public
@@ -268,42 +110,27 @@
268
110
  return;
269
111
  }
270
112
 
271
- let actives = [];
272
- let activesData;
113
+ let activeChildren = []; // find active children
273
114
 
274
115
  if (this._config.parent) {
275
- const children = SelectorEngine__default['default'].find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._config.parent);
276
- actives = SelectorEngine__default['default'].find(SELECTOR_ACTIVES, this._config.parent).filter(elem => !children.includes(elem)); // remove children if greater depth
116
+ activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, {
117
+ toggle: false
118
+ }));
277
119
  }
278
120
 
279
- const container = SelectorEngine__default['default'].findOne(this._selector);
280
-
281
- if (actives.length) {
282
- const tempActiveData = actives.find(elem => container !== elem);
283
- activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null;
284
-
285
- if (activesData && activesData._isTransitioning) {
286
- return;
287
- }
121
+ if (activeChildren.length && activeChildren[0]._isTransitioning) {
122
+ return;
288
123
  }
289
124
 
290
- const startEvent = EventHandler__default['default'].trigger(this._element, EVENT_SHOW);
125
+ const startEvent = EventHandler__default.default.trigger(this._element, EVENT_SHOW);
291
126
 
292
127
  if (startEvent.defaultPrevented) {
293
128
  return;
294
129
  }
295
130
 
296
- actives.forEach(elemActive => {
297
- if (container !== elemActive) {
298
- Collapse.getOrCreateInstance(elemActive, {
299
- toggle: false
300
- }).hide();
301
- }
302
-
303
- if (!activesData) {
304
- Data__default['default'].set(elemActive, DATA_KEY, null);
305
- }
306
- });
131
+ for (const activeInstance of activeChildren) {
132
+ activeInstance.hide();
133
+ }
307
134
 
308
135
  const dimension = this._getDimension();
309
136
 
@@ -325,7 +152,7 @@
325
152
  this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
326
153
 
327
154
  this._element.style[dimension] = '';
328
- EventHandler__default['default'].trigger(this._element, EVENT_SHOWN);
155
+ EventHandler__default.default.trigger(this._element, EVENT_SHOWN);
329
156
  };
330
157
 
331
158
  const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
@@ -341,7 +168,7 @@
341
168
  return;
342
169
  }
343
170
 
344
- const startEvent = EventHandler__default['default'].trigger(this._element, EVENT_HIDE);
171
+ const startEvent = EventHandler__default.default.trigger(this._element, EVENT_HIDE);
345
172
 
346
173
  if (startEvent.defaultPrevented) {
347
174
  return;
@@ -350,19 +177,16 @@
350
177
  const dimension = this._getDimension();
351
178
 
352
179
  this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;
353
- reflow(this._element);
180
+ index.reflow(this._element);
354
181
 
355
182
  this._element.classList.add(CLASS_NAME_COLLAPSING);
356
183
 
357
184
  this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
358
185
 
359
- const triggerArrayLength = this._triggerArray.length;
186
+ for (const trigger of this._triggerArray) {
187
+ const element = index.getElementFromSelector(trigger);
360
188
 
361
- for (let i = 0; i < triggerArrayLength; i++) {
362
- const trigger = this._triggerArray[i];
363
- const elem = getElementFromSelector(trigger);
364
-
365
- if (elem && !this._isShown(elem)) {
189
+ if (element && !this._isShown(element)) {
366
190
  this._addAriaAndCollapsedClass([trigger], false);
367
191
  }
368
192
  }
@@ -376,7 +200,7 @@
376
200
 
377
201
  this._element.classList.add(CLASS_NAME_COLLAPSE);
378
202
 
379
- EventHandler__default['default'].trigger(this._element, EVENT_HIDDEN);
203
+ EventHandler__default.default.trigger(this._element, EVENT_HIDDEN);
380
204
  };
381
205
 
382
206
  this._element.style[dimension] = '';
@@ -389,15 +213,10 @@
389
213
  } // Private
390
214
 
391
215
 
392
- _getConfig(config) {
393
- config = { ...Default,
394
- ...Manipulator__default['default'].getDataAttributes(this._element),
395
- ...config
396
- };
216
+ _configAfterMerge(config) {
397
217
  config.toggle = Boolean(config.toggle); // Coerce string values
398
218
 
399
- config.parent = getElement(config.parent);
400
- typeCheckConfig(NAME, config, DefaultType);
219
+ config.parent = index.getElement(config.parent);
401
220
  return config;
402
221
  }
403
222
 
@@ -410,14 +229,21 @@
410
229
  return;
411
230
  }
412
231
 
413
- const children = SelectorEngine__default['default'].find(`.${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`, this._config.parent);
414
- SelectorEngine__default['default'].find(SELECTOR_DATA_TOGGLE, this._config.parent).filter(elem => !children.includes(elem)).forEach(element => {
415
- const selected = getElementFromSelector(element);
232
+ const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE);
233
+
234
+ for (const element of children) {
235
+ const selected = index.getElementFromSelector(element);
416
236
 
417
237
  if (selected) {
418
238
  this._addAriaAndCollapsedClass([element], this._isShown(selected));
419
239
  }
420
- });
240
+ }
241
+ }
242
+
243
+ _getFirstLevelChildren(selector) {
244
+ const children = SelectorEngine__default.default.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); // remove children if greater depth
245
+
246
+ return SelectorEngine__default.default.find(selector, this._config.parent).filter(element => !children.includes(element));
421
247
  }
422
248
 
423
249
  _addAriaAndCollapsedClass(triggerArray, isOpen) {
@@ -425,26 +251,21 @@
425
251
  return;
426
252
  }
427
253
 
428
- triggerArray.forEach(elem => {
429
- if (isOpen) {
430
- elem.classList.remove(CLASS_NAME_COLLAPSED);
431
- } else {
432
- elem.classList.add(CLASS_NAME_COLLAPSED);
433
- }
434
-
435
- elem.setAttribute('aria-expanded', isOpen);
436
- });
254
+ for (const element of triggerArray) {
255
+ element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);
256
+ element.setAttribute('aria-expanded', isOpen);
257
+ }
437
258
  } // Static
438
259
 
439
260
 
440
261
  static jQueryInterface(config) {
441
- return this.each(function () {
442
- const _config = {};
262
+ const _config = {};
443
263
 
444
- if (typeof config === 'string' && /show|hide/.test(config)) {
445
- _config.toggle = false;
446
- }
264
+ if (typeof config === 'string' && /show|hide/.test(config)) {
265
+ _config.toggle = false;
266
+ }
447
267
 
268
+ return this.each(function () {
448
269
  const data = Collapse.getOrCreateInstance(this, _config);
449
270
 
450
271
  if (typeof config === 'string') {
@@ -459,35 +280,31 @@
459
280
 
460
281
  }
461
282
  /**
462
- * ------------------------------------------------------------------------
463
- * Data Api implementation
464
- * ------------------------------------------------------------------------
283
+ * Data API implementation
465
284
  */
466
285
 
467
286
 
468
- EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
287
+ EventHandler__default.default.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
469
288
  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
470
289
  if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {
471
290
  event.preventDefault();
472
291
  }
473
292
 
474
- const selector = getSelectorFromElement(this);
475
- const selectorElements = SelectorEngine__default['default'].find(selector);
476
- selectorElements.forEach(element => {
293
+ const selector = index.getSelectorFromElement(this);
294
+ const selectorElements = SelectorEngine__default.default.find(selector);
295
+
296
+ for (const element of selectorElements) {
477
297
  Collapse.getOrCreateInstance(element, {
478
298
  toggle: false
479
299
  }).toggle();
480
- });
300
+ }
481
301
  });
482
302
  /**
483
- * ------------------------------------------------------------------------
484
303
  * jQuery
485
- * ------------------------------------------------------------------------
486
- * add .Collapse to jQuery only if jQuery is present
487
304
  */
488
305
 
489
- defineJQueryPlugin(Collapse);
306
+ index.defineJQueryPlugin(Collapse);
490
307
 
491
308
  return Collapse;
492
309
 
493
- })));
310
+ }));
@@ -1,28 +1,26 @@
1
1
  /*!
2
- * Bootstrap data.js v5.1.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
2
+ * Bootstrap data.js v5.2.0 (https://getbootstrap.com/)
3
+ * Copyright 2011-2022 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
7
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
8
8
  typeof define === 'function' && define.amd ? define(factory) :
9
9
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Data = factory());
10
- }(this, (function () { 'use strict';
10
+ })(this, (function () { 'use strict';
11
11
 
12
12
  /**
13
13
  * --------------------------------------------------------------------------
14
- * Bootstrap (v5.1.1): dom/data.js
14
+ * Bootstrap (v5.2.0): dom/data.js
15
15
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
16
16
  * --------------------------------------------------------------------------
17
17
  */
18
18
 
19
19
  /**
20
- * ------------------------------------------------------------------------
21
20
  * Constants
22
- * ------------------------------------------------------------------------
23
21
  */
24
22
  const elementMap = new Map();
25
- var data = {
23
+ const data = {
26
24
  set(element, key, instance) {
27
25
  if (!elementMap.has(element)) {
28
26
  elementMap.set(element, new Map());
@@ -65,4 +63,4 @@
65
63
 
66
64
  return data;
67
65
 
68
- })));
66
+ }));