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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/assets/javascripts/bootstrap/alert.js +18 -153
- data/assets/javascripts/bootstrap/base-component.js +44 -127
- data/assets/javascripts/bootstrap/button.js +16 -80
- data/assets/javascripts/bootstrap/carousel.js +225 -497
- data/assets/javascripts/bootstrap/collapse.js +79 -262
- data/assets/javascripts/bootstrap/dom/data.js +6 -8
- data/assets/javascripts/bootstrap/dom/event-handler.js +95 -133
- data/assets/javascripts/bootstrap/dom/manipulator.js +25 -29
- data/assets/javascripts/bootstrap/dom/selector-engine.js +17 -59
- data/assets/javascripts/bootstrap/dropdown.js +124 -342
- data/assets/javascripts/bootstrap/modal.js +122 -767
- data/assets/javascripts/bootstrap/offcanvas.js +102 -671
- data/assets/javascripts/bootstrap/popover.js +42 -124
- data/assets/javascripts/bootstrap/scrollspy.js +186 -269
- data/assets/javascripts/bootstrap/tab.js +222 -221
- data/assets/javascripts/bootstrap/toast.js +41 -227
- data/assets/javascripts/bootstrap/tooltip.js +283 -629
- data/assets/javascripts/bootstrap/util/backdrop.js +165 -0
- data/assets/javascripts/bootstrap/util/component-functions.js +46 -0
- data/assets/javascripts/bootstrap/util/config.js +79 -0
- data/assets/javascripts/bootstrap/util/focustrap.js +129 -0
- data/assets/javascripts/bootstrap/util/index.js +350 -0
- data/assets/javascripts/bootstrap/util/sanitizer.js +122 -0
- data/assets/javascripts/bootstrap/util/scrollbar.js +138 -0
- data/assets/javascripts/bootstrap/util/swipe.js +155 -0
- data/assets/javascripts/bootstrap/util/template-factory.js +177 -0
- data/assets/javascripts/bootstrap-global-this-define.js +1 -1
- data/assets/javascripts/bootstrap-sprockets.js +16 -7
- data/assets/javascripts/bootstrap.js +2094 -1891
- data/assets/javascripts/bootstrap.min.js +3 -3
- data/assets/stylesheets/_bootstrap-grid.scss +3 -6
- data/assets/stylesheets/_bootstrap-reboot.scss +3 -7
- data/assets/stylesheets/_bootstrap.scss +4 -6
- data/assets/stylesheets/bootstrap/_accordion.scss +52 -24
- data/assets/stylesheets/bootstrap/_alert.scss +18 -4
- data/assets/stylesheets/bootstrap/_badge.scss +14 -5
- data/assets/stylesheets/bootstrap/_breadcrumb.scss +22 -10
- data/assets/stylesheets/bootstrap/_button-group.scss +3 -0
- data/assets/stylesheets/bootstrap/_buttons.scss +97 -22
- data/assets/stylesheets/bootstrap/_card.scss +55 -37
- data/assets/stylesheets/bootstrap/_close.scss +1 -1
- data/assets/stylesheets/bootstrap/_containers.scss +1 -1
- data/assets/stylesheets/bootstrap/_dropdown.scss +83 -75
- data/assets/stylesheets/bootstrap/_functions.scss +7 -7
- data/assets/stylesheets/bootstrap/_grid.scss +3 -3
- data/assets/stylesheets/bootstrap/_helpers.scss +1 -0
- data/assets/stylesheets/bootstrap/_list-group.scss +44 -27
- data/assets/stylesheets/bootstrap/_maps.scss +54 -0
- data/assets/stylesheets/bootstrap/_modal.scss +71 -43
- data/assets/stylesheets/bootstrap/_nav.scss +53 -20
- data/assets/stylesheets/bootstrap/_navbar.scss +91 -150
- data/assets/stylesheets/bootstrap/_offcanvas.scss +119 -59
- data/assets/stylesheets/bootstrap/_pagination.scss +66 -21
- data/assets/stylesheets/bootstrap/_placeholders.scss +1 -1
- data/assets/stylesheets/bootstrap/_popover.scss +90 -52
- data/assets/stylesheets/bootstrap/_progress.scss +20 -9
- data/assets/stylesheets/bootstrap/_reboot.scss +25 -40
- data/assets/stylesheets/bootstrap/_root.scss +40 -21
- data/assets/stylesheets/bootstrap/_spinners.scss +38 -22
- data/assets/stylesheets/bootstrap/_tables.scss +38 -25
- data/assets/stylesheets/bootstrap/_toasts.scss +35 -16
- data/assets/stylesheets/bootstrap/_tooltip.scss +61 -56
- data/assets/stylesheets/bootstrap/_type.scss +2 -0
- data/assets/stylesheets/bootstrap/_utilities.scss +43 -26
- data/assets/stylesheets/bootstrap/_variables.scss +118 -124
- data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +3 -6
- data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +14 -3
- data/assets/stylesheets/bootstrap/forms/_form-check.scss +28 -5
- data/assets/stylesheets/bootstrap/forms/_form-control.scss +12 -37
- data/assets/stylesheets/bootstrap/forms/_form-select.scss +2 -1
- data/assets/stylesheets/bootstrap/forms/_input-group.scss +15 -7
- data/assets/stylesheets/bootstrap/helpers/_color-bg.scss +10 -0
- data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +2 -2
- data/assets/stylesheets/bootstrap/helpers/_position.scss +7 -1
- data/assets/stylesheets/bootstrap/helpers/_ratio.scss +2 -2
- data/assets/stylesheets/bootstrap/helpers/_vr.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_alert.scss +7 -3
- data/assets/stylesheets/bootstrap/mixins/_banner.scss +9 -0
- data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +8 -8
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +32 -95
- data/assets/stylesheets/bootstrap/mixins/_container.scss +4 -2
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +8 -0
- data/assets/stylesheets/bootstrap/mixins/_gradients.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +13 -12
- data/assets/stylesheets/bootstrap/mixins/_pagination.scss +4 -25
- data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +12 -9
- data/assets/stylesheets/bootstrap/mixins/_utilities.scss +12 -4
- data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +1 -1
- data/bootstrap.gemspec +1 -1
- data/lib/bootstrap/version.rb +2 -2
- data/tasks/updater/js.rb +9 -4
- metadata +16 -4
|
@@ -1,199 +1,34 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Bootstrap collapse.js v5.
|
|
3
|
-
* Copyright 2011-
|
|
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('./
|
|
8
|
-
typeof define === 'function' && define.amd ? define(['./
|
|
9
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Collapse = factory(global.
|
|
10
|
-
}(this, (function (
|
|
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
|
-
|
|
12
|
+
const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e };
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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.
|
|
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
|
|
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
|
|
64
|
+
const toggleList = SelectorEngine__default.default.find(SELECTOR_DATA_TOGGLE);
|
|
224
65
|
|
|
225
|
-
for (
|
|
226
|
-
const
|
|
227
|
-
const
|
|
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
|
|
272
|
-
let activesData;
|
|
113
|
+
let activeChildren = []; // find active children
|
|
273
114
|
|
|
274
115
|
if (this._config.parent) {
|
|
275
|
-
|
|
276
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
297
|
-
|
|
298
|
-
|
|
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
|
|
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
|
|
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
|
|
186
|
+
for (const trigger of this._triggerArray) {
|
|
187
|
+
const element = index.getElementFromSelector(trigger);
|
|
360
188
|
|
|
361
|
-
|
|
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
|
|
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
|
-
|
|
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 =
|
|
414
|
-
|
|
415
|
-
|
|
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
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
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
|
-
|
|
442
|
-
const _config = {};
|
|
262
|
+
const _config = {};
|
|
443
263
|
|
|
444
|
-
|
|
445
|
-
|
|
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
|
|
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
|
|
476
|
-
|
|
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.
|
|
3
|
-
* Copyright 2011-
|
|
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.
|
|
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
|
-
|
|
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
|
+
}));
|