bootstrap 5.0.1 → 5.1.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 +2 -2
- data/assets/javascripts/bootstrap/alert.js +89 -58
- data/assets/javascripts/bootstrap/base-component.js +53 -39
- data/assets/javascripts/bootstrap/button.js +31 -25
- data/assets/javascripts/bootstrap/carousel.js +126 -89
- data/assets/javascripts/bootstrap/collapse.js +125 -133
- data/assets/javascripts/bootstrap/dom/data.js +5 -5
- data/assets/javascripts/bootstrap/dom/event-handler.js +11 -5
- data/assets/javascripts/bootstrap/dom/manipulator.js +6 -6
- data/assets/javascripts/bootstrap/dom/selector-engine.js +49 -7
- data/assets/javascripts/bootstrap/dropdown.js +147 -140
- data/assets/javascripts/bootstrap/modal.js +397 -180
- data/assets/javascripts/bootstrap/offcanvas.js +333 -138
- data/assets/javascripts/bootstrap/popover.js +36 -54
- data/assets/javascripts/bootstrap/scrollspy.js +58 -68
- data/assets/javascripts/bootstrap/tab.js +53 -26
- data/assets/javascripts/bootstrap/toast.js +138 -41
- data/assets/javascripts/bootstrap/tooltip.js +137 -120
- data/assets/javascripts/bootstrap-sprockets.js +8 -8
- data/assets/javascripts/bootstrap.js +937 -886
- data/assets/javascripts/bootstrap.min.js +2 -2
- data/assets/stylesheets/_bootstrap-grid.scss +3 -1
- data/assets/stylesheets/_bootstrap-reboot.scss +2 -4
- data/assets/stylesheets/_bootstrap.scss +2 -1
- data/assets/stylesheets/bootstrap/_buttons.scss +1 -0
- data/assets/stylesheets/bootstrap/_card.scss +7 -6
- data/assets/stylesheets/bootstrap/_carousel.scss +2 -2
- data/assets/stylesheets/bootstrap/_dropdown.scss +4 -4
- data/assets/stylesheets/bootstrap/_functions.scss +100 -3
- data/assets/stylesheets/bootstrap/_grid.scss +11 -0
- data/assets/stylesheets/bootstrap/_helpers.scss +2 -0
- data/assets/stylesheets/bootstrap/_images.scss +1 -1
- data/assets/stylesheets/bootstrap/_mixins.scss +1 -0
- data/assets/stylesheets/bootstrap/_modal.scss +5 -15
- data/assets/stylesheets/bootstrap/_navbar.scss +30 -1
- data/assets/stylesheets/bootstrap/_offcanvas.scss +8 -2
- data/assets/stylesheets/bootstrap/_placeholders.scss +51 -0
- data/assets/stylesheets/bootstrap/_popover.scss +10 -10
- data/assets/stylesheets/bootstrap/_reboot.scss +12 -8
- data/assets/stylesheets/bootstrap/_root.scss +40 -2
- data/assets/stylesheets/bootstrap/_tables.scss +9 -5
- data/assets/stylesheets/bootstrap/_toasts.scss +3 -3
- data/assets/stylesheets/bootstrap/_tooltip.scss +4 -4
- data/assets/stylesheets/bootstrap/_transitions.scss +6 -0
- data/assets/stylesheets/bootstrap/_utilities.scss +44 -8
- data/assets/stylesheets/bootstrap/_variables.scss +206 -29
- 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 +1 -1
- data/assets/stylesheets/bootstrap/forms/_form-range.scss +1 -1
- data/assets/stylesheets/bootstrap/forms/_form-select.scss +5 -0
- data/assets/stylesheets/bootstrap/helpers/_stacks.scss +15 -0
- data/assets/stylesheets/bootstrap/helpers/_vr.scss +8 -0
- data/assets/stylesheets/bootstrap/mixins/_backdrop.scss +14 -0
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +35 -9
- data/assets/stylesheets/bootstrap/mixins/_utilities.scss +27 -6
- data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +1 -1
- data/assets/stylesheets/bootstrap/vendor/_rfs.scss +55 -13
- data/bootstrap.gemspec +3 -3
- data/lib/bootstrap/version.rb +2 -2
- data/tasks/updater/js.rb +6 -2
- metadata +12 -8
@@ -1,19 +1,24 @@
|
|
1
1
|
/*!
|
2
|
-
* Bootstrap popover.js v5.
|
2
|
+
* Bootstrap popover.js v5.1.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('./
|
8
|
-
typeof define === 'function' && define.amd ? define(['./
|
9
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Popover = factory(global.
|
10
|
-
}(this, (function (
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./tooltip.js')) :
|
8
|
+
typeof define === 'function' && define.amd ? define(['./tooltip'], factory) :
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Popover = factory(global.Tooltip));
|
10
|
+
})(this, (function (Tooltip) { 'use strict';
|
11
11
|
|
12
|
-
|
12
|
+
const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e };
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
const Tooltip__default = /*#__PURE__*/_interopDefaultLegacy(Tooltip);
|
15
|
+
|
16
|
+
/**
|
17
|
+
* --------------------------------------------------------------------------
|
18
|
+
* Bootstrap (v5.1.2): util/index.js
|
19
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
20
|
+
* --------------------------------------------------------------------------
|
21
|
+
*/
|
17
22
|
|
18
23
|
const getjQuery = () => {
|
19
24
|
const {
|
@@ -27,9 +32,18 @@
|
|
27
32
|
return null;
|
28
33
|
};
|
29
34
|
|
35
|
+
const DOMContentLoadedCallbacks = [];
|
36
|
+
|
30
37
|
const onDOMContentLoaded = callback => {
|
31
38
|
if (document.readyState === 'loading') {
|
32
|
-
document
|
39
|
+
// add listener on the first call when the document is in loading state
|
40
|
+
if (!DOMContentLoadedCallbacks.length) {
|
41
|
+
document.addEventListener('DOMContentLoaded', () => {
|
42
|
+
DOMContentLoadedCallbacks.forEach(callback => callback());
|
43
|
+
});
|
44
|
+
}
|
45
|
+
|
46
|
+
DOMContentLoadedCallbacks.push(callback);
|
33
47
|
} else {
|
34
48
|
callback();
|
35
49
|
}
|
@@ -56,7 +70,7 @@
|
|
56
70
|
|
57
71
|
/**
|
58
72
|
* --------------------------------------------------------------------------
|
59
|
-
* Bootstrap (v5.
|
73
|
+
* Bootstrap (v5.1.2): popover.js
|
60
74
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
61
75
|
* --------------------------------------------------------------------------
|
62
76
|
*/
|
@@ -70,15 +84,14 @@
|
|
70
84
|
const DATA_KEY = 'bs.popover';
|
71
85
|
const EVENT_KEY = `.${DATA_KEY}`;
|
72
86
|
const CLASS_PREFIX = 'bs-popover';
|
73
|
-
const
|
74
|
-
const Default = { ...Tooltip__default['default'].Default,
|
87
|
+
const Default = { ...Tooltip__default.default.Default,
|
75
88
|
placement: 'right',
|
76
89
|
offset: [0, 8],
|
77
90
|
trigger: 'click',
|
78
91
|
content: '',
|
79
92
|
template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div>' + '</div>'
|
80
93
|
};
|
81
|
-
const DefaultType = { ...Tooltip__default
|
94
|
+
const DefaultType = { ...Tooltip__default.default.DefaultType,
|
82
95
|
content: '(string|element|function)'
|
83
96
|
};
|
84
97
|
const Event = {
|
@@ -93,8 +106,6 @@
|
|
93
106
|
MOUSEENTER: `mouseenter${EVENT_KEY}`,
|
94
107
|
MOUSELEAVE: `mouseleave${EVENT_KEY}`
|
95
108
|
};
|
96
|
-
const CLASS_NAME_FADE = 'fade';
|
97
|
-
const CLASS_NAME_SHOW = 'show';
|
98
109
|
const SELECTOR_TITLE = '.popover-header';
|
99
110
|
const SELECTOR_CONTENT = '.popover-body';
|
100
111
|
/**
|
@@ -103,7 +114,7 @@
|
|
103
114
|
* ------------------------------------------------------------------------
|
104
115
|
*/
|
105
116
|
|
106
|
-
class Popover extends Tooltip__default
|
117
|
+
class Popover extends Tooltip__default.default {
|
107
118
|
// Getters
|
108
119
|
static get Default() {
|
109
120
|
return Default;
|
@@ -126,54 +137,25 @@
|
|
126
137
|
return this.getTitle() || this._getContent();
|
127
138
|
}
|
128
139
|
|
129
|
-
setContent() {
|
130
|
-
|
131
|
-
|
132
|
-
this.setElementContent(SelectorEngine__default['default'].findOne(SELECTOR_TITLE, tip), this.getTitle());
|
133
|
-
|
134
|
-
let content = this._getContent();
|
140
|
+
setContent(tip) {
|
141
|
+
this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TITLE);
|
135
142
|
|
136
|
-
|
137
|
-
content = content.call(this._element);
|
138
|
-
}
|
139
|
-
|
140
|
-
this.setElementContent(SelectorEngine__default['default'].findOne(SELECTOR_CONTENT, tip), content);
|
141
|
-
tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW);
|
143
|
+
this._sanitizeAndSetContent(tip, this._getContent(), SELECTOR_CONTENT);
|
142
144
|
} // Private
|
143
145
|
|
144
146
|
|
145
|
-
_addAttachmentClass(attachment) {
|
146
|
-
this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`);
|
147
|
-
}
|
148
|
-
|
149
147
|
_getContent() {
|
150
|
-
return this.
|
148
|
+
return this._resolvePossibleFunction(this._config.content);
|
151
149
|
}
|
152
150
|
|
153
|
-
|
154
|
-
|
155
|
-
const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX);
|
156
|
-
|
157
|
-
if (tabClass !== null && tabClass.length > 0) {
|
158
|
-
tabClass.map(token => token.trim()).forEach(tClass => tip.classList.remove(tClass));
|
159
|
-
}
|
151
|
+
_getBasicClassPrefix() {
|
152
|
+
return CLASS_PREFIX;
|
160
153
|
} // Static
|
161
154
|
|
162
155
|
|
163
156
|
static jQueryInterface(config) {
|
164
157
|
return this.each(function () {
|
165
|
-
|
166
|
-
|
167
|
-
const _config = typeof config === 'object' ? config : null;
|
168
|
-
|
169
|
-
if (!data && /dispose|hide/.test(config)) {
|
170
|
-
return;
|
171
|
-
}
|
172
|
-
|
173
|
-
if (!data) {
|
174
|
-
data = new Popover(this, _config);
|
175
|
-
Data__default['default'].set(this, DATA_KEY, data);
|
176
|
-
}
|
158
|
+
const data = Popover.getOrCreateInstance(this, config);
|
177
159
|
|
178
160
|
if (typeof config === 'string') {
|
179
161
|
if (typeof data[config] === 'undefined') {
|
@@ -198,4 +180,4 @@
|
|
198
180
|
|
199
181
|
return Popover;
|
200
182
|
|
201
|
-
}))
|
183
|
+
}));
|
@@ -1,30 +1,28 @@
|
|
1
1
|
/*!
|
2
|
-
* Bootstrap scrollspy.js v5.
|
2
|
+
* Bootstrap scrollspy.js v5.1.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.ScrollSpy = factory(global.
|
10
|
-
}(this, (function (
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./dom/selector-engine.js'), require('./base-component.js')) :
|
8
|
+
typeof define === 'function' && define.amd ? define(['./dom/event-handler', './dom/manipulator', './dom/selector-engine', './base-component'], factory) :
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.ScrollSpy = factory(global.EventHandler, global.Manipulator, global.SelectorEngine, global.Base));
|
10
|
+
})(this, (function (EventHandler, Manipulator, SelectorEngine, BaseComponent) { 'use strict';
|
11
11
|
|
12
|
-
|
12
|
+
const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e };
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
14
|
+
const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
|
15
|
+
const Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);
|
16
|
+
const SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
|
17
|
+
const BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
|
18
18
|
|
19
19
|
/**
|
20
20
|
* --------------------------------------------------------------------------
|
21
|
-
* Bootstrap (v5.
|
21
|
+
* Bootstrap (v5.1.2): util/index.js
|
22
22
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
23
23
|
* --------------------------------------------------------------------------
|
24
24
|
*/
|
25
25
|
|
26
|
-
const MAX_UID = 1000000;
|
27
|
-
|
28
26
|
const toType = obj => {
|
29
27
|
if (obj === null || obj === undefined) {
|
30
28
|
return `${obj}`;
|
@@ -32,20 +30,6 @@
|
|
32
30
|
|
33
31
|
return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
|
34
32
|
};
|
35
|
-
/**
|
36
|
-
* --------------------------------------------------------------------------
|
37
|
-
* Public Util Api
|
38
|
-
* --------------------------------------------------------------------------
|
39
|
-
*/
|
40
|
-
|
41
|
-
|
42
|
-
const getUID = prefix => {
|
43
|
-
do {
|
44
|
-
prefix += Math.floor(Math.random() * MAX_UID);
|
45
|
-
} while (document.getElementById(prefix));
|
46
|
-
|
47
|
-
return prefix;
|
48
|
-
};
|
49
33
|
|
50
34
|
const getSelector = element => {
|
51
35
|
let selector = element.getAttribute('data-bs-target');
|
@@ -93,6 +77,19 @@
|
|
93
77
|
return typeof obj.nodeType !== 'undefined';
|
94
78
|
};
|
95
79
|
|
80
|
+
const getElement = obj => {
|
81
|
+
if (isElement(obj)) {
|
82
|
+
// it's a jQuery object or a node element
|
83
|
+
return obj.jquery ? obj[0] : obj;
|
84
|
+
}
|
85
|
+
|
86
|
+
if (typeof obj === 'string' && obj.length > 0) {
|
87
|
+
return document.querySelector(obj);
|
88
|
+
}
|
89
|
+
|
90
|
+
return null;
|
91
|
+
};
|
92
|
+
|
96
93
|
const typeCheckConfig = (componentName, config, configTypes) => {
|
97
94
|
Object.keys(configTypes).forEach(property => {
|
98
95
|
const expectedTypes = configTypes[property];
|
@@ -117,9 +114,18 @@
|
|
117
114
|
return null;
|
118
115
|
};
|
119
116
|
|
117
|
+
const DOMContentLoadedCallbacks = [];
|
118
|
+
|
120
119
|
const onDOMContentLoaded = callback => {
|
121
120
|
if (document.readyState === 'loading') {
|
122
|
-
document
|
121
|
+
// add listener on the first call when the document is in loading state
|
122
|
+
if (!DOMContentLoadedCallbacks.length) {
|
123
|
+
document.addEventListener('DOMContentLoaded', () => {
|
124
|
+
DOMContentLoadedCallbacks.forEach(callback => callback());
|
125
|
+
});
|
126
|
+
}
|
127
|
+
|
128
|
+
DOMContentLoadedCallbacks.push(callback);
|
123
129
|
} else {
|
124
130
|
callback();
|
125
131
|
}
|
@@ -146,7 +152,7 @@
|
|
146
152
|
|
147
153
|
/**
|
148
154
|
* --------------------------------------------------------------------------
|
149
|
-
* Bootstrap (v5.
|
155
|
+
* Bootstrap (v5.1.2): scrollspy.js
|
150
156
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
151
157
|
* --------------------------------------------------------------------------
|
152
158
|
*/
|
@@ -180,6 +186,7 @@
|
|
180
186
|
const SELECTOR_NAV_LINKS = '.nav-link';
|
181
187
|
const SELECTOR_NAV_ITEMS = '.nav-item';
|
182
188
|
const SELECTOR_LIST_ITEMS = '.list-group-item';
|
189
|
+
const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}, .${CLASS_NAME_DROPDOWN_ITEM}`;
|
183
190
|
const SELECTOR_DROPDOWN = '.dropdown';
|
184
191
|
const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
|
185
192
|
const METHOD_OFFSET = 'offset';
|
@@ -190,17 +197,16 @@
|
|
190
197
|
* ------------------------------------------------------------------------
|
191
198
|
*/
|
192
199
|
|
193
|
-
class ScrollSpy extends BaseComponent__default
|
200
|
+
class ScrollSpy extends BaseComponent__default.default {
|
194
201
|
constructor(element, config) {
|
195
202
|
super(element);
|
196
203
|
this._scrollElement = this._element.tagName === 'BODY' ? window : this._element;
|
197
204
|
this._config = this._getConfig(config);
|
198
|
-
this._selector = `${this._config.target} ${SELECTOR_NAV_LINKS}, ${this._config.target} ${SELECTOR_LIST_ITEMS}, ${this._config.target} .${CLASS_NAME_DROPDOWN_ITEM}`;
|
199
205
|
this._offsets = [];
|
200
206
|
this._targets = [];
|
201
207
|
this._activeTarget = null;
|
202
208
|
this._scrollHeight = 0;
|
203
|
-
EventHandler__default
|
209
|
+
EventHandler__default.default.on(this._scrollElement, EVENT_SCROLL, () => this._process());
|
204
210
|
this.refresh();
|
205
211
|
|
206
212
|
this._process();
|
@@ -223,16 +229,16 @@
|
|
223
229
|
this._offsets = [];
|
224
230
|
this._targets = [];
|
225
231
|
this._scrollHeight = this._getScrollHeight();
|
226
|
-
const targets = SelectorEngine__default
|
232
|
+
const targets = SelectorEngine__default.default.find(SELECTOR_LINK_ITEMS, this._config.target);
|
227
233
|
targets.map(element => {
|
228
234
|
const targetSelector = getSelectorFromElement(element);
|
229
|
-
const target = targetSelector ? SelectorEngine__default
|
235
|
+
const target = targetSelector ? SelectorEngine__default.default.findOne(targetSelector) : null;
|
230
236
|
|
231
237
|
if (target) {
|
232
238
|
const targetBCR = target.getBoundingClientRect();
|
233
239
|
|
234
240
|
if (targetBCR.width || targetBCR.height) {
|
235
|
-
return [Manipulator__default
|
241
|
+
return [Manipulator__default.default[offsetMethod](target).top + offsetBase, targetSelector];
|
236
242
|
}
|
237
243
|
}
|
238
244
|
|
@@ -245,30 +251,17 @@
|
|
245
251
|
}
|
246
252
|
|
247
253
|
dispose() {
|
248
|
-
EventHandler__default
|
254
|
+
EventHandler__default.default.off(this._scrollElement, EVENT_KEY);
|
249
255
|
super.dispose();
|
250
256
|
} // Private
|
251
257
|
|
252
258
|
|
253
259
|
_getConfig(config) {
|
254
260
|
config = { ...Default,
|
255
|
-
...Manipulator__default
|
261
|
+
...Manipulator__default.default.getDataAttributes(this._element),
|
256
262
|
...(typeof config === 'object' && config ? config : {})
|
257
263
|
};
|
258
|
-
|
259
|
-
if (typeof config.target !== 'string' && isElement(config.target)) {
|
260
|
-
let {
|
261
|
-
id
|
262
|
-
} = config.target;
|
263
|
-
|
264
|
-
if (!id) {
|
265
|
-
id = getUID(NAME);
|
266
|
-
config.target.id = id;
|
267
|
-
}
|
268
|
-
|
269
|
-
config.target = `#${id}`;
|
270
|
-
}
|
271
|
-
|
264
|
+
config.target = getElement(config.target) || document.documentElement;
|
272
265
|
typeCheckConfig(NAME, config, DefaultType);
|
273
266
|
return config;
|
274
267
|
}
|
@@ -328,40 +321,37 @@
|
|
328
321
|
|
329
322
|
this._clear();
|
330
323
|
|
331
|
-
const queries =
|
332
|
-
|
333
|
-
|
324
|
+
const queries = SELECTOR_LINK_ITEMS.split(',').map(selector => `${selector}[data-bs-target="${target}"],${selector}[href="${target}"]`);
|
325
|
+
const link = SelectorEngine__default.default.findOne(queries.join(','), this._config.target);
|
326
|
+
link.classList.add(CLASS_NAME_ACTIVE);
|
334
327
|
|
335
328
|
if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {
|
336
|
-
SelectorEngine__default
|
337
|
-
link.classList.add(CLASS_NAME_ACTIVE);
|
329
|
+
SelectorEngine__default.default.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE);
|
338
330
|
} else {
|
339
|
-
|
340
|
-
link.classList.add(CLASS_NAME_ACTIVE);
|
341
|
-
SelectorEngine__default['default'].parents(link, SELECTOR_NAV_LIST_GROUP).forEach(listGroup => {
|
331
|
+
SelectorEngine__default.default.parents(link, SELECTOR_NAV_LIST_GROUP).forEach(listGroup => {
|
342
332
|
// Set triggered links parents as active
|
343
333
|
// With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
|
344
|
-
SelectorEngine__default
|
334
|
+
SelectorEngine__default.default.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`).forEach(item => item.classList.add(CLASS_NAME_ACTIVE)); // Handle special case when .nav-link is inside .nav-item
|
345
335
|
|
346
|
-
SelectorEngine__default
|
347
|
-
SelectorEngine__default
|
336
|
+
SelectorEngine__default.default.prev(listGroup, SELECTOR_NAV_ITEMS).forEach(navItem => {
|
337
|
+
SelectorEngine__default.default.children(navItem, SELECTOR_NAV_LINKS).forEach(item => item.classList.add(CLASS_NAME_ACTIVE));
|
348
338
|
});
|
349
339
|
});
|
350
340
|
}
|
351
341
|
|
352
|
-
EventHandler__default
|
342
|
+
EventHandler__default.default.trigger(this._scrollElement, EVENT_ACTIVATE, {
|
353
343
|
relatedTarget: target
|
354
344
|
});
|
355
345
|
}
|
356
346
|
|
357
347
|
_clear() {
|
358
|
-
SelectorEngine__default
|
348
|
+
SelectorEngine__default.default.find(SELECTOR_LINK_ITEMS, this._config.target).filter(node => node.classList.contains(CLASS_NAME_ACTIVE)).forEach(node => node.classList.remove(CLASS_NAME_ACTIVE));
|
359
349
|
} // Static
|
360
350
|
|
361
351
|
|
362
352
|
static jQueryInterface(config) {
|
363
353
|
return this.each(function () {
|
364
|
-
const data = ScrollSpy.
|
354
|
+
const data = ScrollSpy.getOrCreateInstance(this, config);
|
365
355
|
|
366
356
|
if (typeof config !== 'string') {
|
367
357
|
return;
|
@@ -383,8 +373,8 @@
|
|
383
373
|
*/
|
384
374
|
|
385
375
|
|
386
|
-
EventHandler__default
|
387
|
-
SelectorEngine__default
|
376
|
+
EventHandler__default.default.on(window, EVENT_LOAD_DATA_API, () => {
|
377
|
+
SelectorEngine__default.default.find(SELECTOR_DATA_SPY).forEach(spy => new ScrollSpy(spy));
|
388
378
|
});
|
389
379
|
/**
|
390
380
|
* ------------------------------------------------------------------------
|
@@ -397,4 +387,4 @@
|
|
397
387
|
|
398
388
|
return ScrollSpy;
|
399
389
|
|
400
|
-
}))
|
390
|
+
}));
|
@@ -1,20 +1,26 @@
|
|
1
1
|
/*!
|
2
|
-
* Bootstrap tab.js v5.
|
2
|
+
* Bootstrap tab.js v5.1.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.Tab = factory(global.
|
10
|
-
}(this, (function (
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/event-handler.js'), require('./dom/selector-engine.js'), require('./base-component.js')) :
|
8
|
+
typeof define === 'function' && define.amd ? define(['./dom/event-handler', './dom/selector-engine', './base-component'], factory) :
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Tab = factory(global.EventHandler, global.SelectorEngine, global.Base));
|
10
|
+
})(this, (function (EventHandler, SelectorEngine, BaseComponent) { 'use strict';
|
11
11
|
|
12
|
-
|
12
|
+
const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e };
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
14
|
+
const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
|
15
|
+
const SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
|
16
|
+
const BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
|
17
|
+
|
18
|
+
/**
|
19
|
+
* --------------------------------------------------------------------------
|
20
|
+
* Bootstrap (v5.1.2): util/index.js
|
21
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
22
|
+
* --------------------------------------------------------------------------
|
23
|
+
*/
|
18
24
|
|
19
25
|
const getSelector = element => {
|
20
26
|
let selector = element.getAttribute('data-bs-target');
|
@@ -60,8 +66,20 @@
|
|
60
66
|
|
61
67
|
return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';
|
62
68
|
};
|
69
|
+
/**
|
70
|
+
* Trick to restart an element's animation
|
71
|
+
*
|
72
|
+
* @param {HTMLElement} element
|
73
|
+
* @return void
|
74
|
+
*
|
75
|
+
* @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation
|
76
|
+
*/
|
77
|
+
|
63
78
|
|
64
|
-
const reflow = element =>
|
79
|
+
const reflow = element => {
|
80
|
+
// eslint-disable-next-line no-unused-expressions
|
81
|
+
element.offsetHeight;
|
82
|
+
};
|
65
83
|
|
66
84
|
const getjQuery = () => {
|
67
85
|
const {
|
@@ -75,9 +93,18 @@
|
|
75
93
|
return null;
|
76
94
|
};
|
77
95
|
|
96
|
+
const DOMContentLoadedCallbacks = [];
|
97
|
+
|
78
98
|
const onDOMContentLoaded = callback => {
|
79
99
|
if (document.readyState === 'loading') {
|
80
|
-
document
|
100
|
+
// add listener on the first call when the document is in loading state
|
101
|
+
if (!DOMContentLoadedCallbacks.length) {
|
102
|
+
document.addEventListener('DOMContentLoaded', () => {
|
103
|
+
DOMContentLoadedCallbacks.forEach(callback => callback());
|
104
|
+
});
|
105
|
+
}
|
106
|
+
|
107
|
+
DOMContentLoadedCallbacks.push(callback);
|
81
108
|
} else {
|
82
109
|
callback();
|
83
110
|
}
|
@@ -104,7 +131,7 @@
|
|
104
131
|
|
105
132
|
/**
|
106
133
|
* --------------------------------------------------------------------------
|
107
|
-
* Bootstrap (v5.
|
134
|
+
* Bootstrap (v5.1.2): tab.js
|
108
135
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
109
136
|
* --------------------------------------------------------------------------
|
110
137
|
*/
|
@@ -140,7 +167,7 @@
|
|
140
167
|
* ------------------------------------------------------------------------
|
141
168
|
*/
|
142
169
|
|
143
|
-
class Tab extends BaseComponent__default
|
170
|
+
class Tab extends BaseComponent__default.default {
|
144
171
|
// Getters
|
145
172
|
static get NAME() {
|
146
173
|
return NAME;
|
@@ -159,14 +186,14 @@
|
|
159
186
|
|
160
187
|
if (listElement) {
|
161
188
|
const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE;
|
162
|
-
previous = SelectorEngine__default
|
189
|
+
previous = SelectorEngine__default.default.find(itemSelector, listElement);
|
163
190
|
previous = previous[previous.length - 1];
|
164
191
|
}
|
165
192
|
|
166
|
-
const hideEvent = previous ? EventHandler__default
|
193
|
+
const hideEvent = previous ? EventHandler__default.default.trigger(previous, EVENT_HIDE, {
|
167
194
|
relatedTarget: this._element
|
168
195
|
}) : null;
|
169
|
-
const showEvent = EventHandler__default
|
196
|
+
const showEvent = EventHandler__default.default.trigger(this._element, EVENT_SHOW, {
|
170
197
|
relatedTarget: previous
|
171
198
|
});
|
172
199
|
|
@@ -177,10 +204,10 @@
|
|
177
204
|
this._activate(this._element, listElement);
|
178
205
|
|
179
206
|
const complete = () => {
|
180
|
-
EventHandler__default
|
207
|
+
EventHandler__default.default.trigger(previous, EVENT_HIDDEN, {
|
181
208
|
relatedTarget: this._element
|
182
209
|
});
|
183
|
-
EventHandler__default
|
210
|
+
EventHandler__default.default.trigger(this._element, EVENT_SHOWN, {
|
184
211
|
relatedTarget: previous
|
185
212
|
});
|
186
213
|
};
|
@@ -194,7 +221,7 @@
|
|
194
221
|
|
195
222
|
|
196
223
|
_activate(element, container, callback) {
|
197
|
-
const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? SelectorEngine__default
|
224
|
+
const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? SelectorEngine__default.default.find(SELECTOR_ACTIVE_UL, container) : SelectorEngine__default.default.children(container, SELECTOR_ACTIVE);
|
198
225
|
const active = activeElements[0];
|
199
226
|
const isTransitioning = callback && active && active.classList.contains(CLASS_NAME_FADE);
|
200
227
|
|
@@ -212,7 +239,7 @@
|
|
212
239
|
_transitionComplete(element, active, callback) {
|
213
240
|
if (active) {
|
214
241
|
active.classList.remove(CLASS_NAME_ACTIVE);
|
215
|
-
const dropdownChild = SelectorEngine__default
|
242
|
+
const dropdownChild = SelectorEngine__default.default.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode);
|
216
243
|
|
217
244
|
if (dropdownChild) {
|
218
245
|
dropdownChild.classList.remove(CLASS_NAME_ACTIVE);
|
@@ -245,7 +272,7 @@
|
|
245
272
|
const dropdownElement = element.closest(SELECTOR_DROPDOWN);
|
246
273
|
|
247
274
|
if (dropdownElement) {
|
248
|
-
SelectorEngine__default
|
275
|
+
SelectorEngine__default.default.find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement).forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE));
|
249
276
|
}
|
250
277
|
|
251
278
|
element.setAttribute('aria-expanded', true);
|
@@ -259,7 +286,7 @@
|
|
259
286
|
|
260
287
|
static jQueryInterface(config) {
|
261
288
|
return this.each(function () {
|
262
|
-
const data =
|
289
|
+
const data = Tab.getOrCreateInstance(this);
|
263
290
|
|
264
291
|
if (typeof config === 'string') {
|
265
292
|
if (typeof data[config] === 'undefined') {
|
@@ -279,7 +306,7 @@
|
|
279
306
|
*/
|
280
307
|
|
281
308
|
|
282
|
-
EventHandler__default
|
309
|
+
EventHandler__default.default.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
|
283
310
|
if (['A', 'AREA'].includes(this.tagName)) {
|
284
311
|
event.preventDefault();
|
285
312
|
}
|
@@ -288,7 +315,7 @@
|
|
288
315
|
return;
|
289
316
|
}
|
290
317
|
|
291
|
-
const data =
|
318
|
+
const data = Tab.getOrCreateInstance(this);
|
292
319
|
data.show();
|
293
320
|
});
|
294
321
|
/**
|
@@ -302,4 +329,4 @@
|
|
302
329
|
|
303
330
|
return Tab;
|
304
331
|
|
305
|
-
}))
|
332
|
+
}));
|