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