bootstrap 4.4.1 → 5.0.1
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/.travis.yml +13 -2
- data/README.md +7 -4
- data/assets/javascripts/bootstrap-global-this-define.js +6 -0
- data/assets/javascripts/bootstrap-global-this-undefine.js +2 -0
- data/assets/javascripts/bootstrap-sprockets.js +15 -8
- data/assets/javascripts/bootstrap.js +3244 -2770
- data/assets/javascripts/bootstrap.min.js +4 -4
- data/assets/javascripts/bootstrap/alert.js +130 -124
- data/assets/javascripts/bootstrap/base-component.js +168 -0
- data/assets/javascripts/bootstrap/button.js +85 -179
- data/assets/javascripts/bootstrap/carousel.js +430 -405
- data/assets/javascripts/bootstrap/collapse.js +325 -264
- data/assets/javascripts/bootstrap/dom/data.js +68 -0
- data/assets/javascripts/bootstrap/dom/event-handler.js +315 -0
- data/assets/javascripts/bootstrap/dom/manipulator.js +88 -0
- data/assets/javascripts/bootstrap/dom/selector-engine.js +85 -0
- data/assets/javascripts/bootstrap/dropdown.js +464 -400
- data/assets/javascripts/bootstrap/modal.js +604 -464
- data/assets/javascripts/bootstrap/offcanvas.js +671 -0
- data/assets/javascripts/bootstrap/popover.js +119 -192
- data/assets/javascripts/bootstrap/scrollspy.js +250 -238
- data/assets/javascripts/bootstrap/tab.js +189 -151
- data/assets/javascripts/bootstrap/toast.js +215 -192
- data/assets/javascripts/bootstrap/tooltip.js +604 -544
- data/assets/stylesheets/_bootstrap-grid.scss +54 -18
- data/assets/stylesheets/_bootstrap-reboot.scss +7 -4
- data/assets/stylesheets/_bootstrap.scss +19 -11
- data/assets/stylesheets/bootstrap/_accordion.scss +118 -0
- data/assets/stylesheets/bootstrap/_alert.scss +15 -9
- data/assets/stylesheets/bootstrap/_badge.scss +2 -27
- data/assets/stylesheets/bootstrap/_breadcrumb.scss +4 -18
- data/assets/stylesheets/bootstrap/_button-group.scss +21 -45
- data/assets/stylesheets/bootstrap/_buttons.scss +27 -55
- data/assets/stylesheets/bootstrap/_card.scss +43 -106
- data/assets/stylesheets/bootstrap/_carousel.scss +65 -33
- data/assets/stylesheets/bootstrap/_close.scss +30 -31
- data/assets/stylesheets/bootstrap/_containers.scss +41 -0
- data/assets/stylesheets/bootstrap/_dropdown.scss +87 -38
- data/assets/stylesheets/bootstrap/_forms.scss +9 -338
- data/assets/stylesheets/bootstrap/_functions.scss +99 -28
- data/assets/stylesheets/bootstrap/_grid.scss +3 -50
- data/assets/stylesheets/bootstrap/_helpers.scss +7 -0
- data/assets/stylesheets/bootstrap/_list-group.scss +38 -22
- data/assets/stylesheets/bootstrap/_mixins.scss +8 -13
- data/assets/stylesheets/bootstrap/_modal.scss +45 -65
- data/assets/stylesheets/bootstrap/_nav.scss +28 -9
- data/assets/stylesheets/bootstrap/_navbar.scss +51 -69
- data/assets/stylesheets/bootstrap/_offcanvas.scss +77 -0
- data/assets/stylesheets/bootstrap/_pagination.scss +11 -20
- data/assets/stylesheets/bootstrap/_popover.scss +15 -27
- data/assets/stylesheets/bootstrap/_progress.scss +6 -4
- data/assets/stylesheets/bootstrap/_reboot.scss +339 -200
- data/assets/stylesheets/bootstrap/_root.scss +5 -9
- data/assets/stylesheets/bootstrap/_spinners.scss +21 -7
- data/assets/stylesheets/bootstrap/_tables.scss +80 -114
- data/assets/stylesheets/bootstrap/_toasts.scss +21 -14
- data/assets/stylesheets/bootstrap/_tooltip.scss +17 -17
- data/assets/stylesheets/bootstrap/_transitions.scss +2 -1
- data/assets/stylesheets/bootstrap/_type.scss +38 -59
- data/assets/stylesheets/bootstrap/_utilities.scss +594 -17
- data/assets/stylesheets/bootstrap/_variables.scss +810 -489
- data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +18 -0
- data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +61 -0
- data/assets/stylesheets/bootstrap/forms/_form-check.scss +152 -0
- data/assets/stylesheets/bootstrap/forms/_form-control.scss +219 -0
- data/assets/stylesheets/bootstrap/forms/_form-range.scss +91 -0
- data/assets/stylesheets/bootstrap/forms/_form-select.scss +67 -0
- data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
- data/assets/stylesheets/bootstrap/forms/_input-group.scss +121 -0
- data/assets/stylesheets/bootstrap/forms/_labels.scss +36 -0
- data/assets/stylesheets/bootstrap/forms/_validation.scss +12 -0
- data/assets/stylesheets/bootstrap/{utilities → helpers}/_clearfix.scss +0 -0
- data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +12 -0
- data/assets/stylesheets/bootstrap/helpers/_position.scss +30 -0
- data/assets/stylesheets/bootstrap/helpers/_ratio.scss +26 -0
- data/assets/stylesheets/bootstrap/helpers/_stretched-link.scss +15 -0
- data/assets/stylesheets/bootstrap/helpers/_text-truncation.scss +7 -0
- data/assets/stylesheets/bootstrap/helpers/_visually-hidden.scss +8 -0
- data/assets/stylesheets/bootstrap/mixins/_alert.scss +3 -5
- data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +37 -22
- data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +7 -9
- data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +14 -10
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +75 -52
- data/assets/stylesheets/bootstrap/mixins/_caret.scss +10 -8
- data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
- data/assets/stylesheets/bootstrap/mixins/_color-scheme.scss +7 -0
- data/assets/stylesheets/bootstrap/mixins/_container.scss +9 -0
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +42 -75
- data/assets/stylesheets/bootstrap/mixins/_gradients.scss +13 -11
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +90 -34
- data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -21
- data/assets/stylesheets/bootstrap/mixins/_list-group.scss +5 -2
- data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_pagination.scss +17 -8
- data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +2 -2
- data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +21 -0
- data/assets/stylesheets/bootstrap/mixins/_transition.scss +18 -8
- data/assets/stylesheets/bootstrap/mixins/_utilities.scss +68 -0
- data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +29 -0
- data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
- data/assets/stylesheets/bootstrap/vendor/_rfs.scss +234 -126
- data/bootstrap.gemspec +1 -3
- data/lib/bootstrap/version.rb +2 -2
- data/tasks/updater/js.rb +20 -5
- data/tasks/updater/network.rb +8 -2
- data/test/dummy_rails/app/assets/javascripts/application.js +4 -3
- data/test/dummy_rails/app/views/layouts/application.html.erb +3 -1
- data/test/dummy_rails/app/views/pages/root.html +89 -0
- data/test/dummy_rails/config/application.rb +0 -3
- data/test/gemfiles/rails_6_0.gemfile +7 -0
- data/test/gemfiles/rails_6_1.gemfile +7 -0
- metadata +48 -73
- data/assets/javascripts/bootstrap/util.js +0 -188
- data/assets/stylesheets/bootstrap/_code.scss +0 -48
- data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -521
- data/assets/stylesheets/bootstrap/_input-group.scss +0 -191
- data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
- data/assets/stylesheets/bootstrap/_media.scss +0 -8
- data/assets/stylesheets/bootstrap/_print.scss +0 -141
- data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -22
- data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
- data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
- data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -71
- data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
- data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -11
- data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +0 -34
- data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
- data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
- data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -17
- data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
- data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
- data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
- data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
- data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
- data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
- data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
- data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
- data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
- data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
- data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
- data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
- data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
- data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
- data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
- data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
- data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -72
- data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
- data/test/dummy_rails/app/views/pages/root.html.slim +0 -58
|
@@ -1,135 +1,188 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Bootstrap tab.js
|
|
3
|
-
* Copyright 2011-
|
|
4
|
-
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/
|
|
2
|
+
* Bootstrap tab.js v5.0.1 (https://getbootstrap.com/)
|
|
3
|
+
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
|
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('
|
|
8
|
-
typeof define === 'function' && define.amd ? define(['
|
|
9
|
-
(global = global || self, global.Tab = factory(global.
|
|
10
|
-
}(this, (function (
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/selector-engine.js'), require('./dom/data.js'), require('./dom/event-handler.js'), require('./base-component.js')) :
|
|
8
|
+
typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/data', './dom/event-handler', './base-component'], factory) :
|
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Tab = factory(global.SelectorEngine, global.Data, global.EventHandler, global.Base));
|
|
10
|
+
}(this, (function (SelectorEngine, Data, EventHandler, BaseComponent) { 'use strict';
|
|
11
|
+
|
|
12
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
13
|
+
|
|
14
|
+
var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
|
|
15
|
+
var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data);
|
|
16
|
+
var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
|
|
17
|
+
var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
|
|
18
|
+
|
|
19
|
+
const getSelector = element => {
|
|
20
|
+
let selector = element.getAttribute('data-bs-target');
|
|
21
|
+
|
|
22
|
+
if (!selector || selector === '#') {
|
|
23
|
+
let hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,
|
|
24
|
+
// so everything starting with `#` or `.`. If a "real" URL is used as the selector,
|
|
25
|
+
// `document.querySelector` will rightfully complain it is invalid.
|
|
26
|
+
// See https://github.com/twbs/bootstrap/issues/32273
|
|
27
|
+
|
|
28
|
+
if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) {
|
|
29
|
+
return null;
|
|
30
|
+
} // Just in case some CMS puts out a full URL with the anchor appended
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {
|
|
34
|
+
hrefAttr = `#${hrefAttr.split('#')[1]}`;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
|
|
22
38
|
}
|
|
23
|
-
}
|
|
24
39
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
40
|
+
return selector;
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
const getElementFromSelector = element => {
|
|
44
|
+
const selector = getSelector(element);
|
|
45
|
+
return selector ? document.querySelector(selector) : null;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
const isDisabled = element => {
|
|
49
|
+
if (!element || element.nodeType !== Node.ELEMENT_NODE) {
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (element.classList.contains('disabled')) {
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if (typeof element.disabled !== 'undefined') {
|
|
58
|
+
return element.disabled;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
const reflow = element => element.offsetHeight;
|
|
65
|
+
|
|
66
|
+
const getjQuery = () => {
|
|
67
|
+
const {
|
|
68
|
+
jQuery
|
|
69
|
+
} = window;
|
|
70
|
+
|
|
71
|
+
if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
|
|
72
|
+
return jQuery;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return null;
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
const onDOMContentLoaded = callback => {
|
|
79
|
+
if (document.readyState === 'loading') {
|
|
80
|
+
document.addEventListener('DOMContentLoaded', callback);
|
|
81
|
+
} else {
|
|
82
|
+
callback();
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
const defineJQueryPlugin = plugin => {
|
|
87
|
+
onDOMContentLoaded(() => {
|
|
88
|
+
const $ = getjQuery();
|
|
89
|
+
/* istanbul ignore if */
|
|
90
|
+
|
|
91
|
+
if ($) {
|
|
92
|
+
const name = plugin.NAME;
|
|
93
|
+
const JQUERY_NO_CONFLICT = $.fn[name];
|
|
94
|
+
$.fn[name] = plugin.jQueryInterface;
|
|
95
|
+
$.fn[name].Constructor = plugin;
|
|
96
|
+
|
|
97
|
+
$.fn[name].noConflict = () => {
|
|
98
|
+
$.fn[name] = JQUERY_NO_CONFLICT;
|
|
99
|
+
return plugin.jQueryInterface;
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
};
|
|
30
104
|
|
|
105
|
+
/**
|
|
106
|
+
* --------------------------------------------------------------------------
|
|
107
|
+
* Bootstrap (v5.0.1): tab.js
|
|
108
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
109
|
+
* --------------------------------------------------------------------------
|
|
110
|
+
*/
|
|
31
111
|
/**
|
|
32
112
|
* ------------------------------------------------------------------------
|
|
33
113
|
* Constants
|
|
34
114
|
* ------------------------------------------------------------------------
|
|
35
115
|
*/
|
|
36
116
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
var Selector = {
|
|
58
|
-
DROPDOWN: '.dropdown',
|
|
59
|
-
NAV_LIST_GROUP: '.nav, .list-group',
|
|
60
|
-
ACTIVE: '.active',
|
|
61
|
-
ACTIVE_UL: '> li > .active',
|
|
62
|
-
DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',
|
|
63
|
-
DROPDOWN_TOGGLE: '.dropdown-toggle',
|
|
64
|
-
DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'
|
|
65
|
-
};
|
|
117
|
+
const NAME = 'tab';
|
|
118
|
+
const DATA_KEY = 'bs.tab';
|
|
119
|
+
const EVENT_KEY = `.${DATA_KEY}`;
|
|
120
|
+
const DATA_API_KEY = '.data-api';
|
|
121
|
+
const EVENT_HIDE = `hide${EVENT_KEY}`;
|
|
122
|
+
const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
|
|
123
|
+
const EVENT_SHOW = `show${EVENT_KEY}`;
|
|
124
|
+
const EVENT_SHOWN = `shown${EVENT_KEY}`;
|
|
125
|
+
const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
|
|
126
|
+
const CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';
|
|
127
|
+
const CLASS_NAME_ACTIVE = 'active';
|
|
128
|
+
const CLASS_NAME_FADE = 'fade';
|
|
129
|
+
const CLASS_NAME_SHOW = 'show';
|
|
130
|
+
const SELECTOR_DROPDOWN = '.dropdown';
|
|
131
|
+
const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';
|
|
132
|
+
const SELECTOR_ACTIVE = '.active';
|
|
133
|
+
const SELECTOR_ACTIVE_UL = ':scope > li > .active';
|
|
134
|
+
const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]';
|
|
135
|
+
const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
|
|
136
|
+
const SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active';
|
|
66
137
|
/**
|
|
67
138
|
* ------------------------------------------------------------------------
|
|
68
139
|
* Class Definition
|
|
69
140
|
* ------------------------------------------------------------------------
|
|
70
141
|
*/
|
|
71
142
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
} // Getters
|
|
143
|
+
class Tab extends BaseComponent__default['default'] {
|
|
144
|
+
// Getters
|
|
145
|
+
static get NAME() {
|
|
146
|
+
return NAME;
|
|
147
|
+
} // Public
|
|
78
148
|
|
|
79
149
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
// Public
|
|
83
|
-
_proto.show = function show() {
|
|
84
|
-
var _this = this;
|
|
85
|
-
|
|
86
|
-
if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName.ACTIVE) || $(this._element).hasClass(ClassName.DISABLED)) {
|
|
150
|
+
show() {
|
|
151
|
+
if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && this._element.classList.contains(CLASS_NAME_ACTIVE)) {
|
|
87
152
|
return;
|
|
88
153
|
}
|
|
89
154
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
155
|
+
let previous;
|
|
156
|
+
const target = getElementFromSelector(this._element);
|
|
157
|
+
|
|
158
|
+
const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP);
|
|
94
159
|
|
|
95
160
|
if (listElement) {
|
|
96
|
-
|
|
97
|
-
previous =
|
|
161
|
+
const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE;
|
|
162
|
+
previous = SelectorEngine__default['default'].find(itemSelector, listElement);
|
|
98
163
|
previous = previous[previous.length - 1];
|
|
99
164
|
}
|
|
100
165
|
|
|
101
|
-
|
|
166
|
+
const hideEvent = previous ? EventHandler__default['default'].trigger(previous, EVENT_HIDE, {
|
|
102
167
|
relatedTarget: this._element
|
|
103
|
-
});
|
|
104
|
-
|
|
168
|
+
}) : null;
|
|
169
|
+
const showEvent = EventHandler__default['default'].trigger(this._element, EVENT_SHOW, {
|
|
105
170
|
relatedTarget: previous
|
|
106
171
|
});
|
|
107
172
|
|
|
108
|
-
if (
|
|
109
|
-
$(previous).trigger(hideEvent);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
$(this._element).trigger(showEvent);
|
|
113
|
-
|
|
114
|
-
if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {
|
|
173
|
+
if (showEvent.defaultPrevented || hideEvent !== null && hideEvent.defaultPrevented) {
|
|
115
174
|
return;
|
|
116
175
|
}
|
|
117
176
|
|
|
118
|
-
if (selector) {
|
|
119
|
-
target = document.querySelector(selector);
|
|
120
|
-
}
|
|
121
|
-
|
|
122
177
|
this._activate(this._element, listElement);
|
|
123
178
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
relatedTarget:
|
|
179
|
+
const complete = () => {
|
|
180
|
+
EventHandler__default['default'].trigger(previous, EVENT_HIDDEN, {
|
|
181
|
+
relatedTarget: this._element
|
|
127
182
|
});
|
|
128
|
-
|
|
183
|
+
EventHandler__default['default'].trigger(this._element, EVENT_SHOWN, {
|
|
129
184
|
relatedTarget: previous
|
|
130
185
|
});
|
|
131
|
-
$(previous).trigger(hiddenEvent);
|
|
132
|
-
$(_this._element).trigger(shownEvent);
|
|
133
186
|
};
|
|
134
187
|
|
|
135
188
|
if (target) {
|
|
@@ -137,40 +190,32 @@
|
|
|
137
190
|
} else {
|
|
138
191
|
complete();
|
|
139
192
|
}
|
|
140
|
-
};
|
|
141
|
-
|
|
142
|
-
_proto.dispose = function dispose() {
|
|
143
|
-
$.removeData(this._element, DATA_KEY);
|
|
144
|
-
this._element = null;
|
|
145
193
|
} // Private
|
|
146
|
-
;
|
|
147
194
|
|
|
148
|
-
_proto._activate = function _activate(element, container, callback) {
|
|
149
|
-
var _this2 = this;
|
|
150
195
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
196
|
+
_activate(element, container, callback) {
|
|
197
|
+
const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? SelectorEngine__default['default'].find(SELECTOR_ACTIVE_UL, container) : SelectorEngine__default['default'].children(container, SELECTOR_ACTIVE);
|
|
198
|
+
const active = activeElements[0];
|
|
199
|
+
const isTransitioning = callback && active && active.classList.contains(CLASS_NAME_FADE);
|
|
154
200
|
|
|
155
|
-
|
|
156
|
-
return _this2._transitionComplete(element, active, callback);
|
|
157
|
-
};
|
|
201
|
+
const complete = () => this._transitionComplete(element, active, callback);
|
|
158
202
|
|
|
159
203
|
if (active && isTransitioning) {
|
|
160
|
-
|
|
161
|
-
|
|
204
|
+
active.classList.remove(CLASS_NAME_SHOW);
|
|
205
|
+
|
|
206
|
+
this._queueCallback(complete, element, true);
|
|
162
207
|
} else {
|
|
163
208
|
complete();
|
|
164
209
|
}
|
|
165
|
-
}
|
|
210
|
+
}
|
|
166
211
|
|
|
167
|
-
|
|
212
|
+
_transitionComplete(element, active, callback) {
|
|
168
213
|
if (active) {
|
|
169
|
-
|
|
170
|
-
|
|
214
|
+
active.classList.remove(CLASS_NAME_ACTIVE);
|
|
215
|
+
const dropdownChild = SelectorEngine__default['default'].findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode);
|
|
171
216
|
|
|
172
217
|
if (dropdownChild) {
|
|
173
|
-
|
|
218
|
+
dropdownChild.classList.remove(CLASS_NAME_ACTIVE);
|
|
174
219
|
}
|
|
175
220
|
|
|
176
221
|
if (active.getAttribute('role') === 'tab') {
|
|
@@ -178,24 +223,29 @@
|
|
|
178
223
|
}
|
|
179
224
|
}
|
|
180
225
|
|
|
181
|
-
|
|
226
|
+
element.classList.add(CLASS_NAME_ACTIVE);
|
|
182
227
|
|
|
183
228
|
if (element.getAttribute('role') === 'tab') {
|
|
184
229
|
element.setAttribute('aria-selected', true);
|
|
185
230
|
}
|
|
186
231
|
|
|
187
|
-
|
|
232
|
+
reflow(element);
|
|
233
|
+
|
|
234
|
+
if (element.classList.contains(CLASS_NAME_FADE)) {
|
|
235
|
+
element.classList.add(CLASS_NAME_SHOW);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
let parent = element.parentNode;
|
|
188
239
|
|
|
189
|
-
if (
|
|
190
|
-
|
|
240
|
+
if (parent && parent.nodeName === 'LI') {
|
|
241
|
+
parent = parent.parentNode;
|
|
191
242
|
}
|
|
192
243
|
|
|
193
|
-
if (
|
|
194
|
-
|
|
244
|
+
if (parent && parent.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {
|
|
245
|
+
const dropdownElement = element.closest(SELECTOR_DROPDOWN);
|
|
195
246
|
|
|
196
247
|
if (dropdownElement) {
|
|
197
|
-
|
|
198
|
-
$(dropdownToggleList).addClass(ClassName.ACTIVE);
|
|
248
|
+
SelectorEngine__default['default'].find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement).forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE));
|
|
199
249
|
}
|
|
200
250
|
|
|
201
251
|
element.setAttribute('aria-expanded', true);
|
|
@@ -205,37 +255,23 @@
|
|
|
205
255
|
callback();
|
|
206
256
|
}
|
|
207
257
|
} // Static
|
|
208
|
-
;
|
|
209
258
|
|
|
210
|
-
Tab._jQueryInterface = function _jQueryInterface(config) {
|
|
211
|
-
return this.each(function () {
|
|
212
|
-
var $this = $(this);
|
|
213
|
-
var data = $this.data(DATA_KEY);
|
|
214
259
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
}
|
|
260
|
+
static jQueryInterface(config) {
|
|
261
|
+
return this.each(function () {
|
|
262
|
+
const data = Data__default['default'].get(this, DATA_KEY) || new Tab(this);
|
|
219
263
|
|
|
220
264
|
if (typeof config === 'string') {
|
|
221
265
|
if (typeof data[config] === 'undefined') {
|
|
222
|
-
throw new TypeError(
|
|
266
|
+
throw new TypeError(`No method named "${config}"`);
|
|
223
267
|
}
|
|
224
268
|
|
|
225
269
|
data[config]();
|
|
226
270
|
}
|
|
227
271
|
});
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
_createClass(Tab, null, [{
|
|
231
|
-
key: "VERSION",
|
|
232
|
-
get: function get() {
|
|
233
|
-
return VERSION;
|
|
234
|
-
}
|
|
235
|
-
}]);
|
|
272
|
+
}
|
|
236
273
|
|
|
237
|
-
|
|
238
|
-
}();
|
|
274
|
+
}
|
|
239
275
|
/**
|
|
240
276
|
* ------------------------------------------------------------------------
|
|
241
277
|
* Data Api implementation
|
|
@@ -243,24 +279,26 @@
|
|
|
243
279
|
*/
|
|
244
280
|
|
|
245
281
|
|
|
246
|
-
|
|
247
|
-
|
|
282
|
+
EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
|
|
283
|
+
if (['A', 'AREA'].includes(this.tagName)) {
|
|
284
|
+
event.preventDefault();
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
if (isDisabled(this)) {
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
248
290
|
|
|
249
|
-
|
|
291
|
+
const data = Data__default['default'].get(this, DATA_KEY) || new Tab(this);
|
|
292
|
+
data.show();
|
|
250
293
|
});
|
|
251
294
|
/**
|
|
252
295
|
* ------------------------------------------------------------------------
|
|
253
296
|
* jQuery
|
|
254
297
|
* ------------------------------------------------------------------------
|
|
298
|
+
* add .Tab to jQuery only if jQuery is present
|
|
255
299
|
*/
|
|
256
300
|
|
|
257
|
-
|
|
258
|
-
$.fn[NAME].Constructor = Tab;
|
|
259
|
-
|
|
260
|
-
$.fn[NAME].noConflict = function () {
|
|
261
|
-
$.fn[NAME] = JQUERY_NO_CONFLICT;
|
|
262
|
-
return Tab._jQueryInterface;
|
|
263
|
-
};
|
|
301
|
+
defineJQueryPlugin(Tab);
|
|
264
302
|
|
|
265
303
|
return Tab;
|
|
266
304
|
|
|
@@ -1,301 +1,324 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Bootstrap toast.js
|
|
3
|
-
* Copyright 2011-
|
|
4
|
-
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/
|
|
2
|
+
* Bootstrap toast.js v5.0.1 (https://getbootstrap.com/)
|
|
3
|
+
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
|
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('
|
|
8
|
-
typeof define === 'function' && define.amd ? define(['
|
|
9
|
-
(global = global || self, global.Toast = factory(global.
|
|
10
|
-
}(this, (function (
|
|
11
|
-
|
|
12
|
-
$ = $ && $.hasOwnProperty('default') ? $['default'] : $;
|
|
13
|
-
Util = Util && Util.hasOwnProperty('default') ? Util['default'] : Util;
|
|
14
|
-
|
|
15
|
-
function _defineProperties(target, props) {
|
|
16
|
-
for (var i = 0; i < props.length; i++) {
|
|
17
|
-
var descriptor = props[i];
|
|
18
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
19
|
-
descriptor.configurable = true;
|
|
20
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
21
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./base-component.js')) :
|
|
8
|
+
typeof define === 'function' && define.amd ? define(['./dom/data', './dom/event-handler', './dom/manipulator', './base-component'], factory) :
|
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Toast = factory(global.Data, global.EventHandler, global.Manipulator, global.Base));
|
|
10
|
+
}(this, (function (Data, EventHandler, Manipulator, BaseComponent) { 'use strict';
|
|
24
11
|
|
|
25
|
-
function
|
|
26
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
27
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
28
|
-
return Constructor;
|
|
29
|
-
}
|
|
12
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
30
13
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
} else {
|
|
40
|
-
obj[key] = value;
|
|
14
|
+
var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data);
|
|
15
|
+
var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
|
|
16
|
+
var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);
|
|
17
|
+
var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
|
|
18
|
+
|
|
19
|
+
const toType = obj => {
|
|
20
|
+
if (obj === null || obj === undefined) {
|
|
21
|
+
return `${obj}`;
|
|
41
22
|
}
|
|
42
23
|
|
|
43
|
-
return obj;
|
|
44
|
-
}
|
|
24
|
+
return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
|
|
25
|
+
};
|
|
45
26
|
|
|
46
|
-
|
|
47
|
-
|
|
27
|
+
const isElement = obj => {
|
|
28
|
+
if (!obj || typeof obj !== 'object') {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
48
31
|
|
|
49
|
-
if (
|
|
50
|
-
|
|
51
|
-
if (enumerableOnly) symbols = symbols.filter(function (sym) {
|
|
52
|
-
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
53
|
-
});
|
|
54
|
-
keys.push.apply(keys, symbols);
|
|
32
|
+
if (typeof obj.jquery !== 'undefined') {
|
|
33
|
+
obj = obj[0];
|
|
55
34
|
}
|
|
56
35
|
|
|
57
|
-
return
|
|
58
|
-
}
|
|
36
|
+
return typeof obj.nodeType !== 'undefined';
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
const typeCheckConfig = (componentName, config, configTypes) => {
|
|
40
|
+
Object.keys(configTypes).forEach(property => {
|
|
41
|
+
const expectedTypes = configTypes[property];
|
|
42
|
+
const value = config[property];
|
|
43
|
+
const valueType = value && isElement(value) ? 'element' : toType(value);
|
|
59
44
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
var source = arguments[i] != null ? arguments[i] : {};
|
|
63
|
-
|
|
64
|
-
if (i % 2) {
|
|
65
|
-
ownKeys(Object(source), true).forEach(function (key) {
|
|
66
|
-
_defineProperty(target, key, source[key]);
|
|
67
|
-
});
|
|
68
|
-
} else if (Object.getOwnPropertyDescriptors) {
|
|
69
|
-
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
70
|
-
} else {
|
|
71
|
-
ownKeys(Object(source)).forEach(function (key) {
|
|
72
|
-
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
73
|
-
});
|
|
45
|
+
if (!new RegExp(expectedTypes).test(valueType)) {
|
|
46
|
+
throw new TypeError(`${componentName.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`);
|
|
74
47
|
}
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
const reflow = element => element.offsetHeight;
|
|
52
|
+
|
|
53
|
+
const getjQuery = () => {
|
|
54
|
+
const {
|
|
55
|
+
jQuery
|
|
56
|
+
} = window;
|
|
57
|
+
|
|
58
|
+
if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
|
|
59
|
+
return jQuery;
|
|
75
60
|
}
|
|
76
61
|
|
|
77
|
-
return
|
|
78
|
-
}
|
|
62
|
+
return null;
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
const onDOMContentLoaded = callback => {
|
|
66
|
+
if (document.readyState === 'loading') {
|
|
67
|
+
document.addEventListener('DOMContentLoaded', callback);
|
|
68
|
+
} else {
|
|
69
|
+
callback();
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
const defineJQueryPlugin = plugin => {
|
|
74
|
+
onDOMContentLoaded(() => {
|
|
75
|
+
const $ = getjQuery();
|
|
76
|
+
/* istanbul ignore if */
|
|
77
|
+
|
|
78
|
+
if ($) {
|
|
79
|
+
const name = plugin.NAME;
|
|
80
|
+
const JQUERY_NO_CONFLICT = $.fn[name];
|
|
81
|
+
$.fn[name] = plugin.jQueryInterface;
|
|
82
|
+
$.fn[name].Constructor = plugin;
|
|
83
|
+
|
|
84
|
+
$.fn[name].noConflict = () => {
|
|
85
|
+
$.fn[name] = JQUERY_NO_CONFLICT;
|
|
86
|
+
return plugin.jQueryInterface;
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
};
|
|
79
91
|
|
|
92
|
+
/**
|
|
93
|
+
* --------------------------------------------------------------------------
|
|
94
|
+
* Bootstrap (v5.0.1): toast.js
|
|
95
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
96
|
+
* --------------------------------------------------------------------------
|
|
97
|
+
*/
|
|
80
98
|
/**
|
|
81
99
|
* ------------------------------------------------------------------------
|
|
82
100
|
* Constants
|
|
83
101
|
* ------------------------------------------------------------------------
|
|
84
102
|
*/
|
|
85
103
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
};
|
|
104
|
-
var DefaultType = {
|
|
104
|
+
const NAME = 'toast';
|
|
105
|
+
const DATA_KEY = 'bs.toast';
|
|
106
|
+
const EVENT_KEY = `.${DATA_KEY}`;
|
|
107
|
+
const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`;
|
|
108
|
+
const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;
|
|
109
|
+
const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;
|
|
110
|
+
const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
|
|
111
|
+
const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;
|
|
112
|
+
const EVENT_HIDE = `hide${EVENT_KEY}`;
|
|
113
|
+
const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
|
|
114
|
+
const EVENT_SHOW = `show${EVENT_KEY}`;
|
|
115
|
+
const EVENT_SHOWN = `shown${EVENT_KEY}`;
|
|
116
|
+
const CLASS_NAME_FADE = 'fade';
|
|
117
|
+
const CLASS_NAME_HIDE = 'hide';
|
|
118
|
+
const CLASS_NAME_SHOW = 'show';
|
|
119
|
+
const CLASS_NAME_SHOWING = 'showing';
|
|
120
|
+
const DefaultType = {
|
|
105
121
|
animation: 'boolean',
|
|
106
122
|
autohide: 'boolean',
|
|
107
123
|
delay: 'number'
|
|
108
124
|
};
|
|
109
|
-
|
|
125
|
+
const Default = {
|
|
110
126
|
animation: true,
|
|
111
127
|
autohide: true,
|
|
112
|
-
delay:
|
|
113
|
-
};
|
|
114
|
-
var Selector = {
|
|
115
|
-
DATA_DISMISS: '[data-dismiss="toast"]'
|
|
128
|
+
delay: 5000
|
|
116
129
|
};
|
|
130
|
+
const SELECTOR_DATA_DISMISS = '[data-bs-dismiss="toast"]';
|
|
117
131
|
/**
|
|
118
132
|
* ------------------------------------------------------------------------
|
|
119
133
|
* Class Definition
|
|
120
134
|
* ------------------------------------------------------------------------
|
|
121
135
|
*/
|
|
122
136
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
function Toast(element, config) {
|
|
127
|
-
this._element = element;
|
|
137
|
+
class Toast extends BaseComponent__default['default'] {
|
|
138
|
+
constructor(element, config) {
|
|
139
|
+
super(element);
|
|
128
140
|
this._config = this._getConfig(config);
|
|
129
141
|
this._timeout = null;
|
|
142
|
+
this._hasMouseInteraction = false;
|
|
143
|
+
this._hasKeyboardInteraction = false;
|
|
130
144
|
|
|
131
145
|
this._setListeners();
|
|
132
146
|
} // Getters
|
|
133
147
|
|
|
134
148
|
|
|
135
|
-
|
|
149
|
+
static get DefaultType() {
|
|
150
|
+
return DefaultType;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
static get Default() {
|
|
154
|
+
return Default;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
static get NAME() {
|
|
158
|
+
return NAME;
|
|
159
|
+
} // Public
|
|
136
160
|
|
|
137
|
-
// Public
|
|
138
|
-
_proto.show = function show() {
|
|
139
|
-
var _this = this;
|
|
140
161
|
|
|
141
|
-
|
|
142
|
-
|
|
162
|
+
show() {
|
|
163
|
+
const showEvent = EventHandler__default['default'].trigger(this._element, EVENT_SHOW);
|
|
143
164
|
|
|
144
|
-
if (showEvent.
|
|
165
|
+
if (showEvent.defaultPrevented) {
|
|
145
166
|
return;
|
|
146
167
|
}
|
|
147
168
|
|
|
169
|
+
this._clearTimeout();
|
|
170
|
+
|
|
148
171
|
if (this._config.animation) {
|
|
149
|
-
this._element.classList.add(
|
|
172
|
+
this._element.classList.add(CLASS_NAME_FADE);
|
|
150
173
|
}
|
|
151
174
|
|
|
152
|
-
|
|
153
|
-
|
|
175
|
+
const complete = () => {
|
|
176
|
+
this._element.classList.remove(CLASS_NAME_SHOWING);
|
|
154
177
|
|
|
155
|
-
|
|
178
|
+
this._element.classList.add(CLASS_NAME_SHOW);
|
|
156
179
|
|
|
157
|
-
|
|
180
|
+
EventHandler__default['default'].trigger(this._element, EVENT_SHOWN);
|
|
158
181
|
|
|
159
|
-
|
|
160
|
-
_this._timeout = setTimeout(function () {
|
|
161
|
-
_this.hide();
|
|
162
|
-
}, _this._config.delay);
|
|
163
|
-
}
|
|
182
|
+
this._maybeScheduleHide();
|
|
164
183
|
};
|
|
165
184
|
|
|
166
|
-
this._element.classList.remove(
|
|
185
|
+
this._element.classList.remove(CLASS_NAME_HIDE);
|
|
167
186
|
|
|
168
|
-
|
|
187
|
+
reflow(this._element);
|
|
169
188
|
|
|
170
|
-
this._element.classList.add(
|
|
189
|
+
this._element.classList.add(CLASS_NAME_SHOWING);
|
|
171
190
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
$(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
|
|
175
|
-
} else {
|
|
176
|
-
complete();
|
|
177
|
-
}
|
|
178
|
-
};
|
|
191
|
+
this._queueCallback(complete, this._element, this._config.animation);
|
|
192
|
+
}
|
|
179
193
|
|
|
180
|
-
|
|
181
|
-
if (!this._element.classList.contains(
|
|
194
|
+
hide() {
|
|
195
|
+
if (!this._element.classList.contains(CLASS_NAME_SHOW)) {
|
|
182
196
|
return;
|
|
183
197
|
}
|
|
184
198
|
|
|
185
|
-
|
|
186
|
-
$(this._element).trigger(hideEvent);
|
|
199
|
+
const hideEvent = EventHandler__default['default'].trigger(this._element, EVENT_HIDE);
|
|
187
200
|
|
|
188
|
-
if (hideEvent.
|
|
201
|
+
if (hideEvent.defaultPrevented) {
|
|
189
202
|
return;
|
|
190
203
|
}
|
|
191
204
|
|
|
192
|
-
|
|
193
|
-
|
|
205
|
+
const complete = () => {
|
|
206
|
+
this._element.classList.add(CLASS_NAME_HIDE);
|
|
194
207
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
208
|
+
EventHandler__default['default'].trigger(this._element, EVENT_HIDDEN);
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
this._element.classList.remove(CLASS_NAME_SHOW);
|
|
212
|
+
|
|
213
|
+
this._queueCallback(complete, this._element, this._config.animation);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
dispose() {
|
|
217
|
+
this._clearTimeout();
|
|
198
218
|
|
|
199
|
-
if (this._element.classList.contains(
|
|
200
|
-
this._element.classList.remove(
|
|
219
|
+
if (this._element.classList.contains(CLASS_NAME_SHOW)) {
|
|
220
|
+
this._element.classList.remove(CLASS_NAME_SHOW);
|
|
201
221
|
}
|
|
202
222
|
|
|
203
|
-
|
|
204
|
-
$.removeData(this._element, DATA_KEY);
|
|
205
|
-
this._element = null;
|
|
206
|
-
this._config = null;
|
|
223
|
+
super.dispose();
|
|
207
224
|
} // Private
|
|
208
|
-
;
|
|
209
225
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
226
|
+
|
|
227
|
+
_getConfig(config) {
|
|
228
|
+
config = { ...Default,
|
|
229
|
+
...Manipulator__default['default'].getDataAttributes(this._element),
|
|
230
|
+
...(typeof config === 'object' && config ? config : {})
|
|
231
|
+
};
|
|
232
|
+
typeCheckConfig(NAME, config, this.constructor.DefaultType);
|
|
213
233
|
return config;
|
|
214
|
-
}
|
|
234
|
+
}
|
|
215
235
|
|
|
216
|
-
|
|
217
|
-
|
|
236
|
+
_maybeScheduleHide() {
|
|
237
|
+
if (!this._config.autohide) {
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
218
240
|
|
|
219
|
-
|
|
220
|
-
return
|
|
221
|
-
}
|
|
222
|
-
};
|
|
241
|
+
if (this._hasMouseInteraction || this._hasKeyboardInteraction) {
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
223
244
|
|
|
224
|
-
|
|
225
|
-
|
|
245
|
+
this._timeout = setTimeout(() => {
|
|
246
|
+
this.hide();
|
|
247
|
+
}, this._config.delay);
|
|
248
|
+
}
|
|
226
249
|
|
|
227
|
-
|
|
228
|
-
|
|
250
|
+
_onInteraction(event, isInteracting) {
|
|
251
|
+
switch (event.type) {
|
|
252
|
+
case 'mouseover':
|
|
253
|
+
case 'mouseout':
|
|
254
|
+
this._hasMouseInteraction = isInteracting;
|
|
255
|
+
break;
|
|
256
|
+
|
|
257
|
+
case 'focusin':
|
|
258
|
+
case 'focusout':
|
|
259
|
+
this._hasKeyboardInteraction = isInteracting;
|
|
260
|
+
break;
|
|
261
|
+
}
|
|
229
262
|
|
|
230
|
-
|
|
231
|
-
|
|
263
|
+
if (isInteracting) {
|
|
264
|
+
this._clearTimeout();
|
|
232
265
|
|
|
233
|
-
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
234
268
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
complete();
|
|
269
|
+
const nextElement = event.relatedTarget;
|
|
270
|
+
|
|
271
|
+
if (this._element === nextElement || this._element.contains(nextElement)) {
|
|
272
|
+
return;
|
|
240
273
|
}
|
|
274
|
+
|
|
275
|
+
this._maybeScheduleHide();
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
_setListeners() {
|
|
279
|
+
EventHandler__default['default'].on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide());
|
|
280
|
+
EventHandler__default['default'].on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true));
|
|
281
|
+
EventHandler__default['default'].on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false));
|
|
282
|
+
EventHandler__default['default'].on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true));
|
|
283
|
+
EventHandler__default['default'].on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
_clearTimeout() {
|
|
287
|
+
clearTimeout(this._timeout);
|
|
288
|
+
this._timeout = null;
|
|
241
289
|
} // Static
|
|
242
|
-
;
|
|
243
290
|
|
|
244
|
-
|
|
291
|
+
|
|
292
|
+
static jQueryInterface(config) {
|
|
245
293
|
return this.each(function () {
|
|
246
|
-
|
|
247
|
-
var data = $element.data(DATA_KEY);
|
|
294
|
+
let data = Data__default['default'].get(this, DATA_KEY);
|
|
248
295
|
|
|
249
|
-
|
|
296
|
+
const _config = typeof config === 'object' && config;
|
|
250
297
|
|
|
251
298
|
if (!data) {
|
|
252
299
|
data = new Toast(this, _config);
|
|
253
|
-
$element.data(DATA_KEY, data);
|
|
254
300
|
}
|
|
255
301
|
|
|
256
302
|
if (typeof config === 'string') {
|
|
257
303
|
if (typeof data[config] === 'undefined') {
|
|
258
|
-
throw new TypeError(
|
|
304
|
+
throw new TypeError(`No method named "${config}"`);
|
|
259
305
|
}
|
|
260
306
|
|
|
261
307
|
data[config](this);
|
|
262
308
|
}
|
|
263
309
|
});
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
_createClass(Toast, null, [{
|
|
267
|
-
key: "VERSION",
|
|
268
|
-
get: function get() {
|
|
269
|
-
return VERSION;
|
|
270
|
-
}
|
|
271
|
-
}, {
|
|
272
|
-
key: "DefaultType",
|
|
273
|
-
get: function get() {
|
|
274
|
-
return DefaultType;
|
|
275
|
-
}
|
|
276
|
-
}, {
|
|
277
|
-
key: "Default",
|
|
278
|
-
get: function get() {
|
|
279
|
-
return Default;
|
|
280
|
-
}
|
|
281
|
-
}]);
|
|
310
|
+
}
|
|
282
311
|
|
|
283
|
-
|
|
284
|
-
}();
|
|
312
|
+
}
|
|
285
313
|
/**
|
|
286
314
|
* ------------------------------------------------------------------------
|
|
287
315
|
* jQuery
|
|
288
316
|
* ------------------------------------------------------------------------
|
|
317
|
+
* add .Toast to jQuery only if jQuery is present
|
|
289
318
|
*/
|
|
290
319
|
|
|
291
320
|
|
|
292
|
-
|
|
293
|
-
$.fn[NAME].Constructor = Toast;
|
|
294
|
-
|
|
295
|
-
$.fn[NAME].noConflict = function () {
|
|
296
|
-
$.fn[NAME] = JQUERY_NO_CONFLICT;
|
|
297
|
-
return Toast._jQueryInterface;
|
|
298
|
-
};
|
|
321
|
+
defineJQueryPlugin(Toast);
|
|
299
322
|
|
|
300
323
|
return Toast;
|
|
301
324
|
|