@openeuropa/bcl-bootstrap 0.24.1 → 0.26.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.
- package/bootstrap-icons.svg +1 -1
- package/icons/apple.svg +2 -2
- package/icons/boombox-fill.svg +2 -2
- package/icons/cup-fill.svg +1 -1
- package/icons/cup.svg +1 -1
- package/js/dist/alert.js +3 -12
- package/js/dist/alert.js.map +1 -1
- package/js/dist/base-component.js +32 -18
- package/js/dist/base-component.js.map +1 -1
- package/js/dist/button.js +3 -12
- package/js/dist/button.js.map +1 -1
- package/js/dist/carousel.js +207 -307
- package/js/dist/carousel.js.map +1 -1
- package/js/dist/collapse.js +57 -88
- package/js/dist/collapse.js.map +1 -1
- package/js/dist/dom/data.js +1 -3
- package/js/dist/dom/data.js.map +1 -1
- package/js/dist/dom/event-handler.js +87 -106
- package/js/dist/dom/event-handler.js.map +1 -1
- package/js/dist/dom/manipulator.js +21 -25
- package/js/dist/dom/manipulator.js.map +1 -1
- package/js/dist/dom/selector-engine.js +11 -10
- package/js/dist/dom/selector-engine.js.map +1 -1
- package/js/dist/dropdown.js +83 -115
- package/js/dist/dropdown.js.map +1 -1
- package/js/dist/modal.js +95 -152
- package/js/dist/modal.js.map +1 -1
- package/js/dist/offcanvas.js +75 -58
- package/js/dist/offcanvas.js.map +1 -1
- package/js/dist/popover.js +29 -56
- package/js/dist/popover.js.map +1 -1
- package/js/dist/scrollspy.js +176 -125
- package/js/dist/scrollspy.js.map +1 -1
- package/js/dist/tab.js +207 -92
- package/js/dist/tab.js.map +1 -1
- package/js/dist/toast.js +23 -37
- package/js/dist/toast.js.map +1 -1
- package/js/dist/tooltip.js +259 -348
- package/js/dist/tooltip.js.map +1 -1
- package/js/dist/util/backdrop.js +62 -39
- package/js/dist/util/backdrop.js.map +1 -1
- package/js/dist/util/component-functions.js +1 -1
- package/js/dist/util/component-functions.js.map +1 -1
- package/js/dist/util/config.js +75 -0
- package/js/dist/util/config.js.map +1 -0
- package/js/dist/util/focustrap.js +41 -34
- package/js/dist/util/focustrap.js.map +1 -1
- package/js/dist/util/index.js +56 -52
- package/js/dist/util/index.js.map +1 -1
- package/js/dist/util/sanitizer.js +12 -19
- package/js/dist/util/sanitizer.js.map +1 -1
- package/js/dist/util/scrollbar.js +49 -34
- package/js/dist/util/scrollbar.js.map +1 -1
- package/js/dist/util/swipe.js +151 -0
- package/js/dist/util/swipe.js.map +1 -0
- package/js/dist/util/template-factory.js +173 -0
- package/js/dist/util/template-factory.js.map +1 -0
- package/js/src/alert.js +3 -15
- package/js/src/base-component.js +28 -18
- package/js/src/button.js +3 -17
- package/js/src/carousel.js +203 -319
- package/js/src/collapse.js +61 -94
- package/js/src/dom/data.js +1 -3
- package/js/src/dom/event-handler.js +80 -108
- package/js/src/dom/manipulator.js +22 -31
- package/js/src/dom/selector-engine.js +10 -19
- package/js/src/dropdown.js +84 -138
- package/js/src/modal.js +94 -158
- package/js/src/offcanvas.js +72 -61
- package/js/src/popover.js +31 -62
- package/js/src/scrollspy.js +166 -171
- package/js/src/tab.js +193 -110
- package/js/src/toast.js +19 -41
- package/js/src/tooltip.js +259 -371
- package/js/src/util/backdrop.js +55 -36
- package/js/src/util/component-functions.js +1 -1
- package/js/src/util/config.js +66 -0
- package/js/src/util/focustrap.js +38 -28
- package/js/src/util/index.js +67 -64
- package/js/src/util/sanitizer.js +11 -19
- package/js/src/util/scrollbar.js +47 -30
- package/js/src/util/swipe.js +146 -0
- package/js/src/util/template-factory.js +160 -0
- package/package.json +4 -4
- package/scss/_accordion.scss +52 -24
- package/scss/_alert.scss +18 -4
- package/scss/_badge.scss +14 -5
- package/scss/_breadcrumb.scss +22 -10
- package/scss/_button-group.scss +3 -0
- package/scss/_buttons.scss +97 -22
- package/scss/_card.scss +55 -37
- package/scss/_close.scss +1 -1
- package/scss/_containers.scss +1 -1
- package/scss/_dropdown.scss +83 -75
- package/scss/_functions.scss +7 -7
- package/scss/_grid.scss +3 -3
- package/scss/_helpers.scss +1 -0
- package/scss/_list-group.scss +44 -27
- package/scss/_maps.scss +54 -0
- package/scss/_modal.scss +71 -43
- package/scss/_nav.scss +53 -20
- package/scss/_navbar.scss +91 -150
- package/scss/_offcanvas.scss +119 -59
- package/scss/_pagination.scss +66 -21
- package/scss/_placeholders.scss +1 -1
- package/scss/_popover.scss +90 -52
- package/scss/_progress.scss +20 -9
- package/scss/_reboot.scss +25 -40
- package/scss/_root.scss +40 -21
- package/scss/_spinners.scss +38 -22
- package/scss/_tables.scss +32 -23
- package/scss/_toasts.scss +35 -16
- package/scss/_tooltip.scss +61 -56
- package/scss/_type.scss +2 -0
- package/scss/_utilities.scss +43 -26
- package/scss/_variables.scss +113 -121
- package/scss/bootstrap-grid.scss +3 -6
- package/scss/bootstrap-reboot.scss +3 -7
- package/scss/bootstrap-utilities.scss +3 -6
- package/scss/bootstrap.scss +4 -6
- package/scss/forms/_floating-labels.scss +14 -3
- package/scss/forms/_form-check.scss +28 -5
- package/scss/forms/_form-control.scss +12 -37
- package/scss/forms/_form-select.scss +0 -1
- package/scss/forms/_input-group.scss +15 -7
- package/scss/helpers/_color-bg.scss +10 -0
- package/scss/helpers/_colored-links.scss +2 -2
- package/scss/helpers/_position.scss +7 -1
- package/scss/helpers/_ratio.scss +2 -2
- package/scss/helpers/_vr.scss +1 -1
- package/scss/mixins/_alert.scss +7 -3
- package/scss/mixins/_banner.scss +9 -0
- package/scss/mixins/_breakpoints.scss +8 -8
- package/scss/mixins/_buttons.scss +32 -95
- package/scss/mixins/_container.scss +4 -2
- package/scss/mixins/_forms.scss +8 -0
- package/scss/mixins/_gradients.scss +1 -1
- package/scss/mixins/_grid.scss +12 -12
- package/scss/mixins/_pagination.scss +4 -25
- package/scss/mixins/_reset-text.scss +1 -1
- package/scss/mixins/_table-variants.scss +12 -9
- package/scss/mixins/_utilities.scss +12 -4
package/js/dist/tab.js
CHANGED
|
@@ -12,156 +12,266 @@
|
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* --------------------------------------------------------------------------
|
|
15
|
-
* Bootstrap (v5.
|
|
15
|
+
* Bootstrap (v5.2.0): tab.js
|
|
16
16
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
17
17
|
* --------------------------------------------------------------------------
|
|
18
18
|
*/
|
|
19
19
|
/**
|
|
20
|
-
* ------------------------------------------------------------------------
|
|
21
20
|
* Constants
|
|
22
|
-
* ------------------------------------------------------------------------
|
|
23
21
|
*/
|
|
24
22
|
|
|
25
23
|
const NAME = 'tab';
|
|
26
24
|
const DATA_KEY = 'bs.tab';
|
|
27
25
|
const EVENT_KEY = `.${DATA_KEY}`;
|
|
28
|
-
const DATA_API_KEY = '.data-api';
|
|
29
26
|
const EVENT_HIDE = `hide${EVENT_KEY}`;
|
|
30
27
|
const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
|
|
31
28
|
const EVENT_SHOW = `show${EVENT_KEY}`;
|
|
32
29
|
const EVENT_SHOWN = `shown${EVENT_KEY}`;
|
|
33
|
-
const EVENT_CLICK_DATA_API = `click${EVENT_KEY}
|
|
34
|
-
const
|
|
30
|
+
const EVENT_CLICK_DATA_API = `click${EVENT_KEY}`;
|
|
31
|
+
const EVENT_KEYDOWN = `keydown${EVENT_KEY}`;
|
|
32
|
+
const EVENT_LOAD_DATA_API = `load${EVENT_KEY}`;
|
|
33
|
+
const ARROW_LEFT_KEY = 'ArrowLeft';
|
|
34
|
+
const ARROW_RIGHT_KEY = 'ArrowRight';
|
|
35
|
+
const ARROW_UP_KEY = 'ArrowUp';
|
|
36
|
+
const ARROW_DOWN_KEY = 'ArrowDown';
|
|
35
37
|
const CLASS_NAME_ACTIVE = 'active';
|
|
36
38
|
const CLASS_NAME_FADE = 'fade';
|
|
37
39
|
const CLASS_NAME_SHOW = 'show';
|
|
38
|
-
const
|
|
39
|
-
const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';
|
|
40
|
-
const SELECTOR_ACTIVE = '.active';
|
|
41
|
-
const SELECTOR_ACTIVE_UL = ':scope > li > .active';
|
|
42
|
-
const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]';
|
|
40
|
+
const CLASS_DROPDOWN = 'dropdown';
|
|
43
41
|
const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
|
|
44
|
-
const
|
|
42
|
+
const SELECTOR_DROPDOWN_MENU = '.dropdown-menu';
|
|
43
|
+
const SELECTOR_DROPDOWN_ITEM = '.dropdown-item';
|
|
44
|
+
const NOT_SELECTOR_DROPDOWN_TOGGLE = ':not(.dropdown-toggle)';
|
|
45
|
+
const SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]';
|
|
46
|
+
const SELECTOR_OUTER = '.nav-item, .list-group-item';
|
|
47
|
+
const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;
|
|
48
|
+
const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]'; // todo:v6: could be only `tab`
|
|
49
|
+
|
|
50
|
+
const SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`;
|
|
51
|
+
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"]`;
|
|
45
52
|
/**
|
|
46
|
-
*
|
|
47
|
-
* Class Definition
|
|
48
|
-
* ------------------------------------------------------------------------
|
|
53
|
+
* Class definition
|
|
49
54
|
*/
|
|
50
55
|
|
|
51
56
|
class Tab extends BaseComponent__default.default {
|
|
52
|
-
|
|
57
|
+
constructor(element) {
|
|
58
|
+
super(element);
|
|
59
|
+
this._parent = this._element.closest(SELECTOR_TAB_PANEL);
|
|
60
|
+
|
|
61
|
+
if (!this._parent) {
|
|
62
|
+
return; // todo: should Throw exception on v6
|
|
63
|
+
// throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)
|
|
64
|
+
} // Set up initial aria attributes
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
this._setInitialAttributes(this._parent, this._getChildren());
|
|
68
|
+
|
|
69
|
+
EventHandler__default.default.on(this._element, EVENT_KEYDOWN, event => this._keydown(event));
|
|
70
|
+
} // Getters
|
|
71
|
+
|
|
72
|
+
|
|
53
73
|
static get NAME() {
|
|
54
74
|
return NAME;
|
|
55
75
|
} // Public
|
|
56
76
|
|
|
57
77
|
|
|
58
78
|
show() {
|
|
59
|
-
|
|
79
|
+
// Shows this elem and deactivate the active sibling if exists
|
|
80
|
+
const innerElem = this._element;
|
|
81
|
+
|
|
82
|
+
if (this._elemIsActive(innerElem)) {
|
|
60
83
|
return;
|
|
61
|
-
}
|
|
84
|
+
} // Search for active tab on same parent to deactivate it
|
|
62
85
|
|
|
63
|
-
let previous;
|
|
64
|
-
const target = index.getElementFromSelector(this._element);
|
|
65
86
|
|
|
66
|
-
const
|
|
87
|
+
const active = this._getActiveElem();
|
|
67
88
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
previous = SelectorEngine__default.default.find(itemSelector, listElement);
|
|
71
|
-
previous = previous[previous.length - 1];
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
const hideEvent = previous ? EventHandler__default.default.trigger(previous, EVENT_HIDE, {
|
|
75
|
-
relatedTarget: this._element
|
|
89
|
+
const hideEvent = active ? EventHandler__default.default.trigger(active, EVENT_HIDE, {
|
|
90
|
+
relatedTarget: innerElem
|
|
76
91
|
}) : null;
|
|
77
|
-
const showEvent = EventHandler__default.default.trigger(
|
|
78
|
-
relatedTarget:
|
|
92
|
+
const showEvent = EventHandler__default.default.trigger(innerElem, EVENT_SHOW, {
|
|
93
|
+
relatedTarget: active
|
|
79
94
|
});
|
|
80
95
|
|
|
81
|
-
if (showEvent.defaultPrevented || hideEvent
|
|
96
|
+
if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) {
|
|
82
97
|
return;
|
|
83
98
|
}
|
|
84
99
|
|
|
85
|
-
this.
|
|
100
|
+
this._deactivate(active, innerElem);
|
|
101
|
+
|
|
102
|
+
this._activate(innerElem, active);
|
|
103
|
+
} // Private
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
_activate(element, relatedElem) {
|
|
107
|
+
if (!element) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
element.classList.add(CLASS_NAME_ACTIVE);
|
|
112
|
+
|
|
113
|
+
this._activate(index.getElementFromSelector(element)); // Search and activate/show the proper section
|
|
114
|
+
|
|
86
115
|
|
|
87
116
|
const complete = () => {
|
|
88
|
-
|
|
89
|
-
|
|
117
|
+
if (element.getAttribute('role') !== 'tab') {
|
|
118
|
+
element.classList.add(CLASS_NAME_SHOW);
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
element.focus();
|
|
123
|
+
element.removeAttribute('tabindex');
|
|
124
|
+
element.setAttribute('aria-selected', true);
|
|
125
|
+
|
|
126
|
+
this._toggleDropDown(element, true);
|
|
127
|
+
|
|
128
|
+
EventHandler__default.default.trigger(element, EVENT_SHOWN, {
|
|
129
|
+
relatedTarget: relatedElem
|
|
90
130
|
});
|
|
91
|
-
|
|
92
|
-
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE));
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
_deactivate(element, relatedElem) {
|
|
137
|
+
if (!element) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
element.classList.remove(CLASS_NAME_ACTIVE);
|
|
142
|
+
element.blur();
|
|
143
|
+
|
|
144
|
+
this._deactivate(index.getElementFromSelector(element)); // Search and deactivate the shown section too
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
const complete = () => {
|
|
148
|
+
if (element.getAttribute('role') !== 'tab') {
|
|
149
|
+
element.classList.remove(CLASS_NAME_SHOW);
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
element.setAttribute('aria-selected', false);
|
|
154
|
+
element.setAttribute('tabindex', '-1');
|
|
155
|
+
|
|
156
|
+
this._toggleDropDown(element, false);
|
|
157
|
+
|
|
158
|
+
EventHandler__default.default.trigger(element, EVENT_HIDDEN, {
|
|
159
|
+
relatedTarget: relatedElem
|
|
93
160
|
});
|
|
94
161
|
};
|
|
95
162
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
163
|
+
this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE));
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
_keydown(event) {
|
|
167
|
+
if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)) {
|
|
168
|
+
return;
|
|
100
169
|
}
|
|
101
|
-
} // Private
|
|
102
170
|
|
|
171
|
+
event.stopPropagation(); // stopPropagation/preventDefault both added to support up/down keys without scrolling the page
|
|
103
172
|
|
|
104
|
-
|
|
105
|
-
const
|
|
106
|
-
const
|
|
107
|
-
const isTransitioning = callback && active && active.classList.contains(CLASS_NAME_FADE);
|
|
173
|
+
event.preventDefault();
|
|
174
|
+
const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key);
|
|
175
|
+
const nextActiveElement = index.getNextActiveElement(this._getChildren().filter(element => !index.isDisabled(element)), event.target, isNext, true);
|
|
108
176
|
|
|
109
|
-
|
|
177
|
+
if (nextActiveElement) {
|
|
178
|
+
Tab.getOrCreateInstance(nextActiveElement).show();
|
|
179
|
+
}
|
|
180
|
+
}
|
|
110
181
|
|
|
111
|
-
|
|
112
|
-
|
|
182
|
+
_getChildren() {
|
|
183
|
+
// collection of inner elements
|
|
184
|
+
return SelectorEngine__default.default.find(SELECTOR_INNER_ELEM, this._parent);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
_getActiveElem() {
|
|
188
|
+
return this._getChildren().find(child => this._elemIsActive(child)) || null;
|
|
189
|
+
}
|
|
113
190
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
191
|
+
_setInitialAttributes(parent, children) {
|
|
192
|
+
this._setAttributeIfNotExists(parent, 'role', 'tablist');
|
|
193
|
+
|
|
194
|
+
for (const child of children) {
|
|
195
|
+
this._setInitialAttributesOnChild(child);
|
|
117
196
|
}
|
|
118
197
|
}
|
|
119
198
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
active.classList.remove(CLASS_NAME_ACTIVE);
|
|
123
|
-
const dropdownChild = SelectorEngine__default.default.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode);
|
|
199
|
+
_setInitialAttributesOnChild(child) {
|
|
200
|
+
child = this._getInnerElement(child);
|
|
124
201
|
|
|
125
|
-
|
|
126
|
-
dropdownChild.classList.remove(CLASS_NAME_ACTIVE);
|
|
127
|
-
}
|
|
202
|
+
const isActive = this._elemIsActive(child);
|
|
128
203
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
204
|
+
const outerElem = this._getOuterElement(child);
|
|
205
|
+
|
|
206
|
+
child.setAttribute('aria-selected', isActive);
|
|
207
|
+
|
|
208
|
+
if (outerElem !== child) {
|
|
209
|
+
this._setAttributeIfNotExists(outerElem, 'role', 'presentation');
|
|
132
210
|
}
|
|
133
211
|
|
|
134
|
-
|
|
212
|
+
if (!isActive) {
|
|
213
|
+
child.setAttribute('tabindex', '-1');
|
|
214
|
+
}
|
|
135
215
|
|
|
136
|
-
|
|
137
|
-
|
|
216
|
+
this._setAttributeIfNotExists(child, 'role', 'tab'); // set attributes to the related panel too
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
this._setInitialAttributesOnTargetPanel(child);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
_setInitialAttributesOnTargetPanel(child) {
|
|
223
|
+
const target = index.getElementFromSelector(child);
|
|
224
|
+
|
|
225
|
+
if (!target) {
|
|
226
|
+
return;
|
|
138
227
|
}
|
|
139
228
|
|
|
140
|
-
|
|
229
|
+
this._setAttributeIfNotExists(target, 'role', 'tabpanel');
|
|
141
230
|
|
|
142
|
-
if (
|
|
143
|
-
|
|
231
|
+
if (child.id) {
|
|
232
|
+
this._setAttributeIfNotExists(target, 'aria-labelledby', `#${child.id}`);
|
|
144
233
|
}
|
|
234
|
+
}
|
|
145
235
|
|
|
146
|
-
|
|
236
|
+
_toggleDropDown(element, open) {
|
|
237
|
+
const outerElem = this._getOuterElement(element);
|
|
147
238
|
|
|
148
|
-
if (
|
|
149
|
-
|
|
239
|
+
if (!outerElem.classList.contains(CLASS_DROPDOWN)) {
|
|
240
|
+
return;
|
|
150
241
|
}
|
|
151
242
|
|
|
152
|
-
|
|
153
|
-
const
|
|
243
|
+
const toggle = (selector, className) => {
|
|
244
|
+
const element = SelectorEngine__default.default.findOne(selector, outerElem);
|
|
154
245
|
|
|
155
|
-
if (
|
|
156
|
-
|
|
246
|
+
if (element) {
|
|
247
|
+
element.classList.toggle(className, open);
|
|
157
248
|
}
|
|
249
|
+
};
|
|
158
250
|
|
|
159
|
-
|
|
160
|
-
|
|
251
|
+
toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE);
|
|
252
|
+
toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW);
|
|
253
|
+
toggle(SELECTOR_DROPDOWN_ITEM, CLASS_NAME_ACTIVE);
|
|
254
|
+
outerElem.setAttribute('aria-expanded', open);
|
|
255
|
+
}
|
|
161
256
|
|
|
162
|
-
|
|
163
|
-
|
|
257
|
+
_setAttributeIfNotExists(element, attribute, value) {
|
|
258
|
+
if (!element.hasAttribute(attribute)) {
|
|
259
|
+
element.setAttribute(attribute, value);
|
|
164
260
|
}
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
_elemIsActive(elem) {
|
|
264
|
+
return elem.classList.contains(CLASS_NAME_ACTIVE);
|
|
265
|
+
} // Try to get the inner element (usually the .nav-link)
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
_getInnerElement(elem) {
|
|
269
|
+
return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine__default.default.findOne(SELECTOR_INNER_ELEM, elem);
|
|
270
|
+
} // Try to get the outer element (usually the .nav-item)
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
_getOuterElement(elem) {
|
|
274
|
+
return elem.closest(SELECTOR_OUTER) || elem;
|
|
165
275
|
} // Static
|
|
166
276
|
|
|
167
277
|
|
|
@@ -169,21 +279,21 @@
|
|
|
169
279
|
return this.each(function () {
|
|
170
280
|
const data = Tab.getOrCreateInstance(this);
|
|
171
281
|
|
|
172
|
-
if (typeof config
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
}
|
|
282
|
+
if (typeof config !== 'string') {
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
176
285
|
|
|
177
|
-
|
|
286
|
+
if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
|
|
287
|
+
throw new TypeError(`No method named "${config}"`);
|
|
178
288
|
}
|
|
289
|
+
|
|
290
|
+
data[config]();
|
|
179
291
|
});
|
|
180
292
|
}
|
|
181
293
|
|
|
182
294
|
}
|
|
183
295
|
/**
|
|
184
|
-
*
|
|
185
|
-
* Data Api implementation
|
|
186
|
-
* ------------------------------------------------------------------------
|
|
296
|
+
* Data API implementation
|
|
187
297
|
*/
|
|
188
298
|
|
|
189
299
|
|
|
@@ -196,14 +306,19 @@
|
|
|
196
306
|
return;
|
|
197
307
|
}
|
|
198
308
|
|
|
199
|
-
|
|
200
|
-
|
|
309
|
+
Tab.getOrCreateInstance(this).show();
|
|
310
|
+
});
|
|
311
|
+
/**
|
|
312
|
+
* Initialize on focus
|
|
313
|
+
*/
|
|
314
|
+
|
|
315
|
+
EventHandler__default.default.on(window, EVENT_LOAD_DATA_API, () => {
|
|
316
|
+
for (const element of SelectorEngine__default.default.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {
|
|
317
|
+
Tab.getOrCreateInstance(element);
|
|
318
|
+
}
|
|
201
319
|
});
|
|
202
320
|
/**
|
|
203
|
-
* ------------------------------------------------------------------------
|
|
204
321
|
* jQuery
|
|
205
|
-
* ------------------------------------------------------------------------
|
|
206
|
-
* add .Tab to jQuery only if jQuery is present
|
|
207
322
|
*/
|
|
208
323
|
|
|
209
324
|
index.defineJQueryPlugin(Tab);
|
package/js/dist/tab.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tab.js","sources":["../src/tab.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isDisabled,\n reflow\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_UL = ':scope > li > .active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab extends BaseComponent {\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n show() {\n if ((this._element.parentNode &&\n this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n this._element.classList.contains(CLASS_NAME_ACTIVE))) {\n return\n }\n\n let previous\n const target = getElementFromSelector(this._element)\n const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP)\n\n if (listElement) {\n const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE\n previous = SelectorEngine.find(itemSelector, listElement)\n previous = previous[previous.length - 1]\n }\n\n const hideEvent = previous ?\n EventHandler.trigger(previous, EVENT_HIDE, {\n relatedTarget: this._element\n }) :\n null\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget: previous\n })\n\n if (showEvent.defaultPrevented || (hideEvent !== null && hideEvent.defaultPrevented)) {\n return\n }\n\n this._activate(this._element, listElement)\n\n const complete = () => {\n EventHandler.trigger(previous, EVENT_HIDDEN, {\n relatedTarget: this._element\n })\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget: previous\n })\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n // Private\n\n _activate(element, container, callback) {\n const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n SelectorEngine.find(SELECTOR_ACTIVE_UL, container) :\n SelectorEngine.children(container, SELECTOR_ACTIVE)\n\n const active = activeElements[0]\n const isTransitioning = callback && (active && active.classList.contains(CLASS_NAME_FADE))\n\n const complete = () => this._transitionComplete(element, active, callback)\n\n if (active && isTransitioning) {\n active.classList.remove(CLASS_NAME_SHOW)\n this._queueCallback(complete, element, true)\n } else {\n complete()\n }\n }\n\n _transitionComplete(element, active, callback) {\n if (active) {\n active.classList.remove(CLASS_NAME_ACTIVE)\n\n const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode)\n\n if (dropdownChild) {\n dropdownChild.classList.remove(CLASS_NAME_ACTIVE)\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false)\n }\n }\n\n element.classList.add(CLASS_NAME_ACTIVE)\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true)\n }\n\n reflow(element)\n\n if (element.classList.contains(CLASS_NAME_FADE)) {\n element.classList.add(CLASS_NAME_SHOW)\n }\n\n let parent = element.parentNode\n if (parent && parent.nodeName === 'LI') {\n parent = parent.parentNode\n }\n\n if (parent && parent.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {\n const dropdownElement = element.closest(SELECTOR_DROPDOWN)\n\n if (dropdownElement) {\n SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement)\n .forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE))\n }\n\n element.setAttribute('aria-expanded', true)\n }\n\n if (callback) {\n callback()\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tab.getOrCreateInstance(this)\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n const data = Tab.getOrCreateInstance(this)\n data.show()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tab to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Tab)\n\nexport default Tab\n"],"names":["NAME","DATA_KEY","EVENT_KEY","DATA_API_KEY","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","EVENT_CLICK_DATA_API","CLASS_NAME_DROPDOWN_MENU","CLASS_NAME_ACTIVE","CLASS_NAME_FADE","CLASS_NAME_SHOW","SELECTOR_DROPDOWN","SELECTOR_NAV_LIST_GROUP","SELECTOR_ACTIVE","SELECTOR_ACTIVE_UL","SELECTOR_DATA_TOGGLE","SELECTOR_DROPDOWN_TOGGLE","SELECTOR_DROPDOWN_ACTIVE_CHILD","Tab","BaseComponent","show","_element","parentNode","nodeType","Node","ELEMENT_NODE","classList","contains","previous","target","getElementFromSelector","listElement","closest","itemSelector","nodeName","SelectorEngine","find","length","hideEvent","EventHandler","trigger","relatedTarget","showEvent","defaultPrevented","_activate","complete","element","container","callback","activeElements","children","active","isTransitioning","_transitionComplete","remove","_queueCallback","dropdownChild","findOne","getAttribute","setAttribute","add","reflow","parent","dropdownElement","forEach","dropdown","jQueryInterface","config","each","data","getOrCreateInstance","TypeError","on","document","event","includes","tagName","preventDefault","isDisabled","defineJQueryPlugin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tab.js","sources":["../src/tab.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.0): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin, getElementFromSelector, getNextActiveElement, isDisabled } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_DROPDOWN = 'dropdown'\n\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu'\nconst SELECTOR_DROPDOWN_ITEM = '.dropdown-item'\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = ':not(.dropdown-toggle)'\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]' // todo:v6: could be only `tab`\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst 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\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n constructor(element) {\n super(element)\n this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n if (!this._parent) {\n return\n // todo: should Throw exception on v6\n // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)\n }\n\n // Set up initial aria attributes\n this._setInitialAttributes(this._parent, this._getChildren())\n\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n show() { // Shows this elem and deactivate the active sibling if exists\n const innerElem = this._element\n if (this._elemIsActive(innerElem)) {\n return\n }\n\n // Search for active tab on same parent to deactivate it\n const active = this._getActiveElem()\n\n const hideEvent = active ?\n EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n null\n\n const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n return\n }\n\n this._deactivate(active, innerElem)\n this._activate(innerElem, active)\n }\n\n // Private\n _activate(element, relatedElem) {\n if (!element) {\n return\n }\n\n element.classList.add(CLASS_NAME_ACTIVE)\n\n this._activate(getElementFromSelector(element)) // Search and activate/show the proper section\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.add(CLASS_NAME_SHOW)\n return\n }\n\n element.focus()\n element.removeAttribute('tabindex')\n element.setAttribute('aria-selected', true)\n this._toggleDropDown(element, true)\n EventHandler.trigger(element, EVENT_SHOWN, {\n relatedTarget: relatedElem\n })\n }\n\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n }\n\n _deactivate(element, relatedElem) {\n if (!element) {\n return\n }\n\n element.classList.remove(CLASS_NAME_ACTIVE)\n element.blur()\n\n this._deactivate(getElementFromSelector(element)) // Search and deactivate the shown section too\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.remove(CLASS_NAME_SHOW)\n return\n }\n\n element.setAttribute('aria-selected', false)\n element.setAttribute('tabindex', '-1')\n this._toggleDropDown(element, false)\n EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n }\n\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n }\n\n _keydown(event) {\n if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key))) {\n return\n }\n\n event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n event.preventDefault()\n const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n const nextActiveElement = getNextActiveElement(this._getChildren().filter(element => !isDisabled(element)), event.target, isNext, true)\n\n if (nextActiveElement) {\n Tab.getOrCreateInstance(nextActiveElement).show()\n }\n }\n\n _getChildren() { // collection of inner elements\n return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n }\n\n _getActiveElem() {\n return this._getChildren().find(child => this._elemIsActive(child)) || null\n }\n\n _setInitialAttributes(parent, children) {\n this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n for (const child of children) {\n this._setInitialAttributesOnChild(child)\n }\n }\n\n _setInitialAttributesOnChild(child) {\n child = this._getInnerElement(child)\n const isActive = this._elemIsActive(child)\n const outerElem = this._getOuterElement(child)\n child.setAttribute('aria-selected', isActive)\n\n if (outerElem !== child) {\n this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n }\n\n if (!isActive) {\n child.setAttribute('tabindex', '-1')\n }\n\n this._setAttributeIfNotExists(child, 'role', 'tab')\n\n // set attributes to the related panel too\n this._setInitialAttributesOnTargetPanel(child)\n }\n\n _setInitialAttributesOnTargetPanel(child) {\n const target = getElementFromSelector(child)\n\n if (!target) {\n return\n }\n\n this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n if (child.id) {\n this._setAttributeIfNotExists(target, 'aria-labelledby', `#${child.id}`)\n }\n }\n\n _toggleDropDown(element, open) {\n const outerElem = this._getOuterElement(element)\n if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n return\n }\n\n const toggle = (selector, className) => {\n const element = SelectorEngine.findOne(selector, outerElem)\n if (element) {\n element.classList.toggle(className, open)\n }\n }\n\n toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE)\n toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW)\n toggle(SELECTOR_DROPDOWN_ITEM, CLASS_NAME_ACTIVE)\n outerElem.setAttribute('aria-expanded', open)\n }\n\n _setAttributeIfNotExists(element, attribute, value) {\n if (!element.hasAttribute(attribute)) {\n element.setAttribute(attribute, value)\n }\n }\n\n _elemIsActive(elem) {\n return elem.classList.contains(CLASS_NAME_ACTIVE)\n }\n\n // Try to get the inner element (usually the .nav-link)\n _getInnerElement(elem) {\n return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n }\n\n // Try to get the outer element (usually the .nav-item)\n _getOuterElement(elem) {\n return elem.closest(SELECTOR_OUTER) || elem\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tab.getOrCreateInstance(this)\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n })\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n Tab.getOrCreateInstance(element)\n }\n})\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tab)\n\nexport default Tab\n"],"names":["NAME","DATA_KEY","EVENT_KEY","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","EVENT_CLICK_DATA_API","EVENT_KEYDOWN","EVENT_LOAD_DATA_API","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","CLASS_NAME_ACTIVE","CLASS_NAME_FADE","CLASS_NAME_SHOW","CLASS_DROPDOWN","SELECTOR_DROPDOWN_TOGGLE","SELECTOR_DROPDOWN_MENU","SELECTOR_DROPDOWN_ITEM","NOT_SELECTOR_DROPDOWN_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER","SELECTOR_DATA_TOGGLE","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","BaseComponent","constructor","element","_parent","_element","closest","_setInitialAttributes","_getChildren","EventHandler","on","event","_keydown","show","innerElem","_elemIsActive","active","_getActiveElem","hideEvent","trigger","relatedTarget","showEvent","defaultPrevented","_deactivate","_activate","relatedElem","classList","add","getElementFromSelector","complete","getAttribute","focus","removeAttribute","setAttribute","_toggleDropDown","_queueCallback","contains","remove","blur","includes","key","stopPropagation","preventDefault","isNext","nextActiveElement","getNextActiveElement","filter","isDisabled","target","getOrCreateInstance","SelectorEngine","find","child","parent","children","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","id","open","toggle","selector","className","findOne","attribute","value","hasAttribute","elem","matches","jQueryInterface","config","each","data","undefined","startsWith","TypeError","document","tagName","window","defineJQueryPlugin"],"mappings":"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"}
|
package/js/dist/toast.js
CHANGED
|
@@ -1,25 +1,22 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./util/index'), require('./dom/event-handler'), require('./
|
|
3
|
-
typeof define === 'function' && define.amd ? define(['./util/index', './dom/event-handler', './
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Toast = factory(global.Index, global.EventHandler, global.
|
|
5
|
-
})(this, (function (index, EventHandler,
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./util/index'), require('./dom/event-handler'), require('./base-component'), require('./util/component-functions')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define(['./util/index', './dom/event-handler', './base-component', './util/component-functions'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Toast = factory(global.Index, global.EventHandler, global.BaseComponent, global.ComponentFunctions));
|
|
5
|
+
})(this, (function (index, EventHandler, BaseComponent, componentFunctions) { 'use strict';
|
|
6
6
|
|
|
7
7
|
const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e };
|
|
8
8
|
|
|
9
9
|
const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
|
|
10
|
-
const Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);
|
|
11
10
|
const BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
|
|
12
11
|
|
|
13
12
|
/**
|
|
14
13
|
* --------------------------------------------------------------------------
|
|
15
|
-
* Bootstrap (v5.
|
|
14
|
+
* Bootstrap (v5.2.0): toast.js
|
|
16
15
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
17
16
|
* --------------------------------------------------------------------------
|
|
18
17
|
*/
|
|
19
18
|
/**
|
|
20
|
-
* ------------------------------------------------------------------------
|
|
21
19
|
* Constants
|
|
22
|
-
* ------------------------------------------------------------------------
|
|
23
20
|
*/
|
|
24
21
|
|
|
25
22
|
const NAME = 'toast';
|
|
@@ -49,15 +46,12 @@
|
|
|
49
46
|
delay: 5000
|
|
50
47
|
};
|
|
51
48
|
/**
|
|
52
|
-
*
|
|
53
|
-
* Class Definition
|
|
54
|
-
* ------------------------------------------------------------------------
|
|
49
|
+
* Class definition
|
|
55
50
|
*/
|
|
56
51
|
|
|
57
52
|
class Toast extends BaseComponent__default.default {
|
|
58
53
|
constructor(element, config) {
|
|
59
|
-
super(element);
|
|
60
|
-
this._config = this._getConfig(config);
|
|
54
|
+
super(element, config);
|
|
61
55
|
this._timeout = null;
|
|
62
56
|
this._hasMouseInteraction = false;
|
|
63
57
|
this._hasKeyboardInteraction = false;
|
|
@@ -66,14 +60,14 @@
|
|
|
66
60
|
} // Getters
|
|
67
61
|
|
|
68
62
|
|
|
69
|
-
static get DefaultType() {
|
|
70
|
-
return DefaultType;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
63
|
static get Default() {
|
|
74
64
|
return Default;
|
|
75
65
|
}
|
|
76
66
|
|
|
67
|
+
static get DefaultType() {
|
|
68
|
+
return DefaultType;
|
|
69
|
+
}
|
|
70
|
+
|
|
77
71
|
static get NAME() {
|
|
78
72
|
return NAME;
|
|
79
73
|
} // Public
|
|
@@ -105,15 +99,13 @@
|
|
|
105
99
|
|
|
106
100
|
index.reflow(this._element);
|
|
107
101
|
|
|
108
|
-
this._element.classList.add(CLASS_NAME_SHOW);
|
|
109
|
-
|
|
110
|
-
this._element.classList.add(CLASS_NAME_SHOWING);
|
|
102
|
+
this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING);
|
|
111
103
|
|
|
112
104
|
this._queueCallback(complete, this._element, this._config.animation);
|
|
113
105
|
}
|
|
114
106
|
|
|
115
107
|
hide() {
|
|
116
|
-
if (!this.
|
|
108
|
+
if (!this.isShown()) {
|
|
117
109
|
return;
|
|
118
110
|
}
|
|
119
111
|
|
|
@@ -127,9 +119,7 @@
|
|
|
127
119
|
this._element.classList.add(CLASS_NAME_HIDE); // @deprecated
|
|
128
120
|
|
|
129
121
|
|
|
130
|
-
this._element.classList.remove(CLASS_NAME_SHOWING);
|
|
131
|
-
|
|
132
|
-
this._element.classList.remove(CLASS_NAME_SHOW);
|
|
122
|
+
this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW);
|
|
133
123
|
|
|
134
124
|
EventHandler__default.default.trigger(this._element, EVENT_HIDDEN);
|
|
135
125
|
};
|
|
@@ -142,22 +132,17 @@
|
|
|
142
132
|
dispose() {
|
|
143
133
|
this._clearTimeout();
|
|
144
134
|
|
|
145
|
-
if (this.
|
|
135
|
+
if (this.isShown()) {
|
|
146
136
|
this._element.classList.remove(CLASS_NAME_SHOW);
|
|
147
137
|
}
|
|
148
138
|
|
|
149
139
|
super.dispose();
|
|
150
|
-
}
|
|
140
|
+
}
|
|
151
141
|
|
|
142
|
+
isShown() {
|
|
143
|
+
return this._element.classList.contains(CLASS_NAME_SHOW);
|
|
144
|
+
} // Private
|
|
152
145
|
|
|
153
|
-
_getConfig(config) {
|
|
154
|
-
config = { ...Default,
|
|
155
|
-
...Manipulator__default.default.getDataAttributes(this._element),
|
|
156
|
-
...(typeof config === 'object' && config ? config : {})
|
|
157
|
-
};
|
|
158
|
-
index.typeCheckConfig(NAME, config, this.constructor.DefaultType);
|
|
159
|
-
return config;
|
|
160
|
-
}
|
|
161
146
|
|
|
162
147
|
_maybeScheduleHide() {
|
|
163
148
|
if (!this._config.autohide) {
|
|
@@ -229,13 +214,14 @@
|
|
|
229
214
|
}
|
|
230
215
|
|
|
231
216
|
}
|
|
217
|
+
/**
|
|
218
|
+
* Data API implementation
|
|
219
|
+
*/
|
|
220
|
+
|
|
232
221
|
|
|
233
222
|
componentFunctions.enableDismissTrigger(Toast);
|
|
234
223
|
/**
|
|
235
|
-
* ------------------------------------------------------------------------
|
|
236
224
|
* jQuery
|
|
237
|
-
* ------------------------------------------------------------------------
|
|
238
|
-
* add .Toast to jQuery only if jQuery is present
|
|
239
225
|
*/
|
|
240
226
|
|
|
241
227
|
index.defineJQueryPlugin(Toast);
|