bootstrap 4.3.1 → 4.6.0

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.

Potentially problematic release.


This version of bootstrap might be problematic. Click here for more details.

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