bootstrap 5.2.3 → 5.3.0.alpha3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/assets/javascripts/bootstrap/alert.js +21 -32
- data/assets/javascripts/bootstrap/base-component.js +21 -38
- data/assets/javascripts/bootstrap/button.js +18 -22
- data/assets/javascripts/bootstrap/carousel.js +51 -135
- data/assets/javascripts/bootstrap/collapse.js +39 -102
- data/assets/javascripts/bootstrap/dom/data.js +8 -12
- data/assets/javascripts/bootstrap/dom/event-handler.js +18 -66
- data/assets/javascripts/bootstrap/dom/manipulator.js +4 -17
- data/assets/javascripts/bootstrap/dom/selector-engine.js +41 -24
- data/assets/javascripts/bootstrap/dropdown.js +73 -145
- data/assets/javascripts/bootstrap/modal.js +52 -133
- data/assets/javascripts/bootstrap/offcanvas.js +49 -102
- data/assets/javascripts/bootstrap/popover.js +22 -29
- data/assets/javascripts/bootstrap/scrollspy.js +51 -89
- data/assets/javascripts/bootstrap/tab.js +51 -109
- data/assets/javascripts/bootstrap/toast.js +30 -73
- data/assets/javascripts/bootstrap/tooltip.js +74 -177
- data/assets/javascripts/bootstrap/util/backdrop.js +27 -54
- data/assets/javascripts/bootstrap/util/component-functions.js +13 -19
- data/assets/javascripts/bootstrap/util/config.js +14 -27
- data/assets/javascripts/bootstrap/util/focustrap.js +19 -36
- data/assets/javascripts/bootstrap/util/index.js +42 -111
- data/assets/javascripts/bootstrap/util/sanitizer.js +13 -19
- data/assets/javascripts/bootstrap/util/scrollbar.js +23 -50
- data/assets/javascripts/bootstrap/util/swipe.js +26 -48
- data/assets/javascripts/bootstrap/util/template-factory.js +24 -52
- data/assets/javascripts/bootstrap-sprockets.js +1 -1
- data/assets/javascripts/bootstrap.js +626 -1406
- data/assets/javascripts/bootstrap.min.js +3 -3
- data/assets/stylesheets/_bootstrap-grid.scss +1 -3
- data/assets/stylesheets/_bootstrap-reboot.scss +1 -0
- data/assets/stylesheets/_bootstrap.scss +1 -0
- data/assets/stylesheets/bootstrap/_accordion.scss +9 -0
- data/assets/stylesheets/bootstrap/_alert.scss +8 -11
- data/assets/stylesheets/bootstrap/_button-group.scss +2 -2
- data/assets/stylesheets/bootstrap/_buttons.scss +3 -3
- data/assets/stylesheets/bootstrap/_card.scss +5 -0
- data/assets/stylesheets/bootstrap/_carousel.scss +20 -2
- data/assets/stylesheets/bootstrap/_close.scss +32 -9
- data/assets/stylesheets/bootstrap/_dropdown.scss +1 -0
- data/assets/stylesheets/bootstrap/_functions.scss +1 -1
- data/assets/stylesheets/bootstrap/_grid.scss +6 -0
- data/assets/stylesheets/bootstrap/_helpers.scss +2 -0
- data/assets/stylesheets/bootstrap/_list-group.scss +12 -7
- data/assets/stylesheets/bootstrap/_maps.scss +120 -0
- data/assets/stylesheets/bootstrap/_mixins.scss +1 -2
- data/assets/stylesheets/bootstrap/_nav.scss +40 -3
- data/assets/stylesheets/bootstrap/_navbar.scss +13 -3
- data/assets/stylesheets/bootstrap/_offcanvas.scss +4 -2
- data/assets/stylesheets/bootstrap/_pagination.scss +1 -1
- data/assets/stylesheets/bootstrap/_progress.scss +10 -1
- data/assets/stylesheets/bootstrap/_reboot.scss +3 -3
- data/assets/stylesheets/bootstrap/_root.scss +125 -10
- data/assets/stylesheets/bootstrap/_tables.scss +1 -1
- data/assets/stylesheets/bootstrap/_tooltip.scss +4 -5
- data/assets/stylesheets/bootstrap/_utilities.scss +172 -13
- data/assets/stylesheets/bootstrap/_variables-dark.scss +85 -0
- data/assets/stylesheets/bootstrap/_variables.scss +260 -151
- data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +1 -0
- data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +21 -3
- data/assets/stylesheets/bootstrap/forms/_form-check.scss +24 -11
- data/assets/stylesheets/bootstrap/forms/_form-control.scss +23 -3
- data/assets/stylesheets/bootstrap/forms/_form-select.scss +11 -2
- data/assets/stylesheets/bootstrap/forms/_input-group.scss +1 -1
- data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +22 -2
- data/assets/stylesheets/bootstrap/helpers/_focus-ring.scss +5 -0
- data/assets/stylesheets/bootstrap/helpers/_icon-link.scss +25 -0
- data/assets/stylesheets/bootstrap/mixins/_alert.scss +4 -1
- data/assets/stylesheets/bootstrap/mixins/_banner.scss +2 -4
- data/assets/stylesheets/bootstrap/mixins/_caret.scss +30 -25
- data/assets/stylesheets/bootstrap/mixins/_color-mode.scss +21 -0
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +8 -7
- data/assets/stylesheets/bootstrap/mixins/_list-group.scss +2 -0
- data/assets/stylesheets/bootstrap/mixins/_utilities.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +5 -1
- data/assets/stylesheets/bootstrap/vendor/_rfs.scss +23 -29
- data/bootstrap.gemspec +1 -1
- data/lib/bootstrap/version.rb +2 -2
- data/tasks/updater/js.rb +1 -1
- data/tasks/updater/scss.rb +1 -1
- metadata +10 -6
@@ -1,26 +1,21 @@
|
|
1
1
|
/*!
|
2
|
-
* Bootstrap tab.js v5.
|
3
|
-
* Copyright 2011-
|
2
|
+
* Bootstrap tab.js v5.3.0-alpha3 (https://getbootstrap.com/)
|
3
|
+
* Copyright 2011-2023 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.Tab = factory(global.
|
10
|
-
})(this, (function (
|
11
|
-
|
12
|
-
const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e };
|
13
|
-
|
14
|
-
const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
|
15
|
-
const SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
|
16
|
-
const BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
|
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.Tab = factory(global.BaseComponent, global.EventHandler, global.SelectorEngine, global.Index));
|
10
|
+
})(this, (function (BaseComponent, EventHandler, SelectorEngine, index_js) { 'use strict';
|
17
11
|
|
18
12
|
/**
|
19
13
|
* --------------------------------------------------------------------------
|
20
|
-
* Bootstrap
|
14
|
+
* Bootstrap tab.js
|
21
15
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
22
16
|
* --------------------------------------------------------------------------
|
23
17
|
*/
|
18
|
+
|
24
19
|
/**
|
25
20
|
* Constants
|
26
21
|
*/
|
@@ -49,134 +44,109 @@
|
|
49
44
|
const SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]';
|
50
45
|
const SELECTOR_OUTER = '.nav-item, .list-group-item';
|
51
46
|
const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;
|
52
|
-
const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]'; //
|
53
|
-
|
47
|
+
const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]'; // TODO: could only be `tab` in v6
|
54
48
|
const SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`;
|
55
49
|
const SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle="tab"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="pill"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="list"]`;
|
50
|
+
|
56
51
|
/**
|
57
52
|
* Class definition
|
58
53
|
*/
|
59
54
|
|
60
|
-
class Tab extends
|
55
|
+
class Tab extends BaseComponent {
|
61
56
|
constructor(element) {
|
62
57
|
super(element);
|
63
58
|
this._parent = this._element.closest(SELECTOR_TAB_PANEL);
|
64
|
-
|
65
59
|
if (!this._parent) {
|
66
|
-
return;
|
60
|
+
return;
|
61
|
+
// TODO: should throw exception in v6
|
67
62
|
// throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)
|
68
|
-
}
|
69
|
-
|
63
|
+
}
|
70
64
|
|
65
|
+
// Set up initial aria attributes
|
71
66
|
this._setInitialAttributes(this._parent, this._getChildren());
|
67
|
+
EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event));
|
68
|
+
}
|
72
69
|
|
73
|
-
|
74
|
-
} // Getters
|
75
|
-
|
76
|
-
|
70
|
+
// Getters
|
77
71
|
static get NAME() {
|
78
72
|
return NAME;
|
79
|
-
}
|
80
|
-
|
73
|
+
}
|
81
74
|
|
75
|
+
// Public
|
82
76
|
show() {
|
83
77
|
// Shows this elem and deactivate the active sibling if exists
|
84
78
|
const innerElem = this._element;
|
85
|
-
|
86
79
|
if (this._elemIsActive(innerElem)) {
|
87
80
|
return;
|
88
|
-
}
|
89
|
-
|
81
|
+
}
|
90
82
|
|
83
|
+
// Search for active tab on same parent to deactivate it
|
91
84
|
const active = this._getActiveElem();
|
92
|
-
|
93
|
-
const hideEvent = active ? EventHandler__default.default.trigger(active, EVENT_HIDE, {
|
85
|
+
const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE, {
|
94
86
|
relatedTarget: innerElem
|
95
87
|
}) : null;
|
96
|
-
const showEvent =
|
88
|
+
const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, {
|
97
89
|
relatedTarget: active
|
98
90
|
});
|
99
|
-
|
100
91
|
if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) {
|
101
92
|
return;
|
102
93
|
}
|
103
|
-
|
104
94
|
this._deactivate(active, innerElem);
|
105
|
-
|
106
95
|
this._activate(innerElem, active);
|
107
|
-
}
|
108
|
-
|
96
|
+
}
|
109
97
|
|
98
|
+
// Private
|
110
99
|
_activate(element, relatedElem) {
|
111
100
|
if (!element) {
|
112
101
|
return;
|
113
102
|
}
|
114
|
-
|
115
103
|
element.classList.add(CLASS_NAME_ACTIVE);
|
116
|
-
|
117
|
-
this._activate(index.getElementFromSelector(element)); // Search and activate/show the proper section
|
118
|
-
|
104
|
+
this._activate(SelectorEngine.getElementFromSelector(element)); // Search and activate/show the proper section
|
119
105
|
|
120
106
|
const complete = () => {
|
121
107
|
if (element.getAttribute('role') !== 'tab') {
|
122
108
|
element.classList.add(CLASS_NAME_SHOW);
|
123
109
|
return;
|
124
110
|
}
|
125
|
-
|
126
111
|
element.removeAttribute('tabindex');
|
127
112
|
element.setAttribute('aria-selected', true);
|
128
|
-
|
129
113
|
this._toggleDropDown(element, true);
|
130
|
-
|
131
|
-
EventHandler__default.default.trigger(element, EVENT_SHOWN, {
|
114
|
+
EventHandler.trigger(element, EVENT_SHOWN, {
|
132
115
|
relatedTarget: relatedElem
|
133
116
|
});
|
134
117
|
};
|
135
|
-
|
136
118
|
this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE));
|
137
119
|
}
|
138
|
-
|
139
120
|
_deactivate(element, relatedElem) {
|
140
121
|
if (!element) {
|
141
122
|
return;
|
142
123
|
}
|
143
|
-
|
144
124
|
element.classList.remove(CLASS_NAME_ACTIVE);
|
145
125
|
element.blur();
|
146
|
-
|
147
|
-
this._deactivate(index.getElementFromSelector(element)); // Search and deactivate the shown section too
|
148
|
-
|
126
|
+
this._deactivate(SelectorEngine.getElementFromSelector(element)); // Search and deactivate the shown section too
|
149
127
|
|
150
128
|
const complete = () => {
|
151
129
|
if (element.getAttribute('role') !== 'tab') {
|
152
130
|
element.classList.remove(CLASS_NAME_SHOW);
|
153
131
|
return;
|
154
132
|
}
|
155
|
-
|
156
133
|
element.setAttribute('aria-selected', false);
|
157
134
|
element.setAttribute('tabindex', '-1');
|
158
|
-
|
159
135
|
this._toggleDropDown(element, false);
|
160
|
-
|
161
|
-
EventHandler__default.default.trigger(element, EVENT_HIDDEN, {
|
136
|
+
EventHandler.trigger(element, EVENT_HIDDEN, {
|
162
137
|
relatedTarget: relatedElem
|
163
138
|
});
|
164
139
|
};
|
165
|
-
|
166
140
|
this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE));
|
167
141
|
}
|
168
|
-
|
169
142
|
_keydown(event) {
|
170
143
|
if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)) {
|
171
144
|
return;
|
172
145
|
}
|
173
|
-
|
174
146
|
event.stopPropagation(); // stopPropagation/preventDefault both added to support up/down keys without scrolling the page
|
175
|
-
|
176
147
|
event.preventDefault();
|
177
148
|
const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key);
|
178
|
-
const nextActiveElement =
|
179
|
-
|
149
|
+
const nextActiveElement = index_js.getNextActiveElement(this._getChildren().filter(element => !index_js.isDisabled(element)), event.target, isNext, true);
|
180
150
|
if (nextActiveElement) {
|
181
151
|
nextActiveElement.focus({
|
182
152
|
preventScroll: true
|
@@ -184,141 +154,113 @@
|
|
184
154
|
Tab.getOrCreateInstance(nextActiveElement).show();
|
185
155
|
}
|
186
156
|
}
|
187
|
-
|
188
157
|
_getChildren() {
|
189
158
|
// collection of inner elements
|
190
|
-
return
|
159
|
+
return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent);
|
191
160
|
}
|
192
|
-
|
193
161
|
_getActiveElem() {
|
194
162
|
return this._getChildren().find(child => this._elemIsActive(child)) || null;
|
195
163
|
}
|
196
|
-
|
197
164
|
_setInitialAttributes(parent, children) {
|
198
165
|
this._setAttributeIfNotExists(parent, 'role', 'tablist');
|
199
|
-
|
200
166
|
for (const child of children) {
|
201
167
|
this._setInitialAttributesOnChild(child);
|
202
168
|
}
|
203
169
|
}
|
204
|
-
|
205
170
|
_setInitialAttributesOnChild(child) {
|
206
171
|
child = this._getInnerElement(child);
|
207
|
-
|
208
172
|
const isActive = this._elemIsActive(child);
|
209
|
-
|
210
173
|
const outerElem = this._getOuterElement(child);
|
211
|
-
|
212
174
|
child.setAttribute('aria-selected', isActive);
|
213
|
-
|
214
175
|
if (outerElem !== child) {
|
215
176
|
this._setAttributeIfNotExists(outerElem, 'role', 'presentation');
|
216
177
|
}
|
217
|
-
|
218
178
|
if (!isActive) {
|
219
179
|
child.setAttribute('tabindex', '-1');
|
220
180
|
}
|
181
|
+
this._setAttributeIfNotExists(child, 'role', 'tab');
|
221
182
|
|
222
|
-
|
223
|
-
|
224
|
-
|
183
|
+
// set attributes to the related panel too
|
225
184
|
this._setInitialAttributesOnTargetPanel(child);
|
226
185
|
}
|
227
|
-
|
228
186
|
_setInitialAttributesOnTargetPanel(child) {
|
229
|
-
const target =
|
230
|
-
|
187
|
+
const target = SelectorEngine.getElementFromSelector(child);
|
231
188
|
if (!target) {
|
232
189
|
return;
|
233
190
|
}
|
234
|
-
|
235
191
|
this._setAttributeIfNotExists(target, 'role', 'tabpanel');
|
236
|
-
|
237
192
|
if (child.id) {
|
238
|
-
this._setAttributeIfNotExists(target, 'aria-labelledby',
|
193
|
+
this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`);
|
239
194
|
}
|
240
195
|
}
|
241
|
-
|
242
196
|
_toggleDropDown(element, open) {
|
243
197
|
const outerElem = this._getOuterElement(element);
|
244
|
-
|
245
198
|
if (!outerElem.classList.contains(CLASS_DROPDOWN)) {
|
246
199
|
return;
|
247
200
|
}
|
248
|
-
|
249
201
|
const toggle = (selector, className) => {
|
250
|
-
const element =
|
251
|
-
|
202
|
+
const element = SelectorEngine.findOne(selector, outerElem);
|
252
203
|
if (element) {
|
253
204
|
element.classList.toggle(className, open);
|
254
205
|
}
|
255
206
|
};
|
256
|
-
|
257
207
|
toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE);
|
258
208
|
toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW);
|
259
209
|
outerElem.setAttribute('aria-expanded', open);
|
260
210
|
}
|
261
|
-
|
262
211
|
_setAttributeIfNotExists(element, attribute, value) {
|
263
212
|
if (!element.hasAttribute(attribute)) {
|
264
213
|
element.setAttribute(attribute, value);
|
265
214
|
}
|
266
215
|
}
|
267
|
-
|
268
216
|
_elemIsActive(elem) {
|
269
217
|
return elem.classList.contains(CLASS_NAME_ACTIVE);
|
270
|
-
}
|
271
|
-
|
218
|
+
}
|
272
219
|
|
220
|
+
// Try to get the inner element (usually the .nav-link)
|
273
221
|
_getInnerElement(elem) {
|
274
|
-
return elem.matches(SELECTOR_INNER_ELEM) ? elem :
|
275
|
-
}
|
276
|
-
|
222
|
+
return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem);
|
223
|
+
}
|
277
224
|
|
225
|
+
// Try to get the outer element (usually the .nav-item)
|
278
226
|
_getOuterElement(elem) {
|
279
227
|
return elem.closest(SELECTOR_OUTER) || elem;
|
280
|
-
}
|
281
|
-
|
228
|
+
}
|
282
229
|
|
230
|
+
// Static
|
283
231
|
static jQueryInterface(config) {
|
284
232
|
return this.each(function () {
|
285
233
|
const data = Tab.getOrCreateInstance(this);
|
286
|
-
|
287
234
|
if (typeof config !== 'string') {
|
288
235
|
return;
|
289
236
|
}
|
290
|
-
|
291
237
|
if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
|
292
238
|
throw new TypeError(`No method named "${config}"`);
|
293
239
|
}
|
294
|
-
|
295
240
|
data[config]();
|
296
241
|
});
|
297
242
|
}
|
298
|
-
|
299
243
|
}
|
244
|
+
|
300
245
|
/**
|
301
246
|
* Data API implementation
|
302
247
|
*/
|
303
248
|
|
304
|
-
|
305
|
-
EventHandler__default.default.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
|
249
|
+
EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
|
306
250
|
if (['A', 'AREA'].includes(this.tagName)) {
|
307
251
|
event.preventDefault();
|
308
252
|
}
|
309
|
-
|
310
|
-
if (index.isDisabled(this)) {
|
253
|
+
if (index_js.isDisabled(this)) {
|
311
254
|
return;
|
312
255
|
}
|
313
|
-
|
314
256
|
Tab.getOrCreateInstance(this).show();
|
315
257
|
});
|
258
|
+
|
316
259
|
/**
|
317
260
|
* Initialize on focus
|
318
261
|
*/
|
319
|
-
|
320
|
-
|
321
|
-
for (const element of SelectorEngine__default.default.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {
|
262
|
+
EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
|
263
|
+
for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {
|
322
264
|
Tab.getOrCreateInstance(element);
|
323
265
|
}
|
324
266
|
});
|
@@ -326,7 +268,7 @@
|
|
326
268
|
* jQuery
|
327
269
|
*/
|
328
270
|
|
329
|
-
|
271
|
+
index_js.defineJQueryPlugin(Tab);
|
330
272
|
|
331
273
|
return Tab;
|
332
274
|
|
@@ -1,25 +1,21 @@
|
|
1
1
|
/*!
|
2
|
-
* Bootstrap toast.js v5.
|
3
|
-
* Copyright 2011-
|
2
|
+
* Bootstrap toast.js v5.3.0-alpha3 (https://getbootstrap.com/)
|
3
|
+
* Copyright 2011-2023 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.Toast = factory(global.
|
10
|
-
})(this, (function (
|
11
|
-
|
12
|
-
const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e };
|
13
|
-
|
14
|
-
const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
|
15
|
-
const BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./base-component.js'), require('./dom/event-handler.js'), require('./util/component-functions.js'), require('./util/index.js')) :
|
8
|
+
typeof define === 'function' && define.amd ? define(['./base-component', './dom/event-handler', './util/component-functions', './util/index'], factory) :
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Toast = factory(global.BaseComponent, global.EventHandler, global.ComponentFunctions, global.Index));
|
10
|
+
})(this, (function (BaseComponent, EventHandler, componentFunctions_js, index_js) { 'use strict';
|
16
11
|
|
17
12
|
/**
|
18
13
|
* --------------------------------------------------------------------------
|
19
|
-
* Bootstrap
|
14
|
+
* Bootstrap toast.js
|
20
15
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
21
16
|
* --------------------------------------------------------------------------
|
22
17
|
*/
|
18
|
+
|
23
19
|
/**
|
24
20
|
* Constants
|
25
21
|
*/
|
@@ -37,7 +33,6 @@
|
|
37
33
|
const EVENT_SHOWN = `shown${EVENT_KEY}`;
|
38
34
|
const CLASS_NAME_FADE = 'fade';
|
39
35
|
const CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility
|
40
|
-
|
41
36
|
const CLASS_NAME_SHOW = 'show';
|
42
37
|
const CLASS_NAME_SHOWING = 'showing';
|
43
38
|
const DefaultType = {
|
@@ -50,119 +45,91 @@
|
|
50
45
|
autohide: true,
|
51
46
|
delay: 5000
|
52
47
|
};
|
48
|
+
|
53
49
|
/**
|
54
50
|
* Class definition
|
55
51
|
*/
|
56
52
|
|
57
|
-
class Toast extends
|
53
|
+
class Toast extends BaseComponent {
|
58
54
|
constructor(element, config) {
|
59
55
|
super(element, config);
|
60
56
|
this._timeout = null;
|
61
57
|
this._hasMouseInteraction = false;
|
62
58
|
this._hasKeyboardInteraction = false;
|
63
|
-
|
64
59
|
this._setListeners();
|
65
|
-
}
|
66
|
-
|
60
|
+
}
|
67
61
|
|
62
|
+
// Getters
|
68
63
|
static get Default() {
|
69
64
|
return Default;
|
70
65
|
}
|
71
|
-
|
72
66
|
static get DefaultType() {
|
73
67
|
return DefaultType;
|
74
68
|
}
|
75
|
-
|
76
69
|
static get NAME() {
|
77
70
|
return NAME;
|
78
|
-
}
|
79
|
-
|
71
|
+
}
|
80
72
|
|
73
|
+
// Public
|
81
74
|
show() {
|
82
|
-
const showEvent =
|
83
|
-
|
75
|
+
const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);
|
84
76
|
if (showEvent.defaultPrevented) {
|
85
77
|
return;
|
86
78
|
}
|
87
|
-
|
88
79
|
this._clearTimeout();
|
89
|
-
|
90
80
|
if (this._config.animation) {
|
91
81
|
this._element.classList.add(CLASS_NAME_FADE);
|
92
82
|
}
|
93
|
-
|
94
83
|
const complete = () => {
|
95
84
|
this._element.classList.remove(CLASS_NAME_SHOWING);
|
96
|
-
|
97
|
-
EventHandler__default.default.trigger(this._element, EVENT_SHOWN);
|
98
|
-
|
85
|
+
EventHandler.trigger(this._element, EVENT_SHOWN);
|
99
86
|
this._maybeScheduleHide();
|
100
87
|
};
|
101
|
-
|
102
88
|
this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated
|
103
|
-
|
104
|
-
|
105
|
-
index.reflow(this._element);
|
106
|
-
|
89
|
+
index_js.reflow(this._element);
|
107
90
|
this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING);
|
108
|
-
|
109
91
|
this._queueCallback(complete, this._element, this._config.animation);
|
110
92
|
}
|
111
|
-
|
112
93
|
hide() {
|
113
94
|
if (!this.isShown()) {
|
114
95
|
return;
|
115
96
|
}
|
116
|
-
|
117
|
-
const hideEvent = EventHandler__default.default.trigger(this._element, EVENT_HIDE);
|
118
|
-
|
97
|
+
const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);
|
119
98
|
if (hideEvent.defaultPrevented) {
|
120
99
|
return;
|
121
100
|
}
|
122
|
-
|
123
101
|
const complete = () => {
|
124
102
|
this._element.classList.add(CLASS_NAME_HIDE); // @deprecated
|
125
|
-
|
126
|
-
|
127
103
|
this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW);
|
128
|
-
|
129
|
-
EventHandler__default.default.trigger(this._element, EVENT_HIDDEN);
|
104
|
+
EventHandler.trigger(this._element, EVENT_HIDDEN);
|
130
105
|
};
|
131
|
-
|
132
106
|
this._element.classList.add(CLASS_NAME_SHOWING);
|
133
|
-
|
134
107
|
this._queueCallback(complete, this._element, this._config.animation);
|
135
108
|
}
|
136
|
-
|
137
109
|
dispose() {
|
138
110
|
this._clearTimeout();
|
139
|
-
|
140
111
|
if (this.isShown()) {
|
141
112
|
this._element.classList.remove(CLASS_NAME_SHOW);
|
142
113
|
}
|
143
|
-
|
144
114
|
super.dispose();
|
145
115
|
}
|
146
|
-
|
147
116
|
isShown() {
|
148
117
|
return this._element.classList.contains(CLASS_NAME_SHOW);
|
149
|
-
}
|
118
|
+
}
|
150
119
|
|
120
|
+
// Private
|
151
121
|
|
152
122
|
_maybeScheduleHide() {
|
153
123
|
if (!this._config.autohide) {
|
154
124
|
return;
|
155
125
|
}
|
156
|
-
|
157
126
|
if (this._hasMouseInteraction || this._hasKeyboardInteraction) {
|
158
127
|
return;
|
159
128
|
}
|
160
|
-
|
161
129
|
this._timeout = setTimeout(() => {
|
162
130
|
this.hide();
|
163
131
|
}, this._config.delay);
|
164
132
|
}
|
165
|
-
|
166
133
|
_onInteraction(event, isInteracting) {
|
167
134
|
switch (event.type) {
|
168
135
|
case 'mouseover':
|
@@ -171,7 +138,6 @@
|
|
171
138
|
this._hasMouseInteraction = isInteracting;
|
172
139
|
break;
|
173
140
|
}
|
174
|
-
|
175
141
|
case 'focusin':
|
176
142
|
case 'focusout':
|
177
143
|
{
|
@@ -179,61 +145,52 @@
|
|
179
145
|
break;
|
180
146
|
}
|
181
147
|
}
|
182
|
-
|
183
148
|
if (isInteracting) {
|
184
149
|
this._clearTimeout();
|
185
|
-
|
186
150
|
return;
|
187
151
|
}
|
188
|
-
|
189
152
|
const nextElement = event.relatedTarget;
|
190
|
-
|
191
153
|
if (this._element === nextElement || this._element.contains(nextElement)) {
|
192
154
|
return;
|
193
155
|
}
|
194
|
-
|
195
156
|
this._maybeScheduleHide();
|
196
157
|
}
|
197
|
-
|
198
158
|
_setListeners() {
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
159
|
+
EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true));
|
160
|
+
EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false));
|
161
|
+
EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true));
|
162
|
+
EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));
|
203
163
|
}
|
204
|
-
|
205
164
|
_clearTimeout() {
|
206
165
|
clearTimeout(this._timeout);
|
207
166
|
this._timeout = null;
|
208
|
-
}
|
209
|
-
|
167
|
+
}
|
210
168
|
|
169
|
+
// Static
|
211
170
|
static jQueryInterface(config) {
|
212
171
|
return this.each(function () {
|
213
172
|
const data = Toast.getOrCreateInstance(this, config);
|
214
|
-
|
215
173
|
if (typeof config === 'string') {
|
216
174
|
if (typeof data[config] === 'undefined') {
|
217
175
|
throw new TypeError(`No method named "${config}"`);
|
218
176
|
}
|
219
|
-
|
220
177
|
data[config](this);
|
221
178
|
}
|
222
179
|
});
|
223
180
|
}
|
224
|
-
|
225
181
|
}
|
182
|
+
|
226
183
|
/**
|
227
184
|
* Data API implementation
|
228
185
|
*/
|
229
186
|
|
187
|
+
componentFunctions_js.enableDismissTrigger(Toast);
|
230
188
|
|
231
|
-
componentFunctions.enableDismissTrigger(Toast);
|
232
189
|
/**
|
233
190
|
* jQuery
|
234
191
|
*/
|
235
192
|
|
236
|
-
|
193
|
+
index_js.defineJQueryPlugin(Toast);
|
237
194
|
|
238
195
|
return Toast;
|
239
196
|
|