bootstrap 4.3.1 → 4.6.2.1

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 (96) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +15 -1
  3. data/CHANGELOG.md +4 -12
  4. data/README.md +7 -1
  5. data/Rakefile +16 -4
  6. data/assets/javascripts/bootstrap/alert.js +43 -55
  7. data/assets/javascripts/bootstrap/button.js +112 -70
  8. data/assets/javascripts/bootstrap/carousel.js +164 -189
  9. data/assets/javascripts/bootstrap/collapse.js +98 -129
  10. data/assets/javascripts/bootstrap/dropdown.js +165 -200
  11. data/assets/javascripts/bootstrap/modal.js +218 -205
  12. data/assets/javascripts/bootstrap/popover.js +63 -79
  13. data/assets/javascripts/bootstrap/scrollspy.js +82 -119
  14. data/assets/javascripts/bootstrap/tab.js +79 -85
  15. data/assets/javascripts/bootstrap/toast.js +100 -115
  16. data/assets/javascripts/bootstrap/tooltip.js +207 -225
  17. data/assets/javascripts/bootstrap/util.js +41 -23
  18. data/assets/javascripts/bootstrap.js +1235 -1314
  19. data/assets/javascripts/bootstrap.min.js +4 -4
  20. data/assets/stylesheets/_bootstrap-grid.scss +5 -4
  21. data/assets/stylesheets/_bootstrap-reboot.scss +4 -4
  22. data/assets/stylesheets/_bootstrap.scss +4 -4
  23. data/assets/stylesheets/bootstrap/_alert.scss +1 -0
  24. data/assets/stylesheets/bootstrap/_badge.scss +1 -1
  25. data/assets/stylesheets/bootstrap/_breadcrumb.scss +3 -2
  26. data/assets/stylesheets/bootstrap/_button-group.scss +1 -1
  27. data/assets/stylesheets/bootstrap/_buttons.scss +13 -8
  28. data/assets/stylesheets/bootstrap/_card.scss +47 -50
  29. data/assets/stylesheets/bootstrap/_carousel.scss +12 -9
  30. data/assets/stylesheets/bootstrap/_close.scss +2 -3
  31. data/assets/stylesheets/bootstrap/_code.scss +1 -1
  32. data/assets/stylesheets/bootstrap/_custom-forms.scss +43 -24
  33. data/assets/stylesheets/bootstrap/_dropdown.scss +7 -6
  34. data/assets/stylesheets/bootstrap/_forms.scss +30 -13
  35. data/assets/stylesheets/bootstrap/_functions.scss +110 -6
  36. data/assets/stylesheets/bootstrap/_grid.scss +32 -11
  37. data/assets/stylesheets/bootstrap/_images.scss +3 -3
  38. data/assets/stylesheets/bootstrap/_input-group.scss +23 -5
  39. data/assets/stylesheets/bootstrap/_jumbotron.scss +1 -1
  40. data/assets/stylesheets/bootstrap/_list-group.scss +36 -31
  41. data/assets/stylesheets/bootstrap/_mixins.scss +3 -3
  42. data/assets/stylesheets/bootstrap/_modal.scss +26 -15
  43. data/assets/stylesheets/bootstrap/_nav.scss +12 -7
  44. data/assets/stylesheets/bootstrap/_navbar.scss +55 -17
  45. data/assets/stylesheets/bootstrap/_pagination.scss +5 -4
  46. data/assets/stylesheets/bootstrap/_popover.scss +17 -18
  47. data/assets/stylesheets/bootstrap/_print.scss +1 -10
  48. data/assets/stylesheets/bootstrap/_progress.scss +7 -3
  49. data/assets/stylesheets/bootstrap/_reboot.scss +39 -38
  50. data/assets/stylesheets/bootstrap/_spinners.scss +18 -8
  51. data/assets/stylesheets/bootstrap/_tables.scss +3 -3
  52. data/assets/stylesheets/bootstrap/_toasts.scss +4 -2
  53. data/assets/stylesheets/bootstrap/_tooltip.scss +4 -4
  54. data/assets/stylesheets/bootstrap/_transitions.scss +6 -0
  55. data/assets/stylesheets/bootstrap/_type.scss +3 -3
  56. data/assets/stylesheets/bootstrap/_utilities.scss +2 -1
  57. data/assets/stylesheets/bootstrap/_variables.scss +71 -45
  58. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +5 -3
  59. data/assets/stylesheets/bootstrap/mixins/_badge.scss +1 -1
  60. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +27 -14
  61. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +11 -8
  62. data/assets/stylesheets/bootstrap/mixins/_caret.scss +8 -8
  63. data/assets/stylesheets/bootstrap/mixins/_float.scss +3 -3
  64. data/assets/stylesheets/bootstrap/mixins/_forms.scss +52 -49
  65. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +31 -17
  66. data/assets/stylesheets/bootstrap/mixins/_grid.scss +32 -14
  67. data/assets/stylesheets/bootstrap/mixins/_hover.scss +4 -4
  68. data/assets/stylesheets/bootstrap/mixins/_image.scss +2 -2
  69. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +1 -1
  70. data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
  71. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +2 -1
  72. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +2 -2
  73. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +5 -4
  74. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +1 -1
  75. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +3 -2
  76. data/assets/stylesheets/bootstrap/mixins/_transition.scss +18 -8
  77. data/assets/stylesheets/bootstrap/utilities/_background.scss +2 -2
  78. data/assets/stylesheets/bootstrap/utilities/_borders.scss +1 -1
  79. data/assets/stylesheets/bootstrap/utilities/_embed.scss +1 -1
  80. data/assets/stylesheets/bootstrap/utilities/_interactions.scss +5 -0
  81. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +1 -1
  82. data/assets/stylesheets/bootstrap/utilities/_text.scss +4 -4
  83. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +126 -102
  84. data/bootstrap.gemspec +2 -4
  85. data/lib/bootstrap/engine.rb +17 -1
  86. data/lib/bootstrap/version.rb +2 -2
  87. data/tasks/updater/js.rb +18 -6
  88. data/tasks/updater/network.rb +8 -2
  89. data/test/dummy_rails/app/assets/config/manifest.js +3 -0
  90. data/test/dummy_rails/app/assets/stylesheets/.browserslistrc +1 -0
  91. data/test/gemfiles/rails_6_0.gemfile +7 -0
  92. data/test/gemfiles/rails_7_0_dartsass.gemfile +8 -0
  93. data/test/gemfiles/rails_7_0_sassc.gemfile +8 -0
  94. data/test/support/dummy_rails_integration.rb +3 -1
  95. data/test/test_helper.rb +18 -13
  96. metadata +17 -21
@@ -1,16 +1,18 @@
1
1
  /*!
2
- * Bootstrap modal.js v4.3.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 v4.6.2 (https://getbootstrap.com/)
3
+ * Copyright 2011-2022 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
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';
8
+ typeof define === 'function' && define.amd ? define(['jquery', './util'], factory) :
9
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Modal = factory(global.jQuery, global.Util));
10
+ })(this, (function ($, Util) { 'use strict';
11
11
 
12
- $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
13
- Util = Util && Util.hasOwnProperty('default') ? Util['default'] : Util;
12
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
+
14
+ var $__default = /*#__PURE__*/_interopDefaultLegacy($);
15
+ var Util__default = /*#__PURE__*/_interopDefaultLegacy(Util);
14
16
 
15
17
  function _defineProperties(target, props) {
16
18
  for (var i = 0; i < props.length; i++) {
@@ -25,57 +27,66 @@
25
27
  function _createClass(Constructor, protoProps, staticProps) {
26
28
  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
27
29
  if (staticProps) _defineProperties(Constructor, staticProps);
30
+ Object.defineProperty(Constructor, "prototype", {
31
+ writable: false
32
+ });
28
33
  return Constructor;
29
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;
41
- }
42
-
43
- return obj;
44
- }
45
-
46
- function _objectSpread(target) {
47
- for (var i = 1; i < arguments.length; i++) {
48
- var source = arguments[i] != null ? arguments[i] : {};
49
- var ownKeys = Object.keys(source);
36
+ function _extends() {
37
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
38
+ for (var i = 1; i < arguments.length; i++) {
39
+ var source = arguments[i];
50
40
 
51
- if (typeof Object.getOwnPropertySymbols === 'function') {
52
- ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
53
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
54
- }));
41
+ for (var key in source) {
42
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
43
+ target[key] = source[key];
44
+ }
45
+ }
55
46
  }
56
47
 
57
- ownKeys.forEach(function (key) {
58
- _defineProperty(target, key, source[key]);
59
- });
60
- }
61
-
62
- return target;
48
+ return target;
49
+ };
50
+ return _extends.apply(this, arguments);
63
51
  }
64
52
 
65
53
  /**
66
- * ------------------------------------------------------------------------
67
54
  * Constants
68
- * ------------------------------------------------------------------------
69
55
  */
70
56
 
71
57
  var NAME = 'modal';
72
- var VERSION = '4.3.1';
58
+ var VERSION = '4.6.2';
73
59
  var DATA_KEY = 'bs.modal';
74
60
  var EVENT_KEY = "." + DATA_KEY;
75
61
  var DATA_API_KEY = '.data-api';
76
- var JQUERY_NO_CONFLICT = $.fn[NAME];
62
+ var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
77
63
  var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
78
64
 
65
+ var CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable';
66
+ var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';
67
+ var CLASS_NAME_BACKDROP = 'modal-backdrop';
68
+ var CLASS_NAME_OPEN = 'modal-open';
69
+ var CLASS_NAME_FADE = 'fade';
70
+ var CLASS_NAME_SHOW = 'show';
71
+ var CLASS_NAME_STATIC = 'modal-static';
72
+ var EVENT_HIDE = "hide" + EVENT_KEY;
73
+ var EVENT_HIDE_PREVENTED = "hidePrevented" + EVENT_KEY;
74
+ var EVENT_HIDDEN = "hidden" + EVENT_KEY;
75
+ var EVENT_SHOW = "show" + EVENT_KEY;
76
+ var EVENT_SHOWN = "shown" + EVENT_KEY;
77
+ var EVENT_FOCUSIN = "focusin" + EVENT_KEY;
78
+ var EVENT_RESIZE = "resize" + EVENT_KEY;
79
+ var EVENT_CLICK_DISMISS = "click.dismiss" + EVENT_KEY;
80
+ var EVENT_KEYDOWN_DISMISS = "keydown.dismiss" + EVENT_KEY;
81
+ var EVENT_MOUSEUP_DISMISS = "mouseup.dismiss" + EVENT_KEY;
82
+ var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss" + EVENT_KEY;
83
+ var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
84
+ var SELECTOR_DIALOG = '.modal-dialog';
85
+ var SELECTOR_MODAL_BODY = '.modal-body';
86
+ var SELECTOR_DATA_TOGGLE = '[data-toggle="modal"]';
87
+ var SELECTOR_DATA_DISMISS = '[data-dismiss="modal"]';
88
+ var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
89
+ var SELECTOR_STICKY_CONTENT = '.sticky-top';
79
90
  var Default = {
80
91
  backdrop: true,
81
92
  keyboard: true,
@@ -88,49 +99,15 @@
88
99
  focus: 'boolean',
89
100
  show: 'boolean'
90
101
  };
91
- var Event = {
92
- HIDE: "hide" + EVENT_KEY,
93
- HIDDEN: "hidden" + EVENT_KEY,
94
- SHOW: "show" + EVENT_KEY,
95
- SHOWN: "shown" + EVENT_KEY,
96
- FOCUSIN: "focusin" + EVENT_KEY,
97
- RESIZE: "resize" + EVENT_KEY,
98
- CLICK_DISMISS: "click.dismiss" + EVENT_KEY,
99
- KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY,
100
- MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY,
101
- MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY,
102
- CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
103
- };
104
- var ClassName = {
105
- SCROLLABLE: 'modal-dialog-scrollable',
106
- SCROLLBAR_MEASURER: 'modal-scrollbar-measure',
107
- BACKDROP: 'modal-backdrop',
108
- OPEN: 'modal-open',
109
- FADE: 'fade',
110
- SHOW: 'show'
111
- };
112
- var Selector = {
113
- DIALOG: '.modal-dialog',
114
- MODAL_BODY: '.modal-body',
115
- DATA_TOGGLE: '[data-toggle="modal"]',
116
- DATA_DISMISS: '[data-dismiss="modal"]',
117
- FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
118
- STICKY_CONTENT: '.sticky-top'
119
- /**
120
- * ------------------------------------------------------------------------
121
- * Class Definition
122
- * ------------------------------------------------------------------------
123
- */
124
-
125
- };
102
+ /**
103
+ * Class definition
104
+ */
126
105
 
127
- var Modal =
128
- /*#__PURE__*/
129
- function () {
106
+ var Modal = /*#__PURE__*/function () {
130
107
  function Modal(element, config) {
131
108
  this._config = this._getConfig(config);
132
109
  this._element = element;
133
- this._dialog = element.querySelector(Selector.DIALOG);
110
+ this._dialog = element.querySelector(SELECTOR_DIALOG);
134
111
  this._backdrop = null;
135
112
  this._isShown = false;
136
113
  this._isBodyOverflowing = false;
@@ -154,21 +131,21 @@
154
131
  return;
155
132
  }
156
133
 
157
- if ($(this._element).hasClass(ClassName.FADE)) {
158
- this._isTransitioning = true;
159
- }
160
-
161
- var showEvent = $.Event(Event.SHOW, {
134
+ var showEvent = $__default["default"].Event(EVENT_SHOW, {
162
135
  relatedTarget: relatedTarget
163
136
  });
164
- $(this._element).trigger(showEvent);
137
+ $__default["default"](this._element).trigger(showEvent);
165
138
 
166
- if (this._isShown || showEvent.isDefaultPrevented()) {
139
+ if (showEvent.isDefaultPrevented()) {
167
140
  return;
168
141
  }
169
142
 
170
143
  this._isShown = true;
171
144
 
145
+ if ($__default["default"](this._element).hasClass(CLASS_NAME_FADE)) {
146
+ this._isTransitioning = true;
147
+ }
148
+
172
149
  this._checkScrollbar();
173
150
 
174
151
  this._setScrollbar();
@@ -179,12 +156,12 @@
179
156
 
180
157
  this._setResizeEvent();
181
158
 
182
- $(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, function (event) {
159
+ $__default["default"](this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) {
183
160
  return _this.hide(event);
184
161
  });
185
- $(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () {
186
- $(_this._element).one(Event.MOUSEUP_DISMISS, function (event) {
187
- if ($(event.target).is(_this._element)) {
162
+ $__default["default"](this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () {
163
+ $__default["default"](_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) {
164
+ if ($__default["default"](event.target).is(_this._element)) {
188
165
  _this._ignoreBackdropClick = true;
189
166
  }
190
167
  });
@@ -206,15 +183,15 @@
206
183
  return;
207
184
  }
208
185
 
209
- var hideEvent = $.Event(Event.HIDE);
210
- $(this._element).trigger(hideEvent);
186
+ var hideEvent = $__default["default"].Event(EVENT_HIDE);
187
+ $__default["default"](this._element).trigger(hideEvent);
211
188
 
212
189
  if (!this._isShown || hideEvent.isDefaultPrevented()) {
213
190
  return;
214
191
  }
215
192
 
216
193
  this._isShown = false;
217
- var transition = $(this._element).hasClass(ClassName.FADE);
194
+ var transition = $__default["default"](this._element).hasClass(CLASS_NAME_FADE);
218
195
 
219
196
  if (transition) {
220
197
  this._isTransitioning = true;
@@ -224,14 +201,14 @@
224
201
 
225
202
  this._setResizeEvent();
226
203
 
227
- $(document).off(Event.FOCUSIN);
228
- $(this._element).removeClass(ClassName.SHOW);
229
- $(this._element).off(Event.CLICK_DISMISS);
230
- $(this._dialog).off(Event.MOUSEDOWN_DISMISS);
204
+ $__default["default"](document).off(EVENT_FOCUSIN);
205
+ $__default["default"](this._element).removeClass(CLASS_NAME_SHOW);
206
+ $__default["default"](this._element).off(EVENT_CLICK_DISMISS);
207
+ $__default["default"](this._dialog).off(EVENT_MOUSEDOWN_DISMISS);
231
208
 
232
209
  if (transition) {
233
- var transitionDuration = Util.getTransitionDurationFromElement(this._element);
234
- $(this._element).one(Util.TRANSITION_END, function (event) {
210
+ var transitionDuration = Util__default["default"].getTransitionDurationFromElement(this._element);
211
+ $__default["default"](this._element).one(Util__default["default"].TRANSITION_END, function (event) {
235
212
  return _this2._hideModal(event);
236
213
  }).emulateTransitionEnd(transitionDuration);
237
214
  } else {
@@ -241,16 +218,16 @@
241
218
 
242
219
  _proto.dispose = function dispose() {
243
220
  [window, this._element, this._dialog].forEach(function (htmlElement) {
244
- return $(htmlElement).off(EVENT_KEY);
221
+ return $__default["default"](htmlElement).off(EVENT_KEY);
245
222
  });
246
223
  /**
247
- * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API`
224
+ * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`
248
225
  * Do not move `document` in `htmlElements` array
249
- * It will remove `Event.CLICK_DATA_API` event that should remain
226
+ * It will remove `EVENT_CLICK_DATA_API` event that should remain
250
227
  */
251
228
 
252
- $(document).off(Event.FOCUSIN);
253
- $.removeData(this._element, DATA_KEY);
229
+ $__default["default"](document).off(EVENT_FOCUSIN);
230
+ $__default["default"].removeData(this._element, DATA_KEY);
254
231
  this._config = null;
255
232
  this._element = null;
256
233
  this._dialog = null;
@@ -268,15 +245,49 @@
268
245
  ;
269
246
 
270
247
  _proto._getConfig = function _getConfig(config) {
271
- config = _objectSpread({}, Default, config);
272
- Util.typeCheckConfig(NAME, config, DefaultType);
248
+ config = _extends({}, Default, config);
249
+ Util__default["default"].typeCheckConfig(NAME, config, DefaultType);
273
250
  return config;
274
251
  };
275
252
 
276
- _proto._showElement = function _showElement(relatedTarget) {
253
+ _proto._triggerBackdropTransition = function _triggerBackdropTransition() {
277
254
  var _this3 = this;
278
255
 
279
- var transition = $(this._element).hasClass(ClassName.FADE);
256
+ var hideEventPrevented = $__default["default"].Event(EVENT_HIDE_PREVENTED);
257
+ $__default["default"](this._element).trigger(hideEventPrevented);
258
+
259
+ if (hideEventPrevented.isDefaultPrevented()) {
260
+ return;
261
+ }
262
+
263
+ var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
264
+
265
+ if (!isModalOverflowing) {
266
+ this._element.style.overflowY = 'hidden';
267
+ }
268
+
269
+ this._element.classList.add(CLASS_NAME_STATIC);
270
+
271
+ var modalTransitionDuration = Util__default["default"].getTransitionDurationFromElement(this._dialog);
272
+ $__default["default"](this._element).off(Util__default["default"].TRANSITION_END);
273
+ $__default["default"](this._element).one(Util__default["default"].TRANSITION_END, function () {
274
+ _this3._element.classList.remove(CLASS_NAME_STATIC);
275
+
276
+ if (!isModalOverflowing) {
277
+ $__default["default"](_this3._element).one(Util__default["default"].TRANSITION_END, function () {
278
+ _this3._element.style.overflowY = '';
279
+ }).emulateTransitionEnd(_this3._element, modalTransitionDuration);
280
+ }
281
+ }).emulateTransitionEnd(modalTransitionDuration);
282
+
283
+ this._element.focus();
284
+ };
285
+
286
+ _proto._showElement = function _showElement(relatedTarget) {
287
+ var _this4 = this;
288
+
289
+ var transition = $__default["default"](this._element).hasClass(CLASS_NAME_FADE);
290
+ var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null;
280
291
 
281
292
  if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
282
293
  // Don't move modal's DOM position
@@ -289,84 +300,88 @@
289
300
 
290
301
  this._element.setAttribute('aria-modal', true);
291
302
 
292
- if ($(this._dialog).hasClass(ClassName.SCROLLABLE)) {
293
- this._dialog.querySelector(Selector.MODAL_BODY).scrollTop = 0;
303
+ this._element.setAttribute('role', 'dialog');
304
+
305
+ if ($__default["default"](this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {
306
+ modalBody.scrollTop = 0;
294
307
  } else {
295
308
  this._element.scrollTop = 0;
296
309
  }
297
310
 
298
311
  if (transition) {
299
- Util.reflow(this._element);
312
+ Util__default["default"].reflow(this._element);
300
313
  }
301
314
 
302
- $(this._element).addClass(ClassName.SHOW);
315
+ $__default["default"](this._element).addClass(CLASS_NAME_SHOW);
303
316
 
304
317
  if (this._config.focus) {
305
318
  this._enforceFocus();
306
319
  }
307
320
 
308
- var shownEvent = $.Event(Event.SHOWN, {
321
+ var shownEvent = $__default["default"].Event(EVENT_SHOWN, {
309
322
  relatedTarget: relatedTarget
310
323
  });
311
324
 
312
325
  var transitionComplete = function transitionComplete() {
313
- if (_this3._config.focus) {
314
- _this3._element.focus();
326
+ if (_this4._config.focus) {
327
+ _this4._element.focus();
315
328
  }
316
329
 
317
- _this3._isTransitioning = false;
318
- $(_this3._element).trigger(shownEvent);
330
+ _this4._isTransitioning = false;
331
+ $__default["default"](_this4._element).trigger(shownEvent);
319
332
  };
320
333
 
321
334
  if (transition) {
322
- var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);
323
- $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);
335
+ var transitionDuration = Util__default["default"].getTransitionDurationFromElement(this._dialog);
336
+ $__default["default"](this._dialog).one(Util__default["default"].TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);
324
337
  } else {
325
338
  transitionComplete();
326
339
  }
327
340
  };
328
341
 
329
342
  _proto._enforceFocus = function _enforceFocus() {
330
- var _this4 = this;
343
+ var _this5 = this;
331
344
 
332
- $(document).off(Event.FOCUSIN) // Guard against infinite focus loop
333
- .on(Event.FOCUSIN, function (event) {
334
- if (document !== event.target && _this4._element !== event.target && $(_this4._element).has(event.target).length === 0) {
335
- _this4._element.focus();
345
+ $__default["default"](document).off(EVENT_FOCUSIN) // Guard against infinite focus loop
346
+ .on(EVENT_FOCUSIN, function (event) {
347
+ if (document !== event.target && _this5._element !== event.target && $__default["default"](_this5._element).has(event.target).length === 0) {
348
+ _this5._element.focus();
336
349
  }
337
350
  });
338
351
  };
339
352
 
340
353
  _proto._setEscapeEvent = function _setEscapeEvent() {
341
- var _this5 = this;
354
+ var _this6 = this;
342
355
 
343
- if (this._isShown && this._config.keyboard) {
344
- $(this._element).on(Event.KEYDOWN_DISMISS, function (event) {
345
- if (event.which === ESCAPE_KEYCODE) {
356
+ if (this._isShown) {
357
+ $__default["default"](this._element).on(EVENT_KEYDOWN_DISMISS, function (event) {
358
+ if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {
346
359
  event.preventDefault();
347
360
 
348
- _this5.hide();
361
+ _this6.hide();
362
+ } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {
363
+ _this6._triggerBackdropTransition();
349
364
  }
350
365
  });
351
366
  } else if (!this._isShown) {
352
- $(this._element).off(Event.KEYDOWN_DISMISS);
367
+ $__default["default"](this._element).off(EVENT_KEYDOWN_DISMISS);
353
368
  }
354
369
  };
355
370
 
356
371
  _proto._setResizeEvent = function _setResizeEvent() {
357
- var _this6 = this;
372
+ var _this7 = this;
358
373
 
359
374
  if (this._isShown) {
360
- $(window).on(Event.RESIZE, function (event) {
361
- return _this6.handleUpdate(event);
375
+ $__default["default"](window).on(EVENT_RESIZE, function (event) {
376
+ return _this7.handleUpdate(event);
362
377
  });
363
378
  } else {
364
- $(window).off(Event.RESIZE);
379
+ $__default["default"](window).off(EVENT_RESIZE);
365
380
  }
366
381
  };
367
382
 
368
383
  _proto._hideModal = function _hideModal() {
369
- var _this7 = this;
384
+ var _this8 = this;
370
385
 
371
386
  this._element.style.display = 'none';
372
387
 
@@ -374,43 +389,45 @@
374
389
 
375
390
  this._element.removeAttribute('aria-modal');
376
391
 
392
+ this._element.removeAttribute('role');
393
+
377
394
  this._isTransitioning = false;
378
395
 
379
396
  this._showBackdrop(function () {
380
- $(document.body).removeClass(ClassName.OPEN);
397
+ $__default["default"](document.body).removeClass(CLASS_NAME_OPEN);
381
398
 
382
- _this7._resetAdjustments();
399
+ _this8._resetAdjustments();
383
400
 
384
- _this7._resetScrollbar();
401
+ _this8._resetScrollbar();
385
402
 
386
- $(_this7._element).trigger(Event.HIDDEN);
403
+ $__default["default"](_this8._element).trigger(EVENT_HIDDEN);
387
404
  });
388
405
  };
389
406
 
390
407
  _proto._removeBackdrop = function _removeBackdrop() {
391
408
  if (this._backdrop) {
392
- $(this._backdrop).remove();
409
+ $__default["default"](this._backdrop).remove();
393
410
  this._backdrop = null;
394
411
  }
395
412
  };
396
413
 
397
414
  _proto._showBackdrop = function _showBackdrop(callback) {
398
- var _this8 = this;
415
+ var _this9 = this;
399
416
 
400
- var animate = $(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : '';
417
+ var animate = $__default["default"](this._element).hasClass(CLASS_NAME_FADE) ? CLASS_NAME_FADE : '';
401
418
 
402
419
  if (this._isShown && this._config.backdrop) {
403
420
  this._backdrop = document.createElement('div');
404
- this._backdrop.className = ClassName.BACKDROP;
421
+ this._backdrop.className = CLASS_NAME_BACKDROP;
405
422
 
406
423
  if (animate) {
407
424
  this._backdrop.classList.add(animate);
408
425
  }
409
426
 
410
- $(this._backdrop).appendTo(document.body);
411
- $(this._element).on(Event.CLICK_DISMISS, function (event) {
412
- if (_this8._ignoreBackdropClick) {
413
- _this8._ignoreBackdropClick = false;
427
+ $__default["default"](this._backdrop).appendTo(document.body);
428
+ $__default["default"](this._element).on(EVENT_CLICK_DISMISS, function (event) {
429
+ if (_this9._ignoreBackdropClick) {
430
+ _this9._ignoreBackdropClick = false;
414
431
  return;
415
432
  }
416
433
 
@@ -418,18 +435,18 @@
418
435
  return;
419
436
  }
420
437
 
421
- if (_this8._config.backdrop === 'static') {
422
- _this8._element.focus();
438
+ if (_this9._config.backdrop === 'static') {
439
+ _this9._triggerBackdropTransition();
423
440
  } else {
424
- _this8.hide();
441
+ _this9.hide();
425
442
  }
426
443
  });
427
444
 
428
445
  if (animate) {
429
- Util.reflow(this._backdrop);
446
+ Util__default["default"].reflow(this._backdrop);
430
447
  }
431
448
 
432
- $(this._backdrop).addClass(ClassName.SHOW);
449
+ $__default["default"](this._backdrop).addClass(CLASS_NAME_SHOW);
433
450
 
434
451
  if (!callback) {
435
452
  return;
@@ -440,23 +457,23 @@
440
457
  return;
441
458
  }
442
459
 
443
- var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);
444
- $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);
460
+ var backdropTransitionDuration = Util__default["default"].getTransitionDurationFromElement(this._backdrop);
461
+ $__default["default"](this._backdrop).one(Util__default["default"].TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);
445
462
  } else if (!this._isShown && this._backdrop) {
446
- $(this._backdrop).removeClass(ClassName.SHOW);
463
+ $__default["default"](this._backdrop).removeClass(CLASS_NAME_SHOW);
447
464
 
448
465
  var callbackRemove = function callbackRemove() {
449
- _this8._removeBackdrop();
466
+ _this9._removeBackdrop();
450
467
 
451
468
  if (callback) {
452
469
  callback();
453
470
  }
454
471
  };
455
472
 
456
- if ($(this._element).hasClass(ClassName.FADE)) {
457
- var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);
473
+ if ($__default["default"](this._element).hasClass(CLASS_NAME_FADE)) {
474
+ var _backdropTransitionDuration = Util__default["default"].getTransitionDurationFromElement(this._backdrop);
458
475
 
459
- $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);
476
+ $__default["default"](this._backdrop).one(Util__default["default"].TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);
460
477
  } else {
461
478
  callbackRemove();
462
479
  }
@@ -488,66 +505,66 @@
488
505
 
489
506
  _proto._checkScrollbar = function _checkScrollbar() {
490
507
  var rect = document.body.getBoundingClientRect();
491
- this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;
508
+ this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;
492
509
  this._scrollbarWidth = this._getScrollbarWidth();
493
510
  };
494
511
 
495
512
  _proto._setScrollbar = function _setScrollbar() {
496
- var _this9 = this;
513
+ var _this10 = this;
497
514
 
498
515
  if (this._isBodyOverflowing) {
499
516
  // Note: DOMNode.style.paddingRight returns the actual value or '' if not set
500
517
  // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
501
- var fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT));
502
- var stickyContent = [].slice.call(document.querySelectorAll(Selector.STICKY_CONTENT)); // Adjust fixed content padding
518
+ var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));
519
+ var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); // Adjust fixed content padding
503
520
 
504
- $(fixedContent).each(function (index, element) {
521
+ $__default["default"](fixedContent).each(function (index, element) {
505
522
  var actualPadding = element.style.paddingRight;
506
- var calculatedPadding = $(element).css('padding-right');
507
- $(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px");
523
+ var calculatedPadding = $__default["default"](element).css('padding-right');
524
+ $__default["default"](element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + "px");
508
525
  }); // Adjust sticky content margin
509
526
 
510
- $(stickyContent).each(function (index, element) {
527
+ $__default["default"](stickyContent).each(function (index, element) {
511
528
  var actualMargin = element.style.marginRight;
512
- var calculatedMargin = $(element).css('margin-right');
513
- $(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px");
529
+ var calculatedMargin = $__default["default"](element).css('margin-right');
530
+ $__default["default"](element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + "px");
514
531
  }); // Adjust body padding
515
532
 
516
533
  var actualPadding = document.body.style.paddingRight;
517
- var calculatedPadding = $(document.body).css('padding-right');
518
- $(document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
534
+ var calculatedPadding = $__default["default"](document.body).css('padding-right');
535
+ $__default["default"](document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
519
536
  }
520
537
 
521
- $(document.body).addClass(ClassName.OPEN);
538
+ $__default["default"](document.body).addClass(CLASS_NAME_OPEN);
522
539
  };
523
540
 
524
541
  _proto._resetScrollbar = function _resetScrollbar() {
525
542
  // Restore fixed content padding
526
- var fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT));
527
- $(fixedContent).each(function (index, element) {
528
- var padding = $(element).data('padding-right');
529
- $(element).removeData('padding-right');
543
+ var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));
544
+ $__default["default"](fixedContent).each(function (index, element) {
545
+ var padding = $__default["default"](element).data('padding-right');
546
+ $__default["default"](element).removeData('padding-right');
530
547
  element.style.paddingRight = padding ? padding : '';
531
548
  }); // Restore sticky content
532
549
 
533
- var elements = [].slice.call(document.querySelectorAll("" + Selector.STICKY_CONTENT));
534
- $(elements).each(function (index, element) {
535
- var margin = $(element).data('margin-right');
550
+ var elements = [].slice.call(document.querySelectorAll("" + SELECTOR_STICKY_CONTENT));
551
+ $__default["default"](elements).each(function (index, element) {
552
+ var margin = $__default["default"](element).data('margin-right');
536
553
 
537
554
  if (typeof margin !== 'undefined') {
538
- $(element).css('margin-right', margin).removeData('margin-right');
555
+ $__default["default"](element).css('margin-right', margin).removeData('margin-right');
539
556
  }
540
557
  }); // Restore body padding
541
558
 
542
- var padding = $(document.body).data('padding-right');
543
- $(document.body).removeData('padding-right');
559
+ var padding = $__default["default"](document.body).data('padding-right');
560
+ $__default["default"](document.body).removeData('padding-right');
544
561
  document.body.style.paddingRight = padding ? padding : '';
545
562
  };
546
563
 
547
564
  _proto._getScrollbarWidth = function _getScrollbarWidth() {
548
565
  // thx d.walsh
549
566
  var scrollDiv = document.createElement('div');
550
- scrollDiv.className = ClassName.SCROLLBAR_MEASURER;
567
+ scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;
551
568
  document.body.appendChild(scrollDiv);
552
569
  var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
553
570
  document.body.removeChild(scrollDiv);
@@ -557,13 +574,13 @@
557
574
 
558
575
  Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
559
576
  return this.each(function () {
560
- var data = $(this).data(DATA_KEY);
577
+ var data = $__default["default"](this).data(DATA_KEY);
561
578
 
562
- var _config = _objectSpread({}, Default, $(this).data(), typeof config === 'object' && config ? config : {});
579
+ var _config = _extends({}, Default, $__default["default"](this).data(), typeof config === 'object' && config ? config : {});
563
580
 
564
581
  if (!data) {
565
582
  data = new Modal(this, _config);
566
- $(this).data(DATA_KEY, data);
583
+ $__default["default"](this).data(DATA_KEY, data);
567
584
  }
568
585
 
569
586
  if (typeof config === 'string') {
@@ -593,54 +610,50 @@
593
610
  return Modal;
594
611
  }();
595
612
  /**
596
- * ------------------------------------------------------------------------
597
- * Data Api implementation
598
- * ------------------------------------------------------------------------
613
+ * Data API implementation
599
614
  */
600
615
 
601
616
 
602
- $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
603
- var _this10 = this;
617
+ $__default["default"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
618
+ var _this11 = this;
604
619
 
605
620
  var target;
606
- var selector = Util.getSelectorFromElement(this);
621
+ var selector = Util__default["default"].getSelectorFromElement(this);
607
622
 
608
623
  if (selector) {
609
624
  target = document.querySelector(selector);
610
625
  }
611
626
 
612
- var config = $(target).data(DATA_KEY) ? 'toggle' : _objectSpread({}, $(target).data(), $(this).data());
627
+ var config = $__default["default"](target).data(DATA_KEY) ? 'toggle' : _extends({}, $__default["default"](target).data(), $__default["default"](this).data());
613
628
 
614
629
  if (this.tagName === 'A' || this.tagName === 'AREA') {
615
630
  event.preventDefault();
616
631
  }
617
632
 
618
- var $target = $(target).one(Event.SHOW, function (showEvent) {
633
+ var $target = $__default["default"](target).one(EVENT_SHOW, function (showEvent) {
619
634
  if (showEvent.isDefaultPrevented()) {
620
635
  // Only register focus restorer if modal will actually get shown
621
636
  return;
622
637
  }
623
638
 
624
- $target.one(Event.HIDDEN, function () {
625
- if ($(_this10).is(':visible')) {
626
- _this10.focus();
639
+ $target.one(EVENT_HIDDEN, function () {
640
+ if ($__default["default"](_this11).is(':visible')) {
641
+ _this11.focus();
627
642
  }
628
643
  });
629
644
  });
630
645
 
631
- Modal._jQueryInterface.call($(target), config, this);
646
+ Modal._jQueryInterface.call($__default["default"](target), config, this);
632
647
  });
633
648
  /**
634
- * ------------------------------------------------------------------------
635
649
  * jQuery
636
- * ------------------------------------------------------------------------
637
650
  */
638
651
 
639
- $.fn[NAME] = Modal._jQueryInterface;
640
- $.fn[NAME].Constructor = Modal;
652
+ $__default["default"].fn[NAME] = Modal._jQueryInterface;
653
+ $__default["default"].fn[NAME].Constructor = Modal;
641
654
 
642
- $.fn[NAME].noConflict = function () {
643
- $.fn[NAME] = JQUERY_NO_CONFLICT;
655
+ $__default["default"].fn[NAME].noConflict = function () {
656
+ $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
644
657
  return Modal._jQueryInterface;
645
658
  };
646
659