bootstrap 4.5.0 → 5.0.0.alpha3

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 +12 -9
  5. data/assets/javascripts/bootstrap.js +1852 -1266
  6. data/assets/javascripts/bootstrap.min.js +3 -3
  7. data/assets/javascripts/bootstrap/alert.js +149 -69
  8. data/assets/javascripts/bootstrap/button.js +71 -141
  9. data/assets/javascripts/bootstrap/carousel.js +291 -192
  10. data/assets/javascripts/bootstrap/collapse.js +285 -161
  11. data/assets/javascripts/bootstrap/dom/data.js +81 -0
  12. data/assets/javascripts/bootstrap/dom/event-handler.js +307 -0
  13. data/assets/javascripts/bootstrap/dom/manipulator.js +85 -0
  14. data/assets/javascripts/bootstrap/dom/selector-engine.js +98 -0
  15. data/assets/javascripts/bootstrap/dropdown.js +240 -218
  16. data/assets/javascripts/bootstrap/modal.js +342 -234
  17. data/assets/javascripts/bootstrap/popover.js +82 -106
  18. data/assets/javascripts/bootstrap/scrollspy.js +154 -114
  19. data/assets/javascripts/bootstrap/tab.js +166 -80
  20. data/assets/javascripts/bootstrap/toast.js +171 -113
  21. data/assets/javascripts/bootstrap/tooltip.js +351 -219
  22. data/assets/stylesheets/_bootstrap-grid.scss +52 -16
  23. data/assets/stylesheets/_bootstrap-reboot.scss +5 -2
  24. data/assets/stylesheets/_bootstrap.scss +16 -9
  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 +3 -19
  29. data/assets/stylesheets/bootstrap/_button-group.scss +16 -40
  30. data/assets/stylesheets/bootstrap/_buttons.scss +27 -60
  31. data/assets/stylesheets/bootstrap/_card.scss +30 -97
  32. data/assets/stylesheets/bootstrap/_carousel.scss +30 -15
  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 +52 -8
  36. data/assets/stylesheets/bootstrap/_forms.scss +9 -347
  37. data/assets/stylesheets/bootstrap/_functions.scss +88 -23
  38. data/assets/stylesheets/bootstrap/_grid.scss +3 -58
  39. data/assets/stylesheets/bootstrap/_helpers.scss +7 -0
  40. data/assets/stylesheets/bootstrap/_list-group.scss +14 -5
  41. data/assets/stylesheets/bootstrap/_mixins.scss +7 -13
  42. data/assets/stylesheets/bootstrap/_modal.scss +41 -47
  43. data/assets/stylesheets/bootstrap/_nav.scss +14 -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 +6 -6
  47. data/assets/stylesheets/bootstrap/_progress.scss +3 -5
  48. data/assets/stylesheets/bootstrap/_reboot.scss +310 -171
  49. data/assets/stylesheets/bootstrap/_root.scss +5 -9
  50. data/assets/stylesheets/bootstrap/_spinners.scss +13 -4
  51. data/assets/stylesheets/bootstrap/_tables.scss +80 -114
  52. data/assets/stylesheets/bootstrap/_toasts.scss +6 -2
  53. data/assets/stylesheets/bootstrap/_tooltip.scss +5 -5
  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 +545 -18
  57. data/assets/stylesheets/bootstrap/_variables.scss +653 -469
  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 +4 -4
  81. data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
  82. data/assets/stylesheets/bootstrap/mixins/_container.scss +11 -0
  83. data/assets/stylesheets/bootstrap/mixins/_forms.scss +17 -77
  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 +49 -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 +3 -3
  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 -522
  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 -81
  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 -71
  135. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
@@ -1,82 +1,157 @@
1
1
  /*!
2
- * Bootstrap modal.js v4.5.0 (https://getbootstrap.com/)
2
+ * Bootstrap modal.js v5.0.0-alpha3 (https://getbootstrap.com/)
3
3
  * Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
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 = global || self, global.Modal = factory(global.jQuery, global.Util));
10
- }(this, (function ($, Util) { 'use strict';
11
-
12
- $ = $ && Object.prototype.hasOwnProperty.call($, 'default') ? $['default'] : $;
13
- Util = Util && Object.prototype.hasOwnProperty.call(Util, 'default') ? Util['default'] : Util;
14
-
15
- function _defineProperties(target, props) {
16
- for (var i = 0; i < props.length; i++) {
17
- var descriptor = props[i];
18
- descriptor.enumerable = descriptor.enumerable || false;
19
- descriptor.configurable = true;
20
- if ("value" in descriptor) descriptor.writable = true;
21
- Object.defineProperty(target, descriptor.key, descriptor);
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./dom/selector-engine.js')) :
8
+ typeof define === 'function' && define.amd ? define(['./dom/data.js', './dom/event-handler.js', './dom/manipulator.js', './dom/selector-engine.js'], factory) :
9
+ (global = 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
+
12
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
+
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-alpha3): 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;
22
31
  }
23
- }
24
-
25
- function _createClass(Constructor, protoProps, staticProps) {
26
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
27
- if (staticProps) _defineProperties(Constructor, staticProps);
28
- return Constructor;
29
- }
30
-
31
- function _defineProperty(obj, key, value) {
32
- if (key in obj) {
33
- Object.defineProperty(obj, key, {
34
- value: value,
35
- enumerable: true,
36
- configurable: true,
37
- writable: true
38
- });
39
- } else {
40
- obj[key] = value;
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-target');
38
+
39
+ if (!selector || selector === '#') {
40
+ var hrefAttr = element.getAttribute('href');
41
+ selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
41
42
  }
42
43
 
43
- return obj;
44
- }
44
+ return selector;
45
+ };
45
46
 
46
- function ownKeys(object, enumerableOnly) {
47
- var keys = Object.keys(object);
47
+ var getElementFromSelector = function getElementFromSelector(element) {
48
+ var selector = getSelector(element);
49
+ return selector ? document.querySelector(selector) : null;
50
+ };
48
51
 
49
- if (Object.getOwnPropertySymbols) {
50
- var symbols = Object.getOwnPropertySymbols(object);
51
- if (enumerableOnly) symbols = symbols.filter(function (sym) {
52
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
53
- });
54
- keys.push.apply(keys, symbols);
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 = parseFloat(transitionDuration);
63
+ var floatTransitionDelay = 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 (parseFloat(transitionDuration) + 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);
55
91
  }
56
92
 
57
- return keys;
58
- }
93
+ element.addEventListener(TRANSITION_END, listener);
94
+ setTimeout(function () {
95
+ if (!called) {
96
+ triggerTransitionEnd(element);
97
+ }
98
+ }, emulatedDuration);
99
+ };
59
100
 
60
- function _objectSpread2(target) {
61
- for (var i = 1; i < arguments.length; i++) {
62
- var source = arguments[i] != null ? arguments[i] : {};
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);
63
106
 
64
- if (i % 2) {
65
- ownKeys(Object(source), true).forEach(function (key) {
66
- _defineProperty(target, key, source[key]);
67
- });
68
- } else if (Object.getOwnPropertyDescriptors) {
69
- Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
70
- } else {
71
- ownKeys(Object(source)).forEach(function (key) {
72
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
73
- });
107
+ if (!new RegExp(expectedTypes).test(valueType)) {
108
+ throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
74
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-no-jquery')) {
136
+ return jQuery;
75
137
  }
76
138
 
77
- return target;
78
- }
139
+ return null;
140
+ };
79
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
+ 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); }
151
+
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); } }
153
+
154
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
80
155
  /**
81
156
  * ------------------------------------------------------------------------
82
157
  * Constants
@@ -84,13 +159,11 @@
84
159
  */
85
160
 
86
161
  var NAME = 'modal';
87
- var VERSION = '4.5.0';
162
+ var VERSION = '5.0.0-alpha3';
88
163
  var DATA_KEY = 'bs.modal';
89
164
  var EVENT_KEY = "." + DATA_KEY;
90
165
  var DATA_API_KEY = '.data-api';
91
- var JQUERY_NO_CONFLICT = $.fn[NAME];
92
- var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
93
-
166
+ var ESCAPE_KEY = 'Escape';
94
167
  var Default = {
95
168
  backdrop: true,
96
169
  keyboard: true,
@@ -115,7 +188,6 @@
115
188
  var EVENT_MOUSEUP_DISMISS = "mouseup.dismiss" + EVENT_KEY;
116
189
  var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss" + EVENT_KEY;
117
190
  var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
118
- var CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable';
119
191
  var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';
120
192
  var CLASS_NAME_BACKDROP = 'modal-backdrop';
121
193
  var CLASS_NAME_OPEN = 'modal-open';
@@ -138,13 +210,14 @@
138
210
  function Modal(element, config) {
139
211
  this._config = this._getConfig(config);
140
212
  this._element = element;
141
- this._dialog = element.querySelector(SELECTOR_DIALOG);
213
+ this._dialog = SelectorEngine__default['default'].findOne(SELECTOR_DIALOG, element);
142
214
  this._backdrop = null;
143
215
  this._isShown = false;
144
216
  this._isBodyOverflowing = false;
145
217
  this._ignoreBackdropClick = false;
146
218
  this._isTransitioning = false;
147
219
  this._scrollbarWidth = 0;
220
+ Data__default['default'].setData(element, DATA_KEY, this);
148
221
  } // Getters
149
222
 
150
223
 
@@ -162,16 +235,15 @@
162
235
  return;
163
236
  }
164
237
 
165
- if ($(this._element).hasClass(CLASS_NAME_FADE)) {
238
+ if (this._element.classList.contains(CLASS_NAME_FADE)) {
166
239
  this._isTransitioning = true;
167
240
  }
168
241
 
169
- var showEvent = $.Event(EVENT_SHOW, {
242
+ var showEvent = EventHandler__default['default'].trigger(this._element, EVENT_SHOW, {
170
243
  relatedTarget: relatedTarget
171
244
  });
172
- $(this._element).trigger(showEvent);
173
245
 
174
- if (this._isShown || showEvent.isDefaultPrevented()) {
246
+ if (this._isShown || showEvent.defaultPrevented) {
175
247
  return;
176
248
  }
177
249
 
@@ -187,12 +259,12 @@
187
259
 
188
260
  this._setResizeEvent();
189
261
 
190
- $(this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) {
262
+ EventHandler__default['default'].on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) {
191
263
  return _this.hide(event);
192
264
  });
193
- $(this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () {
194
- $(_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) {
195
- if ($(event.target).is(_this._element)) {
265
+ EventHandler__default['default'].on(this._dialog, EVENT_MOUSEDOWN_DISMISS, function () {
266
+ EventHandler__default['default'].one(_this._element, EVENT_MOUSEUP_DISMISS, function (event) {
267
+ if (event.target === _this._element) {
196
268
  _this._ignoreBackdropClick = true;
197
269
  }
198
270
  });
@@ -214,15 +286,15 @@
214
286
  return;
215
287
  }
216
288
 
217
- var hideEvent = $.Event(EVENT_HIDE);
218
- $(this._element).trigger(hideEvent);
289
+ var hideEvent = EventHandler__default['default'].trigger(this._element, EVENT_HIDE);
219
290
 
220
- if (!this._isShown || hideEvent.isDefaultPrevented()) {
291
+ if (hideEvent.defaultPrevented) {
221
292
  return;
222
293
  }
223
294
 
224
295
  this._isShown = false;
225
- var transition = $(this._element).hasClass(CLASS_NAME_FADE);
296
+
297
+ var transition = this._element.classList.contains(CLASS_NAME_FADE);
226
298
 
227
299
  if (transition) {
228
300
  this._isTransitioning = true;
@@ -232,16 +304,19 @@
232
304
 
233
305
  this._setResizeEvent();
234
306
 
235
- $(document).off(EVENT_FOCUSIN);
236
- $(this._element).removeClass(CLASS_NAME_SHOW);
237
- $(this._element).off(EVENT_CLICK_DISMISS);
238
- $(this._dialog).off(EVENT_MOUSEDOWN_DISMISS);
307
+ EventHandler__default['default'].off(document, EVENT_FOCUSIN);
308
+
309
+ this._element.classList.remove(CLASS_NAME_SHOW);
310
+
311
+ EventHandler__default['default'].off(this._element, EVENT_CLICK_DISMISS);
312
+ EventHandler__default['default'].off(this._dialog, EVENT_MOUSEDOWN_DISMISS);
239
313
 
240
314
  if (transition) {
241
- var transitionDuration = Util.getTransitionDurationFromElement(this._element);
242
- $(this._element).one(Util.TRANSITION_END, function (event) {
315
+ var transitionDuration = getTransitionDurationFromElement(this._element);
316
+ EventHandler__default['default'].one(this._element, TRANSITION_END, function (event) {
243
317
  return _this2._hideModal(event);
244
- }).emulateTransitionEnd(transitionDuration);
318
+ });
319
+ emulateTransitionEnd(this._element, transitionDuration);
245
320
  } else {
246
321
  this._hideModal();
247
322
  }
@@ -249,7 +324,7 @@
249
324
 
250
325
  _proto.dispose = function dispose() {
251
326
  [window, this._element, this._dialog].forEach(function (htmlElement) {
252
- return $(htmlElement).off(EVENT_KEY);
327
+ return EventHandler__default['default'].off(htmlElement, EVENT_KEY);
253
328
  });
254
329
  /**
255
330
  * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`
@@ -257,8 +332,8 @@
257
332
  * It will remove `EVENT_CLICK_DATA_API` event that should remain
258
333
  */
259
334
 
260
- $(document).off(EVENT_FOCUSIN);
261
- $.removeData(this._element, DATA_KEY);
335
+ EventHandler__default['default'].off(document, EVENT_FOCUSIN);
336
+ Data__default['default'].removeData(this._element, DATA_KEY);
262
337
  this._config = null;
263
338
  this._element = null;
264
339
  this._dialog = null;
@@ -276,40 +351,17 @@
276
351
  ;
277
352
 
278
353
  _proto._getConfig = function _getConfig(config) {
279
- config = _objectSpread2(_objectSpread2({}, Default), config);
280
- Util.typeCheckConfig(NAME, config, DefaultType);
354
+ config = _extends({}, Default, config);
355
+ typeCheckConfig(NAME, config, DefaultType);
281
356
  return config;
282
357
  };
283
358
 
284
- _proto._triggerBackdropTransition = function _triggerBackdropTransition() {
359
+ _proto._showElement = function _showElement(relatedTarget) {
285
360
  var _this3 = this;
286
361
 
287
- if (this._config.backdrop === 'static') {
288
- var hideEventPrevented = $.Event(EVENT_HIDE_PREVENTED);
289
- $(this._element).trigger(hideEventPrevented);
290
-
291
- if (hideEventPrevented.defaultPrevented) {
292
- return;
293
- }
294
-
295
- this._element.classList.add(CLASS_NAME_STATIC);
296
-
297
- var modalTransitionDuration = Util.getTransitionDurationFromElement(this._element);
298
- $(this._element).one(Util.TRANSITION_END, function () {
299
- _this3._element.classList.remove(CLASS_NAME_STATIC);
300
- }).emulateTransitionEnd(modalTransitionDuration);
301
-
302
- this._element.focus();
303
- } else {
304
- this.hide();
305
- }
306
- };
307
-
308
- _proto._showElement = function _showElement(relatedTarget) {
309
- var _this4 = this;
362
+ var transition = this._element.classList.contains(CLASS_NAME_FADE);
310
363
 
311
- var transition = $(this._element).hasClass(CLASS_NAME_FADE);
312
- var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null;
364
+ var modalBody = SelectorEngine__default['default'].findOne(SELECTOR_MODAL_BODY, this._dialog);
313
365
 
314
366
  if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
315
367
  // Don't move modal's DOM position
@@ -322,86 +374,88 @@
322
374
 
323
375
  this._element.setAttribute('aria-modal', true);
324
376
 
325
- if ($(this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {
377
+ this._element.setAttribute('role', 'dialog');
378
+
379
+ this._element.scrollTop = 0;
380
+
381
+ if (modalBody) {
326
382
  modalBody.scrollTop = 0;
327
- } else {
328
- this._element.scrollTop = 0;
329
383
  }
330
384
 
331
385
  if (transition) {
332
- Util.reflow(this._element);
386
+ reflow(this._element);
333
387
  }
334
388
 
335
- $(this._element).addClass(CLASS_NAME_SHOW);
389
+ this._element.classList.add(CLASS_NAME_SHOW);
336
390
 
337
391
  if (this._config.focus) {
338
392
  this._enforceFocus();
339
393
  }
340
394
 
341
- var shownEvent = $.Event(EVENT_SHOWN, {
342
- relatedTarget: relatedTarget
343
- });
344
-
345
395
  var transitionComplete = function transitionComplete() {
346
- if (_this4._config.focus) {
347
- _this4._element.focus();
396
+ if (_this3._config.focus) {
397
+ _this3._element.focus();
348
398
  }
349
399
 
350
- _this4._isTransitioning = false;
351
- $(_this4._element).trigger(shownEvent);
400
+ _this3._isTransitioning = false;
401
+ EventHandler__default['default'].trigger(_this3._element, EVENT_SHOWN, {
402
+ relatedTarget: relatedTarget
403
+ });
352
404
  };
353
405
 
354
406
  if (transition) {
355
- var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);
356
- $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);
407
+ var transitionDuration = getTransitionDurationFromElement(this._dialog);
408
+ EventHandler__default['default'].one(this._dialog, TRANSITION_END, transitionComplete);
409
+ emulateTransitionEnd(this._dialog, transitionDuration);
357
410
  } else {
358
411
  transitionComplete();
359
412
  }
360
413
  };
361
414
 
362
415
  _proto._enforceFocus = function _enforceFocus() {
363
- var _this5 = this;
416
+ var _this4 = this;
417
+
418
+ EventHandler__default['default'].off(document, EVENT_FOCUSIN); // guard against infinite focus loop
364
419
 
365
- $(document).off(EVENT_FOCUSIN) // Guard against infinite focus loop
366
- .on(EVENT_FOCUSIN, function (event) {
367
- if (document !== event.target && _this5._element !== event.target && $(_this5._element).has(event.target).length === 0) {
368
- _this5._element.focus();
420
+ EventHandler__default['default'].on(document, EVENT_FOCUSIN, function (event) {
421
+ if (document !== event.target && _this4._element !== event.target && !_this4._element.contains(event.target)) {
422
+ _this4._element.focus();
369
423
  }
370
424
  });
371
425
  };
372
426
 
373
427
  _proto._setEscapeEvent = function _setEscapeEvent() {
374
- var _this6 = this;
428
+ var _this5 = this;
375
429
 
376
430
  if (this._isShown) {
377
- $(this._element).on(EVENT_KEYDOWN_DISMISS, function (event) {
378
- if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {
431
+ EventHandler__default['default'].on(this._element, EVENT_KEYDOWN_DISMISS, function (event) {
432
+ if (_this5._config.keyboard && event.key === ESCAPE_KEY) {
379
433
  event.preventDefault();
380
434
 
381
- _this6.hide();
382
- } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {
383
- _this6._triggerBackdropTransition();
435
+ _this5.hide();
436
+ } else if (!_this5._config.keyboard && event.key === ESCAPE_KEY) {
437
+ _this5._triggerBackdropTransition();
384
438
  }
385
439
  });
386
- } else if (!this._isShown) {
387
- $(this._element).off(EVENT_KEYDOWN_DISMISS);
440
+ } else {
441
+ EventHandler__default['default'].off(this._element, EVENT_KEYDOWN_DISMISS);
388
442
  }
389
443
  };
390
444
 
391
445
  _proto._setResizeEvent = function _setResizeEvent() {
392
- var _this7 = this;
446
+ var _this6 = this;
393
447
 
394
448
  if (this._isShown) {
395
- $(window).on(EVENT_RESIZE, function (event) {
396
- return _this7.handleUpdate(event);
449
+ EventHandler__default['default'].on(window, EVENT_RESIZE, function () {
450
+ return _this6._adjustDialog();
397
451
  });
398
452
  } else {
399
- $(window).off(EVENT_RESIZE);
453
+ EventHandler__default['default'].off(window, EVENT_RESIZE);
400
454
  }
401
455
  };
402
456
 
403
457
  _proto._hideModal = function _hideModal() {
404
- var _this8 = this;
458
+ var _this7 = this;
405
459
 
406
460
  this._element.style.display = 'none';
407
461
 
@@ -409,30 +463,31 @@
409
463
 
410
464
  this._element.removeAttribute('aria-modal');
411
465
 
466
+ this._element.removeAttribute('role');
467
+
412
468
  this._isTransitioning = false;
413
469
 
414
470
  this._showBackdrop(function () {
415
- $(document.body).removeClass(CLASS_NAME_OPEN);
471
+ document.body.classList.remove(CLASS_NAME_OPEN);
416
472
 
417
- _this8._resetAdjustments();
473
+ _this7._resetAdjustments();
418
474
 
419
- _this8._resetScrollbar();
475
+ _this7._resetScrollbar();
420
476
 
421
- $(_this8._element).trigger(EVENT_HIDDEN);
477
+ EventHandler__default['default'].trigger(_this7._element, EVENT_HIDDEN);
422
478
  });
423
479
  };
424
480
 
425
481
  _proto._removeBackdrop = function _removeBackdrop() {
426
- if (this._backdrop) {
427
- $(this._backdrop).remove();
428
- this._backdrop = null;
429
- }
482
+ this._backdrop.parentNode.removeChild(this._backdrop);
483
+
484
+ this._backdrop = null;
430
485
  };
431
486
 
432
487
  _proto._showBackdrop = function _showBackdrop(callback) {
433
- var _this9 = this;
488
+ var _this8 = this;
434
489
 
435
- var animate = $(this._element).hasClass(CLASS_NAME_FADE) ? CLASS_NAME_FADE : '';
490
+ var animate = this._element.classList.contains(CLASS_NAME_FADE) ? CLASS_NAME_FADE : '';
436
491
 
437
492
  if (this._isShown && this._config.backdrop) {
438
493
  this._backdrop = document.createElement('div');
@@ -442,10 +497,10 @@
442
497
  this._backdrop.classList.add(animate);
443
498
  }
444
499
 
445
- $(this._backdrop).appendTo(document.body);
446
- $(this._element).on(EVENT_CLICK_DISMISS, function (event) {
447
- if (_this9._ignoreBackdropClick) {
448
- _this9._ignoreBackdropClick = false;
500
+ document.body.appendChild(this._backdrop);
501
+ EventHandler__default['default'].on(this._element, EVENT_CLICK_DISMISS, function (event) {
502
+ if (_this8._ignoreBackdropClick) {
503
+ _this8._ignoreBackdropClick = false;
449
504
  return;
450
505
  }
451
506
 
@@ -453,50 +508,83 @@
453
508
  return;
454
509
  }
455
510
 
456
- _this9._triggerBackdropTransition();
511
+ _this8._triggerBackdropTransition();
457
512
  });
458
513
 
459
514
  if (animate) {
460
- Util.reflow(this._backdrop);
515
+ reflow(this._backdrop);
461
516
  }
462
517
 
463
- $(this._backdrop).addClass(CLASS_NAME_SHOW);
464
-
465
- if (!callback) {
466
- return;
467
- }
518
+ this._backdrop.classList.add(CLASS_NAME_SHOW);
468
519
 
469
520
  if (!animate) {
470
521
  callback();
471
522
  return;
472
523
  }
473
524
 
474
- var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);
475
- $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);
525
+ var backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop);
526
+ EventHandler__default['default'].one(this._backdrop, TRANSITION_END, callback);
527
+ emulateTransitionEnd(this._backdrop, backdropTransitionDuration);
476
528
  } else if (!this._isShown && this._backdrop) {
477
- $(this._backdrop).removeClass(CLASS_NAME_SHOW);
529
+ this._backdrop.classList.remove(CLASS_NAME_SHOW);
478
530
 
479
531
  var callbackRemove = function callbackRemove() {
480
- _this9._removeBackdrop();
532
+ _this8._removeBackdrop();
481
533
 
482
- if (callback) {
483
- callback();
484
- }
534
+ callback();
485
535
  };
486
536
 
487
- if ($(this._element).hasClass(CLASS_NAME_FADE)) {
488
- var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);
537
+ if (this._element.classList.contains(CLASS_NAME_FADE)) {
538
+ var _backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop);
489
539
 
490
- $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);
540
+ EventHandler__default['default'].one(this._backdrop, TRANSITION_END, callbackRemove);
541
+ emulateTransitionEnd(this._backdrop, _backdropTransitionDuration);
491
542
  } else {
492
543
  callbackRemove();
493
544
  }
494
- } else if (callback) {
545
+ } else {
495
546
  callback();
496
547
  }
548
+ };
549
+
550
+ _proto._triggerBackdropTransition = function _triggerBackdropTransition() {
551
+ var _this9 = this;
552
+
553
+ if (this._config.backdrop === 'static') {
554
+ var hideEvent = EventHandler__default['default'].trigger(this._element, EVENT_HIDE_PREVENTED);
555
+
556
+ if (hideEvent.defaultPrevented) {
557
+ return;
558
+ }
559
+
560
+ var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
561
+
562
+ if (!isModalOverflowing) {
563
+ this._element.style.overflowY = 'hidden';
564
+ }
565
+
566
+ this._element.classList.add(CLASS_NAME_STATIC);
567
+
568
+ var modalTransitionDuration = getTransitionDurationFromElement(this._dialog);
569
+ EventHandler__default['default'].off(this._element, TRANSITION_END);
570
+ EventHandler__default['default'].one(this._element, TRANSITION_END, function () {
571
+ _this9._element.classList.remove(CLASS_NAME_STATIC);
572
+
573
+ if (!isModalOverflowing) {
574
+ EventHandler__default['default'].one(_this9._element, TRANSITION_END, function () {
575
+ _this9._element.style.overflowY = '';
576
+ });
577
+ emulateTransitionEnd(_this9._element, modalTransitionDuration);
578
+ }
579
+ });
580
+ emulateTransitionEnd(this._element, modalTransitionDuration);
581
+
582
+ this._element.focus();
583
+ } else {
584
+ this.hide();
585
+ }
497
586
  } // ----------------------------------------------------------------------
498
587
  // the following methods are used to handle overflowing modals
499
- // todo (fat): these should probably be refactored out of modal.js
500
588
  // ----------------------------------------------------------------------
501
589
  ;
502
590
 
@@ -529,50 +617,58 @@
529
617
  if (this._isBodyOverflowing) {
530
618
  // Note: DOMNode.style.paddingRight returns the actual value or '' if not set
531
619
  // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
532
- var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));
533
- var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); // Adjust fixed content padding
534
-
535
- $(fixedContent).each(function (index, element) {
620
+ // Adjust fixed content padding
621
+ SelectorEngine__default['default'].find(SELECTOR_FIXED_CONTENT).forEach(function (element) {
536
622
  var actualPadding = element.style.paddingRight;
537
- var calculatedPadding = $(element).css('padding-right');
538
- $(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + "px");
623
+ var calculatedPadding = window.getComputedStyle(element)['padding-right'];
624
+ Manipulator__default['default'].setDataAttribute(element, 'padding-right', actualPadding);
625
+ element.style.paddingRight = parseFloat(calculatedPadding) + _this10._scrollbarWidth + "px";
539
626
  }); // Adjust sticky content margin
540
627
 
541
- $(stickyContent).each(function (index, element) {
628
+ SelectorEngine__default['default'].find(SELECTOR_STICKY_CONTENT).forEach(function (element) {
542
629
  var actualMargin = element.style.marginRight;
543
- var calculatedMargin = $(element).css('margin-right');
544
- $(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + "px");
630
+ var calculatedMargin = window.getComputedStyle(element)['margin-right'];
631
+ Manipulator__default['default'].setDataAttribute(element, 'margin-right', actualMargin);
632
+ element.style.marginRight = parseFloat(calculatedMargin) - _this10._scrollbarWidth + "px";
545
633
  }); // Adjust body padding
546
634
 
547
635
  var actualPadding = document.body.style.paddingRight;
548
- var calculatedPadding = $(document.body).css('padding-right');
549
- $(document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
636
+ var calculatedPadding = window.getComputedStyle(document.body)['padding-right'];
637
+ Manipulator__default['default'].setDataAttribute(document.body, 'padding-right', actualPadding);
638
+ document.body.style.paddingRight = parseFloat(calculatedPadding) + this._scrollbarWidth + "px";
550
639
  }
551
640
 
552
- $(document.body).addClass(CLASS_NAME_OPEN);
641
+ document.body.classList.add(CLASS_NAME_OPEN);
553
642
  };
554
643
 
555
644
  _proto._resetScrollbar = function _resetScrollbar() {
556
645
  // Restore fixed content padding
557
- var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));
558
- $(fixedContent).each(function (index, element) {
559
- var padding = $(element).data('padding-right');
560
- $(element).removeData('padding-right');
561
- element.style.paddingRight = padding ? padding : '';
562
- }); // Restore sticky content
646
+ SelectorEngine__default['default'].find(SELECTOR_FIXED_CONTENT).forEach(function (element) {
647
+ var padding = Manipulator__default['default'].getDataAttribute(element, 'padding-right');
563
648
 
564
- var elements = [].slice.call(document.querySelectorAll("" + SELECTOR_STICKY_CONTENT));
565
- $(elements).each(function (index, element) {
566
- var margin = $(element).data('margin-right');
649
+ if (typeof padding !== 'undefined') {
650
+ Manipulator__default['default'].removeDataAttribute(element, 'padding-right');
651
+ element.style.paddingRight = padding;
652
+ }
653
+ }); // Restore sticky content and navbar-toggler margin
654
+
655
+ SelectorEngine__default['default'].find("" + SELECTOR_STICKY_CONTENT).forEach(function (element) {
656
+ var margin = Manipulator__default['default'].getDataAttribute(element, 'margin-right');
567
657
 
568
658
  if (typeof margin !== 'undefined') {
569
- $(element).css('margin-right', margin).removeData('margin-right');
659
+ Manipulator__default['default'].removeDataAttribute(element, 'margin-right');
660
+ element.style.marginRight = margin;
570
661
  }
571
662
  }); // Restore body padding
572
663
 
573
- var padding = $(document.body).data('padding-right');
574
- $(document.body).removeData('padding-right');
575
- document.body.style.paddingRight = padding ? padding : '';
664
+ var padding = Manipulator__default['default'].getDataAttribute(document.body, 'padding-right');
665
+
666
+ if (typeof padding === 'undefined') {
667
+ document.body.style.paddingRight = '';
668
+ } else {
669
+ Manipulator__default['default'].removeDataAttribute(document.body, 'padding-right');
670
+ document.body.style.paddingRight = padding;
671
+ }
576
672
  };
577
673
 
578
674
  _proto._getScrollbarWidth = function _getScrollbarWidth() {
@@ -586,15 +682,14 @@
586
682
  } // Static
587
683
  ;
588
684
 
589
- Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
685
+ Modal.jQueryInterface = function jQueryInterface(config, relatedTarget) {
590
686
  return this.each(function () {
591
- var data = $(this).data(DATA_KEY);
687
+ var data = Data__default['default'].getData(this, DATA_KEY);
592
688
 
593
- var _config = _objectSpread2(_objectSpread2(_objectSpread2({}, Default), $(this).data()), typeof config === 'object' && config ? config : {});
689
+ var _config = _extends({}, Default, Manipulator__default['default'].getDataAttributes(this), typeof config === 'object' && config ? config : {});
594
690
 
595
691
  if (!data) {
596
692
  data = new Modal(this, _config);
597
- $(this).data(DATA_KEY, data);
598
693
  }
599
694
 
600
695
  if (typeof config === 'string') {
@@ -609,6 +704,10 @@
609
704
  });
610
705
  };
611
706
 
707
+ Modal.getInstance = function getInstance(element) {
708
+ return Data__default['default'].getData(element, DATA_KEY);
709
+ };
710
+
612
711
  _createClass(Modal, null, [{
613
712
  key: "VERSION",
614
713
  get: function get() {
@@ -630,50 +729,59 @@
630
729
  */
631
730
 
632
731
 
633
- $(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
732
+ EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
634
733
  var _this11 = this;
635
734
 
636
- var target;
637
- var selector = Util.getSelectorFromElement(this);
638
-
639
- if (selector) {
640
- target = document.querySelector(selector);
641
- }
642
-
643
- var config = $(target).data(DATA_KEY) ? 'toggle' : _objectSpread2(_objectSpread2({}, $(target).data()), $(this).data());
735
+ var target = getElementFromSelector(this);
644
736
 
645
737
  if (this.tagName === 'A' || this.tagName === 'AREA') {
646
738
  event.preventDefault();
647
739
  }
648
740
 
649
- var $target = $(target).one(EVENT_SHOW, function (showEvent) {
650
- if (showEvent.isDefaultPrevented()) {
651
- // Only register focus restorer if modal will actually get shown
741
+ EventHandler__default['default'].one(target, EVENT_SHOW, function (showEvent) {
742
+ if (showEvent.defaultPrevented) {
743
+ // only register focus restorer if modal will actually get shown
652
744
  return;
653
745
  }
654
746
 
655
- $target.one(EVENT_HIDDEN, function () {
656
- if ($(_this11).is(':visible')) {
747
+ EventHandler__default['default'].one(target, EVENT_HIDDEN, function () {
748
+ if (isVisible(_this11)) {
657
749
  _this11.focus();
658
750
  }
659
751
  });
660
752
  });
753
+ var data = Data__default['default'].getData(target, DATA_KEY);
754
+
755
+ if (!data) {
756
+ var config = _extends({}, Manipulator__default['default'].getDataAttributes(target), Manipulator__default['default'].getDataAttributes(this));
661
757
 
662
- Modal._jQueryInterface.call($(target), config, this);
758
+ data = new Modal(target, config);
759
+ }
760
+
761
+ data.show(this);
663
762
  });
664
763
  /**
665
764
  * ------------------------------------------------------------------------
666
765
  * jQuery
667
766
  * ------------------------------------------------------------------------
767
+ * add .Modal to jQuery only if jQuery is present
668
768
  */
669
769
 
670
- $.fn[NAME] = Modal._jQueryInterface;
671
- $.fn[NAME].Constructor = Modal;
770
+ onDOMContentLoaded(function () {
771
+ var $ = getjQuery();
772
+ /* istanbul ignore if */
672
773
 
673
- $.fn[NAME].noConflict = function () {
674
- $.fn[NAME] = JQUERY_NO_CONFLICT;
675
- return Modal._jQueryInterface;
676
- };
774
+ if ($) {
775
+ var JQUERY_NO_CONFLICT = $.fn[NAME];
776
+ $.fn[NAME] = Modal.jQueryInterface;
777
+ $.fn[NAME].Constructor = Modal;
778
+
779
+ $.fn[NAME].noConflict = function () {
780
+ $.fn[NAME] = JQUERY_NO_CONFLICT;
781
+ return Modal.jQueryInterface;
782
+ };
783
+ }
784
+ });
677
785
 
678
786
  return Modal;
679
787