bootstrap 4.5.2 → 5.0.0.beta1

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