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.
- checksums.yaml +4 -4
- data/README.md +3 -3
- data/assets/javascripts/bootstrap-sprockets.js +8 -7
- data/assets/javascripts/bootstrap.js +2525 -2460
- data/assets/javascripts/bootstrap.min.js +2 -2
- data/assets/javascripts/bootstrap/alert.js +77 -179
- data/assets/javascripts/bootstrap/base-component.js +140 -38
- data/assets/javascripts/bootstrap/button.js +54 -100
- data/assets/javascripts/bootstrap/carousel.js +335 -451
- data/assets/javascripts/bootstrap/collapse.js +195 -303
- data/assets/javascripts/bootstrap/dom/data.js +34 -47
- data/assets/javascripts/bootstrap/dom/event-handler.js +95 -90
- data/assets/javascripts/bootstrap/dom/manipulator.js +23 -21
- data/assets/javascripts/bootstrap/dom/selector-engine.js +20 -28
- data/assets/javascripts/bootstrap/dropdown.js +323 -358
- data/assets/javascripts/bootstrap/modal.js +537 -489
- data/assets/javascripts/bootstrap/offcanvas.js +720 -0
- data/assets/javascripts/bootstrap/popover.js +112 -180
- data/assets/javascripts/bootstrap/scrollspy.js +167 -235
- data/assets/javascripts/bootstrap/tab.js +121 -188
- data/assets/javascripts/bootstrap/toast.js +166 -243
- data/assets/javascripts/bootstrap/tooltip.js +333 -495
- data/assets/stylesheets/_bootstrap-grid.scss +1 -1
- data/assets/stylesheets/_bootstrap-reboot.scss +1 -1
- data/assets/stylesheets/_bootstrap.scss +2 -1
- data/assets/stylesheets/bootstrap/_accordion.scss +24 -32
- data/assets/stylesheets/bootstrap/_buttons.scss +2 -0
- data/assets/stylesheets/bootstrap/_card.scss +6 -6
- data/assets/stylesheets/bootstrap/_carousel.scss +2 -2
- data/assets/stylesheets/bootstrap/_dropdown.scss +14 -23
- data/assets/stylesheets/bootstrap/_functions.scss +61 -3
- data/assets/stylesheets/bootstrap/_images.scss +1 -1
- data/assets/stylesheets/bootstrap/_list-group.scss +16 -5
- data/assets/stylesheets/bootstrap/_mixins.scss +1 -0
- data/assets/stylesheets/bootstrap/_modal.scss +8 -24
- data/assets/stylesheets/bootstrap/_nav.scss +7 -0
- data/assets/stylesheets/bootstrap/_navbar.scss +2 -0
- data/assets/stylesheets/bootstrap/_offcanvas.scss +79 -0
- data/assets/stylesheets/bootstrap/_popover.scss +10 -10
- data/assets/stylesheets/bootstrap/_progress.scss +3 -0
- data/assets/stylesheets/bootstrap/_reboot.scss +7 -21
- data/assets/stylesheets/bootstrap/_spinners.scss +6 -2
- data/assets/stylesheets/bootstrap/_tables.scss +1 -0
- data/assets/stylesheets/bootstrap/_toasts.scss +1 -1
- data/assets/stylesheets/bootstrap/_tooltip.scss +4 -4
- data/assets/stylesheets/bootstrap/_transitions.scss +2 -0
- data/assets/stylesheets/bootstrap/_utilities.scss +65 -37
- data/assets/stylesheets/bootstrap/_variables.scss +162 -50
- data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +1 -1
- data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +3 -1
- data/assets/stylesheets/bootstrap/forms/_form-check.scss +1 -1
- data/assets/stylesheets/bootstrap/forms/_form-control.scss +0 -4
- data/assets/stylesheets/bootstrap/forms/_form-range.scss +1 -1
- data/assets/stylesheets/bootstrap/forms/_form-select.scss +3 -0
- data/assets/stylesheets/bootstrap/mixins/_alert.scss +2 -0
- data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +2 -0
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +7 -2
- data/assets/stylesheets/bootstrap/mixins/_caret.scss +2 -0
- data/assets/stylesheets/bootstrap/mixins/_color-scheme.scss +7 -0
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +25 -5
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +23 -11
- data/assets/stylesheets/bootstrap/mixins/_list-group.scss +2 -0
- data/assets/stylesheets/bootstrap/mixins/_pagination.scss +2 -0
- data/assets/stylesheets/bootstrap/vendor/_rfs.scss +55 -13
- data/bootstrap.gemspec +1 -1
- data/lib/bootstrap/version.rb +2 -2
- data/tasks/updater/js.rb +1 -1
- data/tasks/updater/network.rb +7 -1
- metadata +9 -6
@@ -1,94 +1,35 @@
|
|
1
1
|
/*!
|
2
|
-
* Bootstrap collapse.js v5.0.
|
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/
|
8
|
-
typeof define === 'function' && define.amd ? define(['./dom/
|
9
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Collapse = factory(global.
|
10
|
-
}(this, (function (Data, EventHandler, Manipulator,
|
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
|
-
|
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
|
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
|
-
|
88
|
-
|
28
|
+
const getSelector = element => {
|
29
|
+
let selector = element.getAttribute('data-bs-target');
|
89
30
|
|
90
31
|
if (!selector || selector === '#') {
|
91
|
-
|
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 =
|
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
|
-
|
112
|
-
|
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
|
-
|
122
|
-
|
62
|
+
const getElementFromSelector = element => {
|
63
|
+
const selector = getSelector(element);
|
123
64
|
return selector ? document.querySelector(selector) : null;
|
124
65
|
};
|
125
66
|
|
126
|
-
|
127
|
-
if (!
|
128
|
-
return
|
129
|
-
}
|
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
|
-
|
150
|
-
|
151
|
-
|
72
|
+
if (typeof obj.jquery !== 'undefined') {
|
73
|
+
obj = obj[0];
|
74
|
+
}
|
152
75
|
|
153
|
-
|
154
|
-
return (obj[0] || obj).nodeType;
|
76
|
+
return typeof obj.nodeType !== 'undefined';
|
155
77
|
};
|
156
78
|
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
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
|
-
|
163
|
-
|
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
|
-
|
168
|
-
setTimeout(function () {
|
169
|
-
if (!called) {
|
170
|
-
triggerTransitionEnd(element);
|
171
|
-
}
|
172
|
-
}, emulatedDuration);
|
89
|
+
return null;
|
173
90
|
};
|
174
91
|
|
175
|
-
|
176
|
-
Object.keys(configTypes).forEach(
|
177
|
-
|
178
|
-
|
179
|
-
|
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()
|
99
|
+
throw new TypeError(`${componentName.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`);
|
183
100
|
}
|
184
101
|
});
|
185
102
|
};
|
186
103
|
|
187
|
-
|
188
|
-
return element.offsetHeight;
|
189
|
-
};
|
104
|
+
const reflow = element => element.offsetHeight;
|
190
105
|
|
191
|
-
|
192
|
-
|
193
|
-
|
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
|
-
|
118
|
+
const DOMContentLoadedCallbacks = [];
|
119
|
+
|
120
|
+
const onDOMContentLoaded = callback => {
|
203
121
|
if (document.readyState === 'loading') {
|
204
|
-
document
|
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
|
-
|
211
|
-
|
212
|
-
|
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
|
-
|
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 =
|
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
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
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
|
-
|
174
|
+
const DefaultType = {
|
245
175
|
toggle: 'boolean',
|
246
176
|
parent: '(string|element)'
|
247
177
|
};
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
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
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
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
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
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
|
-
|
211
|
+
this._selector = selector;
|
288
212
|
|
289
|
-
|
213
|
+
this._triggerArray.push(elem);
|
290
214
|
}
|
291
215
|
}
|
292
216
|
|
293
|
-
|
217
|
+
this._parent = this._config.parent ? this._getParent() : null;
|
294
218
|
|
295
|
-
if (!
|
296
|
-
|
219
|
+
if (!this._config.parent) {
|
220
|
+
this._addAriaAndCollapsedClass(this._element, this._triggerArray);
|
297
221
|
}
|
298
222
|
|
299
|
-
if (
|
300
|
-
|
223
|
+
if (this._config.toggle) {
|
224
|
+
this.toggle();
|
301
225
|
}
|
302
|
-
|
303
|
-
return _this;
|
304
226
|
} // Getters
|
305
227
|
|
306
228
|
|
307
|
-
|
229
|
+
static get Default() {
|
230
|
+
return Default;
|
231
|
+
}
|
232
|
+
|
233
|
+
static get NAME() {
|
234
|
+
return NAME;
|
235
|
+
} // Public
|
236
|
+
|
308
237
|
|
309
|
-
|
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
|
-
|
326
|
-
|
251
|
+
let actives;
|
252
|
+
let activesData;
|
327
253
|
|
328
254
|
if (this._parent) {
|
329
|
-
actives = SelectorEngine__default['default'].find(SELECTOR_ACTIVES, this._parent).filter(
|
330
|
-
if (typeof
|
331
|
-
return elem.getAttribute('data-bs-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
|
-
|
268
|
+
const container = SelectorEngine__default['default'].findOne(this._selector);
|
343
269
|
|
344
270
|
if (actives) {
|
345
|
-
|
346
|
-
|
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
|
-
|
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(
|
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'].
|
292
|
+
Data__default['default'].set(elemActive, DATA_KEY, null);
|
369
293
|
}
|
370
294
|
});
|
371
295
|
}
|
372
296
|
|
373
|
-
|
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(
|
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
|
-
|
391
|
-
|
314
|
+
const complete = () => {
|
315
|
+
this._element.classList.remove(CLASS_NAME_COLLAPSING);
|
392
316
|
|
393
|
-
|
317
|
+
this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
|
394
318
|
|
395
|
-
|
396
|
-
|
397
|
-
|
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
|
-
|
403
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
343
|
+
const dimension = this._getDimension();
|
424
344
|
|
425
|
-
this._element.style[dimension] = this._element.getBoundingClientRect()[dimension]
|
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
|
-
|
352
|
+
const triggerArrayLength = this._triggerArray.length;
|
433
353
|
|
434
354
|
if (triggerArrayLength > 0) {
|
435
|
-
for (
|
436
|
-
|
437
|
-
|
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
|
-
|
449
|
-
|
368
|
+
const complete = () => {
|
369
|
+
this.setTransitioning(false);
|
450
370
|
|
451
|
-
|
371
|
+
this._element.classList.remove(CLASS_NAME_COLLAPSING);
|
452
372
|
|
453
|
-
|
373
|
+
this._element.classList.add(CLASS_NAME_COLLAPSE);
|
454
374
|
|
455
|
-
EventHandler__default['default'].trigger(
|
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
|
-
|
465
|
-
|
466
|
-
};
|
467
|
-
|
468
|
-
_proto.dispose = function dispose() {
|
469
|
-
_BaseComponent.prototype.dispose.call(this);
|
380
|
+
this._queueCallback(complete, this._element, true);
|
381
|
+
}
|
470
382
|
|
471
|
-
|
472
|
-
this.
|
473
|
-
this._triggerArray = null;
|
474
|
-
this._isTransitioning = null;
|
383
|
+
setTransitioning(isTransitioning) {
|
384
|
+
this._isTransitioning = isTransitioning;
|
475
385
|
} // Private
|
476
|
-
;
|
477
386
|
|
478
|
-
|
479
|
-
|
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
|
-
|
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
|
-
|
505
|
-
|
506
|
-
|
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
|
-
|
411
|
+
this._addAriaAndCollapsedClass(selected, [element]);
|
509
412
|
});
|
510
413
|
return parent;
|
511
|
-
}
|
414
|
+
}
|
512
415
|
|
513
|
-
|
416
|
+
_addAriaAndCollapsedClass(element, triggerArray) {
|
514
417
|
if (!element || !triggerArray.length) {
|
515
418
|
return;
|
516
419
|
}
|
517
420
|
|
518
|
-
|
519
|
-
triggerArray.forEach(
|
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
|
-
|
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(
|
451
|
+
throw new TypeError(`No method named "${config}"`);
|
547
452
|
}
|
548
453
|
|
549
454
|
data[config]();
|
550
455
|
}
|
551
|
-
}
|
456
|
+
}
|
552
457
|
|
553
|
-
|
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
|
-
|
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
|
-
|
587
|
-
|
588
|
-
|
589
|
-
selectorElements.forEach(
|
590
|
-
|
591
|
-
|
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(
|
507
|
+
defineJQueryPlugin(Collapse);
|
616
508
|
|
617
509
|
return Collapse;
|
618
510
|
|