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