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.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +56 -0
- data/CHANGELOG.md +9 -0
- data/Gemfile +1 -0
- data/README.md +35 -14
- data/Rakefile +16 -5
- data/assets/javascripts/bootstrap/alert.js +22 -167
- data/assets/javascripts/bootstrap/base-component.js +35 -132
- data/assets/javascripts/bootstrap/button.js +19 -86
- data/assets/javascripts/bootstrap/carousel.js +209 -564
- data/assets/javascripts/bootstrap/collapse.js +78 -324
- data/assets/javascripts/bootstrap/dom/data.js +8 -14
- data/assets/javascripts/bootstrap/dom/event-handler.js +89 -174
- data/assets/javascripts/bootstrap/dom/manipulator.js +22 -39
- data/assets/javascripts/bootstrap/dom/selector-engine.js +47 -71
- data/assets/javascripts/bootstrap/dropdown.js +135 -420
- data/assets/javascripts/bootstrap/modal.js +115 -837
- data/assets/javascripts/bootstrap/offcanvas.js +93 -714
- data/assets/javascripts/bootstrap/popover.js +42 -130
- data/assets/javascripts/bootstrap/scrollspy.js +180 -296
- data/assets/javascripts/bootstrap/tab.js +197 -245
- data/assets/javascripts/bootstrap/toast.js +51 -276
- data/assets/javascripts/bootstrap/tooltip.js +284 -744
- data/assets/javascripts/bootstrap/util/backdrop.js +138 -0
- data/assets/javascripts/bootstrap/util/component-functions.js +41 -0
- data/assets/javascripts/bootstrap/util/config.js +67 -0
- data/assets/javascripts/bootstrap/util/focustrap.js +112 -0
- data/assets/javascripts/bootstrap/util/index.js +280 -0
- data/assets/javascripts/bootstrap/util/sanitizer.js +112 -0
- data/assets/javascripts/bootstrap/util/scrollbar.js +112 -0
- data/assets/javascripts/bootstrap/util/swipe.js +134 -0
- data/assets/javascripts/bootstrap/util/template-factory.js +150 -0
- data/assets/javascripts/bootstrap-global-this-define.js +1 -1
- data/assets/javascripts/bootstrap-sprockets.js +18 -9
- data/assets/javascripts/bootstrap.js +2279 -2831
- data/assets/javascripts/bootstrap.min.js +3 -3
- data/assets/stylesheets/_bootstrap-grid.scss +4 -9
- data/assets/stylesheets/_bootstrap-reboot.scss +4 -7
- data/assets/stylesheets/_bootstrap-utilities.scss +19 -0
- data/assets/stylesheets/_bootstrap.scss +5 -6
- data/assets/stylesheets/bootstrap/_accordion.scss +68 -33
- data/assets/stylesheets/bootstrap/_alert.scss +25 -14
- data/assets/stylesheets/bootstrap/_badge.scss +14 -5
- data/assets/stylesheets/bootstrap/_breadcrumb.scss +22 -10
- data/assets/stylesheets/bootstrap/_button-group.scss +12 -4
- data/assets/stylesheets/bootstrap/_buttons.scss +133 -28
- data/assets/stylesheets/bootstrap/_card.scss +69 -47
- data/assets/stylesheets/bootstrap/_carousel.scss +22 -25
- data/assets/stylesheets/bootstrap/_close.scss +36 -10
- data/assets/stylesheets/bootstrap/_containers.scss +1 -1
- data/assets/stylesheets/bootstrap/_dropdown.scss +86 -76
- data/assets/stylesheets/bootstrap/_functions.scss +11 -11
- data/assets/stylesheets/bootstrap/_grid.scss +9 -3
- data/assets/stylesheets/bootstrap/_helpers.scss +3 -0
- data/assets/stylesheets/bootstrap/_list-group.scss +81 -56
- data/assets/stylesheets/bootstrap/_maps.scss +174 -0
- data/assets/stylesheets/bootstrap/_mixins.scss +1 -2
- data/assets/stylesheets/bootstrap/_modal.scss +76 -45
- data/assets/stylesheets/bootstrap/_nav.scss +87 -29
- data/assets/stylesheets/bootstrap/_navbar.scss +102 -148
- data/assets/stylesheets/bootstrap/_offcanvas.scss +125 -61
- data/assets/stylesheets/bootstrap/_pagination.scss +66 -21
- data/assets/stylesheets/bootstrap/_placeholders.scss +1 -1
- data/assets/stylesheets/bootstrap/_popover.scss +90 -52
- data/assets/stylesheets/bootstrap/_progress.scss +31 -11
- data/assets/stylesheets/bootstrap/_reboot.scss +38 -46
- data/assets/stylesheets/bootstrap/_root.scss +155 -22
- data/assets/stylesheets/bootstrap/_spinners.scss +39 -22
- data/assets/stylesheets/bootstrap/_tables.scss +40 -24
- data/assets/stylesheets/bootstrap/_toasts.scss +38 -16
- data/assets/stylesheets/bootstrap/_tooltip.scss +60 -56
- data/assets/stylesheets/bootstrap/_type.scss +3 -1
- data/assets/stylesheets/bootstrap/_utilities.scss +209 -33
- data/assets/stylesheets/bootstrap/_variables-dark.scss +102 -0
- data/assets/stylesheets/bootstrap/_variables.scss +415 -303
- data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +39 -5
- data/assets/stylesheets/bootstrap/forms/_form-check.scss +51 -14
- data/assets/stylesheets/bootstrap/forms/_form-control.scss +36 -41
- data/assets/stylesheets/bootstrap/forms/_form-range.scss +3 -3
- data/assets/stylesheets/bootstrap/forms/_form-select.scss +12 -4
- data/assets/stylesheets/bootstrap/forms/_input-group.scss +20 -9
- data/assets/stylesheets/bootstrap/helpers/_color-bg.scss +7 -0
- data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +20 -2
- data/assets/stylesheets/bootstrap/helpers/_focus-ring.scss +5 -0
- data/assets/stylesheets/bootstrap/helpers/_icon-link.scss +25 -0
- data/assets/stylesheets/bootstrap/helpers/_position.scss +7 -1
- data/assets/stylesheets/bootstrap/helpers/_ratio.scss +2 -2
- data/assets/stylesheets/bootstrap/helpers/_vr.scss +2 -2
- data/assets/stylesheets/bootstrap/mixins/_alert.scss +11 -4
- data/assets/stylesheets/bootstrap/mixins/_banner.scss +7 -0
- data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +11 -5
- data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +8 -8
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +32 -95
- data/assets/stylesheets/bootstrap/mixins/_caret.scss +30 -25
- data/assets/stylesheets/bootstrap/mixins/_color-mode.scss +21 -0
- data/assets/stylesheets/bootstrap/mixins/_container.scss +4 -2
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +38 -19
- data/assets/stylesheets/bootstrap/mixins/_gradients.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +15 -15
- data/assets/stylesheets/bootstrap/mixins/_list-group.scss +2 -0
- data/assets/stylesheets/bootstrap/mixins/_pagination.scss +4 -25
- data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +12 -9
- data/assets/stylesheets/bootstrap/mixins/_utilities.scss +14 -6
- data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +11 -2
- data/assets/stylesheets/bootstrap/vendor/_rfs.scss +23 -29
- data/bootstrap.gemspec +4 -4
- data/lib/bootstrap/engine.rb +17 -2
- data/lib/bootstrap/version.rb +2 -2
- data/tasks/updater/js.rb +10 -5
- data/tasks/updater/network.rb +2 -2
- data/tasks/updater/scss.rb +2 -2
- data/tasks/updater.rb +2 -2
- data/test/dummy_rails/config/application.rb +0 -2
- data/test/dummy_rails/public/favicon.ico +0 -0
- data/test/gemfiles/rails_4_2.gemfile +2 -1
- data/test/gemfiles/rails_5_0.gemfile +1 -2
- data/test/gemfiles/rails_5_1.gemfile +1 -2
- data/test/gemfiles/rails_5_2.gemfile +7 -0
- data/test/gemfiles/rails_6_0.gemfile +9 -1
- data/test/gemfiles/rails_6_1.gemfile +9 -1
- data/test/gemfiles/rails_7_0_dartsass.gemfile +15 -0
- data/test/gemfiles/rails_7_0_sassc.gemfile +15 -0
- data/test/rails_test.rb +0 -5
- data/test/test_helper.rb +7 -4
- metadata +57 -27
- data/.travis.yml +0 -32
- data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +0 -18
|
@@ -1,202 +1,24 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Bootstrap toast.js v5.
|
|
3
|
-
* Copyright 2011-
|
|
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('./
|
|
8
|
-
typeof define === 'function' && define.amd ? define(['./dom/event-handler', './
|
|
9
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Toast = factory(global.EventHandler, global.
|
|
10
|
-
})(this, (function (EventHandler,
|
|
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
|
|
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
|
|
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
|
-
}
|
|
257
|
-
|
|
72
|
+
}
|
|
258
73
|
|
|
74
|
+
// Public
|
|
259
75
|
show() {
|
|
260
|
-
const showEvent =
|
|
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.
|
|
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
|
-
}
|
|
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
|
-
|
|
358
|
-
|
|
359
|
-
|
|
137
|
+
{
|
|
138
|
+
this._hasMouseInteraction = isInteracting;
|
|
139
|
+
break;
|
|
140
|
+
}
|
|
360
141
|
case 'focusin':
|
|
361
142
|
case 'focusout':
|
|
362
|
-
|
|
363
|
-
|
|
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
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
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
|
-
}
|
|
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
|
|