bootstrap 4.5.3 → 5.2.3

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