@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.
Files changed (142) hide show
  1. package/bootstrap-icons.svg +1 -1
  2. package/icons/apple.svg +2 -2
  3. package/icons/boombox-fill.svg +2 -2
  4. package/icons/cup-fill.svg +1 -1
  5. package/icons/cup.svg +1 -1
  6. package/js/dist/alert.js +3 -12
  7. package/js/dist/alert.js.map +1 -1
  8. package/js/dist/base-component.js +32 -18
  9. package/js/dist/base-component.js.map +1 -1
  10. package/js/dist/button.js +3 -12
  11. package/js/dist/button.js.map +1 -1
  12. package/js/dist/carousel.js +207 -307
  13. package/js/dist/carousel.js.map +1 -1
  14. package/js/dist/collapse.js +57 -88
  15. package/js/dist/collapse.js.map +1 -1
  16. package/js/dist/dom/data.js +1 -3
  17. package/js/dist/dom/data.js.map +1 -1
  18. package/js/dist/dom/event-handler.js +87 -106
  19. package/js/dist/dom/event-handler.js.map +1 -1
  20. package/js/dist/dom/manipulator.js +21 -25
  21. package/js/dist/dom/manipulator.js.map +1 -1
  22. package/js/dist/dom/selector-engine.js +11 -10
  23. package/js/dist/dom/selector-engine.js.map +1 -1
  24. package/js/dist/dropdown.js +83 -115
  25. package/js/dist/dropdown.js.map +1 -1
  26. package/js/dist/modal.js +95 -152
  27. package/js/dist/modal.js.map +1 -1
  28. package/js/dist/offcanvas.js +75 -58
  29. package/js/dist/offcanvas.js.map +1 -1
  30. package/js/dist/popover.js +29 -56
  31. package/js/dist/popover.js.map +1 -1
  32. package/js/dist/scrollspy.js +176 -125
  33. package/js/dist/scrollspy.js.map +1 -1
  34. package/js/dist/tab.js +207 -92
  35. package/js/dist/tab.js.map +1 -1
  36. package/js/dist/toast.js +23 -37
  37. package/js/dist/toast.js.map +1 -1
  38. package/js/dist/tooltip.js +259 -348
  39. package/js/dist/tooltip.js.map +1 -1
  40. package/js/dist/util/backdrop.js +62 -39
  41. package/js/dist/util/backdrop.js.map +1 -1
  42. package/js/dist/util/component-functions.js +1 -1
  43. package/js/dist/util/component-functions.js.map +1 -1
  44. package/js/dist/util/config.js +75 -0
  45. package/js/dist/util/config.js.map +1 -0
  46. package/js/dist/util/focustrap.js +41 -34
  47. package/js/dist/util/focustrap.js.map +1 -1
  48. package/js/dist/util/index.js +56 -52
  49. package/js/dist/util/index.js.map +1 -1
  50. package/js/dist/util/sanitizer.js +12 -19
  51. package/js/dist/util/sanitizer.js.map +1 -1
  52. package/js/dist/util/scrollbar.js +49 -34
  53. package/js/dist/util/scrollbar.js.map +1 -1
  54. package/js/dist/util/swipe.js +151 -0
  55. package/js/dist/util/swipe.js.map +1 -0
  56. package/js/dist/util/template-factory.js +173 -0
  57. package/js/dist/util/template-factory.js.map +1 -0
  58. package/js/src/alert.js +3 -15
  59. package/js/src/base-component.js +28 -18
  60. package/js/src/button.js +3 -17
  61. package/js/src/carousel.js +203 -319
  62. package/js/src/collapse.js +61 -94
  63. package/js/src/dom/data.js +1 -3
  64. package/js/src/dom/event-handler.js +80 -108
  65. package/js/src/dom/manipulator.js +22 -31
  66. package/js/src/dom/selector-engine.js +10 -19
  67. package/js/src/dropdown.js +84 -138
  68. package/js/src/modal.js +94 -158
  69. package/js/src/offcanvas.js +72 -61
  70. package/js/src/popover.js +31 -62
  71. package/js/src/scrollspy.js +166 -171
  72. package/js/src/tab.js +193 -110
  73. package/js/src/toast.js +19 -41
  74. package/js/src/tooltip.js +259 -371
  75. package/js/src/util/backdrop.js +55 -36
  76. package/js/src/util/component-functions.js +1 -1
  77. package/js/src/util/config.js +66 -0
  78. package/js/src/util/focustrap.js +38 -28
  79. package/js/src/util/index.js +67 -64
  80. package/js/src/util/sanitizer.js +11 -19
  81. package/js/src/util/scrollbar.js +47 -30
  82. package/js/src/util/swipe.js +146 -0
  83. package/js/src/util/template-factory.js +160 -0
  84. package/package.json +4 -4
  85. package/scss/_accordion.scss +52 -24
  86. package/scss/_alert.scss +18 -4
  87. package/scss/_badge.scss +14 -5
  88. package/scss/_breadcrumb.scss +22 -10
  89. package/scss/_button-group.scss +3 -0
  90. package/scss/_buttons.scss +97 -22
  91. package/scss/_card.scss +55 -37
  92. package/scss/_close.scss +1 -1
  93. package/scss/_containers.scss +1 -1
  94. package/scss/_dropdown.scss +83 -75
  95. package/scss/_functions.scss +7 -7
  96. package/scss/_grid.scss +3 -3
  97. package/scss/_helpers.scss +1 -0
  98. package/scss/_list-group.scss +44 -27
  99. package/scss/_maps.scss +54 -0
  100. package/scss/_modal.scss +71 -43
  101. package/scss/_nav.scss +53 -20
  102. package/scss/_navbar.scss +91 -150
  103. package/scss/_offcanvas.scss +119 -59
  104. package/scss/_pagination.scss +66 -21
  105. package/scss/_placeholders.scss +1 -1
  106. package/scss/_popover.scss +90 -52
  107. package/scss/_progress.scss +20 -9
  108. package/scss/_reboot.scss +25 -40
  109. package/scss/_root.scss +40 -21
  110. package/scss/_spinners.scss +38 -22
  111. package/scss/_tables.scss +32 -23
  112. package/scss/_toasts.scss +35 -16
  113. package/scss/_tooltip.scss +61 -56
  114. package/scss/_type.scss +2 -0
  115. package/scss/_utilities.scss +43 -26
  116. package/scss/_variables.scss +113 -121
  117. package/scss/bootstrap-grid.scss +3 -6
  118. package/scss/bootstrap-reboot.scss +3 -7
  119. package/scss/bootstrap-utilities.scss +3 -6
  120. package/scss/bootstrap.scss +4 -6
  121. package/scss/forms/_floating-labels.scss +14 -3
  122. package/scss/forms/_form-check.scss +28 -5
  123. package/scss/forms/_form-control.scss +12 -37
  124. package/scss/forms/_form-select.scss +0 -1
  125. package/scss/forms/_input-group.scss +15 -7
  126. package/scss/helpers/_color-bg.scss +10 -0
  127. package/scss/helpers/_colored-links.scss +2 -2
  128. package/scss/helpers/_position.scss +7 -1
  129. package/scss/helpers/_ratio.scss +2 -2
  130. package/scss/helpers/_vr.scss +1 -1
  131. package/scss/mixins/_alert.scss +7 -3
  132. package/scss/mixins/_banner.scss +9 -0
  133. package/scss/mixins/_breakpoints.scss +8 -8
  134. package/scss/mixins/_buttons.scss +32 -95
  135. package/scss/mixins/_container.scss +4 -2
  136. package/scss/mixins/_forms.scss +8 -0
  137. package/scss/mixins/_gradients.scss +1 -1
  138. package/scss/mixins/_grid.scss +12 -12
  139. package/scss/mixins/_pagination.scss +4 -25
  140. package/scss/mixins/_reset-text.scss +1 -1
  141. package/scss/mixins/_table-variants.scss +12 -9
  142. 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.1.3): tab.js
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}${DATA_API_KEY}`;
34
- const CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';
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 SELECTOR_DROPDOWN = '.dropdown';
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 SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active';
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
- // Getters
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
- if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && this._element.classList.contains(CLASS_NAME_ACTIVE)) {
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 listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP);
87
+ const active = this._getActiveElem();
67
88
 
68
- if (listElement) {
69
- const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE;
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(this._element, EVENT_SHOW, {
78
- relatedTarget: previous
92
+ const showEvent = EventHandler__default.default.trigger(innerElem, EVENT_SHOW, {
93
+ relatedTarget: active
79
94
  });
80
95
 
81
- if (showEvent.defaultPrevented || hideEvent !== null && hideEvent.defaultPrevented) {
96
+ if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) {
82
97
  return;
83
98
  }
84
99
 
85
- this._activate(this._element, listElement);
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
- EventHandler__default.default.trigger(previous, EVENT_HIDDEN, {
89
- relatedTarget: this._element
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
- EventHandler__default.default.trigger(this._element, EVENT_SHOWN, {
92
- relatedTarget: previous
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
- if (target) {
97
- this._activate(target, target.parentNode, complete);
98
- } else {
99
- complete();
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
- _activate(element, container, callback) {
105
- const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? SelectorEngine__default.default.find(SELECTOR_ACTIVE_UL, container) : SelectorEngine__default.default.children(container, SELECTOR_ACTIVE);
106
- const active = activeElements[0];
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
- const complete = () => this._transitionComplete(element, active, callback);
177
+ if (nextActiveElement) {
178
+ Tab.getOrCreateInstance(nextActiveElement).show();
179
+ }
180
+ }
110
181
 
111
- if (active && isTransitioning) {
112
- active.classList.remove(CLASS_NAME_SHOW);
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
- this._queueCallback(complete, element, true);
115
- } else {
116
- complete();
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
- _transitionComplete(element, active, callback) {
121
- if (active) {
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
- if (dropdownChild) {
126
- dropdownChild.classList.remove(CLASS_NAME_ACTIVE);
127
- }
202
+ const isActive = this._elemIsActive(child);
128
203
 
129
- if (active.getAttribute('role') === 'tab') {
130
- active.setAttribute('aria-selected', false);
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
- element.classList.add(CLASS_NAME_ACTIVE);
212
+ if (!isActive) {
213
+ child.setAttribute('tabindex', '-1');
214
+ }
135
215
 
136
- if (element.getAttribute('role') === 'tab') {
137
- element.setAttribute('aria-selected', true);
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
- index.reflow(element);
229
+ this._setAttributeIfNotExists(target, 'role', 'tabpanel');
141
230
 
142
- if (element.classList.contains(CLASS_NAME_FADE)) {
143
- element.classList.add(CLASS_NAME_SHOW);
231
+ if (child.id) {
232
+ this._setAttributeIfNotExists(target, 'aria-labelledby', `#${child.id}`);
144
233
  }
234
+ }
145
235
 
146
- let parent = element.parentNode;
236
+ _toggleDropDown(element, open) {
237
+ const outerElem = this._getOuterElement(element);
147
238
 
148
- if (parent && parent.nodeName === 'LI') {
149
- parent = parent.parentNode;
239
+ if (!outerElem.classList.contains(CLASS_DROPDOWN)) {
240
+ return;
150
241
  }
151
242
 
152
- if (parent && parent.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {
153
- const dropdownElement = element.closest(SELECTOR_DROPDOWN);
243
+ const toggle = (selector, className) => {
244
+ const element = SelectorEngine__default.default.findOne(selector, outerElem);
154
245
 
155
- if (dropdownElement) {
156
- SelectorEngine__default.default.find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement).forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE));
246
+ if (element) {
247
+ element.classList.toggle(className, open);
157
248
  }
249
+ };
158
250
 
159
- element.setAttribute('aria-expanded', true);
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
- if (callback) {
163
- callback();
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 === 'string') {
173
- if (typeof data[config] === 'undefined') {
174
- throw new TypeError(`No method named "${config}"`);
175
- }
282
+ if (typeof config !== 'string') {
283
+ return;
284
+ }
176
285
 
177
- data[config]();
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
- const data = Tab.getOrCreateInstance(this);
200
- data.show();
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);
@@ -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('./dom/manipulator'), require('./base-component'), require('./util/component-functions')) :
3
- typeof define === 'function' && define.amd ? define(['./util/index', './dom/event-handler', './dom/manipulator', './base-component', './util/component-functions'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Toast = factory(global.Index, global.EventHandler, global.Manipulator, global.BaseComponent, global.ComponentFunctions));
5
- })(this, (function (index, EventHandler, Manipulator, BaseComponent, componentFunctions) { 'use strict';
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.1.3): toast.js
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._element.classList.contains(CLASS_NAME_SHOW)) {
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._element.classList.contains(CLASS_NAME_SHOW)) {
135
+ if (this.isShown()) {
146
136
  this._element.classList.remove(CLASS_NAME_SHOW);
147
137
  }
148
138
 
149
139
  super.dispose();
150
- } // Private
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);