bootstrap 4.6.1 → 5.0.0
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 +2 -1
- data/README.md +7 -4
- data/assets/javascripts/bootstrap/alert.js +192 -112
- data/assets/javascripts/bootstrap/base-component.js +63 -0
- data/assets/javascripts/bootstrap/button.js +96 -176
- data/assets/javascripts/bootstrap/carousel.js +470 -355
- data/assets/javascripts/bootstrap/collapse.js +377 -221
- data/assets/javascripts/bootstrap/dom/data.js +68 -0
- data/assets/javascripts/bootstrap/dom/event-handler.js +322 -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 +470 -351
- data/assets/javascripts/bootstrap/modal.js +611 -435
- data/assets/javascripts/bootstrap/offcanvas.js +671 -0
- data/assets/javascripts/bootstrap/popover.js +137 -165
- data/assets/javascripts/bootstrap/scrollspy.js +249 -191
- data/assets/javascripts/bootstrap/tab.js +241 -141
- data/assets/javascripts/bootstrap/toast.js +221 -153
- data/assets/javascripts/bootstrap/tooltip.js +649 -483
- 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 +14 -7
- data/assets/javascripts/bootstrap.js +3272 -2586
- data/assets/javascripts/bootstrap.min.js +2 -2
- data/assets/stylesheets/_bootstrap-grid.scss +51 -16
- data/assets/stylesheets/_bootstrap-reboot.scss +4 -1
- data/assets/stylesheets/_bootstrap.scss +16 -8
- data/assets/stylesheets/bootstrap/_accordion.scss +118 -0
- data/assets/stylesheets/bootstrap/_alert.scss +15 -10
- data/assets/stylesheets/bootstrap/_badge.scss +2 -27
- data/assets/stylesheets/bootstrap/_breadcrumb.scss +3 -17
- data/assets/stylesheets/bootstrap/_button-group.scss +21 -45
- data/assets/stylesheets/bootstrap/_buttons.scss +29 -60
- data/assets/stylesheets/bootstrap/_card.scss +20 -91
- data/assets/stylesheets/bootstrap/_carousel.scss +64 -35
- data/assets/stylesheets/bootstrap/_close.scss +30 -30
- data/assets/stylesheets/bootstrap/_containers.scss +41 -0
- data/assets/stylesheets/bootstrap/_dropdown.scss +84 -36
- data/assets/stylesheets/bootstrap/_forms.scss +9 -347
- data/assets/stylesheets/bootstrap/_functions.scss +84 -69
- data/assets/stylesheets/bootstrap/_grid.scss +3 -54
- data/assets/stylesheets/bootstrap/_helpers.scss +7 -0
- data/assets/stylesheets/bootstrap/_images.scss +1 -1
- data/assets/stylesheets/bootstrap/_list-group.scss +28 -8
- data/assets/stylesheets/bootstrap/_mixins.scss +8 -13
- data/assets/stylesheets/bootstrap/_modal.scss +45 -57
- data/assets/stylesheets/bootstrap/_nav.scss +23 -4
- data/assets/stylesheets/bootstrap/_navbar.scss +45 -71
- data/assets/stylesheets/bootstrap/_offcanvas.scss +77 -0
- data/assets/stylesheets/bootstrap/_pagination.scss +10 -20
- data/assets/stylesheets/bootstrap/_popover.scss +24 -36
- data/assets/stylesheets/bootstrap/_progress.scss +5 -4
- data/assets/stylesheets/bootstrap/_reboot.scss +316 -179
- data/assets/stylesheets/bootstrap/_root.scss +5 -8
- data/assets/stylesheets/bootstrap/_spinners.scss +9 -5
- data/assets/stylesheets/bootstrap/_tables.scss +79 -114
- data/assets/stylesheets/bootstrap/_toasts.scss +20 -15
- data/assets/stylesheets/bootstrap/_tooltip.scss +21 -21
- data/assets/stylesheets/bootstrap/_transitions.scss +2 -1
- data/assets/stylesheets/bootstrap/_type.scss +38 -59
- data/assets/stylesheets/bootstrap/_utilities.scss +594 -18
- data/assets/stylesheets/bootstrap/_variables.scss +801 -485
- 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 +10 -8
- 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 +71 -48
- 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 +39 -97
- 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 +1 -1
- 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 +214 -130
- data/bootstrap.gemspec +1 -3
- data/lib/bootstrap/version.rb +2 -2
- data/tasks/updater/js.rb +20 -5
- data/tasks/updater/network.rb +7 -1
- 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_1.gemfile +7 -0
- metadata +45 -73
- data/assets/javascripts/bootstrap/util.js +0 -189
- data/assets/stylesheets/bootstrap/_code.scss +0 -48
- data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -526
- data/assets/stylesheets/bootstrap/_input-group.scss +0 -211
- data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
- data/assets/stylesheets/bootstrap/_media.scss +0 -8
- data/assets/stylesheets/bootstrap/_print.scss +0 -132
- data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -23
- 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 -80
- 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/_interactions.scss +0 -5
- 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,152 +1,488 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Bootstrap modal.js
|
|
2
|
+
* Bootstrap modal.js v5.0.0 (https://getbootstrap.com/)
|
|
3
3
|
* Copyright 2011-2021 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('
|
|
8
|
-
typeof define === 'function' && define.amd ? define(['
|
|
9
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Modal = factory(global.
|
|
10
|
-
}
|
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./dom/selector-engine.js'), require('./base-component.js')) :
|
|
8
|
+
typeof define === 'function' && define.amd ? define(['./dom/event-handler', './dom/manipulator', './dom/selector-engine', './base-component'], factory) :
|
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Modal = factory(global.EventHandler, global.Manipulator, global.SelectorEngine, global.Base));
|
|
10
|
+
}(this, (function (EventHandler, Manipulator, SelectorEngine, BaseComponent) { 'use strict';
|
|
11
11
|
|
|
12
12
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
13
13
|
|
|
14
|
-
var
|
|
15
|
-
var
|
|
14
|
+
var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
|
|
15
|
+
var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);
|
|
16
|
+
var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
|
|
17
|
+
var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
|
|
16
18
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
/**
|
|
20
|
+
* --------------------------------------------------------------------------
|
|
21
|
+
* Bootstrap (v5.0.0): util/index.js
|
|
22
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
23
|
+
* --------------------------------------------------------------------------
|
|
24
|
+
*/
|
|
25
|
+
const MILLISECONDS_MULTIPLIER = 1000;
|
|
26
|
+
const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
|
|
27
|
+
|
|
28
|
+
const toType = obj => {
|
|
29
|
+
if (obj === null || obj === undefined) {
|
|
30
|
+
return `${obj}`;
|
|
24
31
|
}
|
|
25
|
-
}
|
|
26
32
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
30
|
-
return Constructor;
|
|
31
|
-
}
|
|
33
|
+
return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
|
|
34
|
+
};
|
|
32
35
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
36
|
-
var source = arguments[i];
|
|
36
|
+
const getSelector = element => {
|
|
37
|
+
let selector = element.getAttribute('data-bs-target');
|
|
37
38
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
if (!selector || selector === '#') {
|
|
40
|
+
let hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,
|
|
41
|
+
// so everything starting with `#` or `.`. If a "real" URL is used as the selector,
|
|
42
|
+
// `document.querySelector` will rightfully complain it is invalid.
|
|
43
|
+
// See https://github.com/twbs/bootstrap/issues/32273
|
|
44
|
+
|
|
45
|
+
if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) {
|
|
46
|
+
return null;
|
|
47
|
+
} // Just in case some CMS puts out a full URL with the anchor appended
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {
|
|
51
|
+
hrefAttr = `#${hrefAttr.split('#')[1]}`;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return selector;
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
const getElementFromSelector = element => {
|
|
61
|
+
const selector = getSelector(element);
|
|
62
|
+
return selector ? document.querySelector(selector) : null;
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
const getTransitionDurationFromElement = element => {
|
|
66
|
+
if (!element) {
|
|
67
|
+
return 0;
|
|
68
|
+
} // Get transition-duration of the element
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
let {
|
|
72
|
+
transitionDuration,
|
|
73
|
+
transitionDelay
|
|
74
|
+
} = window.getComputedStyle(element);
|
|
75
|
+
const floatTransitionDuration = Number.parseFloat(transitionDuration);
|
|
76
|
+
const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
|
|
77
|
+
|
|
78
|
+
if (!floatTransitionDuration && !floatTransitionDelay) {
|
|
79
|
+
return 0;
|
|
80
|
+
} // If multiple durations are defined, take the first
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
transitionDuration = transitionDuration.split(',')[0];
|
|
84
|
+
transitionDelay = transitionDelay.split(',')[0];
|
|
85
|
+
return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
const triggerTransitionEnd = element => {
|
|
89
|
+
element.dispatchEvent(new Event(TRANSITION_END));
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
const isElement = obj => (obj[0] || obj).nodeType;
|
|
93
|
+
|
|
94
|
+
const emulateTransitionEnd = (element, duration) => {
|
|
95
|
+
let called = false;
|
|
96
|
+
const durationPadding = 5;
|
|
97
|
+
const emulatedDuration = duration + durationPadding;
|
|
98
|
+
|
|
99
|
+
function listener() {
|
|
100
|
+
called = true;
|
|
101
|
+
element.removeEventListener(TRANSITION_END, listener);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
element.addEventListener(TRANSITION_END, listener);
|
|
105
|
+
setTimeout(() => {
|
|
106
|
+
if (!called) {
|
|
107
|
+
triggerTransitionEnd(element);
|
|
108
|
+
}
|
|
109
|
+
}, emulatedDuration);
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
const typeCheckConfig = (componentName, config, configTypes) => {
|
|
113
|
+
Object.keys(configTypes).forEach(property => {
|
|
114
|
+
const expectedTypes = configTypes[property];
|
|
115
|
+
const value = config[property];
|
|
116
|
+
const valueType = value && isElement(value) ? 'element' : toType(value);
|
|
117
|
+
|
|
118
|
+
if (!new RegExp(expectedTypes).test(valueType)) {
|
|
119
|
+
throw new TypeError(`${componentName.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
const isVisible = element => {
|
|
125
|
+
if (!element) {
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
if (element.style && element.parentNode && element.parentNode.style) {
|
|
130
|
+
const elementStyle = getComputedStyle(element);
|
|
131
|
+
const parentNodeStyle = getComputedStyle(element.parentNode);
|
|
132
|
+
return elementStyle.display !== 'none' && parentNodeStyle.display !== 'none' && elementStyle.visibility !== 'hidden';
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
return false;
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
const reflow = element => element.offsetHeight;
|
|
139
|
+
|
|
140
|
+
const getjQuery = () => {
|
|
141
|
+
const {
|
|
142
|
+
jQuery
|
|
143
|
+
} = window;
|
|
144
|
+
|
|
145
|
+
if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
|
|
146
|
+
return jQuery;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
return null;
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
const onDOMContentLoaded = callback => {
|
|
153
|
+
if (document.readyState === 'loading') {
|
|
154
|
+
document.addEventListener('DOMContentLoaded', callback);
|
|
155
|
+
} else {
|
|
156
|
+
callback();
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
const isRTL = () => document.documentElement.dir === 'rtl';
|
|
161
|
+
|
|
162
|
+
const defineJQueryPlugin = (name, plugin) => {
|
|
163
|
+
onDOMContentLoaded(() => {
|
|
164
|
+
const $ = getjQuery();
|
|
165
|
+
/* istanbul ignore if */
|
|
166
|
+
|
|
167
|
+
if ($) {
|
|
168
|
+
const JQUERY_NO_CONFLICT = $.fn[name];
|
|
169
|
+
$.fn[name] = plugin.jQueryInterface;
|
|
170
|
+
$.fn[name].Constructor = plugin;
|
|
171
|
+
|
|
172
|
+
$.fn[name].noConflict = () => {
|
|
173
|
+
$.fn[name] = JQUERY_NO_CONFLICT;
|
|
174
|
+
return plugin.jQueryInterface;
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
const execute = callback => {
|
|
181
|
+
if (typeof callback === 'function') {
|
|
182
|
+
callback();
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* --------------------------------------------------------------------------
|
|
188
|
+
* Bootstrap (v5.0.0): util/scrollBar.js
|
|
189
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
190
|
+
* --------------------------------------------------------------------------
|
|
191
|
+
*/
|
|
192
|
+
const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
|
|
193
|
+
const SELECTOR_STICKY_CONTENT = '.sticky-top';
|
|
194
|
+
|
|
195
|
+
const getWidth = () => {
|
|
196
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes
|
|
197
|
+
const documentWidth = document.documentElement.clientWidth;
|
|
198
|
+
return Math.abs(window.innerWidth - documentWidth);
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
const hide = (width = getWidth()) => {
|
|
202
|
+
_disableOverFlow(); // give padding to element to balances the hidden scrollbar width
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
_setElementAttributes('body', 'paddingRight', calculatedValue => calculatedValue + width); // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements, to keep shown fullwidth
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
_setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width);
|
|
209
|
+
|
|
210
|
+
_setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width);
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
const _disableOverFlow = () => {
|
|
214
|
+
const actualValue = document.body.style.overflow;
|
|
215
|
+
|
|
216
|
+
if (actualValue) {
|
|
217
|
+
Manipulator__default['default'].setDataAttribute(document.body, 'overflow', actualValue);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
document.body.style.overflow = 'hidden';
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
const _setElementAttributes = (selector, styleProp, callback) => {
|
|
224
|
+
const scrollbarWidth = getWidth();
|
|
225
|
+
SelectorEngine__default['default'].find(selector).forEach(element => {
|
|
226
|
+
if (element !== document.body && window.innerWidth > element.clientWidth + scrollbarWidth) {
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
const actualValue = element.style[styleProp];
|
|
231
|
+
const calculatedValue = window.getComputedStyle(element)[styleProp];
|
|
232
|
+
Manipulator__default['default'].setDataAttribute(element, styleProp, actualValue);
|
|
233
|
+
element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`;
|
|
234
|
+
});
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
const reset = () => {
|
|
238
|
+
_resetElementAttributes('body', 'overflow');
|
|
239
|
+
|
|
240
|
+
_resetElementAttributes('body', 'paddingRight');
|
|
241
|
+
|
|
242
|
+
_resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight');
|
|
243
|
+
|
|
244
|
+
_resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight');
|
|
245
|
+
};
|
|
246
|
+
|
|
247
|
+
const _resetElementAttributes = (selector, styleProp) => {
|
|
248
|
+
SelectorEngine__default['default'].find(selector).forEach(element => {
|
|
249
|
+
const value = Manipulator__default['default'].getDataAttribute(element, styleProp);
|
|
250
|
+
|
|
251
|
+
if (typeof value === 'undefined') {
|
|
252
|
+
element.style.removeProperty(styleProp);
|
|
253
|
+
} else {
|
|
254
|
+
Manipulator__default['default'].removeDataAttribute(element, styleProp);
|
|
255
|
+
element.style[styleProp] = value;
|
|
256
|
+
}
|
|
257
|
+
});
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* --------------------------------------------------------------------------
|
|
262
|
+
* Bootstrap (v5.0.0): util/backdrop.js
|
|
263
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
|
264
|
+
* --------------------------------------------------------------------------
|
|
265
|
+
*/
|
|
266
|
+
const Default$1 = {
|
|
267
|
+
isVisible: true,
|
|
268
|
+
// if false, we use the backdrop helper without adding any element to the dom
|
|
269
|
+
isAnimated: false,
|
|
270
|
+
rootElement: document.body,
|
|
271
|
+
// give the choice to place backdrop under different elements
|
|
272
|
+
clickCallback: null
|
|
273
|
+
};
|
|
274
|
+
const DefaultType$1 = {
|
|
275
|
+
isVisible: 'boolean',
|
|
276
|
+
isAnimated: 'boolean',
|
|
277
|
+
rootElement: 'element',
|
|
278
|
+
clickCallback: '(function|null)'
|
|
279
|
+
};
|
|
280
|
+
const NAME$1 = 'backdrop';
|
|
281
|
+
const CLASS_NAME_BACKDROP = 'modal-backdrop';
|
|
282
|
+
const CLASS_NAME_FADE$1 = 'fade';
|
|
283
|
+
const CLASS_NAME_SHOW$1 = 'show';
|
|
284
|
+
const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$1}`;
|
|
285
|
+
|
|
286
|
+
class Backdrop {
|
|
287
|
+
constructor(config) {
|
|
288
|
+
this._config = this._getConfig(config);
|
|
289
|
+
this._isAppended = false;
|
|
290
|
+
this._element = null;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
show(callback) {
|
|
294
|
+
if (!this._config.isVisible) {
|
|
295
|
+
execute(callback);
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
this._append();
|
|
300
|
+
|
|
301
|
+
if (this._config.isAnimated) {
|
|
302
|
+
reflow(this._getElement());
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
this._getElement().classList.add(CLASS_NAME_SHOW$1);
|
|
306
|
+
|
|
307
|
+
this._emulateAnimation(() => {
|
|
308
|
+
execute(callback);
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
hide(callback) {
|
|
313
|
+
if (!this._config.isVisible) {
|
|
314
|
+
execute(callback);
|
|
315
|
+
return;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
this._getElement().classList.remove(CLASS_NAME_SHOW$1);
|
|
319
|
+
|
|
320
|
+
this._emulateAnimation(() => {
|
|
321
|
+
this.dispose();
|
|
322
|
+
execute(callback);
|
|
323
|
+
});
|
|
324
|
+
} // Private
|
|
325
|
+
|
|
326
|
+
|
|
327
|
+
_getElement() {
|
|
328
|
+
if (!this._element) {
|
|
329
|
+
const backdrop = document.createElement('div');
|
|
330
|
+
backdrop.className = CLASS_NAME_BACKDROP;
|
|
331
|
+
|
|
332
|
+
if (this._config.isAnimated) {
|
|
333
|
+
backdrop.classList.add(CLASS_NAME_FADE$1);
|
|
42
334
|
}
|
|
335
|
+
|
|
336
|
+
this._element = backdrop;
|
|
43
337
|
}
|
|
44
338
|
|
|
45
|
-
return
|
|
46
|
-
}
|
|
339
|
+
return this._element;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
_getConfig(config) {
|
|
343
|
+
config = { ...Default$1,
|
|
344
|
+
...(typeof config === 'object' ? config : {})
|
|
345
|
+
};
|
|
346
|
+
typeCheckConfig(NAME$1, config, DefaultType$1);
|
|
347
|
+
return config;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
_append() {
|
|
351
|
+
if (this._isAppended) {
|
|
352
|
+
return;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
this._config.rootElement.appendChild(this._getElement());
|
|
356
|
+
|
|
357
|
+
EventHandler__default['default'].on(this._getElement(), EVENT_MOUSEDOWN, () => {
|
|
358
|
+
execute(this._config.clickCallback);
|
|
359
|
+
});
|
|
360
|
+
this._isAppended = true;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
dispose() {
|
|
364
|
+
if (!this._isAppended) {
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
EventHandler__default['default'].off(this._element, EVENT_MOUSEDOWN);
|
|
369
|
+
|
|
370
|
+
this._getElement().parentNode.removeChild(this._element);
|
|
371
|
+
|
|
372
|
+
this._isAppended = false;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
_emulateAnimation(callback) {
|
|
376
|
+
if (!this._config.isAnimated) {
|
|
377
|
+
execute(callback);
|
|
378
|
+
return;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
const backdropTransitionDuration = getTransitionDurationFromElement(this._getElement());
|
|
382
|
+
EventHandler__default['default'].one(this._getElement(), 'transitionend', () => execute(callback));
|
|
383
|
+
emulateTransitionEnd(this._getElement(), backdropTransitionDuration);
|
|
384
|
+
}
|
|
47
385
|
|
|
48
|
-
return _extends.apply(this, arguments);
|
|
49
386
|
}
|
|
50
387
|
|
|
51
388
|
/**
|
|
389
|
+
* --------------------------------------------------------------------------
|
|
390
|
+
* Bootstrap (v5.0.0): modal.js
|
|
391
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
392
|
+
* --------------------------------------------------------------------------
|
|
393
|
+
*/
|
|
394
|
+
/**
|
|
395
|
+
* ------------------------------------------------------------------------
|
|
52
396
|
* Constants
|
|
397
|
+
* ------------------------------------------------------------------------
|
|
53
398
|
*/
|
|
54
399
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
|
|
62
|
-
|
|
63
|
-
var CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable';
|
|
64
|
-
var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';
|
|
65
|
-
var CLASS_NAME_BACKDROP = 'modal-backdrop';
|
|
66
|
-
var CLASS_NAME_OPEN = 'modal-open';
|
|
67
|
-
var CLASS_NAME_FADE = 'fade';
|
|
68
|
-
var CLASS_NAME_SHOW = 'show';
|
|
69
|
-
var CLASS_NAME_STATIC = 'modal-static';
|
|
70
|
-
var EVENT_HIDE = "hide" + EVENT_KEY;
|
|
71
|
-
var EVENT_HIDE_PREVENTED = "hidePrevented" + EVENT_KEY;
|
|
72
|
-
var EVENT_HIDDEN = "hidden" + EVENT_KEY;
|
|
73
|
-
var EVENT_SHOW = "show" + EVENT_KEY;
|
|
74
|
-
var EVENT_SHOWN = "shown" + EVENT_KEY;
|
|
75
|
-
var EVENT_FOCUSIN = "focusin" + EVENT_KEY;
|
|
76
|
-
var EVENT_RESIZE = "resize" + EVENT_KEY;
|
|
77
|
-
var EVENT_CLICK_DISMISS = "click.dismiss" + EVENT_KEY;
|
|
78
|
-
var EVENT_KEYDOWN_DISMISS = "keydown.dismiss" + EVENT_KEY;
|
|
79
|
-
var EVENT_MOUSEUP_DISMISS = "mouseup.dismiss" + EVENT_KEY;
|
|
80
|
-
var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss" + EVENT_KEY;
|
|
81
|
-
var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
|
|
82
|
-
var SELECTOR_DIALOG = '.modal-dialog';
|
|
83
|
-
var SELECTOR_MODAL_BODY = '.modal-body';
|
|
84
|
-
var SELECTOR_DATA_TOGGLE = '[data-toggle="modal"]';
|
|
85
|
-
var SELECTOR_DATA_DISMISS = '[data-dismiss="modal"]';
|
|
86
|
-
var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
|
|
87
|
-
var SELECTOR_STICKY_CONTENT = '.sticky-top';
|
|
88
|
-
var Default = {
|
|
400
|
+
const NAME = 'modal';
|
|
401
|
+
const DATA_KEY = 'bs.modal';
|
|
402
|
+
const EVENT_KEY = `.${DATA_KEY}`;
|
|
403
|
+
const DATA_API_KEY = '.data-api';
|
|
404
|
+
const ESCAPE_KEY = 'Escape';
|
|
405
|
+
const Default = {
|
|
89
406
|
backdrop: true,
|
|
90
407
|
keyboard: true,
|
|
91
|
-
focus: true
|
|
92
|
-
show: true
|
|
408
|
+
focus: true
|
|
93
409
|
};
|
|
94
|
-
|
|
410
|
+
const DefaultType = {
|
|
95
411
|
backdrop: '(boolean|string)',
|
|
96
412
|
keyboard: 'boolean',
|
|
97
|
-
focus: 'boolean'
|
|
98
|
-
show: 'boolean'
|
|
413
|
+
focus: 'boolean'
|
|
99
414
|
};
|
|
415
|
+
const EVENT_HIDE = `hide${EVENT_KEY}`;
|
|
416
|
+
const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`;
|
|
417
|
+
const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
|
|
418
|
+
const EVENT_SHOW = `show${EVENT_KEY}`;
|
|
419
|
+
const EVENT_SHOWN = `shown${EVENT_KEY}`;
|
|
420
|
+
const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
|
|
421
|
+
const EVENT_RESIZE = `resize${EVENT_KEY}`;
|
|
422
|
+
const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`;
|
|
423
|
+
const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`;
|
|
424
|
+
const EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`;
|
|
425
|
+
const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`;
|
|
426
|
+
const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
|
|
427
|
+
const CLASS_NAME_OPEN = 'modal-open';
|
|
428
|
+
const CLASS_NAME_FADE = 'fade';
|
|
429
|
+
const CLASS_NAME_SHOW = 'show';
|
|
430
|
+
const CLASS_NAME_STATIC = 'modal-static';
|
|
431
|
+
const SELECTOR_DIALOG = '.modal-dialog';
|
|
432
|
+
const SELECTOR_MODAL_BODY = '.modal-body';
|
|
433
|
+
const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="modal"]';
|
|
434
|
+
const SELECTOR_DATA_DISMISS = '[data-bs-dismiss="modal"]';
|
|
100
435
|
/**
|
|
101
|
-
*
|
|
436
|
+
* ------------------------------------------------------------------------
|
|
437
|
+
* Class Definition
|
|
438
|
+
* ------------------------------------------------------------------------
|
|
102
439
|
*/
|
|
103
440
|
|
|
104
|
-
|
|
105
|
-
|
|
441
|
+
class Modal extends BaseComponent__default['default'] {
|
|
442
|
+
constructor(element, config) {
|
|
443
|
+
super(element);
|
|
106
444
|
this._config = this._getConfig(config);
|
|
107
|
-
this.
|
|
108
|
-
this.
|
|
109
|
-
this._backdrop = null;
|
|
445
|
+
this._dialog = SelectorEngine__default['default'].findOne(SELECTOR_DIALOG, this._element);
|
|
446
|
+
this._backdrop = this._initializeBackDrop();
|
|
110
447
|
this._isShown = false;
|
|
111
|
-
this._isBodyOverflowing = false;
|
|
112
448
|
this._ignoreBackdropClick = false;
|
|
113
449
|
this._isTransitioning = false;
|
|
114
|
-
this._scrollbarWidth = 0;
|
|
115
450
|
} // Getters
|
|
116
451
|
|
|
117
452
|
|
|
118
|
-
|
|
453
|
+
static get Default() {
|
|
454
|
+
return Default;
|
|
455
|
+
}
|
|
119
456
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
};
|
|
457
|
+
static get DATA_KEY() {
|
|
458
|
+
return DATA_KEY;
|
|
459
|
+
} // Public
|
|
124
460
|
|
|
125
|
-
_proto.show = function show(relatedTarget) {
|
|
126
|
-
var _this = this;
|
|
127
461
|
|
|
462
|
+
toggle(relatedTarget) {
|
|
463
|
+
return this._isShown ? this.hide() : this.show(relatedTarget);
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
show(relatedTarget) {
|
|
128
467
|
if (this._isShown || this._isTransitioning) {
|
|
129
468
|
return;
|
|
130
469
|
}
|
|
131
470
|
|
|
132
|
-
|
|
133
|
-
|
|
471
|
+
if (this._isAnimated()) {
|
|
472
|
+
this._isTransitioning = true;
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
const showEvent = EventHandler__default['default'].trigger(this._element, EVENT_SHOW, {
|
|
476
|
+
relatedTarget
|
|
134
477
|
});
|
|
135
|
-
$__default["default"](this._element).trigger(showEvent);
|
|
136
478
|
|
|
137
|
-
if (showEvent.
|
|
479
|
+
if (this._isShown || showEvent.defaultPrevented) {
|
|
138
480
|
return;
|
|
139
481
|
}
|
|
140
482
|
|
|
141
483
|
this._isShown = true;
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
this._isTransitioning = true;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
this._checkScrollbar();
|
|
148
|
-
|
|
149
|
-
this._setScrollbar();
|
|
484
|
+
hide();
|
|
485
|
+
document.body.classList.add(CLASS_NAME_OPEN);
|
|
150
486
|
|
|
151
487
|
this._adjustDialog();
|
|
152
488
|
|
|
@@ -154,25 +490,19 @@
|
|
|
154
490
|
|
|
155
491
|
this._setResizeEvent();
|
|
156
492
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
if ($__default["default"](event.target).is(_this._element)) {
|
|
163
|
-
_this._ignoreBackdropClick = true;
|
|
493
|
+
EventHandler__default['default'].on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, event => this.hide(event));
|
|
494
|
+
EventHandler__default['default'].on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {
|
|
495
|
+
EventHandler__default['default'].one(this._element, EVENT_MOUSEUP_DISMISS, event => {
|
|
496
|
+
if (event.target === this._element) {
|
|
497
|
+
this._ignoreBackdropClick = true;
|
|
164
498
|
}
|
|
165
499
|
});
|
|
166
500
|
});
|
|
167
501
|
|
|
168
|
-
this._showBackdrop(
|
|
169
|
-
|
|
170
|
-
});
|
|
171
|
-
};
|
|
172
|
-
|
|
173
|
-
_proto.hide = function hide(event) {
|
|
174
|
-
var _this2 = this;
|
|
502
|
+
this._showBackdrop(() => this._showElement(relatedTarget));
|
|
503
|
+
}
|
|
175
504
|
|
|
505
|
+
hide(event) {
|
|
176
506
|
if (event) {
|
|
177
507
|
event.preventDefault();
|
|
178
508
|
}
|
|
@@ -181,17 +511,17 @@
|
|
|
181
511
|
return;
|
|
182
512
|
}
|
|
183
513
|
|
|
184
|
-
|
|
185
|
-
$__default["default"](this._element).trigger(hideEvent);
|
|
514
|
+
const hideEvent = EventHandler__default['default'].trigger(this._element, EVENT_HIDE);
|
|
186
515
|
|
|
187
|
-
if (
|
|
516
|
+
if (hideEvent.defaultPrevented) {
|
|
188
517
|
return;
|
|
189
518
|
}
|
|
190
519
|
|
|
191
520
|
this._isShown = false;
|
|
192
|
-
var transition = $__default["default"](this._element).hasClass(CLASS_NAME_FADE);
|
|
193
521
|
|
|
194
|
-
|
|
522
|
+
const isAnimated = this._isAnimated();
|
|
523
|
+
|
|
524
|
+
if (isAnimated) {
|
|
195
525
|
this._isTransitioning = true;
|
|
196
526
|
}
|
|
197
527
|
|
|
@@ -199,93 +529,69 @@
|
|
|
199
529
|
|
|
200
530
|
this._setResizeEvent();
|
|
201
531
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
$__default["default"](this._dialog).off(EVENT_MOUSEDOWN_DISMISS);
|
|
532
|
+
EventHandler__default['default'].off(document, EVENT_FOCUSIN);
|
|
533
|
+
|
|
534
|
+
this._element.classList.remove(CLASS_NAME_SHOW);
|
|
206
535
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
536
|
+
EventHandler__default['default'].off(this._element, EVENT_CLICK_DISMISS);
|
|
537
|
+
EventHandler__default['default'].off(this._dialog, EVENT_MOUSEDOWN_DISMISS);
|
|
538
|
+
|
|
539
|
+
if (isAnimated) {
|
|
540
|
+
const transitionDuration = getTransitionDurationFromElement(this._element);
|
|
541
|
+
EventHandler__default['default'].one(this._element, 'transitionend', event => this._hideModal(event));
|
|
542
|
+
emulateTransitionEnd(this._element, transitionDuration);
|
|
212
543
|
} else {
|
|
213
544
|
this._hideModal();
|
|
214
545
|
}
|
|
215
|
-
}
|
|
546
|
+
}
|
|
216
547
|
|
|
217
|
-
|
|
218
|
-
[window, this.
|
|
219
|
-
|
|
220
|
-
});
|
|
548
|
+
dispose() {
|
|
549
|
+
[window, this._dialog].forEach(htmlElement => EventHandler__default['default'].off(htmlElement, EVENT_KEY));
|
|
550
|
+
super.dispose();
|
|
221
551
|
/**
|
|
222
552
|
* `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`
|
|
223
553
|
* Do not move `document` in `htmlElements` array
|
|
224
554
|
* It will remove `EVENT_CLICK_DATA_API` event that should remain
|
|
225
555
|
*/
|
|
226
556
|
|
|
227
|
-
|
|
228
|
-
$__default["default"].removeData(this._element, DATA_KEY);
|
|
557
|
+
EventHandler__default['default'].off(document, EVENT_FOCUSIN);
|
|
229
558
|
this._config = null;
|
|
230
|
-
this._element = null;
|
|
231
559
|
this._dialog = null;
|
|
560
|
+
|
|
561
|
+
this._backdrop.dispose();
|
|
562
|
+
|
|
232
563
|
this._backdrop = null;
|
|
233
564
|
this._isShown = null;
|
|
234
|
-
this._isBodyOverflowing = null;
|
|
235
565
|
this._ignoreBackdropClick = null;
|
|
236
566
|
this._isTransitioning = null;
|
|
237
|
-
|
|
238
|
-
};
|
|
567
|
+
}
|
|
239
568
|
|
|
240
|
-
|
|
569
|
+
handleUpdate() {
|
|
241
570
|
this._adjustDialog();
|
|
242
571
|
} // Private
|
|
243
|
-
;
|
|
244
|
-
|
|
245
|
-
_proto._getConfig = function _getConfig(config) {
|
|
246
|
-
config = _extends({}, Default, config);
|
|
247
|
-
Util__default["default"].typeCheckConfig(NAME, config, DefaultType);
|
|
248
|
-
return config;
|
|
249
|
-
};
|
|
250
|
-
|
|
251
|
-
_proto._triggerBackdropTransition = function _triggerBackdropTransition() {
|
|
252
|
-
var _this3 = this;
|
|
253
|
-
|
|
254
|
-
var hideEventPrevented = $__default["default"].Event(EVENT_HIDE_PREVENTED);
|
|
255
|
-
$__default["default"](this._element).trigger(hideEventPrevented);
|
|
256
|
-
|
|
257
|
-
if (hideEventPrevented.isDefaultPrevented()) {
|
|
258
|
-
return;
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
|
|
262
|
-
|
|
263
|
-
if (!isModalOverflowing) {
|
|
264
|
-
this._element.style.overflowY = 'hidden';
|
|
265
|
-
}
|
|
266
572
|
|
|
267
|
-
this._element.classList.add(CLASS_NAME_STATIC);
|
|
268
573
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
_this3._element.style.overflowY = '';
|
|
277
|
-
}).emulateTransitionEnd(_this3._element, modalTransitionDuration);
|
|
278
|
-
}
|
|
279
|
-
}).emulateTransitionEnd(modalTransitionDuration);
|
|
574
|
+
_initializeBackDrop() {
|
|
575
|
+
return new Backdrop({
|
|
576
|
+
isVisible: Boolean(this._config.backdrop),
|
|
577
|
+
// 'static' option will be translated to true, and booleans will keep their value
|
|
578
|
+
isAnimated: this._isAnimated()
|
|
579
|
+
});
|
|
580
|
+
}
|
|
280
581
|
|
|
281
|
-
|
|
282
|
-
|
|
582
|
+
_getConfig(config) {
|
|
583
|
+
config = { ...Default,
|
|
584
|
+
...Manipulator__default['default'].getDataAttributes(this._element),
|
|
585
|
+
...config
|
|
586
|
+
};
|
|
587
|
+
typeCheckConfig(NAME, config, DefaultType);
|
|
588
|
+
return config;
|
|
589
|
+
}
|
|
283
590
|
|
|
284
|
-
|
|
285
|
-
|
|
591
|
+
_showElement(relatedTarget) {
|
|
592
|
+
const isAnimated = this._isAnimated();
|
|
286
593
|
|
|
287
|
-
|
|
288
|
-
var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null;
|
|
594
|
+
const modalBody = SelectorEngine__default['default'].findOne(SELECTOR_MODAL_BODY, this._dialog);
|
|
289
595
|
|
|
290
596
|
if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
|
|
291
597
|
// Don't move modal's DOM position
|
|
@@ -300,87 +606,76 @@
|
|
|
300
606
|
|
|
301
607
|
this._element.setAttribute('role', 'dialog');
|
|
302
608
|
|
|
303
|
-
|
|
609
|
+
this._element.scrollTop = 0;
|
|
610
|
+
|
|
611
|
+
if (modalBody) {
|
|
304
612
|
modalBody.scrollTop = 0;
|
|
305
|
-
} else {
|
|
306
|
-
this._element.scrollTop = 0;
|
|
307
613
|
}
|
|
308
614
|
|
|
309
|
-
if (
|
|
310
|
-
|
|
615
|
+
if (isAnimated) {
|
|
616
|
+
reflow(this._element);
|
|
311
617
|
}
|
|
312
618
|
|
|
313
|
-
|
|
619
|
+
this._element.classList.add(CLASS_NAME_SHOW);
|
|
314
620
|
|
|
315
621
|
if (this._config.focus) {
|
|
316
622
|
this._enforceFocus();
|
|
317
623
|
}
|
|
318
624
|
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
var transitionComplete = function transitionComplete() {
|
|
324
|
-
if (_this4._config.focus) {
|
|
325
|
-
_this4._element.focus();
|
|
625
|
+
const transitionComplete = () => {
|
|
626
|
+
if (this._config.focus) {
|
|
627
|
+
this._element.focus();
|
|
326
628
|
}
|
|
327
629
|
|
|
328
|
-
|
|
329
|
-
|
|
630
|
+
this._isTransitioning = false;
|
|
631
|
+
EventHandler__default['default'].trigger(this._element, EVENT_SHOWN, {
|
|
632
|
+
relatedTarget
|
|
633
|
+
});
|
|
330
634
|
};
|
|
331
635
|
|
|
332
|
-
if (
|
|
333
|
-
|
|
334
|
-
|
|
636
|
+
if (isAnimated) {
|
|
637
|
+
const transitionDuration = getTransitionDurationFromElement(this._dialog);
|
|
638
|
+
EventHandler__default['default'].one(this._dialog, 'transitionend', transitionComplete);
|
|
639
|
+
emulateTransitionEnd(this._dialog, transitionDuration);
|
|
335
640
|
} else {
|
|
336
641
|
transitionComplete();
|
|
337
642
|
}
|
|
338
|
-
}
|
|
643
|
+
}
|
|
339
644
|
|
|
340
|
-
|
|
341
|
-
|
|
645
|
+
_enforceFocus() {
|
|
646
|
+
EventHandler__default['default'].off(document, EVENT_FOCUSIN); // guard against infinite focus loop
|
|
342
647
|
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
_this5._element.focus();
|
|
648
|
+
EventHandler__default['default'].on(document, EVENT_FOCUSIN, event => {
|
|
649
|
+
if (document !== event.target && this._element !== event.target && !this._element.contains(event.target)) {
|
|
650
|
+
this._element.focus();
|
|
347
651
|
}
|
|
348
652
|
});
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
_proto._setEscapeEvent = function _setEscapeEvent() {
|
|
352
|
-
var _this6 = this;
|
|
653
|
+
}
|
|
353
654
|
|
|
655
|
+
_setEscapeEvent() {
|
|
354
656
|
if (this._isShown) {
|
|
355
|
-
|
|
356
|
-
if (
|
|
657
|
+
EventHandler__default['default'].on(this._element, EVENT_KEYDOWN_DISMISS, event => {
|
|
658
|
+
if (this._config.keyboard && event.key === ESCAPE_KEY) {
|
|
357
659
|
event.preventDefault();
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
_this6._triggerBackdropTransition();
|
|
660
|
+
this.hide();
|
|
661
|
+
} else if (!this._config.keyboard && event.key === ESCAPE_KEY) {
|
|
662
|
+
this._triggerBackdropTransition();
|
|
362
663
|
}
|
|
363
664
|
});
|
|
364
|
-
} else
|
|
365
|
-
|
|
665
|
+
} else {
|
|
666
|
+
EventHandler__default['default'].off(this._element, EVENT_KEYDOWN_DISMISS);
|
|
366
667
|
}
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
_proto._setResizeEvent = function _setResizeEvent() {
|
|
370
|
-
var _this7 = this;
|
|
668
|
+
}
|
|
371
669
|
|
|
670
|
+
_setResizeEvent() {
|
|
372
671
|
if (this._isShown) {
|
|
373
|
-
|
|
374
|
-
return _this7.handleUpdate(event);
|
|
375
|
-
});
|
|
672
|
+
EventHandler__default['default'].on(window, EVENT_RESIZE, () => this._adjustDialog());
|
|
376
673
|
} else {
|
|
377
|
-
|
|
674
|
+
EventHandler__default['default'].off(window, EVENT_RESIZE);
|
|
378
675
|
}
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
_proto._hideModal = function _hideModal() {
|
|
382
|
-
var _this8 = this;
|
|
676
|
+
}
|
|
383
677
|
|
|
678
|
+
_hideModal() {
|
|
384
679
|
this._element.style.display = 'none';
|
|
385
680
|
|
|
386
681
|
this._element.setAttribute('aria-hidden', true);
|
|
@@ -391,270 +686,151 @@
|
|
|
391
686
|
|
|
392
687
|
this._isTransitioning = false;
|
|
393
688
|
|
|
394
|
-
this.
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
_this8._resetAdjustments();
|
|
689
|
+
this._backdrop.hide(() => {
|
|
690
|
+
document.body.classList.remove(CLASS_NAME_OPEN);
|
|
398
691
|
|
|
399
|
-
|
|
692
|
+
this._resetAdjustments();
|
|
400
693
|
|
|
401
|
-
|
|
694
|
+
reset();
|
|
695
|
+
EventHandler__default['default'].trigger(this._element, EVENT_HIDDEN);
|
|
402
696
|
});
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
_proto._removeBackdrop = function _removeBackdrop() {
|
|
406
|
-
if (this._backdrop) {
|
|
407
|
-
$__default["default"](this._backdrop).remove();
|
|
408
|
-
this._backdrop = null;
|
|
409
|
-
}
|
|
410
|
-
};
|
|
411
|
-
|
|
412
|
-
_proto._showBackdrop = function _showBackdrop(callback) {
|
|
413
|
-
var _this9 = this;
|
|
414
|
-
|
|
415
|
-
var animate = $__default["default"](this._element).hasClass(CLASS_NAME_FADE) ? CLASS_NAME_FADE : '';
|
|
416
|
-
|
|
417
|
-
if (this._isShown && this._config.backdrop) {
|
|
418
|
-
this._backdrop = document.createElement('div');
|
|
419
|
-
this._backdrop.className = CLASS_NAME_BACKDROP;
|
|
697
|
+
}
|
|
420
698
|
|
|
421
|
-
|
|
422
|
-
|
|
699
|
+
_showBackdrop(callback) {
|
|
700
|
+
EventHandler__default['default'].on(this._element, EVENT_CLICK_DISMISS, event => {
|
|
701
|
+
if (this._ignoreBackdropClick) {
|
|
702
|
+
this._ignoreBackdropClick = false;
|
|
703
|
+
return;
|
|
423
704
|
}
|
|
424
705
|
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
_this9._ignoreBackdropClick = false;
|
|
429
|
-
return;
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
-
if (event.target !== event.currentTarget) {
|
|
433
|
-
return;
|
|
434
|
-
}
|
|
435
|
-
|
|
436
|
-
if (_this9._config.backdrop === 'static') {
|
|
437
|
-
_this9._triggerBackdropTransition();
|
|
438
|
-
} else {
|
|
439
|
-
_this9.hide();
|
|
440
|
-
}
|
|
441
|
-
});
|
|
706
|
+
if (event.target !== event.currentTarget) {
|
|
707
|
+
return;
|
|
708
|
+
}
|
|
442
709
|
|
|
443
|
-
if (
|
|
444
|
-
|
|
710
|
+
if (this._config.backdrop === true) {
|
|
711
|
+
this.hide();
|
|
712
|
+
} else if (this._config.backdrop === 'static') {
|
|
713
|
+
this._triggerBackdropTransition();
|
|
445
714
|
}
|
|
715
|
+
});
|
|
446
716
|
|
|
447
|
-
|
|
717
|
+
this._backdrop.show(callback);
|
|
718
|
+
}
|
|
448
719
|
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
720
|
+
_isAnimated() {
|
|
721
|
+
return this._element.classList.contains(CLASS_NAME_FADE);
|
|
722
|
+
}
|
|
452
723
|
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
724
|
+
_triggerBackdropTransition() {
|
|
725
|
+
const hideEvent = EventHandler__default['default'].trigger(this._element, EVENT_HIDE_PREVENTED);
|
|
726
|
+
|
|
727
|
+
if (hideEvent.defaultPrevented) {
|
|
728
|
+
return;
|
|
729
|
+
}
|
|
457
730
|
|
|
458
|
-
|
|
459
|
-
$__default["default"](this._backdrop).one(Util__default["default"].TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);
|
|
460
|
-
} else if (!this._isShown && this._backdrop) {
|
|
461
|
-
$__default["default"](this._backdrop).removeClass(CLASS_NAME_SHOW);
|
|
731
|
+
const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
|
|
462
732
|
|
|
463
|
-
|
|
464
|
-
|
|
733
|
+
if (!isModalOverflowing) {
|
|
734
|
+
this._element.style.overflowY = 'hidden';
|
|
735
|
+
}
|
|
465
736
|
|
|
466
|
-
|
|
467
|
-
callback();
|
|
468
|
-
}
|
|
469
|
-
};
|
|
737
|
+
this._element.classList.add(CLASS_NAME_STATIC);
|
|
470
738
|
|
|
471
|
-
|
|
472
|
-
|
|
739
|
+
const modalTransitionDuration = getTransitionDurationFromElement(this._dialog);
|
|
740
|
+
EventHandler__default['default'].off(this._element, 'transitionend');
|
|
741
|
+
EventHandler__default['default'].one(this._element, 'transitionend', () => {
|
|
742
|
+
this._element.classList.remove(CLASS_NAME_STATIC);
|
|
473
743
|
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
744
|
+
if (!isModalOverflowing) {
|
|
745
|
+
EventHandler__default['default'].one(this._element, 'transitionend', () => {
|
|
746
|
+
this._element.style.overflowY = '';
|
|
747
|
+
});
|
|
748
|
+
emulateTransitionEnd(this._element, modalTransitionDuration);
|
|
477
749
|
}
|
|
478
|
-
}
|
|
479
|
-
|
|
480
|
-
|
|
750
|
+
});
|
|
751
|
+
emulateTransitionEnd(this._element, modalTransitionDuration);
|
|
752
|
+
|
|
753
|
+
this._element.focus();
|
|
481
754
|
} // ----------------------------------------------------------------------
|
|
482
755
|
// the following methods are used to handle overflowing modals
|
|
483
|
-
// todo (fat): these should probably be refactored out of modal.js
|
|
484
756
|
// ----------------------------------------------------------------------
|
|
485
|
-
;
|
|
486
757
|
|
|
487
|
-
_proto._adjustDialog = function _adjustDialog() {
|
|
488
|
-
var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
|
|
489
758
|
|
|
490
|
-
|
|
491
|
-
|
|
759
|
+
_adjustDialog() {
|
|
760
|
+
const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
|
|
761
|
+
const scrollbarWidth = getWidth();
|
|
762
|
+
const isBodyOverflowing = scrollbarWidth > 0;
|
|
763
|
+
|
|
764
|
+
if (!isBodyOverflowing && isModalOverflowing && !isRTL() || isBodyOverflowing && !isModalOverflowing && isRTL()) {
|
|
765
|
+
this._element.style.paddingLeft = `${scrollbarWidth}px`;
|
|
492
766
|
}
|
|
493
767
|
|
|
494
|
-
if (
|
|
495
|
-
this._element.style.paddingRight =
|
|
768
|
+
if (isBodyOverflowing && !isModalOverflowing && !isRTL() || !isBodyOverflowing && isModalOverflowing && isRTL()) {
|
|
769
|
+
this._element.style.paddingRight = `${scrollbarWidth}px`;
|
|
496
770
|
}
|
|
497
|
-
}
|
|
771
|
+
}
|
|
498
772
|
|
|
499
|
-
|
|
773
|
+
_resetAdjustments() {
|
|
500
774
|
this._element.style.paddingLeft = '';
|
|
501
775
|
this._element.style.paddingRight = '';
|
|
502
|
-
};
|
|
503
|
-
|
|
504
|
-
_proto._checkScrollbar = function _checkScrollbar() {
|
|
505
|
-
var rect = document.body.getBoundingClientRect();
|
|
506
|
-
this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;
|
|
507
|
-
this._scrollbarWidth = this._getScrollbarWidth();
|
|
508
|
-
};
|
|
509
|
-
|
|
510
|
-
_proto._setScrollbar = function _setScrollbar() {
|
|
511
|
-
var _this10 = this;
|
|
512
|
-
|
|
513
|
-
if (this._isBodyOverflowing) {
|
|
514
|
-
// Note: DOMNode.style.paddingRight returns the actual value or '' if not set
|
|
515
|
-
// while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
|
|
516
|
-
var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));
|
|
517
|
-
var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); // Adjust fixed content padding
|
|
518
|
-
|
|
519
|
-
$__default["default"](fixedContent).each(function (index, element) {
|
|
520
|
-
var actualPadding = element.style.paddingRight;
|
|
521
|
-
var calculatedPadding = $__default["default"](element).css('padding-right');
|
|
522
|
-
$__default["default"](element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + "px");
|
|
523
|
-
}); // Adjust sticky content margin
|
|
524
|
-
|
|
525
|
-
$__default["default"](stickyContent).each(function (index, element) {
|
|
526
|
-
var actualMargin = element.style.marginRight;
|
|
527
|
-
var calculatedMargin = $__default["default"](element).css('margin-right');
|
|
528
|
-
$__default["default"](element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + "px");
|
|
529
|
-
}); // Adjust body padding
|
|
530
|
-
|
|
531
|
-
var actualPadding = document.body.style.paddingRight;
|
|
532
|
-
var calculatedPadding = $__default["default"](document.body).css('padding-right');
|
|
533
|
-
$__default["default"](document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
|
|
534
|
-
}
|
|
535
|
-
|
|
536
|
-
$__default["default"](document.body).addClass(CLASS_NAME_OPEN);
|
|
537
|
-
};
|
|
538
|
-
|
|
539
|
-
_proto._resetScrollbar = function _resetScrollbar() {
|
|
540
|
-
// Restore fixed content padding
|
|
541
|
-
var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));
|
|
542
|
-
$__default["default"](fixedContent).each(function (index, element) {
|
|
543
|
-
var padding = $__default["default"](element).data('padding-right');
|
|
544
|
-
$__default["default"](element).removeData('padding-right');
|
|
545
|
-
element.style.paddingRight = padding ? padding : '';
|
|
546
|
-
}); // Restore sticky content
|
|
547
|
-
|
|
548
|
-
var elements = [].slice.call(document.querySelectorAll("" + SELECTOR_STICKY_CONTENT));
|
|
549
|
-
$__default["default"](elements).each(function (index, element) {
|
|
550
|
-
var margin = $__default["default"](element).data('margin-right');
|
|
551
|
-
|
|
552
|
-
if (typeof margin !== 'undefined') {
|
|
553
|
-
$__default["default"](element).css('margin-right', margin).removeData('margin-right');
|
|
554
|
-
}
|
|
555
|
-
}); // Restore body padding
|
|
556
|
-
|
|
557
|
-
var padding = $__default["default"](document.body).data('padding-right');
|
|
558
|
-
$__default["default"](document.body).removeData('padding-right');
|
|
559
|
-
document.body.style.paddingRight = padding ? padding : '';
|
|
560
|
-
};
|
|
561
|
-
|
|
562
|
-
_proto._getScrollbarWidth = function _getScrollbarWidth() {
|
|
563
|
-
// thx d.walsh
|
|
564
|
-
var scrollDiv = document.createElement('div');
|
|
565
|
-
scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;
|
|
566
|
-
document.body.appendChild(scrollDiv);
|
|
567
|
-
var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
|
|
568
|
-
document.body.removeChild(scrollDiv);
|
|
569
|
-
return scrollbarWidth;
|
|
570
776
|
} // Static
|
|
571
|
-
;
|
|
572
777
|
|
|
573
|
-
Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
|
|
574
|
-
return this.each(function () {
|
|
575
|
-
var data = $__default["default"](this).data(DATA_KEY);
|
|
576
778
|
|
|
577
|
-
|
|
779
|
+
static jQueryInterface(config, relatedTarget) {
|
|
780
|
+
return this.each(function () {
|
|
781
|
+
const data = Modal.getInstance(this) || new Modal(this, typeof config === 'object' ? config : {});
|
|
578
782
|
|
|
579
|
-
if (
|
|
580
|
-
|
|
581
|
-
$__default["default"](this).data(DATA_KEY, data);
|
|
783
|
+
if (typeof config !== 'string') {
|
|
784
|
+
return;
|
|
582
785
|
}
|
|
583
786
|
|
|
584
|
-
if (typeof config === '
|
|
585
|
-
|
|
586
|
-
throw new TypeError("No method named \"" + config + "\"");
|
|
587
|
-
}
|
|
588
|
-
|
|
589
|
-
data[config](relatedTarget);
|
|
590
|
-
} else if (_config.show) {
|
|
591
|
-
data.show(relatedTarget);
|
|
787
|
+
if (typeof data[config] === 'undefined') {
|
|
788
|
+
throw new TypeError(`No method named "${config}"`);
|
|
592
789
|
}
|
|
593
|
-
});
|
|
594
|
-
};
|
|
595
790
|
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
return VERSION;
|
|
600
|
-
}
|
|
601
|
-
}, {
|
|
602
|
-
key: "Default",
|
|
603
|
-
get: function get() {
|
|
604
|
-
return Default;
|
|
605
|
-
}
|
|
606
|
-
}]);
|
|
791
|
+
data[config](relatedTarget);
|
|
792
|
+
});
|
|
793
|
+
}
|
|
607
794
|
|
|
608
|
-
|
|
609
|
-
}();
|
|
795
|
+
}
|
|
610
796
|
/**
|
|
611
|
-
*
|
|
797
|
+
* ------------------------------------------------------------------------
|
|
798
|
+
* Data Api implementation
|
|
799
|
+
* ------------------------------------------------------------------------
|
|
612
800
|
*/
|
|
613
801
|
|
|
614
802
|
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
var target;
|
|
619
|
-
var selector = Util__default["default"].getSelectorFromElement(this);
|
|
620
|
-
|
|
621
|
-
if (selector) {
|
|
622
|
-
target = document.querySelector(selector);
|
|
623
|
-
}
|
|
624
|
-
|
|
625
|
-
var config = $__default["default"](target).data(DATA_KEY) ? 'toggle' : _extends({}, $__default["default"](target).data(), $__default["default"](this).data());
|
|
803
|
+
EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
|
|
804
|
+
const target = getElementFromSelector(this);
|
|
626
805
|
|
|
627
|
-
if (
|
|
806
|
+
if (['A', 'AREA'].includes(this.tagName)) {
|
|
628
807
|
event.preventDefault();
|
|
629
808
|
}
|
|
630
809
|
|
|
631
|
-
|
|
632
|
-
if (showEvent.
|
|
633
|
-
//
|
|
810
|
+
EventHandler__default['default'].one(target, EVENT_SHOW, showEvent => {
|
|
811
|
+
if (showEvent.defaultPrevented) {
|
|
812
|
+
// only register focus restorer if modal will actually get shown
|
|
634
813
|
return;
|
|
635
814
|
}
|
|
636
815
|
|
|
637
|
-
|
|
638
|
-
if (
|
|
639
|
-
|
|
816
|
+
EventHandler__default['default'].one(target, EVENT_HIDDEN, () => {
|
|
817
|
+
if (isVisible(this)) {
|
|
818
|
+
this.focus();
|
|
640
819
|
}
|
|
641
820
|
});
|
|
642
821
|
});
|
|
643
|
-
|
|
644
|
-
|
|
822
|
+
const data = Modal.getInstance(target) || new Modal(target);
|
|
823
|
+
data.toggle(this);
|
|
645
824
|
});
|
|
646
825
|
/**
|
|
826
|
+
* ------------------------------------------------------------------------
|
|
647
827
|
* jQuery
|
|
828
|
+
* ------------------------------------------------------------------------
|
|
829
|
+
* add .Modal to jQuery only if jQuery is present
|
|
648
830
|
*/
|
|
649
831
|
|
|
650
|
-
|
|
651
|
-
$__default["default"].fn[NAME].Constructor = Modal;
|
|
652
|
-
|
|
653
|
-
$__default["default"].fn[NAME].noConflict = function () {
|
|
654
|
-
$__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
|
|
655
|
-
return Modal._jQueryInterface;
|
|
656
|
-
};
|
|
832
|
+
defineJQueryPlugin(NAME, Modal);
|
|
657
833
|
|
|
658
834
|
return Modal;
|
|
659
835
|
|
|
660
|
-
}));
|
|
836
|
+
})));
|