bootstrap 4.3.0 → 4.5.3

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