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