bootstrap 4.6.2 → 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 -115
- data/assets/javascripts/bootstrap/base-component.js +63 -0
- data/assets/javascripts/bootstrap/button.js +96 -179
- data/assets/javascripts/bootstrap/carousel.js +472 -359
- data/assets/javascripts/bootstrap/collapse.js +379 -225
- 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 +472 -355
- data/assets/javascripts/bootstrap/modal.js +612 -438
- data/assets/javascripts/bootstrap/offcanvas.js +671 -0
- data/assets/javascripts/bootstrap/popover.js +138 -167
- data/assets/javascripts/bootstrap/scrollspy.js +250 -192
- data/assets/javascripts/bootstrap/tab.js +241 -144
- data/assets/javascripts/bootstrap/toast.js +223 -157
- data/assets/javascripts/bootstrap/tooltip.js +651 -487
- 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 +8 -1
- data/assets/javascripts/bootstrap.js +3277 -2590
- data/assets/javascripts/bootstrap.min.js +3 -3
- data/assets/stylesheets/_bootstrap-grid.scss +53 -18
- data/assets/stylesheets/_bootstrap-reboot.scss +6 -3
- data/assets/stylesheets/_bootstrap.scss +18 -10
- 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 +20 -6
- 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 +11 -7
- 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 -7
- data/assets/stylesheets/bootstrap/_type.scss +38 -59
- data/assets/stylesheets/bootstrap/_utilities.scss +594 -18
- data/assets/stylesheets/bootstrap/_variables.scss +800 -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/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 +3 -3
- 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 +19 -16
- 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
- /data/assets/stylesheets/bootstrap/{utilities → helpers}/_clearfix.scss +0 -0
|
@@ -1,154 +1,488 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Bootstrap modal.js
|
|
3
|
-
* Copyright 2011-
|
|
2
|
+
* Bootstrap modal.js v5.0.0 (https://getbootstrap.com/)
|
|
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
|
-
|
|
30
|
-
|
|
31
|
-
|
|
33
|
+
return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const getSelector = element => {
|
|
37
|
+
let selector = element.getAttribute('data-bs-target');
|
|
38
|
+
|
|
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
|
+
}
|
|
32
121
|
});
|
|
33
|
-
|
|
34
|
-
}
|
|
122
|
+
};
|
|
35
123
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
124
|
+
const isVisible = element => {
|
|
125
|
+
if (!element) {
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
40
128
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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);
|
|
45
334
|
}
|
|
335
|
+
|
|
336
|
+
this._element = backdrop;
|
|
46
337
|
}
|
|
47
338
|
|
|
48
|
-
return
|
|
49
|
-
}
|
|
50
|
-
|
|
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
|
+
}
|
|
385
|
+
|
|
51
386
|
}
|
|
52
387
|
|
|
53
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
|
+
* ------------------------------------------------------------------------
|
|
54
396
|
* Constants
|
|
397
|
+
* ------------------------------------------------------------------------
|
|
55
398
|
*/
|
|
56
399
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
|
|
64
|
-
|
|
65
|
-
var CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable';
|
|
66
|
-
var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';
|
|
67
|
-
var CLASS_NAME_BACKDROP = 'modal-backdrop';
|
|
68
|
-
var CLASS_NAME_OPEN = 'modal-open';
|
|
69
|
-
var CLASS_NAME_FADE = 'fade';
|
|
70
|
-
var CLASS_NAME_SHOW = 'show';
|
|
71
|
-
var CLASS_NAME_STATIC = 'modal-static';
|
|
72
|
-
var EVENT_HIDE = "hide" + EVENT_KEY;
|
|
73
|
-
var EVENT_HIDE_PREVENTED = "hidePrevented" + EVENT_KEY;
|
|
74
|
-
var EVENT_HIDDEN = "hidden" + EVENT_KEY;
|
|
75
|
-
var EVENT_SHOW = "show" + EVENT_KEY;
|
|
76
|
-
var EVENT_SHOWN = "shown" + EVENT_KEY;
|
|
77
|
-
var EVENT_FOCUSIN = "focusin" + EVENT_KEY;
|
|
78
|
-
var EVENT_RESIZE = "resize" + EVENT_KEY;
|
|
79
|
-
var EVENT_CLICK_DISMISS = "click.dismiss" + EVENT_KEY;
|
|
80
|
-
var EVENT_KEYDOWN_DISMISS = "keydown.dismiss" + EVENT_KEY;
|
|
81
|
-
var EVENT_MOUSEUP_DISMISS = "mouseup.dismiss" + EVENT_KEY;
|
|
82
|
-
var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss" + EVENT_KEY;
|
|
83
|
-
var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
|
|
84
|
-
var SELECTOR_DIALOG = '.modal-dialog';
|
|
85
|
-
var SELECTOR_MODAL_BODY = '.modal-body';
|
|
86
|
-
var SELECTOR_DATA_TOGGLE = '[data-toggle="modal"]';
|
|
87
|
-
var SELECTOR_DATA_DISMISS = '[data-dismiss="modal"]';
|
|
88
|
-
var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
|
|
89
|
-
var SELECTOR_STICKY_CONTENT = '.sticky-top';
|
|
90
|
-
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 = {
|
|
91
406
|
backdrop: true,
|
|
92
407
|
keyboard: true,
|
|
93
|
-
focus: true
|
|
94
|
-
show: true
|
|
408
|
+
focus: true
|
|
95
409
|
};
|
|
96
|
-
|
|
410
|
+
const DefaultType = {
|
|
97
411
|
backdrop: '(boolean|string)',
|
|
98
412
|
keyboard: 'boolean',
|
|
99
|
-
focus: 'boolean'
|
|
100
|
-
show: 'boolean'
|
|
413
|
+
focus: 'boolean'
|
|
101
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"]';
|
|
102
435
|
/**
|
|
103
|
-
*
|
|
436
|
+
* ------------------------------------------------------------------------
|
|
437
|
+
* Class Definition
|
|
438
|
+
* ------------------------------------------------------------------------
|
|
104
439
|
*/
|
|
105
440
|
|
|
106
|
-
|
|
107
|
-
|
|
441
|
+
class Modal extends BaseComponent__default['default'] {
|
|
442
|
+
constructor(element, config) {
|
|
443
|
+
super(element);
|
|
108
444
|
this._config = this._getConfig(config);
|
|
109
|
-
this.
|
|
110
|
-
this.
|
|
111
|
-
this._backdrop = null;
|
|
445
|
+
this._dialog = SelectorEngine__default['default'].findOne(SELECTOR_DIALOG, this._element);
|
|
446
|
+
this._backdrop = this._initializeBackDrop();
|
|
112
447
|
this._isShown = false;
|
|
113
|
-
this._isBodyOverflowing = false;
|
|
114
448
|
this._ignoreBackdropClick = false;
|
|
115
449
|
this._isTransitioning = false;
|
|
116
|
-
this._scrollbarWidth = 0;
|
|
117
450
|
} // Getters
|
|
118
451
|
|
|
119
452
|
|
|
120
|
-
|
|
453
|
+
static get Default() {
|
|
454
|
+
return Default;
|
|
455
|
+
}
|
|
121
456
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
};
|
|
457
|
+
static get DATA_KEY() {
|
|
458
|
+
return DATA_KEY;
|
|
459
|
+
} // Public
|
|
126
460
|
|
|
127
|
-
_proto.show = function show(relatedTarget) {
|
|
128
|
-
var _this = this;
|
|
129
461
|
|
|
462
|
+
toggle(relatedTarget) {
|
|
463
|
+
return this._isShown ? this.hide() : this.show(relatedTarget);
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
show(relatedTarget) {
|
|
130
467
|
if (this._isShown || this._isTransitioning) {
|
|
131
468
|
return;
|
|
132
469
|
}
|
|
133
470
|
|
|
134
|
-
|
|
135
|
-
|
|
471
|
+
if (this._isAnimated()) {
|
|
472
|
+
this._isTransitioning = true;
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
const showEvent = EventHandler__default['default'].trigger(this._element, EVENT_SHOW, {
|
|
476
|
+
relatedTarget
|
|
136
477
|
});
|
|
137
|
-
$__default["default"](this._element).trigger(showEvent);
|
|
138
478
|
|
|
139
|
-
if (showEvent.
|
|
479
|
+
if (this._isShown || showEvent.defaultPrevented) {
|
|
140
480
|
return;
|
|
141
481
|
}
|
|
142
482
|
|
|
143
483
|
this._isShown = true;
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
this._isTransitioning = true;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
this._checkScrollbar();
|
|
150
|
-
|
|
151
|
-
this._setScrollbar();
|
|
484
|
+
hide();
|
|
485
|
+
document.body.classList.add(CLASS_NAME_OPEN);
|
|
152
486
|
|
|
153
487
|
this._adjustDialog();
|
|
154
488
|
|
|
@@ -156,25 +490,19 @@
|
|
|
156
490
|
|
|
157
491
|
this._setResizeEvent();
|
|
158
492
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
if ($__default["default"](event.target).is(_this._element)) {
|
|
165
|
-
_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;
|
|
166
498
|
}
|
|
167
499
|
});
|
|
168
500
|
});
|
|
169
501
|
|
|
170
|
-
this._showBackdrop(
|
|
171
|
-
|
|
172
|
-
});
|
|
173
|
-
};
|
|
174
|
-
|
|
175
|
-
_proto.hide = function hide(event) {
|
|
176
|
-
var _this2 = this;
|
|
502
|
+
this._showBackdrop(() => this._showElement(relatedTarget));
|
|
503
|
+
}
|
|
177
504
|
|
|
505
|
+
hide(event) {
|
|
178
506
|
if (event) {
|
|
179
507
|
event.preventDefault();
|
|
180
508
|
}
|
|
@@ -183,17 +511,17 @@
|
|
|
183
511
|
return;
|
|
184
512
|
}
|
|
185
513
|
|
|
186
|
-
|
|
187
|
-
$__default["default"](this._element).trigger(hideEvent);
|
|
514
|
+
const hideEvent = EventHandler__default['default'].trigger(this._element, EVENT_HIDE);
|
|
188
515
|
|
|
189
|
-
if (
|
|
516
|
+
if (hideEvent.defaultPrevented) {
|
|
190
517
|
return;
|
|
191
518
|
}
|
|
192
519
|
|
|
193
520
|
this._isShown = false;
|
|
194
|
-
var transition = $__default["default"](this._element).hasClass(CLASS_NAME_FADE);
|
|
195
521
|
|
|
196
|
-
|
|
522
|
+
const isAnimated = this._isAnimated();
|
|
523
|
+
|
|
524
|
+
if (isAnimated) {
|
|
197
525
|
this._isTransitioning = true;
|
|
198
526
|
}
|
|
199
527
|
|
|
@@ -201,93 +529,69 @@
|
|
|
201
529
|
|
|
202
530
|
this._setResizeEvent();
|
|
203
531
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
$__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);
|
|
208
535
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
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);
|
|
214
543
|
} else {
|
|
215
544
|
this._hideModal();
|
|
216
545
|
}
|
|
217
|
-
}
|
|
546
|
+
}
|
|
218
547
|
|
|
219
|
-
|
|
220
|
-
[window, this.
|
|
221
|
-
|
|
222
|
-
});
|
|
548
|
+
dispose() {
|
|
549
|
+
[window, this._dialog].forEach(htmlElement => EventHandler__default['default'].off(htmlElement, EVENT_KEY));
|
|
550
|
+
super.dispose();
|
|
223
551
|
/**
|
|
224
552
|
* `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`
|
|
225
553
|
* Do not move `document` in `htmlElements` array
|
|
226
554
|
* It will remove `EVENT_CLICK_DATA_API` event that should remain
|
|
227
555
|
*/
|
|
228
556
|
|
|
229
|
-
|
|
230
|
-
$__default["default"].removeData(this._element, DATA_KEY);
|
|
557
|
+
EventHandler__default['default'].off(document, EVENT_FOCUSIN);
|
|
231
558
|
this._config = null;
|
|
232
|
-
this._element = null;
|
|
233
559
|
this._dialog = null;
|
|
560
|
+
|
|
561
|
+
this._backdrop.dispose();
|
|
562
|
+
|
|
234
563
|
this._backdrop = null;
|
|
235
564
|
this._isShown = null;
|
|
236
|
-
this._isBodyOverflowing = null;
|
|
237
565
|
this._ignoreBackdropClick = null;
|
|
238
566
|
this._isTransitioning = null;
|
|
239
|
-
|
|
240
|
-
};
|
|
567
|
+
}
|
|
241
568
|
|
|
242
|
-
|
|
569
|
+
handleUpdate() {
|
|
243
570
|
this._adjustDialog();
|
|
244
571
|
} // Private
|
|
245
|
-
;
|
|
246
|
-
|
|
247
|
-
_proto._getConfig = function _getConfig(config) {
|
|
248
|
-
config = _extends({}, Default, config);
|
|
249
|
-
Util__default["default"].typeCheckConfig(NAME, config, DefaultType);
|
|
250
|
-
return config;
|
|
251
|
-
};
|
|
252
|
-
|
|
253
|
-
_proto._triggerBackdropTransition = function _triggerBackdropTransition() {
|
|
254
|
-
var _this3 = this;
|
|
255
|
-
|
|
256
|
-
var hideEventPrevented = $__default["default"].Event(EVENT_HIDE_PREVENTED);
|
|
257
|
-
$__default["default"](this._element).trigger(hideEventPrevented);
|
|
258
|
-
|
|
259
|
-
if (hideEventPrevented.isDefaultPrevented()) {
|
|
260
|
-
return;
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
|
|
264
|
-
|
|
265
|
-
if (!isModalOverflowing) {
|
|
266
|
-
this._element.style.overflowY = 'hidden';
|
|
267
|
-
}
|
|
268
572
|
|
|
269
|
-
this._element.classList.add(CLASS_NAME_STATIC);
|
|
270
573
|
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
_this3._element.style.overflowY = '';
|
|
279
|
-
}).emulateTransitionEnd(_this3._element, modalTransitionDuration);
|
|
280
|
-
}
|
|
281
|
-
}).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
|
+
}
|
|
282
581
|
|
|
283
|
-
|
|
284
|
-
|
|
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
|
+
}
|
|
285
590
|
|
|
286
|
-
|
|
287
|
-
|
|
591
|
+
_showElement(relatedTarget) {
|
|
592
|
+
const isAnimated = this._isAnimated();
|
|
288
593
|
|
|
289
|
-
|
|
290
|
-
var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null;
|
|
594
|
+
const modalBody = SelectorEngine__default['default'].findOne(SELECTOR_MODAL_BODY, this._dialog);
|
|
291
595
|
|
|
292
596
|
if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
|
|
293
597
|
// Don't move modal's DOM position
|
|
@@ -302,87 +606,76 @@
|
|
|
302
606
|
|
|
303
607
|
this._element.setAttribute('role', 'dialog');
|
|
304
608
|
|
|
305
|
-
|
|
609
|
+
this._element.scrollTop = 0;
|
|
610
|
+
|
|
611
|
+
if (modalBody) {
|
|
306
612
|
modalBody.scrollTop = 0;
|
|
307
|
-
} else {
|
|
308
|
-
this._element.scrollTop = 0;
|
|
309
613
|
}
|
|
310
614
|
|
|
311
|
-
if (
|
|
312
|
-
|
|
615
|
+
if (isAnimated) {
|
|
616
|
+
reflow(this._element);
|
|
313
617
|
}
|
|
314
618
|
|
|
315
|
-
|
|
619
|
+
this._element.classList.add(CLASS_NAME_SHOW);
|
|
316
620
|
|
|
317
621
|
if (this._config.focus) {
|
|
318
622
|
this._enforceFocus();
|
|
319
623
|
}
|
|
320
624
|
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
var transitionComplete = function transitionComplete() {
|
|
326
|
-
if (_this4._config.focus) {
|
|
327
|
-
_this4._element.focus();
|
|
625
|
+
const transitionComplete = () => {
|
|
626
|
+
if (this._config.focus) {
|
|
627
|
+
this._element.focus();
|
|
328
628
|
}
|
|
329
629
|
|
|
330
|
-
|
|
331
|
-
|
|
630
|
+
this._isTransitioning = false;
|
|
631
|
+
EventHandler__default['default'].trigger(this._element, EVENT_SHOWN, {
|
|
632
|
+
relatedTarget
|
|
633
|
+
});
|
|
332
634
|
};
|
|
333
635
|
|
|
334
|
-
if (
|
|
335
|
-
|
|
336
|
-
|
|
636
|
+
if (isAnimated) {
|
|
637
|
+
const transitionDuration = getTransitionDurationFromElement(this._dialog);
|
|
638
|
+
EventHandler__default['default'].one(this._dialog, 'transitionend', transitionComplete);
|
|
639
|
+
emulateTransitionEnd(this._dialog, transitionDuration);
|
|
337
640
|
} else {
|
|
338
641
|
transitionComplete();
|
|
339
642
|
}
|
|
340
|
-
}
|
|
643
|
+
}
|
|
341
644
|
|
|
342
|
-
|
|
343
|
-
|
|
645
|
+
_enforceFocus() {
|
|
646
|
+
EventHandler__default['default'].off(document, EVENT_FOCUSIN); // guard against infinite focus loop
|
|
344
647
|
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
_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();
|
|
349
651
|
}
|
|
350
652
|
});
|
|
351
|
-
}
|
|
352
|
-
|
|
353
|
-
_proto._setEscapeEvent = function _setEscapeEvent() {
|
|
354
|
-
var _this6 = this;
|
|
653
|
+
}
|
|
355
654
|
|
|
655
|
+
_setEscapeEvent() {
|
|
356
656
|
if (this._isShown) {
|
|
357
|
-
|
|
358
|
-
if (
|
|
657
|
+
EventHandler__default['default'].on(this._element, EVENT_KEYDOWN_DISMISS, event => {
|
|
658
|
+
if (this._config.keyboard && event.key === ESCAPE_KEY) {
|
|
359
659
|
event.preventDefault();
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
_this6._triggerBackdropTransition();
|
|
660
|
+
this.hide();
|
|
661
|
+
} else if (!this._config.keyboard && event.key === ESCAPE_KEY) {
|
|
662
|
+
this._triggerBackdropTransition();
|
|
364
663
|
}
|
|
365
664
|
});
|
|
366
|
-
} else
|
|
367
|
-
|
|
665
|
+
} else {
|
|
666
|
+
EventHandler__default['default'].off(this._element, EVENT_KEYDOWN_DISMISS);
|
|
368
667
|
}
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
_proto._setResizeEvent = function _setResizeEvent() {
|
|
372
|
-
var _this7 = this;
|
|
668
|
+
}
|
|
373
669
|
|
|
670
|
+
_setResizeEvent() {
|
|
374
671
|
if (this._isShown) {
|
|
375
|
-
|
|
376
|
-
return _this7.handleUpdate(event);
|
|
377
|
-
});
|
|
672
|
+
EventHandler__default['default'].on(window, EVENT_RESIZE, () => this._adjustDialog());
|
|
378
673
|
} else {
|
|
379
|
-
|
|
674
|
+
EventHandler__default['default'].off(window, EVENT_RESIZE);
|
|
380
675
|
}
|
|
381
|
-
}
|
|
382
|
-
|
|
383
|
-
_proto._hideModal = function _hideModal() {
|
|
384
|
-
var _this8 = this;
|
|
676
|
+
}
|
|
385
677
|
|
|
678
|
+
_hideModal() {
|
|
386
679
|
this._element.style.display = 'none';
|
|
387
680
|
|
|
388
681
|
this._element.setAttribute('aria-hidden', true);
|
|
@@ -393,270 +686,151 @@
|
|
|
393
686
|
|
|
394
687
|
this._isTransitioning = false;
|
|
395
688
|
|
|
396
|
-
this.
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
_this8._resetAdjustments();
|
|
689
|
+
this._backdrop.hide(() => {
|
|
690
|
+
document.body.classList.remove(CLASS_NAME_OPEN);
|
|
400
691
|
|
|
401
|
-
|
|
692
|
+
this._resetAdjustments();
|
|
402
693
|
|
|
403
|
-
|
|
694
|
+
reset();
|
|
695
|
+
EventHandler__default['default'].trigger(this._element, EVENT_HIDDEN);
|
|
404
696
|
});
|
|
405
|
-
}
|
|
406
|
-
|
|
407
|
-
_proto._removeBackdrop = function _removeBackdrop() {
|
|
408
|
-
if (this._backdrop) {
|
|
409
|
-
$__default["default"](this._backdrop).remove();
|
|
410
|
-
this._backdrop = null;
|
|
411
|
-
}
|
|
412
|
-
};
|
|
413
|
-
|
|
414
|
-
_proto._showBackdrop = function _showBackdrop(callback) {
|
|
415
|
-
var _this9 = this;
|
|
416
|
-
|
|
417
|
-
var animate = $__default["default"](this._element).hasClass(CLASS_NAME_FADE) ? CLASS_NAME_FADE : '';
|
|
418
|
-
|
|
419
|
-
if (this._isShown && this._config.backdrop) {
|
|
420
|
-
this._backdrop = document.createElement('div');
|
|
421
|
-
this._backdrop.className = CLASS_NAME_BACKDROP;
|
|
697
|
+
}
|
|
422
698
|
|
|
423
|
-
|
|
424
|
-
|
|
699
|
+
_showBackdrop(callback) {
|
|
700
|
+
EventHandler__default['default'].on(this._element, EVENT_CLICK_DISMISS, event => {
|
|
701
|
+
if (this._ignoreBackdropClick) {
|
|
702
|
+
this._ignoreBackdropClick = false;
|
|
703
|
+
return;
|
|
425
704
|
}
|
|
426
705
|
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
_this9._ignoreBackdropClick = false;
|
|
431
|
-
return;
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
if (event.target !== event.currentTarget) {
|
|
435
|
-
return;
|
|
436
|
-
}
|
|
437
|
-
|
|
438
|
-
if (_this9._config.backdrop === 'static') {
|
|
439
|
-
_this9._triggerBackdropTransition();
|
|
440
|
-
} else {
|
|
441
|
-
_this9.hide();
|
|
442
|
-
}
|
|
443
|
-
});
|
|
706
|
+
if (event.target !== event.currentTarget) {
|
|
707
|
+
return;
|
|
708
|
+
}
|
|
444
709
|
|
|
445
|
-
if (
|
|
446
|
-
|
|
710
|
+
if (this._config.backdrop === true) {
|
|
711
|
+
this.hide();
|
|
712
|
+
} else if (this._config.backdrop === 'static') {
|
|
713
|
+
this._triggerBackdropTransition();
|
|
447
714
|
}
|
|
715
|
+
});
|
|
448
716
|
|
|
449
|
-
|
|
717
|
+
this._backdrop.show(callback);
|
|
718
|
+
}
|
|
450
719
|
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
720
|
+
_isAnimated() {
|
|
721
|
+
return this._element.classList.contains(CLASS_NAME_FADE);
|
|
722
|
+
}
|
|
454
723
|
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
724
|
+
_triggerBackdropTransition() {
|
|
725
|
+
const hideEvent = EventHandler__default['default'].trigger(this._element, EVENT_HIDE_PREVENTED);
|
|
726
|
+
|
|
727
|
+
if (hideEvent.defaultPrevented) {
|
|
728
|
+
return;
|
|
729
|
+
}
|
|
459
730
|
|
|
460
|
-
|
|
461
|
-
$__default["default"](this._backdrop).one(Util__default["default"].TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);
|
|
462
|
-
} else if (!this._isShown && this._backdrop) {
|
|
463
|
-
$__default["default"](this._backdrop).removeClass(CLASS_NAME_SHOW);
|
|
731
|
+
const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
|
|
464
732
|
|
|
465
|
-
|
|
466
|
-
|
|
733
|
+
if (!isModalOverflowing) {
|
|
734
|
+
this._element.style.overflowY = 'hidden';
|
|
735
|
+
}
|
|
467
736
|
|
|
468
|
-
|
|
469
|
-
callback();
|
|
470
|
-
}
|
|
471
|
-
};
|
|
737
|
+
this._element.classList.add(CLASS_NAME_STATIC);
|
|
472
738
|
|
|
473
|
-
|
|
474
|
-
|
|
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);
|
|
475
743
|
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
744
|
+
if (!isModalOverflowing) {
|
|
745
|
+
EventHandler__default['default'].one(this._element, 'transitionend', () => {
|
|
746
|
+
this._element.style.overflowY = '';
|
|
747
|
+
});
|
|
748
|
+
emulateTransitionEnd(this._element, modalTransitionDuration);
|
|
479
749
|
}
|
|
480
|
-
}
|
|
481
|
-
|
|
482
|
-
|
|
750
|
+
});
|
|
751
|
+
emulateTransitionEnd(this._element, modalTransitionDuration);
|
|
752
|
+
|
|
753
|
+
this._element.focus();
|
|
483
754
|
} // ----------------------------------------------------------------------
|
|
484
755
|
// the following methods are used to handle overflowing modals
|
|
485
|
-
// todo (fat): these should probably be refactored out of modal.js
|
|
486
756
|
// ----------------------------------------------------------------------
|
|
487
|
-
;
|
|
488
757
|
|
|
489
|
-
_proto._adjustDialog = function _adjustDialog() {
|
|
490
|
-
var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
|
|
491
758
|
|
|
492
|
-
|
|
493
|
-
|
|
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`;
|
|
494
766
|
}
|
|
495
767
|
|
|
496
|
-
if (
|
|
497
|
-
this._element.style.paddingRight =
|
|
768
|
+
if (isBodyOverflowing && !isModalOverflowing && !isRTL() || !isBodyOverflowing && isModalOverflowing && isRTL()) {
|
|
769
|
+
this._element.style.paddingRight = `${scrollbarWidth}px`;
|
|
498
770
|
}
|
|
499
|
-
}
|
|
771
|
+
}
|
|
500
772
|
|
|
501
|
-
|
|
773
|
+
_resetAdjustments() {
|
|
502
774
|
this._element.style.paddingLeft = '';
|
|
503
775
|
this._element.style.paddingRight = '';
|
|
504
|
-
};
|
|
505
|
-
|
|
506
|
-
_proto._checkScrollbar = function _checkScrollbar() {
|
|
507
|
-
var rect = document.body.getBoundingClientRect();
|
|
508
|
-
this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;
|
|
509
|
-
this._scrollbarWidth = this._getScrollbarWidth();
|
|
510
|
-
};
|
|
511
|
-
|
|
512
|
-
_proto._setScrollbar = function _setScrollbar() {
|
|
513
|
-
var _this10 = this;
|
|
514
|
-
|
|
515
|
-
if (this._isBodyOverflowing) {
|
|
516
|
-
// Note: DOMNode.style.paddingRight returns the actual value or '' if not set
|
|
517
|
-
// while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
|
|
518
|
-
var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));
|
|
519
|
-
var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); // Adjust fixed content padding
|
|
520
|
-
|
|
521
|
-
$__default["default"](fixedContent).each(function (index, element) {
|
|
522
|
-
var actualPadding = element.style.paddingRight;
|
|
523
|
-
var calculatedPadding = $__default["default"](element).css('padding-right');
|
|
524
|
-
$__default["default"](element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + "px");
|
|
525
|
-
}); // Adjust sticky content margin
|
|
526
|
-
|
|
527
|
-
$__default["default"](stickyContent).each(function (index, element) {
|
|
528
|
-
var actualMargin = element.style.marginRight;
|
|
529
|
-
var calculatedMargin = $__default["default"](element).css('margin-right');
|
|
530
|
-
$__default["default"](element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + "px");
|
|
531
|
-
}); // Adjust body padding
|
|
532
|
-
|
|
533
|
-
var actualPadding = document.body.style.paddingRight;
|
|
534
|
-
var calculatedPadding = $__default["default"](document.body).css('padding-right');
|
|
535
|
-
$__default["default"](document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
|
|
536
|
-
}
|
|
537
|
-
|
|
538
|
-
$__default["default"](document.body).addClass(CLASS_NAME_OPEN);
|
|
539
|
-
};
|
|
540
|
-
|
|
541
|
-
_proto._resetScrollbar = function _resetScrollbar() {
|
|
542
|
-
// Restore fixed content padding
|
|
543
|
-
var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));
|
|
544
|
-
$__default["default"](fixedContent).each(function (index, element) {
|
|
545
|
-
var padding = $__default["default"](element).data('padding-right');
|
|
546
|
-
$__default["default"](element).removeData('padding-right');
|
|
547
|
-
element.style.paddingRight = padding ? padding : '';
|
|
548
|
-
}); // Restore sticky content
|
|
549
|
-
|
|
550
|
-
var elements = [].slice.call(document.querySelectorAll("" + SELECTOR_STICKY_CONTENT));
|
|
551
|
-
$__default["default"](elements).each(function (index, element) {
|
|
552
|
-
var margin = $__default["default"](element).data('margin-right');
|
|
553
|
-
|
|
554
|
-
if (typeof margin !== 'undefined') {
|
|
555
|
-
$__default["default"](element).css('margin-right', margin).removeData('margin-right');
|
|
556
|
-
}
|
|
557
|
-
}); // Restore body padding
|
|
558
|
-
|
|
559
|
-
var padding = $__default["default"](document.body).data('padding-right');
|
|
560
|
-
$__default["default"](document.body).removeData('padding-right');
|
|
561
|
-
document.body.style.paddingRight = padding ? padding : '';
|
|
562
|
-
};
|
|
563
|
-
|
|
564
|
-
_proto._getScrollbarWidth = function _getScrollbarWidth() {
|
|
565
|
-
// thx d.walsh
|
|
566
|
-
var scrollDiv = document.createElement('div');
|
|
567
|
-
scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;
|
|
568
|
-
document.body.appendChild(scrollDiv);
|
|
569
|
-
var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
|
|
570
|
-
document.body.removeChild(scrollDiv);
|
|
571
|
-
return scrollbarWidth;
|
|
572
776
|
} // Static
|
|
573
|
-
;
|
|
574
777
|
|
|
575
|
-
Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
|
|
576
|
-
return this.each(function () {
|
|
577
|
-
var data = $__default["default"](this).data(DATA_KEY);
|
|
578
778
|
|
|
579
|
-
|
|
779
|
+
static jQueryInterface(config, relatedTarget) {
|
|
780
|
+
return this.each(function () {
|
|
781
|
+
const data = Modal.getInstance(this) || new Modal(this, typeof config === 'object' ? config : {});
|
|
580
782
|
|
|
581
|
-
if (
|
|
582
|
-
|
|
583
|
-
$__default["default"](this).data(DATA_KEY, data);
|
|
783
|
+
if (typeof config !== 'string') {
|
|
784
|
+
return;
|
|
584
785
|
}
|
|
585
786
|
|
|
586
|
-
if (typeof config === '
|
|
587
|
-
|
|
588
|
-
throw new TypeError("No method named \"" + config + "\"");
|
|
589
|
-
}
|
|
590
|
-
|
|
591
|
-
data[config](relatedTarget);
|
|
592
|
-
} else if (_config.show) {
|
|
593
|
-
data.show(relatedTarget);
|
|
787
|
+
if (typeof data[config] === 'undefined') {
|
|
788
|
+
throw new TypeError(`No method named "${config}"`);
|
|
594
789
|
}
|
|
595
|
-
});
|
|
596
|
-
};
|
|
597
790
|
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
return VERSION;
|
|
602
|
-
}
|
|
603
|
-
}, {
|
|
604
|
-
key: "Default",
|
|
605
|
-
get: function get() {
|
|
606
|
-
return Default;
|
|
607
|
-
}
|
|
608
|
-
}]);
|
|
791
|
+
data[config](relatedTarget);
|
|
792
|
+
});
|
|
793
|
+
}
|
|
609
794
|
|
|
610
|
-
|
|
611
|
-
}();
|
|
795
|
+
}
|
|
612
796
|
/**
|
|
613
|
-
*
|
|
797
|
+
* ------------------------------------------------------------------------
|
|
798
|
+
* Data Api implementation
|
|
799
|
+
* ------------------------------------------------------------------------
|
|
614
800
|
*/
|
|
615
801
|
|
|
616
802
|
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
var target;
|
|
621
|
-
var selector = Util__default["default"].getSelectorFromElement(this);
|
|
622
|
-
|
|
623
|
-
if (selector) {
|
|
624
|
-
target = document.querySelector(selector);
|
|
625
|
-
}
|
|
626
|
-
|
|
627
|
-
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);
|
|
628
805
|
|
|
629
|
-
if (
|
|
806
|
+
if (['A', 'AREA'].includes(this.tagName)) {
|
|
630
807
|
event.preventDefault();
|
|
631
808
|
}
|
|
632
809
|
|
|
633
|
-
|
|
634
|
-
if (showEvent.
|
|
635
|
-
//
|
|
810
|
+
EventHandler__default['default'].one(target, EVENT_SHOW, showEvent => {
|
|
811
|
+
if (showEvent.defaultPrevented) {
|
|
812
|
+
// only register focus restorer if modal will actually get shown
|
|
636
813
|
return;
|
|
637
814
|
}
|
|
638
815
|
|
|
639
|
-
|
|
640
|
-
if (
|
|
641
|
-
|
|
816
|
+
EventHandler__default['default'].one(target, EVENT_HIDDEN, () => {
|
|
817
|
+
if (isVisible(this)) {
|
|
818
|
+
this.focus();
|
|
642
819
|
}
|
|
643
820
|
});
|
|
644
821
|
});
|
|
645
|
-
|
|
646
|
-
|
|
822
|
+
const data = Modal.getInstance(target) || new Modal(target);
|
|
823
|
+
data.toggle(this);
|
|
647
824
|
});
|
|
648
825
|
/**
|
|
826
|
+
* ------------------------------------------------------------------------
|
|
649
827
|
* jQuery
|
|
828
|
+
* ------------------------------------------------------------------------
|
|
829
|
+
* add .Modal to jQuery only if jQuery is present
|
|
650
830
|
*/
|
|
651
831
|
|
|
652
|
-
|
|
653
|
-
$__default["default"].fn[NAME].Constructor = Modal;
|
|
654
|
-
|
|
655
|
-
$__default["default"].fn[NAME].noConflict = function () {
|
|
656
|
-
$__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
|
|
657
|
-
return Modal._jQueryInterface;
|
|
658
|
-
};
|
|
832
|
+
defineJQueryPlugin(NAME, Modal);
|
|
659
833
|
|
|
660
834
|
return Modal;
|
|
661
835
|
|
|
662
|
-
}));
|
|
836
|
+
})));
|