bootstrap 5.1.3 → 5.3.8

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 (128) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +56 -0
  3. data/CHANGELOG.md +9 -0
  4. data/Gemfile +1 -0
  5. data/README.md +35 -14
  6. data/Rakefile +16 -5
  7. data/assets/javascripts/bootstrap/alert.js +22 -167
  8. data/assets/javascripts/bootstrap/base-component.js +35 -132
  9. data/assets/javascripts/bootstrap/button.js +19 -86
  10. data/assets/javascripts/bootstrap/carousel.js +209 -564
  11. data/assets/javascripts/bootstrap/collapse.js +78 -324
  12. data/assets/javascripts/bootstrap/dom/data.js +8 -14
  13. data/assets/javascripts/bootstrap/dom/event-handler.js +89 -174
  14. data/assets/javascripts/bootstrap/dom/manipulator.js +22 -39
  15. data/assets/javascripts/bootstrap/dom/selector-engine.js +47 -71
  16. data/assets/javascripts/bootstrap/dropdown.js +135 -420
  17. data/assets/javascripts/bootstrap/modal.js +115 -837
  18. data/assets/javascripts/bootstrap/offcanvas.js +93 -714
  19. data/assets/javascripts/bootstrap/popover.js +42 -130
  20. data/assets/javascripts/bootstrap/scrollspy.js +180 -296
  21. data/assets/javascripts/bootstrap/tab.js +197 -245
  22. data/assets/javascripts/bootstrap/toast.js +51 -276
  23. data/assets/javascripts/bootstrap/tooltip.js +284 -744
  24. data/assets/javascripts/bootstrap/util/backdrop.js +138 -0
  25. data/assets/javascripts/bootstrap/util/component-functions.js +41 -0
  26. data/assets/javascripts/bootstrap/util/config.js +67 -0
  27. data/assets/javascripts/bootstrap/util/focustrap.js +112 -0
  28. data/assets/javascripts/bootstrap/util/index.js +280 -0
  29. data/assets/javascripts/bootstrap/util/sanitizer.js +112 -0
  30. data/assets/javascripts/bootstrap/util/scrollbar.js +112 -0
  31. data/assets/javascripts/bootstrap/util/swipe.js +134 -0
  32. data/assets/javascripts/bootstrap/util/template-factory.js +150 -0
  33. data/assets/javascripts/bootstrap-global-this-define.js +1 -1
  34. data/assets/javascripts/bootstrap-sprockets.js +18 -9
  35. data/assets/javascripts/bootstrap.js +2279 -2831
  36. data/assets/javascripts/bootstrap.min.js +3 -3
  37. data/assets/stylesheets/_bootstrap-grid.scss +4 -9
  38. data/assets/stylesheets/_bootstrap-reboot.scss +4 -7
  39. data/assets/stylesheets/_bootstrap-utilities.scss +19 -0
  40. data/assets/stylesheets/_bootstrap.scss +5 -6
  41. data/assets/stylesheets/bootstrap/_accordion.scss +68 -33
  42. data/assets/stylesheets/bootstrap/_alert.scss +25 -14
  43. data/assets/stylesheets/bootstrap/_badge.scss +14 -5
  44. data/assets/stylesheets/bootstrap/_breadcrumb.scss +22 -10
  45. data/assets/stylesheets/bootstrap/_button-group.scss +12 -4
  46. data/assets/stylesheets/bootstrap/_buttons.scss +133 -28
  47. data/assets/stylesheets/bootstrap/_card.scss +69 -47
  48. data/assets/stylesheets/bootstrap/_carousel.scss +22 -25
  49. data/assets/stylesheets/bootstrap/_close.scss +36 -10
  50. data/assets/stylesheets/bootstrap/_containers.scss +1 -1
  51. data/assets/stylesheets/bootstrap/_dropdown.scss +86 -76
  52. data/assets/stylesheets/bootstrap/_functions.scss +11 -11
  53. data/assets/stylesheets/bootstrap/_grid.scss +9 -3
  54. data/assets/stylesheets/bootstrap/_helpers.scss +3 -0
  55. data/assets/stylesheets/bootstrap/_list-group.scss +81 -56
  56. data/assets/stylesheets/bootstrap/_maps.scss +174 -0
  57. data/assets/stylesheets/bootstrap/_mixins.scss +1 -2
  58. data/assets/stylesheets/bootstrap/_modal.scss +76 -45
  59. data/assets/stylesheets/bootstrap/_nav.scss +87 -29
  60. data/assets/stylesheets/bootstrap/_navbar.scss +102 -148
  61. data/assets/stylesheets/bootstrap/_offcanvas.scss +125 -61
  62. data/assets/stylesheets/bootstrap/_pagination.scss +66 -21
  63. data/assets/stylesheets/bootstrap/_placeholders.scss +1 -1
  64. data/assets/stylesheets/bootstrap/_popover.scss +90 -52
  65. data/assets/stylesheets/bootstrap/_progress.scss +31 -11
  66. data/assets/stylesheets/bootstrap/_reboot.scss +38 -46
  67. data/assets/stylesheets/bootstrap/_root.scss +155 -22
  68. data/assets/stylesheets/bootstrap/_spinners.scss +39 -22
  69. data/assets/stylesheets/bootstrap/_tables.scss +40 -24
  70. data/assets/stylesheets/bootstrap/_toasts.scss +38 -16
  71. data/assets/stylesheets/bootstrap/_tooltip.scss +60 -56
  72. data/assets/stylesheets/bootstrap/_type.scss +3 -1
  73. data/assets/stylesheets/bootstrap/_utilities.scss +209 -33
  74. data/assets/stylesheets/bootstrap/_variables-dark.scss +102 -0
  75. data/assets/stylesheets/bootstrap/_variables.scss +415 -303
  76. data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +39 -5
  77. data/assets/stylesheets/bootstrap/forms/_form-check.scss +51 -14
  78. data/assets/stylesheets/bootstrap/forms/_form-control.scss +36 -41
  79. data/assets/stylesheets/bootstrap/forms/_form-range.scss +3 -3
  80. data/assets/stylesheets/bootstrap/forms/_form-select.scss +12 -4
  81. data/assets/stylesheets/bootstrap/forms/_input-group.scss +20 -9
  82. data/assets/stylesheets/bootstrap/helpers/_color-bg.scss +7 -0
  83. data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +20 -2
  84. data/assets/stylesheets/bootstrap/helpers/_focus-ring.scss +5 -0
  85. data/assets/stylesheets/bootstrap/helpers/_icon-link.scss +25 -0
  86. data/assets/stylesheets/bootstrap/helpers/_position.scss +7 -1
  87. data/assets/stylesheets/bootstrap/helpers/_ratio.scss +2 -2
  88. data/assets/stylesheets/bootstrap/helpers/_vr.scss +2 -2
  89. data/assets/stylesheets/bootstrap/mixins/_alert.scss +11 -4
  90. data/assets/stylesheets/bootstrap/mixins/_banner.scss +7 -0
  91. data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +11 -5
  92. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +8 -8
  93. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +32 -95
  94. data/assets/stylesheets/bootstrap/mixins/_caret.scss +30 -25
  95. data/assets/stylesheets/bootstrap/mixins/_color-mode.scss +21 -0
  96. data/assets/stylesheets/bootstrap/mixins/_container.scss +4 -2
  97. data/assets/stylesheets/bootstrap/mixins/_forms.scss +38 -19
  98. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +1 -1
  99. data/assets/stylesheets/bootstrap/mixins/_grid.scss +15 -15
  100. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +2 -0
  101. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +4 -25
  102. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +1 -1
  103. data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +12 -9
  104. data/assets/stylesheets/bootstrap/mixins/_utilities.scss +14 -6
  105. data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +11 -2
  106. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +23 -29
  107. data/bootstrap.gemspec +4 -4
  108. data/lib/bootstrap/engine.rb +17 -2
  109. data/lib/bootstrap/version.rb +2 -2
  110. data/tasks/updater/js.rb +10 -5
  111. data/tasks/updater/network.rb +2 -2
  112. data/tasks/updater/scss.rb +2 -2
  113. data/tasks/updater.rb +2 -2
  114. data/test/dummy_rails/config/application.rb +0 -2
  115. data/test/dummy_rails/public/favicon.ico +0 -0
  116. data/test/gemfiles/rails_4_2.gemfile +2 -1
  117. data/test/gemfiles/rails_5_0.gemfile +1 -2
  118. data/test/gemfiles/rails_5_1.gemfile +1 -2
  119. data/test/gemfiles/rails_5_2.gemfile +7 -0
  120. data/test/gemfiles/rails_6_0.gemfile +9 -1
  121. data/test/gemfiles/rails_6_1.gemfile +9 -1
  122. data/test/gemfiles/rails_7_0_dartsass.gemfile +15 -0
  123. data/test/gemfiles/rails_7_0_sassc.gemfile +15 -0
  124. data/test/rails_test.rb +0 -5
  125. data/test/test_helper.rb +7 -4
  126. metadata +57 -27
  127. data/.travis.yml +0 -32
  128. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +0 -18
@@ -1,202 +1,24 @@
1
1
  /*!
2
- * Bootstrap toast.js v5.1.3 (https://getbootstrap.com/)
3
- * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
2
+ * Bootstrap toast.js v5.3.8 (https://getbootstrap.com/)
3
+ * Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
5
  */
6
6
  (function (global, factory) {
7
- typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./base-component.js')) :
8
- typeof define === 'function' && define.amd ? define(['./dom/event-handler', './dom/manipulator', './base-component'], factory) :
9
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Toast = factory(global.EventHandler, global.Manipulator, global.Base));
10
- })(this, (function (EventHandler, Manipulator, BaseComponent) { 'use strict';
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 Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);
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('./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';
17
11
 
18
12
  /**
19
13
  * --------------------------------------------------------------------------
20
- * Bootstrap (v5.1.3): util/index.js
14
+ * Bootstrap toast.js
21
15
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
22
16
  * --------------------------------------------------------------------------
23
17
  */
24
18
 
25
- const toType = obj => {
26
- if (obj === null || obj === undefined) {
27
- return `${obj}`;
28
- }
29
-
30
- return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
31
- };
32
-
33
- const getSelector = element => {
34
- let selector = element.getAttribute('data-bs-target');
35
-
36
- if (!selector || selector === '#') {
37
- let hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,
38
- // so everything starting with `#` or `.`. If a "real" URL is used as the selector,
39
- // `document.querySelector` will rightfully complain it is invalid.
40
- // See https://github.com/twbs/bootstrap/issues/32273
41
-
42
- if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) {
43
- return null;
44
- } // Just in case some CMS puts out a full URL with the anchor appended
45
-
46
-
47
- if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {
48
- hrefAttr = `#${hrefAttr.split('#')[1]}`;
49
- }
50
-
51
- selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
52
- }
53
-
54
- return selector;
55
- };
56
-
57
- const getElementFromSelector = element => {
58
- const selector = getSelector(element);
59
- return selector ? document.querySelector(selector) : null;
60
- };
61
-
62
- const isElement = obj => {
63
- if (!obj || typeof obj !== 'object') {
64
- return false;
65
- }
66
-
67
- if (typeof obj.jquery !== 'undefined') {
68
- obj = obj[0];
69
- }
70
-
71
- return typeof obj.nodeType !== 'undefined';
72
- };
73
-
74
- const typeCheckConfig = (componentName, config, configTypes) => {
75
- Object.keys(configTypes).forEach(property => {
76
- const expectedTypes = configTypes[property];
77
- const value = config[property];
78
- const valueType = value && isElement(value) ? 'element' : toType(value);
79
-
80
- if (!new RegExp(expectedTypes).test(valueType)) {
81
- throw new TypeError(`${componentName.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`);
82
- }
83
- });
84
- };
85
19
 
86
- const isDisabled = element => {
87
- if (!element || element.nodeType !== Node.ELEMENT_NODE) {
88
- return true;
89
- }
90
-
91
- if (element.classList.contains('disabled')) {
92
- return true;
93
- }
94
-
95
- if (typeof element.disabled !== 'undefined') {
96
- return element.disabled;
97
- }
98
-
99
- return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';
100
- };
101
- /**
102
- * Trick to restart an element's animation
103
- *
104
- * @param {HTMLElement} element
105
- * @return void
106
- *
107
- * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation
108
- */
109
-
110
-
111
- const reflow = element => {
112
- // eslint-disable-next-line no-unused-expressions
113
- element.offsetHeight;
114
- };
115
-
116
- const getjQuery = () => {
117
- const {
118
- jQuery
119
- } = window;
120
-
121
- if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
122
- return jQuery;
123
- }
124
-
125
- return null;
126
- };
127
-
128
- const DOMContentLoadedCallbacks = [];
129
-
130
- const onDOMContentLoaded = callback => {
131
- if (document.readyState === 'loading') {
132
- // add listener on the first call when the document is in loading state
133
- if (!DOMContentLoadedCallbacks.length) {
134
- document.addEventListener('DOMContentLoaded', () => {
135
- DOMContentLoadedCallbacks.forEach(callback => callback());
136
- });
137
- }
138
-
139
- DOMContentLoadedCallbacks.push(callback);
140
- } else {
141
- callback();
142
- }
143
- };
144
-
145
- const defineJQueryPlugin = plugin => {
146
- onDOMContentLoaded(() => {
147
- const $ = getjQuery();
148
- /* istanbul ignore if */
149
-
150
- if ($) {
151
- const name = plugin.NAME;
152
- const JQUERY_NO_CONFLICT = $.fn[name];
153
- $.fn[name] = plugin.jQueryInterface;
154
- $.fn[name].Constructor = plugin;
155
-
156
- $.fn[name].noConflict = () => {
157
- $.fn[name] = JQUERY_NO_CONFLICT;
158
- return plugin.jQueryInterface;
159
- };
160
- }
161
- });
162
- };
163
-
164
- /**
165
- * --------------------------------------------------------------------------
166
- * Bootstrap (v5.1.3): util/component-functions.js
167
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
168
- * --------------------------------------------------------------------------
169
- */
170
-
171
- const enableDismissTrigger = (component, method = 'hide') => {
172
- const clickEvent = `click.dismiss${component.EVENT_KEY}`;
173
- const name = component.NAME;
174
- EventHandler__default.default.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) {
175
- if (['A', 'AREA'].includes(this.tagName)) {
176
- event.preventDefault();
177
- }
178
-
179
- if (isDisabled(this)) {
180
- return;
181
- }
182
-
183
- const target = getElementFromSelector(this) || this.closest(`.${name}`);
184
- const instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method
185
-
186
- instance[method]();
187
- });
188
- };
189
-
190
- /**
191
- * --------------------------------------------------------------------------
192
- * Bootstrap (v5.1.3): toast.js
193
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
194
- * --------------------------------------------------------------------------
195
- */
196
20
  /**
197
- * ------------------------------------------------------------------------
198
21
  * Constants
199
- * ------------------------------------------------------------------------
200
22
  */
201
23
 
202
24
  const NAME = 'toast';
@@ -212,7 +34,6 @@
212
34
  const EVENT_SHOWN = `shown${EVENT_KEY}`;
213
35
  const CLASS_NAME_FADE = 'fade';
214
36
  const CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility
215
-
216
37
  const CLASS_NAME_SHOW = 'show';
217
38
  const CLASS_NAME_SHOWING = 'showing';
218
39
  const DefaultType = {
@@ -225,197 +46,151 @@
225
46
  autohide: true,
226
47
  delay: 5000
227
48
  };
49
+
228
50
  /**
229
- * ------------------------------------------------------------------------
230
- * Class Definition
231
- * ------------------------------------------------------------------------
51
+ * Class definition
232
52
  */
233
53
 
234
- class Toast extends BaseComponent__default.default {
54
+ class Toast extends BaseComponent {
235
55
  constructor(element, config) {
236
- super(element);
237
- this._config = this._getConfig(config);
56
+ super(element, config);
238
57
  this._timeout = null;
239
58
  this._hasMouseInteraction = false;
240
59
  this._hasKeyboardInteraction = false;
241
-
242
60
  this._setListeners();
243
- } // Getters
244
-
245
-
246
- static get DefaultType() {
247
- return DefaultType;
248
61
  }
249
62
 
63
+ // Getters
250
64
  static get Default() {
251
65
  return Default;
252
66
  }
253
-
67
+ static get DefaultType() {
68
+ return DefaultType;
69
+ }
254
70
  static get NAME() {
255
71
  return NAME;
256
- } // Public
257
-
72
+ }
258
73
 
74
+ // Public
259
75
  show() {
260
- const showEvent = EventHandler__default.default.trigger(this._element, EVENT_SHOW);
261
-
76
+ const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);
262
77
  if (showEvent.defaultPrevented) {
263
78
  return;
264
79
  }
265
-
266
80
  this._clearTimeout();
267
-
268
81
  if (this._config.animation) {
269
82
  this._element.classList.add(CLASS_NAME_FADE);
270
83
  }
271
-
272
84
  const complete = () => {
273
85
  this._element.classList.remove(CLASS_NAME_SHOWING);
274
-
275
- EventHandler__default.default.trigger(this._element, EVENT_SHOWN);
276
-
86
+ EventHandler.trigger(this._element, EVENT_SHOWN);
277
87
  this._maybeScheduleHide();
278
88
  };
279
-
280
89
  this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated
281
-
282
-
283
- reflow(this._element);
284
-
285
- this._element.classList.add(CLASS_NAME_SHOW);
286
-
287
- this._element.classList.add(CLASS_NAME_SHOWING);
288
-
90
+ index_js.reflow(this._element);
91
+ this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING);
289
92
  this._queueCallback(complete, this._element, this._config.animation);
290
93
  }
291
-
292
94
  hide() {
293
- if (!this._element.classList.contains(CLASS_NAME_SHOW)) {
95
+ if (!this.isShown()) {
294
96
  return;
295
97
  }
296
-
297
- const hideEvent = EventHandler__default.default.trigger(this._element, EVENT_HIDE);
298
-
98
+ const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);
299
99
  if (hideEvent.defaultPrevented) {
300
100
  return;
301
101
  }
302
-
303
102
  const complete = () => {
304
103
  this._element.classList.add(CLASS_NAME_HIDE); // @deprecated
305
-
306
-
307
- this._element.classList.remove(CLASS_NAME_SHOWING);
308
-
309
- this._element.classList.remove(CLASS_NAME_SHOW);
310
-
311
- EventHandler__default.default.trigger(this._element, EVENT_HIDDEN);
104
+ this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW);
105
+ EventHandler.trigger(this._element, EVENT_HIDDEN);
312
106
  };
313
-
314
107
  this._element.classList.add(CLASS_NAME_SHOWING);
315
-
316
108
  this._queueCallback(complete, this._element, this._config.animation);
317
109
  }
318
-
319
110
  dispose() {
320
111
  this._clearTimeout();
321
-
322
- if (this._element.classList.contains(CLASS_NAME_SHOW)) {
112
+ if (this.isShown()) {
323
113
  this._element.classList.remove(CLASS_NAME_SHOW);
324
114
  }
325
-
326
115
  super.dispose();
327
- } // Private
328
-
329
-
330
- _getConfig(config) {
331
- config = { ...Default,
332
- ...Manipulator__default.default.getDataAttributes(this._element),
333
- ...(typeof config === 'object' && config ? config : {})
334
- };
335
- typeCheckConfig(NAME, config, this.constructor.DefaultType);
336
- return config;
116
+ }
117
+ isShown() {
118
+ return this._element.classList.contains(CLASS_NAME_SHOW);
337
119
  }
338
120
 
121
+ // Private
339
122
  _maybeScheduleHide() {
340
123
  if (!this._config.autohide) {
341
124
  return;
342
125
  }
343
-
344
126
  if (this._hasMouseInteraction || this._hasKeyboardInteraction) {
345
127
  return;
346
128
  }
347
-
348
129
  this._timeout = setTimeout(() => {
349
130
  this.hide();
350
131
  }, this._config.delay);
351
132
  }
352
-
353
133
  _onInteraction(event, isInteracting) {
354
134
  switch (event.type) {
355
135
  case 'mouseover':
356
136
  case 'mouseout':
357
- this._hasMouseInteraction = isInteracting;
358
- break;
359
-
137
+ {
138
+ this._hasMouseInteraction = isInteracting;
139
+ break;
140
+ }
360
141
  case 'focusin':
361
142
  case 'focusout':
362
- this._hasKeyboardInteraction = isInteracting;
363
- break;
143
+ {
144
+ this._hasKeyboardInteraction = isInteracting;
145
+ break;
146
+ }
364
147
  }
365
-
366
148
  if (isInteracting) {
367
149
  this._clearTimeout();
368
-
369
150
  return;
370
151
  }
371
-
372
152
  const nextElement = event.relatedTarget;
373
-
374
153
  if (this._element === nextElement || this._element.contains(nextElement)) {
375
154
  return;
376
155
  }
377
-
378
156
  this._maybeScheduleHide();
379
157
  }
380
-
381
158
  _setListeners() {
382
- EventHandler__default.default.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true));
383
- EventHandler__default.default.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false));
384
- EventHandler__default.default.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true));
385
- EventHandler__default.default.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));
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));
386
163
  }
387
-
388
164
  _clearTimeout() {
389
165
  clearTimeout(this._timeout);
390
166
  this._timeout = null;
391
- } // Static
392
-
167
+ }
393
168
 
169
+ // Static
394
170
  static jQueryInterface(config) {
395
171
  return this.each(function () {
396
172
  const data = Toast.getOrCreateInstance(this, config);
397
-
398
173
  if (typeof config === 'string') {
399
174
  if (typeof data[config] === 'undefined') {
400
175
  throw new TypeError(`No method named "${config}"`);
401
176
  }
402
-
403
177
  data[config](this);
404
178
  }
405
179
  });
406
180
  }
407
-
408
181
  }
409
182
 
410
- enableDismissTrigger(Toast);
411
183
  /**
412
- * ------------------------------------------------------------------------
184
+ * Data API implementation
185
+ */
186
+
187
+ componentFunctions_js.enableDismissTrigger(Toast);
188
+
189
+ /**
413
190
  * jQuery
414
- * ------------------------------------------------------------------------
415
- * add .Toast to jQuery only if jQuery is present
416
191
  */
417
192
 
418
- defineJQueryPlugin(Toast);
193
+ index_js.defineJQueryPlugin(Toast);
419
194
 
420
195
  return Toast;
421
196