bootstrap 4.2.1 → 4.5.2

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