bootstrap 4.3.1 → 4.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +4 -0
  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 +376 -290
  7. data/assets/javascripts/bootstrap.min.js +2 -2
  8. data/assets/javascripts/bootstrap/alert.js +9 -10
  9. data/assets/javascripts/bootstrap/button.js +72 -25
  10. data/assets/javascripts/bootstrap/carousel.js +40 -27
  11. data/assets/javascripts/bootstrap/collapse.js +36 -22
  12. data/assets/javascripts/bootstrap/dropdown.js +75 -54
  13. data/assets/javascripts/bootstrap/modal.js +94 -59
  14. data/assets/javascripts/bootstrap/popover.js +36 -22
  15. data/assets/javascripts/bootstrap/scrollspy.js +35 -21
  16. data/assets/javascripts/bootstrap/tab.js +9 -10
  17. data/assets/javascripts/bootstrap/toast.js +58 -38
  18. data/assets/javascripts/bootstrap/tooltip.js +98 -76
  19. data/assets/javascripts/bootstrap/util.js +21 -4
  20. data/assets/stylesheets/_bootstrap-grid.scss +1 -1
  21. data/assets/stylesheets/_bootstrap-reboot.scss +1 -1
  22. data/assets/stylesheets/_bootstrap.scss +1 -1
  23. data/assets/stylesheets/bootstrap/_badge.scss +1 -1
  24. data/assets/stylesheets/bootstrap/_breadcrumb.scss +2 -1
  25. data/assets/stylesheets/bootstrap/_button-group.scss +1 -1
  26. data/assets/stylesheets/bootstrap/_buttons.scss +4 -2
  27. data/assets/stylesheets/bootstrap/_card.scss +17 -28
  28. data/assets/stylesheets/bootstrap/_carousel.scss +6 -6
  29. data/assets/stylesheets/bootstrap/_close.scss +2 -2
  30. data/assets/stylesheets/bootstrap/_code.scss +1 -1
  31. data/assets/stylesheets/bootstrap/_custom-forms.scss +22 -8
  32. data/assets/stylesheets/bootstrap/_dropdown.scss +3 -3
  33. data/assets/stylesheets/bootstrap/_forms.scss +17 -9
  34. data/assets/stylesheets/bootstrap/_functions.scss +49 -1
  35. data/assets/stylesheets/bootstrap/_grid.scss +25 -8
  36. data/assets/stylesheets/bootstrap/_images.scss +2 -2
  37. data/assets/stylesheets/bootstrap/_input-group.scss +2 -4
  38. data/assets/stylesheets/bootstrap/_list-group.scss +31 -22
  39. data/assets/stylesheets/bootstrap/_mixins.scss +3 -3
  40. data/assets/stylesheets/bootstrap/_modal.scss +26 -16
  41. data/assets/stylesheets/bootstrap/_nav.scss +3 -3
  42. data/assets/stylesheets/bootstrap/_navbar.scss +45 -15
  43. data/assets/stylesheets/bootstrap/_pagination.scss +2 -2
  44. data/assets/stylesheets/bootstrap/_popover.scss +8 -9
  45. data/assets/stylesheets/bootstrap/_print.scss +2 -2
  46. data/assets/stylesheets/bootstrap/_progress.scss +5 -2
  47. data/assets/stylesheets/bootstrap/_reboot.scss +14 -15
  48. data/assets/stylesheets/bootstrap/_root.scss +1 -0
  49. data/assets/stylesheets/bootstrap/_tables.scss +3 -3
  50. data/assets/stylesheets/bootstrap/_type.scss +2 -2
  51. data/assets/stylesheets/bootstrap/_variables.scss +42 -22
  52. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +3 -2
  53. data/assets/stylesheets/bootstrap/mixins/_badge.scss +1 -1
  54. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +5 -2
  55. data/assets/stylesheets/bootstrap/mixins/_caret.scss +8 -8
  56. data/assets/stylesheets/bootstrap/mixins/_float.scss +3 -3
  57. data/assets/stylesheets/bootstrap/mixins/_forms.scss +32 -47
  58. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +8 -3
  59. data/assets/stylesheets/bootstrap/mixins/_grid.scss +18 -0
  60. data/assets/stylesheets/bootstrap/mixins/_hover.scss +4 -4
  61. data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -1
  62. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +1 -1
  63. data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
  64. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +2 -1
  65. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +1 -1
  66. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +3 -2
  67. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +1 -1
  68. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +3 -2
  69. data/assets/stylesheets/bootstrap/utilities/_background.scss +1 -1
  70. data/assets/stylesheets/bootstrap/utilities/_text.scss +2 -2
  71. data/bootstrap.gemspec +1 -1
  72. data/lib/bootstrap/version.rb +2 -2
  73. data/test/dummy_rails/app/assets/config/manifest.js +3 -0
  74. data/test/dummy_rails/app/assets/stylesheets/.browserslistrc +1 -0
  75. data/test/support/dummy_rails_integration.rb +3 -1
  76. data/test/test_helper.rb +18 -13
  77. metadata +8 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0e32995c543ae2e6e2053b60ca3bf7f852b89c60ce26827c4b3efc87a482d2eb
4
- data.tar.gz: bec41cdf3c4c03ed3945fa20f744aa5d2a2ebd301389809548d6c08ce08a866d
3
+ metadata.gz: d4e652e6f2ad9ba67c684f7c375952d78a4c57c3f4aa3b715dc8344c0315296b
4
+ data.tar.gz: df777f6eb60e5d140371ad36df9feae91bb28afd1a355591ae84640dea0f2d1e
5
5
  SHA512:
6
- metadata.gz: 8531bfb77cf50de537a66b36c08ef2f90953c9c80d0177c70f07ea14662b219380e904f27a5aed3c55c41b835efe3e20fbebe670f74495dad7efa107afeb1fea
7
- data.tar.gz: c3a0f8311bf6e76ee646fb92cd7432bd2c482e354ed7aa58b5edad824901fc1da6cc92c631553e0c48de2b7d9ba64797fd369af124fe51ae6e88681afecfeb08
6
+ metadata.gz: be9fd21133a9d447f4a8514cada5ccc6392eae3d6c49d017c72b9c207fe3a996dd815892d244e7180aaa11a684f92d853d19cad220ba399017c808dc2fb953a2
7
+ data.tar.gz: 79259239d7db27b752ee2fb3bf715cd70bcb77036de20aae43c1d4fad56d7814fb43ddb56c21093baf7ae80ebccab3b01bfc3d1e71967380d7d4bc6008361d45
@@ -1,5 +1,9 @@
1
1
  language: ruby
2
2
  sudo: false
3
+ addons:
4
+ apt:
5
+ packages:
6
+ - chromium-browser
3
7
  rvm:
4
8
  - 2.3.8
5
9
  gemfile:
@@ -6,21 +6,9 @@ The changelog only includes changes specific to the RubyGem.
6
6
  The Bootstrap framework changes can be found in [the Releases section of twbs/bootstrap](https://github.com/twbs/bootstrap/releases).
7
7
  Release announcement posts on [the official Bootstrap blog](http://blog.getbootstrap.com) contain summaries of the most noteworthy changes made in each release of Bootstrap.
8
8
 
9
- # 4.1.1
9
+ # 4.2.1
10
10
 
11
- No gem-specific changes.
12
-
13
- # 4.1.0
14
-
15
- No gem-specific changes.
16
-
17
- # 4.0.0
18
-
19
- No gem-specific changes.
20
-
21
- # 4.0.0.beta3
22
-
23
- No gem-specific changes.
11
+ * Bootstrap rubygem now depends on SassC instead of Sass.
24
12
 
25
13
  # 4.0.0.beta2.1
26
14
 
data/README.md CHANGED
@@ -17,7 +17,7 @@ Please see the appropriate guide for your environment of choice:
17
17
  Add `bootstrap` to your Gemfile:
18
18
 
19
19
  ```ruby
20
- gem 'bootstrap', '~> 4.3.1'
20
+ gem 'bootstrap', '~> 4.4.1'
21
21
  ```
22
22
 
23
23
  Ensure that `sprockets-rails` is at least v2.3.2.
@@ -1,12 +1,12 @@
1
1
  //= require ./bootstrap/util
2
- //= require ./bootstrap/alert
3
- //= require ./bootstrap/button
4
- //= require ./bootstrap/carousel
2
+ //= require ./bootstrap/tab
3
+ //= require ./bootstrap/toast
5
4
  //= require ./bootstrap/collapse
6
- //= require ./bootstrap/dropdown
7
- //= require ./bootstrap/modal
5
+ //= require ./bootstrap/button
8
6
  //= require ./bootstrap/tooltip
9
7
  //= require ./bootstrap/popover
8
+ //= require ./bootstrap/carousel
10
9
  //= require ./bootstrap/scrollspy
11
- //= require ./bootstrap/tab
12
- //= require ./bootstrap/toast
10
+ //= require ./bootstrap/modal
11
+ //= require ./bootstrap/dropdown
12
+ //= require ./bootstrap/alert
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Bootstrap v4.3.1 (https://getbootstrap.com/)
2
+ * Bootstrap v4.4.1 (https://getbootstrap.com/)
3
3
  * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5
5
  */
@@ -7,7 +7,7 @@
7
7
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) :
8
8
  typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) :
9
9
  (global = global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper));
10
- }(this, function (exports, $, Popper) { 'use strict';
10
+ }(this, (function (exports, $, Popper) { 'use strict';
11
11
 
12
12
  $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
13
13
  Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper;
@@ -43,20 +43,35 @@
43
43
  return obj;
44
44
  }
45
45
 
46
- function _objectSpread(target) {
46
+ function ownKeys(object, enumerableOnly) {
47
+ var keys = Object.keys(object);
48
+
49
+ if (Object.getOwnPropertySymbols) {
50
+ var symbols = Object.getOwnPropertySymbols(object);
51
+ if (enumerableOnly) symbols = symbols.filter(function (sym) {
52
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
53
+ });
54
+ keys.push.apply(keys, symbols);
55
+ }
56
+
57
+ return keys;
58
+ }
59
+
60
+ function _objectSpread2(target) {
47
61
  for (var i = 1; i < arguments.length; i++) {
48
62
  var source = arguments[i] != null ? arguments[i] : {};
49
- var ownKeys = Object.keys(source);
50
63
 
51
- if (typeof Object.getOwnPropertySymbols === 'function') {
52
- ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
53
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
54
- }));
64
+ if (i % 2) {
65
+ ownKeys(Object(source), true).forEach(function (key) {
66
+ _defineProperty(target, key, source[key]);
67
+ });
68
+ } else if (Object.getOwnPropertyDescriptors) {
69
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
70
+ } else {
71
+ ownKeys(Object(source)).forEach(function (key) {
72
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
73
+ });
55
74
  }
56
-
57
- ownKeys.forEach(function (key) {
58
- _defineProperty(target, key, source[key]);
59
- });
60
75
  }
61
76
 
62
77
  return target;
@@ -70,7 +85,7 @@
70
85
 
71
86
  /**
72
87
  * --------------------------------------------------------------------------
73
- * Bootstrap (v4.3.1): util.js
88
+ * Bootstrap (v4.4.1): util.js
74
89
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
75
90
  * --------------------------------------------------------------------------
76
91
  */
@@ -219,8 +234,25 @@
219
234
  }
220
235
 
221
236
  return Util.findShadowRoot(element.parentNode);
237
+ },
238
+ jQueryDetection: function jQueryDetection() {
239
+ if (typeof $ === 'undefined') {
240
+ throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.');
241
+ }
242
+
243
+ var version = $.fn.jquery.split(' ')[0].split('.');
244
+ var minMajor = 1;
245
+ var ltMajor = 2;
246
+ var minMinor = 9;
247
+ var minPatch = 1;
248
+ var maxMajor = 4;
249
+
250
+ if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {
251
+ throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');
252
+ }
222
253
  }
223
254
  };
255
+ Util.jQueryDetection();
224
256
  setTransitionEndSupport();
225
257
 
226
258
  /**
@@ -230,7 +262,7 @@
230
262
  */
231
263
 
232
264
  var NAME = 'alert';
233
- var VERSION = '4.3.1';
265
+ var VERSION = '4.4.1';
234
266
  var DATA_KEY = 'bs.alert';
235
267
  var EVENT_KEY = "." + DATA_KEY;
236
268
  var DATA_API_KEY = '.data-api';
@@ -247,13 +279,12 @@
247
279
  ALERT: 'alert',
248
280
  FADE: 'fade',
249
281
  SHOW: 'show'
250
- /**
251
- * ------------------------------------------------------------------------
252
- * Class Definition
253
- * ------------------------------------------------------------------------
254
- */
255
-
256
282
  };
283
+ /**
284
+ * ------------------------------------------------------------------------
285
+ * Class Definition
286
+ * ------------------------------------------------------------------------
287
+ */
257
288
 
258
289
  var Alert =
259
290
  /*#__PURE__*/
@@ -395,7 +426,7 @@
395
426
  */
396
427
 
397
428
  var NAME$1 = 'button';
398
- var VERSION$1 = '4.3.1';
429
+ var VERSION$1 = '4.4.1';
399
430
  var DATA_KEY$1 = 'bs.button';
400
431
  var EVENT_KEY$1 = "." + DATA_KEY$1;
401
432
  var DATA_API_KEY$1 = '.data-api';
@@ -407,21 +438,23 @@
407
438
  };
408
439
  var Selector$1 = {
409
440
  DATA_TOGGLE_CARROT: '[data-toggle^="button"]',
410
- DATA_TOGGLE: '[data-toggle="buttons"]',
441
+ DATA_TOGGLES: '[data-toggle="buttons"]',
442
+ DATA_TOGGLE: '[data-toggle="button"]',
443
+ DATA_TOGGLES_BUTTONS: '[data-toggle="buttons"] .btn',
411
444
  INPUT: 'input:not([type="hidden"])',
412
445
  ACTIVE: '.active',
413
446
  BUTTON: '.btn'
414
447
  };
415
448
  var Event$1 = {
416
449
  CLICK_DATA_API: "click" + EVENT_KEY$1 + DATA_API_KEY$1,
417
- FOCUS_BLUR_DATA_API: "focus" + EVENT_KEY$1 + DATA_API_KEY$1 + " " + ("blur" + EVENT_KEY$1 + DATA_API_KEY$1)
418
- /**
419
- * ------------------------------------------------------------------------
420
- * Class Definition
421
- * ------------------------------------------------------------------------
422
- */
423
-
450
+ FOCUS_BLUR_DATA_API: "focus" + EVENT_KEY$1 + DATA_API_KEY$1 + " " + ("blur" + EVENT_KEY$1 + DATA_API_KEY$1),
451
+ LOAD_DATA_API: "load" + EVENT_KEY$1 + DATA_API_KEY$1
424
452
  };
453
+ /**
454
+ * ------------------------------------------------------------------------
455
+ * Class Definition
456
+ * ------------------------------------------------------------------------
457
+ */
425
458
 
426
459
  var Button =
427
460
  /*#__PURE__*/
@@ -437,7 +470,7 @@
437
470
  _proto.toggle = function toggle() {
438
471
  var triggerChangeEvent = true;
439
472
  var addAriaPressed = true;
440
- var rootElement = $(this._element).closest(Selector$1.DATA_TOGGLE)[0];
473
+ var rootElement = $(this._element).closest(Selector$1.DATA_TOGGLES)[0];
441
474
 
442
475
  if (rootElement) {
443
476
  var input = this._element.querySelector(Selector$1.INPUT);
@@ -453,13 +486,16 @@
453
486
  $(activeElement).removeClass(ClassName$1.ACTIVE);
454
487
  }
455
488
  }
489
+ } else if (input.type === 'checkbox') {
490
+ if (this._element.tagName === 'LABEL' && input.checked === this._element.classList.contains(ClassName$1.ACTIVE)) {
491
+ triggerChangeEvent = false;
492
+ }
493
+ } else {
494
+ // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input
495
+ triggerChangeEvent = false;
456
496
  }
457
497
 
458
498
  if (triggerChangeEvent) {
459
- if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) {
460
- return;
461
- }
462
-
463
499
  input.checked = !this._element.classList.contains(ClassName$1.ACTIVE);
464
500
  $(input).trigger('change');
465
501
  }
@@ -469,12 +505,14 @@
469
505
  }
470
506
  }
471
507
 
472
- if (addAriaPressed) {
473
- this._element.setAttribute('aria-pressed', !this._element.classList.contains(ClassName$1.ACTIVE));
474
- }
508
+ if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {
509
+ if (addAriaPressed) {
510
+ this._element.setAttribute('aria-pressed', !this._element.classList.contains(ClassName$1.ACTIVE));
511
+ }
475
512
 
476
- if (triggerChangeEvent) {
477
- $(this._element).toggleClass(ClassName$1.ACTIVE);
513
+ if (triggerChangeEvent) {
514
+ $(this._element).toggleClass(ClassName$1.ACTIVE);
515
+ }
478
516
  }
479
517
  };
480
518
 
@@ -516,18 +554,58 @@
516
554
 
517
555
 
518
556
  $(document).on(Event$1.CLICK_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) {
519
- event.preventDefault();
520
557
  var button = event.target;
521
558
 
522
559
  if (!$(button).hasClass(ClassName$1.BUTTON)) {
523
- button = $(button).closest(Selector$1.BUTTON);
560
+ button = $(button).closest(Selector$1.BUTTON)[0];
524
561
  }
525
562
 
526
- Button._jQueryInterface.call($(button), 'toggle');
563
+ if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {
564
+ event.preventDefault(); // work around Firefox bug #1540995
565
+ } else {
566
+ var inputBtn = button.querySelector(Selector$1.INPUT);
567
+
568
+ if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {
569
+ event.preventDefault(); // work around Firefox bug #1540995
570
+
571
+ return;
572
+ }
573
+
574
+ Button._jQueryInterface.call($(button), 'toggle');
575
+ }
527
576
  }).on(Event$1.FOCUS_BLUR_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) {
528
577
  var button = $(event.target).closest(Selector$1.BUTTON)[0];
529
578
  $(button).toggleClass(ClassName$1.FOCUS, /^focus(in)?$/.test(event.type));
530
579
  });
580
+ $(window).on(Event$1.LOAD_DATA_API, function () {
581
+ // ensure correct active class is set to match the controls' actual values/states
582
+ // find all checkboxes/readio buttons inside data-toggle groups
583
+ var buttons = [].slice.call(document.querySelectorAll(Selector$1.DATA_TOGGLES_BUTTONS));
584
+
585
+ for (var i = 0, len = buttons.length; i < len; i++) {
586
+ var button = buttons[i];
587
+ var input = button.querySelector(Selector$1.INPUT);
588
+
589
+ if (input.checked || input.hasAttribute('checked')) {
590
+ button.classList.add(ClassName$1.ACTIVE);
591
+ } else {
592
+ button.classList.remove(ClassName$1.ACTIVE);
593
+ }
594
+ } // find all button toggles
595
+
596
+
597
+ buttons = [].slice.call(document.querySelectorAll(Selector$1.DATA_TOGGLE));
598
+
599
+ for (var _i = 0, _len = buttons.length; _i < _len; _i++) {
600
+ var _button = buttons[_i];
601
+
602
+ if (_button.getAttribute('aria-pressed') === 'true') {
603
+ _button.classList.add(ClassName$1.ACTIVE);
604
+ } else {
605
+ _button.classList.remove(ClassName$1.ACTIVE);
606
+ }
607
+ }
608
+ });
531
609
  /**
532
610
  * ------------------------------------------------------------------------
533
611
  * jQuery
@@ -549,7 +627,7 @@
549
627
  */
550
628
 
551
629
  var NAME$2 = 'carousel';
552
- var VERSION$2 = '4.3.1';
630
+ var VERSION$2 = '4.4.1';
553
631
  var DATA_KEY$2 = 'bs.carousel';
554
632
  var EVENT_KEY$2 = "." + DATA_KEY$2;
555
633
  var DATA_API_KEY$2 = '.data-api';
@@ -622,13 +700,12 @@
622
700
  var PointerType = {
623
701
  TOUCH: 'touch',
624
702
  PEN: 'pen'
625
- /**
626
- * ------------------------------------------------------------------------
627
- * Class Definition
628
- * ------------------------------------------------------------------------
629
- */
630
-
631
703
  };
704
+ /**
705
+ * ------------------------------------------------------------------------
706
+ * Class Definition
707
+ * ------------------------------------------------------------------------
708
+ */
632
709
 
633
710
  var Carousel =
634
711
  /*#__PURE__*/
@@ -748,7 +825,7 @@
748
825
  ;
749
826
 
750
827
  _proto._getConfig = function _getConfig(config) {
751
- config = _objectSpread({}, Default, config);
828
+ config = _objectSpread2({}, Default, {}, config);
752
829
  Util.typeCheckConfig(NAME$2, config, DefaultType);
753
830
  return config;
754
831
  };
@@ -760,7 +837,8 @@
760
837
  return;
761
838
  }
762
839
 
763
- var direction = absDeltax / this.touchDeltaX; // swipe left
840
+ var direction = absDeltax / this.touchDeltaX;
841
+ this.touchDeltaX = 0; // swipe left
764
842
 
765
843
  if (direction > 0) {
766
844
  this.prev();
@@ -886,8 +964,6 @@
886
964
  event.preventDefault();
887
965
  this.next();
888
966
  break;
889
-
890
- default:
891
967
  }
892
968
  };
893
969
 
@@ -1039,10 +1115,10 @@
1039
1115
  return this.each(function () {
1040
1116
  var data = $(this).data(DATA_KEY$2);
1041
1117
 
1042
- var _config = _objectSpread({}, Default, $(this).data());
1118
+ var _config = _objectSpread2({}, Default, {}, $(this).data());
1043
1119
 
1044
1120
  if (typeof config === 'object') {
1045
- _config = _objectSpread({}, _config, config);
1121
+ _config = _objectSpread2({}, _config, {}, config);
1046
1122
  }
1047
1123
 
1048
1124
  var action = typeof config === 'string' ? config : _config.slide;
@@ -1080,7 +1156,7 @@
1080
1156
  return;
1081
1157
  }
1082
1158
 
1083
- var config = _objectSpread({}, $(target).data(), $(this).data());
1159
+ var config = _objectSpread2({}, $(target).data(), {}, $(this).data());
1084
1160
 
1085
1161
  var slideIndex = this.getAttribute('data-slide-to');
1086
1162
 
@@ -1149,7 +1225,7 @@
1149
1225
  */
1150
1226
 
1151
1227
  var NAME$3 = 'collapse';
1152
- var VERSION$3 = '4.3.1';
1228
+ var VERSION$3 = '4.4.1';
1153
1229
  var DATA_KEY$3 = 'bs.collapse';
1154
1230
  var EVENT_KEY$3 = "." + DATA_KEY$3;
1155
1231
  var DATA_API_KEY$3 = '.data-api';
@@ -1182,13 +1258,12 @@
1182
1258
  var Selector$3 = {
1183
1259
  ACTIVES: '.show, .collapsing',
1184
1260
  DATA_TOGGLE: '[data-toggle="collapse"]'
1185
- /**
1186
- * ------------------------------------------------------------------------
1187
- * Class Definition
1188
- * ------------------------------------------------------------------------
1189
- */
1190
-
1191
1261
  };
1262
+ /**
1263
+ * ------------------------------------------------------------------------
1264
+ * Class Definition
1265
+ * ------------------------------------------------------------------------
1266
+ */
1192
1267
 
1193
1268
  var Collapse =
1194
1269
  /*#__PURE__*/
@@ -1375,7 +1450,7 @@
1375
1450
  ;
1376
1451
 
1377
1452
  _proto._getConfig = function _getConfig(config) {
1378
- config = _objectSpread({}, Default$1, config);
1453
+ config = _objectSpread2({}, Default$1, {}, config);
1379
1454
  config.toggle = Boolean(config.toggle); // Coerce string values
1380
1455
 
1381
1456
  Util.typeCheckConfig(NAME$3, config, DefaultType$1);
@@ -1429,7 +1504,7 @@
1429
1504
  var $this = $(this);
1430
1505
  var data = $this.data(DATA_KEY$3);
1431
1506
 
1432
- var _config = _objectSpread({}, Default$1, $this.data(), typeof config === 'object' && config ? config : {});
1507
+ var _config = _objectSpread2({}, Default$1, {}, $this.data(), {}, typeof config === 'object' && config ? config : {});
1433
1508
 
1434
1509
  if (!data && _config.toggle && /show|hide/.test(config)) {
1435
1510
  _config.toggle = false;
@@ -1509,7 +1584,7 @@
1509
1584
  */
1510
1585
 
1511
1586
  var NAME$4 = 'dropdown';
1512
- var VERSION$4 = '4.3.1';
1587
+ var VERSION$4 = '4.4.1';
1513
1588
  var DATA_KEY$4 = 'bs.dropdown';
1514
1589
  var EVENT_KEY$4 = "." + DATA_KEY$4;
1515
1590
  var DATA_API_KEY$4 = '.data-api';
@@ -1569,21 +1644,22 @@
1569
1644
  flip: true,
1570
1645
  boundary: 'scrollParent',
1571
1646
  reference: 'toggle',
1572
- display: 'dynamic'
1647
+ display: 'dynamic',
1648
+ popperConfig: null
1573
1649
  };
1574
1650
  var DefaultType$2 = {
1575
1651
  offset: '(number|string|function)',
1576
1652
  flip: 'boolean',
1577
1653
  boundary: '(string|element)',
1578
1654
  reference: '(string|element)',
1579
- display: 'string'
1580
- /**
1581
- * ------------------------------------------------------------------------
1582
- * Class Definition
1583
- * ------------------------------------------------------------------------
1584
- */
1585
-
1655
+ display: 'string',
1656
+ popperConfig: '(null|object)'
1586
1657
  };
1658
+ /**
1659
+ * ------------------------------------------------------------------------
1660
+ * Class Definition
1661
+ * ------------------------------------------------------------------------
1662
+ */
1587
1663
 
1588
1664
  var Dropdown =
1589
1665
  /*#__PURE__*/
@@ -1607,8 +1683,6 @@
1607
1683
  return;
1608
1684
  }
1609
1685
 
1610
- var parent = Dropdown._getParentFromElement(this._element);
1611
-
1612
1686
  var isActive = $(this._menu).hasClass(ClassName$4.SHOW);
1613
1687
 
1614
1688
  Dropdown._clearMenus();
@@ -1617,10 +1691,25 @@
1617
1691
  return;
1618
1692
  }
1619
1693
 
1694
+ this.show(true);
1695
+ };
1696
+
1697
+ _proto.show = function show(usePopper) {
1698
+ if (usePopper === void 0) {
1699
+ usePopper = false;
1700
+ }
1701
+
1702
+ if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || $(this._menu).hasClass(ClassName$4.SHOW)) {
1703
+ return;
1704
+ }
1705
+
1620
1706
  var relatedTarget = {
1621
1707
  relatedTarget: this._element
1622
1708
  };
1623
1709
  var showEvent = $.Event(Event$4.SHOW, relatedTarget);
1710
+
1711
+ var parent = Dropdown._getParentFromElement(this._element);
1712
+
1624
1713
  $(parent).trigger(showEvent);
1625
1714
 
1626
1715
  if (showEvent.isDefaultPrevented()) {
@@ -1628,7 +1717,7 @@
1628
1717
  } // Disable totally Popper.js for Dropdown in Navbar
1629
1718
 
1630
1719
 
1631
- if (!this._inNavbar) {
1720
+ if (!this._inNavbar && usePopper) {
1632
1721
  /**
1633
1722
  * Check for Popper dependency
1634
1723
  * Popper - https://popper.js.org
@@ -1675,28 +1764,6 @@
1675
1764
  $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget));
1676
1765
  };
1677
1766
 
1678
- _proto.show = function show() {
1679
- if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || $(this._menu).hasClass(ClassName$4.SHOW)) {
1680
- return;
1681
- }
1682
-
1683
- var relatedTarget = {
1684
- relatedTarget: this._element
1685
- };
1686
- var showEvent = $.Event(Event$4.SHOW, relatedTarget);
1687
-
1688
- var parent = Dropdown._getParentFromElement(this._element);
1689
-
1690
- $(parent).trigger(showEvent);
1691
-
1692
- if (showEvent.isDefaultPrevented()) {
1693
- return;
1694
- }
1695
-
1696
- $(this._menu).toggleClass(ClassName$4.SHOW);
1697
- $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget));
1698
- };
1699
-
1700
1767
  _proto.hide = function hide() {
1701
1768
  if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || !$(this._menu).hasClass(ClassName$4.SHOW)) {
1702
1769
  return;
@@ -1715,6 +1782,10 @@
1715
1782
  return;
1716
1783
  }
1717
1784
 
1785
+ if (this._popper) {
1786
+ this._popper.destroy();
1787
+ }
1788
+
1718
1789
  $(this._menu).toggleClass(ClassName$4.SHOW);
1719
1790
  $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget));
1720
1791
  };
@@ -1753,7 +1824,7 @@
1753
1824
  };
1754
1825
 
1755
1826
  _proto._getConfig = function _getConfig(config) {
1756
- config = _objectSpread({}, this.constructor.Default, $(this._element).data(), config);
1827
+ config = _objectSpread2({}, this.constructor.Default, {}, $(this._element).data(), {}, config);
1757
1828
  Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);
1758
1829
  return config;
1759
1830
  };
@@ -1802,7 +1873,7 @@
1802
1873
 
1803
1874
  if (typeof this._config.offset === 'function') {
1804
1875
  offset.fn = function (data) {
1805
- data.offsets = _objectSpread({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {});
1876
+ data.offsets = _objectSpread2({}, data.offsets, {}, _this2._config.offset(data.offsets, _this2._element) || {});
1806
1877
  return data;
1807
1878
  };
1808
1879
  } else {
@@ -1823,9 +1894,8 @@
1823
1894
  preventOverflow: {
1824
1895
  boundariesElement: this._config.boundary
1825
1896
  }
1826
- } // Disable Popper.js if we have a static display
1827
-
1828
- };
1897
+ }
1898
+ }; // Disable Popper.js if we have a static display
1829
1899
 
1830
1900
  if (this._config.display === 'static') {
1831
1901
  popperConfig.modifiers.applyStyle = {
@@ -1833,7 +1903,7 @@
1833
1903
  };
1834
1904
  }
1835
1905
 
1836
- return popperConfig;
1906
+ return _objectSpread2({}, popperConfig, {}, this._config.popperConfig);
1837
1907
  } // Static
1838
1908
  ;
1839
1909
 
@@ -1905,6 +1975,11 @@
1905
1975
  }
1906
1976
 
1907
1977
  toggles[i].setAttribute('aria-expanded', 'false');
1978
+
1979
+ if (context._popper) {
1980
+ context._popper.destroy();
1981
+ }
1982
+
1908
1983
  $(dropdownMenu).removeClass(ClassName$4.SHOW);
1909
1984
  $(parent).removeClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget));
1910
1985
  }
@@ -1945,6 +2020,10 @@
1945
2020
 
1946
2021
  var isActive = $(parent).hasClass(ClassName$4.SHOW);
1947
2022
 
2023
+ if (!isActive && event.which === ESCAPE_KEYCODE) {
2024
+ return;
2025
+ }
2026
+
1948
2027
  if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
1949
2028
  if (event.which === ESCAPE_KEYCODE) {
1950
2029
  var toggle = parent.querySelector(Selector$4.DATA_TOGGLE);
@@ -1955,7 +2034,9 @@
1955
2034
  return;
1956
2035
  }
1957
2036
 
1958
- var items = [].slice.call(parent.querySelectorAll(Selector$4.VISIBLE_ITEMS));
2037
+ var items = [].slice.call(parent.querySelectorAll(Selector$4.VISIBLE_ITEMS)).filter(function (item) {
2038
+ return $(item).is(':visible');
2039
+ });
1959
2040
 
1960
2041
  if (items.length === 0) {
1961
2042
  return;
@@ -2035,7 +2116,7 @@
2035
2116
  */
2036
2117
 
2037
2118
  var NAME$5 = 'modal';
2038
- var VERSION$5 = '4.3.1';
2119
+ var VERSION$5 = '4.4.1';
2039
2120
  var DATA_KEY$5 = 'bs.modal';
2040
2121
  var EVENT_KEY$5 = "." + DATA_KEY$5;
2041
2122
  var DATA_API_KEY$5 = '.data-api';
@@ -2056,6 +2137,7 @@
2056
2137
  };
2057
2138
  var Event$5 = {
2058
2139
  HIDE: "hide" + EVENT_KEY$5,
2140
+ HIDE_PREVENTED: "hidePrevented" + EVENT_KEY$5,
2059
2141
  HIDDEN: "hidden" + EVENT_KEY$5,
2060
2142
  SHOW: "show" + EVENT_KEY$5,
2061
2143
  SHOWN: "shown" + EVENT_KEY$5,
@@ -2073,7 +2155,8 @@
2073
2155
  BACKDROP: 'modal-backdrop',
2074
2156
  OPEN: 'modal-open',
2075
2157
  FADE: 'fade',
2076
- SHOW: 'show'
2158
+ SHOW: 'show',
2159
+ STATIC: 'modal-static'
2077
2160
  };
2078
2161
  var Selector$5 = {
2079
2162
  DIALOG: '.modal-dialog',
@@ -2082,13 +2165,12 @@
2082
2165
  DATA_DISMISS: '[data-dismiss="modal"]',
2083
2166
  FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
2084
2167
  STICKY_CONTENT: '.sticky-top'
2085
- /**
2086
- * ------------------------------------------------------------------------
2087
- * Class Definition
2088
- * ------------------------------------------------------------------------
2089
- */
2090
-
2091
2168
  };
2169
+ /**
2170
+ * ------------------------------------------------------------------------
2171
+ * Class Definition
2172
+ * ------------------------------------------------------------------------
2173
+ */
2092
2174
 
2093
2175
  var Modal =
2094
2176
  /*#__PURE__*/
@@ -2234,15 +2316,40 @@
2234
2316
  ;
2235
2317
 
2236
2318
  _proto._getConfig = function _getConfig(config) {
2237
- config = _objectSpread({}, Default$3, config);
2319
+ config = _objectSpread2({}, Default$3, {}, config);
2238
2320
  Util.typeCheckConfig(NAME$5, config, DefaultType$3);
2239
2321
  return config;
2240
2322
  };
2241
2323
 
2242
- _proto._showElement = function _showElement(relatedTarget) {
2324
+ _proto._triggerBackdropTransition = function _triggerBackdropTransition() {
2243
2325
  var _this3 = this;
2244
2326
 
2327
+ if (this._config.backdrop === 'static') {
2328
+ var hideEventPrevented = $.Event(Event$5.HIDE_PREVENTED);
2329
+ $(this._element).trigger(hideEventPrevented);
2330
+
2331
+ if (hideEventPrevented.defaultPrevented) {
2332
+ return;
2333
+ }
2334
+
2335
+ this._element.classList.add(ClassName$5.STATIC);
2336
+
2337
+ var modalTransitionDuration = Util.getTransitionDurationFromElement(this._element);
2338
+ $(this._element).one(Util.TRANSITION_END, function () {
2339
+ _this3._element.classList.remove(ClassName$5.STATIC);
2340
+ }).emulateTransitionEnd(modalTransitionDuration);
2341
+
2342
+ this._element.focus();
2343
+ } else {
2344
+ this.hide();
2345
+ }
2346
+ };
2347
+
2348
+ _proto._showElement = function _showElement(relatedTarget) {
2349
+ var _this4 = this;
2350
+
2245
2351
  var transition = $(this._element).hasClass(ClassName$5.FADE);
2352
+ var modalBody = this._dialog ? this._dialog.querySelector(Selector$5.MODAL_BODY) : null;
2246
2353
 
2247
2354
  if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
2248
2355
  // Don't move modal's DOM position
@@ -2255,8 +2362,8 @@
2255
2362
 
2256
2363
  this._element.setAttribute('aria-modal', true);
2257
2364
 
2258
- if ($(this._dialog).hasClass(ClassName$5.SCROLLABLE)) {
2259
- this._dialog.querySelector(Selector$5.MODAL_BODY).scrollTop = 0;
2365
+ if ($(this._dialog).hasClass(ClassName$5.SCROLLABLE) && modalBody) {
2366
+ modalBody.scrollTop = 0;
2260
2367
  } else {
2261
2368
  this._element.scrollTop = 0;
2262
2369
  }
@@ -2276,12 +2383,12 @@
2276
2383
  });
2277
2384
 
2278
2385
  var transitionComplete = function transitionComplete() {
2279
- if (_this3._config.focus) {
2280
- _this3._element.focus();
2386
+ if (_this4._config.focus) {
2387
+ _this4._element.focus();
2281
2388
  }
2282
2389
 
2283
- _this3._isTransitioning = false;
2284
- $(_this3._element).trigger(shownEvent);
2390
+ _this4._isTransitioning = false;
2391
+ $(_this4._element).trigger(shownEvent);
2285
2392
  };
2286
2393
 
2287
2394
  if (transition) {
@@ -2293,25 +2400,23 @@
2293
2400
  };
2294
2401
 
2295
2402
  _proto._enforceFocus = function _enforceFocus() {
2296
- var _this4 = this;
2403
+ var _this5 = this;
2297
2404
 
2298
2405
  $(document).off(Event$5.FOCUSIN) // Guard against infinite focus loop
2299
2406
  .on(Event$5.FOCUSIN, function (event) {
2300
- if (document !== event.target && _this4._element !== event.target && $(_this4._element).has(event.target).length === 0) {
2301
- _this4._element.focus();
2407
+ if (document !== event.target && _this5._element !== event.target && $(_this5._element).has(event.target).length === 0) {
2408
+ _this5._element.focus();
2302
2409
  }
2303
2410
  });
2304
2411
  };
2305
2412
 
2306
2413
  _proto._setEscapeEvent = function _setEscapeEvent() {
2307
- var _this5 = this;
2414
+ var _this6 = this;
2308
2415
 
2309
2416
  if (this._isShown && this._config.keyboard) {
2310
2417
  $(this._element).on(Event$5.KEYDOWN_DISMISS, function (event) {
2311
2418
  if (event.which === ESCAPE_KEYCODE$1) {
2312
- event.preventDefault();
2313
-
2314
- _this5.hide();
2419
+ _this6._triggerBackdropTransition();
2315
2420
  }
2316
2421
  });
2317
2422
  } else if (!this._isShown) {
@@ -2320,11 +2425,11 @@
2320
2425
  };
2321
2426
 
2322
2427
  _proto._setResizeEvent = function _setResizeEvent() {
2323
- var _this6 = this;
2428
+ var _this7 = this;
2324
2429
 
2325
2430
  if (this._isShown) {
2326
2431
  $(window).on(Event$5.RESIZE, function (event) {
2327
- return _this6.handleUpdate(event);
2432
+ return _this7.handleUpdate(event);
2328
2433
  });
2329
2434
  } else {
2330
2435
  $(window).off(Event$5.RESIZE);
@@ -2332,7 +2437,7 @@
2332
2437
  };
2333
2438
 
2334
2439
  _proto._hideModal = function _hideModal() {
2335
- var _this7 = this;
2440
+ var _this8 = this;
2336
2441
 
2337
2442
  this._element.style.display = 'none';
2338
2443
 
@@ -2345,11 +2450,11 @@
2345
2450
  this._showBackdrop(function () {
2346
2451
  $(document.body).removeClass(ClassName$5.OPEN);
2347
2452
 
2348
- _this7._resetAdjustments();
2453
+ _this8._resetAdjustments();
2349
2454
 
2350
- _this7._resetScrollbar();
2455
+ _this8._resetScrollbar();
2351
2456
 
2352
- $(_this7._element).trigger(Event$5.HIDDEN);
2457
+ $(_this8._element).trigger(Event$5.HIDDEN);
2353
2458
  });
2354
2459
  };
2355
2460
 
@@ -2361,7 +2466,7 @@
2361
2466
  };
2362
2467
 
2363
2468
  _proto._showBackdrop = function _showBackdrop(callback) {
2364
- var _this8 = this;
2469
+ var _this9 = this;
2365
2470
 
2366
2471
  var animate = $(this._element).hasClass(ClassName$5.FADE) ? ClassName$5.FADE : '';
2367
2472
 
@@ -2375,8 +2480,8 @@
2375
2480
 
2376
2481
  $(this._backdrop).appendTo(document.body);
2377
2482
  $(this._element).on(Event$5.CLICK_DISMISS, function (event) {
2378
- if (_this8._ignoreBackdropClick) {
2379
- _this8._ignoreBackdropClick = false;
2483
+ if (_this9._ignoreBackdropClick) {
2484
+ _this9._ignoreBackdropClick = false;
2380
2485
  return;
2381
2486
  }
2382
2487
 
@@ -2384,11 +2489,7 @@
2384
2489
  return;
2385
2490
  }
2386
2491
 
2387
- if (_this8._config.backdrop === 'static') {
2388
- _this8._element.focus();
2389
- } else {
2390
- _this8.hide();
2391
- }
2492
+ _this9._triggerBackdropTransition();
2392
2493
  });
2393
2494
 
2394
2495
  if (animate) {
@@ -2412,7 +2513,7 @@
2412
2513
  $(this._backdrop).removeClass(ClassName$5.SHOW);
2413
2514
 
2414
2515
  var callbackRemove = function callbackRemove() {
2415
- _this8._removeBackdrop();
2516
+ _this9._removeBackdrop();
2416
2517
 
2417
2518
  if (callback) {
2418
2519
  callback();
@@ -2459,7 +2560,7 @@
2459
2560
  };
2460
2561
 
2461
2562
  _proto._setScrollbar = function _setScrollbar() {
2462
- var _this9 = this;
2563
+ var _this10 = this;
2463
2564
 
2464
2565
  if (this._isBodyOverflowing) {
2465
2566
  // Note: DOMNode.style.paddingRight returns the actual value or '' if not set
@@ -2470,13 +2571,13 @@
2470
2571
  $(fixedContent).each(function (index, element) {
2471
2572
  var actualPadding = element.style.paddingRight;
2472
2573
  var calculatedPadding = $(element).css('padding-right');
2473
- $(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px");
2574
+ $(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + "px");
2474
2575
  }); // Adjust sticky content margin
2475
2576
 
2476
2577
  $(stickyContent).each(function (index, element) {
2477
2578
  var actualMargin = element.style.marginRight;
2478
2579
  var calculatedMargin = $(element).css('margin-right');
2479
- $(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px");
2580
+ $(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + "px");
2480
2581
  }); // Adjust body padding
2481
2582
 
2482
2583
  var actualPadding = document.body.style.paddingRight;
@@ -2525,7 +2626,7 @@
2525
2626
  return this.each(function () {
2526
2627
  var data = $(this).data(DATA_KEY$5);
2527
2628
 
2528
- var _config = _objectSpread({}, Default$3, $(this).data(), typeof config === 'object' && config ? config : {});
2629
+ var _config = _objectSpread2({}, Default$3, {}, $(this).data(), {}, typeof config === 'object' && config ? config : {});
2529
2630
 
2530
2631
  if (!data) {
2531
2632
  data = new Modal(this, _config);
@@ -2566,7 +2667,7 @@
2566
2667
 
2567
2668
 
2568
2669
  $(document).on(Event$5.CLICK_DATA_API, Selector$5.DATA_TOGGLE, function (event) {
2569
- var _this10 = this;
2670
+ var _this11 = this;
2570
2671
 
2571
2672
  var target;
2572
2673
  var selector = Util.getSelectorFromElement(this);
@@ -2575,7 +2676,7 @@
2575
2676
  target = document.querySelector(selector);
2576
2677
  }
2577
2678
 
2578
- var config = $(target).data(DATA_KEY$5) ? 'toggle' : _objectSpread({}, $(target).data(), $(this).data());
2679
+ var config = $(target).data(DATA_KEY$5) ? 'toggle' : _objectSpread2({}, $(target).data(), {}, $(this).data());
2579
2680
 
2580
2681
  if (this.tagName === 'A' || this.tagName === 'AREA') {
2581
2682
  event.preventDefault();
@@ -2588,8 +2689,8 @@
2588
2689
  }
2589
2690
 
2590
2691
  $target.one(Event$5.HIDDEN, function () {
2591
- if ($(_this10).is(':visible')) {
2592
- _this10.focus();
2692
+ if ($(_this11).is(':visible')) {
2693
+ _this11.focus();
2593
2694
  }
2594
2695
  });
2595
2696
  });
@@ -2612,7 +2713,7 @@
2612
2713
 
2613
2714
  /**
2614
2715
  * --------------------------------------------------------------------------
2615
- * Bootstrap (v4.3.1): tools/sanitizer.js
2716
+ * Bootstrap (v4.4.1): tools/sanitizer.js
2616
2717
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2617
2718
  * --------------------------------------------------------------------------
2618
2719
  */
@@ -2650,13 +2751,13 @@
2650
2751
  strong: [],
2651
2752
  u: [],
2652
2753
  ul: []
2653
- /**
2654
- * A pattern that recognizes a commonly useful subset of URLs that are safe.
2655
- *
2656
- * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
2657
- */
2658
-
2659
2754
  };
2755
+ /**
2756
+ * A pattern that recognizes a commonly useful subset of URLs that are safe.
2757
+ *
2758
+ * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
2759
+ */
2760
+
2660
2761
  var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi;
2661
2762
  /**
2662
2763
  * A pattern that matches safe data URLs. Only matches image, video and audio types.
@@ -2723,7 +2824,7 @@
2723
2824
  };
2724
2825
 
2725
2826
  for (var i = 0, len = elements.length; i < len; i++) {
2726
- var _ret = _loop(i, len);
2827
+ var _ret = _loop(i);
2727
2828
 
2728
2829
  if (_ret === "continue") continue;
2729
2830
  }
@@ -2738,7 +2839,7 @@
2738
2839
  */
2739
2840
 
2740
2841
  var NAME$6 = 'tooltip';
2741
- var VERSION$6 = '4.3.1';
2842
+ var VERSION$6 = '4.4.1';
2742
2843
  var DATA_KEY$6 = 'bs.tooltip';
2743
2844
  var EVENT_KEY$6 = "." + DATA_KEY$6;
2744
2845
  var JQUERY_NO_CONFLICT$6 = $.fn[NAME$6];
@@ -2760,7 +2861,8 @@
2760
2861
  boundary: '(string|element)',
2761
2862
  sanitize: 'boolean',
2762
2863
  sanitizeFn: '(null|function)',
2763
- whiteList: 'object'
2864
+ whiteList: 'object',
2865
+ popperConfig: '(null|object)'
2764
2866
  };
2765
2867
  var AttachmentMap$1 = {
2766
2868
  AUTO: 'auto',
@@ -2784,7 +2886,8 @@
2784
2886
  boundary: 'scrollParent',
2785
2887
  sanitize: true,
2786
2888
  sanitizeFn: null,
2787
- whiteList: DefaultWhitelist
2889
+ whiteList: DefaultWhitelist,
2890
+ popperConfig: null
2788
2891
  };
2789
2892
  var HoverState = {
2790
2893
  SHOW: 'show',
@@ -2816,22 +2919,17 @@
2816
2919
  FOCUS: 'focus',
2817
2920
  CLICK: 'click',
2818
2921
  MANUAL: 'manual'
2819
- /**
2820
- * ------------------------------------------------------------------------
2821
- * Class Definition
2822
- * ------------------------------------------------------------------------
2823
- */
2824
-
2825
2922
  };
2923
+ /**
2924
+ * ------------------------------------------------------------------------
2925
+ * Class Definition
2926
+ * ------------------------------------------------------------------------
2927
+ */
2826
2928
 
2827
2929
  var Tooltip =
2828
2930
  /*#__PURE__*/
2829
2931
  function () {
2830
2932
  function Tooltip(element, config) {
2831
- /**
2832
- * Check for Popper dependency
2833
- * Popper - https://popper.js.org
2834
- */
2835
2933
  if (typeof Popper === 'undefined') {
2836
2934
  throw new TypeError('Bootstrap\'s tooltips require Popper.js (https://popper.js.org/)');
2837
2935
  } // private
@@ -2902,7 +3000,7 @@
2902
3000
  clearTimeout(this._timeout);
2903
3001
  $.removeData(this.element, this.constructor.DATA_KEY);
2904
3002
  $(this.element).off(this.constructor.EVENT_KEY);
2905
- $(this.element).closest('.modal').off('hide.bs.modal');
3003
+ $(this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler);
2906
3004
 
2907
3005
  if (this.tip) {
2908
3006
  $(this.tip).remove();
@@ -2913,7 +3011,7 @@
2913
3011
  this._hoverState = null;
2914
3012
  this._activeTrigger = null;
2915
3013
 
2916
- if (this._popper !== null) {
3014
+ if (this._popper) {
2917
3015
  this._popper.destroy();
2918
3016
  }
2919
3017
 
@@ -2966,29 +3064,7 @@
2966
3064
  }
2967
3065
 
2968
3066
  $(this.element).trigger(this.constructor.Event.INSERTED);
2969
- this._popper = new Popper(this.element, tip, {
2970
- placement: attachment,
2971
- modifiers: {
2972
- offset: this._getOffset(),
2973
- flip: {
2974
- behavior: this.config.fallbackPlacement
2975
- },
2976
- arrow: {
2977
- element: Selector$6.ARROW
2978
- },
2979
- preventOverflow: {
2980
- boundariesElement: this.config.boundary
2981
- }
2982
- },
2983
- onCreate: function onCreate(data) {
2984
- if (data.originalPlacement !== data.placement) {
2985
- _this._handlePopperPlacementChange(data);
2986
- }
2987
- },
2988
- onUpdate: function onUpdate(data) {
2989
- return _this._handlePopperPlacementChange(data);
2990
- }
2991
- });
3067
+ this._popper = new Popper(this.element, tip, this._getPopperConfig(attachment));
2992
3068
  $(tip).addClass(ClassName$6.SHOW); // If this is a touch-enabled device we add extra
2993
3069
  // empty mouseover listeners to the body's immediate children;
2994
3070
  // only needed because of broken event delegation on iOS
@@ -3136,14 +3212,43 @@
3136
3212
  } // Private
3137
3213
  ;
3138
3214
 
3139
- _proto._getOffset = function _getOffset() {
3215
+ _proto._getPopperConfig = function _getPopperConfig(attachment) {
3140
3216
  var _this3 = this;
3141
3217
 
3218
+ var defaultBsConfig = {
3219
+ placement: attachment,
3220
+ modifiers: {
3221
+ offset: this._getOffset(),
3222
+ flip: {
3223
+ behavior: this.config.fallbackPlacement
3224
+ },
3225
+ arrow: {
3226
+ element: Selector$6.ARROW
3227
+ },
3228
+ preventOverflow: {
3229
+ boundariesElement: this.config.boundary
3230
+ }
3231
+ },
3232
+ onCreate: function onCreate(data) {
3233
+ if (data.originalPlacement !== data.placement) {
3234
+ _this3._handlePopperPlacementChange(data);
3235
+ }
3236
+ },
3237
+ onUpdate: function onUpdate(data) {
3238
+ return _this3._handlePopperPlacementChange(data);
3239
+ }
3240
+ };
3241
+ return _objectSpread2({}, defaultBsConfig, {}, this.config.popperConfig);
3242
+ };
3243
+
3244
+ _proto._getOffset = function _getOffset() {
3245
+ var _this4 = this;
3246
+
3142
3247
  var offset = {};
3143
3248
 
3144
3249
  if (typeof this.config.offset === 'function') {
3145
3250
  offset.fn = function (data) {
3146
- data.offsets = _objectSpread({}, data.offsets, _this3.config.offset(data.offsets, _this3.element) || {});
3251
+ data.offsets = _objectSpread2({}, data.offsets, {}, _this4.config.offset(data.offsets, _this4.element) || {});
3147
3252
  return data;
3148
3253
  };
3149
3254
  } else {
@@ -3170,32 +3275,35 @@
3170
3275
  };
3171
3276
 
3172
3277
  _proto._setListeners = function _setListeners() {
3173
- var _this4 = this;
3278
+ var _this5 = this;
3174
3279
 
3175
3280
  var triggers = this.config.trigger.split(' ');
3176
3281
  triggers.forEach(function (trigger) {
3177
3282
  if (trigger === 'click') {
3178
- $(_this4.element).on(_this4.constructor.Event.CLICK, _this4.config.selector, function (event) {
3179
- return _this4.toggle(event);
3283
+ $(_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function (event) {
3284
+ return _this5.toggle(event);
3180
3285
  });
3181
3286
  } else if (trigger !== Trigger.MANUAL) {
3182
- var eventIn = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSEENTER : _this4.constructor.Event.FOCUSIN;
3183
- var eventOut = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSELEAVE : _this4.constructor.Event.FOCUSOUT;
3184
- $(_this4.element).on(eventIn, _this4.config.selector, function (event) {
3185
- return _this4._enter(event);
3186
- }).on(eventOut, _this4.config.selector, function (event) {
3187
- return _this4._leave(event);
3287
+ var eventIn = trigger === Trigger.HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;
3288
+ var eventOut = trigger === Trigger.HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;
3289
+ $(_this5.element).on(eventIn, _this5.config.selector, function (event) {
3290
+ return _this5._enter(event);
3291
+ }).on(eventOut, _this5.config.selector, function (event) {
3292
+ return _this5._leave(event);
3188
3293
  });
3189
3294
  }
3190
3295
  });
3191
- $(this.element).closest('.modal').on('hide.bs.modal', function () {
3192
- if (_this4.element) {
3193
- _this4.hide();
3296
+
3297
+ this._hideModalHandler = function () {
3298
+ if (_this5.element) {
3299
+ _this5.hide();
3194
3300
  }
3195
- });
3301
+ };
3302
+
3303
+ $(this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler);
3196
3304
 
3197
3305
  if (this.config.selector) {
3198
- this.config = _objectSpread({}, this.config, {
3306
+ this.config = _objectSpread2({}, this.config, {
3199
3307
  trigger: 'manual',
3200
3308
  selector: ''
3201
3309
  });
@@ -3295,7 +3403,7 @@
3295
3403
  delete dataAttributes[dataAttr];
3296
3404
  }
3297
3405
  });
3298
- config = _objectSpread({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});
3406
+ config = _objectSpread2({}, this.constructor.Default, {}, dataAttributes, {}, typeof config === 'object' && config ? config : {});
3299
3407
 
3300
3408
  if (typeof config.delay === 'number') {
3301
3409
  config.delay = {
@@ -3455,21 +3563,21 @@
3455
3563
  */
3456
3564
 
3457
3565
  var NAME$7 = 'popover';
3458
- var VERSION$7 = '4.3.1';
3566
+ var VERSION$7 = '4.4.1';
3459
3567
  var DATA_KEY$7 = 'bs.popover';
3460
3568
  var EVENT_KEY$7 = "." + DATA_KEY$7;
3461
3569
  var JQUERY_NO_CONFLICT$7 = $.fn[NAME$7];
3462
3570
  var CLASS_PREFIX$1 = 'bs-popover';
3463
3571
  var BSCLS_PREFIX_REGEX$1 = new RegExp("(^|\\s)" + CLASS_PREFIX$1 + "\\S+", 'g');
3464
3572
 
3465
- var Default$5 = _objectSpread({}, Tooltip.Default, {
3573
+ var Default$5 = _objectSpread2({}, Tooltip.Default, {
3466
3574
  placement: 'right',
3467
3575
  trigger: 'click',
3468
3576
  content: '',
3469
3577
  template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>'
3470
3578
  });
3471
3579
 
3472
- var DefaultType$5 = _objectSpread({}, Tooltip.DefaultType, {
3580
+ var DefaultType$5 = _objectSpread2({}, Tooltip.DefaultType, {
3473
3581
  content: '(string|element|function)'
3474
3582
  });
3475
3583
 
@@ -3492,13 +3600,12 @@
3492
3600
  FOCUSOUT: "focusout" + EVENT_KEY$7,
3493
3601
  MOUSEENTER: "mouseenter" + EVENT_KEY$7,
3494
3602
  MOUSELEAVE: "mouseleave" + EVENT_KEY$7
3495
- /**
3496
- * ------------------------------------------------------------------------
3497
- * Class Definition
3498
- * ------------------------------------------------------------------------
3499
- */
3500
-
3501
3603
  };
3604
+ /**
3605
+ * ------------------------------------------------------------------------
3606
+ * Class Definition
3607
+ * ------------------------------------------------------------------------
3608
+ */
3502
3609
 
3503
3610
  var Popover =
3504
3611
  /*#__PURE__*/
@@ -3642,7 +3749,7 @@
3642
3749
  */
3643
3750
 
3644
3751
  var NAME$8 = 'scrollspy';
3645
- var VERSION$8 = '4.3.1';
3752
+ var VERSION$8 = '4.4.1';
3646
3753
  var DATA_KEY$8 = 'bs.scrollspy';
3647
3754
  var EVENT_KEY$8 = "." + DATA_KEY$8;
3648
3755
  var DATA_API_KEY$6 = '.data-api';
@@ -3681,13 +3788,12 @@
3681
3788
  var OffsetMethod = {
3682
3789
  OFFSET: 'offset',
3683
3790
  POSITION: 'position'
3684
- /**
3685
- * ------------------------------------------------------------------------
3686
- * Class Definition
3687
- * ------------------------------------------------------------------------
3688
- */
3689
-
3690
3791
  };
3792
+ /**
3793
+ * ------------------------------------------------------------------------
3794
+ * Class Definition
3795
+ * ------------------------------------------------------------------------
3796
+ */
3691
3797
 
3692
3798
  var ScrollSpy =
3693
3799
  /*#__PURE__*/
@@ -3769,7 +3875,7 @@
3769
3875
  ;
3770
3876
 
3771
3877
  _proto._getConfig = function _getConfig(config) {
3772
- config = _objectSpread({}, Default$6, typeof config === 'object' && config ? config : {});
3878
+ config = _objectSpread2({}, Default$6, {}, typeof config === 'object' && config ? config : {});
3773
3879
 
3774
3880
  if (typeof config.target !== 'string') {
3775
3881
  var id = $(config.target).attr('id');
@@ -3949,7 +4055,7 @@
3949
4055
  */
3950
4056
 
3951
4057
  var NAME$9 = 'tab';
3952
- var VERSION$9 = '4.3.1';
4058
+ var VERSION$9 = '4.4.1';
3953
4059
  var DATA_KEY$9 = 'bs.tab';
3954
4060
  var EVENT_KEY$9 = "." + DATA_KEY$9;
3955
4061
  var DATA_API_KEY$7 = '.data-api';
@@ -3976,13 +4082,12 @@
3976
4082
  DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',
3977
4083
  DROPDOWN_TOGGLE: '.dropdown-toggle',
3978
4084
  DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'
3979
- /**
3980
- * ------------------------------------------------------------------------
3981
- * Class Definition
3982
- * ------------------------------------------------------------------------
3983
- */
3984
-
3985
4085
  };
4086
+ /**
4087
+ * ------------------------------------------------------------------------
4088
+ * Class Definition
4089
+ * ------------------------------------------------------------------------
4090
+ */
3986
4091
 
3987
4092
  var Tab =
3988
4093
  /*#__PURE__*/
@@ -4184,7 +4289,7 @@
4184
4289
  */
4185
4290
 
4186
4291
  var NAME$a = 'toast';
4187
- var VERSION$a = '4.3.1';
4292
+ var VERSION$a = '4.4.1';
4188
4293
  var DATA_KEY$a = 'bs.toast';
4189
4294
  var EVENT_KEY$a = "." + DATA_KEY$a;
4190
4295
  var JQUERY_NO_CONFLICT$a = $.fn[NAME$a];
@@ -4213,13 +4318,12 @@
4213
4318
  };
4214
4319
  var Selector$a = {
4215
4320
  DATA_DISMISS: '[data-dismiss="toast"]'
4216
- /**
4217
- * ------------------------------------------------------------------------
4218
- * Class Definition
4219
- * ------------------------------------------------------------------------
4220
- */
4221
-
4222
4321
  };
4322
+ /**
4323
+ * ------------------------------------------------------------------------
4324
+ * Class Definition
4325
+ * ------------------------------------------------------------------------
4326
+ */
4223
4327
 
4224
4328
  var Toast =
4225
4329
  /*#__PURE__*/
@@ -4239,7 +4343,12 @@
4239
4343
  _proto.show = function show() {
4240
4344
  var _this = this;
4241
4345
 
4242
- $(this._element).trigger(Event$a.SHOW);
4346
+ var showEvent = $.Event(Event$a.SHOW);
4347
+ $(this._element).trigger(showEvent);
4348
+
4349
+ if (showEvent.isDefaultPrevented()) {
4350
+ return;
4351
+ }
4243
4352
 
4244
4353
  if (this._config.animation) {
4245
4354
  this._element.classList.add(ClassName$a.FADE);
@@ -4253,12 +4362,16 @@
4253
4362
  $(_this._element).trigger(Event$a.SHOWN);
4254
4363
 
4255
4364
  if (_this._config.autohide) {
4256
- _this.hide();
4365
+ _this._timeout = setTimeout(function () {
4366
+ _this.hide();
4367
+ }, _this._config.delay);
4257
4368
  }
4258
4369
  };
4259
4370
 
4260
4371
  this._element.classList.remove(ClassName$a.HIDE);
4261
4372
 
4373
+ Util.reflow(this._element);
4374
+
4262
4375
  this._element.classList.add(ClassName$a.SHOWING);
4263
4376
 
4264
4377
  if (this._config.animation) {
@@ -4269,22 +4382,19 @@
4269
4382
  }
4270
4383
  };
4271
4384
 
4272
- _proto.hide = function hide(withoutTimeout) {
4273
- var _this2 = this;
4274
-
4385
+ _proto.hide = function hide() {
4275
4386
  if (!this._element.classList.contains(ClassName$a.SHOW)) {
4276
4387
  return;
4277
4388
  }
4278
4389
 
4279
- $(this._element).trigger(Event$a.HIDE);
4390
+ var hideEvent = $.Event(Event$a.HIDE);
4391
+ $(this._element).trigger(hideEvent);
4280
4392
 
4281
- if (withoutTimeout) {
4282
- this._close();
4283
- } else {
4284
- this._timeout = setTimeout(function () {
4285
- _this2._close();
4286
- }, this._config.delay);
4393
+ if (hideEvent.isDefaultPrevented()) {
4394
+ return;
4287
4395
  }
4396
+
4397
+ this._close();
4288
4398
  };
4289
4399
 
4290
4400
  _proto.dispose = function dispose() {
@@ -4303,26 +4413,26 @@
4303
4413
  ;
4304
4414
 
4305
4415
  _proto._getConfig = function _getConfig(config) {
4306
- config = _objectSpread({}, Default$7, $(this._element).data(), typeof config === 'object' && config ? config : {});
4416
+ config = _objectSpread2({}, Default$7, {}, $(this._element).data(), {}, typeof config === 'object' && config ? config : {});
4307
4417
  Util.typeCheckConfig(NAME$a, config, this.constructor.DefaultType);
4308
4418
  return config;
4309
4419
  };
4310
4420
 
4311
4421
  _proto._setListeners = function _setListeners() {
4312
- var _this3 = this;
4422
+ var _this2 = this;
4313
4423
 
4314
4424
  $(this._element).on(Event$a.CLICK_DISMISS, Selector$a.DATA_DISMISS, function () {
4315
- return _this3.hide(true);
4425
+ return _this2.hide();
4316
4426
  });
4317
4427
  };
4318
4428
 
4319
4429
  _proto._close = function _close() {
4320
- var _this4 = this;
4430
+ var _this3 = this;
4321
4431
 
4322
4432
  var complete = function complete() {
4323
- _this4._element.classList.add(ClassName$a.HIDE);
4433
+ _this3._element.classList.add(ClassName$a.HIDE);
4324
4434
 
4325
- $(_this4._element).trigger(Event$a.HIDDEN);
4435
+ $(_this3._element).trigger(Event$a.HIDDEN);
4326
4436
  };
4327
4437
 
4328
4438
  this._element.classList.remove(ClassName$a.SHOW);
@@ -4392,31 +4502,6 @@
4392
4502
  return Toast._jQueryInterface;
4393
4503
  };
4394
4504
 
4395
- /**
4396
- * --------------------------------------------------------------------------
4397
- * Bootstrap (v4.3.1): index.js
4398
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
4399
- * --------------------------------------------------------------------------
4400
- */
4401
-
4402
- (function () {
4403
- if (typeof $ === 'undefined') {
4404
- throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.');
4405
- }
4406
-
4407
- var version = $.fn.jquery.split(' ')[0].split('.');
4408
- var minMajor = 1;
4409
- var ltMajor = 2;
4410
- var minMinor = 9;
4411
- var minPatch = 1;
4412
- var maxMajor = 4;
4413
-
4414
- if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {
4415
- throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');
4416
- }
4417
- })();
4418
-
4419
- exports.Util = Util;
4420
4505
  exports.Alert = Alert;
4421
4506
  exports.Button = Button;
4422
4507
  exports.Carousel = Carousel;
@@ -4428,7 +4513,8 @@
4428
4513
  exports.Tab = Tab;
4429
4514
  exports.Toast = Toast;
4430
4515
  exports.Tooltip = Tooltip;
4516
+ exports.Util = Util;
4431
4517
 
4432
4518
  Object.defineProperty(exports, '__esModule', { value: true });
4433
4519
 
4434
- }));
4520
+ })));