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