bootstrap 4.5.3 → 5.2.3
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 +55 -0
- data/README.md +28 -5
- data/assets/javascripts/bootstrap/alert.js +54 -133
- data/assets/javascripts/bootstrap/base-component.js +99 -0
- data/assets/javascripts/bootstrap/button.js +44 -183
- data/assets/javascripts/bootstrap/carousel.js +308 -450
- data/assets/javascripts/bootstrap/collapse.js +180 -243
- data/assets/javascripts/bootstrap/dom/data.js +66 -0
- data/assets/javascripts/bootstrap/dom/event-handler.js +283 -0
- data/assets/javascripts/bootstrap/dom/manipulator.js +84 -0
- data/assets/javascripts/bootstrap/dom/selector-engine.js +85 -0
- data/assets/javascripts/bootstrap/dropdown.js +320 -387
- data/assets/javascripts/bootstrap/modal.js +238 -478
- data/assets/javascripts/bootstrap/offcanvas.js +297 -0
- data/assets/javascripts/bootstrap/popover.js +58 -163
- data/assets/javascripts/bootstrap/scrollspy.js +223 -228
- data/assets/javascripts/bootstrap/tab.js +251 -166
- data/assets/javascripts/bootstrap/toast.js +147 -149
- data/assets/javascripts/bootstrap/tooltip.js +434 -646
- data/assets/javascripts/bootstrap/util/backdrop.js +165 -0
- data/assets/javascripts/bootstrap/util/component-functions.js +46 -0
- data/assets/javascripts/bootstrap/util/config.js +79 -0
- data/assets/javascripts/bootstrap/util/focustrap.js +129 -0
- data/assets/javascripts/bootstrap/util/index.js +350 -0
- data/assets/javascripts/bootstrap/util/sanitizer.js +122 -0
- data/assets/javascripts/bootstrap/util/scrollbar.js +138 -0
- data/assets/javascripts/bootstrap/util/swipe.js +155 -0
- data/assets/javascripts/bootstrap/util/template-factory.js +177 -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 +24 -8
- data/assets/javascripts/bootstrap.js +4037 -3206
- data/assets/javascripts/bootstrap.min.js +3 -3
- data/assets/stylesheets/_bootstrap-grid.scss +56 -21
- data/assets/stylesheets/_bootstrap-reboot.scss +4 -7
- data/assets/stylesheets/_bootstrap.scss +20 -13
- data/assets/stylesheets/bootstrap/_accordion.scss +149 -0
- data/assets/stylesheets/bootstrap/_alert.scss +33 -14
- data/assets/stylesheets/bootstrap/_badge.scss +15 -31
- data/assets/stylesheets/bootstrap/_breadcrumb.scss +23 -27
- data/assets/stylesheets/bootstrap/_button-group.scss +25 -46
- data/assets/stylesheets/bootstrap/_buttons.scss +136 -71
- data/assets/stylesheets/bootstrap/_card.scss +61 -113
- data/assets/stylesheets/bootstrap/_carousel.scss +64 -35
- data/assets/stylesheets/bootstrap/_close.scss +30 -30
- data/assets/stylesheets/bootstrap/_containers.scss +41 -0
- data/assets/stylesheets/bootstrap/_dropdown.scss +128 -71
- data/assets/stylesheets/bootstrap/_forms.scss +9 -347
- data/assets/stylesheets/bootstrap/_functions.scss +181 -23
- data/assets/stylesheets/bootstrap/_grid.scss +13 -53
- data/assets/stylesheets/bootstrap/_helpers.scss +10 -0
- data/assets/stylesheets/bootstrap/_images.scss +1 -1
- data/assets/stylesheets/bootstrap/_list-group.scss +72 -34
- data/assets/stylesheets/bootstrap/_maps.scss +54 -0
- data/assets/stylesheets/bootstrap/_mixins.scss +9 -13
- data/assets/stylesheets/bootstrap/_modal.scss +107 -110
- data/assets/stylesheets/bootstrap/_nav.scss +72 -23
- data/assets/stylesheets/bootstrap/_navbar.scss +127 -173
- data/assets/stylesheets/bootstrap/_offcanvas.scss +144 -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 +26 -14
- data/assets/stylesheets/bootstrap/_reboot.scss +326 -200
- data/assets/stylesheets/bootstrap/_root.scss +62 -9
- data/assets/stylesheets/bootstrap/_spinners.scss +51 -22
- data/assets/stylesheets/bootstrap/_tables.scss +94 -115
- data/assets/stylesheets/bootstrap/_toasts.scss +54 -27
- data/assets/stylesheets/bootstrap/_tooltip.scss +68 -63
- data/assets/stylesheets/bootstrap/_transitions.scss +8 -1
- data/assets/stylesheets/bootstrap/_type.scss +40 -59
- data/assets/stylesheets/bootstrap/_utilities.scss +647 -18
- data/assets/stylesheets/bootstrap/_variables.scss +1018 -526
- data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +18 -0
- data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +75 -0
- data/assets/stylesheets/bootstrap/forms/_form-check.scss +175 -0
- data/assets/stylesheets/bootstrap/forms/_form-control.scss +194 -0
- data/assets/stylesheets/bootstrap/forms/_form-range.scss +91 -0
- data/assets/stylesheets/bootstrap/forms/_form-select.scss +71 -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 +10 -0
- data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +12 -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 +8 -6
- data/assets/stylesheets/bootstrap/mixins/_backdrop.scss +14 -0
- data/assets/stylesheets/bootstrap/mixins/_banner.scss +9 -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 +10 -8
- data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
- data/assets/stylesheets/bootstrap/mixins/_color-scheme.scss +7 -0
- data/assets/stylesheets/bootstrap/mixins/_container.scss +11 -0
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +48 -74
- data/assets/stylesheets/bootstrap/mixins/_gradients.scss +13 -11
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +119 -37
- data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -21
- data/assets/stylesheets/bootstrap/mixins/_list-group.scss +5 -2
- data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_pagination.scss +7 -19
- data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +3 -3
- 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 +29 -0
- data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
- data/assets/stylesheets/bootstrap/vendor/_rfs.scss +278 -128
- data/bootstrap.gemspec +3 -5
- data/lib/bootstrap/version.rb +2 -2
- data/tasks/updater/js.rb +31 -7
- data/tasks/updater/network.rb +9 -3
- 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 -3
- data/test/gemfiles/rails_5_2.gemfile +8 -0
- data/test/gemfiles/rails_6_1.gemfile +7 -0
- data/test/gemfiles/rails_7_0.gemfile +7 -0
- data/test/test_helper.rb +3 -2
- metadata +70 -78
- data/.travis.yml +0 -31
- data/assets/javascripts/bootstrap/util.js +0 -192
- data/assets/stylesheets/bootstrap/_code.scss +0 -48
- data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -524
- data/assets/stylesheets/bootstrap/_input-group.scss +0 -192
- 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
- /data/assets/stylesheets/bootstrap/{utilities → helpers}/_clearfix.scss +0 -0
|
@@ -1,274 +1,182 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Bootstrap modal.js
|
|
3
|
-
* Copyright 2011-
|
|
2
|
+
* Bootstrap modal.js v5.2.3 (https://getbootstrap.com/)
|
|
3
|
+
* Copyright 2011-2022 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('./util/index'), require('./dom/event-handler'), require('./dom/selector-engine'), require('./util/scrollbar'), require('./base-component'), require('./util/backdrop'), require('./util/focustrap'), require('./util/component-functions')) :
|
|
8
|
+
typeof define === 'function' && define.amd ? define(['./util/index', './dom/event-handler', './dom/selector-engine', './util/scrollbar', './base-component', './util/backdrop', './util/focustrap', './util/component-functions'], factory) :
|
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Modal = factory(global.Index, global.EventHandler, global.SelectorEngine, global.Scrollbar, global.BaseComponent, global.Backdrop, global.Focustrap, global.ComponentFunctions));
|
|
10
|
+
})(this, (function (index, EventHandler, SelectorEngine, ScrollBarHelper, BaseComponent, Backdrop, FocusTrap, componentFunctions) { 'use strict';
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e };
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
|
|
15
|
+
const SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
|
|
16
|
+
const ScrollBarHelper__default = /*#__PURE__*/_interopDefaultLegacy(ScrollBarHelper);
|
|
17
|
+
const BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
|
|
18
|
+
const Backdrop__default = /*#__PURE__*/_interopDefaultLegacy(Backdrop);
|
|
19
|
+
const FocusTrap__default = /*#__PURE__*/_interopDefaultLegacy(FocusTrap);
|
|
16
20
|
|
|
17
|
-
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
18
|
-
|
|
19
|
-
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); } }
|
|
20
|
-
|
|
21
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
22
21
|
/**
|
|
23
|
-
*
|
|
22
|
+
* --------------------------------------------------------------------------
|
|
23
|
+
* Bootstrap (v5.2.3): modal.js
|
|
24
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
25
|
+
* --------------------------------------------------------------------------
|
|
26
|
+
*/
|
|
27
|
+
/**
|
|
24
28
|
* Constants
|
|
25
|
-
* ------------------------------------------------------------------------
|
|
26
29
|
*/
|
|
27
30
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
31
|
+
const NAME = 'modal';
|
|
32
|
+
const DATA_KEY = 'bs.modal';
|
|
33
|
+
const EVENT_KEY = `.${DATA_KEY}`;
|
|
34
|
+
const DATA_API_KEY = '.data-api';
|
|
35
|
+
const ESCAPE_KEY = 'Escape';
|
|
36
|
+
const EVENT_HIDE = `hide${EVENT_KEY}`;
|
|
37
|
+
const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`;
|
|
38
|
+
const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
|
|
39
|
+
const EVENT_SHOW = `show${EVENT_KEY}`;
|
|
40
|
+
const EVENT_SHOWN = `shown${EVENT_KEY}`;
|
|
41
|
+
const EVENT_RESIZE = `resize${EVENT_KEY}`;
|
|
42
|
+
const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`;
|
|
43
|
+
const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`;
|
|
44
|
+
const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`;
|
|
45
|
+
const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
|
|
46
|
+
const CLASS_NAME_OPEN = 'modal-open';
|
|
47
|
+
const CLASS_NAME_FADE = 'fade';
|
|
48
|
+
const CLASS_NAME_SHOW = 'show';
|
|
49
|
+
const CLASS_NAME_STATIC = 'modal-static';
|
|
50
|
+
const OPEN_SELECTOR = '.modal.show';
|
|
51
|
+
const SELECTOR_DIALOG = '.modal-dialog';
|
|
52
|
+
const SELECTOR_MODAL_BODY = '.modal-body';
|
|
53
|
+
const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="modal"]';
|
|
54
|
+
const Default = {
|
|
37
55
|
backdrop: true,
|
|
38
|
-
keyboard: true,
|
|
39
56
|
focus: true,
|
|
40
|
-
|
|
57
|
+
keyboard: true
|
|
41
58
|
};
|
|
42
|
-
|
|
59
|
+
const DefaultType = {
|
|
43
60
|
backdrop: '(boolean|string)',
|
|
44
|
-
keyboard: 'boolean',
|
|
45
61
|
focus: 'boolean',
|
|
46
|
-
|
|
62
|
+
keyboard: 'boolean'
|
|
47
63
|
};
|
|
48
|
-
var EVENT_HIDE = "hide" + EVENT_KEY;
|
|
49
|
-
var EVENT_HIDE_PREVENTED = "hidePrevented" + EVENT_KEY;
|
|
50
|
-
var EVENT_HIDDEN = "hidden" + EVENT_KEY;
|
|
51
|
-
var EVENT_SHOW = "show" + EVENT_KEY;
|
|
52
|
-
var EVENT_SHOWN = "shown" + EVENT_KEY;
|
|
53
|
-
var EVENT_FOCUSIN = "focusin" + EVENT_KEY;
|
|
54
|
-
var EVENT_RESIZE = "resize" + EVENT_KEY;
|
|
55
|
-
var EVENT_CLICK_DISMISS = "click.dismiss" + EVENT_KEY;
|
|
56
|
-
var EVENT_KEYDOWN_DISMISS = "keydown.dismiss" + EVENT_KEY;
|
|
57
|
-
var EVENT_MOUSEUP_DISMISS = "mouseup.dismiss" + EVENT_KEY;
|
|
58
|
-
var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss" + EVENT_KEY;
|
|
59
|
-
var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
|
|
60
|
-
var CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable';
|
|
61
|
-
var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';
|
|
62
|
-
var CLASS_NAME_BACKDROP = 'modal-backdrop';
|
|
63
|
-
var CLASS_NAME_OPEN = 'modal-open';
|
|
64
|
-
var CLASS_NAME_FADE = 'fade';
|
|
65
|
-
var CLASS_NAME_SHOW = 'show';
|
|
66
|
-
var CLASS_NAME_STATIC = 'modal-static';
|
|
67
|
-
var SELECTOR_DIALOG = '.modal-dialog';
|
|
68
|
-
var SELECTOR_MODAL_BODY = '.modal-body';
|
|
69
|
-
var SELECTOR_DATA_TOGGLE = '[data-toggle="modal"]';
|
|
70
|
-
var SELECTOR_DATA_DISMISS = '[data-dismiss="modal"]';
|
|
71
|
-
var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
|
|
72
|
-
var SELECTOR_STICKY_CONTENT = '.sticky-top';
|
|
73
64
|
/**
|
|
74
|
-
*
|
|
75
|
-
* Class Definition
|
|
76
|
-
* ------------------------------------------------------------------------
|
|
65
|
+
* Class definition
|
|
77
66
|
*/
|
|
78
67
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
this.
|
|
83
|
-
this.
|
|
84
|
-
this.
|
|
68
|
+
class Modal extends BaseComponent__default.default {
|
|
69
|
+
constructor(element, config) {
|
|
70
|
+
super(element, config);
|
|
71
|
+
this._dialog = SelectorEngine__default.default.findOne(SELECTOR_DIALOG, this._element);
|
|
72
|
+
this._backdrop = this._initializeBackDrop();
|
|
73
|
+
this._focustrap = this._initializeFocusTrap();
|
|
85
74
|
this._isShown = false;
|
|
86
|
-
this._isBodyOverflowing = false;
|
|
87
|
-
this._ignoreBackdropClick = false;
|
|
88
75
|
this._isTransitioning = false;
|
|
89
|
-
this.
|
|
76
|
+
this._scrollBar = new ScrollBarHelper__default.default();
|
|
77
|
+
|
|
78
|
+
this._addEventListeners();
|
|
90
79
|
} // Getters
|
|
91
80
|
|
|
92
81
|
|
|
93
|
-
|
|
82
|
+
static get Default() {
|
|
83
|
+
return Default;
|
|
84
|
+
}
|
|
94
85
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
};
|
|
86
|
+
static get DefaultType() {
|
|
87
|
+
return DefaultType;
|
|
88
|
+
}
|
|
99
89
|
|
|
100
|
-
|
|
101
|
-
|
|
90
|
+
static get NAME() {
|
|
91
|
+
return NAME;
|
|
92
|
+
} // Public
|
|
102
93
|
|
|
94
|
+
|
|
95
|
+
toggle(relatedTarget) {
|
|
96
|
+
return this._isShown ? this.hide() : this.show(relatedTarget);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
show(relatedTarget) {
|
|
103
100
|
if (this._isShown || this._isTransitioning) {
|
|
104
101
|
return;
|
|
105
102
|
}
|
|
106
103
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
var showEvent = $__default['default'].Event(EVENT_SHOW, {
|
|
112
|
-
relatedTarget: relatedTarget
|
|
104
|
+
const showEvent = EventHandler__default.default.trigger(this._element, EVENT_SHOW, {
|
|
105
|
+
relatedTarget
|
|
113
106
|
});
|
|
114
|
-
$__default['default'](this._element).trigger(showEvent);
|
|
115
107
|
|
|
116
|
-
if (
|
|
108
|
+
if (showEvent.defaultPrevented) {
|
|
117
109
|
return;
|
|
118
110
|
}
|
|
119
111
|
|
|
120
112
|
this._isShown = true;
|
|
113
|
+
this._isTransitioning = true;
|
|
121
114
|
|
|
122
|
-
this.
|
|
115
|
+
this._scrollBar.hide();
|
|
123
116
|
|
|
124
|
-
|
|
117
|
+
document.body.classList.add(CLASS_NAME_OPEN);
|
|
125
118
|
|
|
126
119
|
this._adjustDialog();
|
|
127
120
|
|
|
128
|
-
this.
|
|
129
|
-
|
|
130
|
-
this._setResizeEvent();
|
|
131
|
-
|
|
132
|
-
$__default['default'](this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) {
|
|
133
|
-
return _this.hide(event);
|
|
134
|
-
});
|
|
135
|
-
$__default['default'](this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () {
|
|
136
|
-
$__default['default'](_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) {
|
|
137
|
-
if ($__default['default'](event.target).is(_this._element)) {
|
|
138
|
-
_this._ignoreBackdropClick = true;
|
|
139
|
-
}
|
|
140
|
-
});
|
|
141
|
-
});
|
|
142
|
-
|
|
143
|
-
this._showBackdrop(function () {
|
|
144
|
-
return _this._showElement(relatedTarget);
|
|
145
|
-
});
|
|
146
|
-
};
|
|
147
|
-
|
|
148
|
-
_proto.hide = function hide(event) {
|
|
149
|
-
var _this2 = this;
|
|
150
|
-
|
|
151
|
-
if (event) {
|
|
152
|
-
event.preventDefault();
|
|
153
|
-
}
|
|
121
|
+
this._backdrop.show(() => this._showElement(relatedTarget));
|
|
122
|
+
}
|
|
154
123
|
|
|
124
|
+
hide() {
|
|
155
125
|
if (!this._isShown || this._isTransitioning) {
|
|
156
126
|
return;
|
|
157
127
|
}
|
|
158
128
|
|
|
159
|
-
|
|
160
|
-
$__default['default'](this._element).trigger(hideEvent);
|
|
129
|
+
const hideEvent = EventHandler__default.default.trigger(this._element, EVENT_HIDE);
|
|
161
130
|
|
|
162
|
-
if (
|
|
131
|
+
if (hideEvent.defaultPrevented) {
|
|
163
132
|
return;
|
|
164
133
|
}
|
|
165
134
|
|
|
166
135
|
this._isShown = false;
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
if (transition) {
|
|
170
|
-
this._isTransitioning = true;
|
|
171
|
-
}
|
|
136
|
+
this._isTransitioning = true;
|
|
172
137
|
|
|
173
|
-
this.
|
|
138
|
+
this._focustrap.deactivate();
|
|
174
139
|
|
|
175
|
-
this.
|
|
140
|
+
this._element.classList.remove(CLASS_NAME_SHOW);
|
|
176
141
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
$__default['default'](this._element).off(EVENT_CLICK_DISMISS);
|
|
180
|
-
$__default['default'](this._dialog).off(EVENT_MOUSEDOWN_DISMISS);
|
|
142
|
+
this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());
|
|
143
|
+
}
|
|
181
144
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
return _this2._hideModal(event);
|
|
186
|
-
}).emulateTransitionEnd(transitionDuration);
|
|
187
|
-
} else {
|
|
188
|
-
this._hideModal();
|
|
145
|
+
dispose() {
|
|
146
|
+
for (const htmlElement of [window, this._dialog]) {
|
|
147
|
+
EventHandler__default.default.off(htmlElement, EVENT_KEY);
|
|
189
148
|
}
|
|
190
|
-
};
|
|
191
|
-
|
|
192
|
-
_proto.dispose = function dispose() {
|
|
193
|
-
[window, this._element, this._dialog].forEach(function (htmlElement) {
|
|
194
|
-
return $__default['default'](htmlElement).off(EVENT_KEY);
|
|
195
|
-
});
|
|
196
|
-
/**
|
|
197
|
-
* `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`
|
|
198
|
-
* Do not move `document` in `htmlElements` array
|
|
199
|
-
* It will remove `EVENT_CLICK_DATA_API` event that should remain
|
|
200
|
-
*/
|
|
201
|
-
|
|
202
|
-
$__default['default'](document).off(EVENT_FOCUSIN);
|
|
203
|
-
$__default['default'].removeData(this._element, DATA_KEY);
|
|
204
|
-
this._config = null;
|
|
205
|
-
this._element = null;
|
|
206
|
-
this._dialog = null;
|
|
207
|
-
this._backdrop = null;
|
|
208
|
-
this._isShown = null;
|
|
209
|
-
this._isBodyOverflowing = null;
|
|
210
|
-
this._ignoreBackdropClick = null;
|
|
211
|
-
this._isTransitioning = null;
|
|
212
|
-
this._scrollbarWidth = null;
|
|
213
|
-
};
|
|
214
|
-
|
|
215
|
-
_proto.handleUpdate = function handleUpdate() {
|
|
216
|
-
this._adjustDialog();
|
|
217
|
-
} // Private
|
|
218
|
-
;
|
|
219
|
-
|
|
220
|
-
_proto._getConfig = function _getConfig(config) {
|
|
221
|
-
config = _extends({}, Default, config);
|
|
222
|
-
Util__default['default'].typeCheckConfig(NAME, config, DefaultType);
|
|
223
|
-
return config;
|
|
224
|
-
};
|
|
225
|
-
|
|
226
|
-
_proto._triggerBackdropTransition = function _triggerBackdropTransition() {
|
|
227
|
-
var _this3 = this;
|
|
228
149
|
|
|
229
|
-
|
|
230
|
-
var hideEventPrevented = $__default['default'].Event(EVENT_HIDE_PREVENTED);
|
|
231
|
-
$__default['default'](this._element).trigger(hideEventPrevented);
|
|
232
|
-
|
|
233
|
-
if (hideEventPrevented.isDefaultPrevented()) {
|
|
234
|
-
return;
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
|
|
238
|
-
|
|
239
|
-
if (!isModalOverflowing) {
|
|
240
|
-
this._element.style.overflowY = 'hidden';
|
|
241
|
-
}
|
|
150
|
+
this._backdrop.dispose();
|
|
242
151
|
|
|
243
|
-
|
|
152
|
+
this._focustrap.deactivate();
|
|
244
153
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
$__default['default'](this._element).one(Util__default['default'].TRANSITION_END, function () {
|
|
248
|
-
_this3._element.classList.remove(CLASS_NAME_STATIC);
|
|
154
|
+
super.dispose();
|
|
155
|
+
}
|
|
249
156
|
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
}).emulateTransitionEnd(_this3._element, modalTransitionDuration);
|
|
254
|
-
}
|
|
255
|
-
}).emulateTransitionEnd(modalTransitionDuration);
|
|
157
|
+
handleUpdate() {
|
|
158
|
+
this._adjustDialog();
|
|
159
|
+
} // Private
|
|
256
160
|
|
|
257
|
-
this._element.focus();
|
|
258
|
-
} else {
|
|
259
|
-
this.hide();
|
|
260
|
-
}
|
|
261
|
-
};
|
|
262
161
|
|
|
263
|
-
|
|
264
|
-
|
|
162
|
+
_initializeBackDrop() {
|
|
163
|
+
return new Backdrop__default.default({
|
|
164
|
+
isVisible: Boolean(this._config.backdrop),
|
|
165
|
+
// 'static' option will be translated to true, and booleans will keep their value,
|
|
166
|
+
isAnimated: this._isAnimated()
|
|
167
|
+
});
|
|
168
|
+
}
|
|
265
169
|
|
|
266
|
-
|
|
267
|
-
|
|
170
|
+
_initializeFocusTrap() {
|
|
171
|
+
return new FocusTrap__default.default({
|
|
172
|
+
trapElement: this._element
|
|
173
|
+
});
|
|
174
|
+
}
|
|
268
175
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
176
|
+
_showElement(relatedTarget) {
|
|
177
|
+
// try to append dynamic modal
|
|
178
|
+
if (!document.body.contains(this._element)) {
|
|
179
|
+
document.body.append(this._element);
|
|
272
180
|
}
|
|
273
181
|
|
|
274
182
|
this._element.style.display = 'block';
|
|
@@ -279,87 +187,71 @@
|
|
|
279
187
|
|
|
280
188
|
this._element.setAttribute('role', 'dialog');
|
|
281
189
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
} else {
|
|
285
|
-
this._element.scrollTop = 0;
|
|
286
|
-
}
|
|
190
|
+
this._element.scrollTop = 0;
|
|
191
|
+
const modalBody = SelectorEngine__default.default.findOne(SELECTOR_MODAL_BODY, this._dialog);
|
|
287
192
|
|
|
288
|
-
if (
|
|
289
|
-
|
|
193
|
+
if (modalBody) {
|
|
194
|
+
modalBody.scrollTop = 0;
|
|
290
195
|
}
|
|
291
196
|
|
|
292
|
-
|
|
197
|
+
index.reflow(this._element);
|
|
293
198
|
|
|
294
|
-
|
|
295
|
-
this._enforceFocus();
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
var shownEvent = $__default['default'].Event(EVENT_SHOWN, {
|
|
299
|
-
relatedTarget: relatedTarget
|
|
300
|
-
});
|
|
199
|
+
this._element.classList.add(CLASS_NAME_SHOW);
|
|
301
200
|
|
|
302
|
-
|
|
303
|
-
if (
|
|
304
|
-
|
|
201
|
+
const transitionComplete = () => {
|
|
202
|
+
if (this._config.focus) {
|
|
203
|
+
this._focustrap.activate();
|
|
305
204
|
}
|
|
306
205
|
|
|
307
|
-
|
|
308
|
-
|
|
206
|
+
this._isTransitioning = false;
|
|
207
|
+
EventHandler__default.default.trigger(this._element, EVENT_SHOWN, {
|
|
208
|
+
relatedTarget
|
|
209
|
+
});
|
|
309
210
|
};
|
|
310
211
|
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
$__default['default'](this._dialog).one(Util__default['default'].TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);
|
|
314
|
-
} else {
|
|
315
|
-
transitionComplete();
|
|
316
|
-
}
|
|
317
|
-
};
|
|
212
|
+
this._queueCallback(transitionComplete, this._dialog, this._isAnimated());
|
|
213
|
+
}
|
|
318
214
|
|
|
319
|
-
|
|
320
|
-
|
|
215
|
+
_addEventListeners() {
|
|
216
|
+
EventHandler__default.default.on(this._element, EVENT_KEYDOWN_DISMISS, event => {
|
|
217
|
+
if (event.key !== ESCAPE_KEY) {
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
321
220
|
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
221
|
+
if (this._config.keyboard) {
|
|
222
|
+
event.preventDefault();
|
|
223
|
+
this.hide();
|
|
224
|
+
return;
|
|
326
225
|
}
|
|
327
|
-
});
|
|
328
|
-
};
|
|
329
226
|
|
|
330
|
-
|
|
331
|
-
|
|
227
|
+
this._triggerBackdropTransition();
|
|
228
|
+
});
|
|
229
|
+
EventHandler__default.default.on(window, EVENT_RESIZE, () => {
|
|
230
|
+
if (this._isShown && !this._isTransitioning) {
|
|
231
|
+
this._adjustDialog();
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
EventHandler__default.default.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {
|
|
235
|
+
// a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks
|
|
236
|
+
EventHandler__default.default.one(this._element, EVENT_CLICK_DISMISS, event2 => {
|
|
237
|
+
if (this._element !== event.target || this._element !== event2.target) {
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
332
240
|
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {
|
|
336
|
-
event.preventDefault();
|
|
241
|
+
if (this._config.backdrop === 'static') {
|
|
242
|
+
this._triggerBackdropTransition();
|
|
337
243
|
|
|
338
|
-
|
|
339
|
-
} else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {
|
|
340
|
-
_this6._triggerBackdropTransition();
|
|
244
|
+
return;
|
|
341
245
|
}
|
|
342
|
-
});
|
|
343
|
-
} else if (!this._isShown) {
|
|
344
|
-
$__default['default'](this._element).off(EVENT_KEYDOWN_DISMISS);
|
|
345
|
-
}
|
|
346
|
-
};
|
|
347
|
-
|
|
348
|
-
_proto._setResizeEvent = function _setResizeEvent() {
|
|
349
|
-
var _this7 = this;
|
|
350
246
|
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
247
|
+
if (this._config.backdrop) {
|
|
248
|
+
this.hide();
|
|
249
|
+
}
|
|
354
250
|
});
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
}
|
|
358
|
-
};
|
|
359
|
-
|
|
360
|
-
_proto._hideModal = function _hideModal() {
|
|
361
|
-
var _this8 = this;
|
|
251
|
+
});
|
|
252
|
+
}
|
|
362
253
|
|
|
254
|
+
_hideModal() {
|
|
363
255
|
this._element.style.display = 'none';
|
|
364
256
|
|
|
365
257
|
this._element.setAttribute('aria-hidden', true);
|
|
@@ -370,270 +262,138 @@
|
|
|
370
262
|
|
|
371
263
|
this._isTransitioning = false;
|
|
372
264
|
|
|
373
|
-
this.
|
|
374
|
-
|
|
265
|
+
this._backdrop.hide(() => {
|
|
266
|
+
document.body.classList.remove(CLASS_NAME_OPEN);
|
|
375
267
|
|
|
376
|
-
|
|
268
|
+
this._resetAdjustments();
|
|
377
269
|
|
|
378
|
-
|
|
270
|
+
this._scrollBar.reset();
|
|
379
271
|
|
|
380
|
-
|
|
272
|
+
EventHandler__default.default.trigger(this._element, EVENT_HIDDEN);
|
|
381
273
|
});
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
_proto._removeBackdrop = function _removeBackdrop() {
|
|
385
|
-
if (this._backdrop) {
|
|
386
|
-
$__default['default'](this._backdrop).remove();
|
|
387
|
-
this._backdrop = null;
|
|
388
|
-
}
|
|
389
|
-
};
|
|
390
|
-
|
|
391
|
-
_proto._showBackdrop = function _showBackdrop(callback) {
|
|
392
|
-
var _this9 = this;
|
|
274
|
+
}
|
|
393
275
|
|
|
394
|
-
|
|
276
|
+
_isAnimated() {
|
|
277
|
+
return this._element.classList.contains(CLASS_NAME_FADE);
|
|
278
|
+
}
|
|
395
279
|
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
this._backdrop.className = CLASS_NAME_BACKDROP;
|
|
280
|
+
_triggerBackdropTransition() {
|
|
281
|
+
const hideEvent = EventHandler__default.default.trigger(this._element, EVENT_HIDE_PREVENTED);
|
|
399
282
|
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
283
|
+
if (hideEvent.defaultPrevented) {
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
403
286
|
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
if (_this9._ignoreBackdropClick) {
|
|
407
|
-
_this9._ignoreBackdropClick = false;
|
|
408
|
-
return;
|
|
409
|
-
}
|
|
287
|
+
const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
|
|
288
|
+
const initialOverflowY = this._element.style.overflowY; // return if the following background transition hasn't yet completed
|
|
410
289
|
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
290
|
+
if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
414
293
|
|
|
415
|
-
|
|
416
|
-
|
|
294
|
+
if (!isModalOverflowing) {
|
|
295
|
+
this._element.style.overflowY = 'hidden';
|
|
296
|
+
}
|
|
417
297
|
|
|
418
|
-
|
|
419
|
-
Util__default['default'].reflow(this._backdrop);
|
|
420
|
-
}
|
|
298
|
+
this._element.classList.add(CLASS_NAME_STATIC);
|
|
421
299
|
|
|
422
|
-
|
|
300
|
+
this._queueCallback(() => {
|
|
301
|
+
this._element.classList.remove(CLASS_NAME_STATIC);
|
|
423
302
|
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
}
|
|
303
|
+
this._queueCallback(() => {
|
|
304
|
+
this._element.style.overflowY = initialOverflowY;
|
|
305
|
+
}, this._dialog);
|
|
306
|
+
}, this._dialog);
|
|
427
307
|
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
var backdropTransitionDuration = Util__default['default'].getTransitionDurationFromElement(this._backdrop);
|
|
434
|
-
$__default['default'](this._backdrop).one(Util__default['default'].TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);
|
|
435
|
-
} else if (!this._isShown && this._backdrop) {
|
|
436
|
-
$__default['default'](this._backdrop).removeClass(CLASS_NAME_SHOW);
|
|
437
|
-
|
|
438
|
-
var callbackRemove = function callbackRemove() {
|
|
439
|
-
_this9._removeBackdrop();
|
|
308
|
+
this._element.focus();
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* The following methods are used to handle overflowing modals
|
|
312
|
+
*/
|
|
440
313
|
|
|
441
|
-
if (callback) {
|
|
442
|
-
callback();
|
|
443
|
-
}
|
|
444
|
-
};
|
|
445
314
|
|
|
446
|
-
|
|
447
|
-
|
|
315
|
+
_adjustDialog() {
|
|
316
|
+
const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
|
|
448
317
|
|
|
449
|
-
|
|
450
|
-
} else {
|
|
451
|
-
callbackRemove();
|
|
452
|
-
}
|
|
453
|
-
} else if (callback) {
|
|
454
|
-
callback();
|
|
455
|
-
}
|
|
456
|
-
} // ----------------------------------------------------------------------
|
|
457
|
-
// the following methods are used to handle overflowing modals
|
|
458
|
-
// todo (fat): these should probably be refactored out of modal.js
|
|
459
|
-
// ----------------------------------------------------------------------
|
|
460
|
-
;
|
|
318
|
+
const scrollbarWidth = this._scrollBar.getWidth();
|
|
461
319
|
|
|
462
|
-
|
|
463
|
-
var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
|
|
320
|
+
const isBodyOverflowing = scrollbarWidth > 0;
|
|
464
321
|
|
|
465
|
-
if (
|
|
466
|
-
|
|
322
|
+
if (isBodyOverflowing && !isModalOverflowing) {
|
|
323
|
+
const property = index.isRTL() ? 'paddingLeft' : 'paddingRight';
|
|
324
|
+
this._element.style[property] = `${scrollbarWidth}px`;
|
|
467
325
|
}
|
|
468
326
|
|
|
469
|
-
if (
|
|
470
|
-
|
|
327
|
+
if (!isBodyOverflowing && isModalOverflowing) {
|
|
328
|
+
const property = index.isRTL() ? 'paddingRight' : 'paddingLeft';
|
|
329
|
+
this._element.style[property] = `${scrollbarWidth}px`;
|
|
471
330
|
}
|
|
472
|
-
}
|
|
331
|
+
}
|
|
473
332
|
|
|
474
|
-
|
|
333
|
+
_resetAdjustments() {
|
|
475
334
|
this._element.style.paddingLeft = '';
|
|
476
335
|
this._element.style.paddingRight = '';
|
|
477
|
-
};
|
|
478
|
-
|
|
479
|
-
_proto._checkScrollbar = function _checkScrollbar() {
|
|
480
|
-
var rect = document.body.getBoundingClientRect();
|
|
481
|
-
this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;
|
|
482
|
-
this._scrollbarWidth = this._getScrollbarWidth();
|
|
483
|
-
};
|
|
484
|
-
|
|
485
|
-
_proto._setScrollbar = function _setScrollbar() {
|
|
486
|
-
var _this10 = this;
|
|
487
|
-
|
|
488
|
-
if (this._isBodyOverflowing) {
|
|
489
|
-
// Note: DOMNode.style.paddingRight returns the actual value or '' if not set
|
|
490
|
-
// while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
|
|
491
|
-
var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));
|
|
492
|
-
var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); // Adjust fixed content padding
|
|
493
|
-
|
|
494
|
-
$__default['default'](fixedContent).each(function (index, element) {
|
|
495
|
-
var actualPadding = element.style.paddingRight;
|
|
496
|
-
var calculatedPadding = $__default['default'](element).css('padding-right');
|
|
497
|
-
$__default['default'](element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + "px");
|
|
498
|
-
}); // Adjust sticky content margin
|
|
499
|
-
|
|
500
|
-
$__default['default'](stickyContent).each(function (index, element) {
|
|
501
|
-
var actualMargin = element.style.marginRight;
|
|
502
|
-
var calculatedMargin = $__default['default'](element).css('margin-right');
|
|
503
|
-
$__default['default'](element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + "px");
|
|
504
|
-
}); // Adjust body padding
|
|
505
|
-
|
|
506
|
-
var actualPadding = document.body.style.paddingRight;
|
|
507
|
-
var calculatedPadding = $__default['default'](document.body).css('padding-right');
|
|
508
|
-
$__default['default'](document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
|
|
509
|
-
}
|
|
510
|
-
|
|
511
|
-
$__default['default'](document.body).addClass(CLASS_NAME_OPEN);
|
|
512
|
-
};
|
|
513
|
-
|
|
514
|
-
_proto._resetScrollbar = function _resetScrollbar() {
|
|
515
|
-
// Restore fixed content padding
|
|
516
|
-
var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));
|
|
517
|
-
$__default['default'](fixedContent).each(function (index, element) {
|
|
518
|
-
var padding = $__default['default'](element).data('padding-right');
|
|
519
|
-
$__default['default'](element).removeData('padding-right');
|
|
520
|
-
element.style.paddingRight = padding ? padding : '';
|
|
521
|
-
}); // Restore sticky content
|
|
522
|
-
|
|
523
|
-
var elements = [].slice.call(document.querySelectorAll("" + SELECTOR_STICKY_CONTENT));
|
|
524
|
-
$__default['default'](elements).each(function (index, element) {
|
|
525
|
-
var margin = $__default['default'](element).data('margin-right');
|
|
526
|
-
|
|
527
|
-
if (typeof margin !== 'undefined') {
|
|
528
|
-
$__default['default'](element).css('margin-right', margin).removeData('margin-right');
|
|
529
|
-
}
|
|
530
|
-
}); // Restore body padding
|
|
531
|
-
|
|
532
|
-
var padding = $__default['default'](document.body).data('padding-right');
|
|
533
|
-
$__default['default'](document.body).removeData('padding-right');
|
|
534
|
-
document.body.style.paddingRight = padding ? padding : '';
|
|
535
|
-
};
|
|
536
|
-
|
|
537
|
-
_proto._getScrollbarWidth = function _getScrollbarWidth() {
|
|
538
|
-
// thx d.walsh
|
|
539
|
-
var scrollDiv = document.createElement('div');
|
|
540
|
-
scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;
|
|
541
|
-
document.body.appendChild(scrollDiv);
|
|
542
|
-
var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
|
|
543
|
-
document.body.removeChild(scrollDiv);
|
|
544
|
-
return scrollbarWidth;
|
|
545
336
|
} // Static
|
|
546
|
-
;
|
|
547
337
|
|
|
548
|
-
Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
|
|
549
|
-
return this.each(function () {
|
|
550
|
-
var data = $__default['default'](this).data(DATA_KEY);
|
|
551
338
|
|
|
552
|
-
|
|
339
|
+
static jQueryInterface(config, relatedTarget) {
|
|
340
|
+
return this.each(function () {
|
|
341
|
+
const data = Modal.getOrCreateInstance(this, config);
|
|
553
342
|
|
|
554
|
-
if (
|
|
555
|
-
|
|
556
|
-
$__default['default'](this).data(DATA_KEY, data);
|
|
343
|
+
if (typeof config !== 'string') {
|
|
344
|
+
return;
|
|
557
345
|
}
|
|
558
346
|
|
|
559
|
-
if (typeof config === '
|
|
560
|
-
|
|
561
|
-
throw new TypeError("No method named \"" + config + "\"");
|
|
562
|
-
}
|
|
563
|
-
|
|
564
|
-
data[config](relatedTarget);
|
|
565
|
-
} else if (_config.show) {
|
|
566
|
-
data.show(relatedTarget);
|
|
347
|
+
if (typeof data[config] === 'undefined') {
|
|
348
|
+
throw new TypeError(`No method named "${config}"`);
|
|
567
349
|
}
|
|
568
|
-
});
|
|
569
|
-
};
|
|
570
350
|
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
return VERSION;
|
|
575
|
-
}
|
|
576
|
-
}, {
|
|
577
|
-
key: "Default",
|
|
578
|
-
get: function get() {
|
|
579
|
-
return Default;
|
|
580
|
-
}
|
|
581
|
-
}]);
|
|
351
|
+
data[config](relatedTarget);
|
|
352
|
+
});
|
|
353
|
+
}
|
|
582
354
|
|
|
583
|
-
|
|
584
|
-
}();
|
|
355
|
+
}
|
|
585
356
|
/**
|
|
586
|
-
*
|
|
587
|
-
* Data Api implementation
|
|
588
|
-
* ------------------------------------------------------------------------
|
|
357
|
+
* Data API implementation
|
|
589
358
|
*/
|
|
590
359
|
|
|
591
360
|
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
var target;
|
|
596
|
-
var selector = Util__default['default'].getSelectorFromElement(this);
|
|
361
|
+
EventHandler__default.default.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
|
|
362
|
+
const target = index.getElementFromSelector(this);
|
|
597
363
|
|
|
598
|
-
if (
|
|
599
|
-
target = document.querySelector(selector);
|
|
600
|
-
}
|
|
601
|
-
|
|
602
|
-
var config = $__default['default'](target).data(DATA_KEY) ? 'toggle' : _extends({}, $__default['default'](target).data(), $__default['default'](this).data());
|
|
603
|
-
|
|
604
|
-
if (this.tagName === 'A' || this.tagName === 'AREA') {
|
|
364
|
+
if (['A', 'AREA'].includes(this.tagName)) {
|
|
605
365
|
event.preventDefault();
|
|
606
366
|
}
|
|
607
367
|
|
|
608
|
-
|
|
609
|
-
if (showEvent.
|
|
610
|
-
//
|
|
368
|
+
EventHandler__default.default.one(target, EVENT_SHOW, showEvent => {
|
|
369
|
+
if (showEvent.defaultPrevented) {
|
|
370
|
+
// only register focus restorer if modal will actually get shown
|
|
611
371
|
return;
|
|
612
372
|
}
|
|
613
373
|
|
|
614
|
-
|
|
615
|
-
if (
|
|
616
|
-
|
|
374
|
+
EventHandler__default.default.one(target, EVENT_HIDDEN, () => {
|
|
375
|
+
if (index.isVisible(this)) {
|
|
376
|
+
this.focus();
|
|
617
377
|
}
|
|
618
378
|
});
|
|
619
|
-
});
|
|
379
|
+
}); // avoid conflict when clicking modal toggler while another one is open
|
|
380
|
+
|
|
381
|
+
const alreadyOpen = SelectorEngine__default.default.findOne(OPEN_SELECTOR);
|
|
620
382
|
|
|
621
|
-
|
|
383
|
+
if (alreadyOpen) {
|
|
384
|
+
Modal.getInstance(alreadyOpen).hide();
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
const data = Modal.getOrCreateInstance(target);
|
|
388
|
+
data.toggle(this);
|
|
622
389
|
});
|
|
390
|
+
componentFunctions.enableDismissTrigger(Modal);
|
|
623
391
|
/**
|
|
624
|
-
* ------------------------------------------------------------------------
|
|
625
392
|
* jQuery
|
|
626
|
-
* ------------------------------------------------------------------------
|
|
627
393
|
*/
|
|
628
394
|
|
|
629
|
-
|
|
630
|
-
$__default['default'].fn[NAME].Constructor = Modal;
|
|
631
|
-
|
|
632
|
-
$__default['default'].fn[NAME].noConflict = function () {
|
|
633
|
-
$__default['default'].fn[NAME] = JQUERY_NO_CONFLICT;
|
|
634
|
-
return Modal._jQueryInterface;
|
|
635
|
-
};
|
|
395
|
+
index.defineJQueryPlugin(Modal);
|
|
636
396
|
|
|
637
397
|
return Modal;
|
|
638
398
|
|
|
639
|
-
}))
|
|
399
|
+
}));
|