bootstrap 4.3.1 → 4.4.1

Sign up to get free protection for your applications and to get access to all the features.
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
+ })));