bootstrap 5.0.0.beta1 → 5.0.0.beta2

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 (64) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -0
  3. data/README.md +3 -3
  4. data/assets/javascripts/bootstrap-global-this-define.js +6 -0
  5. data/assets/javascripts/bootstrap-global-this-undefine.js +2 -0
  6. data/assets/javascripts/bootstrap-sprockets.js +3 -0
  7. data/assets/javascripts/bootstrap.js +429 -486
  8. data/assets/javascripts/bootstrap.min.js +3 -3
  9. data/assets/javascripts/bootstrap/alert.js +81 -80
  10. data/assets/javascripts/bootstrap/base-component.js +75 -0
  11. data/assets/javascripts/bootstrap/button.js +60 -72
  12. data/assets/javascripts/bootstrap/carousel.js +131 -110
  13. data/assets/javascripts/bootstrap/collapse.js +94 -77
  14. data/assets/javascripts/bootstrap/dom/data.js +3 -3
  15. data/assets/javascripts/bootstrap/dom/event-handler.js +6 -5
  16. data/assets/javascripts/bootstrap/dom/manipulator.js +3 -3
  17. data/assets/javascripts/bootstrap/dom/selector-engine.js +6 -11
  18. data/assets/javascripts/bootstrap/dropdown.js +159 -90
  19. data/assets/javascripts/bootstrap/modal.js +132 -125
  20. data/assets/javascripts/bootstrap/popover.js +73 -25
  21. data/assets/javascripts/bootstrap/scrollspy.js +93 -76
  22. data/assets/javascripts/bootstrap/tab.js +78 -82
  23. data/assets/javascripts/bootstrap/toast.js +79 -75
  24. data/assets/javascripts/bootstrap/tooltip.js +207 -185
  25. data/assets/stylesheets/_bootstrap-grid.scss +3 -3
  26. data/assets/stylesheets/_bootstrap-reboot.scss +3 -3
  27. data/assets/stylesheets/_bootstrap.scss +3 -3
  28. data/assets/stylesheets/bootstrap/_accordion.scss +1 -0
  29. data/assets/stylesheets/bootstrap/_alert.scss +6 -6
  30. data/assets/stylesheets/bootstrap/_carousel.scss +12 -6
  31. data/assets/stylesheets/bootstrap/_close.scss +1 -1
  32. data/assets/stylesheets/bootstrap/_dropdown.scss +29 -15
  33. data/assets/stylesheets/bootstrap/_list-group.scss +5 -5
  34. data/assets/stylesheets/bootstrap/_nav.scss +5 -0
  35. data/assets/stylesheets/bootstrap/_navbar.scss +12 -1
  36. data/assets/stylesheets/bootstrap/_pagination.scss +2 -2
  37. data/assets/stylesheets/bootstrap/_popover.scss +0 -15
  38. data/assets/stylesheets/bootstrap/_reboot.scss +6 -6
  39. data/assets/stylesheets/bootstrap/_tables.scss +1 -1
  40. data/assets/stylesheets/bootstrap/_toasts.scss +1 -0
  41. data/assets/stylesheets/bootstrap/_utilities.scss +6 -0
  42. data/assets/stylesheets/bootstrap/_variables.scss +30 -7
  43. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +5 -5
  44. data/assets/stylesheets/bootstrap/forms/_form-check.scss +1 -0
  45. data/assets/stylesheets/bootstrap/forms/_form-range.scss +1 -1
  46. data/assets/stylesheets/bootstrap/forms/_form-select.scss +1 -2
  47. data/assets/stylesheets/bootstrap/forms/_validation.scss +1 -1
  48. data/assets/stylesheets/bootstrap/helpers/_ratio.scss +2 -2
  49. data/assets/stylesheets/bootstrap/helpers/_visually-hidden.scss +1 -1
  50. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +4 -4
  51. data/assets/stylesheets/bootstrap/mixins/_forms.scss +13 -6
  52. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +4 -0
  53. data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +3 -2
  54. data/assets/stylesheets/bootstrap/utilities/_api.scss +1 -1
  55. data/bootstrap.gemspec +1 -3
  56. data/lib/bootstrap/version.rb +2 -2
  57. data/tasks/updater/js.rb +15 -2
  58. data/test/dummy_rails/app/assets/javascripts/application.js +4 -3
  59. data/test/dummy_rails/app/views/layouts/application.html.erb +3 -1
  60. data/test/dummy_rails/app/views/pages/root.html +89 -0
  61. data/test/dummy_rails/config/application.rb +0 -3
  62. data/test/gemfiles/rails_6_1.gemfile +7 -0
  63. metadata +13 -36
  64. data/test/dummy_rails/app/views/pages/root.html.slim +0 -58
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c1cc2c87d68521826297c511800887b04e434a34f4ae58b49672245f3fb9b926
4
- data.tar.gz: 9bc5f08b431f7c6c97fbd53e3be31b042521e35aa353a469131ef52e37e183c1
3
+ metadata.gz: a5d5e37165b41217709c501fa7356d6e90ac9b98467883d26585bf8589b4d222
4
+ data.tar.gz: 9e3e6b38d01382042c579f60dcb6d1a041dc088ade0643b0c14b0af876f003f6
5
5
  SHA512:
6
- metadata.gz: edffa3b47ab10af271bb8207833d22c9d001a4d3e1c0d5cd981fc7d902651a376cd5a9791205418d861ae511c0caafea0005a91750fb4363088d4d80c9b16f50
7
- data.tar.gz: 76afc2e00e3ac067534affdfb40d4c2865cc8daad8594070c0b2a18690435398b7be287ffe5fad77017c34606c4593075e7f6572fd9469231e466461f3102aef
6
+ metadata.gz: 98cb291eaa0986ad4ee9daa440ee76837808379cb0119b005cb7cd09e4c8b06101bb7413cb6d9db6d082765e2380f401f13b72e7e7609295d421e04d5dbf820a
7
+ data.tar.gz: 78172724277a15f66d50c15289f42452700be4045587ed0c3bfae44e4dc7e97d971ede659de703f95eb97ab3be22b190260bd81907d1bf39339a4db958715fe5
data/.travis.yml CHANGED
@@ -14,6 +14,7 @@ gemfile:
14
14
  - test/gemfiles/rails_5_0.gemfile
15
15
  - test/gemfiles/rails_5_1.gemfile
16
16
  - test/gemfiles/rails_6_0.gemfile
17
+ - test/gemfiles/rails_6_1.gemfile
17
18
 
18
19
  jobs:
19
20
  exclude:
data/README.md CHANGED
@@ -20,7 +20,7 @@ Please see the appropriate guide for your environment of choice:
20
20
  Add `bootstrap` to your Gemfile:
21
21
 
22
22
  ```ruby
23
- gem 'bootstrap', '~> 5.0.0.beta1'
23
+ gem 'bootstrap', '~> 5.0.0.beta2'
24
24
  ```
25
25
 
26
26
  Ensure that `sprockets-rails` is at least v2.3.2.
@@ -47,8 +47,8 @@ Then, remove all the `*= require` and `*= require_tree` statements from the Sass
47
47
 
48
48
  Do not use `*= require` in Sass or your other stylesheets will not be able to access the Bootstrap mixins and variables.
49
49
 
50
- Bootstrap JavaScript depends on jQuery.
51
- If you're using Rails 5.1+, add the `jquery-rails` gem to your Gemfile:
50
+ Bootstrap JavaScript can optionally use jQuery.
51
+ If you're using Rails 5.1+, you can add add the `jquery-rails` gem to your Gemfile:
52
52
 
53
53
  ```ruby
54
54
  gem 'jquery-rails'
@@ -0,0 +1,6 @@
1
+ // Set a `globalThis` so that bootstrap components are defined on window.bootstrap instead of window.
2
+ window['bootstrap'] = {
3
+ Popper: window.Popper,
4
+ _originalGlobalThis: window['globalThis']
5
+ };
6
+ window['globalThis'] = window['bootstrap'];
@@ -0,0 +1,2 @@
1
+ window['globalThis'] = window['bootstrap']._originalGlobalThis;
2
+ window['bootstrap']._originalGlobalThis = null;
@@ -1,4 +1,6 @@
1
+ //= require ./bootstrap-global-this-define
1
2
  //= require ./bootstrap/dom/data
3
+ //= require ./bootstrap/base-component
2
4
  //= require ./bootstrap/dom/event-handler
3
5
  //= require ./bootstrap/alert
4
6
  //= require ./bootstrap/button
@@ -13,3 +15,4 @@
13
15
  //= require ./bootstrap/scrollspy
14
16
  //= require ./bootstrap/tab
15
17
  //= require ./bootstrap/toast
18
+ //= require ./bootstrap-global-this-undefine
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * Bootstrap v5.0.0-beta1 (https://getbootstrap.com/)
3
- * Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
2
+ * Bootstrap v5.0.0-beta2 (https://getbootstrap.com/)
3
+ * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
5
  */
6
6
  (function (global, factory) {
@@ -68,12 +68,22 @@
68
68
  function _inheritsLoose(subClass, superClass) {
69
69
  subClass.prototype = Object.create(superClass.prototype);
70
70
  subClass.prototype.constructor = subClass;
71
- subClass.__proto__ = superClass;
71
+
72
+ _setPrototypeOf(subClass, superClass);
73
+ }
74
+
75
+ function _setPrototypeOf(o, p) {
76
+ _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
77
+ o.__proto__ = p;
78
+ return o;
79
+ };
80
+
81
+ return _setPrototypeOf(o, p);
72
82
  }
73
83
 
74
84
  /**
75
85
  * --------------------------------------------------------------------------
76
- * Bootstrap (v5.0.0-beta1): util/index.js
86
+ * Bootstrap (v5.0.0-beta2): util/index.js
77
87
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
78
88
  * --------------------------------------------------------------------------
79
89
  */
@@ -107,7 +117,20 @@
107
117
  var selector = element.getAttribute('data-bs-target');
108
118
 
109
119
  if (!selector || selector === '#') {
110
- var hrefAttr = element.getAttribute('href');
120
+ var hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,
121
+ // so everything starting with `#` or `.`. If a "real" URL is used as the selector,
122
+ // `document.querySelector` will rightfully complain it is invalid.
123
+ // See https://github.com/twbs/bootstrap/issues/32273
124
+
125
+ if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) {
126
+ return null;
127
+ } // Just in case some CMS puts out a full URL with the anchor appended
128
+
129
+
130
+ if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {
131
+ hrefAttr = '#' + hrefAttr.split('#')[1];
132
+ }
133
+
111
134
  selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
112
135
  }
113
136
 
@@ -185,7 +208,7 @@
185
208
  var valueType = value && isElement(value) ? 'element' : toType(value);
186
209
 
187
210
  if (!new RegExp(expectedTypes).test(valueType)) {
188
- throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
211
+ throw new TypeError(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
189
212
  }
190
213
  });
191
214
  };
@@ -256,9 +279,27 @@
256
279
 
257
280
  var isRTL = document.documentElement.dir === 'rtl';
258
281
 
282
+ var defineJQueryPlugin = function defineJQueryPlugin(name, plugin) {
283
+ onDOMContentLoaded(function () {
284
+ var $ = getjQuery();
285
+ /* istanbul ignore if */
286
+
287
+ if ($) {
288
+ var JQUERY_NO_CONFLICT = $.fn[name];
289
+ $.fn[name] = plugin.jQueryInterface;
290
+ $.fn[name].Constructor = plugin;
291
+
292
+ $.fn[name].noConflict = function () {
293
+ $.fn[name] = JQUERY_NO_CONFLICT;
294
+ return plugin.jQueryInterface;
295
+ };
296
+ }
297
+ });
298
+ };
299
+
259
300
  /**
260
301
  * --------------------------------------------------------------------------
261
- * Bootstrap (v5.0.0-beta1): dom/data.js
302
+ * Bootstrap (v5.0.0-beta2): dom/data.js
262
303
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
263
304
  * --------------------------------------------------------------------------
264
305
  */
@@ -325,7 +366,7 @@
325
366
 
326
367
  /**
327
368
  * --------------------------------------------------------------------------
328
- * Bootstrap (v5.0.0-beta1): dom/event-handler.js
369
+ * Bootstrap (v5.0.0-beta2): dom/event-handler.js
329
370
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
330
371
  * --------------------------------------------------------------------------
331
372
  */
@@ -385,6 +426,7 @@
385
426
  event.delegateTarget = target;
386
427
 
387
428
  if (handler.oneOff) {
429
+ // eslint-disable-next-line unicorn/consistent-destructuring
388
430
  EventHandler.off(element, event.type, fn);
389
431
  }
390
432
 
@@ -604,7 +646,7 @@
604
646
  * ------------------------------------------------------------------------
605
647
  */
606
648
 
607
- var VERSION = '5.0.0-beta1';
649
+ var VERSION = '5.0.0-beta2';
608
650
 
609
651
  var BaseComponent = /*#__PURE__*/function () {
610
652
  function BaseComponent(element) {
@@ -653,9 +695,9 @@
653
695
  var EVENT_CLOSE = "close" + EVENT_KEY;
654
696
  var EVENT_CLOSED = "closed" + EVENT_KEY;
655
697
  var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
656
- var CLASSNAME_ALERT = 'alert';
657
- var CLASSNAME_FADE = 'fade';
658
- var CLASSNAME_SHOW = 'show';
698
+ var CLASS_NAME_ALERT = 'alert';
699
+ var CLASS_NAME_FADE = 'fade';
700
+ var CLASS_NAME_SHOW = 'show';
659
701
  /**
660
702
  * ------------------------------------------------------------------------
661
703
  * Class Definition
@@ -686,7 +728,7 @@
686
728
  ;
687
729
 
688
730
  _proto._getRootElement = function _getRootElement(element) {
689
- return getElementFromSelector(element) || element.closest("." + CLASSNAME_ALERT);
731
+ return getElementFromSelector(element) || element.closest("." + CLASS_NAME_ALERT);
690
732
  };
691
733
 
692
734
  _proto._triggerCloseEvent = function _triggerCloseEvent(element) {
@@ -696,16 +738,16 @@
696
738
  _proto._removeElement = function _removeElement(element) {
697
739
  var _this = this;
698
740
 
699
- element.classList.remove(CLASSNAME_SHOW);
741
+ element.classList.remove(CLASS_NAME_SHOW);
700
742
 
701
- if (!element.classList.contains(CLASSNAME_FADE)) {
743
+ if (!element.classList.contains(CLASS_NAME_FADE)) {
702
744
  this._destroyElement(element);
703
745
 
704
746
  return;
705
747
  }
706
748
 
707
749
  var transitionDuration = getTransitionDurationFromElement(element);
708
- EventHandler.one(element, TRANSITION_END, function () {
750
+ EventHandler.one(element, 'transitionend', function () {
709
751
  return _this._destroyElement(element);
710
752
  });
711
753
  emulateTransitionEnd(element, transitionDuration);
@@ -746,8 +788,8 @@
746
788
 
747
789
  _createClass(Alert, null, [{
748
790
  key: "DATA_KEY",
749
- // Getters
750
- get: function get() {
791
+ get: // Getters
792
+ function get() {
751
793
  return DATA_KEY;
752
794
  }
753
795
  }]);
@@ -769,21 +811,7 @@
769
811
  * add .Alert to jQuery only if jQuery is present
770
812
  */
771
813
 
772
- onDOMContentLoaded(function () {
773
- var $ = getjQuery();
774
- /* istanbul ignore if */
775
-
776
- if ($) {
777
- var JQUERY_NO_CONFLICT = $.fn[NAME];
778
- $.fn[NAME] = Alert.jQueryInterface;
779
- $.fn[NAME].Constructor = Alert;
780
-
781
- $.fn[NAME].noConflict = function () {
782
- $.fn[NAME] = JQUERY_NO_CONFLICT;
783
- return Alert.jQueryInterface;
784
- };
785
- }
786
- });
814
+ defineJQueryPlugin(NAME, Alert);
787
815
 
788
816
  /**
789
817
  * ------------------------------------------------------------------------
@@ -836,8 +864,8 @@
836
864
 
837
865
  _createClass(Button, null, [{
838
866
  key: "DATA_KEY",
839
- // Getters
840
- get: function get() {
867
+ get: // Getters
868
+ function get() {
841
869
  return DATA_KEY$1;
842
870
  }
843
871
  }]);
@@ -869,25 +897,11 @@
869
897
  * add .Button to jQuery only if jQuery is present
870
898
  */
871
899
 
872
- onDOMContentLoaded(function () {
873
- var $ = getjQuery();
874
- /* istanbul ignore if */
875
-
876
- if ($) {
877
- var JQUERY_NO_CONFLICT = $.fn[NAME$1];
878
- $.fn[NAME$1] = Button.jQueryInterface;
879
- $.fn[NAME$1].Constructor = Button;
880
-
881
- $.fn[NAME$1].noConflict = function () {
882
- $.fn[NAME$1] = JQUERY_NO_CONFLICT;
883
- return Button.jQueryInterface;
884
- };
885
- }
886
- });
900
+ defineJQueryPlugin(NAME$1, Button);
887
901
 
888
902
  /**
889
903
  * --------------------------------------------------------------------------
890
- * Bootstrap (v5.0.0-beta1): dom/manipulator.js
904
+ * Bootstrap (v5.0.0-beta2): dom/manipulator.js
891
905
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
892
906
  * --------------------------------------------------------------------------
893
907
  */
@@ -959,7 +973,7 @@
959
973
 
960
974
  /**
961
975
  * --------------------------------------------------------------------------
962
- * Bootstrap (v5.0.0-beta1): dom/selector-engine.js
976
+ * Bootstrap (v5.0.0-beta2): dom/selector-engine.js
963
977
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
964
978
  * --------------------------------------------------------------------------
965
979
  */
@@ -971,9 +985,6 @@
971
985
  */
972
986
  var NODE_TEXT = 3;
973
987
  var SelectorEngine = {
974
- matches: function matches(element, selector) {
975
- return element.matches(selector);
976
- },
977
988
  find: function find(selector, element) {
978
989
  var _ref;
979
990
 
@@ -993,9 +1004,7 @@
993
1004
  children: function children(element, selector) {
994
1005
  var _ref2;
995
1006
 
996
- var children = (_ref2 = []).concat.apply(_ref2, element.children);
997
-
998
- return children.filter(function (child) {
1007
+ return (_ref2 = []).concat.apply(_ref2, element.children).filter(function (child) {
999
1008
  return child.matches(selector);
1000
1009
  });
1001
1010
  },
@@ -1004,7 +1013,7 @@
1004
1013
  var ancestor = element.parentNode;
1005
1014
 
1006
1015
  while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {
1007
- if (this.matches(ancestor, selector)) {
1016
+ if (ancestor.matches(selector)) {
1008
1017
  parents.push(ancestor);
1009
1018
  }
1010
1019
 
@@ -1030,7 +1039,7 @@
1030
1039
  var next = element.nextElementSibling;
1031
1040
 
1032
1041
  while (next) {
1033
- if (this.matches(next, selector)) {
1042
+ if (next.matches(selector)) {
1034
1043
  return [next];
1035
1044
  }
1036
1045
 
@@ -1103,12 +1112,11 @@
1103
1112
  var SELECTOR_ITEM_IMG = '.carousel-item img';
1104
1113
  var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';
1105
1114
  var SELECTOR_INDICATORS = '.carousel-indicators';
1115
+ var SELECTOR_INDICATOR = '[data-bs-target]';
1106
1116
  var SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';
1107
1117
  var SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]';
1108
- var PointerType = {
1109
- TOUCH: 'touch',
1110
- PEN: 'pen'
1111
- };
1118
+ var POINTER_TYPE_TOUCH = 'touch';
1119
+ var POINTER_TYPE_PEN = 'pen';
1112
1120
  /**
1113
1121
  * ------------------------------------------------------------------------
1114
1122
  * Class Definition
@@ -1255,12 +1263,20 @@
1255
1263
  this.touchDeltaX = 0; // swipe left
1256
1264
 
1257
1265
  if (direction > 0) {
1258
- this.prev();
1266
+ if (isRTL) {
1267
+ this.next();
1268
+ } else {
1269
+ this.prev();
1270
+ }
1259
1271
  } // swipe right
1260
1272
 
1261
1273
 
1262
1274
  if (direction < 0) {
1263
- this.next();
1275
+ if (isRTL) {
1276
+ this.prev();
1277
+ } else {
1278
+ this.next();
1279
+ }
1264
1280
  }
1265
1281
  };
1266
1282
 
@@ -1291,7 +1307,7 @@
1291
1307
  var _this4 = this;
1292
1308
 
1293
1309
  var start = function start(event) {
1294
- if (_this4._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {
1310
+ if (_this4._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {
1295
1311
  _this4.touchStartX = event.clientX;
1296
1312
  } else if (!_this4._pointerEvent) {
1297
1313
  _this4.touchStartX = event.touches[0].clientX;
@@ -1308,7 +1324,7 @@
1308
1324
  };
1309
1325
 
1310
1326
  var end = function end(event) {
1311
- if (_this4._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {
1327
+ if (_this4._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {
1312
1328
  _this4.touchDeltaX = event.clientX - _this4.touchStartX;
1313
1329
  }
1314
1330
 
@@ -1367,16 +1383,22 @@
1367
1383
  return;
1368
1384
  }
1369
1385
 
1370
- switch (event.key) {
1371
- case ARROW_LEFT_KEY:
1372
- event.preventDefault();
1386
+ if (event.key === ARROW_LEFT_KEY) {
1387
+ event.preventDefault();
1388
+
1389
+ if (isRTL) {
1390
+ this.next();
1391
+ } else {
1373
1392
  this.prev();
1374
- break;
1393
+ }
1394
+ } else if (event.key === ARROW_RIGHT_KEY) {
1395
+ event.preventDefault();
1375
1396
 
1376
- case ARROW_RIGHT_KEY:
1377
- event.preventDefault();
1397
+ if (isRTL) {
1398
+ this.prev();
1399
+ } else {
1378
1400
  this.next();
1379
- break;
1401
+ }
1380
1402
  }
1381
1403
  };
1382
1404
 
@@ -1418,16 +1440,17 @@
1418
1440
 
1419
1441
  _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
1420
1442
  if (this._indicatorsElement) {
1421
- var indicators = SelectorEngine.find(SELECTOR_ACTIVE, this._indicatorsElement);
1443
+ var activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);
1444
+ activeIndicator.classList.remove(CLASS_NAME_ACTIVE$1);
1445
+ activeIndicator.removeAttribute('aria-current');
1446
+ var indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement);
1422
1447
 
1423
1448
  for (var i = 0; i < indicators.length; i++) {
1424
- indicators[i].classList.remove(CLASS_NAME_ACTIVE$1);
1425
- }
1426
-
1427
- var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
1428
-
1429
- if (nextIndicator) {
1430
- nextIndicator.classList.add(CLASS_NAME_ACTIVE$1);
1449
+ if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {
1450
+ indicators[i].classList.add(CLASS_NAME_ACTIVE$1);
1451
+ indicators[i].setAttribute('aria-current', 'true');
1452
+ break;
1453
+ }
1431
1454
  }
1432
1455
  }
1433
1456
  };
@@ -1461,19 +1484,9 @@
1461
1484
  var nextElementIndex = this._getItemIndex(nextElement);
1462
1485
 
1463
1486
  var isCycling = Boolean(this._interval);
1464
- var directionalClassName;
1465
- var orderClassName;
1466
- var eventDirectionName;
1467
-
1468
- if (direction === DIRECTION_NEXT) {
1469
- directionalClassName = CLASS_NAME_START;
1470
- orderClassName = CLASS_NAME_NEXT;
1471
- eventDirectionName = DIRECTION_LEFT;
1472
- } else {
1473
- directionalClassName = CLASS_NAME_END;
1474
- orderClassName = CLASS_NAME_PREV;
1475
- eventDirectionName = DIRECTION_RIGHT;
1476
- }
1487
+ var directionalClassName = direction === DIRECTION_NEXT ? CLASS_NAME_START : CLASS_NAME_END;
1488
+ var orderClassName = direction === DIRECTION_NEXT ? CLASS_NAME_NEXT : CLASS_NAME_PREV;
1489
+ var eventDirectionName = direction === DIRECTION_NEXT ? DIRECTION_LEFT : DIRECTION_RIGHT;
1477
1490
 
1478
1491
  if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE$1)) {
1479
1492
  this._isSliding = false;
@@ -1507,7 +1520,7 @@
1507
1520
  activeElement.classList.add(directionalClassName);
1508
1521
  nextElement.classList.add(directionalClassName);
1509
1522
  var transitionDuration = getTransitionDurationFromElement(activeElement);
1510
- EventHandler.one(activeElement, TRANSITION_END, function () {
1523
+ EventHandler.one(activeElement, 'transitionend', function () {
1511
1524
  nextElement.classList.remove(directionalClassName, orderClassName);
1512
1525
  nextElement.classList.add(CLASS_NAME_ACTIVE$1);
1513
1526
  activeElement.classList.remove(CLASS_NAME_ACTIVE$1, orderClassName, directionalClassName);
@@ -1635,21 +1648,7 @@
1635
1648
  * add .Carousel to jQuery only if jQuery is present
1636
1649
  */
1637
1650
 
1638
- onDOMContentLoaded(function () {
1639
- var $ = getjQuery();
1640
- /* istanbul ignore if */
1641
-
1642
- if ($) {
1643
- var JQUERY_NO_CONFLICT = $.fn[NAME$2];
1644
- $.fn[NAME$2] = Carousel.jQueryInterface;
1645
- $.fn[NAME$2].Constructor = Carousel;
1646
-
1647
- $.fn[NAME$2].noConflict = function () {
1648
- $.fn[NAME$2] = JQUERY_NO_CONFLICT;
1649
- return Carousel.jQueryInterface;
1650
- };
1651
- }
1652
- });
1651
+ defineJQueryPlugin(NAME$2, Carousel);
1653
1652
 
1654
1653
  /**
1655
1654
  * ------------------------------------------------------------------------
@@ -1674,7 +1673,7 @@
1674
1673
  var EVENT_HIDE = "hide" + EVENT_KEY$3;
1675
1674
  var EVENT_HIDDEN = "hidden" + EVENT_KEY$3;
1676
1675
  var EVENT_CLICK_DATA_API$3 = "click" + EVENT_KEY$3 + DATA_API_KEY$3;
1677
- var CLASS_NAME_SHOW = 'show';
1676
+ var CLASS_NAME_SHOW$1 = 'show';
1678
1677
  var CLASS_NAME_COLLAPSE = 'collapse';
1679
1678
  var CLASS_NAME_COLLAPSING = 'collapsing';
1680
1679
  var CLASS_NAME_COLLAPSED = 'collapsed';
@@ -1732,7 +1731,7 @@
1732
1731
 
1733
1732
  // Public
1734
1733
  _proto.toggle = function toggle() {
1735
- if (this._element.classList.contains(CLASS_NAME_SHOW)) {
1734
+ if (this._element.classList.contains(CLASS_NAME_SHOW$1)) {
1736
1735
  this.hide();
1737
1736
  } else {
1738
1737
  this.show();
@@ -1742,7 +1741,7 @@
1742
1741
  _proto.show = function show() {
1743
1742
  var _this2 = this;
1744
1743
 
1745
- if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {
1744
+ if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW$1)) {
1746
1745
  return;
1747
1746
  }
1748
1747
 
@@ -1814,7 +1813,7 @@
1814
1813
  var complete = function complete() {
1815
1814
  _this2._element.classList.remove(CLASS_NAME_COLLAPSING);
1816
1815
 
1817
- _this2._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
1816
+ _this2._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$1);
1818
1817
 
1819
1818
  _this2._element.style[dimension] = '';
1820
1819
 
@@ -1826,7 +1825,7 @@
1826
1825
  var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
1827
1826
  var scrollSize = "scroll" + capitalizedDimension;
1828
1827
  var transitionDuration = getTransitionDurationFromElement(this._element);
1829
- EventHandler.one(this._element, TRANSITION_END, complete);
1828
+ EventHandler.one(this._element, 'transitionend', complete);
1830
1829
  emulateTransitionEnd(this._element, transitionDuration);
1831
1830
  this._element.style[dimension] = this._element[scrollSize] + "px";
1832
1831
  };
@@ -1834,7 +1833,7 @@
1834
1833
  _proto.hide = function hide() {
1835
1834
  var _this3 = this;
1836
1835
 
1837
- if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) {
1836
+ if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW$1)) {
1838
1837
  return;
1839
1838
  }
1840
1839
 
@@ -1851,7 +1850,7 @@
1851
1850
 
1852
1851
  this._element.classList.add(CLASS_NAME_COLLAPSING);
1853
1852
 
1854
- this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
1853
+ this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$1);
1855
1854
 
1856
1855
  var triggerArrayLength = this._triggerArray.length;
1857
1856
 
@@ -1860,7 +1859,7 @@
1860
1859
  var trigger = this._triggerArray[i];
1861
1860
  var elem = getElementFromSelector(trigger);
1862
1861
 
1863
- if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {
1862
+ if (elem && !elem.classList.contains(CLASS_NAME_SHOW$1)) {
1864
1863
  trigger.classList.add(CLASS_NAME_COLLAPSED);
1865
1864
  trigger.setAttribute('aria-expanded', false);
1866
1865
  }
@@ -1881,7 +1880,7 @@
1881
1880
 
1882
1881
  this._element.style[dimension] = '';
1883
1882
  var transitionDuration = getTransitionDurationFromElement(this._element);
1884
- EventHandler.one(this._element, TRANSITION_END, complete);
1883
+ EventHandler.one(this._element, 'transitionend', complete);
1885
1884
  emulateTransitionEnd(this._element, transitionDuration);
1886
1885
  };
1887
1886
 
@@ -1939,7 +1938,7 @@
1939
1938
  return;
1940
1939
  }
1941
1940
 
1942
- var isOpen = element.classList.contains(CLASS_NAME_SHOW);
1941
+ var isOpen = element.classList.contains(CLASS_NAME_SHOW$1);
1943
1942
  triggerArray.forEach(function (elem) {
1944
1943
  if (isOpen) {
1945
1944
  elem.classList.remove(CLASS_NAME_COLLAPSED);
@@ -2003,7 +2002,7 @@
2003
2002
 
2004
2003
  EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$1, function (event) {
2005
2004
  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
2006
- if (event.target.tagName === 'A') {
2005
+ if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {
2007
2006
  event.preventDefault();
2008
2007
  }
2009
2008
 
@@ -2036,21 +2035,7 @@
2036
2035
  * add .Collapse to jQuery only if jQuery is present
2037
2036
  */
2038
2037
 
2039
- onDOMContentLoaded(function () {
2040
- var $ = getjQuery();
2041
- /* istanbul ignore if */
2042
-
2043
- if ($) {
2044
- var JQUERY_NO_CONFLICT = $.fn[NAME$3];
2045
- $.fn[NAME$3] = Collapse.jQueryInterface;
2046
- $.fn[NAME$3].Constructor = Collapse;
2047
-
2048
- $.fn[NAME$3].noConflict = function () {
2049
- $.fn[NAME$3] = JQUERY_NO_CONFLICT;
2050
- return Collapse.jQueryInterface;
2051
- };
2052
- }
2053
- });
2038
+ defineJQueryPlugin(NAME$3, Collapse);
2054
2039
 
2055
2040
  /**
2056
2041
  * ------------------------------------------------------------------------
@@ -2079,7 +2064,7 @@
2079
2064
  var EVENT_KEYDOWN_DATA_API = "keydown" + EVENT_KEY$4 + DATA_API_KEY$4;
2080
2065
  var EVENT_KEYUP_DATA_API = "keyup" + EVENT_KEY$4 + DATA_API_KEY$4;
2081
2066
  var CLASS_NAME_DISABLED = 'disabled';
2082
- var CLASS_NAME_SHOW$1 = 'show';
2067
+ var CLASS_NAME_SHOW$2 = 'show';
2083
2068
  var CLASS_NAME_DROPUP = 'dropup';
2084
2069
  var CLASS_NAME_DROPEND = 'dropend';
2085
2070
  var CLASS_NAME_DROPSTART = 'dropstart';
@@ -2096,7 +2081,7 @@
2096
2081
  var PLACEMENT_RIGHT = isRTL ? 'left-start' : 'right-start';
2097
2082
  var PLACEMENT_LEFT = isRTL ? 'right-start' : 'left-start';
2098
2083
  var Default$2 = {
2099
- offset: 0,
2084
+ offset: [0, 2],
2100
2085
  flip: true,
2101
2086
  boundary: 'clippingParents',
2102
2087
  reference: 'toggle',
@@ -2104,12 +2089,12 @@
2104
2089
  popperConfig: null
2105
2090
  };
2106
2091
  var DefaultType$2 = {
2107
- offset: '(number|string|function)',
2092
+ offset: '(array|string|function)',
2108
2093
  flip: 'boolean',
2109
2094
  boundary: '(string|element)',
2110
- reference: '(string|element)',
2095
+ reference: '(string|element|object)',
2111
2096
  display: 'string',
2112
- popperConfig: '(null|object)'
2097
+ popperConfig: '(null|object|function)'
2113
2098
  };
2114
2099
  /**
2115
2100
  * ------------------------------------------------------------------------
@@ -2143,7 +2128,7 @@
2143
2128
  return;
2144
2129
  }
2145
2130
 
2146
- var isActive = this._element.classList.contains(CLASS_NAME_SHOW$1);
2131
+ var isActive = this._element.classList.contains(CLASS_NAME_SHOW$2);
2147
2132
 
2148
2133
  Dropdown.clearMenus();
2149
2134
 
@@ -2155,7 +2140,7 @@
2155
2140
  };
2156
2141
 
2157
2142
  _proto.show = function show() {
2158
- if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || this._menu.classList.contains(CLASS_NAME_SHOW$1)) {
2143
+ if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || this._menu.classList.contains(CLASS_NAME_SHOW$2)) {
2159
2144
  return;
2160
2145
  }
2161
2146
 
@@ -2170,7 +2155,9 @@
2170
2155
  } // Totally disable Popper for Dropdowns in Navbar
2171
2156
 
2172
2157
 
2173
- if (!this._inNavbar) {
2158
+ if (this._inNavbar) {
2159
+ Manipulator.setDataAttribute(this._menu, 'popper', 'none');
2160
+ } else {
2174
2161
  if (typeof Popper__namespace === 'undefined') {
2175
2162
  throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)');
2176
2163
  }
@@ -2185,9 +2172,20 @@
2185
2172
  if (typeof this._config.reference.jquery !== 'undefined') {
2186
2173
  referenceElement = this._config.reference[0];
2187
2174
  }
2175
+ } else if (typeof this._config.reference === 'object') {
2176
+ referenceElement = this._config.reference;
2188
2177
  }
2189
2178
 
2190
- this._popper = Popper.createPopper(referenceElement, this._menu, this._getPopperConfig());
2179
+ var popperConfig = this._getPopperConfig();
2180
+
2181
+ var isDisplayStatic = popperConfig.modifiers.find(function (modifier) {
2182
+ return modifier.name === 'applyStyles' && modifier.enabled === false;
2183
+ });
2184
+ this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig);
2185
+
2186
+ if (isDisplayStatic) {
2187
+ Manipulator.setDataAttribute(this._menu, 'popper', 'static');
2188
+ }
2191
2189
  } // If this is a touch-enabled device we add extra
2192
2190
  // empty mouseover listeners to the body's immediate children;
2193
2191
  // only needed because of broken event delegation on iOS
@@ -2206,23 +2204,22 @@
2206
2204
 
2207
2205
  this._element.setAttribute('aria-expanded', true);
2208
2206
 
2209
- this._menu.classList.toggle(CLASS_NAME_SHOW$1);
2207
+ this._menu.classList.toggle(CLASS_NAME_SHOW$2);
2210
2208
 
2211
- this._element.classList.toggle(CLASS_NAME_SHOW$1);
2209
+ this._element.classList.toggle(CLASS_NAME_SHOW$2);
2212
2210
 
2213
- EventHandler.trigger(parent, EVENT_SHOWN$1, relatedTarget);
2211
+ EventHandler.trigger(this._element, EVENT_SHOWN$1, relatedTarget);
2214
2212
  };
2215
2213
 
2216
2214
  _proto.hide = function hide() {
2217
- if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || !this._menu.classList.contains(CLASS_NAME_SHOW$1)) {
2215
+ if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || !this._menu.classList.contains(CLASS_NAME_SHOW$2)) {
2218
2216
  return;
2219
2217
  }
2220
2218
 
2221
- var parent = Dropdown.getParentFromElement(this._element);
2222
2219
  var relatedTarget = {
2223
2220
  relatedTarget: this._element
2224
2221
  };
2225
- var hideEvent = EventHandler.trigger(parent, EVENT_HIDE$1, relatedTarget);
2222
+ var hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$1, relatedTarget);
2226
2223
 
2227
2224
  if (hideEvent.defaultPrevented) {
2228
2225
  return;
@@ -2232,11 +2229,12 @@
2232
2229
  this._popper.destroy();
2233
2230
  }
2234
2231
 
2235
- this._menu.classList.toggle(CLASS_NAME_SHOW$1);
2232
+ this._menu.classList.toggle(CLASS_NAME_SHOW$2);
2236
2233
 
2237
- this._element.classList.toggle(CLASS_NAME_SHOW$1);
2234
+ this._element.classList.toggle(CLASS_NAME_SHOW$2);
2238
2235
 
2239
- EventHandler.trigger(parent, EVENT_HIDDEN$1, relatedTarget);
2236
+ Manipulator.removeDataAttribute(this._menu, 'popper');
2237
+ EventHandler.trigger(this._element, EVENT_HIDDEN$1, relatedTarget);
2240
2238
  };
2241
2239
 
2242
2240
  _proto.dispose = function dispose() {
@@ -2275,6 +2273,12 @@
2275
2273
  _proto._getConfig = function _getConfig(config) {
2276
2274
  config = _extends({}, this.constructor.Default, Manipulator.getDataAttributes(this._element), config);
2277
2275
  typeCheckConfig(NAME$4, config, this.constructor.DefaultType);
2276
+
2277
+ if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {
2278
+ // Popper virtual elements require a getBoundingClientRect method
2279
+ throw new TypeError(NAME$4.toUpperCase() + ": Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.");
2280
+ }
2281
+
2278
2282
  return config;
2279
2283
  };
2280
2284
 
@@ -2307,26 +2311,51 @@
2307
2311
  return this._element.closest("." + CLASS_NAME_NAVBAR) !== null;
2308
2312
  };
2309
2313
 
2314
+ _proto._getOffset = function _getOffset() {
2315
+ var _this3 = this;
2316
+
2317
+ var offset = this._config.offset;
2318
+
2319
+ if (typeof offset === 'string') {
2320
+ return offset.split(',').map(function (val) {
2321
+ return Number.parseInt(val, 10);
2322
+ });
2323
+ }
2324
+
2325
+ if (typeof offset === 'function') {
2326
+ return function (popperData) {
2327
+ return offset(popperData, _this3._element);
2328
+ };
2329
+ }
2330
+
2331
+ return offset;
2332
+ };
2333
+
2310
2334
  _proto._getPopperConfig = function _getPopperConfig() {
2311
- var popperConfig = {
2335
+ var defaultBsPopperConfig = {
2312
2336
  placement: this._getPlacement(),
2313
2337
  modifiers: [{
2314
2338
  name: 'preventOverflow',
2315
2339
  options: {
2316
2340
  altBoundary: this._config.flip,
2317
- rootBoundary: this._config.boundary
2341
+ boundary: this._config.boundary
2342
+ }
2343
+ }, {
2344
+ name: 'offset',
2345
+ options: {
2346
+ offset: this._getOffset()
2318
2347
  }
2319
2348
  }]
2320
2349
  }; // Disable Popper if we have a static display
2321
2350
 
2322
2351
  if (this._config.display === 'static') {
2323
- popperConfig.modifiers = [{
2352
+ defaultBsPopperConfig.modifiers = [{
2324
2353
  name: 'applyStyles',
2325
2354
  enabled: false
2326
2355
  }];
2327
2356
  }
2328
2357
 
2329
- return _extends({}, popperConfig, this._config.popperConfig);
2358
+ return _extends({}, defaultBsPopperConfig, typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig);
2330
2359
  } // Static
2331
2360
  ;
2332
2361
 
@@ -2362,7 +2391,6 @@
2362
2391
  var toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE$2);
2363
2392
 
2364
2393
  for (var i = 0, len = toggles.length; i < len; i++) {
2365
- var parent = Dropdown.getParentFromElement(toggles[i]);
2366
2394
  var context = Data.getData(toggles[i], DATA_KEY$4);
2367
2395
  var relatedTarget = {
2368
2396
  relatedTarget: toggles[i]
@@ -2378,7 +2406,7 @@
2378
2406
 
2379
2407
  var dropdownMenu = context._menu;
2380
2408
 
2381
- if (!toggles[i].classList.contains(CLASS_NAME_SHOW$1)) {
2409
+ if (!toggles[i].classList.contains(CLASS_NAME_SHOW$2)) {
2382
2410
  continue;
2383
2411
  }
2384
2412
 
@@ -2386,7 +2414,7 @@
2386
2414
  continue;
2387
2415
  }
2388
2416
 
2389
- var hideEvent = EventHandler.trigger(parent, EVENT_HIDE$1, relatedTarget);
2417
+ var hideEvent = EventHandler.trigger(toggles[i], EVENT_HIDE$1, relatedTarget);
2390
2418
 
2391
2419
  if (hideEvent.defaultPrevented) {
2392
2420
  continue;
@@ -2408,9 +2436,10 @@
2408
2436
  context._popper.destroy();
2409
2437
  }
2410
2438
 
2411
- dropdownMenu.classList.remove(CLASS_NAME_SHOW$1);
2412
- toggles[i].classList.remove(CLASS_NAME_SHOW$1);
2413
- EventHandler.trigger(parent, EVENT_HIDDEN$1, relatedTarget);
2439
+ dropdownMenu.classList.remove(CLASS_NAME_SHOW$2);
2440
+ toggles[i].classList.remove(CLASS_NAME_SHOW$2);
2441
+ Manipulator.removeDataAttribute(dropdownMenu, 'popper');
2442
+ EventHandler.trigger(toggles[i], EVENT_HIDDEN$1, relatedTarget);
2414
2443
  }
2415
2444
  };
2416
2445
 
@@ -2438,7 +2467,7 @@
2438
2467
  }
2439
2468
 
2440
2469
  var parent = Dropdown.getParentFromElement(this);
2441
- var isActive = this.classList.contains(CLASS_NAME_SHOW$1);
2470
+ var isActive = this.classList.contains(CLASS_NAME_SHOW$2);
2442
2471
 
2443
2472
  if (event.key === ESCAPE_KEY) {
2444
2473
  var button = this.matches(SELECTOR_DATA_TOGGLE$2) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$2)[0];
@@ -2447,6 +2476,14 @@
2447
2476
  return;
2448
2477
  }
2449
2478
 
2479
+ if (!isActive && (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY)) {
2480
+ var _button = this.matches(SELECTOR_DATA_TOGGLE$2) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$2)[0];
2481
+
2482
+ _button.click();
2483
+
2484
+ return;
2485
+ }
2486
+
2450
2487
  if (!isActive || event.key === SPACE_KEY) {
2451
2488
  Dropdown.clearMenus();
2452
2489
  return;
@@ -2519,21 +2556,7 @@
2519
2556
  * add .Dropdown to jQuery only if jQuery is present
2520
2557
  */
2521
2558
 
2522
- onDOMContentLoaded(function () {
2523
- var $ = getjQuery();
2524
- /* istanbul ignore if */
2525
-
2526
- if ($) {
2527
- var JQUERY_NO_CONFLICT = $.fn[NAME$4];
2528
- $.fn[NAME$4] = Dropdown.jQueryInterface;
2529
- $.fn[NAME$4].Constructor = Dropdown;
2530
-
2531
- $.fn[NAME$4].noConflict = function () {
2532
- $.fn[NAME$4] = JQUERY_NO_CONFLICT;
2533
- return Dropdown.jQueryInterface;
2534
- };
2535
- }
2536
- });
2559
+ defineJQueryPlugin(NAME$4, Dropdown);
2537
2560
 
2538
2561
  /**
2539
2562
  * ------------------------------------------------------------------------
@@ -2571,8 +2594,8 @@
2571
2594
  var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';
2572
2595
  var CLASS_NAME_BACKDROP = 'modal-backdrop';
2573
2596
  var CLASS_NAME_OPEN = 'modal-open';
2574
- var CLASS_NAME_FADE = 'fade';
2575
- var CLASS_NAME_SHOW$2 = 'show';
2597
+ var CLASS_NAME_FADE$1 = 'fade';
2598
+ var CLASS_NAME_SHOW$3 = 'show';
2576
2599
  var CLASS_NAME_STATIC = 'modal-static';
2577
2600
  var SELECTOR_DIALOG = '.modal-dialog';
2578
2601
  var SELECTOR_MODAL_BODY = '.modal-body';
@@ -2619,7 +2642,7 @@
2619
2642
  return;
2620
2643
  }
2621
2644
 
2622
- if (this._element.classList.contains(CLASS_NAME_FADE)) {
2645
+ if (this._element.classList.contains(CLASS_NAME_FADE$1)) {
2623
2646
  this._isTransitioning = true;
2624
2647
  }
2625
2648
 
@@ -2678,7 +2701,7 @@
2678
2701
 
2679
2702
  this._isShown = false;
2680
2703
 
2681
- var transition = this._element.classList.contains(CLASS_NAME_FADE);
2704
+ var transition = this._element.classList.contains(CLASS_NAME_FADE$1);
2682
2705
 
2683
2706
  if (transition) {
2684
2707
  this._isTransitioning = true;
@@ -2690,14 +2713,14 @@
2690
2713
 
2691
2714
  EventHandler.off(document, EVENT_FOCUSIN);
2692
2715
 
2693
- this._element.classList.remove(CLASS_NAME_SHOW$2);
2716
+ this._element.classList.remove(CLASS_NAME_SHOW$3);
2694
2717
 
2695
2718
  EventHandler.off(this._element, EVENT_CLICK_DISMISS);
2696
2719
  EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS);
2697
2720
 
2698
2721
  if (transition) {
2699
2722
  var transitionDuration = getTransitionDurationFromElement(this._element);
2700
- EventHandler.one(this._element, TRANSITION_END, function (event) {
2723
+ EventHandler.one(this._element, 'transitionend', function (event) {
2701
2724
  return _this3._hideModal(event);
2702
2725
  });
2703
2726
  emulateTransitionEnd(this._element, transitionDuration);
@@ -2744,7 +2767,7 @@
2744
2767
  _proto._showElement = function _showElement(relatedTarget) {
2745
2768
  var _this4 = this;
2746
2769
 
2747
- var transition = this._element.classList.contains(CLASS_NAME_FADE);
2770
+ var transition = this._element.classList.contains(CLASS_NAME_FADE$1);
2748
2771
 
2749
2772
  var modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);
2750
2773
 
@@ -2771,7 +2794,7 @@
2771
2794
  reflow(this._element);
2772
2795
  }
2773
2796
 
2774
- this._element.classList.add(CLASS_NAME_SHOW$2);
2797
+ this._element.classList.add(CLASS_NAME_SHOW$3);
2775
2798
 
2776
2799
  if (this._config.focus) {
2777
2800
  this._enforceFocus();
@@ -2790,7 +2813,7 @@
2790
2813
 
2791
2814
  if (transition) {
2792
2815
  var transitionDuration = getTransitionDurationFromElement(this._dialog);
2793
- EventHandler.one(this._dialog, TRANSITION_END, transitionComplete);
2816
+ EventHandler.one(this._dialog, 'transitionend', transitionComplete);
2794
2817
  emulateTransitionEnd(this._dialog, transitionDuration);
2795
2818
  } else {
2796
2819
  transitionComplete();
@@ -2872,7 +2895,7 @@
2872
2895
  _proto._showBackdrop = function _showBackdrop(callback) {
2873
2896
  var _this9 = this;
2874
2897
 
2875
- var animate = this._element.classList.contains(CLASS_NAME_FADE) ? CLASS_NAME_FADE : '';
2898
+ var animate = this._element.classList.contains(CLASS_NAME_FADE$1) ? CLASS_NAME_FADE$1 : '';
2876
2899
 
2877
2900
  if (this._isShown && this._config.backdrop) {
2878
2901
  this._backdrop = document.createElement('div');
@@ -2904,7 +2927,7 @@
2904
2927
  reflow(this._backdrop);
2905
2928
  }
2906
2929
 
2907
- this._backdrop.classList.add(CLASS_NAME_SHOW$2);
2930
+ this._backdrop.classList.add(CLASS_NAME_SHOW$3);
2908
2931
 
2909
2932
  if (!animate) {
2910
2933
  callback();
@@ -2912,10 +2935,10 @@
2912
2935
  }
2913
2936
 
2914
2937
  var backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop);
2915
- EventHandler.one(this._backdrop, TRANSITION_END, callback);
2938
+ EventHandler.one(this._backdrop, 'transitionend', callback);
2916
2939
  emulateTransitionEnd(this._backdrop, backdropTransitionDuration);
2917
2940
  } else if (!this._isShown && this._backdrop) {
2918
- this._backdrop.classList.remove(CLASS_NAME_SHOW$2);
2941
+ this._backdrop.classList.remove(CLASS_NAME_SHOW$3);
2919
2942
 
2920
2943
  var callbackRemove = function callbackRemove() {
2921
2944
  _this9._removeBackdrop();
@@ -2923,10 +2946,10 @@
2923
2946
  callback();
2924
2947
  };
2925
2948
 
2926
- if (this._element.classList.contains(CLASS_NAME_FADE)) {
2949
+ if (this._element.classList.contains(CLASS_NAME_FADE$1)) {
2927
2950
  var _backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop);
2928
2951
 
2929
- EventHandler.one(this._backdrop, TRANSITION_END, callbackRemove);
2952
+ EventHandler.one(this._backdrop, 'transitionend', callbackRemove);
2930
2953
  emulateTransitionEnd(this._backdrop, _backdropTransitionDuration);
2931
2954
  } else {
2932
2955
  callbackRemove();
@@ -2954,12 +2977,12 @@
2954
2977
  this._element.classList.add(CLASS_NAME_STATIC);
2955
2978
 
2956
2979
  var modalTransitionDuration = getTransitionDurationFromElement(this._dialog);
2957
- EventHandler.off(this._element, TRANSITION_END);
2958
- EventHandler.one(this._element, TRANSITION_END, function () {
2980
+ EventHandler.off(this._element, 'transitionend');
2981
+ EventHandler.one(this._element, 'transitionend', function () {
2959
2982
  _this10._element.classList.remove(CLASS_NAME_STATIC);
2960
2983
 
2961
2984
  if (!isModalOverflowing) {
2962
- EventHandler.one(_this10._element, TRANSITION_END, function () {
2985
+ EventHandler.one(_this10._element, 'transitionend', function () {
2963
2986
  _this10._element.style.overflowY = '';
2964
2987
  });
2965
2988
  emulateTransitionEnd(_this10._element, modalTransitionDuration);
@@ -3000,60 +3023,50 @@
3000
3023
  var _this11 = this;
3001
3024
 
3002
3025
  if (this._isBodyOverflowing) {
3003
- // Note: DOMNode.style.paddingRight returns the actual value or '' if not set
3004
- // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
3005
- // Adjust fixed content padding
3006
- SelectorEngine.find(SELECTOR_FIXED_CONTENT).forEach(function (element) {
3007
- var actualPadding = element.style.paddingRight;
3008
- var calculatedPadding = window.getComputedStyle(element)['padding-right'];
3009
- Manipulator.setDataAttribute(element, 'padding-right', actualPadding);
3010
- element.style.paddingRight = Number.parseFloat(calculatedPadding) + _this11._scrollbarWidth + "px";
3011
- }); // Adjust sticky content margin
3012
-
3013
- SelectorEngine.find(SELECTOR_STICKY_CONTENT).forEach(function (element) {
3014
- var actualMargin = element.style.marginRight;
3015
- var calculatedMargin = window.getComputedStyle(element)['margin-right'];
3016
- Manipulator.setDataAttribute(element, 'margin-right', actualMargin);
3017
- element.style.marginRight = Number.parseFloat(calculatedMargin) - _this11._scrollbarWidth + "px";
3018
- }); // Adjust body padding
3019
-
3020
- var actualPadding = document.body.style.paddingRight;
3021
- var calculatedPadding = window.getComputedStyle(document.body)['padding-right'];
3022
- Manipulator.setDataAttribute(document.body, 'padding-right', actualPadding);
3023
- document.body.style.paddingRight = Number.parseFloat(calculatedPadding) + this._scrollbarWidth + "px";
3026
+ this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', function (calculatedValue) {
3027
+ return calculatedValue + _this11._scrollbarWidth;
3028
+ });
3029
+
3030
+ this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', function (calculatedValue) {
3031
+ return calculatedValue - _this11._scrollbarWidth;
3032
+ });
3033
+
3034
+ this._setElementAttributes('body', 'paddingRight', function (calculatedValue) {
3035
+ return calculatedValue + _this11._scrollbarWidth;
3036
+ });
3024
3037
  }
3025
3038
 
3026
3039
  document.body.classList.add(CLASS_NAME_OPEN);
3027
3040
  };
3028
3041
 
3029
- _proto._resetScrollbar = function _resetScrollbar() {
3030
- // Restore fixed content padding
3031
- SelectorEngine.find(SELECTOR_FIXED_CONTENT).forEach(function (element) {
3032
- var padding = Manipulator.getDataAttribute(element, 'padding-right');
3042
+ _proto._setElementAttributes = function _setElementAttributes(selector, styleProp, callback) {
3043
+ SelectorEngine.find(selector).forEach(function (element) {
3044
+ var actualValue = element.style[styleProp];
3045
+ var calculatedValue = window.getComputedStyle(element)[styleProp];
3046
+ Manipulator.setDataAttribute(element, styleProp, actualValue);
3047
+ element.style[styleProp] = callback(Number.parseFloat(calculatedValue)) + 'px';
3048
+ });
3049
+ };
3033
3050
 
3034
- if (typeof padding !== 'undefined') {
3035
- Manipulator.removeDataAttribute(element, 'padding-right');
3036
- element.style.paddingRight = padding;
3037
- }
3038
- }); // Restore sticky content and navbar-toggler margin
3051
+ _proto._resetScrollbar = function _resetScrollbar() {
3052
+ this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight');
3039
3053
 
3040
- SelectorEngine.find("" + SELECTOR_STICKY_CONTENT).forEach(function (element) {
3041
- var margin = Manipulator.getDataAttribute(element, 'margin-right');
3054
+ this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight');
3042
3055
 
3043
- if (typeof margin !== 'undefined') {
3044
- Manipulator.removeDataAttribute(element, 'margin-right');
3045
- element.style.marginRight = margin;
3046
- }
3047
- }); // Restore body padding
3056
+ this._resetElementAttributes('body', 'paddingRight');
3057
+ };
3048
3058
 
3049
- var padding = Manipulator.getDataAttribute(document.body, 'padding-right');
3059
+ _proto._resetElementAttributes = function _resetElementAttributes(selector, styleProp) {
3060
+ SelectorEngine.find(selector).forEach(function (element) {
3061
+ var value = Manipulator.getDataAttribute(element, styleProp);
3050
3062
 
3051
- if (typeof padding === 'undefined') {
3052
- document.body.style.paddingRight = '';
3053
- } else {
3054
- Manipulator.removeDataAttribute(document.body, 'padding-right');
3055
- document.body.style.paddingRight = padding;
3056
- }
3063
+ if (typeof value === 'undefined' && element === document.body) {
3064
+ element.style[styleProp] = '';
3065
+ } else {
3066
+ Manipulator.removeDataAttribute(element, styleProp);
3067
+ element.style[styleProp] = value;
3068
+ }
3069
+ });
3057
3070
  };
3058
3071
 
3059
3072
  _proto._getScrollbarWidth = function _getScrollbarWidth() {
@@ -3137,7 +3150,7 @@
3137
3150
  data = new Modal(target, config);
3138
3151
  }
3139
3152
 
3140
- data.show(this);
3153
+ data.toggle(this);
3141
3154
  });
3142
3155
  /**
3143
3156
  * ------------------------------------------------------------------------
@@ -3146,25 +3159,11 @@
3146
3159
  * add .Modal to jQuery only if jQuery is present
3147
3160
  */
3148
3161
 
3149
- onDOMContentLoaded(function () {
3150
- var $ = getjQuery();
3151
- /* istanbul ignore if */
3152
-
3153
- if ($) {
3154
- var JQUERY_NO_CONFLICT = $.fn[NAME$5];
3155
- $.fn[NAME$5] = Modal.jQueryInterface;
3156
- $.fn[NAME$5].Constructor = Modal;
3157
-
3158
- $.fn[NAME$5].noConflict = function () {
3159
- $.fn[NAME$5] = JQUERY_NO_CONFLICT;
3160
- return Modal.jQueryInterface;
3161
- };
3162
- }
3163
- });
3162
+ defineJQueryPlugin(NAME$5, Modal);
3164
3163
 
3165
3164
  /**
3166
3165
  * --------------------------------------------------------------------------
3167
- * Bootstrap (v5.0.0-beta1): util/sanitizer.js
3166
+ * Bootstrap (v5.0.0-beta2): util/sanitizer.js
3168
3167
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
3169
3168
  * --------------------------------------------------------------------------
3170
3169
  */
@@ -3190,7 +3189,7 @@
3190
3189
 
3191
3190
  if (allowedAttributeList.includes(attrName)) {
3192
3191
  if (uriAttrs.has(attrName)) {
3193
- return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));
3192
+ return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue));
3194
3193
  }
3195
3194
 
3196
3195
  return true;
@@ -3201,7 +3200,7 @@
3201
3200
  }); // Check if a regular expression validates the attribute.
3202
3201
 
3203
3202
  for (var i = 0, len = regExp.length; i < len; i++) {
3204
- if (attrName.match(regExp[i])) {
3203
+ if (regExp[i].test(attrName)) {
3205
3204
  return true;
3206
3205
  }
3207
3206
  }
@@ -3310,14 +3309,15 @@
3310
3309
  html: 'boolean',
3311
3310
  selector: '(string|boolean)',
3312
3311
  placement: '(string|function)',
3312
+ offset: '(array|string|function)',
3313
3313
  container: '(string|element|boolean)',
3314
- fallbackPlacements: '(null|array)',
3314
+ fallbackPlacements: 'array',
3315
3315
  boundary: '(string|element)',
3316
3316
  customClass: '(string|function)',
3317
3317
  sanitize: 'boolean',
3318
3318
  sanitizeFn: '(null|function)',
3319
3319
  allowList: 'object',
3320
- popperConfig: '(null|object)'
3320
+ popperConfig: '(null|object|function)'
3321
3321
  };
3322
3322
  var AttachmentMap = {
3323
3323
  AUTO: 'auto',
@@ -3335,8 +3335,9 @@
3335
3335
  html: false,
3336
3336
  selector: false,
3337
3337
  placement: 'top',
3338
+ offset: [0, 0],
3338
3339
  container: false,
3339
- fallbackPlacements: null,
3340
+ fallbackPlacements: ['top', 'right', 'bottom', 'left'],
3340
3341
  boundary: 'clippingParents',
3341
3342
  customClass: '',
3342
3343
  sanitize: true,
@@ -3356,9 +3357,9 @@
3356
3357
  MOUSEENTER: "mouseenter" + EVENT_KEY$6,
3357
3358
  MOUSELEAVE: "mouseleave" + EVENT_KEY$6
3358
3359
  };
3359
- var CLASS_NAME_FADE$1 = 'fade';
3360
+ var CLASS_NAME_FADE$2 = 'fade';
3360
3361
  var CLASS_NAME_MODAL = 'modal';
3361
- var CLASS_NAME_SHOW$3 = 'show';
3362
+ var CLASS_NAME_SHOW$4 = 'show';
3362
3363
  var HOVER_STATE_SHOW = 'show';
3363
3364
  var HOVER_STATE_OUT = 'out';
3364
3365
  var SELECTOR_TOOLTIP_INNER = '.tooltip-inner';
@@ -3420,13 +3421,7 @@
3420
3421
  }
3421
3422
 
3422
3423
  if (event) {
3423
- var dataKey = this.constructor.DATA_KEY;
3424
- var context = Data.getData(event.delegateTarget, dataKey);
3425
-
3426
- if (!context) {
3427
- context = new this.constructor(event.delegateTarget, this._getDelegateConfig());
3428
- Data.setData(event.delegateTarget, dataKey, context);
3429
- }
3424
+ var context = this._initializeOnDelegatedTarget(event);
3430
3425
 
3431
3426
  context._activeTrigger.click = !context._activeTrigger.click;
3432
3427
 
@@ -3436,7 +3431,7 @@
3436
3431
  context._leave(null, context);
3437
3432
  }
3438
3433
  } else {
3439
- if (this.getTipElement().classList.contains(CLASS_NAME_SHOW$3)) {
3434
+ if (this.getTipElement().classList.contains(CLASS_NAME_SHOW$4)) {
3440
3435
  this._leave(null, this);
3441
3436
 
3442
3437
  return;
@@ -3451,7 +3446,7 @@
3451
3446
  EventHandler.off(this._element, this.constructor.EVENT_KEY);
3452
3447
  EventHandler.off(this._element.closest("." + CLASS_NAME_MODAL), 'hide.bs.modal', this._hideModalHandler);
3453
3448
 
3454
- if (this.tip) {
3449
+ if (this.tip && this.tip.parentNode) {
3455
3450
  this.tip.parentNode.removeChild(this.tip);
3456
3451
  }
3457
3452
 
@@ -3478,81 +3473,83 @@
3478
3473
  throw new Error('Please use show on visible elements');
3479
3474
  }
3480
3475
 
3481
- if (this.isWithContent() && this._isEnabled) {
3482
- var showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW);
3483
- var shadowRoot = findShadowRoot(this._element);
3484
- var isInTheDom = shadowRoot === null ? this._element.ownerDocument.documentElement.contains(this._element) : shadowRoot.contains(this._element);
3476
+ if (!(this.isWithContent() && this._isEnabled)) {
3477
+ return;
3478
+ }
3485
3479
 
3486
- if (showEvent.defaultPrevented || !isInTheDom) {
3487
- return;
3488
- }
3480
+ var showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW);
3481
+ var shadowRoot = findShadowRoot(this._element);
3482
+ var isInTheDom = shadowRoot === null ? this._element.ownerDocument.documentElement.contains(this._element) : shadowRoot.contains(this._element);
3489
3483
 
3490
- var tip = this.getTipElement();
3491
- var tipId = getUID(this.constructor.NAME);
3492
- tip.setAttribute('id', tipId);
3484
+ if (showEvent.defaultPrevented || !isInTheDom) {
3485
+ return;
3486
+ }
3493
3487
 
3494
- this._element.setAttribute('aria-describedby', tipId);
3488
+ var tip = this.getTipElement();
3489
+ var tipId = getUID(this.constructor.NAME);
3490
+ tip.setAttribute('id', tipId);
3495
3491
 
3496
- this.setContent();
3492
+ this._element.setAttribute('aria-describedby', tipId);
3497
3493
 
3498
- if (this.config.animation) {
3499
- tip.classList.add(CLASS_NAME_FADE$1);
3500
- }
3494
+ this.setContent();
3501
3495
 
3502
- var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this._element) : this.config.placement;
3496
+ if (this.config.animation) {
3497
+ tip.classList.add(CLASS_NAME_FADE$2);
3498
+ }
3503
3499
 
3504
- var attachment = this._getAttachment(placement);
3500
+ var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this._element) : this.config.placement;
3505
3501
 
3506
- this._addAttachmentClass(attachment);
3502
+ var attachment = this._getAttachment(placement);
3507
3503
 
3508
- var container = this._getContainer();
3504
+ this._addAttachmentClass(attachment);
3509
3505
 
3510
- Data.setData(tip, this.constructor.DATA_KEY, this);
3506
+ var container = this._getContainer();
3511
3507
 
3512
- if (!this._element.ownerDocument.documentElement.contains(this.tip)) {
3513
- container.appendChild(tip);
3514
- }
3508
+ Data.setData(tip, this.constructor.DATA_KEY, this);
3515
3509
 
3516
- EventHandler.trigger(this._element, this.constructor.Event.INSERTED);
3517
- this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment));
3518
- tip.classList.add(CLASS_NAME_SHOW$3);
3519
- var customClass = typeof this.config.customClass === 'function' ? this.config.customClass() : this.config.customClass;
3510
+ if (!this._element.ownerDocument.documentElement.contains(this.tip)) {
3511
+ container.appendChild(tip);
3512
+ }
3520
3513
 
3521
- if (customClass) {
3522
- var _tip$classList;
3514
+ EventHandler.trigger(this._element, this.constructor.Event.INSERTED);
3515
+ this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment));
3516
+ tip.classList.add(CLASS_NAME_SHOW$4);
3517
+ var customClass = typeof this.config.customClass === 'function' ? this.config.customClass() : this.config.customClass;
3523
3518
 
3524
- (_tip$classList = tip.classList).add.apply(_tip$classList, customClass.split(' '));
3525
- } // If this is a touch-enabled device we add extra
3526
- // empty mouseover listeners to the body's immediate children;
3527
- // only needed because of broken event delegation on iOS
3528
- // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
3519
+ if (customClass) {
3520
+ var _tip$classList;
3529
3521
 
3522
+ (_tip$classList = tip.classList).add.apply(_tip$classList, customClass.split(' '));
3523
+ } // If this is a touch-enabled device we add extra
3524
+ // empty mouseover listeners to the body's immediate children;
3525
+ // only needed because of broken event delegation on iOS
3526
+ // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
3530
3527
 
3531
- if ('ontouchstart' in document.documentElement) {
3532
- var _ref;
3533
3528
 
3534
- (_ref = []).concat.apply(_ref, document.body.children).forEach(function (element) {
3535
- EventHandler.on(element, 'mouseover', noop());
3536
- });
3537
- }
3529
+ if ('ontouchstart' in document.documentElement) {
3530
+ var _ref;
3538
3531
 
3539
- var complete = function complete() {
3540
- var prevHoverState = _this2._hoverState;
3541
- _this2._hoverState = null;
3542
- EventHandler.trigger(_this2._element, _this2.constructor.Event.SHOWN);
3532
+ (_ref = []).concat.apply(_ref, document.body.children).forEach(function (element) {
3533
+ EventHandler.on(element, 'mouseover', noop());
3534
+ });
3535
+ }
3543
3536
 
3544
- if (prevHoverState === HOVER_STATE_OUT) {
3545
- _this2._leave(null, _this2);
3546
- }
3547
- };
3537
+ var complete = function complete() {
3538
+ var prevHoverState = _this2._hoverState;
3539
+ _this2._hoverState = null;
3540
+ EventHandler.trigger(_this2._element, _this2.constructor.Event.SHOWN);
3548
3541
 
3549
- if (this.tip.classList.contains(CLASS_NAME_FADE$1)) {
3550
- var transitionDuration = getTransitionDurationFromElement(this.tip);
3551
- EventHandler.one(this.tip, TRANSITION_END, complete);
3552
- emulateTransitionEnd(this.tip, transitionDuration);
3553
- } else {
3554
- complete();
3542
+ if (prevHoverState === HOVER_STATE_OUT) {
3543
+ _this2._leave(null, _this2);
3555
3544
  }
3545
+ };
3546
+
3547
+ if (this.tip.classList.contains(CLASS_NAME_FADE$2)) {
3548
+ var transitionDuration = getTransitionDurationFromElement(this.tip);
3549
+ EventHandler.one(this.tip, 'transitionend', complete);
3550
+ emulateTransitionEnd(this.tip, transitionDuration);
3551
+ } else {
3552
+ complete();
3556
3553
  }
3557
3554
  };
3558
3555
 
@@ -3589,7 +3586,7 @@
3589
3586
  return;
3590
3587
  }
3591
3588
 
3592
- tip.classList.remove(CLASS_NAME_SHOW$3); // If this is a touch-enabled device we remove the extra
3589
+ tip.classList.remove(CLASS_NAME_SHOW$4); // If this is a touch-enabled device we remove the extra
3593
3590
  // empty mouseover listeners we added for iOS support
3594
3591
 
3595
3592
  if ('ontouchstart' in document.documentElement) {
@@ -3604,9 +3601,9 @@
3604
3601
  this._activeTrigger[TRIGGER_FOCUS] = false;
3605
3602
  this._activeTrigger[TRIGGER_HOVER] = false;
3606
3603
 
3607
- if (this.tip.classList.contains(CLASS_NAME_FADE$1)) {
3604
+ if (this.tip.classList.contains(CLASS_NAME_FADE$2)) {
3608
3605
  var transitionDuration = getTransitionDurationFromElement(tip);
3609
- EventHandler.one(tip, TRANSITION_END, complete);
3606
+ EventHandler.one(tip, 'transitionend', complete);
3610
3607
  emulateTransitionEnd(tip, transitionDuration);
3611
3608
  } else {
3612
3609
  complete();
@@ -3640,7 +3637,7 @@
3640
3637
  _proto.setContent = function setContent() {
3641
3638
  var tip = this.getTipElement();
3642
3639
  this.setElementContent(SelectorEngine.findOne(SELECTOR_TOOLTIP_INNER, tip), this.getTitle());
3643
- tip.classList.remove(CLASS_NAME_FADE$1, CLASS_NAME_SHOW$3);
3640
+ tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$4);
3644
3641
  };
3645
3642
 
3646
3643
  _proto.setElementContent = function setElementContent(element, content) {
@@ -3700,26 +3697,58 @@
3700
3697
  } // Private
3701
3698
  ;
3702
3699
 
3703
- _proto._getPopperConfig = function _getPopperConfig(attachment) {
3700
+ _proto._initializeOnDelegatedTarget = function _initializeOnDelegatedTarget(event, context) {
3701
+ var dataKey = this.constructor.DATA_KEY;
3702
+ context = context || Data.getData(event.delegateTarget, dataKey);
3703
+
3704
+ if (!context) {
3705
+ context = new this.constructor(event.delegateTarget, this._getDelegateConfig());
3706
+ Data.setData(event.delegateTarget, dataKey, context);
3707
+ }
3708
+
3709
+ return context;
3710
+ };
3711
+
3712
+ _proto._getOffset = function _getOffset() {
3704
3713
  var _this4 = this;
3705
3714
 
3706
- var flipModifier = {
3707
- name: 'flip',
3708
- options: {
3709
- altBoundary: true
3710
- }
3711
- };
3715
+ var offset = this.config.offset;
3716
+
3717
+ if (typeof offset === 'string') {
3718
+ return offset.split(',').map(function (val) {
3719
+ return Number.parseInt(val, 10);
3720
+ });
3721
+ }
3712
3722
 
3713
- if (this.config.fallbackPlacements) {
3714
- flipModifier.options.fallbackPlacements = this.config.fallbackPlacements;
3723
+ if (typeof offset === 'function') {
3724
+ return function (popperData) {
3725
+ return offset(popperData, _this4._element);
3726
+ };
3715
3727
  }
3716
3728
 
3717
- var defaultBsConfig = {
3729
+ return offset;
3730
+ };
3731
+
3732
+ _proto._getPopperConfig = function _getPopperConfig(attachment) {
3733
+ var _this5 = this;
3734
+
3735
+ var defaultBsPopperConfig = {
3718
3736
  placement: attachment,
3719
- modifiers: [flipModifier, {
3737
+ modifiers: [{
3738
+ name: 'flip',
3739
+ options: {
3740
+ altBoundary: true,
3741
+ fallbackPlacements: this.config.fallbackPlacements
3742
+ }
3743
+ }, {
3744
+ name: 'offset',
3745
+ options: {
3746
+ offset: this._getOffset()
3747
+ }
3748
+ }, {
3720
3749
  name: 'preventOverflow',
3721
3750
  options: {
3722
- rootBoundary: this.config.boundary
3751
+ boundary: this.config.boundary
3723
3752
  }
3724
3753
  }, {
3725
3754
  name: 'arrow',
@@ -3731,16 +3760,16 @@
3731
3760
  enabled: true,
3732
3761
  phase: 'afterWrite',
3733
3762
  fn: function fn(data) {
3734
- return _this4._handlePopperPlacementChange(data);
3763
+ return _this5._handlePopperPlacementChange(data);
3735
3764
  }
3736
3765
  }],
3737
3766
  onFirstUpdate: function onFirstUpdate(data) {
3738
3767
  if (data.options.placement !== data.placement) {
3739
- _this4._handlePopperPlacementChange(data);
3768
+ _this5._handlePopperPlacementChange(data);
3740
3769
  }
3741
3770
  }
3742
3771
  };
3743
- return _extends({}, defaultBsConfig, this.config.popperConfig);
3772
+ return _extends({}, defaultBsPopperConfig, typeof this.config.popperConfig === 'function' ? this.config.popperConfig(defaultBsPopperConfig) : this.config.popperConfig);
3744
3773
  };
3745
3774
 
3746
3775
  _proto._addAttachmentClass = function _addAttachmentClass(attachment) {
@@ -3764,29 +3793,29 @@
3764
3793
  };
3765
3794
 
3766
3795
  _proto._setListeners = function _setListeners() {
3767
- var _this5 = this;
3796
+ var _this6 = this;
3768
3797
 
3769
3798
  var triggers = this.config.trigger.split(' ');
3770
3799
  triggers.forEach(function (trigger) {
3771
3800
  if (trigger === 'click') {
3772
- EventHandler.on(_this5._element, _this5.constructor.Event.CLICK, _this5.config.selector, function (event) {
3773
- return _this5.toggle(event);
3801
+ EventHandler.on(_this6._element, _this6.constructor.Event.CLICK, _this6.config.selector, function (event) {
3802
+ return _this6.toggle(event);
3774
3803
  });
3775
3804
  } else if (trigger !== TRIGGER_MANUAL) {
3776
- var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;
3777
- var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;
3778
- EventHandler.on(_this5._element, eventIn, _this5.config.selector, function (event) {
3779
- return _this5._enter(event);
3805
+ var eventIn = trigger === TRIGGER_HOVER ? _this6.constructor.Event.MOUSEENTER : _this6.constructor.Event.FOCUSIN;
3806
+ var eventOut = trigger === TRIGGER_HOVER ? _this6.constructor.Event.MOUSELEAVE : _this6.constructor.Event.FOCUSOUT;
3807
+ EventHandler.on(_this6._element, eventIn, _this6.config.selector, function (event) {
3808
+ return _this6._enter(event);
3780
3809
  });
3781
- EventHandler.on(_this5._element, eventOut, _this5.config.selector, function (event) {
3782
- return _this5._leave(event);
3810
+ EventHandler.on(_this6._element, eventOut, _this6.config.selector, function (event) {
3811
+ return _this6._leave(event);
3783
3812
  });
3784
3813
  }
3785
3814
  });
3786
3815
 
3787
3816
  this._hideModalHandler = function () {
3788
- if (_this5._element) {
3789
- _this5.hide();
3817
+ if (_this6._element) {
3818
+ _this6.hide();
3790
3819
  }
3791
3820
  };
3792
3821
 
@@ -3819,19 +3848,13 @@
3819
3848
  };
3820
3849
 
3821
3850
  _proto._enter = function _enter(event, context) {
3822
- var dataKey = this.constructor.DATA_KEY;
3823
- context = context || Data.getData(event.delegateTarget, dataKey);
3824
-
3825
- if (!context) {
3826
- context = new this.constructor(event.delegateTarget, this._getDelegateConfig());
3827
- Data.setData(event.delegateTarget, dataKey, context);
3828
- }
3851
+ context = this._initializeOnDelegatedTarget(event, context);
3829
3852
 
3830
3853
  if (event) {
3831
3854
  context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;
3832
3855
  }
3833
3856
 
3834
- if (context.getTipElement().classList.contains(CLASS_NAME_SHOW$3) || context._hoverState === HOVER_STATE_SHOW) {
3857
+ if (context.getTipElement().classList.contains(CLASS_NAME_SHOW$4) || context._hoverState === HOVER_STATE_SHOW) {
3835
3858
  context._hoverState = HOVER_STATE_SHOW;
3836
3859
  return;
3837
3860
  }
@@ -3852,13 +3875,7 @@
3852
3875
  };
3853
3876
 
3854
3877
  _proto._leave = function _leave(event, context) {
3855
- var dataKey = this.constructor.DATA_KEY;
3856
- context = context || Data.getData(event.delegateTarget, dataKey);
3857
-
3858
- if (!context) {
3859
- context = new this.constructor(event.delegateTarget, this._getDelegateConfig());
3860
- Data.setData(event.delegateTarget, dataKey, context);
3861
- }
3878
+ context = this._initializeOnDelegatedTarget(event, context);
3862
3879
 
3863
3880
  if (event) {
3864
3881
  context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false;
@@ -4039,21 +4056,7 @@
4039
4056
  */
4040
4057
 
4041
4058
 
4042
- onDOMContentLoaded(function () {
4043
- var $ = getjQuery();
4044
- /* istanbul ignore if */
4045
-
4046
- if ($) {
4047
- var JQUERY_NO_CONFLICT = $.fn[NAME$6];
4048
- $.fn[NAME$6] = Tooltip.jQueryInterface;
4049
- $.fn[NAME$6].Constructor = Tooltip;
4050
-
4051
- $.fn[NAME$6].noConflict = function () {
4052
- $.fn[NAME$6] = JQUERY_NO_CONFLICT;
4053
- return Tooltip.jQueryInterface;
4054
- };
4055
- }
4056
- });
4059
+ defineJQueryPlugin(NAME$6, Tooltip);
4057
4060
 
4058
4061
  /**
4059
4062
  * ------------------------------------------------------------------------
@@ -4069,6 +4072,7 @@
4069
4072
 
4070
4073
  var Default$5 = _extends({}, Tooltip.Default, {
4071
4074
  placement: 'right',
4075
+ offset: [0, 8],
4072
4076
  trigger: 'click',
4073
4077
  content: '',
4074
4078
  template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div>' + '</div>'
@@ -4090,8 +4094,8 @@
4090
4094
  MOUSEENTER: "mouseenter" + EVENT_KEY$7,
4091
4095
  MOUSELEAVE: "mouseleave" + EVENT_KEY$7
4092
4096
  };
4093
- var CLASS_NAME_FADE$2 = 'fade';
4094
- var CLASS_NAME_SHOW$4 = 'show';
4097
+ var CLASS_NAME_FADE$3 = 'fade';
4098
+ var CLASS_NAME_SHOW$5 = 'show';
4095
4099
  var SELECTOR_TITLE = '.popover-header';
4096
4100
  var SELECTOR_CONTENT = '.popover-body';
4097
4101
  /**
@@ -4126,7 +4130,7 @@
4126
4130
  }
4127
4131
 
4128
4132
  this.setElementContent(SelectorEngine.findOne(SELECTOR_CONTENT, tip), content);
4129
- tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$4);
4133
+ tip.classList.remove(CLASS_NAME_FADE$3, CLASS_NAME_SHOW$5);
4130
4134
  } // Private
4131
4135
  ;
4132
4136
 
@@ -4179,8 +4183,8 @@
4179
4183
 
4180
4184
  _createClass(Popover, null, [{
4181
4185
  key: "Default",
4182
- // Getters
4183
- get: function get() {
4186
+ get: // Getters
4187
+ function get() {
4184
4188
  return Default$5;
4185
4189
  }
4186
4190
  }, {
@@ -4220,21 +4224,7 @@
4220
4224
  */
4221
4225
 
4222
4226
 
4223
- onDOMContentLoaded(function () {
4224
- var $ = getjQuery();
4225
- /* istanbul ignore if */
4226
-
4227
- if ($) {
4228
- var JQUERY_NO_CONFLICT = $.fn[NAME$7];
4229
- $.fn[NAME$7] = Popover.jQueryInterface;
4230
- $.fn[NAME$7].Constructor = Popover;
4231
-
4232
- $.fn[NAME$7].noConflict = function () {
4233
- $.fn[NAME$7] = JQUERY_NO_CONFLICT;
4234
- return Popover.jQueryInterface;
4235
- };
4236
- }
4237
- });
4227
+ defineJQueryPlugin(NAME$7, Popover);
4238
4228
 
4239
4229
  /**
4240
4230
  * ------------------------------------------------------------------------
@@ -4290,8 +4280,8 @@
4290
4280
  _this._targets = [];
4291
4281
  _this._activeTarget = null;
4292
4282
  _this._scrollHeight = 0;
4293
- EventHandler.on(_this._scrollElement, EVENT_SCROLL, function (event) {
4294
- return _this._process(event);
4283
+ EventHandler.on(_this._scrollElement, EVENT_SCROLL, function () {
4284
+ return _this._process();
4295
4285
  });
4296
4286
 
4297
4287
  _this.refresh();
@@ -4520,21 +4510,7 @@
4520
4510
  * add .ScrollSpy to jQuery only if jQuery is present
4521
4511
  */
4522
4512
 
4523
- onDOMContentLoaded(function () {
4524
- var $ = getjQuery();
4525
- /* istanbul ignore if */
4526
-
4527
- if ($) {
4528
- var JQUERY_NO_CONFLICT = $.fn[NAME$8];
4529
- $.fn[NAME$8] = ScrollSpy.jQueryInterface;
4530
- $.fn[NAME$8].Constructor = ScrollSpy;
4531
-
4532
- $.fn[NAME$8].noConflict = function () {
4533
- $.fn[NAME$8] = JQUERY_NO_CONFLICT;
4534
- return ScrollSpy.jQueryInterface;
4535
- };
4536
- }
4537
- });
4513
+ defineJQueryPlugin(NAME$8, ScrollSpy);
4538
4514
 
4539
4515
  /**
4540
4516
  * ------------------------------------------------------------------------
@@ -4554,8 +4530,8 @@
4554
4530
  var CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';
4555
4531
  var CLASS_NAME_ACTIVE$3 = 'active';
4556
4532
  var CLASS_NAME_DISABLED$1 = 'disabled';
4557
- var CLASS_NAME_FADE$3 = 'fade';
4558
- var CLASS_NAME_SHOW$5 = 'show';
4533
+ var CLASS_NAME_FADE$4 = 'fade';
4534
+ var CLASS_NAME_SHOW$6 = 'show';
4559
4535
  var SELECTOR_DROPDOWN$1 = '.dropdown';
4560
4536
  var SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';
4561
4537
  var SELECTOR_ACTIVE$1 = '.active';
@@ -4597,14 +4573,9 @@
4597
4573
  previous = previous[previous.length - 1];
4598
4574
  }
4599
4575
 
4600
- var hideEvent = null;
4601
-
4602
- if (previous) {
4603
- hideEvent = EventHandler.trigger(previous, EVENT_HIDE$3, {
4604
- relatedTarget: this._element
4605
- });
4606
- }
4607
-
4576
+ var hideEvent = previous ? EventHandler.trigger(previous, EVENT_HIDE$3, {
4577
+ relatedTarget: this._element
4578
+ }) : null;
4608
4579
  var showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {
4609
4580
  relatedTarget: previous
4610
4581
  });
@@ -4637,7 +4608,7 @@
4637
4608
 
4638
4609
  var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? SelectorEngine.find(SELECTOR_ACTIVE_UL, container) : SelectorEngine.children(container, SELECTOR_ACTIVE$1);
4639
4610
  var active = activeElements[0];
4640
- var isTransitioning = callback && active && active.classList.contains(CLASS_NAME_FADE$3);
4611
+ var isTransitioning = callback && active && active.classList.contains(CLASS_NAME_FADE$4);
4641
4612
 
4642
4613
  var complete = function complete() {
4643
4614
  return _this2._transitionComplete(element, active, callback);
@@ -4645,8 +4616,8 @@
4645
4616
 
4646
4617
  if (active && isTransitioning) {
4647
4618
  var transitionDuration = getTransitionDurationFromElement(active);
4648
- active.classList.remove(CLASS_NAME_SHOW$5);
4649
- EventHandler.one(active, TRANSITION_END, complete);
4619
+ active.classList.remove(CLASS_NAME_SHOW$6);
4620
+ EventHandler.one(active, 'transitionend', complete);
4650
4621
  emulateTransitionEnd(active, transitionDuration);
4651
4622
  } else {
4652
4623
  complete();
@@ -4675,8 +4646,8 @@
4675
4646
 
4676
4647
  reflow(element);
4677
4648
 
4678
- if (element.classList.contains(CLASS_NAME_FADE$3)) {
4679
- element.classList.add(CLASS_NAME_SHOW$5);
4649
+ if (element.classList.contains(CLASS_NAME_FADE$4)) {
4650
+ element.classList.add(CLASS_NAME_SHOW$6);
4680
4651
  }
4681
4652
 
4682
4653
  if (element.parentNode && element.parentNode.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {
@@ -4713,8 +4684,8 @@
4713
4684
 
4714
4685
  _createClass(Tab, null, [{
4715
4686
  key: "DATA_KEY",
4716
- // Getters
4717
- get: function get() {
4687
+ get: // Getters
4688
+ function get() {
4718
4689
  return DATA_KEY$9;
4719
4690
  }
4720
4691
  }]);
@@ -4740,21 +4711,7 @@
4740
4711
  * add .Tab to jQuery only if jQuery is present
4741
4712
  */
4742
4713
 
4743
- onDOMContentLoaded(function () {
4744
- var $ = getjQuery();
4745
- /* istanbul ignore if */
4746
-
4747
- if ($) {
4748
- var JQUERY_NO_CONFLICT = $.fn[NAME$9];
4749
- $.fn[NAME$9] = Tab.jQueryInterface;
4750
- $.fn[NAME$9].Constructor = Tab;
4751
-
4752
- $.fn[NAME$9].noConflict = function () {
4753
- $.fn[NAME$9] = JQUERY_NO_CONFLICT;
4754
- return Tab.jQueryInterface;
4755
- };
4756
- }
4757
- });
4714
+ defineJQueryPlugin(NAME$9, Tab);
4758
4715
 
4759
4716
  /**
4760
4717
  * ------------------------------------------------------------------------
@@ -4770,9 +4727,9 @@
4770
4727
  var EVENT_HIDDEN$4 = "hidden" + EVENT_KEY$a;
4771
4728
  var EVENT_SHOW$4 = "show" + EVENT_KEY$a;
4772
4729
  var EVENT_SHOWN$4 = "shown" + EVENT_KEY$a;
4773
- var CLASS_NAME_FADE$4 = 'fade';
4730
+ var CLASS_NAME_FADE$5 = 'fade';
4774
4731
  var CLASS_NAME_HIDE = 'hide';
4775
- var CLASS_NAME_SHOW$6 = 'show';
4732
+ var CLASS_NAME_SHOW$7 = 'show';
4776
4733
  var CLASS_NAME_SHOWING = 'showing';
4777
4734
  var DefaultType$7 = {
4778
4735
  animation: 'boolean',
@@ -4822,13 +4779,13 @@
4822
4779
  this._clearTimeout();
4823
4780
 
4824
4781
  if (this._config.animation) {
4825
- this._element.classList.add(CLASS_NAME_FADE$4);
4782
+ this._element.classList.add(CLASS_NAME_FADE$5);
4826
4783
  }
4827
4784
 
4828
4785
  var complete = function complete() {
4829
4786
  _this2._element.classList.remove(CLASS_NAME_SHOWING);
4830
4787
 
4831
- _this2._element.classList.add(CLASS_NAME_SHOW$6);
4788
+ _this2._element.classList.add(CLASS_NAME_SHOW$7);
4832
4789
 
4833
4790
  EventHandler.trigger(_this2._element, EVENT_SHOWN$4);
4834
4791
 
@@ -4847,7 +4804,7 @@
4847
4804
 
4848
4805
  if (this._config.animation) {
4849
4806
  var transitionDuration = getTransitionDurationFromElement(this._element);
4850
- EventHandler.one(this._element, TRANSITION_END, complete);
4807
+ EventHandler.one(this._element, 'transitionend', complete);
4851
4808
  emulateTransitionEnd(this._element, transitionDuration);
4852
4809
  } else {
4853
4810
  complete();
@@ -4857,7 +4814,7 @@
4857
4814
  _proto.hide = function hide() {
4858
4815
  var _this3 = this;
4859
4816
 
4860
- if (!this._element.classList.contains(CLASS_NAME_SHOW$6)) {
4817
+ if (!this._element.classList.contains(CLASS_NAME_SHOW$7)) {
4861
4818
  return;
4862
4819
  }
4863
4820
 
@@ -4873,11 +4830,11 @@
4873
4830
  EventHandler.trigger(_this3._element, EVENT_HIDDEN$4);
4874
4831
  };
4875
4832
 
4876
- this._element.classList.remove(CLASS_NAME_SHOW$6);
4833
+ this._element.classList.remove(CLASS_NAME_SHOW$7);
4877
4834
 
4878
4835
  if (this._config.animation) {
4879
4836
  var transitionDuration = getTransitionDurationFromElement(this._element);
4880
- EventHandler.one(this._element, TRANSITION_END, complete);
4837
+ EventHandler.one(this._element, 'transitionend', complete);
4881
4838
  emulateTransitionEnd(this._element, transitionDuration);
4882
4839
  } else {
4883
4840
  complete();
@@ -4887,8 +4844,8 @@
4887
4844
  _proto.dispose = function dispose() {
4888
4845
  this._clearTimeout();
4889
4846
 
4890
- if (this._element.classList.contains(CLASS_NAME_SHOW$6)) {
4891
- this._element.classList.remove(CLASS_NAME_SHOW$6);
4847
+ if (this._element.classList.contains(CLASS_NAME_SHOW$7)) {
4848
+ this._element.classList.remove(CLASS_NAME_SHOW$7);
4892
4849
  }
4893
4850
 
4894
4851
  EventHandler.off(this._element, EVENT_CLICK_DISMISS$1);
@@ -4966,25 +4923,11 @@
4966
4923
  */
4967
4924
 
4968
4925
 
4969
- onDOMContentLoaded(function () {
4970
- var $ = getjQuery();
4971
- /* istanbul ignore if */
4972
-
4973
- if ($) {
4974
- var JQUERY_NO_CONFLICT = $.fn[NAME$a];
4975
- $.fn[NAME$a] = Toast.jQueryInterface;
4976
- $.fn[NAME$a].Constructor = Toast;
4977
-
4978
- $.fn[NAME$a].noConflict = function () {
4979
- $.fn[NAME$a] = JQUERY_NO_CONFLICT;
4980
- return Toast.jQueryInterface;
4981
- };
4982
- }
4983
- });
4926
+ defineJQueryPlugin(NAME$a, Toast);
4984
4927
 
4985
4928
  /**
4986
4929
  * --------------------------------------------------------------------------
4987
- * Bootstrap (v5.0.0-beta1): index.umd.js
4930
+ * Bootstrap (v5.0.0-beta2): index.umd.js
4988
4931
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
4989
4932
  * --------------------------------------------------------------------------
4990
4933
  */