bootstrap 4.6.0 → 5.3.2

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 (184) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +61 -0
  3. data/Gemfile +1 -0
  4. data/README.md +33 -6
  5. data/Rakefile +10 -1
  6. data/assets/javascripts/bootstrap/alert.js +53 -155
  7. data/assets/javascripts/bootstrap/base-component.js +83 -0
  8. data/assets/javascripts/bootstrap/button.js +43 -198
  9. data/assets/javascripts/bootstrap/carousel.js +285 -550
  10. data/assets/javascripts/bootstrap/collapse.js +169 -323
  11. data/assets/javascripts/bootstrap/dom/data.js +62 -0
  12. data/assets/javascripts/bootstrap/dom/event-handler.js +236 -0
  13. data/assets/javascripts/bootstrap/dom/manipulator.js +71 -0
  14. data/assets/javascripts/bootstrap/dom/selector-engine.js +103 -0
  15. data/assets/javascripts/bootstrap/dropdown.js +300 -467
  16. data/assets/javascripts/bootstrap/modal.js +226 -575
  17. data/assets/javascripts/bootstrap/offcanvas.js +245 -0
  18. data/assets/javascripts/bootstrap/popover.js +61 -205
  19. data/assets/javascripts/bootstrap/scrollspy.js +216 -287
  20. data/assets/javascripts/bootstrap/tab.js +226 -203
  21. data/assets/javascripts/bootstrap/toast.js +136 -209
  22. data/assets/javascripts/bootstrap/tooltip.js +411 -757
  23. data/assets/javascripts/bootstrap/util/backdrop.js +139 -0
  24. data/assets/javascripts/bootstrap/util/component-functions.js +41 -0
  25. data/assets/javascripts/bootstrap/util/config.js +67 -0
  26. data/assets/javascripts/bootstrap/util/focustrap.js +113 -0
  27. data/assets/javascripts/bootstrap/util/index.js +281 -0
  28. data/assets/javascripts/bootstrap/util/sanitizer.js +110 -0
  29. data/assets/javascripts/bootstrap/util/scrollbar.js +112 -0
  30. data/assets/javascripts/bootstrap/util/swipe.js +134 -0
  31. data/assets/javascripts/bootstrap/util/template-factory.js +150 -0
  32. data/assets/javascripts/bootstrap-global-this-define.js +6 -0
  33. data/assets/javascripts/bootstrap-global-this-undefine.js +2 -0
  34. data/assets/javascripts/bootstrap-sprockets.js +23 -7
  35. data/assets/javascripts/bootstrap.js +3649 -3587
  36. data/assets/javascripts/bootstrap.min.js +3 -3
  37. data/assets/stylesheets/_bootstrap-grid.scss +53 -21
  38. data/assets/stylesheets/_bootstrap-reboot.scss +5 -7
  39. data/assets/stylesheets/_bootstrap-utilities.scss +19 -0
  40. data/assets/stylesheets/_bootstrap.scss +21 -13
  41. data/assets/stylesheets/bootstrap/_accordion.scss +158 -0
  42. data/assets/stylesheets/bootstrap/_alert.scss +32 -16
  43. data/assets/stylesheets/bootstrap/_badge.scss +15 -31
  44. data/assets/stylesheets/bootstrap/_breadcrumb.scss +22 -24
  45. data/assets/stylesheets/bootstrap/_button-group.scss +27 -48
  46. data/assets/stylesheets/bootstrap/_buttons.scss +136 -71
  47. data/assets/stylesheets/bootstrap/_card.scss +66 -113
  48. data/assets/stylesheets/bootstrap/_carousel.scss +83 -36
  49. data/assets/stylesheets/bootstrap/_close.scss +51 -28
  50. data/assets/stylesheets/bootstrap/_containers.scss +41 -0
  51. data/assets/stylesheets/bootstrap/_dropdown.scss +129 -71
  52. data/assets/stylesheets/bootstrap/_forms.scss +9 -347
  53. data/assets/stylesheets/bootstrap/_functions.scss +181 -23
  54. data/assets/stylesheets/bootstrap/_grid.scss +18 -52
  55. data/assets/stylesheets/bootstrap/_helpers.scss +12 -0
  56. data/assets/stylesheets/bootstrap/_images.scss +1 -1
  57. data/assets/stylesheets/bootstrap/_list-group.scss +77 -34
  58. data/assets/stylesheets/bootstrap/_maps.scss +174 -0
  59. data/assets/stylesheets/bootstrap/_mixins.scss +10 -15
  60. data/assets/stylesheets/bootstrap/_modal.scss +107 -110
  61. data/assets/stylesheets/bootstrap/_nav.scss +102 -25
  62. data/assets/stylesheets/bootstrap/_navbar.scss +129 -172
  63. data/assets/stylesheets/bootstrap/_offcanvas.scss +146 -0
  64. data/assets/stylesheets/bootstrap/_pagination.scss +72 -37
  65. data/assets/stylesheets/bootstrap/_placeholders.scss +51 -0
  66. data/assets/stylesheets/bootstrap/_popover.scss +99 -73
  67. data/assets/stylesheets/bootstrap/_progress.scss +35 -14
  68. data/assets/stylesheets/bootstrap/_reboot.scss +319 -192
  69. data/assets/stylesheets/bootstrap/_root.scss +177 -9
  70. data/assets/stylesheets/bootstrap/_spinners.scss +44 -24
  71. data/assets/stylesheets/bootstrap/_tables.scss +101 -115
  72. data/assets/stylesheets/bootstrap/_toasts.scss +54 -27
  73. data/assets/stylesheets/bootstrap/_tooltip.scss +67 -63
  74. data/assets/stylesheets/bootstrap/_transitions.scss +8 -1
  75. data/assets/stylesheets/bootstrap/_type.scss +40 -59
  76. data/assets/stylesheets/bootstrap/_utilities.scss +806 -18
  77. data/assets/stylesheets/bootstrap/_variables-dark.scss +87 -0
  78. data/assets/stylesheets/bootstrap/_variables.scss +1216 -615
  79. data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +95 -0
  80. data/assets/stylesheets/bootstrap/forms/_form-check.scss +189 -0
  81. data/assets/stylesheets/bootstrap/forms/_form-control.scss +214 -0
  82. data/assets/stylesheets/bootstrap/forms/_form-range.scss +91 -0
  83. data/assets/stylesheets/bootstrap/forms/_form-select.scss +80 -0
  84. data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
  85. data/assets/stylesheets/bootstrap/forms/_input-group.scss +132 -0
  86. data/assets/stylesheets/bootstrap/forms/_labels.scss +36 -0
  87. data/assets/stylesheets/bootstrap/forms/_validation.scss +12 -0
  88. data/assets/stylesheets/bootstrap/helpers/_color-bg.scss +7 -0
  89. data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +30 -0
  90. data/assets/stylesheets/bootstrap/helpers/_focus-ring.scss +5 -0
  91. data/assets/stylesheets/bootstrap/helpers/_icon-link.scss +25 -0
  92. data/assets/stylesheets/bootstrap/helpers/_position.scss +36 -0
  93. data/assets/stylesheets/bootstrap/helpers/_ratio.scss +26 -0
  94. data/assets/stylesheets/bootstrap/helpers/_stacks.scss +15 -0
  95. data/assets/stylesheets/bootstrap/helpers/_stretched-link.scss +15 -0
  96. data/assets/stylesheets/bootstrap/helpers/_text-truncation.scss +7 -0
  97. data/assets/stylesheets/bootstrap/helpers/_visually-hidden.scss +8 -0
  98. data/assets/stylesheets/bootstrap/helpers/_vr.scss +8 -0
  99. data/assets/stylesheets/bootstrap/mixins/_alert.scss +11 -6
  100. data/assets/stylesheets/bootstrap/mixins/_backdrop.scss +14 -0
  101. data/assets/stylesheets/bootstrap/mixins/_banner.scss +7 -0
  102. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +10 -8
  103. data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +7 -9
  104. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +20 -16
  105. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +60 -100
  106. data/assets/stylesheets/bootstrap/mixins/_caret.scss +34 -27
  107. data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
  108. data/assets/stylesheets/bootstrap/mixins/_color-mode.scss +21 -0
  109. data/assets/stylesheets/bootstrap/mixins/_color-scheme.scss +7 -0
  110. data/assets/stylesheets/bootstrap/mixins/_container.scss +11 -0
  111. data/assets/stylesheets/bootstrap/mixins/_forms.scss +53 -85
  112. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +13 -11
  113. data/assets/stylesheets/bootstrap/mixins/_grid.scss +119 -37
  114. data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -21
  115. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +7 -2
  116. data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
  117. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +7 -19
  118. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +3 -3
  119. data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +24 -0
  120. data/assets/stylesheets/bootstrap/mixins/_transition.scss +1 -1
  121. data/assets/stylesheets/bootstrap/mixins/_utilities.scss +97 -0
  122. data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +33 -0
  123. data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
  124. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +276 -132
  125. data/bootstrap.gemspec +6 -7
  126. data/lib/bootstrap/engine.rb +7 -1
  127. data/lib/bootstrap/version.rb +2 -2
  128. data/tasks/updater/js.rb +31 -7
  129. data/tasks/updater/network.rb +9 -3
  130. data/tasks/updater/scss.rb +2 -2
  131. data/tasks/updater.rb +2 -2
  132. data/test/dummy_rails/app/assets/javascripts/application.js +4 -3
  133. data/test/dummy_rails/app/views/layouts/application.html.erb +3 -1
  134. data/test/dummy_rails/app/views/pages/root.html +89 -0
  135. data/test/dummy_rails/config/application.rb +0 -3
  136. data/test/gemfiles/rails_4_2.gemfile +1 -1
  137. data/test/gemfiles/rails_5_0.gemfile +1 -1
  138. data/test/gemfiles/rails_5_1.gemfile +1 -1
  139. data/test/gemfiles/rails_5_2.gemfile +8 -0
  140. data/test/gemfiles/rails_6_0.gemfile +1 -0
  141. data/test/gemfiles/rails_6_1.gemfile +8 -0
  142. data/test/gemfiles/rails_7_0_dartsass.gemfile +8 -0
  143. data/test/gemfiles/rails_7_0_sassc.gemfile +8 -0
  144. data/test/test_helper.rb +3 -2
  145. metadata +97 -85
  146. data/.travis.yml +0 -31
  147. data/assets/javascripts/bootstrap/util.js +0 -192
  148. data/assets/stylesheets/bootstrap/_code.scss +0 -48
  149. data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -526
  150. data/assets/stylesheets/bootstrap/_input-group.scss +0 -208
  151. data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
  152. data/assets/stylesheets/bootstrap/_media.scss +0 -8
  153. data/assets/stylesheets/bootstrap/_print.scss +0 -141
  154. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -23
  155. data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
  156. data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
  157. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -80
  158. data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
  159. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -11
  160. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +0 -34
  161. data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
  162. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
  163. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -17
  164. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
  165. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
  166. data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
  167. data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
  168. data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
  169. data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
  170. data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
  171. data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
  172. data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
  173. data/assets/stylesheets/bootstrap/utilities/_interactions.scss +0 -5
  174. data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
  175. data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
  176. data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
  177. data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
  178. data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
  179. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
  180. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
  181. data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -72
  182. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
  183. data/test/dummy_rails/app/views/pages/root.html.slim +0 -58
  184. /data/assets/stylesheets/bootstrap/{utilities → helpers}/_clearfix.scss +0 -0
@@ -1,271 +1,198 @@
1
1
  /*!
2
- * Bootstrap toast.js v4.6.0 (https://getbootstrap.com/)
3
- * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
2
+ * Bootstrap toast.js v5.3.2 (https://getbootstrap.com/)
3
+ * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
5
  */
6
6
  (function (global, factory) {
7
- typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('./util.js')) :
8
- typeof define === 'function' && define.amd ? define(['jquery', './util'], factory) :
9
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Toast = factory(global.jQuery, global.Util));
10
- }(this, (function ($, Util) { 'use strict';
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';
11
11
 
12
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
-
14
- var $__default = /*#__PURE__*/_interopDefaultLegacy($);
15
- var Util__default = /*#__PURE__*/_interopDefaultLegacy(Util);
16
-
17
- function _defineProperties(target, props) {
18
- for (var i = 0; i < props.length; i++) {
19
- var descriptor = props[i];
20
- descriptor.enumerable = descriptor.enumerable || false;
21
- descriptor.configurable = true;
22
- if ("value" in descriptor) descriptor.writable = true;
23
- Object.defineProperty(target, descriptor.key, descriptor);
24
- }
25
- }
26
-
27
- function _createClass(Constructor, protoProps, staticProps) {
28
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
29
- if (staticProps) _defineProperties(Constructor, staticProps);
30
- return Constructor;
31
- }
32
-
33
- function _extends() {
34
- _extends = Object.assign || function (target) {
35
- for (var i = 1; i < arguments.length; i++) {
36
- var source = arguments[i];
37
-
38
- for (var key in source) {
39
- if (Object.prototype.hasOwnProperty.call(source, key)) {
40
- target[key] = source[key];
41
- }
42
- }
43
- }
44
-
45
- return target;
46
- };
12
+ /**
13
+ * --------------------------------------------------------------------------
14
+ * Bootstrap toast.js
15
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
16
+ * --------------------------------------------------------------------------
17
+ */
47
18
 
48
- return _extends.apply(this, arguments);
49
- }
50
19
 
51
20
  /**
52
- * ------------------------------------------------------------------------
53
21
  * Constants
54
- * ------------------------------------------------------------------------
55
22
  */
56
23
 
57
- var NAME = 'toast';
58
- var VERSION = '4.6.0';
59
- var DATA_KEY = 'bs.toast';
60
- var EVENT_KEY = "." + DATA_KEY;
61
- var JQUERY_NO_CONFLICT = $__default['default'].fn[NAME];
62
- var EVENT_CLICK_DISMISS = "click.dismiss" + EVENT_KEY;
63
- var EVENT_HIDE = "hide" + EVENT_KEY;
64
- var EVENT_HIDDEN = "hidden" + EVENT_KEY;
65
- var EVENT_SHOW = "show" + EVENT_KEY;
66
- var EVENT_SHOWN = "shown" + EVENT_KEY;
67
- var CLASS_NAME_FADE = 'fade';
68
- var CLASS_NAME_HIDE = 'hide';
69
- var CLASS_NAME_SHOW = 'show';
70
- var CLASS_NAME_SHOWING = 'showing';
71
- var DefaultType = {
24
+ const NAME = 'toast';
25
+ const DATA_KEY = 'bs.toast';
26
+ const EVENT_KEY = `.${DATA_KEY}`;
27
+ const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;
28
+ const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;
29
+ const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
30
+ const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;
31
+ const EVENT_HIDE = `hide${EVENT_KEY}`;
32
+ const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
33
+ const EVENT_SHOW = `show${EVENT_KEY}`;
34
+ const EVENT_SHOWN = `shown${EVENT_KEY}`;
35
+ const CLASS_NAME_FADE = 'fade';
36
+ const CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility
37
+ const CLASS_NAME_SHOW = 'show';
38
+ const CLASS_NAME_SHOWING = 'showing';
39
+ const DefaultType = {
72
40
  animation: 'boolean',
73
41
  autohide: 'boolean',
74
42
  delay: 'number'
75
43
  };
76
- var Default = {
44
+ const Default = {
77
45
  animation: true,
78
46
  autohide: true,
79
- delay: 500
47
+ delay: 5000
80
48
  };
81
- var SELECTOR_DATA_DISMISS = '[data-dismiss="toast"]';
49
+
82
50
  /**
83
- * ------------------------------------------------------------------------
84
- * Class Definition
85
- * ------------------------------------------------------------------------
51
+ * Class definition
86
52
  */
87
53
 
88
- var Toast = /*#__PURE__*/function () {
89
- function Toast(element, config) {
90
- this._element = element;
91
- this._config = this._getConfig(config);
54
+ class Toast extends BaseComponent {
55
+ constructor(element, config) {
56
+ super(element, config);
92
57
  this._timeout = null;
93
-
58
+ this._hasMouseInteraction = false;
59
+ this._hasKeyboardInteraction = false;
94
60
  this._setListeners();
95
- } // Getters
96
-
61
+ }
97
62
 
98
- var _proto = Toast.prototype;
63
+ // Getters
64
+ static get Default() {
65
+ return Default;
66
+ }
67
+ static get DefaultType() {
68
+ return DefaultType;
69
+ }
70
+ static get NAME() {
71
+ return NAME;
72
+ }
99
73
 
100
74
  // Public
101
- _proto.show = function show() {
102
- var _this = this;
103
-
104
- var showEvent = $__default['default'].Event(EVENT_SHOW);
105
- $__default['default'](this._element).trigger(showEvent);
106
-
107
- if (showEvent.isDefaultPrevented()) {
75
+ show() {
76
+ const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);
77
+ if (showEvent.defaultPrevented) {
108
78
  return;
109
79
  }
110
-
111
80
  this._clearTimeout();
112
-
113
81
  if (this._config.animation) {
114
82
  this._element.classList.add(CLASS_NAME_FADE);
115
83
  }
116
-
117
- var complete = function complete() {
118
- _this._element.classList.remove(CLASS_NAME_SHOWING);
119
-
120
- _this._element.classList.add(CLASS_NAME_SHOW);
121
-
122
- $__default['default'](_this._element).trigger(EVENT_SHOWN);
123
-
124
- if (_this._config.autohide) {
125
- _this._timeout = setTimeout(function () {
126
- _this.hide();
127
- }, _this._config.delay);
128
- }
84
+ const complete = () => {
85
+ this._element.classList.remove(CLASS_NAME_SHOWING);
86
+ EventHandler.trigger(this._element, EVENT_SHOWN);
87
+ this._maybeScheduleHide();
129
88
  };
130
-
131
- this._element.classList.remove(CLASS_NAME_HIDE);
132
-
133
- Util__default['default'].reflow(this._element);
134
-
135
- this._element.classList.add(CLASS_NAME_SHOWING);
136
-
137
- if (this._config.animation) {
138
- var transitionDuration = Util__default['default'].getTransitionDurationFromElement(this._element);
139
- $__default['default'](this._element).one(Util__default['default'].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
140
- } else {
141
- complete();
142
- }
143
- };
144
-
145
- _proto.hide = function hide() {
146
- if (!this._element.classList.contains(CLASS_NAME_SHOW)) {
89
+ this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated
90
+ index_js.reflow(this._element);
91
+ this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING);
92
+ this._queueCallback(complete, this._element, this._config.animation);
93
+ }
94
+ hide() {
95
+ if (!this.isShown()) {
147
96
  return;
148
97
  }
149
-
150
- var hideEvent = $__default['default'].Event(EVENT_HIDE);
151
- $__default['default'](this._element).trigger(hideEvent);
152
-
153
- if (hideEvent.isDefaultPrevented()) {
98
+ const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);
99
+ if (hideEvent.defaultPrevented) {
154
100
  return;
155
101
  }
156
-
157
- this._close();
158
- };
159
-
160
- _proto.dispose = function dispose() {
102
+ const complete = () => {
103
+ this._element.classList.add(CLASS_NAME_HIDE); // @deprecated
104
+ this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW);
105
+ EventHandler.trigger(this._element, EVENT_HIDDEN);
106
+ };
107
+ this._element.classList.add(CLASS_NAME_SHOWING);
108
+ this._queueCallback(complete, this._element, this._config.animation);
109
+ }
110
+ dispose() {
161
111
  this._clearTimeout();
162
-
163
- if (this._element.classList.contains(CLASS_NAME_SHOW)) {
112
+ if (this.isShown()) {
164
113
  this._element.classList.remove(CLASS_NAME_SHOW);
165
114
  }
115
+ super.dispose();
116
+ }
117
+ isShown() {
118
+ return this._element.classList.contains(CLASS_NAME_SHOW);
119
+ }
166
120
 
167
- $__default['default'](this._element).off(EVENT_CLICK_DISMISS);
168
- $__default['default'].removeData(this._element, DATA_KEY);
169
- this._element = null;
170
- this._config = null;
171
- } // Private
172
- ;
173
-
174
- _proto._getConfig = function _getConfig(config) {
175
- config = _extends({}, Default, $__default['default'](this._element).data(), typeof config === 'object' && config ? config : {});
176
- Util__default['default'].typeCheckConfig(NAME, config, this.constructor.DefaultType);
177
- return config;
178
- };
179
-
180
- _proto._setListeners = function _setListeners() {
181
- var _this2 = this;
182
-
183
- $__default['default'](this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function () {
184
- return _this2.hide();
185
- });
186
- };
187
-
188
- _proto._close = function _close() {
189
- var _this3 = this;
190
-
191
- var complete = function complete() {
192
- _this3._element.classList.add(CLASS_NAME_HIDE);
193
-
194
- $__default['default'](_this3._element).trigger(EVENT_HIDDEN);
195
- };
196
-
197
- this._element.classList.remove(CLASS_NAME_SHOW);
121
+ // Private
198
122
 
199
- if (this._config.animation) {
200
- var transitionDuration = Util__default['default'].getTransitionDurationFromElement(this._element);
201
- $__default['default'](this._element).one(Util__default['default'].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
202
- } else {
203
- complete();
123
+ _maybeScheduleHide() {
124
+ if (!this._config.autohide) {
125
+ return;
204
126
  }
205
- };
206
-
207
- _proto._clearTimeout = function _clearTimeout() {
127
+ if (this._hasMouseInteraction || this._hasKeyboardInteraction) {
128
+ return;
129
+ }
130
+ this._timeout = setTimeout(() => {
131
+ this.hide();
132
+ }, this._config.delay);
133
+ }
134
+ _onInteraction(event, isInteracting) {
135
+ switch (event.type) {
136
+ case 'mouseover':
137
+ case 'mouseout':
138
+ {
139
+ this._hasMouseInteraction = isInteracting;
140
+ break;
141
+ }
142
+ case 'focusin':
143
+ case 'focusout':
144
+ {
145
+ this._hasKeyboardInteraction = isInteracting;
146
+ break;
147
+ }
148
+ }
149
+ if (isInteracting) {
150
+ this._clearTimeout();
151
+ return;
152
+ }
153
+ const nextElement = event.relatedTarget;
154
+ if (this._element === nextElement || this._element.contains(nextElement)) {
155
+ return;
156
+ }
157
+ this._maybeScheduleHide();
158
+ }
159
+ _setListeners() {
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));
164
+ }
165
+ _clearTimeout() {
208
166
  clearTimeout(this._timeout);
209
167
  this._timeout = null;
210
- } // Static
211
- ;
168
+ }
212
169
 
213
- Toast._jQueryInterface = function _jQueryInterface(config) {
170
+ // Static
171
+ static jQueryInterface(config) {
214
172
  return this.each(function () {
215
- var $element = $__default['default'](this);
216
- var data = $element.data(DATA_KEY);
217
-
218
- var _config = typeof config === 'object' && config;
219
-
220
- if (!data) {
221
- data = new Toast(this, _config);
222
- $element.data(DATA_KEY, data);
223
- }
224
-
173
+ const data = Toast.getOrCreateInstance(this, config);
225
174
  if (typeof config === 'string') {
226
175
  if (typeof data[config] === 'undefined') {
227
- throw new TypeError("No method named \"" + config + "\"");
176
+ throw new TypeError(`No method named "${config}"`);
228
177
  }
229
-
230
178
  data[config](this);
231
179
  }
232
180
  });
233
- };
234
-
235
- _createClass(Toast, null, [{
236
- key: "VERSION",
237
- get: function get() {
238
- return VERSION;
239
- }
240
- }, {
241
- key: "DefaultType",
242
- get: function get() {
243
- return DefaultType;
244
- }
245
- }, {
246
- key: "Default",
247
- get: function get() {
248
- return Default;
249
- }
250
- }]);
181
+ }
182
+ }
251
183
 
252
- return Toast;
253
- }();
254
184
  /**
255
- * ------------------------------------------------------------------------
256
- * jQuery
257
- * ------------------------------------------------------------------------
185
+ * Data API implementation
258
186
  */
259
187
 
188
+ componentFunctions_js.enableDismissTrigger(Toast);
260
189
 
261
- $__default['default'].fn[NAME] = Toast._jQueryInterface;
262
- $__default['default'].fn[NAME].Constructor = Toast;
190
+ /**
191
+ * jQuery
192
+ */
263
193
 
264
- $__default['default'].fn[NAME].noConflict = function () {
265
- $__default['default'].fn[NAME] = JQUERY_NO_CONFLICT;
266
- return Toast._jQueryInterface;
267
- };
194
+ index_js.defineJQueryPlugin(Toast);
268
195
 
269
196
  return Toast;
270
197
 
271
- })));
198
+ }));