bootstrap 4.3.1 → 4.6.0

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

Potentially problematic release.


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

Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +15 -1
  3. data/CHANGELOG.md +2 -14
  4. data/README.md +1 -1
  5. data/assets/javascripts/bootstrap-sprockets.js +7 -7
  6. data/assets/javascripts/bootstrap.js +1073 -1076
  7. data/assets/javascripts/bootstrap.min.js +4 -4
  8. data/assets/javascripts/bootstrap/alert.js +42 -49
  9. data/assets/javascripts/bootstrap/button.js +111 -64
  10. data/assets/javascripts/bootstrap/carousel.js +162 -177
  11. data/assets/javascripts/bootstrap/collapse.js +97 -122
  12. data/assets/javascripts/bootstrap/dropdown.js +163 -189
  13. data/assets/javascripts/bootstrap/modal.js +213 -194
  14. data/assets/javascripts/bootstrap/popover.js +51 -72
  15. data/assets/javascripts/bootstrap/scrollspy.js +80 -109
  16. data/assets/javascripts/bootstrap/tab.js +72 -79
  17. data/assets/javascripts/bootstrap/toast.js +96 -107
  18. data/assets/javascripts/bootstrap/tooltip.js +186 -201
  19. data/assets/javascripts/bootstrap/util.js +41 -20
  20. data/assets/stylesheets/_bootstrap-grid.scss +5 -4
  21. data/assets/stylesheets/_bootstrap-reboot.scss +4 -4
  22. data/assets/stylesheets/_bootstrap.scss +4 -4
  23. data/assets/stylesheets/bootstrap/_alert.scss +1 -0
  24. data/assets/stylesheets/bootstrap/_badge.scss +1 -1
  25. data/assets/stylesheets/bootstrap/_breadcrumb.scss +3 -2
  26. data/assets/stylesheets/bootstrap/_button-group.scss +1 -1
  27. data/assets/stylesheets/bootstrap/_buttons.scss +13 -8
  28. data/assets/stylesheets/bootstrap/_card.scss +42 -45
  29. data/assets/stylesheets/bootstrap/_carousel.scss +7 -7
  30. data/assets/stylesheets/bootstrap/_close.scss +2 -3
  31. data/assets/stylesheets/bootstrap/_code.scss +1 -1
  32. data/assets/stylesheets/bootstrap/_custom-forms.scss +38 -19
  33. data/assets/stylesheets/bootstrap/_dropdown.scss +7 -6
  34. data/assets/stylesheets/bootstrap/_forms.scss +26 -9
  35. data/assets/stylesheets/bootstrap/_functions.scss +63 -5
  36. data/assets/stylesheets/bootstrap/_grid.scss +32 -11
  37. data/assets/stylesheets/bootstrap/_images.scss +2 -2
  38. data/assets/stylesheets/bootstrap/_input-group.scss +21 -6
  39. data/assets/stylesheets/bootstrap/_list-group.scss +36 -31
  40. data/assets/stylesheets/bootstrap/_mixins.scss +3 -3
  41. data/assets/stylesheets/bootstrap/_modal.scss +26 -15
  42. data/assets/stylesheets/bootstrap/_nav.scss +7 -7
  43. data/assets/stylesheets/bootstrap/_navbar.scss +55 -17
  44. data/assets/stylesheets/bootstrap/_pagination.scss +5 -4
  45. data/assets/stylesheets/bootstrap/_popover.scss +8 -9
  46. data/assets/stylesheets/bootstrap/_print.scss +2 -2
  47. data/assets/stylesheets/bootstrap/_progress.scss +7 -3
  48. data/assets/stylesheets/bootstrap/_reboot.scss +39 -38
  49. data/assets/stylesheets/bootstrap/_spinners.scss +14 -4
  50. data/assets/stylesheets/bootstrap/_tables.scss +3 -3
  51. data/assets/stylesheets/bootstrap/_toasts.scss +4 -2
  52. data/assets/stylesheets/bootstrap/_type.scss +3 -3
  53. data/assets/stylesheets/bootstrap/_utilities.scss +2 -1
  54. data/assets/stylesheets/bootstrap/_variables.scss +58 -35
  55. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +5 -3
  56. data/assets/stylesheets/bootstrap/mixins/_badge.scss +1 -1
  57. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +27 -14
  58. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +11 -8
  59. data/assets/stylesheets/bootstrap/mixins/_caret.scss +8 -8
  60. data/assets/stylesheets/bootstrap/mixins/_float.scss +3 -3
  61. data/assets/stylesheets/bootstrap/mixins/_forms.scss +42 -49
  62. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +29 -15
  63. data/assets/stylesheets/bootstrap/mixins/_grid.scss +25 -7
  64. data/assets/stylesheets/bootstrap/mixins/_hover.scss +4 -4
  65. data/assets/stylesheets/bootstrap/mixins/_image.scss +2 -2
  66. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +1 -1
  67. data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
  68. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +2 -1
  69. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +1 -1
  70. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +4 -3
  71. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +1 -1
  72. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +3 -2
  73. data/assets/stylesheets/bootstrap/mixins/_transition.scss +18 -8
  74. data/assets/stylesheets/bootstrap/utilities/_background.scss +2 -2
  75. data/assets/stylesheets/bootstrap/utilities/_borders.scss +1 -1
  76. data/assets/stylesheets/bootstrap/utilities/_interactions.scss +5 -0
  77. data/assets/stylesheets/bootstrap/utilities/_text.scss +4 -4
  78. data/bootstrap.gemspec +1 -1
  79. data/lib/bootstrap/version.rb +2 -2
  80. data/tasks/updater/network.rb +2 -2
  81. data/test/dummy_rails/app/assets/config/manifest.js +3 -0
  82. data/test/dummy_rails/app/assets/stylesheets/.browserslistrc +1 -0
  83. data/test/gemfiles/rails_6_0.gemfile +7 -0
  84. data/test/support/dummy_rails_integration.rb +3 -1
  85. data/test/test_helper.rb +18 -13
  86. metadata +11 -5
@@ -1,16 +1,18 @@
1
1
  /*!
2
- * Bootstrap collapse.js v4.3.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2
+ * Bootstrap collapse.js v4.6.0 (https://getbootstrap.com/)
3
+ * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
5
  */
6
6
  (function (global, factory) {
7
7
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('./util.js')) :
8
- typeof define === 'function' && define.amd ? define(['jquery', './util.js'], factory) :
9
- (global = global || self, global.Collapse = factory(global.jQuery, global.Util));
10
- }(this, function ($, Util) { 'use strict';
8
+ typeof define === 'function' && define.amd ? define(['jquery', './util'], factory) :
9
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Collapse = factory(global.jQuery, global.Util));
10
+ }(this, (function ($, Util) { 'use strict';
11
11
 
12
- $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
13
- Util = Util && Util.hasOwnProperty('default') ? Util['default'] : Util;
12
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
+
14
+ var $__default = /*#__PURE__*/_interopDefaultLegacy($);
15
+ var Util__default = /*#__PURE__*/_interopDefaultLegacy(Util);
14
16
 
15
17
  function _defineProperties(target, props) {
16
18
  for (var i = 0; i < props.length; i++) {
@@ -28,38 +30,22 @@
28
30
  return Constructor;
29
31
  }
30
32
 
31
- function _defineProperty(obj, key, value) {
32
- if (key in obj) {
33
- Object.defineProperty(obj, key, {
34
- value: value,
35
- enumerable: true,
36
- configurable: true,
37
- writable: true
38
- });
39
- } else {
40
- obj[key] = value;
41
- }
42
-
43
- return obj;
44
- }
45
-
46
- function _objectSpread(target) {
47
- for (var i = 1; i < arguments.length; i++) {
48
- var source = arguments[i] != null ? arguments[i] : {};
49
- var ownKeys = Object.keys(source);
33
+ function _extends() {
34
+ _extends = Object.assign || function (target) {
35
+ for (var i = 1; i < arguments.length; i++) {
36
+ var source = arguments[i];
50
37
 
51
- if (typeof Object.getOwnPropertySymbols === 'function') {
52
- ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
53
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
54
- }));
38
+ for (var key in source) {
39
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
40
+ target[key] = source[key];
41
+ }
42
+ }
55
43
  }
56
44
 
57
- ownKeys.forEach(function (key) {
58
- _defineProperty(target, key, source[key]);
59
- });
60
- }
45
+ return target;
46
+ };
61
47
 
62
- return target;
48
+ return _extends.apply(this, arguments);
63
49
  }
64
50
 
65
51
  /**
@@ -69,11 +55,11 @@
69
55
  */
70
56
 
71
57
  var NAME = 'collapse';
72
- var VERSION = '4.3.1';
58
+ var VERSION = '4.6.0';
73
59
  var DATA_KEY = 'bs.collapse';
74
60
  var EVENT_KEY = "." + DATA_KEY;
75
61
  var DATA_API_KEY = '.data-api';
76
- var JQUERY_NO_CONFLICT = $.fn[NAME];
62
+ var JQUERY_NO_CONFLICT = $__default['default'].fn[NAME];
77
63
  var Default = {
78
64
  toggle: true,
79
65
  parent: ''
@@ -82,47 +68,36 @@
82
68
  toggle: 'boolean',
83
69
  parent: '(string|element)'
84
70
  };
85
- var Event = {
86
- SHOW: "show" + EVENT_KEY,
87
- SHOWN: "shown" + EVENT_KEY,
88
- HIDE: "hide" + EVENT_KEY,
89
- HIDDEN: "hidden" + EVENT_KEY,
90
- CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
91
- };
92
- var ClassName = {
93
- SHOW: 'show',
94
- COLLAPSE: 'collapse',
95
- COLLAPSING: 'collapsing',
96
- COLLAPSED: 'collapsed'
97
- };
98
- var Dimension = {
99
- WIDTH: 'width',
100
- HEIGHT: 'height'
101
- };
102
- var Selector = {
103
- ACTIVES: '.show, .collapsing',
104
- DATA_TOGGLE: '[data-toggle="collapse"]'
105
- /**
106
- * ------------------------------------------------------------------------
107
- * Class Definition
108
- * ------------------------------------------------------------------------
109
- */
110
-
111
- };
71
+ var EVENT_SHOW = "show" + EVENT_KEY;
72
+ var EVENT_SHOWN = "shown" + EVENT_KEY;
73
+ var EVENT_HIDE = "hide" + EVENT_KEY;
74
+ var EVENT_HIDDEN = "hidden" + EVENT_KEY;
75
+ var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
76
+ var CLASS_NAME_SHOW = 'show';
77
+ var CLASS_NAME_COLLAPSE = 'collapse';
78
+ var CLASS_NAME_COLLAPSING = 'collapsing';
79
+ var CLASS_NAME_COLLAPSED = 'collapsed';
80
+ var DIMENSION_WIDTH = 'width';
81
+ var DIMENSION_HEIGHT = 'height';
82
+ var SELECTOR_ACTIVES = '.show, .collapsing';
83
+ var SELECTOR_DATA_TOGGLE = '[data-toggle="collapse"]';
84
+ /**
85
+ * ------------------------------------------------------------------------
86
+ * Class Definition
87
+ * ------------------------------------------------------------------------
88
+ */
112
89
 
113
- var Collapse =
114
- /*#__PURE__*/
115
- function () {
90
+ var Collapse = /*#__PURE__*/function () {
116
91
  function Collapse(element, config) {
117
92
  this._isTransitioning = false;
118
93
  this._element = element;
119
94
  this._config = this._getConfig(config);
120
95
  this._triggerArray = [].slice.call(document.querySelectorAll("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]")));
121
- var toggleList = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE));
96
+ var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));
122
97
 
123
98
  for (var i = 0, len = toggleList.length; i < len; i++) {
124
99
  var elem = toggleList[i];
125
- var selector = Util.getSelectorFromElement(elem);
100
+ var selector = Util__default['default'].getSelectorFromElement(elem);
126
101
  var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {
127
102
  return foundElem === element;
128
103
  });
@@ -150,7 +125,7 @@
150
125
 
151
126
  // Public
152
127
  _proto.toggle = function toggle() {
153
- if ($(this._element).hasClass(ClassName.SHOW)) {
128
+ if ($__default['default'](this._element).hasClass(CLASS_NAME_SHOW)) {
154
129
  this.hide();
155
130
  } else {
156
131
  this.show();
@@ -160,7 +135,7 @@
160
135
  _proto.show = function show() {
161
136
  var _this = this;
162
137
 
163
- if (this._isTransitioning || $(this._element).hasClass(ClassName.SHOW)) {
138
+ if (this._isTransitioning || $__default['default'](this._element).hasClass(CLASS_NAME_SHOW)) {
164
139
  return;
165
140
  }
166
141
 
@@ -168,12 +143,12 @@
168
143
  var activesData;
169
144
 
170
145
  if (this._parent) {
171
- actives = [].slice.call(this._parent.querySelectorAll(Selector.ACTIVES)).filter(function (elem) {
146
+ actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) {
172
147
  if (typeof _this._config.parent === 'string') {
173
148
  return elem.getAttribute('data-parent') === _this._config.parent;
174
149
  }
175
150
 
176
- return elem.classList.contains(ClassName.COLLAPSE);
151
+ return elem.classList.contains(CLASS_NAME_COLLAPSE);
177
152
  });
178
153
 
179
154
  if (actives.length === 0) {
@@ -182,64 +157,64 @@
182
157
  }
183
158
 
184
159
  if (actives) {
185
- activesData = $(actives).not(this._selector).data(DATA_KEY);
160
+ activesData = $__default['default'](actives).not(this._selector).data(DATA_KEY);
186
161
 
187
162
  if (activesData && activesData._isTransitioning) {
188
163
  return;
189
164
  }
190
165
  }
191
166
 
192
- var startEvent = $.Event(Event.SHOW);
193
- $(this._element).trigger(startEvent);
167
+ var startEvent = $__default['default'].Event(EVENT_SHOW);
168
+ $__default['default'](this._element).trigger(startEvent);
194
169
 
195
170
  if (startEvent.isDefaultPrevented()) {
196
171
  return;
197
172
  }
198
173
 
199
174
  if (actives) {
200
- Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide');
175
+ Collapse._jQueryInterface.call($__default['default'](actives).not(this._selector), 'hide');
201
176
 
202
177
  if (!activesData) {
203
- $(actives).data(DATA_KEY, null);
178
+ $__default['default'](actives).data(DATA_KEY, null);
204
179
  }
205
180
  }
206
181
 
207
182
  var dimension = this._getDimension();
208
183
 
209
- $(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING);
184
+ $__default['default'](this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING);
210
185
  this._element.style[dimension] = 0;
211
186
 
212
187
  if (this._triggerArray.length) {
213
- $(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true);
188
+ $__default['default'](this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true);
214
189
  }
215
190
 
216
191
  this.setTransitioning(true);
217
192
 
218
193
  var complete = function complete() {
219
- $(_this._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.SHOW);
194
+ $__default['default'](_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW);
220
195
  _this._element.style[dimension] = '';
221
196
 
222
197
  _this.setTransitioning(false);
223
198
 
224
- $(_this._element).trigger(Event.SHOWN);
199
+ $__default['default'](_this._element).trigger(EVENT_SHOWN);
225
200
  };
226
201
 
227
202
  var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
228
203
  var scrollSize = "scroll" + capitalizedDimension;
229
- var transitionDuration = Util.getTransitionDurationFromElement(this._element);
230
- $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
204
+ var transitionDuration = Util__default['default'].getTransitionDurationFromElement(this._element);
205
+ $__default['default'](this._element).one(Util__default['default'].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
231
206
  this._element.style[dimension] = this._element[scrollSize] + "px";
232
207
  };
233
208
 
234
209
  _proto.hide = function hide() {
235
210
  var _this2 = this;
236
211
 
237
- if (this._isTransitioning || !$(this._element).hasClass(ClassName.SHOW)) {
212
+ if (this._isTransitioning || !$__default['default'](this._element).hasClass(CLASS_NAME_SHOW)) {
238
213
  return;
239
214
  }
240
215
 
241
- var startEvent = $.Event(Event.HIDE);
242
- $(this._element).trigger(startEvent);
216
+ var startEvent = $__default['default'].Event(EVENT_HIDE);
217
+ $__default['default'](this._element).trigger(startEvent);
243
218
 
244
219
  if (startEvent.isDefaultPrevented()) {
245
220
  return;
@@ -248,20 +223,20 @@
248
223
  var dimension = this._getDimension();
249
224
 
250
225
  this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
251
- Util.reflow(this._element);
252
- $(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW);
226
+ Util__default['default'].reflow(this._element);
227
+ $__default['default'](this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW);
253
228
  var triggerArrayLength = this._triggerArray.length;
254
229
 
255
230
  if (triggerArrayLength > 0) {
256
231
  for (var i = 0; i < triggerArrayLength; i++) {
257
232
  var trigger = this._triggerArray[i];
258
- var selector = Util.getSelectorFromElement(trigger);
233
+ var selector = Util__default['default'].getSelectorFromElement(trigger);
259
234
 
260
235
  if (selector !== null) {
261
- var $elem = $([].slice.call(document.querySelectorAll(selector)));
236
+ var $elem = $__default['default']([].slice.call(document.querySelectorAll(selector)));
262
237
 
263
- if (!$elem.hasClass(ClassName.SHOW)) {
264
- $(trigger).addClass(ClassName.COLLAPSED).attr('aria-expanded', false);
238
+ if (!$elem.hasClass(CLASS_NAME_SHOW)) {
239
+ $__default['default'](trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false);
265
240
  }
266
241
  }
267
242
  }
@@ -272,12 +247,12 @@
272
247
  var complete = function complete() {
273
248
  _this2.setTransitioning(false);
274
249
 
275
- $(_this2._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN);
250
+ $__default['default'](_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN);
276
251
  };
277
252
 
278
253
  this._element.style[dimension] = '';
279
- var transitionDuration = Util.getTransitionDurationFromElement(this._element);
280
- $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
254
+ var transitionDuration = Util__default['default'].getTransitionDurationFromElement(this._element);
255
+ $__default['default'](this._element).one(Util__default['default'].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
281
256
  };
282
257
 
283
258
  _proto.setTransitioning = function setTransitioning(isTransitioning) {
@@ -285,7 +260,7 @@
285
260
  };
286
261
 
287
262
  _proto.dispose = function dispose() {
288
- $.removeData(this._element, DATA_KEY);
263
+ $__default['default'].removeData(this._element, DATA_KEY);
289
264
  this._config = null;
290
265
  this._parent = null;
291
266
  this._element = null;
@@ -295,16 +270,16 @@
295
270
  ;
296
271
 
297
272
  _proto._getConfig = function _getConfig(config) {
298
- config = _objectSpread({}, Default, config);
273
+ config = _extends({}, Default, config);
299
274
  config.toggle = Boolean(config.toggle); // Coerce string values
300
275
 
301
- Util.typeCheckConfig(NAME, config, DefaultType);
276
+ Util__default['default'].typeCheckConfig(NAME, config, DefaultType);
302
277
  return config;
303
278
  };
304
279
 
305
280
  _proto._getDimension = function _getDimension() {
306
- var hasWidth = $(this._element).hasClass(Dimension.WIDTH);
307
- return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT;
281
+ var hasWidth = $__default['default'](this._element).hasClass(DIMENSION_WIDTH);
282
+ return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT;
308
283
  };
309
284
 
310
285
  _proto._getParent = function _getParent() {
@@ -312,7 +287,7 @@
312
287
 
313
288
  var parent;
314
289
 
315
- if (Util.isElement(this._config.parent)) {
290
+ if (Util__default['default'].isElement(this._config.parent)) {
316
291
  parent = this._config.parent; // It's a jQuery object
317
292
 
318
293
  if (typeof this._config.parent.jquery !== 'undefined') {
@@ -324,40 +299,40 @@
324
299
 
325
300
  var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]";
326
301
  var children = [].slice.call(parent.querySelectorAll(selector));
327
- $(children).each(function (i, element) {
302
+ $__default['default'](children).each(function (i, element) {
328
303
  _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);
329
304
  });
330
305
  return parent;
331
306
  };
332
307
 
333
308
  _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
334
- var isOpen = $(element).hasClass(ClassName.SHOW);
309
+ var isOpen = $__default['default'](element).hasClass(CLASS_NAME_SHOW);
335
310
 
336
311
  if (triggerArray.length) {
337
- $(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
312
+ $__default['default'](triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
338
313
  }
339
314
  } // Static
340
315
  ;
341
316
 
342
317
  Collapse._getTargetFromElement = function _getTargetFromElement(element) {
343
- var selector = Util.getSelectorFromElement(element);
318
+ var selector = Util__default['default'].getSelectorFromElement(element);
344
319
  return selector ? document.querySelector(selector) : null;
345
320
  };
346
321
 
347
322
  Collapse._jQueryInterface = function _jQueryInterface(config) {
348
323
  return this.each(function () {
349
- var $this = $(this);
350
- var data = $this.data(DATA_KEY);
324
+ var $element = $__default['default'](this);
325
+ var data = $element.data(DATA_KEY);
351
326
 
352
- var _config = _objectSpread({}, Default, $this.data(), typeof config === 'object' && config ? config : {});
327
+ var _config = _extends({}, Default, $element.data(), typeof config === 'object' && config ? config : {});
353
328
 
354
- if (!data && _config.toggle && /show|hide/.test(config)) {
329
+ if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {
355
330
  _config.toggle = false;
356
331
  }
357
332
 
358
333
  if (!data) {
359
334
  data = new Collapse(this, _config);
360
- $this.data(DATA_KEY, data);
335
+ $element.data(DATA_KEY, data);
361
336
  }
362
337
 
363
338
  if (typeof config === 'string') {
@@ -391,17 +366,17 @@
391
366
  */
392
367
 
393
368
 
394
- $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
369
+ $__default['default'](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
395
370
  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
396
371
  if (event.currentTarget.tagName === 'A') {
397
372
  event.preventDefault();
398
373
  }
399
374
 
400
- var $trigger = $(this);
401
- var selector = Util.getSelectorFromElement(this);
375
+ var $trigger = $__default['default'](this);
376
+ var selector = Util__default['default'].getSelectorFromElement(this);
402
377
  var selectors = [].slice.call(document.querySelectorAll(selector));
403
- $(selectors).each(function () {
404
- var $target = $(this);
378
+ $__default['default'](selectors).each(function () {
379
+ var $target = $__default['default'](this);
405
380
  var data = $target.data(DATA_KEY);
406
381
  var config = data ? 'toggle' : $trigger.data();
407
382
 
@@ -414,14 +389,14 @@
414
389
  * ------------------------------------------------------------------------
415
390
  */
416
391
 
417
- $.fn[NAME] = Collapse._jQueryInterface;
418
- $.fn[NAME].Constructor = Collapse;
392
+ $__default['default'].fn[NAME] = Collapse._jQueryInterface;
393
+ $__default['default'].fn[NAME].Constructor = Collapse;
419
394
 
420
- $.fn[NAME].noConflict = function () {
421
- $.fn[NAME] = JQUERY_NO_CONFLICT;
395
+ $__default['default'].fn[NAME].noConflict = function () {
396
+ $__default['default'].fn[NAME] = JQUERY_NO_CONFLICT;
422
397
  return Collapse._jQueryInterface;
423
398
  };
424
399
 
425
400
  return Collapse;
426
401
 
427
- }));
402
+ })));
@@ -1,17 +1,19 @@
1
1
  /*!
2
- * Bootstrap dropdown.js v4.3.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2
+ * Bootstrap dropdown.js v4.6.0 (https://getbootstrap.com/)
3
+ * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
5
  */
6
6
  (function (global, factory) {
7
7
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('popper.js'), require('./util.js')) :
8
- typeof define === 'function' && define.amd ? define(['jquery', 'popper.js', './util.js'], factory) :
9
- (global = global || self, global.Dropdown = factory(global.jQuery, global.Popper, global.Util));
10
- }(this, function ($, Popper, Util) { 'use strict';
8
+ typeof define === 'function' && define.amd ? define(['jquery', 'popper.js', './util'], factory) :
9
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Dropdown = factory(global.jQuery, global.Popper, global.Util));
10
+ }(this, (function ($, Popper, Util) { 'use strict';
11
11
 
12
- $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
13
- Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper;
14
- Util = Util && Util.hasOwnProperty('default') ? Util['default'] : Util;
12
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
+
14
+ var $__default = /*#__PURE__*/_interopDefaultLegacy($);
15
+ var Popper__default = /*#__PURE__*/_interopDefaultLegacy(Popper);
16
+ var Util__default = /*#__PURE__*/_interopDefaultLegacy(Util);
15
17
 
16
18
  function _defineProperties(target, props) {
17
19
  for (var i = 0; i < props.length; i++) {
@@ -29,38 +31,22 @@
29
31
  return Constructor;
30
32
  }
31
33
 
32
- function _defineProperty(obj, key, value) {
33
- if (key in obj) {
34
- Object.defineProperty(obj, key, {
35
- value: value,
36
- enumerable: true,
37
- configurable: true,
38
- writable: true
39
- });
40
- } else {
41
- obj[key] = value;
42
- }
43
-
44
- return obj;
45
- }
34
+ function _extends() {
35
+ _extends = Object.assign || function (target) {
36
+ for (var i = 1; i < arguments.length; i++) {
37
+ var source = arguments[i];
46
38
 
47
- function _objectSpread(target) {
48
- for (var i = 1; i < arguments.length; i++) {
49
- var source = arguments[i] != null ? arguments[i] : {};
50
- var ownKeys = Object.keys(source);
51
-
52
- if (typeof Object.getOwnPropertySymbols === 'function') {
53
- ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
54
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
55
- }));
39
+ for (var key in source) {
40
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
41
+ target[key] = source[key];
42
+ }
43
+ }
56
44
  }
57
45
 
58
- ownKeys.forEach(function (key) {
59
- _defineProperty(target, key, source[key]);
60
- });
61
- }
46
+ return target;
47
+ };
62
48
 
63
- return target;
49
+ return _extends.apply(this, arguments);
64
50
  }
65
51
 
66
52
  /**
@@ -70,11 +56,11 @@
70
56
  */
71
57
 
72
58
  var NAME = 'dropdown';
73
- var VERSION = '4.3.1';
59
+ var VERSION = '4.6.0';
74
60
  var DATA_KEY = 'bs.dropdown';
75
61
  var EVENT_KEY = "." + DATA_KEY;
76
62
  var DATA_API_KEY = '.data-api';
77
- var JQUERY_NO_CONFLICT = $.fn[NAME];
63
+ var JQUERY_NO_CONFLICT = $__default['default'].fn[NAME];
78
64
  var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
79
65
 
80
66
  var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key
@@ -88,67 +74,55 @@
88
74
  var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)
89
75
 
90
76
  var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE);
91
- var Event = {
92
- HIDE: "hide" + EVENT_KEY,
93
- HIDDEN: "hidden" + EVENT_KEY,
94
- SHOW: "show" + EVENT_KEY,
95
- SHOWN: "shown" + EVENT_KEY,
96
- CLICK: "click" + EVENT_KEY,
97
- CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY,
98
- KEYDOWN_DATA_API: "keydown" + EVENT_KEY + DATA_API_KEY,
99
- KEYUP_DATA_API: "keyup" + EVENT_KEY + DATA_API_KEY
100
- };
101
- var ClassName = {
102
- DISABLED: 'disabled',
103
- SHOW: 'show',
104
- DROPUP: 'dropup',
105
- DROPRIGHT: 'dropright',
106
- DROPLEFT: 'dropleft',
107
- MENURIGHT: 'dropdown-menu-right',
108
- MENULEFT: 'dropdown-menu-left',
109
- POSITION_STATIC: 'position-static'
110
- };
111
- var Selector = {
112
- DATA_TOGGLE: '[data-toggle="dropdown"]',
113
- FORM_CHILD: '.dropdown form',
114
- MENU: '.dropdown-menu',
115
- NAVBAR_NAV: '.navbar-nav',
116
- VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'
117
- };
118
- var AttachmentMap = {
119
- TOP: 'top-start',
120
- TOPEND: 'top-end',
121
- BOTTOM: 'bottom-start',
122
- BOTTOMEND: 'bottom-end',
123
- RIGHT: 'right-start',
124
- RIGHTEND: 'right-end',
125
- LEFT: 'left-start',
126
- LEFTEND: 'left-end'
127
- };
77
+ var EVENT_HIDE = "hide" + EVENT_KEY;
78
+ var EVENT_HIDDEN = "hidden" + EVENT_KEY;
79
+ var EVENT_SHOW = "show" + EVENT_KEY;
80
+ var EVENT_SHOWN = "shown" + EVENT_KEY;
81
+ var EVENT_CLICK = "click" + EVENT_KEY;
82
+ var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
83
+ var EVENT_KEYDOWN_DATA_API = "keydown" + EVENT_KEY + DATA_API_KEY;
84
+ var EVENT_KEYUP_DATA_API = "keyup" + EVENT_KEY + DATA_API_KEY;
85
+ var CLASS_NAME_DISABLED = 'disabled';
86
+ var CLASS_NAME_SHOW = 'show';
87
+ var CLASS_NAME_DROPUP = 'dropup';
88
+ var CLASS_NAME_DROPRIGHT = 'dropright';
89
+ var CLASS_NAME_DROPLEFT = 'dropleft';
90
+ var CLASS_NAME_MENURIGHT = 'dropdown-menu-right';
91
+ var CLASS_NAME_POSITION_STATIC = 'position-static';
92
+ var SELECTOR_DATA_TOGGLE = '[data-toggle="dropdown"]';
93
+ var SELECTOR_FORM_CHILD = '.dropdown form';
94
+ var SELECTOR_MENU = '.dropdown-menu';
95
+ var SELECTOR_NAVBAR_NAV = '.navbar-nav';
96
+ var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';
97
+ var PLACEMENT_TOP = 'top-start';
98
+ var PLACEMENT_TOPEND = 'top-end';
99
+ var PLACEMENT_BOTTOM = 'bottom-start';
100
+ var PLACEMENT_BOTTOMEND = 'bottom-end';
101
+ var PLACEMENT_RIGHT = 'right-start';
102
+ var PLACEMENT_LEFT = 'left-start';
128
103
  var Default = {
129
104
  offset: 0,
130
105
  flip: true,
131
106
  boundary: 'scrollParent',
132
107
  reference: 'toggle',
133
- display: 'dynamic'
108
+ display: 'dynamic',
109
+ popperConfig: null
134
110
  };
135
111
  var DefaultType = {
136
112
  offset: '(number|string|function)',
137
113
  flip: 'boolean',
138
114
  boundary: '(string|element)',
139
115
  reference: '(string|element)',
140
- display: 'string'
141
- /**
142
- * ------------------------------------------------------------------------
143
- * Class Definition
144
- * ------------------------------------------------------------------------
145
- */
146
-
116
+ display: 'string',
117
+ popperConfig: '(null|object)'
147
118
  };
119
+ /**
120
+ * ------------------------------------------------------------------------
121
+ * Class Definition
122
+ * ------------------------------------------------------------------------
123
+ */
148
124
 
149
- var Dropdown =
150
- /*#__PURE__*/
151
- function () {
125
+ var Dropdown = /*#__PURE__*/function () {
152
126
  function Dropdown(element, config) {
153
127
  this._element = element;
154
128
  this._popper = null;
@@ -164,13 +138,11 @@
164
138
 
165
139
  // Public
166
140
  _proto.toggle = function toggle() {
167
- if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED)) {
141
+ if (this._element.disabled || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED)) {
168
142
  return;
169
143
  }
170
144
 
171
- var parent = Dropdown._getParentFromElement(this._element);
172
-
173
- var isActive = $(this._menu).hasClass(ClassName.SHOW);
145
+ var isActive = $__default['default'](this._menu).hasClass(CLASS_NAME_SHOW);
174
146
 
175
147
  Dropdown._clearMenus();
176
148
 
@@ -178,31 +150,46 @@
178
150
  return;
179
151
  }
180
152
 
153
+ this.show(true);
154
+ };
155
+
156
+ _proto.show = function show(usePopper) {
157
+ if (usePopper === void 0) {
158
+ usePopper = false;
159
+ }
160
+
161
+ if (this._element.disabled || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED) || $__default['default'](this._menu).hasClass(CLASS_NAME_SHOW)) {
162
+ return;
163
+ }
164
+
181
165
  var relatedTarget = {
182
166
  relatedTarget: this._element
183
167
  };
184
- var showEvent = $.Event(Event.SHOW, relatedTarget);
185
- $(parent).trigger(showEvent);
168
+ var showEvent = $__default['default'].Event(EVENT_SHOW, relatedTarget);
169
+
170
+ var parent = Dropdown._getParentFromElement(this._element);
171
+
172
+ $__default['default'](parent).trigger(showEvent);
186
173
 
187
174
  if (showEvent.isDefaultPrevented()) {
188
175
  return;
189
- } // Disable totally Popper.js for Dropdown in Navbar
176
+ } // Totally disable Popper for Dropdowns in Navbar
190
177
 
191
178
 
192
- if (!this._inNavbar) {
179
+ if (!this._inNavbar && usePopper) {
193
180
  /**
194
181
  * Check for Popper dependency
195
182
  * Popper - https://popper.js.org
196
183
  */
197
- if (typeof Popper === 'undefined') {
198
- throw new TypeError('Bootstrap\'s dropdowns require Popper.js (https://popper.js.org/)');
184
+ if (typeof Popper__default['default'] === 'undefined') {
185
+ throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)');
199
186
  }
200
187
 
201
188
  var referenceElement = this._element;
202
189
 
203
190
  if (this._config.reference === 'parent') {
204
191
  referenceElement = parent;
205
- } else if (Util.isElement(this._config.reference)) {
192
+ } else if (Util__default['default'].isElement(this._config.reference)) {
206
193
  referenceElement = this._config.reference; // Check if it's jQuery element
207
194
 
208
195
  if (typeof this._config.reference.jquery !== 'undefined') {
@@ -214,75 +201,57 @@
214
201
 
215
202
 
216
203
  if (this._config.boundary !== 'scrollParent') {
217
- $(parent).addClass(ClassName.POSITION_STATIC);
204
+ $__default['default'](parent).addClass(CLASS_NAME_POSITION_STATIC);
218
205
  }
219
206
 
220
- this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig());
207
+ this._popper = new Popper__default['default'](referenceElement, this._menu, this._getPopperConfig());
221
208
  } // If this is a touch-enabled device we add extra
222
209
  // empty mouseover listeners to the body's immediate children;
223
210
  // only needed because of broken event delegation on iOS
224
211
  // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
225
212
 
226
213
 
227
- if ('ontouchstart' in document.documentElement && $(parent).closest(Selector.NAVBAR_NAV).length === 0) {
228
- $(document.body).children().on('mouseover', null, $.noop);
214
+ if ('ontouchstart' in document.documentElement && $__default['default'](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {
215
+ $__default['default'](document.body).children().on('mouseover', null, $__default['default'].noop);
229
216
  }
230
217
 
231
218
  this._element.focus();
232
219
 
233
220
  this._element.setAttribute('aria-expanded', true);
234
221
 
235
- $(this._menu).toggleClass(ClassName.SHOW);
236
- $(parent).toggleClass(ClassName.SHOW).trigger($.Event(Event.SHOWN, relatedTarget));
237
- };
238
-
239
- _proto.show = function show() {
240
- if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED) || $(this._menu).hasClass(ClassName.SHOW)) {
241
- return;
242
- }
243
-
244
- var relatedTarget = {
245
- relatedTarget: this._element
246
- };
247
- var showEvent = $.Event(Event.SHOW, relatedTarget);
248
-
249
- var parent = Dropdown._getParentFromElement(this._element);
250
-
251
- $(parent).trigger(showEvent);
252
-
253
- if (showEvent.isDefaultPrevented()) {
254
- return;
255
- }
256
-
257
- $(this._menu).toggleClass(ClassName.SHOW);
258
- $(parent).toggleClass(ClassName.SHOW).trigger($.Event(Event.SHOWN, relatedTarget));
222
+ $__default['default'](this._menu).toggleClass(CLASS_NAME_SHOW);
223
+ $__default['default'](parent).toggleClass(CLASS_NAME_SHOW).trigger($__default['default'].Event(EVENT_SHOWN, relatedTarget));
259
224
  };
260
225
 
261
226
  _proto.hide = function hide() {
262
- if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED) || !$(this._menu).hasClass(ClassName.SHOW)) {
227
+ if (this._element.disabled || $__default['default'](this._element).hasClass(CLASS_NAME_DISABLED) || !$__default['default'](this._menu).hasClass(CLASS_NAME_SHOW)) {
263
228
  return;
264
229
  }
265
230
 
266
231
  var relatedTarget = {
267
232
  relatedTarget: this._element
268
233
  };
269
- var hideEvent = $.Event(Event.HIDE, relatedTarget);
234
+ var hideEvent = $__default['default'].Event(EVENT_HIDE, relatedTarget);
270
235
 
271
236
  var parent = Dropdown._getParentFromElement(this._element);
272
237
 
273
- $(parent).trigger(hideEvent);
238
+ $__default['default'](parent).trigger(hideEvent);
274
239
 
275
240
  if (hideEvent.isDefaultPrevented()) {
276
241
  return;
277
242
  }
278
243
 
279
- $(this._menu).toggleClass(ClassName.SHOW);
280
- $(parent).toggleClass(ClassName.SHOW).trigger($.Event(Event.HIDDEN, relatedTarget));
244
+ if (this._popper) {
245
+ this._popper.destroy();
246
+ }
247
+
248
+ $__default['default'](this._menu).toggleClass(CLASS_NAME_SHOW);
249
+ $__default['default'](parent).toggleClass(CLASS_NAME_SHOW).trigger($__default['default'].Event(EVENT_HIDDEN, relatedTarget));
281
250
  };
282
251
 
283
252
  _proto.dispose = function dispose() {
284
- $.removeData(this._element, DATA_KEY);
285
- $(this._element).off(EVENT_KEY);
253
+ $__default['default'].removeData(this._element, DATA_KEY);
254
+ $__default['default'](this._element).off(EVENT_KEY);
286
255
  this._element = null;
287
256
  this._menu = null;
288
257
 
@@ -305,7 +274,7 @@
305
274
  _proto._addEventListeners = function _addEventListeners() {
306
275
  var _this = this;
307
276
 
308
- $(this._element).on(Event.CLICK, function (event) {
277
+ $__default['default'](this._element).on(EVENT_CLICK, function (event) {
309
278
  event.preventDefault();
310
279
  event.stopPropagation();
311
280
 
@@ -314,8 +283,8 @@
314
283
  };
315
284
 
316
285
  _proto._getConfig = function _getConfig(config) {
317
- config = _objectSpread({}, this.constructor.Default, $(this._element).data(), config);
318
- Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);
286
+ config = _extends({}, this.constructor.Default, $__default['default'](this._element).data(), config);
287
+ Util__default['default'].typeCheckConfig(NAME, config, this.constructor.DefaultType);
319
288
  return config;
320
289
  };
321
290
 
@@ -324,7 +293,7 @@
324
293
  var parent = Dropdown._getParentFromElement(this._element);
325
294
 
326
295
  if (parent) {
327
- this._menu = parent.querySelector(Selector.MENU);
296
+ this._menu = parent.querySelector(SELECTOR_MENU);
328
297
  }
329
298
  }
330
299
 
@@ -332,28 +301,24 @@
332
301
  };
333
302
 
334
303
  _proto._getPlacement = function _getPlacement() {
335
- var $parentDropdown = $(this._element.parentNode);
336
- var placement = AttachmentMap.BOTTOM; // Handle dropup
337
-
338
- if ($parentDropdown.hasClass(ClassName.DROPUP)) {
339
- placement = AttachmentMap.TOP;
340
-
341
- if ($(this._menu).hasClass(ClassName.MENURIGHT)) {
342
- placement = AttachmentMap.TOPEND;
343
- }
344
- } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) {
345
- placement = AttachmentMap.RIGHT;
346
- } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) {
347
- placement = AttachmentMap.LEFT;
348
- } else if ($(this._menu).hasClass(ClassName.MENURIGHT)) {
349
- placement = AttachmentMap.BOTTOMEND;
304
+ var $parentDropdown = $__default['default'](this._element.parentNode);
305
+ var placement = PLACEMENT_BOTTOM; // Handle dropup
306
+
307
+ if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {
308
+ placement = $__default['default'](this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP;
309
+ } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {
310
+ placement = PLACEMENT_RIGHT;
311
+ } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {
312
+ placement = PLACEMENT_LEFT;
313
+ } else if ($__default['default'](this._menu).hasClass(CLASS_NAME_MENURIGHT)) {
314
+ placement = PLACEMENT_BOTTOMEND;
350
315
  }
351
316
 
352
317
  return placement;
353
318
  };
354
319
 
355
320
  _proto._detectNavbar = function _detectNavbar() {
356
- return $(this._element).closest('.navbar').length > 0;
321
+ return $__default['default'](this._element).closest('.navbar').length > 0;
357
322
  };
358
323
 
359
324
  _proto._getOffset = function _getOffset() {
@@ -363,7 +328,7 @@
363
328
 
364
329
  if (typeof this._config.offset === 'function') {
365
330
  offset.fn = function (data) {
366
- data.offsets = _objectSpread({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {});
331
+ data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {});
367
332
  return data;
368
333
  };
369
334
  } else {
@@ -384,9 +349,8 @@
384
349
  preventOverflow: {
385
350
  boundariesElement: this._config.boundary
386
351
  }
387
- } // Disable Popper.js if we have a static display
388
-
389
- };
352
+ }
353
+ }; // Disable Popper if we have a static display
390
354
 
391
355
  if (this._config.display === 'static') {
392
356
  popperConfig.modifiers.applyStyle = {
@@ -394,19 +358,19 @@
394
358
  };
395
359
  }
396
360
 
397
- return popperConfig;
361
+ return _extends({}, popperConfig, this._config.popperConfig);
398
362
  } // Static
399
363
  ;
400
364
 
401
365
  Dropdown._jQueryInterface = function _jQueryInterface(config) {
402
366
  return this.each(function () {
403
- var data = $(this).data(DATA_KEY);
367
+ var data = $__default['default'](this).data(DATA_KEY);
404
368
 
405
369
  var _config = typeof config === 'object' ? config : null;
406
370
 
407
371
  if (!data) {
408
372
  data = new Dropdown(this, _config);
409
- $(this).data(DATA_KEY, data);
373
+ $__default['default'](this).data(DATA_KEY, data);
410
374
  }
411
375
 
412
376
  if (typeof config === 'string') {
@@ -424,12 +388,12 @@
424
388
  return;
425
389
  }
426
390
 
427
- var toggles = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE));
391
+ var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));
428
392
 
429
393
  for (var i = 0, len = toggles.length; i < len; i++) {
430
394
  var parent = Dropdown._getParentFromElement(toggles[i]);
431
395
 
432
- var context = $(toggles[i]).data(DATA_KEY);
396
+ var context = $__default['default'](toggles[i]).data(DATA_KEY);
433
397
  var relatedTarget = {
434
398
  relatedTarget: toggles[i]
435
399
  };
@@ -444,16 +408,16 @@
444
408
 
445
409
  var dropdownMenu = context._menu;
446
410
 
447
- if (!$(parent).hasClass(ClassName.SHOW)) {
411
+ if (!$__default['default'](parent).hasClass(CLASS_NAME_SHOW)) {
448
412
  continue;
449
413
  }
450
414
 
451
- if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $.contains(parent, event.target)) {
415
+ if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $__default['default'].contains(parent, event.target)) {
452
416
  continue;
453
417
  }
454
418
 
455
- var hideEvent = $.Event(Event.HIDE, relatedTarget);
456
- $(parent).trigger(hideEvent);
419
+ var hideEvent = $__default['default'].Event(EVENT_HIDE, relatedTarget);
420
+ $__default['default'](parent).trigger(hideEvent);
457
421
 
458
422
  if (hideEvent.isDefaultPrevented()) {
459
423
  continue;
@@ -462,18 +426,23 @@
462
426
 
463
427
 
464
428
  if ('ontouchstart' in document.documentElement) {
465
- $(document.body).children().off('mouseover', null, $.noop);
429
+ $__default['default'](document.body).children().off('mouseover', null, $__default['default'].noop);
466
430
  }
467
431
 
468
432
  toggles[i].setAttribute('aria-expanded', 'false');
469
- $(dropdownMenu).removeClass(ClassName.SHOW);
470
- $(parent).removeClass(ClassName.SHOW).trigger($.Event(Event.HIDDEN, relatedTarget));
433
+
434
+ if (context._popper) {
435
+ context._popper.destroy();
436
+ }
437
+
438
+ $__default['default'](dropdownMenu).removeClass(CLASS_NAME_SHOW);
439
+ $__default['default'](parent).removeClass(CLASS_NAME_SHOW).trigger($__default['default'].Event(EVENT_HIDDEN, relatedTarget));
471
440
  }
472
441
  };
473
442
 
474
443
  Dropdown._getParentFromElement = function _getParentFromElement(element) {
475
444
  var parent;
476
- var selector = Util.getSelectorFromElement(element);
445
+ var selector = Util__default['default'].getSelectorFromElement(element);
477
446
 
478
447
  if (selector) {
479
448
  parent = document.querySelector(selector);
@@ -491,32 +460,37 @@
491
460
  // - If key is other than escape
492
461
  // - If key is not up or down => not a dropdown command
493
462
  // - If trigger inside the menu => not a dropdown command
494
- if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {
463
+ if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $__default['default'](event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {
495
464
  return;
496
465
  }
497
466
 
498
- event.preventDefault();
499
- event.stopPropagation();
500
-
501
- if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {
467
+ if (this.disabled || $__default['default'](this).hasClass(CLASS_NAME_DISABLED)) {
502
468
  return;
503
469
  }
504
470
 
505
471
  var parent = Dropdown._getParentFromElement(this);
506
472
 
507
- var isActive = $(parent).hasClass(ClassName.SHOW);
473
+ var isActive = $__default['default'](parent).hasClass(CLASS_NAME_SHOW);
474
+
475
+ if (!isActive && event.which === ESCAPE_KEYCODE) {
476
+ return;
477
+ }
478
+
479
+ event.preventDefault();
480
+ event.stopPropagation();
508
481
 
509
- if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
482
+ if (!isActive || event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE) {
510
483
  if (event.which === ESCAPE_KEYCODE) {
511
- var toggle = parent.querySelector(Selector.DATA_TOGGLE);
512
- $(toggle).trigger('focus');
484
+ $__default['default'](parent.querySelector(SELECTOR_DATA_TOGGLE)).trigger('focus');
513
485
  }
514
486
 
515
- $(this).trigger('click');
487
+ $__default['default'](this).trigger('click');
516
488
  return;
517
489
  }
518
490
 
519
- var items = [].slice.call(parent.querySelectorAll(Selector.VISIBLE_ITEMS));
491
+ var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) {
492
+ return $__default['default'](item).is(':visible');
493
+ });
520
494
 
521
495
  if (items.length === 0) {
522
496
  return;
@@ -567,12 +541,12 @@
567
541
  */
568
542
 
569
543
 
570
- $(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API + " " + Event.KEYUP_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
544
+ $__default['default'](document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API + " " + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
571
545
  event.preventDefault();
572
546
  event.stopPropagation();
573
547
 
574
- Dropdown._jQueryInterface.call($(this), 'toggle');
575
- }).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) {
548
+ Dropdown._jQueryInterface.call($__default['default'](this), 'toggle');
549
+ }).on(EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, function (e) {
576
550
  e.stopPropagation();
577
551
  });
578
552
  /**
@@ -581,14 +555,14 @@
581
555
  * ------------------------------------------------------------------------
582
556
  */
583
557
 
584
- $.fn[NAME] = Dropdown._jQueryInterface;
585
- $.fn[NAME].Constructor = Dropdown;
558
+ $__default['default'].fn[NAME] = Dropdown._jQueryInterface;
559
+ $__default['default'].fn[NAME].Constructor = Dropdown;
586
560
 
587
- $.fn[NAME].noConflict = function () {
588
- $.fn[NAME] = JQUERY_NO_CONFLICT;
561
+ $__default['default'].fn[NAME].noConflict = function () {
562
+ $__default['default'].fn[NAME] = JQUERY_NO_CONFLICT;
589
563
  return Dropdown._jQueryInterface;
590
564
  };
591
565
 
592
566
  return Dropdown;
593
567
 
594
- }));
568
+ })));