bootstrap 4.3.1 → 4.6.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +15 -1
  3. data/CHANGELOG.md +4 -12
  4. data/README.md +7 -1
  5. data/Rakefile +16 -4
  6. data/assets/javascripts/bootstrap/alert.js +43 -55
  7. data/assets/javascripts/bootstrap/button.js +112 -70
  8. data/assets/javascripts/bootstrap/carousel.js +164 -189
  9. data/assets/javascripts/bootstrap/collapse.js +98 -129
  10. data/assets/javascripts/bootstrap/dropdown.js +165 -200
  11. data/assets/javascripts/bootstrap/modal.js +218 -205
  12. data/assets/javascripts/bootstrap/popover.js +63 -79
  13. data/assets/javascripts/bootstrap/scrollspy.js +82 -119
  14. data/assets/javascripts/bootstrap/tab.js +79 -85
  15. data/assets/javascripts/bootstrap/toast.js +100 -115
  16. data/assets/javascripts/bootstrap/tooltip.js +207 -225
  17. data/assets/javascripts/bootstrap/util.js +41 -23
  18. data/assets/javascripts/bootstrap.js +1235 -1314
  19. data/assets/javascripts/bootstrap.min.js +4 -4
  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 +47 -50
  29. data/assets/stylesheets/bootstrap/_carousel.scss +12 -9
  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 +43 -24
  33. data/assets/stylesheets/bootstrap/_dropdown.scss +7 -6
  34. data/assets/stylesheets/bootstrap/_forms.scss +30 -13
  35. data/assets/stylesheets/bootstrap/_functions.scss +110 -6
  36. data/assets/stylesheets/bootstrap/_grid.scss +32 -11
  37. data/assets/stylesheets/bootstrap/_images.scss +3 -3
  38. data/assets/stylesheets/bootstrap/_input-group.scss +23 -5
  39. data/assets/stylesheets/bootstrap/_jumbotron.scss +1 -1
  40. data/assets/stylesheets/bootstrap/_list-group.scss +36 -31
  41. data/assets/stylesheets/bootstrap/_mixins.scss +3 -3
  42. data/assets/stylesheets/bootstrap/_modal.scss +26 -15
  43. data/assets/stylesheets/bootstrap/_nav.scss +12 -7
  44. data/assets/stylesheets/bootstrap/_navbar.scss +55 -17
  45. data/assets/stylesheets/bootstrap/_pagination.scss +5 -4
  46. data/assets/stylesheets/bootstrap/_popover.scss +17 -18
  47. data/assets/stylesheets/bootstrap/_print.scss +1 -10
  48. data/assets/stylesheets/bootstrap/_progress.scss +7 -3
  49. data/assets/stylesheets/bootstrap/_reboot.scss +39 -38
  50. data/assets/stylesheets/bootstrap/_spinners.scss +18 -8
  51. data/assets/stylesheets/bootstrap/_tables.scss +3 -3
  52. data/assets/stylesheets/bootstrap/_toasts.scss +4 -2
  53. data/assets/stylesheets/bootstrap/_tooltip.scss +4 -4
  54. data/assets/stylesheets/bootstrap/_transitions.scss +6 -0
  55. data/assets/stylesheets/bootstrap/_type.scss +3 -3
  56. data/assets/stylesheets/bootstrap/_utilities.scss +2 -1
  57. data/assets/stylesheets/bootstrap/_variables.scss +71 -45
  58. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +5 -3
  59. data/assets/stylesheets/bootstrap/mixins/_badge.scss +1 -1
  60. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +27 -14
  61. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +11 -8
  62. data/assets/stylesheets/bootstrap/mixins/_caret.scss +8 -8
  63. data/assets/stylesheets/bootstrap/mixins/_float.scss +3 -3
  64. data/assets/stylesheets/bootstrap/mixins/_forms.scss +52 -49
  65. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +31 -17
  66. data/assets/stylesheets/bootstrap/mixins/_grid.scss +32 -14
  67. data/assets/stylesheets/bootstrap/mixins/_hover.scss +4 -4
  68. data/assets/stylesheets/bootstrap/mixins/_image.scss +2 -2
  69. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +1 -1
  70. data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
  71. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +2 -1
  72. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +2 -2
  73. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +5 -4
  74. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +1 -1
  75. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +3 -2
  76. data/assets/stylesheets/bootstrap/mixins/_transition.scss +18 -8
  77. data/assets/stylesheets/bootstrap/utilities/_background.scss +2 -2
  78. data/assets/stylesheets/bootstrap/utilities/_borders.scss +1 -1
  79. data/assets/stylesheets/bootstrap/utilities/_embed.scss +1 -1
  80. data/assets/stylesheets/bootstrap/utilities/_interactions.scss +5 -0
  81. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +1 -1
  82. data/assets/stylesheets/bootstrap/utilities/_text.scss +4 -4
  83. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +126 -102
  84. data/bootstrap.gemspec +2 -4
  85. data/lib/bootstrap/engine.rb +17 -1
  86. data/lib/bootstrap/version.rb +2 -2
  87. data/tasks/updater/js.rb +18 -6
  88. data/tasks/updater/network.rb +8 -2
  89. data/test/dummy_rails/app/assets/config/manifest.js +3 -0
  90. data/test/dummy_rails/app/assets/stylesheets/.browserslistrc +1 -0
  91. data/test/gemfiles/rails_6_0.gemfile +7 -0
  92. data/test/gemfiles/rails_7_0_dartsass.gemfile +8 -0
  93. data/test/gemfiles/rails_7_0_sassc.gemfile +8 -0
  94. data/test/support/dummy_rails_integration.rb +3 -1
  95. data/test/test_helper.rb +18 -13
  96. metadata +17 -21
@@ -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.2 (https://getbootstrap.com/)
3
+ * Copyright 2011-2022 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++) {
@@ -26,55 +28,39 @@
26
28
  function _createClass(Constructor, protoProps, staticProps) {
27
29
  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
28
30
  if (staticProps) _defineProperties(Constructor, staticProps);
31
+ Object.defineProperty(Constructor, "prototype", {
32
+ writable: false
33
+ });
29
34
  return Constructor;
30
35
  }
31
36
 
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
- }
37
+ function _extends() {
38
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
39
+ for (var i = 1; i < arguments.length; i++) {
40
+ var source = arguments[i];
46
41
 
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
- }));
42
+ for (var key in source) {
43
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
44
+ target[key] = source[key];
45
+ }
46
+ }
56
47
  }
57
48
 
58
- ownKeys.forEach(function (key) {
59
- _defineProperty(target, key, source[key]);
60
- });
61
- }
62
-
63
- return target;
49
+ return target;
50
+ };
51
+ return _extends.apply(this, arguments);
64
52
  }
65
53
 
66
54
  /**
67
- * ------------------------------------------------------------------------
68
55
  * Constants
69
- * ------------------------------------------------------------------------
70
56
  */
71
57
 
72
58
  var NAME = 'dropdown';
73
- var VERSION = '4.3.1';
59
+ var VERSION = '4.6.2';
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,53 @@
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 CLASS_NAME_DISABLED = 'disabled';
78
+ var CLASS_NAME_SHOW = 'show';
79
+ var CLASS_NAME_DROPUP = 'dropup';
80
+ var CLASS_NAME_DROPRIGHT = 'dropright';
81
+ var CLASS_NAME_DROPLEFT = 'dropleft';
82
+ var CLASS_NAME_MENURIGHT = 'dropdown-menu-right';
83
+ var CLASS_NAME_POSITION_STATIC = 'position-static';
84
+ var EVENT_HIDE = "hide" + EVENT_KEY;
85
+ var EVENT_HIDDEN = "hidden" + EVENT_KEY;
86
+ var EVENT_SHOW = "show" + EVENT_KEY;
87
+ var EVENT_SHOWN = "shown" + EVENT_KEY;
88
+ var EVENT_CLICK = "click" + EVENT_KEY;
89
+ var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
90
+ var EVENT_KEYDOWN_DATA_API = "keydown" + EVENT_KEY + DATA_API_KEY;
91
+ var EVENT_KEYUP_DATA_API = "keyup" + EVENT_KEY + DATA_API_KEY;
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
+ * Class definition
121
+ */
148
122
 
149
- var Dropdown =
150
- /*#__PURE__*/
151
- function () {
123
+ var Dropdown = /*#__PURE__*/function () {
152
124
  function Dropdown(element, config) {
153
125
  this._element = element;
154
126
  this._popper = null;
@@ -164,13 +136,11 @@
164
136
 
165
137
  // Public
166
138
  _proto.toggle = function toggle() {
167
- if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED)) {
139
+ if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED)) {
168
140
  return;
169
141
  }
170
142
 
171
- var parent = Dropdown._getParentFromElement(this._element);
172
-
173
- var isActive = $(this._menu).hasClass(ClassName.SHOW);
143
+ var isActive = $__default["default"](this._menu).hasClass(CLASS_NAME_SHOW);
174
144
 
175
145
  Dropdown._clearMenus();
176
146
 
@@ -178,31 +148,43 @@
178
148
  return;
179
149
  }
180
150
 
151
+ this.show(true);
152
+ };
153
+
154
+ _proto.show = function show(usePopper) {
155
+ if (usePopper === void 0) {
156
+ usePopper = false;
157
+ }
158
+
159
+ if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED) || $__default["default"](this._menu).hasClass(CLASS_NAME_SHOW)) {
160
+ return;
161
+ }
162
+
181
163
  var relatedTarget = {
182
164
  relatedTarget: this._element
183
165
  };
184
- var showEvent = $.Event(Event.SHOW, relatedTarget);
185
- $(parent).trigger(showEvent);
166
+ var showEvent = $__default["default"].Event(EVENT_SHOW, relatedTarget);
167
+
168
+ var parent = Dropdown._getParentFromElement(this._element);
169
+
170
+ $__default["default"](parent).trigger(showEvent);
186
171
 
187
172
  if (showEvent.isDefaultPrevented()) {
188
173
  return;
189
- } // Disable totally Popper.js for Dropdown in Navbar
174
+ } // Totally disable Popper for Dropdowns in Navbar
190
175
 
191
176
 
192
- if (!this._inNavbar) {
193
- /**
194
- * Check for Popper dependency
195
- * Popper - https://popper.js.org
196
- */
197
- if (typeof Popper === 'undefined') {
198
- throw new TypeError('Bootstrap\'s dropdowns require Popper.js (https://popper.js.org/)');
177
+ if (!this._inNavbar && usePopper) {
178
+ // Check for Popper dependency
179
+ if (typeof Popper__default["default"] === 'undefined') {
180
+ throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)');
199
181
  }
200
182
 
201
183
  var referenceElement = this._element;
202
184
 
203
185
  if (this._config.reference === 'parent') {
204
186
  referenceElement = parent;
205
- } else if (Util.isElement(this._config.reference)) {
187
+ } else if (Util__default["default"].isElement(this._config.reference)) {
206
188
  referenceElement = this._config.reference; // Check if it's jQuery element
207
189
 
208
190
  if (typeof this._config.reference.jquery !== 'undefined') {
@@ -214,75 +196,57 @@
214
196
 
215
197
 
216
198
  if (this._config.boundary !== 'scrollParent') {
217
- $(parent).addClass(ClassName.POSITION_STATIC);
199
+ $__default["default"](parent).addClass(CLASS_NAME_POSITION_STATIC);
218
200
  }
219
201
 
220
- this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig());
202
+ this._popper = new Popper__default["default"](referenceElement, this._menu, this._getPopperConfig());
221
203
  } // If this is a touch-enabled device we add extra
222
204
  // empty mouseover listeners to the body's immediate children;
223
205
  // only needed because of broken event delegation on iOS
224
206
  // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
225
207
 
226
208
 
227
- if ('ontouchstart' in document.documentElement && $(parent).closest(Selector.NAVBAR_NAV).length === 0) {
228
- $(document.body).children().on('mouseover', null, $.noop);
209
+ if ('ontouchstart' in document.documentElement && $__default["default"](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {
210
+ $__default["default"](document.body).children().on('mouseover', null, $__default["default"].noop);
229
211
  }
230
212
 
231
213
  this._element.focus();
232
214
 
233
215
  this._element.setAttribute('aria-expanded', true);
234
216
 
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));
217
+ $__default["default"](this._menu).toggleClass(CLASS_NAME_SHOW);
218
+ $__default["default"](parent).toggleClass(CLASS_NAME_SHOW).trigger($__default["default"].Event(EVENT_SHOWN, relatedTarget));
259
219
  };
260
220
 
261
221
  _proto.hide = function hide() {
262
- if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED) || !$(this._menu).hasClass(ClassName.SHOW)) {
222
+ if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED) || !$__default["default"](this._menu).hasClass(CLASS_NAME_SHOW)) {
263
223
  return;
264
224
  }
265
225
 
266
226
  var relatedTarget = {
267
227
  relatedTarget: this._element
268
228
  };
269
- var hideEvent = $.Event(Event.HIDE, relatedTarget);
229
+ var hideEvent = $__default["default"].Event(EVENT_HIDE, relatedTarget);
270
230
 
271
231
  var parent = Dropdown._getParentFromElement(this._element);
272
232
 
273
- $(parent).trigger(hideEvent);
233
+ $__default["default"](parent).trigger(hideEvent);
274
234
 
275
235
  if (hideEvent.isDefaultPrevented()) {
276
236
  return;
277
237
  }
278
238
 
279
- $(this._menu).toggleClass(ClassName.SHOW);
280
- $(parent).toggleClass(ClassName.SHOW).trigger($.Event(Event.HIDDEN, relatedTarget));
239
+ if (this._popper) {
240
+ this._popper.destroy();
241
+ }
242
+
243
+ $__default["default"](this._menu).toggleClass(CLASS_NAME_SHOW);
244
+ $__default["default"](parent).toggleClass(CLASS_NAME_SHOW).trigger($__default["default"].Event(EVENT_HIDDEN, relatedTarget));
281
245
  };
282
246
 
283
247
  _proto.dispose = function dispose() {
284
- $.removeData(this._element, DATA_KEY);
285
- $(this._element).off(EVENT_KEY);
248
+ $__default["default"].removeData(this._element, DATA_KEY);
249
+ $__default["default"](this._element).off(EVENT_KEY);
286
250
  this._element = null;
287
251
  this._menu = null;
288
252
 
@@ -305,7 +269,7 @@
305
269
  _proto._addEventListeners = function _addEventListeners() {
306
270
  var _this = this;
307
271
 
308
- $(this._element).on(Event.CLICK, function (event) {
272
+ $__default["default"](this._element).on(EVENT_CLICK, function (event) {
309
273
  event.preventDefault();
310
274
  event.stopPropagation();
311
275
 
@@ -314,8 +278,8 @@
314
278
  };
315
279
 
316
280
  _proto._getConfig = function _getConfig(config) {
317
- config = _objectSpread({}, this.constructor.Default, $(this._element).data(), config);
318
- Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);
281
+ config = _extends({}, this.constructor.Default, $__default["default"](this._element).data(), config);
282
+ Util__default["default"].typeCheckConfig(NAME, config, this.constructor.DefaultType);
319
283
  return config;
320
284
  };
321
285
 
@@ -324,7 +288,7 @@
324
288
  var parent = Dropdown._getParentFromElement(this._element);
325
289
 
326
290
  if (parent) {
327
- this._menu = parent.querySelector(Selector.MENU);
291
+ this._menu = parent.querySelector(SELECTOR_MENU);
328
292
  }
329
293
  }
330
294
 
@@ -332,28 +296,24 @@
332
296
  };
333
297
 
334
298
  _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;
299
+ var $parentDropdown = $__default["default"](this._element.parentNode);
300
+ var placement = PLACEMENT_BOTTOM; // Handle dropup
301
+
302
+ if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {
303
+ placement = $__default["default"](this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP;
304
+ } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {
305
+ placement = PLACEMENT_RIGHT;
306
+ } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {
307
+ placement = PLACEMENT_LEFT;
308
+ } else if ($__default["default"](this._menu).hasClass(CLASS_NAME_MENURIGHT)) {
309
+ placement = PLACEMENT_BOTTOMEND;
350
310
  }
351
311
 
352
312
  return placement;
353
313
  };
354
314
 
355
315
  _proto._detectNavbar = function _detectNavbar() {
356
- return $(this._element).closest('.navbar').length > 0;
316
+ return $__default["default"](this._element).closest('.navbar').length > 0;
357
317
  };
358
318
 
359
319
  _proto._getOffset = function _getOffset() {
@@ -363,7 +323,7 @@
363
323
 
364
324
  if (typeof this._config.offset === 'function') {
365
325
  offset.fn = function (data) {
366
- data.offsets = _objectSpread({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {});
326
+ data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element));
367
327
  return data;
368
328
  };
369
329
  } else {
@@ -384,9 +344,8 @@
384
344
  preventOverflow: {
385
345
  boundariesElement: this._config.boundary
386
346
  }
387
- } // Disable Popper.js if we have a static display
388
-
389
- };
347
+ }
348
+ }; // Disable Popper if we have a static display
390
349
 
391
350
  if (this._config.display === 'static') {
392
351
  popperConfig.modifiers.applyStyle = {
@@ -394,19 +353,19 @@
394
353
  };
395
354
  }
396
355
 
397
- return popperConfig;
356
+ return _extends({}, popperConfig, this._config.popperConfig);
398
357
  } // Static
399
358
  ;
400
359
 
401
360
  Dropdown._jQueryInterface = function _jQueryInterface(config) {
402
361
  return this.each(function () {
403
- var data = $(this).data(DATA_KEY);
362
+ var data = $__default["default"](this).data(DATA_KEY);
404
363
 
405
364
  var _config = typeof config === 'object' ? config : null;
406
365
 
407
366
  if (!data) {
408
367
  data = new Dropdown(this, _config);
409
- $(this).data(DATA_KEY, data);
368
+ $__default["default"](this).data(DATA_KEY, data);
410
369
  }
411
370
 
412
371
  if (typeof config === 'string') {
@@ -424,12 +383,12 @@
424
383
  return;
425
384
  }
426
385
 
427
- var toggles = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE));
386
+ var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));
428
387
 
429
388
  for (var i = 0, len = toggles.length; i < len; i++) {
430
389
  var parent = Dropdown._getParentFromElement(toggles[i]);
431
390
 
432
- var context = $(toggles[i]).data(DATA_KEY);
391
+ var context = $__default["default"](toggles[i]).data(DATA_KEY);
433
392
  var relatedTarget = {
434
393
  relatedTarget: toggles[i]
435
394
  };
@@ -444,16 +403,16 @@
444
403
 
445
404
  var dropdownMenu = context._menu;
446
405
 
447
- if (!$(parent).hasClass(ClassName.SHOW)) {
406
+ if (!$__default["default"](parent).hasClass(CLASS_NAME_SHOW)) {
448
407
  continue;
449
408
  }
450
409
 
451
- if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $.contains(parent, event.target)) {
410
+ 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
411
  continue;
453
412
  }
454
413
 
455
- var hideEvent = $.Event(Event.HIDE, relatedTarget);
456
- $(parent).trigger(hideEvent);
414
+ var hideEvent = $__default["default"].Event(EVENT_HIDE, relatedTarget);
415
+ $__default["default"](parent).trigger(hideEvent);
457
416
 
458
417
  if (hideEvent.isDefaultPrevented()) {
459
418
  continue;
@@ -462,18 +421,23 @@
462
421
 
463
422
 
464
423
  if ('ontouchstart' in document.documentElement) {
465
- $(document.body).children().off('mouseover', null, $.noop);
424
+ $__default["default"](document.body).children().off('mouseover', null, $__default["default"].noop);
466
425
  }
467
426
 
468
427
  toggles[i].setAttribute('aria-expanded', 'false');
469
- $(dropdownMenu).removeClass(ClassName.SHOW);
470
- $(parent).removeClass(ClassName.SHOW).trigger($.Event(Event.HIDDEN, relatedTarget));
428
+
429
+ if (context._popper) {
430
+ context._popper.destroy();
431
+ }
432
+
433
+ $__default["default"](dropdownMenu).removeClass(CLASS_NAME_SHOW);
434
+ $__default["default"](parent).removeClass(CLASS_NAME_SHOW).trigger($__default["default"].Event(EVENT_HIDDEN, relatedTarget));
471
435
  }
472
436
  };
473
437
 
474
438
  Dropdown._getParentFromElement = function _getParentFromElement(element) {
475
439
  var parent;
476
- var selector = Util.getSelectorFromElement(element);
440
+ var selector = Util__default["default"].getSelectorFromElement(element);
477
441
 
478
442
  if (selector) {
479
443
  parent = document.querySelector(selector);
@@ -491,32 +455,37 @@
491
455
  // - If key is other than escape
492
456
  // - If key is not up or down => not a dropdown command
493
457
  // - 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)) {
458
+ 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
459
  return;
496
460
  }
497
461
 
498
- event.preventDefault();
499
- event.stopPropagation();
500
-
501
- if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {
462
+ if (this.disabled || $__default["default"](this).hasClass(CLASS_NAME_DISABLED)) {
502
463
  return;
503
464
  }
504
465
 
505
466
  var parent = Dropdown._getParentFromElement(this);
506
467
 
507
- var isActive = $(parent).hasClass(ClassName.SHOW);
468
+ var isActive = $__default["default"](parent).hasClass(CLASS_NAME_SHOW);
469
+
470
+ if (!isActive && event.which === ESCAPE_KEYCODE) {
471
+ return;
472
+ }
473
+
474
+ event.preventDefault();
475
+ event.stopPropagation();
508
476
 
509
- if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
477
+ if (!isActive || event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE) {
510
478
  if (event.which === ESCAPE_KEYCODE) {
511
- var toggle = parent.querySelector(Selector.DATA_TOGGLE);
512
- $(toggle).trigger('focus');
479
+ $__default["default"](parent.querySelector(SELECTOR_DATA_TOGGLE)).trigger('focus');
513
480
  }
514
481
 
515
- $(this).trigger('click');
482
+ $__default["default"](this).trigger('click');
516
483
  return;
517
484
  }
518
485
 
519
- var items = [].slice.call(parent.querySelectorAll(Selector.VISIBLE_ITEMS));
486
+ var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) {
487
+ return $__default["default"](item).is(':visible');
488
+ });
520
489
 
521
490
  if (items.length === 0) {
522
491
  return;
@@ -561,31 +530,27 @@
561
530
  return Dropdown;
562
531
  }();
563
532
  /**
564
- * ------------------------------------------------------------------------
565
- * Data Api implementation
566
- * ------------------------------------------------------------------------
533
+ * Data API implementation
567
534
  */
568
535
 
569
536
 
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) {
537
+ $__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
538
  event.preventDefault();
572
539
  event.stopPropagation();
573
540
 
574
- Dropdown._jQueryInterface.call($(this), 'toggle');
575
- }).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) {
541
+ Dropdown._jQueryInterface.call($__default["default"](this), 'toggle');
542
+ }).on(EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, function (e) {
576
543
  e.stopPropagation();
577
544
  });
578
545
  /**
579
- * ------------------------------------------------------------------------
580
546
  * jQuery
581
- * ------------------------------------------------------------------------
582
547
  */
583
548
 
584
- $.fn[NAME] = Dropdown._jQueryInterface;
585
- $.fn[NAME].Constructor = Dropdown;
549
+ $__default["default"].fn[NAME] = Dropdown._jQueryInterface;
550
+ $__default["default"].fn[NAME].Constructor = Dropdown;
586
551
 
587
- $.fn[NAME].noConflict = function () {
588
- $.fn[NAME] = JQUERY_NO_CONFLICT;
552
+ $__default["default"].fn[NAME].noConflict = function () {
553
+ $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
589
554
  return Dropdown._jQueryInterface;
590
555
  };
591
556