bootstrap 4.3.0 → 4.5.3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


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

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