bootstrap 4.4.1 → 5.0.0.alpha2

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 (136) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +12 -2
  3. data/README.md +1 -1
  4. data/assets/javascripts/bootstrap-sprockets.js +12 -8
  5. data/assets/javascripts/bootstrap.js +2094 -1562
  6. data/assets/javascripts/bootstrap.min.js +4 -4
  7. data/assets/javascripts/bootstrap/alert.js +145 -83
  8. data/assets/javascripts/bootstrap/button.js +66 -152
  9. data/assets/javascripts/bootstrap/carousel.js +307 -241
  10. data/assets/javascripts/bootstrap/collapse.js +287 -183
  11. data/assets/javascripts/bootstrap/dom/data.js +81 -0
  12. data/assets/javascripts/bootstrap/dom/event-handler.js +315 -0
  13. data/assets/javascripts/bootstrap/dom/manipulator.js +96 -0
  14. data/assets/javascripts/bootstrap/dom/polyfill.js +110 -0
  15. data/assets/javascripts/bootstrap/dom/selector-engine.js +98 -0
  16. data/assets/javascripts/bootstrap/dropdown.js +255 -261
  17. data/assets/javascripts/bootstrap/modal.js +364 -270
  18. data/assets/javascripts/bootstrap/popover.js +72 -113
  19. data/assets/javascripts/bootstrap/scrollspy.js +162 -147
  20. data/assets/javascripts/bootstrap/tab.js +176 -108
  21. data/assets/javascripts/bootstrap/toast.js +179 -139
  22. data/assets/javascripts/bootstrap/tooltip.js +369 -259
  23. data/assets/stylesheets/_bootstrap-grid.scss +54 -18
  24. data/assets/stylesheets/_bootstrap-reboot.scss +7 -4
  25. data/assets/stylesheets/_bootstrap.scss +17 -11
  26. data/assets/stylesheets/bootstrap/_alert.scss +6 -7
  27. data/assets/stylesheets/bootstrap/_badge.scss +2 -27
  28. data/assets/stylesheets/bootstrap/_breadcrumb.scss +5 -17
  29. data/assets/stylesheets/bootstrap/_button-group.scss +16 -38
  30. data/assets/stylesheets/bootstrap/_buttons.scss +25 -40
  31. data/assets/stylesheets/bootstrap/_card.scss +43 -79
  32. data/assets/stylesheets/bootstrap/_carousel.scss +30 -15
  33. data/assets/stylesheets/bootstrap/_close.scss +31 -31
  34. data/assets/stylesheets/bootstrap/_containers.scss +41 -0
  35. data/assets/stylesheets/bootstrap/_dropdown.scss +54 -9
  36. data/assets/stylesheets/bootstrap/_forms.scss +9 -338
  37. data/assets/stylesheets/bootstrap/_functions.scss +97 -25
  38. data/assets/stylesheets/bootstrap/_grid.scss +3 -50
  39. data/assets/stylesheets/bootstrap/_helpers.scss +7 -0
  40. data/assets/stylesheets/bootstrap/_list-group.scss +16 -17
  41. data/assets/stylesheets/bootstrap/_mixins.scss +7 -13
  42. data/assets/stylesheets/bootstrap/_modal.scss +41 -45
  43. data/assets/stylesheets/bootstrap/_nav.scss +16 -9
  44. data/assets/stylesheets/bootstrap/_navbar.scss +43 -74
  45. data/assets/stylesheets/bootstrap/_pagination.scss +11 -20
  46. data/assets/stylesheets/bootstrap/_popover.scss +5 -5
  47. data/assets/stylesheets/bootstrap/_progress.scss +2 -3
  48. data/assets/stylesheets/bootstrap/_reboot.scss +310 -175
  49. data/assets/stylesheets/bootstrap/_root.scss +5 -9
  50. data/assets/stylesheets/bootstrap/_spinners.scss +5 -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 +531 -17
  57. data/assets/stylesheets/bootstrap/_variables.scss +609 -444
  58. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +18 -0
  59. data/assets/stylesheets/bootstrap/forms/_form-check.scss +142 -0
  60. data/assets/stylesheets/bootstrap/forms/_form-control.scss +116 -0
  61. data/assets/stylesheets/bootstrap/forms/_form-file.scss +91 -0
  62. data/assets/stylesheets/bootstrap/forms/_form-range.scss +136 -0
  63. data/assets/stylesheets/bootstrap/forms/_form-select.scss +82 -0
  64. data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
  65. data/assets/stylesheets/bootstrap/forms/_input-group.scss +140 -0
  66. data/assets/stylesheets/bootstrap/forms/_labels.scss +36 -0
  67. data/assets/stylesheets/bootstrap/forms/_validation.scss +12 -0
  68. data/assets/stylesheets/bootstrap/{utilities → helpers}/_clearfix.scss +0 -0
  69. data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +12 -0
  70. data/assets/stylesheets/bootstrap/helpers/_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 +0 -4
  76. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +35 -22
  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 +69 -51
  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 +22 -66
  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 +2 -1
  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 +18 -8
  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. data/tasks/updater/network.rb +2 -2
  100. data/test/gemfiles/rails_6_0.gemfile +7 -0
  101. metadata +36 -41
  102. data/assets/javascripts/bootstrap/util.js +0 -188
  103. data/assets/stylesheets/bootstrap/_code.scss +0 -48
  104. data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -521
  105. data/assets/stylesheets/bootstrap/_input-group.scss +0 -191
  106. data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
  107. data/assets/stylesheets/bootstrap/_media.scss +0 -8
  108. data/assets/stylesheets/bootstrap/_print.scss +0 -141
  109. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -22
  110. data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
  111. data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
  112. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -71
  113. data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
  114. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -11
  115. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +0 -34
  116. data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
  117. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
  118. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -17
  119. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
  120. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
  121. data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
  122. data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
  123. data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
  124. data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
  125. data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
  126. data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
  127. data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
  128. data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
  129. data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
  130. data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
  131. data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
  132. data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
  133. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
  134. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
  135. data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -72
  136. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
@@ -1,82 +1,149 @@
1
1
  /*!
2
- * Bootstrap modal.js v4.4.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2
+ * Bootstrap modal.js v5.0.0-alpha2 (https://getbootstrap.com/)
3
+ * Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
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
- $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
13
- Util = Util && Util.hasOwnProperty('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-alpha2): 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
32
 
25
- function _createClass(Constructor, protoProps, staticProps) {
26
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
27
- if (staticProps) _defineProperties(Constructor, staticProps);
28
- return Constructor;
29
- }
33
+ return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
34
+ };
30
35
 
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;
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;
75
116
  }
76
117
 
77
- return target;
78
- }
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;
79
134
 
135
+ if (jQuery && !document.body.hasAttribute('data-no-jquery')) {
136
+ return jQuery;
137
+ }
138
+
139
+ return null;
140
+ };
141
+
142
+ 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); }
143
+
144
+ 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); } }
145
+
146
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
80
147
  /**
81
148
  * ------------------------------------------------------------------------
82
149
  * Constants
@@ -84,13 +151,11 @@
84
151
  */
85
152
 
86
153
  var NAME = 'modal';
87
- var VERSION = '4.4.1';
154
+ var VERSION = '5.0.0-alpha2';
88
155
  var DATA_KEY = 'bs.modal';
89
156
  var EVENT_KEY = "." + DATA_KEY;
90
157
  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
-
158
+ var ESCAPE_KEY = 'Escape';
94
159
  var Default = {
95
160
  backdrop: true,
96
161
  keyboard: true,
@@ -103,56 +168,48 @@
103
168
  focus: 'boolean',
104
169
  show: 'boolean'
105
170
  };
106
- var Event = {
107
- HIDE: "hide" + EVENT_KEY,
108
- HIDE_PREVENTED: "hidePrevented" + EVENT_KEY,
109
- HIDDEN: "hidden" + EVENT_KEY,
110
- SHOW: "show" + EVENT_KEY,
111
- SHOWN: "shown" + EVENT_KEY,
112
- FOCUSIN: "focusin" + EVENT_KEY,
113
- RESIZE: "resize" + EVENT_KEY,
114
- CLICK_DISMISS: "click.dismiss" + EVENT_KEY,
115
- KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY,
116
- MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY,
117
- MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY,
118
- CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
119
- };
120
- var ClassName = {
121
- SCROLLABLE: 'modal-dialog-scrollable',
122
- SCROLLBAR_MEASURER: 'modal-scrollbar-measure',
123
- BACKDROP: 'modal-backdrop',
124
- OPEN: 'modal-open',
125
- FADE: 'fade',
126
- SHOW: 'show',
127
- STATIC: 'modal-static'
128
- };
129
- var Selector = {
130
- DIALOG: '.modal-dialog',
131
- MODAL_BODY: '.modal-body',
132
- DATA_TOGGLE: '[data-toggle="modal"]',
133
- DATA_DISMISS: '[data-dismiss="modal"]',
134
- FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
135
- STICKY_CONTENT: '.sticky-top'
136
- };
171
+ var EVENT_HIDE = "hide" + EVENT_KEY;
172
+ var EVENT_HIDE_PREVENTED = "hidePrevented" + EVENT_KEY;
173
+ var EVENT_HIDDEN = "hidden" + EVENT_KEY;
174
+ var EVENT_SHOW = "show" + EVENT_KEY;
175
+ var EVENT_SHOWN = "shown" + EVENT_KEY;
176
+ var EVENT_FOCUSIN = "focusin" + EVENT_KEY;
177
+ var EVENT_RESIZE = "resize" + EVENT_KEY;
178
+ var EVENT_CLICK_DISMISS = "click.dismiss" + EVENT_KEY;
179
+ var EVENT_KEYDOWN_DISMISS = "keydown.dismiss" + EVENT_KEY;
180
+ var EVENT_MOUSEUP_DISMISS = "mouseup.dismiss" + EVENT_KEY;
181
+ var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss" + EVENT_KEY;
182
+ var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
183
+ var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';
184
+ var CLASS_NAME_BACKDROP = 'modal-backdrop';
185
+ var CLASS_NAME_OPEN = 'modal-open';
186
+ var CLASS_NAME_FADE = 'fade';
187
+ var CLASS_NAME_SHOW = 'show';
188
+ var CLASS_NAME_STATIC = 'modal-static';
189
+ var SELECTOR_DIALOG = '.modal-dialog';
190
+ var SELECTOR_MODAL_BODY = '.modal-body';
191
+ var SELECTOR_DATA_TOGGLE = '[data-toggle="modal"]';
192
+ var SELECTOR_DATA_DISMISS = '[data-dismiss="modal"]';
193
+ var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
194
+ var SELECTOR_STICKY_CONTENT = '.sticky-top';
137
195
  /**
138
196
  * ------------------------------------------------------------------------
139
197
  * Class Definition
140
198
  * ------------------------------------------------------------------------
141
199
  */
142
200
 
143
- var Modal =
144
- /*#__PURE__*/
145
- function () {
201
+ var Modal = /*#__PURE__*/function () {
146
202
  function Modal(element, config) {
147
203
  this._config = this._getConfig(config);
148
204
  this._element = element;
149
- this._dialog = element.querySelector(Selector.DIALOG);
205
+ this._dialog = SelectorEngine__default['default'].findOne(SELECTOR_DIALOG, element);
150
206
  this._backdrop = null;
151
207
  this._isShown = false;
152
208
  this._isBodyOverflowing = false;
153
209
  this._ignoreBackdropClick = false;
154
210
  this._isTransitioning = false;
155
211
  this._scrollbarWidth = 0;
212
+ Data__default['default'].setData(element, DATA_KEY, this);
156
213
  } // Getters
157
214
 
158
215
 
@@ -170,16 +227,15 @@
170
227
  return;
171
228
  }
172
229
 
173
- if ($(this._element).hasClass(ClassName.FADE)) {
230
+ if (this._element.classList.contains(CLASS_NAME_FADE)) {
174
231
  this._isTransitioning = true;
175
232
  }
176
233
 
177
- var showEvent = $.Event(Event.SHOW, {
234
+ var showEvent = EventHandler__default['default'].trigger(this._element, EVENT_SHOW, {
178
235
  relatedTarget: relatedTarget
179
236
  });
180
- $(this._element).trigger(showEvent);
181
237
 
182
- if (this._isShown || showEvent.isDefaultPrevented()) {
238
+ if (this._isShown || showEvent.defaultPrevented) {
183
239
  return;
184
240
  }
185
241
 
@@ -195,12 +251,12 @@
195
251
 
196
252
  this._setResizeEvent();
197
253
 
198
- $(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, function (event) {
254
+ EventHandler__default['default'].on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) {
199
255
  return _this.hide(event);
200
256
  });
201
- $(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () {
202
- $(_this._element).one(Event.MOUSEUP_DISMISS, function (event) {
203
- if ($(event.target).is(_this._element)) {
257
+ EventHandler__default['default'].on(this._dialog, EVENT_MOUSEDOWN_DISMISS, function () {
258
+ EventHandler__default['default'].one(_this._element, EVENT_MOUSEUP_DISMISS, function (event) {
259
+ if (event.target === _this._element) {
204
260
  _this._ignoreBackdropClick = true;
205
261
  }
206
262
  });
@@ -222,15 +278,15 @@
222
278
  return;
223
279
  }
224
280
 
225
- var hideEvent = $.Event(Event.HIDE);
226
- $(this._element).trigger(hideEvent);
281
+ var hideEvent = EventHandler__default['default'].trigger(this._element, EVENT_HIDE);
227
282
 
228
- if (!this._isShown || hideEvent.isDefaultPrevented()) {
283
+ if (hideEvent.defaultPrevented) {
229
284
  return;
230
285
  }
231
286
 
232
287
  this._isShown = false;
233
- var transition = $(this._element).hasClass(ClassName.FADE);
288
+
289
+ var transition = this._element.classList.contains(CLASS_NAME_FADE);
234
290
 
235
291
  if (transition) {
236
292
  this._isTransitioning = true;
@@ -240,16 +296,19 @@
240
296
 
241
297
  this._setResizeEvent();
242
298
 
243
- $(document).off(Event.FOCUSIN);
244
- $(this._element).removeClass(ClassName.SHOW);
245
- $(this._element).off(Event.CLICK_DISMISS);
246
- $(this._dialog).off(Event.MOUSEDOWN_DISMISS);
299
+ EventHandler__default['default'].off(document, EVENT_FOCUSIN);
300
+
301
+ this._element.classList.remove(CLASS_NAME_SHOW);
302
+
303
+ EventHandler__default['default'].off(this._element, EVENT_CLICK_DISMISS);
304
+ EventHandler__default['default'].off(this._dialog, EVENT_MOUSEDOWN_DISMISS);
247
305
 
248
306
  if (transition) {
249
- var transitionDuration = Util.getTransitionDurationFromElement(this._element);
250
- $(this._element).one(Util.TRANSITION_END, function (event) {
307
+ var transitionDuration = getTransitionDurationFromElement(this._element);
308
+ EventHandler__default['default'].one(this._element, TRANSITION_END, function (event) {
251
309
  return _this2._hideModal(event);
252
- }).emulateTransitionEnd(transitionDuration);
310
+ });
311
+ emulateTransitionEnd(this._element, transitionDuration);
253
312
  } else {
254
313
  this._hideModal();
255
314
  }
@@ -257,16 +316,16 @@
257
316
 
258
317
  _proto.dispose = function dispose() {
259
318
  [window, this._element, this._dialog].forEach(function (htmlElement) {
260
- return $(htmlElement).off(EVENT_KEY);
319
+ return EventHandler__default['default'].off(htmlElement, EVENT_KEY);
261
320
  });
262
321
  /**
263
- * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API`
322
+ * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`
264
323
  * Do not move `document` in `htmlElements` array
265
- * It will remove `Event.CLICK_DATA_API` event that should remain
324
+ * It will remove `EVENT_CLICK_DATA_API` event that should remain
266
325
  */
267
326
 
268
- $(document).off(Event.FOCUSIN);
269
- $.removeData(this._element, DATA_KEY);
327
+ EventHandler__default['default'].off(document, EVENT_FOCUSIN);
328
+ Data__default['default'].removeData(this._element, DATA_KEY);
270
329
  this._config = null;
271
330
  this._element = null;
272
331
  this._dialog = null;
@@ -284,40 +343,17 @@
284
343
  ;
285
344
 
286
345
  _proto._getConfig = function _getConfig(config) {
287
- config = _objectSpread2({}, Default, {}, config);
288
- Util.typeCheckConfig(NAME, config, DefaultType);
346
+ config = _extends({}, Default, config);
347
+ typeCheckConfig(NAME, config, DefaultType);
289
348
  return config;
290
349
  };
291
350
 
292
- _proto._triggerBackdropTransition = function _triggerBackdropTransition() {
351
+ _proto._showElement = function _showElement(relatedTarget) {
293
352
  var _this3 = this;
294
353
 
295
- if (this._config.backdrop === 'static') {
296
- var hideEventPrevented = $.Event(Event.HIDE_PREVENTED);
297
- $(this._element).trigger(hideEventPrevented);
298
-
299
- if (hideEventPrevented.defaultPrevented) {
300
- return;
301
- }
302
-
303
- this._element.classList.add(ClassName.STATIC);
304
-
305
- var modalTransitionDuration = Util.getTransitionDurationFromElement(this._element);
306
- $(this._element).one(Util.TRANSITION_END, function () {
307
- _this3._element.classList.remove(ClassName.STATIC);
308
- }).emulateTransitionEnd(modalTransitionDuration);
309
-
310
- this._element.focus();
311
- } else {
312
- this.hide();
313
- }
314
- };
315
-
316
- _proto._showElement = function _showElement(relatedTarget) {
317
- var _this4 = this;
354
+ var transition = this._element.classList.contains(CLASS_NAME_FADE);
318
355
 
319
- var transition = $(this._element).hasClass(ClassName.FADE);
320
- var modalBody = this._dialog ? this._dialog.querySelector(Selector.MODAL_BODY) : null;
356
+ var modalBody = SelectorEngine__default['default'].findOne(SELECTOR_MODAL_BODY, this._dialog);
321
357
 
322
358
  if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
323
359
  // Don't move modal's DOM position
@@ -330,82 +366,88 @@
330
366
 
331
367
  this._element.setAttribute('aria-modal', true);
332
368
 
333
- if ($(this._dialog).hasClass(ClassName.SCROLLABLE) && modalBody) {
369
+ this._element.setAttribute('role', 'dialog');
370
+
371
+ this._element.scrollTop = 0;
372
+
373
+ if (modalBody) {
334
374
  modalBody.scrollTop = 0;
335
- } else {
336
- this._element.scrollTop = 0;
337
375
  }
338
376
 
339
377
  if (transition) {
340
- Util.reflow(this._element);
378
+ reflow(this._element);
341
379
  }
342
380
 
343
- $(this._element).addClass(ClassName.SHOW);
381
+ this._element.classList.add(CLASS_NAME_SHOW);
344
382
 
345
383
  if (this._config.focus) {
346
384
  this._enforceFocus();
347
385
  }
348
386
 
349
- var shownEvent = $.Event(Event.SHOWN, {
350
- relatedTarget: relatedTarget
351
- });
352
-
353
387
  var transitionComplete = function transitionComplete() {
354
- if (_this4._config.focus) {
355
- _this4._element.focus();
388
+ if (_this3._config.focus) {
389
+ _this3._element.focus();
356
390
  }
357
391
 
358
- _this4._isTransitioning = false;
359
- $(_this4._element).trigger(shownEvent);
392
+ _this3._isTransitioning = false;
393
+ EventHandler__default['default'].trigger(_this3._element, EVENT_SHOWN, {
394
+ relatedTarget: relatedTarget
395
+ });
360
396
  };
361
397
 
362
398
  if (transition) {
363
- var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);
364
- $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);
399
+ var transitionDuration = getTransitionDurationFromElement(this._dialog);
400
+ EventHandler__default['default'].one(this._dialog, TRANSITION_END, transitionComplete);
401
+ emulateTransitionEnd(this._dialog, transitionDuration);
365
402
  } else {
366
403
  transitionComplete();
367
404
  }
368
405
  };
369
406
 
370
407
  _proto._enforceFocus = function _enforceFocus() {
371
- var _this5 = this;
408
+ var _this4 = this;
409
+
410
+ EventHandler__default['default'].off(document, EVENT_FOCUSIN); // guard against infinite focus loop
372
411
 
373
- $(document).off(Event.FOCUSIN) // Guard against infinite focus loop
374
- .on(Event.FOCUSIN, function (event) {
375
- if (document !== event.target && _this5._element !== event.target && $(_this5._element).has(event.target).length === 0) {
376
- _this5._element.focus();
412
+ EventHandler__default['default'].on(document, EVENT_FOCUSIN, function (event) {
413
+ if (document !== event.target && _this4._element !== event.target && !_this4._element.contains(event.target)) {
414
+ _this4._element.focus();
377
415
  }
378
416
  });
379
417
  };
380
418
 
381
419
  _proto._setEscapeEvent = function _setEscapeEvent() {
382
- var _this6 = this;
420
+ var _this5 = this;
383
421
 
384
- if (this._isShown && this._config.keyboard) {
385
- $(this._element).on(Event.KEYDOWN_DISMISS, function (event) {
386
- if (event.which === ESCAPE_KEYCODE) {
387
- _this6._triggerBackdropTransition();
422
+ if (this._isShown) {
423
+ EventHandler__default['default'].on(this._element, EVENT_KEYDOWN_DISMISS, function (event) {
424
+ if (_this5._config.keyboard && event.key === ESCAPE_KEY) {
425
+ event.preventDefault();
426
+
427
+ _this5.hide();
428
+ } else if (!_this5._config.keyboard && event.key === ESCAPE_KEY) {
429
+ _this5._triggerBackdropTransition();
388
430
  }
389
431
  });
390
- } else if (!this._isShown) {
391
- $(this._element).off(Event.KEYDOWN_DISMISS);
432
+ } else {
433
+ EventHandler__default['default'].off(this._element, EVENT_KEYDOWN_DISMISS);
392
434
  }
393
435
  };
394
436
 
395
437
  _proto._setResizeEvent = function _setResizeEvent() {
396
- var _this7 = this;
438
+ var _this6 = this;
397
439
 
398
440
  if (this._isShown) {
399
- $(window).on(Event.RESIZE, function (event) {
400
- return _this7.handleUpdate(event);
441
+ EventHandler__default['default'].on(window, EVENT_RESIZE, function () {
442
+ return _this6._adjustDialog();
401
443
  });
402
444
  } else {
403
- $(window).off(Event.RESIZE);
445
+ EventHandler__default['default'].off(window, EVENT_RESIZE);
404
446
  }
405
447
  };
406
448
 
407
449
  _proto._hideModal = function _hideModal() {
408
- var _this8 = this;
450
+ var _this7 = this;
409
451
 
410
452
  this._element.style.display = 'none';
411
453
 
@@ -413,43 +455,44 @@
413
455
 
414
456
  this._element.removeAttribute('aria-modal');
415
457
 
458
+ this._element.removeAttribute('role');
459
+
416
460
  this._isTransitioning = false;
417
461
 
418
462
  this._showBackdrop(function () {
419
- $(document.body).removeClass(ClassName.OPEN);
463
+ document.body.classList.remove(CLASS_NAME_OPEN);
420
464
 
421
- _this8._resetAdjustments();
465
+ _this7._resetAdjustments();
422
466
 
423
- _this8._resetScrollbar();
467
+ _this7._resetScrollbar();
424
468
 
425
- $(_this8._element).trigger(Event.HIDDEN);
469
+ EventHandler__default['default'].trigger(_this7._element, EVENT_HIDDEN);
426
470
  });
427
471
  };
428
472
 
429
473
  _proto._removeBackdrop = function _removeBackdrop() {
430
- if (this._backdrop) {
431
- $(this._backdrop).remove();
432
- this._backdrop = null;
433
- }
474
+ this._backdrop.parentNode.removeChild(this._backdrop);
475
+
476
+ this._backdrop = null;
434
477
  };
435
478
 
436
479
  _proto._showBackdrop = function _showBackdrop(callback) {
437
- var _this9 = this;
480
+ var _this8 = this;
438
481
 
439
- var animate = $(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : '';
482
+ var animate = this._element.classList.contains(CLASS_NAME_FADE) ? CLASS_NAME_FADE : '';
440
483
 
441
484
  if (this._isShown && this._config.backdrop) {
442
485
  this._backdrop = document.createElement('div');
443
- this._backdrop.className = ClassName.BACKDROP;
486
+ this._backdrop.className = CLASS_NAME_BACKDROP;
444
487
 
445
488
  if (animate) {
446
489
  this._backdrop.classList.add(animate);
447
490
  }
448
491
 
449
- $(this._backdrop).appendTo(document.body);
450
- $(this._element).on(Event.CLICK_DISMISS, function (event) {
451
- if (_this9._ignoreBackdropClick) {
452
- _this9._ignoreBackdropClick = false;
492
+ document.body.appendChild(this._backdrop);
493
+ EventHandler__default['default'].on(this._element, EVENT_CLICK_DISMISS, function (event) {
494
+ if (_this8._ignoreBackdropClick) {
495
+ _this8._ignoreBackdropClick = false;
453
496
  return;
454
497
  }
455
498
 
@@ -457,50 +500,83 @@
457
500
  return;
458
501
  }
459
502
 
460
- _this9._triggerBackdropTransition();
503
+ _this8._triggerBackdropTransition();
461
504
  });
462
505
 
463
506
  if (animate) {
464
- Util.reflow(this._backdrop);
507
+ reflow(this._backdrop);
465
508
  }
466
509
 
467
- $(this._backdrop).addClass(ClassName.SHOW);
468
-
469
- if (!callback) {
470
- return;
471
- }
510
+ this._backdrop.classList.add(CLASS_NAME_SHOW);
472
511
 
473
512
  if (!animate) {
474
513
  callback();
475
514
  return;
476
515
  }
477
516
 
478
- var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);
479
- $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);
517
+ var backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop);
518
+ EventHandler__default['default'].one(this._backdrop, TRANSITION_END, callback);
519
+ emulateTransitionEnd(this._backdrop, backdropTransitionDuration);
480
520
  } else if (!this._isShown && this._backdrop) {
481
- $(this._backdrop).removeClass(ClassName.SHOW);
521
+ this._backdrop.classList.remove(CLASS_NAME_SHOW);
482
522
 
483
523
  var callbackRemove = function callbackRemove() {
484
- _this9._removeBackdrop();
524
+ _this8._removeBackdrop();
485
525
 
486
- if (callback) {
487
- callback();
488
- }
526
+ callback();
489
527
  };
490
528
 
491
- if ($(this._element).hasClass(ClassName.FADE)) {
492
- var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);
529
+ if (this._element.classList.contains(CLASS_NAME_FADE)) {
530
+ var _backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop);
493
531
 
494
- $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);
532
+ EventHandler__default['default'].one(this._backdrop, TRANSITION_END, callbackRemove);
533
+ emulateTransitionEnd(this._backdrop, _backdropTransitionDuration);
495
534
  } else {
496
535
  callbackRemove();
497
536
  }
498
- } else if (callback) {
537
+ } else {
499
538
  callback();
500
539
  }
540
+ };
541
+
542
+ _proto._triggerBackdropTransition = function _triggerBackdropTransition() {
543
+ var _this9 = this;
544
+
545
+ if (this._config.backdrop === 'static') {
546
+ var hideEvent = EventHandler__default['default'].trigger(this._element, EVENT_HIDE_PREVENTED);
547
+
548
+ if (hideEvent.defaultPrevented) {
549
+ return;
550
+ }
551
+
552
+ var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
553
+
554
+ if (!isModalOverflowing) {
555
+ this._element.style.overflowY = 'hidden';
556
+ }
557
+
558
+ this._element.classList.add(CLASS_NAME_STATIC);
559
+
560
+ var modalTransitionDuration = getTransitionDurationFromElement(this._dialog);
561
+ EventHandler__default['default'].off(this._element, TRANSITION_END);
562
+ EventHandler__default['default'].one(this._element, TRANSITION_END, function () {
563
+ _this9._element.classList.remove(CLASS_NAME_STATIC);
564
+
565
+ if (!isModalOverflowing) {
566
+ EventHandler__default['default'].one(_this9._element, TRANSITION_END, function () {
567
+ _this9._element.style.overflowY = '';
568
+ });
569
+ emulateTransitionEnd(_this9._element, modalTransitionDuration);
570
+ }
571
+ });
572
+ emulateTransitionEnd(this._element, modalTransitionDuration);
573
+
574
+ this._element.focus();
575
+ } else {
576
+ this.hide();
577
+ }
501
578
  } // ----------------------------------------------------------------------
502
579
  // the following methods are used to handle overflowing modals
503
- // todo (fat): these should probably be refactored out of modal.js
504
580
  // ----------------------------------------------------------------------
505
581
  ;
506
582
 
@@ -523,7 +599,7 @@
523
599
 
524
600
  _proto._checkScrollbar = function _checkScrollbar() {
525
601
  var rect = document.body.getBoundingClientRect();
526
- this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;
602
+ this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;
527
603
  this._scrollbarWidth = this._getScrollbarWidth();
528
604
  };
529
605
 
@@ -533,56 +609,64 @@
533
609
  if (this._isBodyOverflowing) {
534
610
  // Note: DOMNode.style.paddingRight returns the actual value or '' if not set
535
611
  // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
536
- var fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT));
537
- var stickyContent = [].slice.call(document.querySelectorAll(Selector.STICKY_CONTENT)); // Adjust fixed content padding
538
-
539
- $(fixedContent).each(function (index, element) {
612
+ // Adjust fixed content padding
613
+ SelectorEngine__default['default'].find(SELECTOR_FIXED_CONTENT).forEach(function (element) {
540
614
  var actualPadding = element.style.paddingRight;
541
- var calculatedPadding = $(element).css('padding-right');
542
- $(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + "px");
615
+ var calculatedPadding = window.getComputedStyle(element)['padding-right'];
616
+ Manipulator__default['default'].setDataAttribute(element, 'padding-right', actualPadding);
617
+ element.style.paddingRight = parseFloat(calculatedPadding) + _this10._scrollbarWidth + "px";
543
618
  }); // Adjust sticky content margin
544
619
 
545
- $(stickyContent).each(function (index, element) {
620
+ SelectorEngine__default['default'].find(SELECTOR_STICKY_CONTENT).forEach(function (element) {
546
621
  var actualMargin = element.style.marginRight;
547
- var calculatedMargin = $(element).css('margin-right');
548
- $(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + "px");
622
+ var calculatedMargin = window.getComputedStyle(element)['margin-right'];
623
+ Manipulator__default['default'].setDataAttribute(element, 'margin-right', actualMargin);
624
+ element.style.marginRight = parseFloat(calculatedMargin) - _this10._scrollbarWidth + "px";
549
625
  }); // Adjust body padding
550
626
 
551
627
  var actualPadding = document.body.style.paddingRight;
552
- var calculatedPadding = $(document.body).css('padding-right');
553
- $(document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
628
+ var calculatedPadding = window.getComputedStyle(document.body)['padding-right'];
629
+ Manipulator__default['default'].setDataAttribute(document.body, 'padding-right', actualPadding);
630
+ document.body.style.paddingRight = parseFloat(calculatedPadding) + this._scrollbarWidth + "px";
554
631
  }
555
632
 
556
- $(document.body).addClass(ClassName.OPEN);
633
+ document.body.classList.add(CLASS_NAME_OPEN);
557
634
  };
558
635
 
559
636
  _proto._resetScrollbar = function _resetScrollbar() {
560
637
  // Restore fixed content padding
561
- var fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT));
562
- $(fixedContent).each(function (index, element) {
563
- var padding = $(element).data('padding-right');
564
- $(element).removeData('padding-right');
565
- element.style.paddingRight = padding ? padding : '';
566
- }); // Restore sticky content
638
+ SelectorEngine__default['default'].find(SELECTOR_FIXED_CONTENT).forEach(function (element) {
639
+ var padding = Manipulator__default['default'].getDataAttribute(element, 'padding-right');
640
+
641
+ if (typeof padding !== 'undefined') {
642
+ Manipulator__default['default'].removeDataAttribute(element, 'padding-right');
643
+ element.style.paddingRight = padding;
644
+ }
645
+ }); // Restore sticky content and navbar-toggler margin
567
646
 
568
- var elements = [].slice.call(document.querySelectorAll("" + Selector.STICKY_CONTENT));
569
- $(elements).each(function (index, element) {
570
- var margin = $(element).data('margin-right');
647
+ SelectorEngine__default['default'].find("" + SELECTOR_STICKY_CONTENT).forEach(function (element) {
648
+ var margin = Manipulator__default['default'].getDataAttribute(element, 'margin-right');
571
649
 
572
650
  if (typeof margin !== 'undefined') {
573
- $(element).css('margin-right', margin).removeData('margin-right');
651
+ Manipulator__default['default'].removeDataAttribute(element, 'margin-right');
652
+ element.style.marginRight = margin;
574
653
  }
575
654
  }); // Restore body padding
576
655
 
577
- var padding = $(document.body).data('padding-right');
578
- $(document.body).removeData('padding-right');
579
- document.body.style.paddingRight = padding ? padding : '';
656
+ var padding = Manipulator__default['default'].getDataAttribute(document.body, 'padding-right');
657
+
658
+ if (typeof padding === 'undefined') {
659
+ document.body.style.paddingRight = '';
660
+ } else {
661
+ Manipulator__default['default'].removeDataAttribute(document.body, 'padding-right');
662
+ document.body.style.paddingRight = padding;
663
+ }
580
664
  };
581
665
 
582
666
  _proto._getScrollbarWidth = function _getScrollbarWidth() {
583
667
  // thx d.walsh
584
668
  var scrollDiv = document.createElement('div');
585
- scrollDiv.className = ClassName.SCROLLBAR_MEASURER;
669
+ scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;
586
670
  document.body.appendChild(scrollDiv);
587
671
  var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
588
672
  document.body.removeChild(scrollDiv);
@@ -590,15 +674,14 @@
590
674
  } // Static
591
675
  ;
592
676
 
593
- Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
677
+ Modal.jQueryInterface = function jQueryInterface(config, relatedTarget) {
594
678
  return this.each(function () {
595
- var data = $(this).data(DATA_KEY);
679
+ var data = Data__default['default'].getData(this, DATA_KEY);
596
680
 
597
- var _config = _objectSpread2({}, Default, {}, $(this).data(), {}, typeof config === 'object' && config ? config : {});
681
+ var _config = _extends({}, Default, Manipulator__default['default'].getDataAttributes(this), typeof config === 'object' && config ? config : {});
598
682
 
599
683
  if (!data) {
600
684
  data = new Modal(this, _config);
601
- $(this).data(DATA_KEY, data);
602
685
  }
603
686
 
604
687
  if (typeof config === 'string') {
@@ -613,6 +696,10 @@
613
696
  });
614
697
  };
615
698
 
699
+ Modal.getInstance = function getInstance(element) {
700
+ return Data__default['default'].getData(element, DATA_KEY);
701
+ };
702
+
616
703
  _createClass(Modal, null, [{
617
704
  key: "VERSION",
618
705
  get: function get() {
@@ -634,50 +721,57 @@
634
721
  */
635
722
 
636
723
 
637
- $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
724
+ EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
638
725
  var _this11 = this;
639
726
 
640
- var target;
641
- var selector = Util.getSelectorFromElement(this);
642
-
643
- if (selector) {
644
- target = document.querySelector(selector);
645
- }
646
-
647
- var config = $(target).data(DATA_KEY) ? 'toggle' : _objectSpread2({}, $(target).data(), {}, $(this).data());
727
+ var target = getElementFromSelector(this);
648
728
 
649
729
  if (this.tagName === 'A' || this.tagName === 'AREA') {
650
730
  event.preventDefault();
651
731
  }
652
732
 
653
- var $target = $(target).one(Event.SHOW, function (showEvent) {
654
- if (showEvent.isDefaultPrevented()) {
655
- // Only register focus restorer if modal will actually get shown
733
+ EventHandler__default['default'].one(target, EVENT_SHOW, function (showEvent) {
734
+ if (showEvent.defaultPrevented) {
735
+ // only register focus restorer if modal will actually get shown
656
736
  return;
657
737
  }
658
738
 
659
- $target.one(Event.HIDDEN, function () {
660
- if ($(_this11).is(':visible')) {
739
+ EventHandler__default['default'].one(target, EVENT_HIDDEN, function () {
740
+ if (isVisible(_this11)) {
661
741
  _this11.focus();
662
742
  }
663
743
  });
664
744
  });
745
+ var data = Data__default['default'].getData(target, DATA_KEY);
746
+
747
+ if (!data) {
748
+ var config = _extends({}, Manipulator__default['default'].getDataAttributes(target), Manipulator__default['default'].getDataAttributes(this));
749
+
750
+ data = new Modal(target, config);
751
+ }
665
752
 
666
- Modal._jQueryInterface.call($(target), config, this);
753
+ data.show(this);
667
754
  });
755
+ var $ = getjQuery();
668
756
  /**
669
757
  * ------------------------------------------------------------------------
670
758
  * jQuery
671
759
  * ------------------------------------------------------------------------
760
+ * add .modal to jQuery only if jQuery is present
672
761
  */
673
762
 
674
- $.fn[NAME] = Modal._jQueryInterface;
675
- $.fn[NAME].Constructor = Modal;
763
+ /* istanbul ignore if */
676
764
 
677
- $.fn[NAME].noConflict = function () {
678
- $.fn[NAME] = JQUERY_NO_CONFLICT;
679
- return Modal._jQueryInterface;
680
- };
765
+ if ($) {
766
+ var JQUERY_NO_CONFLICT = $.fn[NAME];
767
+ $.fn[NAME] = Modal.jQueryInterface;
768
+ $.fn[NAME].Constructor = Modal;
769
+
770
+ $.fn[NAME].noConflict = function () {
771
+ $.fn[NAME] = JQUERY_NO_CONFLICT;
772
+ return Modal.jQueryInterface;
773
+ };
774
+ }
681
775
 
682
776
  return Modal;
683
777