bootstrap 4.6.0 → 5.0.0.beta2

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