bootstrap 5.1.3 → 5.3.5

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 (127) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +61 -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 +34 -133
  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 +52 -276
  23. data/assets/javascripts/bootstrap/tooltip.js +283 -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 +113 -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 +15 -6
  35. data/assets/javascripts/bootstrap.js +2278 -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 +61 -39
  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 +10 -10
  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 +32 -46
  67. data/assets/stylesheets/bootstrap/_root.scss +155 -22
  68. data/assets/stylesheets/bootstrap/_spinners.scss +38 -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/_breakpoints.scss +8 -8
  92. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +32 -95
  93. data/assets/stylesheets/bootstrap/mixins/_caret.scss +30 -25
  94. data/assets/stylesheets/bootstrap/mixins/_color-mode.scss +21 -0
  95. data/assets/stylesheets/bootstrap/mixins/_container.scss +4 -2
  96. data/assets/stylesheets/bootstrap/mixins/_forms.scss +38 -19
  97. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +1 -1
  98. data/assets/stylesheets/bootstrap/mixins/_grid.scss +15 -15
  99. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +2 -0
  100. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +4 -25
  101. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +1 -1
  102. data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +12 -9
  103. data/assets/stylesheets/bootstrap/mixins/_utilities.scss +14 -6
  104. data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +6 -2
  105. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +23 -29
  106. data/bootstrap.gemspec +3 -3
  107. data/lib/bootstrap/engine.rb +17 -2
  108. data/lib/bootstrap/version.rb +2 -2
  109. data/tasks/updater/js.rb +10 -5
  110. data/tasks/updater/network.rb +2 -2
  111. data/tasks/updater/scss.rb +2 -2
  112. data/tasks/updater.rb +2 -2
  113. data/test/dummy_rails/config/application.rb +0 -2
  114. data/test/dummy_rails/public/favicon.ico +0 -0
  115. data/test/gemfiles/rails_4_2.gemfile +2 -1
  116. data/test/gemfiles/rails_5_0.gemfile +1 -2
  117. data/test/gemfiles/rails_5_1.gemfile +1 -2
  118. data/test/gemfiles/rails_5_2.gemfile +7 -0
  119. data/test/gemfiles/rails_6_0.gemfile +1 -1
  120. data/test/gemfiles/rails_6_1.gemfile +1 -1
  121. data/test/gemfiles/rails_7_0_dartsass.gemfile +7 -0
  122. data/test/gemfiles/rails_7_0_sassc.gemfile +7 -0
  123. data/test/rails_test.rb +0 -5
  124. data/test/test_helper.rb +3 -2
  125. metadata +49 -29
  126. data/.travis.yml +0 -32
  127. 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.5 (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);
17
-
18
- /**
19
- * --------------------------------------------------------------------------
20
- * Bootstrap (v5.1.3): util/index.js
21
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
22
- * --------------------------------------------------------------------------
23
- */
24
-
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
-
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
- };
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';
163
11
 
164
12
  /**
165
13
  * --------------------------------------------------------------------------
166
- * Bootstrap (v5.1.3): util/component-functions.js
14
+ * Bootstrap toast.js
167
15
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
168
16
  * --------------------------------------------------------------------------
169
17
  */
170
18
 
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
19
 
190
20
  /**
191
- * --------------------------------------------------------------------------
192
- * Bootstrap (v5.1.3): toast.js
193
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
194
- * --------------------------------------------------------------------------
195
- */
196
- /**
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,152 @@
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
122
+
339
123
  _maybeScheduleHide() {
340
124
  if (!this._config.autohide) {
341
125
  return;
342
126
  }
343
-
344
127
  if (this._hasMouseInteraction || this._hasKeyboardInteraction) {
345
128
  return;
346
129
  }
347
-
348
130
  this._timeout = setTimeout(() => {
349
131
  this.hide();
350
132
  }, this._config.delay);
351
133
  }
352
-
353
134
  _onInteraction(event, isInteracting) {
354
135
  switch (event.type) {
355
136
  case 'mouseover':
356
137
  case 'mouseout':
357
- this._hasMouseInteraction = isInteracting;
358
- break;
359
-
138
+ {
139
+ this._hasMouseInteraction = isInteracting;
140
+ break;
141
+ }
360
142
  case 'focusin':
361
143
  case 'focusout':
362
- this._hasKeyboardInteraction = isInteracting;
363
- break;
144
+ {
145
+ this._hasKeyboardInteraction = isInteracting;
146
+ break;
147
+ }
364
148
  }
365
-
366
149
  if (isInteracting) {
367
150
  this._clearTimeout();
368
-
369
151
  return;
370
152
  }
371
-
372
153
  const nextElement = event.relatedTarget;
373
-
374
154
  if (this._element === nextElement || this._element.contains(nextElement)) {
375
155
  return;
376
156
  }
377
-
378
157
  this._maybeScheduleHide();
379
158
  }
380
-
381
159
  _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));
160
+ EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true));
161
+ EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false));
162
+ EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true));
163
+ EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));
386
164
  }
387
-
388
165
  _clearTimeout() {
389
166
  clearTimeout(this._timeout);
390
167
  this._timeout = null;
391
- } // Static
392
-
168
+ }
393
169
 
170
+ // Static
394
171
  static jQueryInterface(config) {
395
172
  return this.each(function () {
396
173
  const data = Toast.getOrCreateInstance(this, config);
397
-
398
174
  if (typeof config === 'string') {
399
175
  if (typeof data[config] === 'undefined') {
400
176
  throw new TypeError(`No method named "${config}"`);
401
177
  }
402
-
403
178
  data[config](this);
404
179
  }
405
180
  });
406
181
  }
407
-
408
182
  }
409
183
 
410
- enableDismissTrigger(Toast);
411
184
  /**
412
- * ------------------------------------------------------------------------
185
+ * Data API implementation
186
+ */
187
+
188
+ componentFunctions_js.enableDismissTrigger(Toast);
189
+
190
+ /**
413
191
  * jQuery
414
- * ------------------------------------------------------------------------
415
- * add .Toast to jQuery only if jQuery is present
416
192
  */
417
193
 
418
- defineJQueryPlugin(Toast);
194
+ index_js.defineJQueryPlugin(Toast);
419
195
 
420
196
  return Toast;
421
197