bootstrap 4.3.1 → 5.3.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/.github/workflows/ci.yml +55 -0
- data/CHANGELOG.md +2 -14
- data/README.md +28 -5
- data/assets/javascripts/bootstrap/alert.js +54 -163
- data/assets/javascripts/bootstrap/base-component.js +83 -0
- data/assets/javascripts/bootstrap/button.js +44 -152
- data/assets/javascripts/bootstrap/carousel.js +289 -569
- data/assets/javascripts/bootstrap/collapse.js +170 -349
- 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 +303 -496
- data/assets/javascripts/bootstrap/modal.js +229 -559
- data/assets/javascripts/bootstrap/offcanvas.js +245 -0
- data/assets/javascripts/bootstrap/popover.js +61 -226
- data/assets/javascripts/bootstrap/scrollspy.js +217 -317
- data/assets/javascripts/bootstrap/tab.js +220 -212
- data/assets/javascripts/bootstrap/toast.js +145 -229
- data/assets/javascripts/bootstrap/tooltip.js +421 -782
- data/assets/javascripts/bootstrap/util/backdrop.js +139 -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 +113 -0
- data/assets/javascripts/bootstrap/util/index.js +281 -0
- data/assets/javascripts/bootstrap/util/sanitizer.js +110 -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 +23 -7
- data/assets/javascripts/bootstrap.js +3690 -3639
- data/assets/javascripts/bootstrap.min.js +4 -4
- data/assets/stylesheets/_bootstrap-grid.scss +53 -20
- data/assets/stylesheets/_bootstrap-reboot.scss +5 -7
- data/assets/stylesheets/_bootstrap.scss +21 -13
- data/assets/stylesheets/bootstrap/_accordion.scss +158 -0
- data/assets/stylesheets/bootstrap/_alert.scss +32 -15
- data/assets/stylesheets/bootstrap/_badge.scss +15 -31
- data/assets/stylesheets/bootstrap/_breadcrumb.scss +23 -24
- data/assets/stylesheets/bootstrap/_button-group.scss +27 -48
- data/assets/stylesheets/bootstrap/_buttons.scss +139 -69
- data/assets/stylesheets/bootstrap/_card.scss +91 -141
- data/assets/stylesheets/bootstrap/_carousel.scss +86 -39
- data/assets/stylesheets/bootstrap/_close.scss +51 -29
- data/assets/stylesheets/bootstrap/_containers.scss +41 -0
- data/assets/stylesheets/bootstrap/_dropdown.scss +131 -72
- data/assets/stylesheets/bootstrap/_forms.scss +9 -330
- data/assets/stylesheets/bootstrap/_functions.scss +244 -28
- data/assets/stylesheets/bootstrap/_grid.scss +18 -31
- data/assets/stylesheets/bootstrap/_helpers.scss +12 -0
- data/assets/stylesheets/bootstrap/_images.scss +3 -3
- data/assets/stylesheets/bootstrap/_list-group.scss +101 -53
- data/assets/stylesheets/bootstrap/_maps.scss +174 -0
- data/assets/stylesheets/bootstrap/_mixins.scss +13 -18
- data/assets/stylesheets/bootstrap/_modal.scss +120 -112
- data/assets/stylesheets/bootstrap/_nav.scss +113 -24
- data/assets/stylesheets/bootstrap/_navbar.scss +145 -150
- data/assets/stylesheets/bootstrap/_offcanvas.scss +146 -0
- data/assets/stylesheets/bootstrap/_pagination.scss +74 -38
- data/assets/stylesheets/bootstrap/_placeholders.scss +51 -0
- data/assets/stylesheets/bootstrap/_popover.scss +99 -74
- data/assets/stylesheets/bootstrap/_progress.scss +40 -15
- data/assets/stylesheets/bootstrap/_reboot.scss +342 -215
- data/assets/stylesheets/bootstrap/_root.scss +174 -9
- data/assets/stylesheets/bootstrap/_spinners.scss +52 -22
- data/assets/stylesheets/bootstrap/_tables.scss +101 -115
- data/assets/stylesheets/bootstrap/_toasts.scss +54 -25
- data/assets/stylesheets/bootstrap/_tooltip.scss +67 -63
- data/assets/stylesheets/bootstrap/_transitions.scss +8 -1
- data/assets/stylesheets/bootstrap/_type.scss +42 -61
- data/assets/stylesheets/bootstrap/_utilities.scss +806 -17
- data/assets/stylesheets/bootstrap/_variables-dark.scss +85 -0
- data/assets/stylesheets/bootstrap/_variables.scss +1235 -615
- data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +19 -0
- data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +94 -0
- data/assets/stylesheets/bootstrap/forms/_form-check.scss +188 -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 +8 -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 +37 -22
- 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 -97
- 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 +77 -116
- data/assets/stylesheets/bootstrap/mixins/_gradients.scss +13 -11
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +133 -33
- data/assets/stylesheets/bootstrap/mixins/_image.scss +0 -20
- data/assets/stylesheets/bootstrap/mixins/_list-group.scss +7 -2
- 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 +18 -8
- 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 +276 -132
- data/bootstrap.gemspec +4 -6
- data/lib/bootstrap/version.rb +2 -2
- data/tasks/updater/js.rb +31 -7
- data/tasks/updater/network.rb +10 -4
- data/tasks/updater/scss.rb +1 -1
- data/tasks/updater.rb +2 -2
- data/test/dummy_rails/app/assets/config/manifest.js +3 -0
- data/test/dummy_rails/app/assets/javascripts/application.js +4 -3
- data/test/dummy_rails/app/assets/stylesheets/.browserslistrc +1 -0
- 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 -3
- data/test/gemfiles/rails_5_2.gemfile +8 -0
- data/test/gemfiles/rails_6_0.gemfile +7 -0
- data/test/gemfiles/rails_6_1.gemfile +7 -0
- data/test/gemfiles/rails_7_0.gemfile +7 -0
- data/test/support/dummy_rails_integration.rb +3 -1
- data/test/test_helper.rb +18 -12
- metadata +86 -84
- data/.travis.yml +0 -17
- data/assets/javascripts/bootstrap/util.js +0 -171
- data/assets/stylesheets/bootstrap/_code.scss +0 -48
- data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -507
- data/assets/stylesheets/bootstrap/_input-group.scss +0 -193
- data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
- data/assets/stylesheets/bootstrap/_media.scss +0 -8
- data/assets/stylesheets/bootstrap/_print.scss +0 -141
- data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -21
- 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 -66
- data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
- data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -10
- data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +0 -33
- 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 -16
- 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/_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,426 +1,247 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Bootstrap collapse.js
|
|
3
|
-
* Copyright 2011-
|
|
4
|
-
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/
|
|
2
|
+
* Bootstrap collapse.js v5.3.0 (https://getbootstrap.com/)
|
|
3
|
+
* Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
|
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 = 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
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
19
|
-
descriptor.configurable = true;
|
|
20
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
21
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
function _createClass(Constructor, protoProps, staticProps) {
|
|
26
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
27
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
28
|
-
return Constructor;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
function _defineProperty(obj, key, value) {
|
|
32
|
-
if (key in obj) {
|
|
33
|
-
Object.defineProperty(obj, key, {
|
|
34
|
-
value: value,
|
|
35
|
-
enumerable: true,
|
|
36
|
-
configurable: true,
|
|
37
|
-
writable: true
|
|
38
|
-
});
|
|
39
|
-
} else {
|
|
40
|
-
obj[key] = value;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
return obj;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
function _objectSpread(target) {
|
|
47
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
48
|
-
var source = arguments[i] != null ? arguments[i] : {};
|
|
49
|
-
var ownKeys = Object.keys(source);
|
|
50
|
-
|
|
51
|
-
if (typeof Object.getOwnPropertySymbols === 'function') {
|
|
52
|
-
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
|
|
53
|
-
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
54
|
-
}));
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
ownKeys.forEach(function (key) {
|
|
58
|
-
_defineProperty(target, key, source[key]);
|
|
59
|
-
});
|
|
60
|
-
}
|
|
12
|
+
/**
|
|
13
|
+
* --------------------------------------------------------------------------
|
|
14
|
+
* Bootstrap collapse.js
|
|
15
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
16
|
+
* --------------------------------------------------------------------------
|
|
17
|
+
*/
|
|
61
18
|
|
|
62
|
-
return target;
|
|
63
|
-
}
|
|
64
19
|
|
|
65
20
|
/**
|
|
66
|
-
* ------------------------------------------------------------------------
|
|
67
21
|
* Constants
|
|
68
|
-
* ------------------------------------------------------------------------
|
|
69
22
|
*/
|
|
70
23
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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
|
|
80
46
|
};
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
47
|
+
const DefaultType = {
|
|
48
|
+
parent: '(null|element)',
|
|
49
|
+
toggle: 'boolean'
|
|
84
50
|
};
|
|
85
|
-
var Event = {
|
|
86
|
-
SHOW: "show" + EVENT_KEY,
|
|
87
|
-
SHOWN: "shown" + EVENT_KEY,
|
|
88
|
-
HIDE: "hide" + EVENT_KEY,
|
|
89
|
-
HIDDEN: "hidden" + EVENT_KEY,
|
|
90
|
-
CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
|
|
91
|
-
};
|
|
92
|
-
var ClassName = {
|
|
93
|
-
SHOW: 'show',
|
|
94
|
-
COLLAPSE: 'collapse',
|
|
95
|
-
COLLAPSING: 'collapsing',
|
|
96
|
-
COLLAPSED: 'collapsed'
|
|
97
|
-
};
|
|
98
|
-
var Dimension = {
|
|
99
|
-
WIDTH: 'width',
|
|
100
|
-
HEIGHT: 'height'
|
|
101
|
-
};
|
|
102
|
-
var Selector = {
|
|
103
|
-
ACTIVES: '.show, .collapsing',
|
|
104
|
-
DATA_TOGGLE: '[data-toggle="collapse"]'
|
|
105
|
-
/**
|
|
106
|
-
* ------------------------------------------------------------------------
|
|
107
|
-
* Class Definition
|
|
108
|
-
* ------------------------------------------------------------------------
|
|
109
|
-
*/
|
|
110
51
|
|
|
111
|
-
|
|
52
|
+
/**
|
|
53
|
+
* Class definition
|
|
54
|
+
*/
|
|
112
55
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
function Collapse(element, config) {
|
|
56
|
+
class Collapse extends BaseComponent {
|
|
57
|
+
constructor(element, config) {
|
|
58
|
+
super(element, config);
|
|
117
59
|
this._isTransitioning = false;
|
|
118
|
-
this.
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
var elem = toggleList[i];
|
|
125
|
-
var selector = Util.getSelectorFromElement(elem);
|
|
126
|
-
var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {
|
|
127
|
-
return foundElem === element;
|
|
128
|
-
});
|
|
129
|
-
|
|
130
|
-
if (selector !== null && filterElement.length > 0) {
|
|
131
|
-
this._selector = selector;
|
|
132
|
-
|
|
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) {
|
|
133
66
|
this._triggerArray.push(elem);
|
|
134
67
|
}
|
|
135
68
|
}
|
|
136
|
-
|
|
137
|
-
this._parent = this._config.parent ? this._getParent() : null;
|
|
138
|
-
|
|
69
|
+
this._initializeChildren();
|
|
139
70
|
if (!this._config.parent) {
|
|
140
|
-
this._addAriaAndCollapsedClass(this.
|
|
71
|
+
this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());
|
|
141
72
|
}
|
|
142
|
-
|
|
143
73
|
if (this._config.toggle) {
|
|
144
74
|
this.toggle();
|
|
145
75
|
}
|
|
146
|
-
}
|
|
147
|
-
|
|
76
|
+
}
|
|
148
77
|
|
|
149
|
-
|
|
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
|
+
}
|
|
150
88
|
|
|
151
89
|
// Public
|
|
152
|
-
|
|
153
|
-
if (
|
|
90
|
+
toggle() {
|
|
91
|
+
if (this._isShown()) {
|
|
154
92
|
this.hide();
|
|
155
93
|
} else {
|
|
156
94
|
this.show();
|
|
157
95
|
}
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
var _this = this;
|
|
162
|
-
|
|
163
|
-
if (this._isTransitioning || $(this._element).hasClass(ClassName.SHOW)) {
|
|
96
|
+
}
|
|
97
|
+
show() {
|
|
98
|
+
if (this._isTransitioning || this._isShown()) {
|
|
164
99
|
return;
|
|
165
100
|
}
|
|
101
|
+
let activeChildren = [];
|
|
166
102
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
if (typeof _this._config.parent === 'string') {
|
|
173
|
-
return elem.getAttribute('data-parent') === _this._config.parent;
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
return elem.classList.contains(ClassName.COLLAPSE);
|
|
177
|
-
});
|
|
178
|
-
|
|
179
|
-
if (actives.length === 0) {
|
|
180
|
-
actives = null;
|
|
181
|
-
}
|
|
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
|
+
}));
|
|
182
108
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
activesData = $(actives).not(this._selector).data(DATA_KEY);
|
|
186
|
-
|
|
187
|
-
if (activesData && activesData._isTransitioning) {
|
|
188
|
-
return;
|
|
189
|
-
}
|
|
109
|
+
if (activeChildren.length && activeChildren[0]._isTransitioning) {
|
|
110
|
+
return;
|
|
190
111
|
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
$(this._element).trigger(startEvent);
|
|
194
|
-
|
|
195
|
-
if (startEvent.isDefaultPrevented()) {
|
|
112
|
+
const startEvent = EventHandler.trigger(this._element, EVENT_SHOW);
|
|
113
|
+
if (startEvent.defaultPrevented) {
|
|
196
114
|
return;
|
|
197
115
|
}
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide');
|
|
201
|
-
|
|
202
|
-
if (!activesData) {
|
|
203
|
-
$(actives).data(DATA_KEY, null);
|
|
204
|
-
}
|
|
116
|
+
for (const activeInstance of activeChildren) {
|
|
117
|
+
activeInstance.hide();
|
|
205
118
|
}
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
$(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING);
|
|
119
|
+
const dimension = this._getDimension();
|
|
120
|
+
this._element.classList.remove(CLASS_NAME_COLLAPSE);
|
|
121
|
+
this._element.classList.add(CLASS_NAME_COLLAPSING);
|
|
210
122
|
this._element.style[dimension] = 0;
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
$(_this._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.SHOW);
|
|
220
|
-
_this._element.style[dimension] = '';
|
|
221
|
-
|
|
222
|
-
_this.setTransitioning(false);
|
|
223
|
-
|
|
224
|
-
$(_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);
|
|
225
131
|
};
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
_proto.hide = function hide() {
|
|
235
|
-
var _this2 = this;
|
|
236
|
-
|
|
237
|
-
if (this._isTransitioning || !$(this._element).hasClass(ClassName.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()) {
|
|
238
139
|
return;
|
|
239
140
|
}
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
$(this._element).trigger(startEvent);
|
|
243
|
-
|
|
244
|
-
if (startEvent.isDefaultPrevented()) {
|
|
141
|
+
const startEvent = EventHandler.trigger(this._element, EVENT_HIDE);
|
|
142
|
+
if (startEvent.defaultPrevented) {
|
|
245
143
|
return;
|
|
246
144
|
}
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
this._element.
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
for (var i = 0; i < triggerArrayLength; i++) {
|
|
257
|
-
var trigger = this._triggerArray[i];
|
|
258
|
-
var selector = Util.getSelectorFromElement(trigger);
|
|
259
|
-
|
|
260
|
-
if (selector !== null) {
|
|
261
|
-
var $elem = $([].slice.call(document.querySelectorAll(selector)));
|
|
262
|
-
|
|
263
|
-
if (!$elem.hasClass(ClassName.SHOW)) {
|
|
264
|
-
$(trigger).addClass(ClassName.COLLAPSED).attr('aria-expanded', false);
|
|
265
|
-
}
|
|
266
|
-
}
|
|
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);
|
|
267
154
|
}
|
|
268
155
|
}
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
$(_this2._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.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);
|
|
276
162
|
};
|
|
277
|
-
|
|
278
163
|
this._element.style[dimension] = '';
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
this._isTransitioning = isTransitioning;
|
|
285
|
-
};
|
|
286
|
-
|
|
287
|
-
_proto.dispose = function dispose() {
|
|
288
|
-
$.removeData(this._element, DATA_KEY);
|
|
289
|
-
this._config = null;
|
|
290
|
-
this._parent = null;
|
|
291
|
-
this._element = null;
|
|
292
|
-
this._triggerArray = null;
|
|
293
|
-
this._isTransitioning = null;
|
|
294
|
-
} // Private
|
|
295
|
-
;
|
|
164
|
+
this._queueCallback(complete, this._element, true);
|
|
165
|
+
}
|
|
166
|
+
_isShown(element = this._element) {
|
|
167
|
+
return element.classList.contains(CLASS_NAME_SHOW);
|
|
168
|
+
}
|
|
296
169
|
|
|
297
|
-
|
|
298
|
-
|
|
170
|
+
// Private
|
|
171
|
+
_configAfterMerge(config) {
|
|
299
172
|
config.toggle = Boolean(config.toggle); // Coerce string values
|
|
300
|
-
|
|
301
|
-
Util.typeCheckConfig(NAME, config, DefaultType);
|
|
173
|
+
config.parent = index_js.getElement(config.parent);
|
|
302
174
|
return config;
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
parent = this._config.parent; // It's a jQuery object
|
|
317
|
-
|
|
318
|
-
if (typeof this._config.parent.jquery !== 'undefined') {
|
|
319
|
-
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));
|
|
320
188
|
}
|
|
321
|
-
} else {
|
|
322
|
-
parent = document.querySelector(this._config.parent);
|
|
323
189
|
}
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
_proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
|
|
334
|
-
var isOpen = $(element).hasClass(ClassName.SHOW);
|
|
335
|
-
|
|
336
|
-
if (triggerArray.length) {
|
|
337
|
-
$(triggerArray).toggleClass(ClassName.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;
|
|
338
199
|
}
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
return selector ? document.querySelector(selector) : null;
|
|
345
|
-
};
|
|
200
|
+
for (const element of triggerArray) {
|
|
201
|
+
element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);
|
|
202
|
+
element.setAttribute('aria-expanded', isOpen);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
346
205
|
|
|
347
|
-
|
|
206
|
+
// Static
|
|
207
|
+
static jQueryInterface(config) {
|
|
208
|
+
const _config = {};
|
|
209
|
+
if (typeof config === 'string' && /show|hide/.test(config)) {
|
|
210
|
+
_config.toggle = false;
|
|
211
|
+
}
|
|
348
212
|
return this.each(function () {
|
|
349
|
-
|
|
350
|
-
var data = $this.data(DATA_KEY);
|
|
351
|
-
|
|
352
|
-
var _config = _objectSpread({}, Default, $this.data(), typeof config === 'object' && config ? config : {});
|
|
353
|
-
|
|
354
|
-
if (!data && _config.toggle && /show|hide/.test(config)) {
|
|
355
|
-
_config.toggle = false;
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
if (!data) {
|
|
359
|
-
data = new Collapse(this, _config);
|
|
360
|
-
$this.data(DATA_KEY, data);
|
|
361
|
-
}
|
|
362
|
-
|
|
213
|
+
const data = Collapse.getOrCreateInstance(this, _config);
|
|
363
214
|
if (typeof config === 'string') {
|
|
364
215
|
if (typeof data[config] === 'undefined') {
|
|
365
|
-
throw new TypeError(
|
|
216
|
+
throw new TypeError(`No method named "${config}"`);
|
|
366
217
|
}
|
|
367
|
-
|
|
368
218
|
data[config]();
|
|
369
219
|
}
|
|
370
220
|
});
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
_createClass(Collapse, null, [{
|
|
374
|
-
key: "VERSION",
|
|
375
|
-
get: function get() {
|
|
376
|
-
return VERSION;
|
|
377
|
-
}
|
|
378
|
-
}, {
|
|
379
|
-
key: "Default",
|
|
380
|
-
get: function get() {
|
|
381
|
-
return Default;
|
|
382
|
-
}
|
|
383
|
-
}]);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
384
223
|
|
|
385
|
-
return Collapse;
|
|
386
|
-
}();
|
|
387
224
|
/**
|
|
388
|
-
*
|
|
389
|
-
* Data Api implementation
|
|
390
|
-
* ------------------------------------------------------------------------
|
|
225
|
+
* Data API implementation
|
|
391
226
|
*/
|
|
392
227
|
|
|
393
|
-
|
|
394
|
-
$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
|
|
228
|
+
EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
|
|
395
229
|
// preventDefault only for <a> elements (which change the URL) not inside the collapsible element
|
|
396
|
-
if (event.
|
|
230
|
+
if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {
|
|
397
231
|
event.preventDefault();
|
|
398
232
|
}
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
var $target = $(this);
|
|
405
|
-
var data = $target.data(DATA_KEY);
|
|
406
|
-
var config = data ? 'toggle' : $trigger.data();
|
|
407
|
-
|
|
408
|
-
Collapse._jQueryInterface.call($target, config);
|
|
409
|
-
});
|
|
233
|
+
for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {
|
|
234
|
+
Collapse.getOrCreateInstance(element, {
|
|
235
|
+
toggle: false
|
|
236
|
+
}).toggle();
|
|
237
|
+
}
|
|
410
238
|
});
|
|
239
|
+
|
|
411
240
|
/**
|
|
412
|
-
* ------------------------------------------------------------------------
|
|
413
241
|
* jQuery
|
|
414
|
-
* ------------------------------------------------------------------------
|
|
415
242
|
*/
|
|
416
243
|
|
|
417
|
-
|
|
418
|
-
$.fn[NAME].Constructor = Collapse;
|
|
419
|
-
|
|
420
|
-
$.fn[NAME].noConflict = function () {
|
|
421
|
-
$.fn[NAME] = JQUERY_NO_CONFLICT;
|
|
422
|
-
return Collapse._jQueryInterface;
|
|
423
|
-
};
|
|
244
|
+
index_js.defineJQueryPlugin(Collapse);
|
|
424
245
|
|
|
425
246
|
return Collapse;
|
|
426
247
|
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Bootstrap data.js v5.3.0 (https://getbootstrap.com/)
|
|
3
|
+
* Copyright 2011-2023 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
|
+
}));
|