bootstrap 4.6.2.1 → 5.3.5
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/.github/workflows/ci.yml +61 -0
- data/CHANGELOG.md +7 -2
- data/Gemfile +1 -0
- data/README.md +33 -15
- data/Rakefile +1 -2
- data/assets/javascripts/bootstrap/alert.js +50 -147
- data/assets/javascripts/bootstrap/base-component.js +83 -0
- data/assets/javascripts/bootstrap/button.js +40 -190
- data/assets/javascripts/bootstrap/carousel.js +282 -537
- data/assets/javascripts/bootstrap/collapse.js +166 -314
- data/assets/javascripts/bootstrap/dom/data.js +62 -0
- data/assets/javascripts/bootstrap/dom/event-handler.js +236 -0
- data/assets/javascripts/bootstrap/dom/manipulator.js +71 -0
- data/assets/javascripts/bootstrap/dom/selector-engine.js +103 -0
- data/assets/javascripts/bootstrap/dropdown.js +297 -455
- data/assets/javascripts/bootstrap/modal.js +223 -566
- data/assets/javascripts/bootstrap/offcanvas.js +245 -0
- data/assets/javascripts/bootstrap/popover.js +59 -208
- data/assets/javascripts/bootstrap/scrollspy.js +213 -276
- data/assets/javascripts/bootstrap/tab.js +222 -200
- data/assets/javascripts/bootstrap/toast.js +137 -206
- data/assets/javascripts/bootstrap/tooltip.js +403 -747
- data/assets/javascripts/bootstrap/util/backdrop.js +138 -0
- data/assets/javascripts/bootstrap/util/component-functions.js +41 -0
- data/assets/javascripts/bootstrap/util/config.js +67 -0
- data/assets/javascripts/bootstrap/util/focustrap.js +112 -0
- data/assets/javascripts/bootstrap/util/index.js +280 -0
- data/assets/javascripts/bootstrap/util/sanitizer.js +113 -0
- data/assets/javascripts/bootstrap/util/scrollbar.js +112 -0
- data/assets/javascripts/bootstrap/util/swipe.js +134 -0
- data/assets/javascripts/bootstrap/util/template-factory.js +150 -0
- 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 +21 -5
- data/assets/javascripts/bootstrap.js +3625 -3488
- data/assets/javascripts/bootstrap.min.js +3 -3
- data/assets/stylesheets/_bootstrap-grid.scss +53 -21
- data/assets/stylesheets/_bootstrap-reboot.scss +5 -7
- data/assets/stylesheets/_bootstrap-utilities.scss +19 -0
- data/assets/stylesheets/_bootstrap.scss +21 -13
- data/assets/stylesheets/bootstrap/_accordion.scss +153 -0
- data/assets/stylesheets/bootstrap/_alert.scss +32 -16
- data/assets/stylesheets/bootstrap/_badge.scss +15 -31
- data/assets/stylesheets/bootstrap/_breadcrumb.scss +22 -24
- data/assets/stylesheets/bootstrap/_button-group.scss +32 -48
- data/assets/stylesheets/bootstrap/_buttons.scss +145 -71
- data/assets/stylesheets/bootstrap/_card.scss +67 -115
- data/assets/stylesheets/bootstrap/_carousel.scss +63 -37
- data/assets/stylesheets/bootstrap/_close.scss +53 -27
- data/assets/stylesheets/bootstrap/_containers.scss +41 -0
- data/assets/stylesheets/bootstrap/_dropdown.scss +129 -71
- data/assets/stylesheets/bootstrap/_forms.scss +9 -347
- data/assets/stylesheets/bootstrap/_functions.scss +135 -23
- data/assets/stylesheets/bootstrap/_grid.scss +18 -52
- data/assets/stylesheets/bootstrap/_helpers.scss +12 -0
- data/assets/stylesheets/bootstrap/_list-group.scss +93 -48
- data/assets/stylesheets/bootstrap/_maps.scss +174 -0
- data/assets/stylesheets/bootstrap/_mixins.scss +10 -15
- data/assets/stylesheets/bootstrap/_modal.scss +112 -112
- data/assets/stylesheets/bootstrap/_nav.scss +100 -28
- data/assets/stylesheets/bootstrap/_navbar.scss +130 -173
- data/assets/stylesheets/bootstrap/_offcanvas.scss +147 -0
- data/assets/stylesheets/bootstrap/_pagination.scss +72 -37
- data/assets/stylesheets/bootstrap/_placeholders.scss +51 -0
- data/assets/stylesheets/bootstrap/_popover.scss +99 -73
- data/assets/stylesheets/bootstrap/_progress.scss +35 -14
- data/assets/stylesheets/bootstrap/_reboot.scss +319 -192
- data/assets/stylesheets/bootstrap/_root.scss +177 -9
- data/assets/stylesheets/bootstrap/_spinners.scss +43 -23
- data/assets/stylesheets/bootstrap/_tables.scss +101 -115
- data/assets/stylesheets/bootstrap/_toasts.scss +54 -27
- data/assets/stylesheets/bootstrap/_tooltip.scss +67 -63
- data/assets/stylesheets/bootstrap/_transitions.scss +3 -2
- data/assets/stylesheets/bootstrap/_type.scss +40 -59
- data/assets/stylesheets/bootstrap/_utilities.scss +806 -18
- data/assets/stylesheets/bootstrap/_variables-dark.scss +102 -0
- data/assets/stylesheets/bootstrap/_variables.scss +1210 -606
- data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +97 -0
- data/assets/stylesheets/bootstrap/forms/_form-check.scss +189 -0
- data/assets/stylesheets/bootstrap/forms/_form-control.scss +214 -0
- data/assets/stylesheets/bootstrap/forms/_form-range.scss +91 -0
- data/assets/stylesheets/bootstrap/forms/_form-select.scss +80 -0
- data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
- data/assets/stylesheets/bootstrap/forms/_input-group.scss +132 -0
- data/assets/stylesheets/bootstrap/forms/_labels.scss +36 -0
- data/assets/stylesheets/bootstrap/forms/_validation.scss +12 -0
- data/assets/stylesheets/bootstrap/helpers/_color-bg.scss +7 -0
- data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +30 -0
- data/assets/stylesheets/bootstrap/helpers/_focus-ring.scss +5 -0
- data/assets/stylesheets/bootstrap/helpers/_icon-link.scss +25 -0
- data/assets/stylesheets/bootstrap/helpers/_position.scss +36 -0
- data/assets/stylesheets/bootstrap/helpers/_ratio.scss +26 -0
- data/assets/stylesheets/bootstrap/helpers/_stacks.scss +15 -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/helpers/_vr.scss +8 -0
- data/assets/stylesheets/bootstrap/mixins/_alert.scss +11 -6
- data/assets/stylesheets/bootstrap/mixins/_backdrop.scss +14 -0
- data/assets/stylesheets/bootstrap/mixins/_banner.scss +7 -0
- 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 +20 -16
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +60 -100
- data/assets/stylesheets/bootstrap/mixins/_caret.scss +34 -27
- data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
- data/assets/stylesheets/bootstrap/mixins/_color-mode.scss +21 -0
- data/assets/stylesheets/bootstrap/mixins/_color-scheme.scss +7 -0
- data/assets/stylesheets/bootstrap/mixins/_container.scss +11 -0
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +64 -96
- data/assets/stylesheets/bootstrap/mixins/_gradients.scss +13 -11
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +118 -36
- data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -21
- data/assets/stylesheets/bootstrap/mixins/_list-group.scss +7 -2
- data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_pagination.scss +7 -19
- data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +2 -2
- data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +24 -0
- data/assets/stylesheets/bootstrap/mixins/_transition.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_utilities.scss +97 -0
- data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +33 -0
- data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
- data/assets/stylesheets/bootstrap/vendor/_rfs.scss +211 -91
- data/bootstrap.gemspec +6 -6
- data/lib/bootstrap/engine.rb +0 -1
- data/lib/bootstrap/version.rb +2 -2
- data/tasks/updater/js.rb +17 -5
- data/tasks/updater/network.rb +2 -2
- data/tasks/updater/scss.rb +2 -2
- data/tasks/updater.rb +2 -2
- data/test/dummy_rails/app/assets/javascripts/application.js +4 -3
- data/test/dummy_rails/app/views/layouts/application.html.erb +3 -1
- data/test/dummy_rails/app/views/pages/root.html +89 -0
- data/test/dummy_rails/config/application.rb +0 -5
- data/test/dummy_rails/public/favicon.ico +0 -0
- data/test/gemfiles/rails_4_2.gemfile +2 -1
- data/test/gemfiles/rails_5_0.gemfile +1 -2
- data/test/gemfiles/rails_5_1.gemfile +1 -2
- data/test/gemfiles/rails_5_2.gemfile +7 -0
- data/test/gemfiles/rails_6_0.gemfile +1 -1
- data/test/gemfiles/rails_6_1.gemfile +7 -0
- data/test/gemfiles/rails_7_0_dartsass.gemfile +0 -1
- data/test/gemfiles/rails_7_0_sassc.gemfile +0 -1
- data/test/rails_test.rb +0 -5
- data/test/test_helper.rb +3 -2
- metadata +92 -86
- data/.travis.yml +0 -31
- 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,661 +1,318 @@
|
|
1
1
|
/*!
|
2
|
-
* Bootstrap modal.js
|
3
|
-
* Copyright 2011-
|
2
|
+
* Bootstrap modal.js v5.3.5 (https://getbootstrap.com/)
|
3
|
+
* Copyright 2011-2025 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('./base-component.js'), require('./dom/event-handler.js'), require('./dom/selector-engine.js'), require('./util/backdrop.js'), require('./util/component-functions.js'), require('./util/focustrap.js'), require('./util/index.js'), require('./util/scrollbar.js')) :
|
8
|
+
typeof define === 'function' && define.amd ? define(['./base-component', './dom/event-handler', './dom/selector-engine', './util/backdrop', './util/component-functions', './util/focustrap', './util/index', './util/scrollbar'], factory) :
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Modal = factory(global.BaseComponent, global.EventHandler, global.SelectorEngine, global.Backdrop, global.ComponentFunctions, global.Focustrap, global.Index, global.Scrollbar));
|
10
|
+
})(this, (function (BaseComponent, EventHandler, SelectorEngine, Backdrop, componentFunctions_js, FocusTrap, index_js, ScrollBarHelper) { 'use strict';
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
for (var i = 0; i < props.length; i++) {
|
19
|
-
var descriptor = props[i];
|
20
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
21
|
-
descriptor.configurable = true;
|
22
|
-
if ("value" in descriptor) descriptor.writable = true;
|
23
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
24
|
-
}
|
25
|
-
}
|
26
|
-
|
27
|
-
function _createClass(Constructor, protoProps, staticProps) {
|
28
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
29
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
30
|
-
Object.defineProperty(Constructor, "prototype", {
|
31
|
-
writable: false
|
32
|
-
});
|
33
|
-
return Constructor;
|
34
|
-
}
|
35
|
-
|
36
|
-
function _extends() {
|
37
|
-
_extends = Object.assign ? Object.assign.bind() : function (target) {
|
38
|
-
for (var i = 1; i < arguments.length; i++) {
|
39
|
-
var source = arguments[i];
|
40
|
-
|
41
|
-
for (var key in source) {
|
42
|
-
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
43
|
-
target[key] = source[key];
|
44
|
-
}
|
45
|
-
}
|
46
|
-
}
|
12
|
+
/**
|
13
|
+
* --------------------------------------------------------------------------
|
14
|
+
* Bootstrap modal.js
|
15
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
16
|
+
* --------------------------------------------------------------------------
|
17
|
+
*/
|
47
18
|
|
48
|
-
return target;
|
49
|
-
};
|
50
|
-
return _extends.apply(this, arguments);
|
51
|
-
}
|
52
19
|
|
53
20
|
/**
|
54
21
|
* Constants
|
55
22
|
*/
|
56
23
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
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 = {
|
24
|
+
const NAME = 'modal';
|
25
|
+
const DATA_KEY = 'bs.modal';
|
26
|
+
const EVENT_KEY = `.${DATA_KEY}`;
|
27
|
+
const DATA_API_KEY = '.data-api';
|
28
|
+
const ESCAPE_KEY = 'Escape';
|
29
|
+
const EVENT_HIDE = `hide${EVENT_KEY}`;
|
30
|
+
const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`;
|
31
|
+
const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
|
32
|
+
const EVENT_SHOW = `show${EVENT_KEY}`;
|
33
|
+
const EVENT_SHOWN = `shown${EVENT_KEY}`;
|
34
|
+
const EVENT_RESIZE = `resize${EVENT_KEY}`;
|
35
|
+
const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`;
|
36
|
+
const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`;
|
37
|
+
const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`;
|
38
|
+
const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
|
39
|
+
const CLASS_NAME_OPEN = 'modal-open';
|
40
|
+
const CLASS_NAME_FADE = 'fade';
|
41
|
+
const CLASS_NAME_SHOW = 'show';
|
42
|
+
const CLASS_NAME_STATIC = 'modal-static';
|
43
|
+
const OPEN_SELECTOR = '.modal.show';
|
44
|
+
const SELECTOR_DIALOG = '.modal-dialog';
|
45
|
+
const SELECTOR_MODAL_BODY = '.modal-body';
|
46
|
+
const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="modal"]';
|
47
|
+
const Default = {
|
91
48
|
backdrop: true,
|
92
|
-
keyboard: true,
|
93
49
|
focus: true,
|
94
|
-
|
50
|
+
keyboard: true
|
95
51
|
};
|
96
|
-
|
52
|
+
const DefaultType = {
|
97
53
|
backdrop: '(boolean|string)',
|
98
|
-
keyboard: 'boolean',
|
99
54
|
focus: 'boolean',
|
100
|
-
|
55
|
+
keyboard: 'boolean'
|
101
56
|
};
|
57
|
+
|
102
58
|
/**
|
103
59
|
* Class definition
|
104
60
|
*/
|
105
61
|
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
this.
|
110
|
-
this.
|
111
|
-
this.
|
62
|
+
class Modal extends BaseComponent {
|
63
|
+
constructor(element, config) {
|
64
|
+
super(element, config);
|
65
|
+
this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);
|
66
|
+
this._backdrop = this._initializeBackDrop();
|
67
|
+
this._focustrap = this._initializeFocusTrap();
|
112
68
|
this._isShown = false;
|
113
|
-
this._isBodyOverflowing = false;
|
114
|
-
this._ignoreBackdropClick = false;
|
115
69
|
this._isTransitioning = false;
|
116
|
-
this.
|
117
|
-
|
118
|
-
|
70
|
+
this._scrollBar = new ScrollBarHelper();
|
71
|
+
this._addEventListeners();
|
72
|
+
}
|
119
73
|
|
120
|
-
|
74
|
+
// Getters
|
75
|
+
static get Default() {
|
76
|
+
return Default;
|
77
|
+
}
|
78
|
+
static get DefaultType() {
|
79
|
+
return DefaultType;
|
80
|
+
}
|
81
|
+
static get NAME() {
|
82
|
+
return NAME;
|
83
|
+
}
|
121
84
|
|
122
85
|
// Public
|
123
|
-
|
86
|
+
toggle(relatedTarget) {
|
124
87
|
return this._isShown ? this.hide() : this.show(relatedTarget);
|
125
|
-
}
|
126
|
-
|
127
|
-
_proto.show = function show(relatedTarget) {
|
128
|
-
var _this = this;
|
129
|
-
|
88
|
+
}
|
89
|
+
show(relatedTarget) {
|
130
90
|
if (this._isShown || this._isTransitioning) {
|
131
91
|
return;
|
132
92
|
}
|
133
|
-
|
134
|
-
|
135
|
-
relatedTarget: relatedTarget
|
93
|
+
const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {
|
94
|
+
relatedTarget
|
136
95
|
});
|
137
|
-
|
138
|
-
|
139
|
-
if (showEvent.isDefaultPrevented()) {
|
96
|
+
if (showEvent.defaultPrevented) {
|
140
97
|
return;
|
141
98
|
}
|
142
|
-
|
143
99
|
this._isShown = true;
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
}
|
148
|
-
|
149
|
-
this._checkScrollbar();
|
150
|
-
|
151
|
-
this._setScrollbar();
|
152
|
-
|
100
|
+
this._isTransitioning = true;
|
101
|
+
this._scrollBar.hide();
|
102
|
+
document.body.classList.add(CLASS_NAME_OPEN);
|
153
103
|
this._adjustDialog();
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
this._setResizeEvent();
|
158
|
-
|
159
|
-
$__default["default"](this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) {
|
160
|
-
return _this.hide(event);
|
161
|
-
});
|
162
|
-
$__default["default"](this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () {
|
163
|
-
$__default["default"](_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) {
|
164
|
-
if ($__default["default"](event.target).is(_this._element)) {
|
165
|
-
_this._ignoreBackdropClick = true;
|
166
|
-
}
|
167
|
-
});
|
168
|
-
});
|
169
|
-
|
170
|
-
this._showBackdrop(function () {
|
171
|
-
return _this._showElement(relatedTarget);
|
172
|
-
});
|
173
|
-
};
|
174
|
-
|
175
|
-
_proto.hide = function hide(event) {
|
176
|
-
var _this2 = this;
|
177
|
-
|
178
|
-
if (event) {
|
179
|
-
event.preventDefault();
|
180
|
-
}
|
181
|
-
|
104
|
+
this._backdrop.show(() => this._showElement(relatedTarget));
|
105
|
+
}
|
106
|
+
hide() {
|
182
107
|
if (!this._isShown || this._isTransitioning) {
|
183
108
|
return;
|
184
109
|
}
|
185
|
-
|
186
|
-
|
187
|
-
$__default["default"](this._element).trigger(hideEvent);
|
188
|
-
|
189
|
-
if (!this._isShown || hideEvent.isDefaultPrevented()) {
|
110
|
+
const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);
|
111
|
+
if (hideEvent.defaultPrevented) {
|
190
112
|
return;
|
191
113
|
}
|
192
|
-
|
193
114
|
this._isShown = false;
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
this.
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
$__default["default"](this._dialog).off(EVENT_MOUSEDOWN_DISMISS);
|
208
|
-
|
209
|
-
if (transition) {
|
210
|
-
var transitionDuration = Util__default["default"].getTransitionDurationFromElement(this._element);
|
211
|
-
$__default["default"](this._element).one(Util__default["default"].TRANSITION_END, function (event) {
|
212
|
-
return _this2._hideModal(event);
|
213
|
-
}).emulateTransitionEnd(transitionDuration);
|
214
|
-
} else {
|
215
|
-
this._hideModal();
|
216
|
-
}
|
217
|
-
};
|
218
|
-
|
219
|
-
_proto.dispose = function dispose() {
|
220
|
-
[window, this._element, this._dialog].forEach(function (htmlElement) {
|
221
|
-
return $__default["default"](htmlElement).off(EVENT_KEY);
|
222
|
-
});
|
223
|
-
/**
|
224
|
-
* `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`
|
225
|
-
* Do not move `document` in `htmlElements` array
|
226
|
-
* It will remove `EVENT_CLICK_DATA_API` event that should remain
|
227
|
-
*/
|
228
|
-
|
229
|
-
$__default["default"](document).off(EVENT_FOCUSIN);
|
230
|
-
$__default["default"].removeData(this._element, DATA_KEY);
|
231
|
-
this._config = null;
|
232
|
-
this._element = null;
|
233
|
-
this._dialog = null;
|
234
|
-
this._backdrop = null;
|
235
|
-
this._isShown = null;
|
236
|
-
this._isBodyOverflowing = null;
|
237
|
-
this._ignoreBackdropClick = null;
|
238
|
-
this._isTransitioning = null;
|
239
|
-
this._scrollbarWidth = null;
|
240
|
-
};
|
241
|
-
|
242
|
-
_proto.handleUpdate = function handleUpdate() {
|
115
|
+
this._isTransitioning = true;
|
116
|
+
this._focustrap.deactivate();
|
117
|
+
this._element.classList.remove(CLASS_NAME_SHOW);
|
118
|
+
this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());
|
119
|
+
}
|
120
|
+
dispose() {
|
121
|
+
EventHandler.off(window, EVENT_KEY);
|
122
|
+
EventHandler.off(this._dialog, EVENT_KEY);
|
123
|
+
this._backdrop.dispose();
|
124
|
+
this._focustrap.deactivate();
|
125
|
+
super.dispose();
|
126
|
+
}
|
127
|
+
handleUpdate() {
|
243
128
|
this._adjustDialog();
|
244
|
-
}
|
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
|
-
|
269
|
-
this._element.classList.add(CLASS_NAME_STATIC);
|
270
|
-
|
271
|
-
var modalTransitionDuration = Util__default["default"].getTransitionDurationFromElement(this._dialog);
|
272
|
-
$__default["default"](this._element).off(Util__default["default"].TRANSITION_END);
|
273
|
-
$__default["default"](this._element).one(Util__default["default"].TRANSITION_END, function () {
|
274
|
-
_this3._element.classList.remove(CLASS_NAME_STATIC);
|
275
|
-
|
276
|
-
if (!isModalOverflowing) {
|
277
|
-
$__default["default"](_this3._element).one(Util__default["default"].TRANSITION_END, function () {
|
278
|
-
_this3._element.style.overflowY = '';
|
279
|
-
}).emulateTransitionEnd(_this3._element, modalTransitionDuration);
|
280
|
-
}
|
281
|
-
}).emulateTransitionEnd(modalTransitionDuration);
|
282
|
-
|
283
|
-
this._element.focus();
|
284
|
-
};
|
285
|
-
|
286
|
-
_proto._showElement = function _showElement(relatedTarget) {
|
287
|
-
var _this4 = this;
|
288
|
-
|
289
|
-
var transition = $__default["default"](this._element).hasClass(CLASS_NAME_FADE);
|
290
|
-
var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null;
|
129
|
+
}
|
291
130
|
|
292
|
-
|
293
|
-
|
294
|
-
|
131
|
+
// Private
|
132
|
+
_initializeBackDrop() {
|
133
|
+
return new Backdrop({
|
134
|
+
isVisible: Boolean(this._config.backdrop),
|
135
|
+
// 'static' option will be translated to true, and booleans will keep their value,
|
136
|
+
isAnimated: this._isAnimated()
|
137
|
+
});
|
138
|
+
}
|
139
|
+
_initializeFocusTrap() {
|
140
|
+
return new FocusTrap({
|
141
|
+
trapElement: this._element
|
142
|
+
});
|
143
|
+
}
|
144
|
+
_showElement(relatedTarget) {
|
145
|
+
// try to append dynamic modal
|
146
|
+
if (!document.body.contains(this._element)) {
|
147
|
+
document.body.append(this._element);
|
295
148
|
}
|
296
|
-
|
297
149
|
this._element.style.display = 'block';
|
298
|
-
|
299
150
|
this._element.removeAttribute('aria-hidden');
|
300
|
-
|
301
151
|
this._element.setAttribute('aria-modal', true);
|
302
|
-
|
303
152
|
this._element.setAttribute('role', 'dialog');
|
304
|
-
|
305
|
-
|
153
|
+
this._element.scrollTop = 0;
|
154
|
+
const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);
|
155
|
+
if (modalBody) {
|
306
156
|
modalBody.scrollTop = 0;
|
307
|
-
} else {
|
308
|
-
this._element.scrollTop = 0;
|
309
157
|
}
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
$__default["default"](this._element).addClass(CLASS_NAME_SHOW);
|
316
|
-
|
317
|
-
if (this._config.focus) {
|
318
|
-
this._enforceFocus();
|
319
|
-
}
|
320
|
-
|
321
|
-
var shownEvent = $__default["default"].Event(EVENT_SHOWN, {
|
322
|
-
relatedTarget: relatedTarget
|
323
|
-
});
|
324
|
-
|
325
|
-
var transitionComplete = function transitionComplete() {
|
326
|
-
if (_this4._config.focus) {
|
327
|
-
_this4._element.focus();
|
158
|
+
index_js.reflow(this._element);
|
159
|
+
this._element.classList.add(CLASS_NAME_SHOW);
|
160
|
+
const transitionComplete = () => {
|
161
|
+
if (this._config.focus) {
|
162
|
+
this._focustrap.activate();
|
328
163
|
}
|
329
|
-
|
330
|
-
|
331
|
-
|
164
|
+
this._isTransitioning = false;
|
165
|
+
EventHandler.trigger(this._element, EVENT_SHOWN, {
|
166
|
+
relatedTarget
|
167
|
+
});
|
332
168
|
};
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
var _this5 = this;
|
344
|
-
|
345
|
-
$__default["default"](document).off(EVENT_FOCUSIN) // Guard against infinite focus loop
|
346
|
-
.on(EVENT_FOCUSIN, function (event) {
|
347
|
-
if (document !== event.target && _this5._element !== event.target && $__default["default"](_this5._element).has(event.target).length === 0) {
|
348
|
-
_this5._element.focus();
|
169
|
+
this._queueCallback(transitionComplete, this._dialog, this._isAnimated());
|
170
|
+
}
|
171
|
+
_addEventListeners() {
|
172
|
+
EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {
|
173
|
+
if (event.key !== ESCAPE_KEY) {
|
174
|
+
return;
|
175
|
+
}
|
176
|
+
if (this._config.keyboard) {
|
177
|
+
this.hide();
|
178
|
+
return;
|
349
179
|
}
|
180
|
+
this._triggerBackdropTransition();
|
350
181
|
});
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
182
|
+
EventHandler.on(window, EVENT_RESIZE, () => {
|
183
|
+
if (this._isShown && !this._isTransitioning) {
|
184
|
+
this._adjustDialog();
|
185
|
+
}
|
186
|
+
});
|
187
|
+
EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {
|
188
|
+
// a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks
|
189
|
+
EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {
|
190
|
+
if (this._element !== event.target || this._element !== event2.target) {
|
191
|
+
return;
|
192
|
+
}
|
193
|
+
if (this._config.backdrop === 'static') {
|
194
|
+
this._triggerBackdropTransition();
|
195
|
+
return;
|
196
|
+
}
|
197
|
+
if (this._config.backdrop) {
|
198
|
+
this.hide();
|
364
199
|
}
|
365
200
|
});
|
366
|
-
}
|
367
|
-
|
368
|
-
|
369
|
-
};
|
370
|
-
|
371
|
-
_proto._setResizeEvent = function _setResizeEvent() {
|
372
|
-
var _this7 = this;
|
373
|
-
|
374
|
-
if (this._isShown) {
|
375
|
-
$__default["default"](window).on(EVENT_RESIZE, function (event) {
|
376
|
-
return _this7.handleUpdate(event);
|
377
|
-
});
|
378
|
-
} else {
|
379
|
-
$__default["default"](window).off(EVENT_RESIZE);
|
380
|
-
}
|
381
|
-
};
|
382
|
-
|
383
|
-
_proto._hideModal = function _hideModal() {
|
384
|
-
var _this8 = this;
|
385
|
-
|
201
|
+
});
|
202
|
+
}
|
203
|
+
_hideModal() {
|
386
204
|
this._element.style.display = 'none';
|
387
|
-
|
388
205
|
this._element.setAttribute('aria-hidden', true);
|
389
|
-
|
390
206
|
this._element.removeAttribute('aria-modal');
|
391
|
-
|
392
207
|
this._element.removeAttribute('role');
|
393
|
-
|
394
208
|
this._isTransitioning = false;
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
_this8._resetScrollbar();
|
402
|
-
|
403
|
-
$__default["default"](_this8._element).trigger(EVENT_HIDDEN);
|
209
|
+
this._backdrop.hide(() => {
|
210
|
+
document.body.classList.remove(CLASS_NAME_OPEN);
|
211
|
+
this._resetAdjustments();
|
212
|
+
this._scrollBar.reset();
|
213
|
+
EventHandler.trigger(this._element, EVENT_HIDDEN);
|
404
214
|
});
|
405
|
-
}
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
215
|
+
}
|
216
|
+
_isAnimated() {
|
217
|
+
return this._element.classList.contains(CLASS_NAME_FADE);
|
218
|
+
}
|
219
|
+
_triggerBackdropTransition() {
|
220
|
+
const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
|
221
|
+
if (hideEvent.defaultPrevented) {
|
222
|
+
return;
|
411
223
|
}
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
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;
|
422
|
-
|
423
|
-
if (animate) {
|
424
|
-
this._backdrop.classList.add(animate);
|
425
|
-
}
|
426
|
-
|
427
|
-
$__default["default"](this._backdrop).appendTo(document.body);
|
428
|
-
$__default["default"](this._element).on(EVENT_CLICK_DISMISS, function (event) {
|
429
|
-
if (_this9._ignoreBackdropClick) {
|
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
|
-
});
|
444
|
-
|
445
|
-
if (animate) {
|
446
|
-
Util__default["default"].reflow(this._backdrop);
|
447
|
-
}
|
448
|
-
|
449
|
-
$__default["default"](this._backdrop).addClass(CLASS_NAME_SHOW);
|
450
|
-
|
451
|
-
if (!callback) {
|
452
|
-
return;
|
453
|
-
}
|
454
|
-
|
455
|
-
if (!animate) {
|
456
|
-
callback();
|
457
|
-
return;
|
458
|
-
}
|
459
|
-
|
460
|
-
var backdropTransitionDuration = Util__default["default"].getTransitionDurationFromElement(this._backdrop);
|
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);
|
464
|
-
|
465
|
-
var callbackRemove = function callbackRemove() {
|
466
|
-
_this9._removeBackdrop();
|
467
|
-
|
468
|
-
if (callback) {
|
469
|
-
callback();
|
470
|
-
}
|
471
|
-
};
|
472
|
-
|
473
|
-
if ($__default["default"](this._element).hasClass(CLASS_NAME_FADE)) {
|
474
|
-
var _backdropTransitionDuration = Util__default["default"].getTransitionDurationFromElement(this._backdrop);
|
475
|
-
|
476
|
-
$__default["default"](this._backdrop).one(Util__default["default"].TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);
|
477
|
-
} else {
|
478
|
-
callbackRemove();
|
479
|
-
}
|
480
|
-
} else if (callback) {
|
481
|
-
callback();
|
224
|
+
const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
|
225
|
+
const initialOverflowY = this._element.style.overflowY;
|
226
|
+
// return if the following background transition hasn't yet completed
|
227
|
+
if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {
|
228
|
+
return;
|
482
229
|
}
|
483
|
-
|
484
|
-
|
485
|
-
// todo (fat): these should probably be refactored out of modal.js
|
486
|
-
// ----------------------------------------------------------------------
|
487
|
-
;
|
488
|
-
|
489
|
-
_proto._adjustDialog = function _adjustDialog() {
|
490
|
-
var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
|
491
|
-
|
492
|
-
if (!this._isBodyOverflowing && isModalOverflowing) {
|
493
|
-
this._element.style.paddingLeft = this._scrollbarWidth + "px";
|
230
|
+
if (!isModalOverflowing) {
|
231
|
+
this._element.style.overflowY = 'hidden';
|
494
232
|
}
|
233
|
+
this._element.classList.add(CLASS_NAME_STATIC);
|
234
|
+
this._queueCallback(() => {
|
235
|
+
this._element.classList.remove(CLASS_NAME_STATIC);
|
236
|
+
this._queueCallback(() => {
|
237
|
+
this._element.style.overflowY = initialOverflowY;
|
238
|
+
}, this._dialog);
|
239
|
+
}, this._dialog);
|
240
|
+
this._element.focus();
|
241
|
+
}
|
495
242
|
|
496
|
-
|
497
|
-
|
243
|
+
/**
|
244
|
+
* The following methods are used to handle overflowing modals
|
245
|
+
*/
|
246
|
+
|
247
|
+
_adjustDialog() {
|
248
|
+
const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
|
249
|
+
const scrollbarWidth = this._scrollBar.getWidth();
|
250
|
+
const isBodyOverflowing = scrollbarWidth > 0;
|
251
|
+
if (isBodyOverflowing && !isModalOverflowing) {
|
252
|
+
const property = index_js.isRTL() ? 'paddingLeft' : 'paddingRight';
|
253
|
+
this._element.style[property] = `${scrollbarWidth}px`;
|
498
254
|
}
|
499
|
-
|
500
|
-
|
501
|
-
|
255
|
+
if (!isBodyOverflowing && isModalOverflowing) {
|
256
|
+
const property = index_js.isRTL() ? 'paddingRight' : 'paddingLeft';
|
257
|
+
this._element.style[property] = `${scrollbarWidth}px`;
|
258
|
+
}
|
259
|
+
}
|
260
|
+
_resetAdjustments() {
|
502
261
|
this._element.style.paddingLeft = '';
|
503
262
|
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
|
-
} // Static
|
573
|
-
;
|
263
|
+
}
|
574
264
|
|
575
|
-
|
265
|
+
// Static
|
266
|
+
static jQueryInterface(config, relatedTarget) {
|
576
267
|
return this.each(function () {
|
577
|
-
|
578
|
-
|
579
|
-
|
580
|
-
|
581
|
-
if (!data) {
|
582
|
-
data = new Modal(this, _config);
|
583
|
-
$__default["default"](this).data(DATA_KEY, data);
|
268
|
+
const data = Modal.getOrCreateInstance(this, config);
|
269
|
+
if (typeof config !== 'string') {
|
270
|
+
return;
|
584
271
|
}
|
585
|
-
|
586
|
-
|
587
|
-
if (typeof data[config] === 'undefined') {
|
588
|
-
throw new TypeError("No method named \"" + config + "\"");
|
589
|
-
}
|
590
|
-
|
591
|
-
data[config](relatedTarget);
|
592
|
-
} else if (_config.show) {
|
593
|
-
data.show(relatedTarget);
|
272
|
+
if (typeof data[config] === 'undefined') {
|
273
|
+
throw new TypeError(`No method named "${config}"`);
|
594
274
|
}
|
275
|
+
data[config](relatedTarget);
|
595
276
|
});
|
596
|
-
}
|
597
|
-
|
598
|
-
_createClass(Modal, null, [{
|
599
|
-
key: "VERSION",
|
600
|
-
get: function get() {
|
601
|
-
return VERSION;
|
602
|
-
}
|
603
|
-
}, {
|
604
|
-
key: "Default",
|
605
|
-
get: function get() {
|
606
|
-
return Default;
|
607
|
-
}
|
608
|
-
}]);
|
277
|
+
}
|
278
|
+
}
|
609
279
|
|
610
|
-
return Modal;
|
611
|
-
}();
|
612
280
|
/**
|
613
281
|
* Data API implementation
|
614
282
|
*/
|
615
283
|
|
616
|
-
|
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());
|
628
|
-
|
629
|
-
if (this.tagName === 'A' || this.tagName === 'AREA') {
|
284
|
+
EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
|
285
|
+
const target = SelectorEngine.getElementFromSelector(this);
|
286
|
+
if (['A', 'AREA'].includes(this.tagName)) {
|
630
287
|
event.preventDefault();
|
631
288
|
}
|
632
|
-
|
633
|
-
|
634
|
-
|
635
|
-
// Only register focus restorer if modal will actually get shown
|
289
|
+
EventHandler.one(target, EVENT_SHOW, showEvent => {
|
290
|
+
if (showEvent.defaultPrevented) {
|
291
|
+
// only register focus restorer if modal will actually get shown
|
636
292
|
return;
|
637
293
|
}
|
638
|
-
|
639
|
-
|
640
|
-
|
641
|
-
_this11.focus();
|
294
|
+
EventHandler.one(target, EVENT_HIDDEN, () => {
|
295
|
+
if (index_js.isVisible(this)) {
|
296
|
+
this.focus();
|
642
297
|
}
|
643
298
|
});
|
644
299
|
});
|
645
300
|
|
646
|
-
|
301
|
+
// avoid conflict when clicking modal toggler while another one is open
|
302
|
+
const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);
|
303
|
+
if (alreadyOpen) {
|
304
|
+
Modal.getInstance(alreadyOpen).hide();
|
305
|
+
}
|
306
|
+
const data = Modal.getOrCreateInstance(target);
|
307
|
+
data.toggle(this);
|
647
308
|
});
|
309
|
+
componentFunctions_js.enableDismissTrigger(Modal);
|
310
|
+
|
648
311
|
/**
|
649
312
|
* jQuery
|
650
313
|
*/
|
651
314
|
|
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
|
-
};
|
315
|
+
index_js.defineJQueryPlugin(Modal);
|
659
316
|
|
660
317
|
return Modal;
|
661
318
|
|