bootstrap 4.3.0 → 5.0.0.alpha1
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 +15 -1
- data/CHANGELOG.md +2 -14
- data/README.md +1 -1
- data/assets/javascripts/bootstrap-sprockets.js +5 -1
- data/assets/javascripts/bootstrap.js +2292 -1514
- data/assets/javascripts/bootstrap.min.js +4 -4
- data/assets/javascripts/bootstrap/alert.js +148 -85
- data/assets/javascripts/bootstrap/button.js +69 -110
- data/assets/javascripts/bootstrap/carousel.js +320 -239
- data/assets/javascripts/bootstrap/collapse.js +300 -177
- data/assets/javascripts/bootstrap/dom/data.js +81 -0
- data/assets/javascripts/bootstrap/dom/event-handler.js +311 -0
- data/assets/javascripts/bootstrap/dom/manipulator.js +100 -0
- data/assets/javascripts/bootstrap/dom/polyfill.js +110 -0
- data/assets/javascripts/bootstrap/dom/selector-engine.js +98 -0
- data/assets/javascripts/bootstrap/dropdown.js +282 -265
- data/assets/javascripts/bootstrap/modal.js +348 -231
- data/assets/javascripts/bootstrap/popover.js +80 -105
- data/assets/javascripts/bootstrap/scrollspy.js +173 -138
- data/assets/javascripts/bootstrap/tab.js +180 -115
- data/assets/javascripts/bootstrap/toast.js +188 -132
- data/assets/javascripts/bootstrap/tooltip.js +508 -230
- data/assets/stylesheets/_bootstrap-grid.scss +54 -18
- data/assets/stylesheets/_bootstrap-reboot.scss +7 -4
- data/assets/stylesheets/_bootstrap.scss +17 -11
- data/assets/stylesheets/bootstrap/_alert.scss +3 -3
- data/assets/stylesheets/bootstrap/_badge.scss +2 -27
- data/assets/stylesheets/bootstrap/_breadcrumb.scss +7 -18
- data/assets/stylesheets/bootstrap/_button-group.scss +16 -38
- data/assets/stylesheets/bootstrap/_buttons.scss +26 -39
- data/assets/stylesheets/bootstrap/_card.scss +48 -97
- data/assets/stylesheets/bootstrap/_carousel.scss +16 -18
- data/assets/stylesheets/bootstrap/_close.scss +9 -14
- data/assets/stylesheets/bootstrap/_containers.scss +41 -0
- data/assets/stylesheets/bootstrap/_dropdown.scss +13 -9
- data/assets/stylesheets/bootstrap/_forms.scss +9 -330
- data/assets/stylesheets/bootstrap/_functions.scss +141 -24
- data/assets/stylesheets/bootstrap/_grid.scss +4 -34
- data/assets/stylesheets/bootstrap/_helpers.scss +7 -0
- data/assets/stylesheets/bootstrap/_images.scss +2 -2
- data/assets/stylesheets/bootstrap/_list-group.scss +41 -33
- data/assets/stylesheets/bootstrap/_mixins.scss +9 -15
- data/assets/stylesheets/bootstrap/_modal.scss +54 -48
- data/assets/stylesheets/bootstrap/_nav.scss +12 -9
- data/assets/stylesheets/bootstrap/_navbar.scss +54 -56
- data/assets/stylesheets/bootstrap/_pagination.scss +10 -22
- data/assets/stylesheets/bootstrap/_popover.scss +13 -14
- data/assets/stylesheets/bootstrap/_progress.scss +6 -4
- data/assets/stylesheets/bootstrap/_reboot.scss +318 -185
- data/assets/stylesheets/bootstrap/_root.scss +5 -8
- data/assets/stylesheets/bootstrap/_spinners.scss +3 -2
- data/assets/stylesheets/bootstrap/_tables.scss +80 -114
- data/assets/stylesheets/bootstrap/_tooltip.scss +5 -5
- data/assets/stylesheets/bootstrap/_transitions.scss +0 -1
- data/assets/stylesheets/bootstrap/_type.scss +40 -61
- data/assets/stylesheets/bootstrap/_utilities.scss +503 -17
- data/assets/stylesheets/bootstrap/_variables.scss +567 -430
- data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +18 -0
- data/assets/stylesheets/bootstrap/forms/_form-check.scss +142 -0
- data/assets/stylesheets/bootstrap/forms/_form-control.scss +116 -0
- data/assets/stylesheets/bootstrap/forms/_form-file.scss +91 -0
- data/assets/stylesheets/bootstrap/forms/_form-range.scss +136 -0
- data/assets/stylesheets/bootstrap/forms/_form-select.scss +82 -0
- data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
- data/assets/stylesheets/bootstrap/forms/_input-group.scss +140 -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/_embed.scss +31 -0
- data/assets/stylesheets/bootstrap/helpers/_position.scss +30 -0
- data/assets/stylesheets/bootstrap/helpers/_screenreaders.scss +8 -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/mixins/_alert.scss +0 -4
- data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +26 -13
- data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +11 -8
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +68 -50
- data/assets/stylesheets/bootstrap/mixins/_caret.scss +4 -4
- 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 +47 -106
- data/assets/stylesheets/bootstrap/mixins/_gradients.scss +9 -11
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +99 -29
- data/assets/stylesheets/bootstrap/mixins/_image.scss +0 -20
- data/assets/stylesheets/bootstrap/mixins/_list-group.scss +2 -1
- data/assets/stylesheets/bootstrap/mixins/_pagination.scss +15 -8
- data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +14 -19
- data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +21 -0
- data/assets/stylesheets/bootstrap/mixins/_transition.scss +17 -7
- data/assets/stylesheets/bootstrap/mixins/_utilities.scss +49 -0
- data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
- data/assets/stylesheets/bootstrap/vendor/_rfs.scss +230 -130
- data/bootstrap.gemspec +1 -1
- data/lib/bootstrap/version.rb +2 -2
- data/tasks/updater/js.rb +3 -3
- data/tasks/updater/network.rb +2 -2
- data/test/dummy_rails/app/assets/config/manifest.js +3 -0
- data/test/dummy_rails/app/assets/stylesheets/.browserslistrc +1 -0
- data/test/gemfiles/rails_6_0.gemfile +7 -0
- data/test/support/dummy_rails_integration.rb +3 -1
- data/test/test_helper.rb +18 -13
- metadata +40 -42
- data/assets/javascripts/bootstrap/util.js +0 -171
- data/assets/stylesheets/bootstrap/_code.scss +0 -48
- data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -507
- data/assets/stylesheets/bootstrap/_input-group.scss +0 -193
- 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 -21
- 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 -66
- data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
- data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -10
- 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 -16
- data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
- data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
- data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
- data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
- data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
- data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
- data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
- data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
- data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
- data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
- data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
- data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
- data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
- data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
- data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
- data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
- data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -72
- data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
|
@@ -1,67 +1,151 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Bootstrap modal.js
|
|
3
|
-
* Copyright 2011-
|
|
4
|
-
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/
|
|
2
|
+
* Bootstrap modal.js v5.0.0-alpha1 (https://getbootstrap.com/)
|
|
3
|
+
* Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
|
4
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
5
5
|
*/
|
|
6
6
|
(function (global, factory) {
|
|
7
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('
|
|
8
|
-
typeof define === 'function' && define.amd ? define(['
|
|
9
|
-
(global = global || self, global.Modal = factory(global.
|
|
10
|
-
}(this, function (
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./dom/selector-engine.js')) :
|
|
8
|
+
typeof define === 'function' && define.amd ? define(['./dom/data.js', './dom/event-handler.js', './dom/manipulator.js', './dom/selector-engine.js'], factory) :
|
|
9
|
+
(global = global || self, global.Modal = factory(global.Data, global.EventHandler, global.Manipulator, global.SelectorEngine));
|
|
10
|
+
}(this, (function (Data, EventHandler, Manipulator, SelectorEngine) { 'use strict';
|
|
11
|
+
|
|
12
|
+
Data = Data && Object.prototype.hasOwnProperty.call(Data, 'default') ? Data['default'] : Data;
|
|
13
|
+
EventHandler = EventHandler && Object.prototype.hasOwnProperty.call(EventHandler, 'default') ? EventHandler['default'] : EventHandler;
|
|
14
|
+
Manipulator = Manipulator && Object.prototype.hasOwnProperty.call(Manipulator, 'default') ? Manipulator['default'] : Manipulator;
|
|
15
|
+
SelectorEngine = SelectorEngine && Object.prototype.hasOwnProperty.call(SelectorEngine, 'default') ? SelectorEngine['default'] : SelectorEngine;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* --------------------------------------------------------------------------
|
|
19
|
+
* Bootstrap (v5.0.0-alpha1): util/index.js
|
|
20
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
21
|
+
* --------------------------------------------------------------------------
|
|
22
|
+
*/
|
|
23
|
+
var MILLISECONDS_MULTIPLIER = 1000;
|
|
24
|
+
var TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
|
|
25
|
+
|
|
26
|
+
var toType = function toType(obj) {
|
|
27
|
+
if (obj === null || obj === undefined) {
|
|
28
|
+
return "" + obj;
|
|
22
29
|
}
|
|
23
|
-
}
|
|
24
30
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
28
|
-
return Constructor;
|
|
29
|
-
}
|
|
31
|
+
return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
|
|
32
|
+
};
|
|
30
33
|
|
|
31
|
-
function
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
writable: true
|
|
38
|
-
});
|
|
39
|
-
} else {
|
|
40
|
-
obj[key] = value;
|
|
34
|
+
var getSelector = function getSelector(element) {
|
|
35
|
+
var selector = element.getAttribute('data-target');
|
|
36
|
+
|
|
37
|
+
if (!selector || selector === '#') {
|
|
38
|
+
var hrefAttr = element.getAttribute('href');
|
|
39
|
+
selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
|
|
41
40
|
}
|
|
42
41
|
|
|
43
|
-
return
|
|
44
|
-
}
|
|
42
|
+
return selector;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
var getElementFromSelector = function getElementFromSelector(element) {
|
|
46
|
+
var selector = getSelector(element);
|
|
47
|
+
return selector ? document.querySelector(selector) : null;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
var getTransitionDurationFromElement = function getTransitionDurationFromElement(element) {
|
|
51
|
+
if (!element) {
|
|
52
|
+
return 0;
|
|
53
|
+
} // Get transition-duration of the element
|
|
45
54
|
|
|
46
|
-
function _objectSpread(target) {
|
|
47
|
-
for (var i = 1; i < arguments.length; i++) {
|
|
48
|
-
var source = arguments[i] != null ? arguments[i] : {};
|
|
49
|
-
var ownKeys = Object.keys(source);
|
|
50
55
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
56
|
+
var _window$getComputedSt = window.getComputedStyle(element),
|
|
57
|
+
transitionDuration = _window$getComputedSt.transitionDuration,
|
|
58
|
+
transitionDelay = _window$getComputedSt.transitionDelay;
|
|
59
|
+
|
|
60
|
+
var floatTransitionDuration = parseFloat(transitionDuration);
|
|
61
|
+
var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
|
|
62
|
+
|
|
63
|
+
if (!floatTransitionDuration && !floatTransitionDelay) {
|
|
64
|
+
return 0;
|
|
65
|
+
} // If multiple durations are defined, take the first
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
transitionDuration = transitionDuration.split(',')[0];
|
|
69
|
+
transitionDelay = transitionDelay.split(',')[0];
|
|
70
|
+
return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
var triggerTransitionEnd = function triggerTransitionEnd(element) {
|
|
74
|
+
element.dispatchEvent(new Event(TRANSITION_END));
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
var isElement = function isElement(obj) {
|
|
78
|
+
return (obj[0] || obj).nodeType;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
var emulateTransitionEnd = function emulateTransitionEnd(element, duration) {
|
|
82
|
+
var called = false;
|
|
83
|
+
var durationPadding = 5;
|
|
84
|
+
var emulatedDuration = duration + durationPadding;
|
|
85
|
+
|
|
86
|
+
function listener() {
|
|
87
|
+
called = true;
|
|
88
|
+
element.removeEventListener(TRANSITION_END, listener);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
element.addEventListener(TRANSITION_END, listener);
|
|
92
|
+
setTimeout(function () {
|
|
93
|
+
if (!called) {
|
|
94
|
+
triggerTransitionEnd(element);
|
|
55
95
|
}
|
|
96
|
+
}, emulatedDuration);
|
|
97
|
+
};
|
|
56
98
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
99
|
+
var typeCheckConfig = function typeCheckConfig(componentName, config, configTypes) {
|
|
100
|
+
Object.keys(configTypes).forEach(function (property) {
|
|
101
|
+
var expectedTypes = configTypes[property];
|
|
102
|
+
var value = config[property];
|
|
103
|
+
var valueType = value && isElement(value) ? 'element' : toType(value);
|
|
104
|
+
|
|
105
|
+
if (!new RegExp(expectedTypes).test(valueType)) {
|
|
106
|
+
throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
var isVisible = function isVisible(element) {
|
|
112
|
+
if (!element) {
|
|
113
|
+
return false;
|
|
60
114
|
}
|
|
61
115
|
|
|
62
|
-
|
|
63
|
-
|
|
116
|
+
if (element.style && element.parentNode && element.parentNode.style) {
|
|
117
|
+
var elementStyle = getComputedStyle(element);
|
|
118
|
+
var parentNodeStyle = getComputedStyle(element.parentNode);
|
|
119
|
+
return elementStyle.display !== 'none' && parentNodeStyle.display !== 'none' && elementStyle.visibility !== 'hidden';
|
|
120
|
+
}
|
|
64
121
|
|
|
122
|
+
return false;
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
var reflow = function reflow(element) {
|
|
126
|
+
return element.offsetHeight;
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
var getjQuery = function getjQuery() {
|
|
130
|
+
var _window = window,
|
|
131
|
+
jQuery = _window.jQuery;
|
|
132
|
+
|
|
133
|
+
if (jQuery && !document.body.hasAttribute('data-no-jquery')) {
|
|
134
|
+
return jQuery;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
return null;
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
141
|
+
|
|
142
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
143
|
+
|
|
144
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
145
|
+
|
|
146
|
+
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
147
|
+
|
|
148
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
65
149
|
/**
|
|
66
150
|
* ------------------------------------------------------------------------
|
|
67
151
|
* Constants
|
|
@@ -69,13 +153,11 @@
|
|
|
69
153
|
*/
|
|
70
154
|
|
|
71
155
|
var NAME = 'modal';
|
|
72
|
-
var VERSION = '
|
|
156
|
+
var VERSION = '5.0.0-alpha1';
|
|
73
157
|
var DATA_KEY = 'bs.modal';
|
|
74
158
|
var EVENT_KEY = "." + DATA_KEY;
|
|
75
159
|
var DATA_API_KEY = '.data-api';
|
|
76
|
-
var
|
|
77
|
-
var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
|
|
78
|
-
|
|
160
|
+
var ESCAPE_KEY = 'Escape';
|
|
79
161
|
var Default = {
|
|
80
162
|
backdrop: true,
|
|
81
163
|
keyboard: true,
|
|
@@ -88,55 +170,48 @@
|
|
|
88
170
|
focus: 'boolean',
|
|
89
171
|
show: 'boolean'
|
|
90
172
|
};
|
|
91
|
-
var
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
var
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
var
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
* ------------------------------------------------------------------------
|
|
121
|
-
* Class Definition
|
|
122
|
-
* ------------------------------------------------------------------------
|
|
123
|
-
*/
|
|
124
|
-
|
|
125
|
-
};
|
|
173
|
+
var EVENT_HIDE = "hide" + EVENT_KEY;
|
|
174
|
+
var EVENT_HIDE_PREVENTED = "hidePrevented" + EVENT_KEY;
|
|
175
|
+
var EVENT_HIDDEN = "hidden" + EVENT_KEY;
|
|
176
|
+
var EVENT_SHOW = "show" + EVENT_KEY;
|
|
177
|
+
var EVENT_SHOWN = "shown" + EVENT_KEY;
|
|
178
|
+
var EVENT_FOCUSIN = "focusin" + EVENT_KEY;
|
|
179
|
+
var EVENT_RESIZE = "resize" + EVENT_KEY;
|
|
180
|
+
var EVENT_CLICK_DISMISS = "click.dismiss" + EVENT_KEY;
|
|
181
|
+
var EVENT_KEYDOWN_DISMISS = "keydown.dismiss" + EVENT_KEY;
|
|
182
|
+
var EVENT_MOUSEUP_DISMISS = "mouseup.dismiss" + EVENT_KEY;
|
|
183
|
+
var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss" + EVENT_KEY;
|
|
184
|
+
var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
|
|
185
|
+
var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';
|
|
186
|
+
var CLASS_NAME_BACKDROP = 'modal-backdrop';
|
|
187
|
+
var CLASS_NAME_OPEN = 'modal-open';
|
|
188
|
+
var CLASS_NAME_FADE = 'fade';
|
|
189
|
+
var CLASS_NAME_SHOW = 'show';
|
|
190
|
+
var CLASS_NAME_STATIC = 'modal-static';
|
|
191
|
+
var SELECTOR_DIALOG = '.modal-dialog';
|
|
192
|
+
var SELECTOR_MODAL_BODY = '.modal-body';
|
|
193
|
+
var SELECTOR_DATA_TOGGLE = '[data-toggle="modal"]';
|
|
194
|
+
var SELECTOR_DATA_DISMISS = '[data-dismiss="modal"]';
|
|
195
|
+
var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
|
|
196
|
+
var SELECTOR_STICKY_CONTENT = '.sticky-top';
|
|
197
|
+
/**
|
|
198
|
+
* ------------------------------------------------------------------------
|
|
199
|
+
* Class Definition
|
|
200
|
+
* ------------------------------------------------------------------------
|
|
201
|
+
*/
|
|
126
202
|
|
|
127
|
-
var Modal =
|
|
128
|
-
/*#__PURE__*/
|
|
129
|
-
function () {
|
|
203
|
+
var Modal = /*#__PURE__*/function () {
|
|
130
204
|
function Modal(element, config) {
|
|
131
205
|
this._config = this._getConfig(config);
|
|
132
206
|
this._element = element;
|
|
133
|
-
this._dialog =
|
|
207
|
+
this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, element);
|
|
134
208
|
this._backdrop = null;
|
|
135
209
|
this._isShown = false;
|
|
136
210
|
this._isBodyOverflowing = false;
|
|
137
211
|
this._ignoreBackdropClick = false;
|
|
138
212
|
this._isTransitioning = false;
|
|
139
213
|
this._scrollbarWidth = 0;
|
|
214
|
+
Data.setData(element, DATA_KEY, this);
|
|
140
215
|
} // Getters
|
|
141
216
|
|
|
142
217
|
|
|
@@ -154,16 +229,15 @@
|
|
|
154
229
|
return;
|
|
155
230
|
}
|
|
156
231
|
|
|
157
|
-
if (
|
|
232
|
+
if (this._element.classList.contains(CLASS_NAME_FADE)) {
|
|
158
233
|
this._isTransitioning = true;
|
|
159
234
|
}
|
|
160
235
|
|
|
161
|
-
var showEvent =
|
|
236
|
+
var showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {
|
|
162
237
|
relatedTarget: relatedTarget
|
|
163
238
|
});
|
|
164
|
-
$(this._element).trigger(showEvent);
|
|
165
239
|
|
|
166
|
-
if (this._isShown || showEvent.
|
|
240
|
+
if (this._isShown || showEvent.defaultPrevented) {
|
|
167
241
|
return;
|
|
168
242
|
}
|
|
169
243
|
|
|
@@ -179,12 +253,12 @@
|
|
|
179
253
|
|
|
180
254
|
this._setResizeEvent();
|
|
181
255
|
|
|
182
|
-
|
|
256
|
+
EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) {
|
|
183
257
|
return _this.hide(event);
|
|
184
258
|
});
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
if (
|
|
259
|
+
EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, function () {
|
|
260
|
+
EventHandler.one(_this._element, EVENT_MOUSEUP_DISMISS, function (event) {
|
|
261
|
+
if (event.target === _this._element) {
|
|
188
262
|
_this._ignoreBackdropClick = true;
|
|
189
263
|
}
|
|
190
264
|
});
|
|
@@ -206,15 +280,15 @@
|
|
|
206
280
|
return;
|
|
207
281
|
}
|
|
208
282
|
|
|
209
|
-
var hideEvent =
|
|
210
|
-
$(this._element).trigger(hideEvent);
|
|
283
|
+
var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);
|
|
211
284
|
|
|
212
|
-
if (
|
|
285
|
+
if (hideEvent.defaultPrevented) {
|
|
213
286
|
return;
|
|
214
287
|
}
|
|
215
288
|
|
|
216
289
|
this._isShown = false;
|
|
217
|
-
|
|
290
|
+
|
|
291
|
+
var transition = this._element.classList.contains(CLASS_NAME_FADE);
|
|
218
292
|
|
|
219
293
|
if (transition) {
|
|
220
294
|
this._isTransitioning = true;
|
|
@@ -224,16 +298,19 @@
|
|
|
224
298
|
|
|
225
299
|
this._setResizeEvent();
|
|
226
300
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
301
|
+
EventHandler.off(document, EVENT_FOCUSIN);
|
|
302
|
+
|
|
303
|
+
this._element.classList.remove(CLASS_NAME_SHOW);
|
|
304
|
+
|
|
305
|
+
EventHandler.off(this._element, EVENT_CLICK_DISMISS);
|
|
306
|
+
EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS);
|
|
231
307
|
|
|
232
308
|
if (transition) {
|
|
233
|
-
var transitionDuration =
|
|
234
|
-
|
|
309
|
+
var transitionDuration = getTransitionDurationFromElement(this._element);
|
|
310
|
+
EventHandler.one(this._element, TRANSITION_END, function (event) {
|
|
235
311
|
return _this2._hideModal(event);
|
|
236
|
-
})
|
|
312
|
+
});
|
|
313
|
+
emulateTransitionEnd(this._element, transitionDuration);
|
|
237
314
|
} else {
|
|
238
315
|
this._hideModal();
|
|
239
316
|
}
|
|
@@ -241,16 +318,16 @@
|
|
|
241
318
|
|
|
242
319
|
_proto.dispose = function dispose() {
|
|
243
320
|
[window, this._element, this._dialog].forEach(function (htmlElement) {
|
|
244
|
-
return
|
|
321
|
+
return EventHandler.off(htmlElement, EVENT_KEY);
|
|
245
322
|
});
|
|
246
323
|
/**
|
|
247
|
-
* `document` has 2 events `
|
|
324
|
+
* `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`
|
|
248
325
|
* Do not move `document` in `htmlElements` array
|
|
249
|
-
* It will remove `
|
|
326
|
+
* It will remove `EVENT_CLICK_DATA_API` event that should remain
|
|
250
327
|
*/
|
|
251
328
|
|
|
252
|
-
|
|
253
|
-
|
|
329
|
+
EventHandler.off(document, EVENT_FOCUSIN);
|
|
330
|
+
Data.removeData(this._element, DATA_KEY);
|
|
254
331
|
this._config = null;
|
|
255
332
|
this._element = null;
|
|
256
333
|
this._dialog = null;
|
|
@@ -268,15 +345,17 @@
|
|
|
268
345
|
;
|
|
269
346
|
|
|
270
347
|
_proto._getConfig = function _getConfig(config) {
|
|
271
|
-
config = _objectSpread({}, Default, config);
|
|
272
|
-
|
|
348
|
+
config = _objectSpread(_objectSpread({}, Default), config);
|
|
349
|
+
typeCheckConfig(NAME, config, DefaultType);
|
|
273
350
|
return config;
|
|
274
351
|
};
|
|
275
352
|
|
|
276
353
|
_proto._showElement = function _showElement(relatedTarget) {
|
|
277
354
|
var _this3 = this;
|
|
278
355
|
|
|
279
|
-
var transition =
|
|
356
|
+
var transition = this._element.classList.contains(CLASS_NAME_FADE);
|
|
357
|
+
|
|
358
|
+
var modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);
|
|
280
359
|
|
|
281
360
|
if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
|
|
282
361
|
// Don't move modal's DOM position
|
|
@@ -289,38 +368,39 @@
|
|
|
289
368
|
|
|
290
369
|
this._element.setAttribute('aria-modal', true);
|
|
291
370
|
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
371
|
+
this._element.setAttribute('role', 'dialog');
|
|
372
|
+
|
|
373
|
+
this._element.scrollTop = 0;
|
|
374
|
+
|
|
375
|
+
if (modalBody) {
|
|
376
|
+
modalBody.scrollTop = 0;
|
|
296
377
|
}
|
|
297
378
|
|
|
298
379
|
if (transition) {
|
|
299
|
-
|
|
380
|
+
reflow(this._element);
|
|
300
381
|
}
|
|
301
382
|
|
|
302
|
-
|
|
383
|
+
this._element.classList.add(CLASS_NAME_SHOW);
|
|
303
384
|
|
|
304
385
|
if (this._config.focus) {
|
|
305
386
|
this._enforceFocus();
|
|
306
387
|
}
|
|
307
388
|
|
|
308
|
-
var shownEvent = $.Event(Event.SHOWN, {
|
|
309
|
-
relatedTarget: relatedTarget
|
|
310
|
-
});
|
|
311
|
-
|
|
312
389
|
var transitionComplete = function transitionComplete() {
|
|
313
390
|
if (_this3._config.focus) {
|
|
314
391
|
_this3._element.focus();
|
|
315
392
|
}
|
|
316
393
|
|
|
317
394
|
_this3._isTransitioning = false;
|
|
318
|
-
|
|
395
|
+
EventHandler.trigger(_this3._element, EVENT_SHOWN, {
|
|
396
|
+
relatedTarget: relatedTarget
|
|
397
|
+
});
|
|
319
398
|
};
|
|
320
399
|
|
|
321
400
|
if (transition) {
|
|
322
|
-
var transitionDuration =
|
|
323
|
-
|
|
401
|
+
var transitionDuration = getTransitionDurationFromElement(this._dialog);
|
|
402
|
+
EventHandler.one(this._dialog, TRANSITION_END, transitionComplete);
|
|
403
|
+
emulateTransitionEnd(this._dialog, transitionDuration);
|
|
324
404
|
} else {
|
|
325
405
|
transitionComplete();
|
|
326
406
|
}
|
|
@@ -329,9 +409,10 @@
|
|
|
329
409
|
_proto._enforceFocus = function _enforceFocus() {
|
|
330
410
|
var _this4 = this;
|
|
331
411
|
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
412
|
+
EventHandler.off(document, EVENT_FOCUSIN); // guard against infinite focus loop
|
|
413
|
+
|
|
414
|
+
EventHandler.on(document, EVENT_FOCUSIN, function (event) {
|
|
415
|
+
if (document !== event.target && _this4._element !== event.target && !_this4._element.contains(event.target)) {
|
|
335
416
|
_this4._element.focus();
|
|
336
417
|
}
|
|
337
418
|
});
|
|
@@ -340,16 +421,18 @@
|
|
|
340
421
|
_proto._setEscapeEvent = function _setEscapeEvent() {
|
|
341
422
|
var _this5 = this;
|
|
342
423
|
|
|
343
|
-
if (this._isShown
|
|
344
|
-
|
|
345
|
-
if (event.
|
|
424
|
+
if (this._isShown) {
|
|
425
|
+
EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, function (event) {
|
|
426
|
+
if (_this5._config.keyboard && event.key === ESCAPE_KEY) {
|
|
346
427
|
event.preventDefault();
|
|
347
428
|
|
|
348
429
|
_this5.hide();
|
|
430
|
+
} else if (!_this5._config.keyboard && event.key === ESCAPE_KEY) {
|
|
431
|
+
_this5._triggerBackdropTransition();
|
|
349
432
|
}
|
|
350
433
|
});
|
|
351
|
-
} else
|
|
352
|
-
|
|
434
|
+
} else {
|
|
435
|
+
EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS);
|
|
353
436
|
}
|
|
354
437
|
};
|
|
355
438
|
|
|
@@ -357,11 +440,11 @@
|
|
|
357
440
|
var _this6 = this;
|
|
358
441
|
|
|
359
442
|
if (this._isShown) {
|
|
360
|
-
|
|
361
|
-
return _this6.
|
|
443
|
+
EventHandler.on(window, EVENT_RESIZE, function () {
|
|
444
|
+
return _this6._adjustDialog();
|
|
362
445
|
});
|
|
363
446
|
} else {
|
|
364
|
-
|
|
447
|
+
EventHandler.off(window, EVENT_RESIZE);
|
|
365
448
|
}
|
|
366
449
|
};
|
|
367
450
|
|
|
@@ -374,41 +457,42 @@
|
|
|
374
457
|
|
|
375
458
|
this._element.removeAttribute('aria-modal');
|
|
376
459
|
|
|
460
|
+
this._element.removeAttribute('role');
|
|
461
|
+
|
|
377
462
|
this._isTransitioning = false;
|
|
378
463
|
|
|
379
464
|
this._showBackdrop(function () {
|
|
380
|
-
|
|
465
|
+
document.body.classList.remove(CLASS_NAME_OPEN);
|
|
381
466
|
|
|
382
467
|
_this7._resetAdjustments();
|
|
383
468
|
|
|
384
469
|
_this7._resetScrollbar();
|
|
385
470
|
|
|
386
|
-
|
|
471
|
+
EventHandler.trigger(_this7._element, EVENT_HIDDEN);
|
|
387
472
|
});
|
|
388
473
|
};
|
|
389
474
|
|
|
390
475
|
_proto._removeBackdrop = function _removeBackdrop() {
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
}
|
|
476
|
+
this._backdrop.parentNode.removeChild(this._backdrop);
|
|
477
|
+
|
|
478
|
+
this._backdrop = null;
|
|
395
479
|
};
|
|
396
480
|
|
|
397
481
|
_proto._showBackdrop = function _showBackdrop(callback) {
|
|
398
482
|
var _this8 = this;
|
|
399
483
|
|
|
400
|
-
var animate =
|
|
484
|
+
var animate = this._element.classList.contains(CLASS_NAME_FADE) ? CLASS_NAME_FADE : '';
|
|
401
485
|
|
|
402
486
|
if (this._isShown && this._config.backdrop) {
|
|
403
487
|
this._backdrop = document.createElement('div');
|
|
404
|
-
this._backdrop.className =
|
|
488
|
+
this._backdrop.className = CLASS_NAME_BACKDROP;
|
|
405
489
|
|
|
406
490
|
if (animate) {
|
|
407
491
|
this._backdrop.classList.add(animate);
|
|
408
492
|
}
|
|
409
493
|
|
|
410
|
-
|
|
411
|
-
|
|
494
|
+
document.body.appendChild(this._backdrop);
|
|
495
|
+
EventHandler.on(this._element, EVENT_CLICK_DISMISS, function (event) {
|
|
412
496
|
if (_this8._ignoreBackdropClick) {
|
|
413
497
|
_this8._ignoreBackdropClick = false;
|
|
414
498
|
return;
|
|
@@ -418,54 +502,69 @@
|
|
|
418
502
|
return;
|
|
419
503
|
}
|
|
420
504
|
|
|
421
|
-
|
|
422
|
-
_this8._element.focus();
|
|
423
|
-
} else {
|
|
424
|
-
_this8.hide();
|
|
425
|
-
}
|
|
505
|
+
_this8._triggerBackdropTransition();
|
|
426
506
|
});
|
|
427
507
|
|
|
428
508
|
if (animate) {
|
|
429
|
-
|
|
509
|
+
reflow(this._backdrop);
|
|
430
510
|
}
|
|
431
511
|
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
if (!callback) {
|
|
435
|
-
return;
|
|
436
|
-
}
|
|
512
|
+
this._backdrop.classList.add(CLASS_NAME_SHOW);
|
|
437
513
|
|
|
438
514
|
if (!animate) {
|
|
439
515
|
callback();
|
|
440
516
|
return;
|
|
441
517
|
}
|
|
442
518
|
|
|
443
|
-
var backdropTransitionDuration =
|
|
444
|
-
|
|
519
|
+
var backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop);
|
|
520
|
+
EventHandler.one(this._backdrop, TRANSITION_END, callback);
|
|
521
|
+
emulateTransitionEnd(this._backdrop, backdropTransitionDuration);
|
|
445
522
|
} else if (!this._isShown && this._backdrop) {
|
|
446
|
-
|
|
523
|
+
this._backdrop.classList.remove(CLASS_NAME_SHOW);
|
|
447
524
|
|
|
448
525
|
var callbackRemove = function callbackRemove() {
|
|
449
526
|
_this8._removeBackdrop();
|
|
450
527
|
|
|
451
|
-
|
|
452
|
-
callback();
|
|
453
|
-
}
|
|
528
|
+
callback();
|
|
454
529
|
};
|
|
455
530
|
|
|
456
|
-
if (
|
|
457
|
-
var _backdropTransitionDuration =
|
|
531
|
+
if (this._element.classList.contains(CLASS_NAME_FADE)) {
|
|
532
|
+
var _backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop);
|
|
458
533
|
|
|
459
|
-
|
|
534
|
+
EventHandler.one(this._backdrop, TRANSITION_END, callbackRemove);
|
|
535
|
+
emulateTransitionEnd(this._backdrop, _backdropTransitionDuration);
|
|
460
536
|
} else {
|
|
461
537
|
callbackRemove();
|
|
462
538
|
}
|
|
463
|
-
} else
|
|
539
|
+
} else {
|
|
464
540
|
callback();
|
|
465
541
|
}
|
|
542
|
+
};
|
|
543
|
+
|
|
544
|
+
_proto._triggerBackdropTransition = function _triggerBackdropTransition() {
|
|
545
|
+
var _this9 = this;
|
|
546
|
+
|
|
547
|
+
if (this._config.backdrop === 'static') {
|
|
548
|
+
var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
|
|
549
|
+
|
|
550
|
+
if (hideEvent.defaultPrevented) {
|
|
551
|
+
return;
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
this._element.classList.add(CLASS_NAME_STATIC);
|
|
555
|
+
|
|
556
|
+
var modalTransitionDuration = getTransitionDurationFromElement(this._element);
|
|
557
|
+
EventHandler.one(this._element, TRANSITION_END, function () {
|
|
558
|
+
_this9._element.classList.remove(CLASS_NAME_STATIC);
|
|
559
|
+
});
|
|
560
|
+
emulateTransitionEnd(this._element, modalTransitionDuration);
|
|
561
|
+
|
|
562
|
+
this._element.focus();
|
|
563
|
+
} else {
|
|
564
|
+
this.hide();
|
|
565
|
+
}
|
|
466
566
|
} // ----------------------------------------------------------------------
|
|
467
567
|
// the following methods are used to handle overflowing modals
|
|
468
|
-
// todo (fat): these should probably be refactored out of modal.js
|
|
469
568
|
// ----------------------------------------------------------------------
|
|
470
569
|
;
|
|
471
570
|
|
|
@@ -488,66 +587,74 @@
|
|
|
488
587
|
|
|
489
588
|
_proto._checkScrollbar = function _checkScrollbar() {
|
|
490
589
|
var rect = document.body.getBoundingClientRect();
|
|
491
|
-
this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;
|
|
590
|
+
this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;
|
|
492
591
|
this._scrollbarWidth = this._getScrollbarWidth();
|
|
493
592
|
};
|
|
494
593
|
|
|
495
594
|
_proto._setScrollbar = function _setScrollbar() {
|
|
496
|
-
var
|
|
595
|
+
var _this10 = this;
|
|
497
596
|
|
|
498
597
|
if (this._isBodyOverflowing) {
|
|
499
598
|
// Note: DOMNode.style.paddingRight returns the actual value or '' if not set
|
|
500
599
|
// while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
$(fixedContent).each(function (index, element) {
|
|
600
|
+
// Adjust fixed content padding
|
|
601
|
+
SelectorEngine.find(SELECTOR_FIXED_CONTENT).forEach(function (element) {
|
|
505
602
|
var actualPadding = element.style.paddingRight;
|
|
506
|
-
var calculatedPadding =
|
|
507
|
-
|
|
603
|
+
var calculatedPadding = window.getComputedStyle(element)['padding-right'];
|
|
604
|
+
Manipulator.setDataAttribute(element, 'padding-right', actualPadding);
|
|
605
|
+
element.style.paddingRight = parseFloat(calculatedPadding) + _this10._scrollbarWidth + "px";
|
|
508
606
|
}); // Adjust sticky content margin
|
|
509
607
|
|
|
510
|
-
|
|
608
|
+
SelectorEngine.find(SELECTOR_STICKY_CONTENT).forEach(function (element) {
|
|
511
609
|
var actualMargin = element.style.marginRight;
|
|
512
|
-
var calculatedMargin =
|
|
513
|
-
|
|
610
|
+
var calculatedMargin = window.getComputedStyle(element)['margin-right'];
|
|
611
|
+
Manipulator.setDataAttribute(element, 'margin-right', actualMargin);
|
|
612
|
+
element.style.marginRight = parseFloat(calculatedMargin) - _this10._scrollbarWidth + "px";
|
|
514
613
|
}); // Adjust body padding
|
|
515
614
|
|
|
516
615
|
var actualPadding = document.body.style.paddingRight;
|
|
517
|
-
var calculatedPadding =
|
|
518
|
-
|
|
616
|
+
var calculatedPadding = window.getComputedStyle(document.body)['padding-right'];
|
|
617
|
+
Manipulator.setDataAttribute(document.body, 'padding-right', actualPadding);
|
|
618
|
+
document.body.style.paddingRight = parseFloat(calculatedPadding) + this._scrollbarWidth + "px";
|
|
519
619
|
}
|
|
520
620
|
|
|
521
|
-
|
|
621
|
+
document.body.classList.add(CLASS_NAME_OPEN);
|
|
522
622
|
};
|
|
523
623
|
|
|
524
624
|
_proto._resetScrollbar = function _resetScrollbar() {
|
|
525
625
|
// Restore fixed content padding
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
var padding = $(element).data('padding-right');
|
|
529
|
-
$(element).removeData('padding-right');
|
|
530
|
-
element.style.paddingRight = padding ? padding : '';
|
|
531
|
-
}); // Restore sticky content
|
|
626
|
+
SelectorEngine.find(SELECTOR_FIXED_CONTENT).forEach(function (element) {
|
|
627
|
+
var padding = Manipulator.getDataAttribute(element, 'padding-right');
|
|
532
628
|
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
629
|
+
if (typeof padding !== 'undefined') {
|
|
630
|
+
Manipulator.removeDataAttribute(element, 'padding-right');
|
|
631
|
+
element.style.paddingRight = padding;
|
|
632
|
+
}
|
|
633
|
+
}); // Restore sticky content and navbar-toggler margin
|
|
634
|
+
|
|
635
|
+
SelectorEngine.find("" + SELECTOR_STICKY_CONTENT).forEach(function (element) {
|
|
636
|
+
var margin = Manipulator.getDataAttribute(element, 'margin-right');
|
|
536
637
|
|
|
537
638
|
if (typeof margin !== 'undefined') {
|
|
538
|
-
|
|
639
|
+
Manipulator.removeDataAttribute(element, 'margin-right');
|
|
640
|
+
element.style.marginRight = margin;
|
|
539
641
|
}
|
|
540
642
|
}); // Restore body padding
|
|
541
643
|
|
|
542
|
-
var padding =
|
|
543
|
-
|
|
544
|
-
|
|
644
|
+
var padding = Manipulator.getDataAttribute(document.body, 'padding-right');
|
|
645
|
+
|
|
646
|
+
if (typeof padding === 'undefined') {
|
|
647
|
+
document.body.style.paddingRight = '';
|
|
648
|
+
} else {
|
|
649
|
+
Manipulator.removeDataAttribute(document.body, 'padding-right');
|
|
650
|
+
document.body.style.paddingRight = padding;
|
|
651
|
+
}
|
|
545
652
|
};
|
|
546
653
|
|
|
547
654
|
_proto._getScrollbarWidth = function _getScrollbarWidth() {
|
|
548
655
|
// thx d.walsh
|
|
549
656
|
var scrollDiv = document.createElement('div');
|
|
550
|
-
scrollDiv.className =
|
|
657
|
+
scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;
|
|
551
658
|
document.body.appendChild(scrollDiv);
|
|
552
659
|
var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
|
|
553
660
|
document.body.removeChild(scrollDiv);
|
|
@@ -555,15 +662,14 @@
|
|
|
555
662
|
} // Static
|
|
556
663
|
;
|
|
557
664
|
|
|
558
|
-
Modal.
|
|
665
|
+
Modal.jQueryInterface = function jQueryInterface(config, relatedTarget) {
|
|
559
666
|
return this.each(function () {
|
|
560
|
-
var data =
|
|
667
|
+
var data = Data.getData(this, DATA_KEY);
|
|
561
668
|
|
|
562
|
-
var _config = _objectSpread({}, Default,
|
|
669
|
+
var _config = _objectSpread(_objectSpread(_objectSpread({}, Default), Manipulator.getDataAttributes(this)), typeof config === 'object' && config ? config : {});
|
|
563
670
|
|
|
564
671
|
if (!data) {
|
|
565
672
|
data = new Modal(this, _config);
|
|
566
|
-
$(this).data(DATA_KEY, data);
|
|
567
673
|
}
|
|
568
674
|
|
|
569
675
|
if (typeof config === 'string') {
|
|
@@ -578,6 +684,10 @@
|
|
|
578
684
|
});
|
|
579
685
|
};
|
|
580
686
|
|
|
687
|
+
Modal.getInstance = function getInstance(element) {
|
|
688
|
+
return Data.getData(element, DATA_KEY);
|
|
689
|
+
};
|
|
690
|
+
|
|
581
691
|
_createClass(Modal, null, [{
|
|
582
692
|
key: "VERSION",
|
|
583
693
|
get: function get() {
|
|
@@ -599,51 +709,58 @@
|
|
|
599
709
|
*/
|
|
600
710
|
|
|
601
711
|
|
|
602
|
-
|
|
603
|
-
var
|
|
604
|
-
|
|
605
|
-
var target;
|
|
606
|
-
var selector = Util.getSelectorFromElement(this);
|
|
607
|
-
|
|
608
|
-
if (selector) {
|
|
609
|
-
target = document.querySelector(selector);
|
|
610
|
-
}
|
|
712
|
+
EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
|
|
713
|
+
var _this11 = this;
|
|
611
714
|
|
|
612
|
-
var
|
|
715
|
+
var target = getElementFromSelector(this);
|
|
613
716
|
|
|
614
717
|
if (this.tagName === 'A' || this.tagName === 'AREA') {
|
|
615
718
|
event.preventDefault();
|
|
616
719
|
}
|
|
617
720
|
|
|
618
|
-
|
|
619
|
-
if (showEvent.
|
|
620
|
-
//
|
|
721
|
+
EventHandler.one(target, EVENT_SHOW, function (showEvent) {
|
|
722
|
+
if (showEvent.defaultPrevented) {
|
|
723
|
+
// only register focus restorer if modal will actually get shown
|
|
621
724
|
return;
|
|
622
725
|
}
|
|
623
726
|
|
|
624
|
-
|
|
625
|
-
if (
|
|
626
|
-
|
|
727
|
+
EventHandler.one(target, EVENT_HIDDEN, function () {
|
|
728
|
+
if (isVisible(_this11)) {
|
|
729
|
+
_this11.focus();
|
|
627
730
|
}
|
|
628
731
|
});
|
|
629
732
|
});
|
|
733
|
+
var data = Data.getData(target, DATA_KEY);
|
|
630
734
|
|
|
631
|
-
|
|
735
|
+
if (!data) {
|
|
736
|
+
var config = _objectSpread(_objectSpread({}, Manipulator.getDataAttributes(target)), Manipulator.getDataAttributes(this));
|
|
737
|
+
|
|
738
|
+
data = new Modal(target, config);
|
|
739
|
+
}
|
|
740
|
+
|
|
741
|
+
data.show(this);
|
|
632
742
|
});
|
|
743
|
+
var $ = getjQuery();
|
|
633
744
|
/**
|
|
634
745
|
* ------------------------------------------------------------------------
|
|
635
746
|
* jQuery
|
|
636
747
|
* ------------------------------------------------------------------------
|
|
748
|
+
* add .modal to jQuery only if jQuery is present
|
|
637
749
|
*/
|
|
638
750
|
|
|
639
|
-
|
|
640
|
-
$.fn[NAME].Constructor = Modal;
|
|
751
|
+
/* istanbul ignore if */
|
|
641
752
|
|
|
642
|
-
|
|
643
|
-
$.fn[NAME]
|
|
644
|
-
|
|
645
|
-
|
|
753
|
+
if ($) {
|
|
754
|
+
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
|
755
|
+
$.fn[NAME] = Modal.jQueryInterface;
|
|
756
|
+
$.fn[NAME].Constructor = Modal;
|
|
757
|
+
|
|
758
|
+
$.fn[NAME].noConflict = function () {
|
|
759
|
+
$.fn[NAME] = JQUERY_NO_CONFLICT;
|
|
760
|
+
return Modal.jQueryInterface;
|
|
761
|
+
};
|
|
762
|
+
}
|
|
646
763
|
|
|
647
764
|
return Modal;
|
|
648
765
|
|
|
649
|
-
}));
|
|
766
|
+
})));
|