bootstrap 4.6.2.1 → 5.3.5
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/.github/workflows/ci.yml +61 -0
- data/CHANGELOG.md +7 -2
- data/Gemfile +1 -0
- data/README.md +33 -15
- data/Rakefile +1 -2
- data/assets/javascripts/bootstrap/alert.js +50 -147
- data/assets/javascripts/bootstrap/base-component.js +83 -0
- data/assets/javascripts/bootstrap/button.js +40 -190
- data/assets/javascripts/bootstrap/carousel.js +282 -537
- data/assets/javascripts/bootstrap/collapse.js +166 -314
- data/assets/javascripts/bootstrap/dom/data.js +62 -0
- data/assets/javascripts/bootstrap/dom/event-handler.js +236 -0
- data/assets/javascripts/bootstrap/dom/manipulator.js +71 -0
- data/assets/javascripts/bootstrap/dom/selector-engine.js +103 -0
- data/assets/javascripts/bootstrap/dropdown.js +297 -455
- data/assets/javascripts/bootstrap/modal.js +223 -566
- data/assets/javascripts/bootstrap/offcanvas.js +245 -0
- data/assets/javascripts/bootstrap/popover.js +59 -208
- data/assets/javascripts/bootstrap/scrollspy.js +213 -276
- data/assets/javascripts/bootstrap/tab.js +222 -200
- data/assets/javascripts/bootstrap/toast.js +137 -206
- data/assets/javascripts/bootstrap/tooltip.js +403 -747
- data/assets/javascripts/bootstrap/util/backdrop.js +138 -0
- data/assets/javascripts/bootstrap/util/component-functions.js +41 -0
- data/assets/javascripts/bootstrap/util/config.js +67 -0
- data/assets/javascripts/bootstrap/util/focustrap.js +112 -0
- data/assets/javascripts/bootstrap/util/index.js +280 -0
- data/assets/javascripts/bootstrap/util/sanitizer.js +113 -0
- data/assets/javascripts/bootstrap/util/scrollbar.js +112 -0
- data/assets/javascripts/bootstrap/util/swipe.js +134 -0
- data/assets/javascripts/bootstrap/util/template-factory.js +150 -0
- data/assets/javascripts/bootstrap-global-this-define.js +6 -0
- data/assets/javascripts/bootstrap-global-this-undefine.js +2 -0
- data/assets/javascripts/bootstrap-sprockets.js +21 -5
- data/assets/javascripts/bootstrap.js +3625 -3488
- data/assets/javascripts/bootstrap.min.js +3 -3
- data/assets/stylesheets/_bootstrap-grid.scss +53 -21
- data/assets/stylesheets/_bootstrap-reboot.scss +5 -7
- data/assets/stylesheets/_bootstrap-utilities.scss +19 -0
- data/assets/stylesheets/_bootstrap.scss +21 -13
- data/assets/stylesheets/bootstrap/_accordion.scss +153 -0
- data/assets/stylesheets/bootstrap/_alert.scss +32 -16
- data/assets/stylesheets/bootstrap/_badge.scss +15 -31
- data/assets/stylesheets/bootstrap/_breadcrumb.scss +22 -24
- data/assets/stylesheets/bootstrap/_button-group.scss +32 -48
- data/assets/stylesheets/bootstrap/_buttons.scss +145 -71
- data/assets/stylesheets/bootstrap/_card.scss +67 -115
- data/assets/stylesheets/bootstrap/_carousel.scss +63 -37
- data/assets/stylesheets/bootstrap/_close.scss +53 -27
- data/assets/stylesheets/bootstrap/_containers.scss +41 -0
- data/assets/stylesheets/bootstrap/_dropdown.scss +129 -71
- data/assets/stylesheets/bootstrap/_forms.scss +9 -347
- data/assets/stylesheets/bootstrap/_functions.scss +135 -23
- data/assets/stylesheets/bootstrap/_grid.scss +18 -52
- data/assets/stylesheets/bootstrap/_helpers.scss +12 -0
- data/assets/stylesheets/bootstrap/_list-group.scss +93 -48
- data/assets/stylesheets/bootstrap/_maps.scss +174 -0
- data/assets/stylesheets/bootstrap/_mixins.scss +10 -15
- data/assets/stylesheets/bootstrap/_modal.scss +112 -112
- data/assets/stylesheets/bootstrap/_nav.scss +100 -28
- data/assets/stylesheets/bootstrap/_navbar.scss +130 -173
- data/assets/stylesheets/bootstrap/_offcanvas.scss +147 -0
- data/assets/stylesheets/bootstrap/_pagination.scss +72 -37
- data/assets/stylesheets/bootstrap/_placeholders.scss +51 -0
- data/assets/stylesheets/bootstrap/_popover.scss +99 -73
- data/assets/stylesheets/bootstrap/_progress.scss +35 -14
- data/assets/stylesheets/bootstrap/_reboot.scss +319 -192
- data/assets/stylesheets/bootstrap/_root.scss +177 -9
- data/assets/stylesheets/bootstrap/_spinners.scss +43 -23
- data/assets/stylesheets/bootstrap/_tables.scss +101 -115
- data/assets/stylesheets/bootstrap/_toasts.scss +54 -27
- data/assets/stylesheets/bootstrap/_tooltip.scss +67 -63
- data/assets/stylesheets/bootstrap/_transitions.scss +3 -2
- data/assets/stylesheets/bootstrap/_type.scss +40 -59
- data/assets/stylesheets/bootstrap/_utilities.scss +806 -18
- data/assets/stylesheets/bootstrap/_variables-dark.scss +102 -0
- data/assets/stylesheets/bootstrap/_variables.scss +1210 -606
- data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +97 -0
- data/assets/stylesheets/bootstrap/forms/_form-check.scss +189 -0
- data/assets/stylesheets/bootstrap/forms/_form-control.scss +214 -0
- data/assets/stylesheets/bootstrap/forms/_form-range.scss +91 -0
- data/assets/stylesheets/bootstrap/forms/_form-select.scss +80 -0
- data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
- data/assets/stylesheets/bootstrap/forms/_input-group.scss +132 -0
- data/assets/stylesheets/bootstrap/forms/_labels.scss +36 -0
- data/assets/stylesheets/bootstrap/forms/_validation.scss +12 -0
- data/assets/stylesheets/bootstrap/helpers/_color-bg.scss +7 -0
- data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +30 -0
- data/assets/stylesheets/bootstrap/helpers/_focus-ring.scss +5 -0
- data/assets/stylesheets/bootstrap/helpers/_icon-link.scss +25 -0
- data/assets/stylesheets/bootstrap/helpers/_position.scss +36 -0
- data/assets/stylesheets/bootstrap/helpers/_ratio.scss +26 -0
- data/assets/stylesheets/bootstrap/helpers/_stacks.scss +15 -0
- data/assets/stylesheets/bootstrap/helpers/_stretched-link.scss +15 -0
- data/assets/stylesheets/bootstrap/helpers/_text-truncation.scss +7 -0
- data/assets/stylesheets/bootstrap/helpers/_visually-hidden.scss +8 -0
- data/assets/stylesheets/bootstrap/helpers/_vr.scss +8 -0
- data/assets/stylesheets/bootstrap/mixins/_alert.scss +11 -6
- data/assets/stylesheets/bootstrap/mixins/_backdrop.scss +14 -0
- data/assets/stylesheets/bootstrap/mixins/_banner.scss +7 -0
- data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +10 -8
- data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +7 -9
- data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +20 -16
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +60 -100
- data/assets/stylesheets/bootstrap/mixins/_caret.scss +34 -27
- data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
- data/assets/stylesheets/bootstrap/mixins/_color-mode.scss +21 -0
- data/assets/stylesheets/bootstrap/mixins/_color-scheme.scss +7 -0
- data/assets/stylesheets/bootstrap/mixins/_container.scss +11 -0
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +64 -96
- data/assets/stylesheets/bootstrap/mixins/_gradients.scss +13 -11
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +118 -36
- data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -21
- data/assets/stylesheets/bootstrap/mixins/_list-group.scss +7 -2
- data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_pagination.scss +7 -19
- data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +2 -2
- data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +24 -0
- data/assets/stylesheets/bootstrap/mixins/_transition.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_utilities.scss +97 -0
- data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +33 -0
- data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
- data/assets/stylesheets/bootstrap/vendor/_rfs.scss +211 -91
- data/bootstrap.gemspec +6 -6
- data/lib/bootstrap/engine.rb +0 -1
- data/lib/bootstrap/version.rb +2 -2
- data/tasks/updater/js.rb +17 -5
- data/tasks/updater/network.rb +2 -2
- data/tasks/updater/scss.rb +2 -2
- data/tasks/updater.rb +2 -2
- data/test/dummy_rails/app/assets/javascripts/application.js +4 -3
- data/test/dummy_rails/app/views/layouts/application.html.erb +3 -1
- data/test/dummy_rails/app/views/pages/root.html +89 -0
- data/test/dummy_rails/config/application.rb +0 -5
- data/test/dummy_rails/public/favicon.ico +0 -0
- data/test/gemfiles/rails_4_2.gemfile +2 -1
- data/test/gemfiles/rails_5_0.gemfile +1 -2
- data/test/gemfiles/rails_5_1.gemfile +1 -2
- data/test/gemfiles/rails_5_2.gemfile +7 -0
- data/test/gemfiles/rails_6_0.gemfile +1 -1
- data/test/gemfiles/rails_6_1.gemfile +7 -0
- data/test/gemfiles/rails_7_0_dartsass.gemfile +0 -1
- data/test/gemfiles/rails_7_0_sassc.gemfile +0 -1
- data/test/rails_test.rb +0 -5
- data/test/test_helper.rb +3 -2
- metadata +92 -86
- data/.travis.yml +0 -31
- data/assets/javascripts/bootstrap/util.js +0 -189
- data/assets/stylesheets/bootstrap/_code.scss +0 -48
- data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -526
- data/assets/stylesheets/bootstrap/_input-group.scss +0 -211
- data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
- data/assets/stylesheets/bootstrap/_media.scss +0 -8
- data/assets/stylesheets/bootstrap/_print.scss +0 -132
- data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -23
- data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
- data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
- data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -80
- data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
- data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -11
- data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +0 -34
- data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
- data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
- data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -17
- data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
- data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
- data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
- data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
- data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
- data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
- data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
- data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
- data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
- data/assets/stylesheets/bootstrap/utilities/_interactions.scss +0 -5
- data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
- data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
- data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
- data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
- data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
- data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
- data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
- data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -72
- data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
- data/test/dummy_rails/app/views/pages/root.html.slim +0 -58
- /data/assets/stylesheets/bootstrap/{utilities → helpers}/_clearfix.scss +0 -0
@@ -1,395 +1,247 @@
|
|
1
1
|
/*!
|
2
|
-
* Bootstrap collapse.js
|
3
|
-
* Copyright 2011-
|
2
|
+
* Bootstrap collapse.js v5.3.5 (https://getbootstrap.com/)
|
3
|
+
* Copyright 2011-2025 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('./base-component.js'), require('./dom/event-handler.js'), require('./dom/selector-engine.js'), require('./util/index.js')) :
|
8
|
+
typeof define === 'function' && define.amd ? define(['./base-component', './dom/event-handler', './dom/selector-engine', './util/index'], factory) :
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Collapse = factory(global.BaseComponent, global.EventHandler, global.SelectorEngine, global.Index));
|
10
|
+
})(this, (function (BaseComponent, EventHandler, SelectorEngine, index_js) { 'use strict';
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
for (var i = 0; i < props.length; i++) {
|
19
|
-
var descriptor = props[i];
|
20
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
21
|
-
descriptor.configurable = true;
|
22
|
-
if ("value" in descriptor) descriptor.writable = true;
|
23
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
24
|
-
}
|
25
|
-
}
|
26
|
-
|
27
|
-
function _createClass(Constructor, protoProps, staticProps) {
|
28
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
29
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
30
|
-
Object.defineProperty(Constructor, "prototype", {
|
31
|
-
writable: false
|
32
|
-
});
|
33
|
-
return Constructor;
|
34
|
-
}
|
35
|
-
|
36
|
-
function _extends() {
|
37
|
-
_extends = Object.assign ? Object.assign.bind() : 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
|
-
}
|
12
|
+
/**
|
13
|
+
* --------------------------------------------------------------------------
|
14
|
+
* Bootstrap collapse.js
|
15
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
16
|
+
* --------------------------------------------------------------------------
|
17
|
+
*/
|
47
18
|
|
48
|
-
return target;
|
49
|
-
};
|
50
|
-
return _extends.apply(this, arguments);
|
51
|
-
}
|
52
19
|
|
53
20
|
/**
|
54
21
|
* Constants
|
55
22
|
*/
|
56
23
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
24
|
+
const NAME = 'collapse';
|
25
|
+
const DATA_KEY = 'bs.collapse';
|
26
|
+
const EVENT_KEY = `.${DATA_KEY}`;
|
27
|
+
const DATA_API_KEY = '.data-api';
|
28
|
+
const EVENT_SHOW = `show${EVENT_KEY}`;
|
29
|
+
const EVENT_SHOWN = `shown${EVENT_KEY}`;
|
30
|
+
const EVENT_HIDE = `hide${EVENT_KEY}`;
|
31
|
+
const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
|
32
|
+
const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
|
33
|
+
const CLASS_NAME_SHOW = 'show';
|
34
|
+
const CLASS_NAME_COLLAPSE = 'collapse';
|
35
|
+
const CLASS_NAME_COLLAPSING = 'collapsing';
|
36
|
+
const CLASS_NAME_COLLAPSED = 'collapsed';
|
37
|
+
const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;
|
38
|
+
const CLASS_NAME_HORIZONTAL = 'collapse-horizontal';
|
39
|
+
const WIDTH = 'width';
|
40
|
+
const HEIGHT = 'height';
|
41
|
+
const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';
|
42
|
+
const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="collapse"]';
|
43
|
+
const Default = {
|
44
|
+
parent: null,
|
45
|
+
toggle: true
|
79
46
|
};
|
80
|
-
|
81
|
-
|
82
|
-
|
47
|
+
const DefaultType = {
|
48
|
+
parent: '(null|element)',
|
49
|
+
toggle: 'boolean'
|
83
50
|
};
|
51
|
+
|
84
52
|
/**
|
85
53
|
* Class definition
|
86
54
|
*/
|
87
55
|
|
88
|
-
|
89
|
-
|
56
|
+
class Collapse extends BaseComponent {
|
57
|
+
constructor(element, config) {
|
58
|
+
super(element, config);
|
90
59
|
this._isTransitioning = false;
|
91
|
-
this.
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
var elem = toggleList[i];
|
98
|
-
var selector = Util__default["default"].getSelectorFromElement(elem);
|
99
|
-
var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {
|
100
|
-
return foundElem === element;
|
101
|
-
});
|
102
|
-
|
103
|
-
if (selector !== null && filterElement.length > 0) {
|
104
|
-
this._selector = selector;
|
105
|
-
|
60
|
+
this._triggerArray = [];
|
61
|
+
const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE);
|
62
|
+
for (const elem of toggleList) {
|
63
|
+
const selector = SelectorEngine.getSelectorFromElement(elem);
|
64
|
+
const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element);
|
65
|
+
if (selector !== null && filterElement.length) {
|
106
66
|
this._triggerArray.push(elem);
|
107
67
|
}
|
108
68
|
}
|
109
|
-
|
110
|
-
this._parent = this._config.parent ? this._getParent() : null;
|
111
|
-
|
69
|
+
this._initializeChildren();
|
112
70
|
if (!this._config.parent) {
|
113
|
-
this._addAriaAndCollapsedClass(this.
|
71
|
+
this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());
|
114
72
|
}
|
115
|
-
|
116
73
|
if (this._config.toggle) {
|
117
74
|
this.toggle();
|
118
75
|
}
|
119
|
-
}
|
120
|
-
|
76
|
+
}
|
121
77
|
|
122
|
-
|
78
|
+
// Getters
|
79
|
+
static get Default() {
|
80
|
+
return Default;
|
81
|
+
}
|
82
|
+
static get DefaultType() {
|
83
|
+
return DefaultType;
|
84
|
+
}
|
85
|
+
static get NAME() {
|
86
|
+
return NAME;
|
87
|
+
}
|
123
88
|
|
124
89
|
// Public
|
125
|
-
|
126
|
-
if (
|
90
|
+
toggle() {
|
91
|
+
if (this._isShown()) {
|
127
92
|
this.hide();
|
128
93
|
} else {
|
129
94
|
this.show();
|
130
95
|
}
|
131
|
-
}
|
132
|
-
|
133
|
-
|
134
|
-
var _this = this;
|
135
|
-
|
136
|
-
if (this._isTransitioning || $__default["default"](this._element).hasClass(CLASS_NAME_SHOW)) {
|
96
|
+
}
|
97
|
+
show() {
|
98
|
+
if (this._isTransitioning || this._isShown()) {
|
137
99
|
return;
|
138
100
|
}
|
101
|
+
let activeChildren = [];
|
139
102
|
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
if (typeof _this._config.parent === 'string') {
|
146
|
-
return elem.getAttribute('data-parent') === _this._config.parent;
|
147
|
-
}
|
148
|
-
|
149
|
-
return elem.classList.contains(CLASS_NAME_COLLAPSE);
|
150
|
-
});
|
151
|
-
|
152
|
-
if (actives.length === 0) {
|
153
|
-
actives = null;
|
154
|
-
}
|
103
|
+
// find active children
|
104
|
+
if (this._config.parent) {
|
105
|
+
activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, {
|
106
|
+
toggle: false
|
107
|
+
}));
|
155
108
|
}
|
156
|
-
|
157
|
-
|
158
|
-
activesData = $__default["default"](actives).not(this._selector).data(DATA_KEY);
|
159
|
-
|
160
|
-
if (activesData && activesData._isTransitioning) {
|
161
|
-
return;
|
162
|
-
}
|
109
|
+
if (activeChildren.length && activeChildren[0]._isTransitioning) {
|
110
|
+
return;
|
163
111
|
}
|
164
|
-
|
165
|
-
|
166
|
-
$__default["default"](this._element).trigger(startEvent);
|
167
|
-
|
168
|
-
if (startEvent.isDefaultPrevented()) {
|
112
|
+
const startEvent = EventHandler.trigger(this._element, EVENT_SHOW);
|
113
|
+
if (startEvent.defaultPrevented) {
|
169
114
|
return;
|
170
115
|
}
|
171
|
-
|
172
|
-
|
173
|
-
Collapse._jQueryInterface.call($__default["default"](actives).not(this._selector), 'hide');
|
174
|
-
|
175
|
-
if (!activesData) {
|
176
|
-
$__default["default"](actives).data(DATA_KEY, null);
|
177
|
-
}
|
116
|
+
for (const activeInstance of activeChildren) {
|
117
|
+
activeInstance.hide();
|
178
118
|
}
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
$__default["default"](this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING);
|
119
|
+
const dimension = this._getDimension();
|
120
|
+
this._element.classList.remove(CLASS_NAME_COLLAPSE);
|
121
|
+
this._element.classList.add(CLASS_NAME_COLLAPSING);
|
183
122
|
this._element.style[dimension] = 0;
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
$__default["default"](_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW);
|
193
|
-
_this._element.style[dimension] = '';
|
194
|
-
|
195
|
-
_this.setTransitioning(false);
|
196
|
-
|
197
|
-
$__default["default"](_this._element).trigger(EVENT_SHOWN);
|
123
|
+
this._addAriaAndCollapsedClass(this._triggerArray, true);
|
124
|
+
this._isTransitioning = true;
|
125
|
+
const complete = () => {
|
126
|
+
this._isTransitioning = false;
|
127
|
+
this._element.classList.remove(CLASS_NAME_COLLAPSING);
|
128
|
+
this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
|
129
|
+
this._element.style[dimension] = '';
|
130
|
+
EventHandler.trigger(this._element, EVENT_SHOWN);
|
198
131
|
};
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
_proto.hide = function hide() {
|
208
|
-
var _this2 = this;
|
209
|
-
|
210
|
-
if (this._isTransitioning || !$__default["default"](this._element).hasClass(CLASS_NAME_SHOW)) {
|
132
|
+
const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
|
133
|
+
const scrollSize = `scroll${capitalizedDimension}`;
|
134
|
+
this._queueCallback(complete, this._element, true);
|
135
|
+
this._element.style[dimension] = `${this._element[scrollSize]}px`;
|
136
|
+
}
|
137
|
+
hide() {
|
138
|
+
if (this._isTransitioning || !this._isShown()) {
|
211
139
|
return;
|
212
140
|
}
|
213
|
-
|
214
|
-
|
215
|
-
$__default["default"](this._element).trigger(startEvent);
|
216
|
-
|
217
|
-
if (startEvent.isDefaultPrevented()) {
|
141
|
+
const startEvent = EventHandler.trigger(this._element, EVENT_HIDE);
|
142
|
+
if (startEvent.defaultPrevented) {
|
218
143
|
return;
|
219
144
|
}
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
this._element.
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
for (var i = 0; i < triggerArrayLength; i++) {
|
230
|
-
var trigger = this._triggerArray[i];
|
231
|
-
var selector = Util__default["default"].getSelectorFromElement(trigger);
|
232
|
-
|
233
|
-
if (selector !== null) {
|
234
|
-
var $elem = $__default["default"]([].slice.call(document.querySelectorAll(selector)));
|
235
|
-
|
236
|
-
if (!$elem.hasClass(CLASS_NAME_SHOW)) {
|
237
|
-
$__default["default"](trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false);
|
238
|
-
}
|
239
|
-
}
|
145
|
+
const dimension = this._getDimension();
|
146
|
+
this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;
|
147
|
+
index_js.reflow(this._element);
|
148
|
+
this._element.classList.add(CLASS_NAME_COLLAPSING);
|
149
|
+
this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
|
150
|
+
for (const trigger of this._triggerArray) {
|
151
|
+
const element = SelectorEngine.getElementFromSelector(trigger);
|
152
|
+
if (element && !this._isShown(element)) {
|
153
|
+
this._addAriaAndCollapsedClass([trigger], false);
|
240
154
|
}
|
241
155
|
}
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
$__default["default"](_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN);
|
156
|
+
this._isTransitioning = true;
|
157
|
+
const complete = () => {
|
158
|
+
this._isTransitioning = false;
|
159
|
+
this._element.classList.remove(CLASS_NAME_COLLAPSING);
|
160
|
+
this._element.classList.add(CLASS_NAME_COLLAPSE);
|
161
|
+
EventHandler.trigger(this._element, EVENT_HIDDEN);
|
249
162
|
};
|
250
|
-
|
251
163
|
this._element.style[dimension] = '';
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
this._isTransitioning = isTransitioning;
|
258
|
-
};
|
259
|
-
|
260
|
-
_proto.dispose = function dispose() {
|
261
|
-
$__default["default"].removeData(this._element, DATA_KEY);
|
262
|
-
this._config = null;
|
263
|
-
this._parent = null;
|
264
|
-
this._element = null;
|
265
|
-
this._triggerArray = null;
|
266
|
-
this._isTransitioning = null;
|
267
|
-
} // Private
|
268
|
-
;
|
164
|
+
this._queueCallback(complete, this._element, true);
|
165
|
+
}
|
166
|
+
_isShown(element = this._element) {
|
167
|
+
return element.classList.contains(CLASS_NAME_SHOW);
|
168
|
+
}
|
269
169
|
|
270
|
-
|
271
|
-
|
170
|
+
// Private
|
171
|
+
_configAfterMerge(config) {
|
272
172
|
config.toggle = Boolean(config.toggle); // Coerce string values
|
273
|
-
|
274
|
-
Util__default["default"].typeCheckConfig(NAME, config, DefaultType);
|
173
|
+
config.parent = index_js.getElement(config.parent);
|
275
174
|
return config;
|
276
|
-
}
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
parent = this._config.parent; // It's a jQuery object
|
290
|
-
|
291
|
-
if (typeof this._config.parent.jquery !== 'undefined') {
|
292
|
-
parent = this._config.parent[0];
|
175
|
+
}
|
176
|
+
_getDimension() {
|
177
|
+
return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;
|
178
|
+
}
|
179
|
+
_initializeChildren() {
|
180
|
+
if (!this._config.parent) {
|
181
|
+
return;
|
182
|
+
}
|
183
|
+
const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE);
|
184
|
+
for (const element of children) {
|
185
|
+
const selected = SelectorEngine.getElementFromSelector(element);
|
186
|
+
if (selected) {
|
187
|
+
this._addAriaAndCollapsedClass([element], this._isShown(selected));
|
293
188
|
}
|
294
|
-
} else {
|
295
|
-
parent = document.querySelector(this._config.parent);
|
296
189
|
}
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
_proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
|
307
|
-
var isOpen = $__default["default"](element).hasClass(CLASS_NAME_SHOW);
|
308
|
-
|
309
|
-
if (triggerArray.length) {
|
310
|
-
$__default["default"](triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
|
190
|
+
}
|
191
|
+
_getFirstLevelChildren(selector) {
|
192
|
+
const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);
|
193
|
+
// remove children if greater depth
|
194
|
+
return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element));
|
195
|
+
}
|
196
|
+
_addAriaAndCollapsedClass(triggerArray, isOpen) {
|
197
|
+
if (!triggerArray.length) {
|
198
|
+
return;
|
311
199
|
}
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
return selector ? document.querySelector(selector) : null;
|
318
|
-
};
|
200
|
+
for (const element of triggerArray) {
|
201
|
+
element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);
|
202
|
+
element.setAttribute('aria-expanded', isOpen);
|
203
|
+
}
|
204
|
+
}
|
319
205
|
|
320
|
-
|
206
|
+
// Static
|
207
|
+
static jQueryInterface(config) {
|
208
|
+
const _config = {};
|
209
|
+
if (typeof config === 'string' && /show|hide/.test(config)) {
|
210
|
+
_config.toggle = false;
|
211
|
+
}
|
321
212
|
return this.each(function () {
|
322
|
-
|
323
|
-
var data = $element.data(DATA_KEY);
|
324
|
-
|
325
|
-
var _config = _extends({}, Default, $element.data(), typeof config === 'object' && config ? config : {});
|
326
|
-
|
327
|
-
if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {
|
328
|
-
_config.toggle = false;
|
329
|
-
}
|
330
|
-
|
331
|
-
if (!data) {
|
332
|
-
data = new Collapse(this, _config);
|
333
|
-
$element.data(DATA_KEY, data);
|
334
|
-
}
|
335
|
-
|
213
|
+
const data = Collapse.getOrCreateInstance(this, _config);
|
336
214
|
if (typeof config === 'string') {
|
337
215
|
if (typeof data[config] === 'undefined') {
|
338
|
-
throw new TypeError(
|
216
|
+
throw new TypeError(`No method named "${config}"`);
|
339
217
|
}
|
340
|
-
|
341
218
|
data[config]();
|
342
219
|
}
|
343
220
|
});
|
344
|
-
}
|
345
|
-
|
346
|
-
_createClass(Collapse, null, [{
|
347
|
-
key: "VERSION",
|
348
|
-
get: function get() {
|
349
|
-
return VERSION;
|
350
|
-
}
|
351
|
-
}, {
|
352
|
-
key: "Default",
|
353
|
-
get: function get() {
|
354
|
-
return Default;
|
355
|
-
}
|
356
|
-
}]);
|
221
|
+
}
|
222
|
+
}
|
357
223
|
|
358
|
-
return Collapse;
|
359
|
-
}();
|
360
224
|
/**
|
361
225
|
* Data API implementation
|
362
226
|
*/
|
363
227
|
|
364
|
-
|
365
|
-
$__default["default"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
|
228
|
+
EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
|
366
229
|
// preventDefault only for <a> elements (which change the URL) not inside the collapsible element
|
367
|
-
if (event.
|
230
|
+
if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {
|
368
231
|
event.preventDefault();
|
369
232
|
}
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
var $target = $__default["default"](this);
|
376
|
-
var data = $target.data(DATA_KEY);
|
377
|
-
var config = data ? 'toggle' : $trigger.data();
|
378
|
-
|
379
|
-
Collapse._jQueryInterface.call($target, config);
|
380
|
-
});
|
233
|
+
for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {
|
234
|
+
Collapse.getOrCreateInstance(element, {
|
235
|
+
toggle: false
|
236
|
+
}).toggle();
|
237
|
+
}
|
381
238
|
});
|
239
|
+
|
382
240
|
/**
|
383
241
|
* jQuery
|
384
242
|
*/
|
385
243
|
|
386
|
-
|
387
|
-
$__default["default"].fn[NAME].Constructor = Collapse;
|
388
|
-
|
389
|
-
$__default["default"].fn[NAME].noConflict = function () {
|
390
|
-
$__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
|
391
|
-
return Collapse._jQueryInterface;
|
392
|
-
};
|
244
|
+
index_js.defineJQueryPlugin(Collapse);
|
393
245
|
|
394
246
|
return Collapse;
|
395
247
|
|
@@ -0,0 +1,62 @@
|
|
1
|
+
/*!
|
2
|
+
* Bootstrap data.js v5.3.5 (https://getbootstrap.com/)
|
3
|
+
* Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
4
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
5
|
+
*/
|
6
|
+
(function (global, factory) {
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
8
|
+
typeof define === 'function' && define.amd ? define(factory) :
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Data = factory());
|
10
|
+
})(this, (function () { 'use strict';
|
11
|
+
|
12
|
+
/**
|
13
|
+
* --------------------------------------------------------------------------
|
14
|
+
* Bootstrap dom/data.js
|
15
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
16
|
+
* --------------------------------------------------------------------------
|
17
|
+
*/
|
18
|
+
|
19
|
+
/**
|
20
|
+
* Constants
|
21
|
+
*/
|
22
|
+
|
23
|
+
const elementMap = new Map();
|
24
|
+
const data = {
|
25
|
+
set(element, key, instance) {
|
26
|
+
if (!elementMap.has(element)) {
|
27
|
+
elementMap.set(element, new Map());
|
28
|
+
}
|
29
|
+
const instanceMap = elementMap.get(element);
|
30
|
+
|
31
|
+
// make it clear we only want one instance per element
|
32
|
+
// can be removed later when multiple key/instances are fine to be used
|
33
|
+
if (!instanceMap.has(key) && instanceMap.size !== 0) {
|
34
|
+
// eslint-disable-next-line no-console
|
35
|
+
console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);
|
36
|
+
return;
|
37
|
+
}
|
38
|
+
instanceMap.set(key, instance);
|
39
|
+
},
|
40
|
+
get(element, key) {
|
41
|
+
if (elementMap.has(element)) {
|
42
|
+
return elementMap.get(element).get(key) || null;
|
43
|
+
}
|
44
|
+
return null;
|
45
|
+
},
|
46
|
+
remove(element, key) {
|
47
|
+
if (!elementMap.has(element)) {
|
48
|
+
return;
|
49
|
+
}
|
50
|
+
const instanceMap = elementMap.get(element);
|
51
|
+
instanceMap.delete(key);
|
52
|
+
|
53
|
+
// free up element references if there are no instances left for an element
|
54
|
+
if (instanceMap.size === 0) {
|
55
|
+
elementMap.delete(element);
|
56
|
+
}
|
57
|
+
}
|
58
|
+
};
|
59
|
+
|
60
|
+
return data;
|
61
|
+
|
62
|
+
}));
|