bootstrap 4.6.1 → 5.0.0.alpha1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (133) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/assets/javascripts/bootstrap/alert.js +148 -70
  4. data/assets/javascripts/bootstrap/button.js +71 -151
  5. data/assets/javascripts/bootstrap/carousel.js +314 -206
  6. data/assets/javascripts/bootstrap/collapse.js +306 -150
  7. data/assets/javascripts/bootstrap/dom/data.js +81 -0
  8. data/assets/javascripts/bootstrap/dom/event-handler.js +311 -0
  9. data/assets/javascripts/bootstrap/dom/manipulator.js +100 -0
  10. data/assets/javascripts/bootstrap/dom/polyfill.js +110 -0
  11. data/assets/javascripts/bootstrap/dom/selector-engine.js +98 -0
  12. data/assets/javascripts/bootstrap/dropdown.js +256 -202
  13. data/assets/javascripts/bootstrap/modal.js +353 -247
  14. data/assets/javascripts/bootstrap/popover.js +83 -91
  15. data/assets/javascripts/bootstrap/scrollspy.js +175 -103
  16. data/assets/javascripts/bootstrap/tab.js +170 -96
  17. data/assets/javascripts/bootstrap/toast.js +180 -107
  18. data/assets/javascripts/bootstrap/tooltip.js +374 -223
  19. data/assets/javascripts/bootstrap-sprockets.js +11 -7
  20. data/assets/javascripts/bootstrap.js +2257 -1548
  21. data/assets/javascripts/bootstrap.min.js +3 -3
  22. data/assets/stylesheets/_bootstrap-grid.scss +53 -18
  23. data/assets/stylesheets/_bootstrap-reboot.scss +6 -3
  24. data/assets/stylesheets/_bootstrap.scss +16 -10
  25. data/assets/stylesheets/bootstrap/_alert.scss +3 -4
  26. data/assets/stylesheets/bootstrap/_badge.scss +2 -27
  27. data/assets/stylesheets/bootstrap/_breadcrumb.scss +5 -17
  28. data/assets/stylesheets/bootstrap/_button-group.scss +16 -38
  29. data/assets/stylesheets/bootstrap/_buttons.scss +27 -45
  30. data/assets/stylesheets/bootstrap/_card.scss +22 -68
  31. data/assets/stylesheets/bootstrap/_carousel.scss +15 -20
  32. data/assets/stylesheets/bootstrap/_close.scss +9 -13
  33. data/assets/stylesheets/bootstrap/_containers.scss +41 -0
  34. data/assets/stylesheets/bootstrap/_dropdown.scss +12 -9
  35. data/assets/stylesheets/bootstrap/_forms.scss +9 -347
  36. data/assets/stylesheets/bootstrap/_functions.scss +82 -69
  37. data/assets/stylesheets/bootstrap/_grid.scss +3 -54
  38. data/assets/stylesheets/bootstrap/_helpers.scss +7 -0
  39. data/assets/stylesheets/bootstrap/_images.scss +1 -1
  40. data/assets/stylesheets/bootstrap/_list-group.scss +7 -4
  41. data/assets/stylesheets/bootstrap/_mixins.scss +6 -12
  42. data/assets/stylesheets/bootstrap/_modal.scss +36 -41
  43. data/assets/stylesheets/bootstrap/_nav.scss +7 -4
  44. data/assets/stylesheets/bootstrap/_navbar.scss +42 -82
  45. data/assets/stylesheets/bootstrap/_pagination.scss +7 -20
  46. data/assets/stylesheets/bootstrap/_popover.scss +14 -14
  47. data/assets/stylesheets/bootstrap/_progress.scss +3 -5
  48. data/assets/stylesheets/bootstrap/_reboot.scss +304 -172
  49. data/assets/stylesheets/bootstrap/_root.scss +5 -8
  50. data/assets/stylesheets/bootstrap/_spinners.scss +6 -15
  51. data/assets/stylesheets/bootstrap/_tables.scss +80 -114
  52. data/assets/stylesheets/bootstrap/_toasts.scss +2 -4
  53. data/assets/stylesheets/bootstrap/_tooltip.scss +9 -9
  54. data/assets/stylesheets/bootstrap/_transitions.scss +0 -1
  55. data/assets/stylesheets/bootstrap/_type.scss +38 -59
  56. data/assets/stylesheets/bootstrap/_utilities.scss +503 -18
  57. data/assets/stylesheets/bootstrap/_variables.scss +548 -436
  58. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +18 -0
  59. data/assets/stylesheets/bootstrap/forms/_form-check.scss +142 -0
  60. data/assets/stylesheets/bootstrap/forms/_form-control.scss +116 -0
  61. data/assets/stylesheets/bootstrap/forms/_form-file.scss +91 -0
  62. data/assets/stylesheets/bootstrap/forms/_form-range.scss +136 -0
  63. data/assets/stylesheets/bootstrap/forms/_form-select.scss +82 -0
  64. data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
  65. data/assets/stylesheets/bootstrap/forms/_input-group.scss +140 -0
  66. data/assets/stylesheets/bootstrap/forms/_labels.scss +36 -0
  67. data/assets/stylesheets/bootstrap/forms/_validation.scss +12 -0
  68. data/assets/stylesheets/bootstrap/{utilities → helpers}/_clearfix.scss +0 -0
  69. data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +12 -0
  70. data/assets/stylesheets/bootstrap/helpers/_embed.scss +31 -0
  71. data/assets/stylesheets/bootstrap/helpers/_position.scss +30 -0
  72. data/assets/stylesheets/bootstrap/helpers/_screenreaders.scss +8 -0
  73. data/assets/stylesheets/bootstrap/helpers/_stretched-link.scss +15 -0
  74. data/assets/stylesheets/bootstrap/helpers/_text-truncation.scss +7 -0
  75. data/assets/stylesheets/bootstrap/mixins/_alert.scss +0 -4
  76. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +1 -1
  77. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +11 -8
  78. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +62 -47
  79. data/assets/stylesheets/bootstrap/mixins/_caret.scss +4 -4
  80. data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
  81. data/assets/stylesheets/bootstrap/mixins/_container.scss +9 -0
  82. data/assets/stylesheets/bootstrap/mixins/_forms.scss +23 -85
  83. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +9 -11
  84. data/assets/stylesheets/bootstrap/mixins/_grid.scss +86 -34
  85. data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -21
  86. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +2 -1
  87. data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
  88. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +15 -8
  89. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +2 -2
  90. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +18 -24
  91. data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +21 -0
  92. data/assets/stylesheets/bootstrap/mixins/_transition.scss +2 -2
  93. data/assets/stylesheets/bootstrap/mixins/_utilities.scss +49 -0
  94. data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
  95. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +214 -130
  96. data/lib/bootstrap/version.rb +2 -2
  97. data/tasks/updater/js.rb +3 -3
  98. metadata +32 -40
  99. data/assets/javascripts/bootstrap/util.js +0 -189
  100. data/assets/stylesheets/bootstrap/_code.scss +0 -48
  101. data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -526
  102. data/assets/stylesheets/bootstrap/_input-group.scss +0 -211
  103. data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
  104. data/assets/stylesheets/bootstrap/_media.scss +0 -8
  105. data/assets/stylesheets/bootstrap/_print.scss +0 -132
  106. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -23
  107. data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
  108. data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
  109. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -80
  110. data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
  111. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -11
  112. data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
  113. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
  114. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -17
  115. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
  116. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
  117. data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
  118. data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
  119. data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
  120. data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
  121. data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
  122. data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
  123. data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
  124. data/assets/stylesheets/bootstrap/utilities/_interactions.scss +0 -5
  125. data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
  126. data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
  127. data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
  128. data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
  129. data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
  130. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
  131. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
  132. data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -72
  133. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
@@ -1,84 +1,124 @@
1
1
  /*!
2
- * Bootstrap dropdown.js v4.6.1 (https://getbootstrap.com/)
3
- * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
2
+ * Bootstrap dropdown.js v5.0.0-alpha1 (https://getbootstrap.com/)
3
+ * Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
5
  */
6
6
  (function (global, factory) {
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'], 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
-
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);
17
-
18
- function _defineProperties(target, props) {
19
- for (var i = 0; i < props.length; i++) {
20
- var descriptor = props[i];
21
- descriptor.enumerable = descriptor.enumerable || false;
22
- descriptor.configurable = true;
23
- if ("value" in descriptor) descriptor.writable = true;
24
- Object.defineProperty(target, descriptor.key, descriptor);
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('popper.js'), require('./dom/selector-engine.js')) :
8
+ typeof define === 'function' && define.amd ? define(['./dom/data.js', './dom/event-handler.js', './dom/manipulator.js', 'popper.js', './dom/selector-engine.js'], factory) :
9
+ (global = global || self, global.Dropdown = factory(global.Data, global.EventHandler, global.Manipulator, global.Popper, global.SelectorEngine));
10
+ }(this, (function (Data, EventHandler, Manipulator, Popper, SelectorEngine) { 'use strict';
11
+
12
+ Data = Data && Object.prototype.hasOwnProperty.call(Data, 'default') ? Data['default'] : Data;
13
+ EventHandler = EventHandler && Object.prototype.hasOwnProperty.call(EventHandler, 'default') ? EventHandler['default'] : EventHandler;
14
+ Manipulator = Manipulator && Object.prototype.hasOwnProperty.call(Manipulator, 'default') ? Manipulator['default'] : Manipulator;
15
+ Popper = Popper && Object.prototype.hasOwnProperty.call(Popper, 'default') ? Popper['default'] : Popper;
16
+ SelectorEngine = SelectorEngine && Object.prototype.hasOwnProperty.call(SelectorEngine, 'default') ? SelectorEngine['default'] : SelectorEngine;
17
+
18
+ /**
19
+ * --------------------------------------------------------------------------
20
+ * Bootstrap (v5.0.0-alpha1): util/index.js
21
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
22
+ * --------------------------------------------------------------------------
23
+ */
24
+
25
+ var toType = function toType(obj) {
26
+ if (obj === null || obj === undefined) {
27
+ return "" + obj;
25
28
  }
26
- }
27
29
 
28
- function _createClass(Constructor, protoProps, staticProps) {
29
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
30
- if (staticProps) _defineProperties(Constructor, staticProps);
31
- return Constructor;
32
- }
30
+ return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
31
+ };
33
32
 
34
- function _extends() {
35
- _extends = Object.assign || function (target) {
36
- for (var i = 1; i < arguments.length; i++) {
37
- var source = arguments[i];
33
+ var getSelector = function getSelector(element) {
34
+ var selector = element.getAttribute('data-target');
38
35
 
39
- for (var key in source) {
40
- if (Object.prototype.hasOwnProperty.call(source, key)) {
41
- target[key] = source[key];
42
- }
43
- }
36
+ if (!selector || selector === '#') {
37
+ var hrefAttr = element.getAttribute('href');
38
+ selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
39
+ }
40
+
41
+ return selector;
42
+ };
43
+
44
+ var getElementFromSelector = function getElementFromSelector(element) {
45
+ var selector = getSelector(element);
46
+ return selector ? document.querySelector(selector) : null;
47
+ };
48
+
49
+ var isElement = function isElement(obj) {
50
+ return (obj[0] || obj).nodeType;
51
+ };
52
+
53
+ var typeCheckConfig = function typeCheckConfig(componentName, config, configTypes) {
54
+ Object.keys(configTypes).forEach(function (property) {
55
+ var expectedTypes = configTypes[property];
56
+ var value = config[property];
57
+ var valueType = value && isElement(value) ? 'element' : toType(value);
58
+
59
+ if (!new RegExp(expectedTypes).test(valueType)) {
60
+ throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
44
61
  }
62
+ });
63
+ };
45
64
 
46
- return target;
47
- };
65
+ var isVisible = function isVisible(element) {
66
+ if (!element) {
67
+ return false;
68
+ }
48
69
 
49
- return _extends.apply(this, arguments);
50
- }
70
+ if (element.style && element.parentNode && element.parentNode.style) {
71
+ var elementStyle = getComputedStyle(element);
72
+ var parentNodeStyle = getComputedStyle(element.parentNode);
73
+ return elementStyle.display !== 'none' && parentNodeStyle.display !== 'none' && elementStyle.visibility !== 'hidden';
74
+ }
75
+
76
+ return false;
77
+ };
78
+
79
+ var noop = function noop() {
80
+ return function () {};
81
+ };
82
+
83
+ var getjQuery = function getjQuery() {
84
+ var _window = window,
85
+ jQuery = _window.jQuery;
86
+
87
+ if (jQuery && !document.body.hasAttribute('data-no-jquery')) {
88
+ return jQuery;
89
+ }
90
+
91
+ return null;
92
+ };
93
+
94
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
51
95
 
96
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
97
+
98
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
99
+
100
+ 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); } }
101
+
102
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
52
103
  /**
104
+ * ------------------------------------------------------------------------
53
105
  * Constants
106
+ * ------------------------------------------------------------------------
54
107
  */
55
108
 
56
109
  var NAME = 'dropdown';
57
- var VERSION = '4.6.1';
110
+ var VERSION = '5.0.0-alpha1';
58
111
  var DATA_KEY = 'bs.dropdown';
59
112
  var EVENT_KEY = "." + DATA_KEY;
60
113
  var DATA_API_KEY = '.data-api';
61
- var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
62
- var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
63
-
64
- var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key
65
-
66
- var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key
67
-
68
- var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key
69
-
70
- var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key
71
-
72
- var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)
73
-
74
- var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE);
75
- var CLASS_NAME_DISABLED = 'disabled';
76
- var CLASS_NAME_SHOW = 'show';
77
- var CLASS_NAME_DROPUP = 'dropup';
78
- var CLASS_NAME_DROPRIGHT = 'dropright';
79
- var CLASS_NAME_DROPLEFT = 'dropleft';
80
- var CLASS_NAME_MENURIGHT = 'dropdown-menu-right';
81
- var CLASS_NAME_POSITION_STATIC = 'position-static';
114
+ var ESCAPE_KEY = 'Escape';
115
+ var SPACE_KEY = 'Space';
116
+ var TAB_KEY = 'Tab';
117
+ var ARROW_UP_KEY = 'ArrowUp';
118
+ var ARROW_DOWN_KEY = 'ArrowDown';
119
+ var RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button
120
+
121
+ var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEY + "|" + ARROW_DOWN_KEY + "|" + ESCAPE_KEY);
82
122
  var EVENT_HIDE = "hide" + EVENT_KEY;
83
123
  var EVENT_HIDDEN = "hidden" + EVENT_KEY;
84
124
  var EVENT_SHOW = "show" + EVENT_KEY;
@@ -87,6 +127,14 @@
87
127
  var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
88
128
  var EVENT_KEYDOWN_DATA_API = "keydown" + EVENT_KEY + DATA_API_KEY;
89
129
  var EVENT_KEYUP_DATA_API = "keyup" + EVENT_KEY + DATA_API_KEY;
130
+ var CLASS_NAME_DISABLED = 'disabled';
131
+ var CLASS_NAME_SHOW = 'show';
132
+ var CLASS_NAME_DROPUP = 'dropup';
133
+ var CLASS_NAME_DROPRIGHT = 'dropright';
134
+ var CLASS_NAME_DROPLEFT = 'dropleft';
135
+ var CLASS_NAME_MENURIGHT = 'dropdown-menu-right';
136
+ var CLASS_NAME_NAVBAR = 'navbar';
137
+ var CLASS_NAME_POSITION_STATIC = 'position-static';
90
138
  var SELECTOR_DATA_TOGGLE = '[data-toggle="dropdown"]';
91
139
  var SELECTOR_FORM_CHILD = '.dropdown form';
92
140
  var SELECTOR_MENU = '.dropdown-menu';
@@ -115,7 +163,9 @@
115
163
  popperConfig: '(null|object)'
116
164
  };
117
165
  /**
118
- * Class definition
166
+ * ------------------------------------------------------------------------
167
+ * Class Definition
168
+ * ------------------------------------------------------------------------
119
169
  */
120
170
 
121
171
  var Dropdown = /*#__PURE__*/function () {
@@ -127,6 +177,8 @@
127
177
  this._inNavbar = this._detectNavbar();
128
178
 
129
179
  this._addEventListeners();
180
+
181
+ Data.setData(element, DATA_KEY, this);
130
182
  } // Getters
131
183
 
132
184
 
@@ -134,55 +186,47 @@
134
186
 
135
187
  // Public
136
188
  _proto.toggle = function toggle() {
137
- if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED)) {
189
+ if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED)) {
138
190
  return;
139
191
  }
140
192
 
141
- var isActive = $__default["default"](this._menu).hasClass(CLASS_NAME_SHOW);
193
+ var isActive = this._element.classList.contains(CLASS_NAME_SHOW);
142
194
 
143
- Dropdown._clearMenus();
195
+ Dropdown.clearMenus();
144
196
 
145
197
  if (isActive) {
146
198
  return;
147
199
  }
148
200
 
149
- this.show(true);
201
+ this.show();
150
202
  };
151
203
 
152
- _proto.show = function show(usePopper) {
153
- if (usePopper === void 0) {
154
- usePopper = false;
155
- }
156
-
157
- if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED) || $__default["default"](this._menu).hasClass(CLASS_NAME_SHOW)) {
204
+ _proto.show = function show() {
205
+ if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || this._menu.classList.contains(CLASS_NAME_SHOW)) {
158
206
  return;
159
207
  }
160
208
 
209
+ var parent = Dropdown.getParentFromElement(this._element);
161
210
  var relatedTarget = {
162
211
  relatedTarget: this._element
163
212
  };
164
- var showEvent = $__default["default"].Event(EVENT_SHOW, relatedTarget);
165
-
166
- var parent = Dropdown._getParentFromElement(this._element);
213
+ var showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget);
167
214
 
168
- $__default["default"](parent).trigger(showEvent);
169
-
170
- if (showEvent.isDefaultPrevented()) {
215
+ if (showEvent.defaultPrevented) {
171
216
  return;
172
- } // Totally disable Popper for Dropdowns in Navbar
217
+ } // Disable totally Popper.js for Dropdown in Navbar
173
218
 
174
219
 
175
- if (!this._inNavbar && usePopper) {
176
- // Check for Popper dependency
177
- if (typeof Popper__default["default"] === 'undefined') {
178
- throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)');
220
+ if (!this._inNavbar) {
221
+ if (typeof Popper === 'undefined') {
222
+ throw new TypeError('Bootstrap\'s dropdowns require Popper.js (https://popper.js.org)');
179
223
  }
180
224
 
181
225
  var referenceElement = this._element;
182
226
 
183
227
  if (this._config.reference === 'parent') {
184
228
  referenceElement = parent;
185
- } else if (Util__default["default"].isElement(this._config.reference)) {
229
+ } else if (isElement(this._config.reference)) {
186
230
  referenceElement = this._config.reference; // Check if it's jQuery element
187
231
 
188
232
  if (typeof this._config.reference.jquery !== 'undefined') {
@@ -194,43 +238,45 @@
194
238
 
195
239
 
196
240
  if (this._config.boundary !== 'scrollParent') {
197
- $__default["default"](parent).addClass(CLASS_NAME_POSITION_STATIC);
241
+ parent.classList.add(CLASS_NAME_POSITION_STATIC);
198
242
  }
199
243
 
200
- this._popper = new Popper__default["default"](referenceElement, this._menu, this._getPopperConfig());
244
+ this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig());
201
245
  } // If this is a touch-enabled device we add extra
202
246
  // empty mouseover listeners to the body's immediate children;
203
247
  // only needed because of broken event delegation on iOS
204
248
  // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
205
249
 
206
250
 
207
- if ('ontouchstart' in document.documentElement && $__default["default"](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {
208
- $__default["default"](document.body).children().on('mouseover', null, $__default["default"].noop);
251
+ if ('ontouchstart' in document.documentElement && !parent.closest(SELECTOR_NAVBAR_NAV)) {
252
+ var _ref;
253
+
254
+ (_ref = []).concat.apply(_ref, document.body.children).forEach(function (elem) {
255
+ return EventHandler.on(elem, 'mouseover', null, noop());
256
+ });
209
257
  }
210
258
 
211
259
  this._element.focus();
212
260
 
213
261
  this._element.setAttribute('aria-expanded', true);
214
262
 
215
- $__default["default"](this._menu).toggleClass(CLASS_NAME_SHOW);
216
- $__default["default"](parent).toggleClass(CLASS_NAME_SHOW).trigger($__default["default"].Event(EVENT_SHOWN, relatedTarget));
263
+ Manipulator.toggleClass(this._menu, CLASS_NAME_SHOW);
264
+ Manipulator.toggleClass(this._element, CLASS_NAME_SHOW);
265
+ EventHandler.trigger(parent, EVENT_SHOWN, relatedTarget);
217
266
  };
218
267
 
219
268
  _proto.hide = function hide() {
220
- if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED) || !$__default["default"](this._menu).hasClass(CLASS_NAME_SHOW)) {
269
+ if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || !this._menu.classList.contains(CLASS_NAME_SHOW)) {
221
270
  return;
222
271
  }
223
272
 
273
+ var parent = Dropdown.getParentFromElement(this._element);
224
274
  var relatedTarget = {
225
275
  relatedTarget: this._element
226
276
  };
227
- var hideEvent = $__default["default"].Event(EVENT_HIDE, relatedTarget);
228
-
229
- var parent = Dropdown._getParentFromElement(this._element);
230
-
231
- $__default["default"](parent).trigger(hideEvent);
277
+ var hideEvent = EventHandler.trigger(parent, EVENT_HIDE, relatedTarget);
232
278
 
233
- if (hideEvent.isDefaultPrevented()) {
279
+ if (hideEvent.defaultPrevented) {
234
280
  return;
235
281
  }
236
282
 
@@ -238,17 +284,18 @@
238
284
  this._popper.destroy();
239
285
  }
240
286
 
241
- $__default["default"](this._menu).toggleClass(CLASS_NAME_SHOW);
242
- $__default["default"](parent).toggleClass(CLASS_NAME_SHOW).trigger($__default["default"].Event(EVENT_HIDDEN, relatedTarget));
287
+ Manipulator.toggleClass(this._menu, CLASS_NAME_SHOW);
288
+ Manipulator.toggleClass(this._element, CLASS_NAME_SHOW);
289
+ EventHandler.trigger(parent, EVENT_HIDDEN, relatedTarget);
243
290
  };
244
291
 
245
292
  _proto.dispose = function dispose() {
246
- $__default["default"].removeData(this._element, DATA_KEY);
247
- $__default["default"](this._element).off(EVENT_KEY);
293
+ Data.removeData(this._element, DATA_KEY);
294
+ EventHandler.off(this._element, EVENT_KEY);
248
295
  this._element = null;
249
296
  this._menu = null;
250
297
 
251
- if (this._popper !== null) {
298
+ if (this._popper) {
252
299
  this._popper.destroy();
253
300
 
254
301
  this._popper = null;
@@ -258,7 +305,7 @@
258
305
  _proto.update = function update() {
259
306
  this._inNavbar = this._detectNavbar();
260
307
 
261
- if (this._popper !== null) {
308
+ if (this._popper) {
262
309
  this._popper.scheduleUpdate();
263
310
  }
264
311
  } // Private
@@ -267,7 +314,7 @@
267
314
  _proto._addEventListeners = function _addEventListeners() {
268
315
  var _this = this;
269
316
 
270
- $__default["default"](this._element).on(EVENT_CLICK, function (event) {
317
+ EventHandler.on(this._element, EVENT_CLICK, function (event) {
271
318
  event.preventDefault();
272
319
  event.stopPropagation();
273
320
 
@@ -276,34 +323,30 @@
276
323
  };
277
324
 
278
325
  _proto._getConfig = function _getConfig(config) {
279
- config = _extends({}, this.constructor.Default, $__default["default"](this._element).data(), config);
280
- Util__default["default"].typeCheckConfig(NAME, config, this.constructor.DefaultType);
326
+ config = _objectSpread(_objectSpread(_objectSpread({}, this.constructor.Default), Manipulator.getDataAttributes(this._element)), config);
327
+ typeCheckConfig(NAME, config, this.constructor.DefaultType);
281
328
  return config;
282
329
  };
283
330
 
284
331
  _proto._getMenuElement = function _getMenuElement() {
285
- if (!this._menu) {
286
- var parent = Dropdown._getParentFromElement(this._element);
287
-
288
- if (parent) {
289
- this._menu = parent.querySelector(SELECTOR_MENU);
290
- }
291
- }
292
-
293
- return this._menu;
332
+ return SelectorEngine.next(this._element, SELECTOR_MENU)[0];
294
333
  };
295
334
 
296
335
  _proto._getPlacement = function _getPlacement() {
297
- var $parentDropdown = $__default["default"](this._element.parentNode);
336
+ var parentDropdown = this._element.parentNode;
298
337
  var placement = PLACEMENT_BOTTOM; // Handle dropup
299
338
 
300
- if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {
301
- placement = $__default["default"](this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP;
302
- } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {
339
+ if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {
340
+ placement = PLACEMENT_TOP;
341
+
342
+ if (this._menu.classList.contains(CLASS_NAME_MENURIGHT)) {
343
+ placement = PLACEMENT_TOPEND;
344
+ }
345
+ } else if (parentDropdown.classList.contains(CLASS_NAME_DROPRIGHT)) {
303
346
  placement = PLACEMENT_RIGHT;
304
- } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {
347
+ } else if (parentDropdown.classList.contains(CLASS_NAME_DROPLEFT)) {
305
348
  placement = PLACEMENT_LEFT;
306
- } else if ($__default["default"](this._menu).hasClass(CLASS_NAME_MENURIGHT)) {
349
+ } else if (this._menu.classList.contains(CLASS_NAME_MENURIGHT)) {
307
350
  placement = PLACEMENT_BOTTOMEND;
308
351
  }
309
352
 
@@ -311,7 +354,7 @@
311
354
  };
312
355
 
313
356
  _proto._detectNavbar = function _detectNavbar() {
314
- return $__default["default"](this._element).closest('.navbar').length > 0;
357
+ return Boolean(this._element.closest("." + CLASS_NAME_NAVBAR));
315
358
  };
316
359
 
317
360
  _proto._getOffset = function _getOffset() {
@@ -321,7 +364,7 @@
321
364
 
322
365
  if (typeof this._config.offset === 'function') {
323
366
  offset.fn = function (data) {
324
- data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element));
367
+ data.offsets = _objectSpread(_objectSpread({}, data.offsets), _this2._config.offset(data.offsets, _this2._element) || {});
325
368
  return data;
326
369
  };
327
370
  } else {
@@ -343,7 +386,7 @@
343
386
  boundariesElement: this._config.boundary
344
387
  }
345
388
  }
346
- }; // Disable Popper if we have a static display
389
+ }; // Disable Popper.js if we have a static display
347
390
 
348
391
  if (this._config.display === 'static') {
349
392
  popperConfig.modifiers.applyStyle = {
@@ -351,42 +394,44 @@
351
394
  };
352
395
  }
353
396
 
354
- return _extends({}, popperConfig, this._config.popperConfig);
397
+ return _objectSpread(_objectSpread({}, popperConfig), this._config.popperConfig);
355
398
  } // Static
356
399
  ;
357
400
 
358
- Dropdown._jQueryInterface = function _jQueryInterface(config) {
359
- return this.each(function () {
360
- var data = $__default["default"](this).data(DATA_KEY);
401
+ Dropdown.dropdownInterface = function dropdownInterface(element, config) {
402
+ var data = Data.getData(element, DATA_KEY);
361
403
 
362
- var _config = typeof config === 'object' ? config : null;
404
+ var _config = typeof config === 'object' ? config : null;
363
405
 
364
- if (!data) {
365
- data = new Dropdown(this, _config);
366
- $__default["default"](this).data(DATA_KEY, data);
406
+ if (!data) {
407
+ data = new Dropdown(element, _config);
408
+ }
409
+
410
+ if (typeof config === 'string') {
411
+ if (typeof data[config] === 'undefined') {
412
+ throw new TypeError("No method named \"" + config + "\"");
367
413
  }
368
414
 
369
- if (typeof config === 'string') {
370
- if (typeof data[config] === 'undefined') {
371
- throw new TypeError("No method named \"" + config + "\"");
372
- }
415
+ data[config]();
416
+ }
417
+ };
373
418
 
374
- data[config]();
375
- }
419
+ Dropdown.jQueryInterface = function jQueryInterface(config) {
420
+ return this.each(function () {
421
+ Dropdown.dropdownInterface(this, config);
376
422
  });
377
423
  };
378
424
 
379
- Dropdown._clearMenus = function _clearMenus(event) {
380
- if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {
425
+ Dropdown.clearMenus = function clearMenus(event) {
426
+ if (event && (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY)) {
381
427
  return;
382
428
  }
383
429
 
384
- var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));
430
+ var toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE);
385
431
 
386
432
  for (var i = 0, len = toggles.length; i < len; i++) {
387
- var parent = Dropdown._getParentFromElement(toggles[i]);
388
-
389
- var context = $__default["default"](toggles[i]).data(DATA_KEY);
433
+ var parent = Dropdown.getParentFromElement(toggles[i]);
434
+ var context = Data.getData(toggles[i], DATA_KEY);
390
435
  var relatedTarget = {
391
436
  relatedTarget: toggles[i]
392
437
  };
@@ -401,25 +446,28 @@
401
446
 
402
447
  var dropdownMenu = context._menu;
403
448
 
404
- if (!$__default["default"](parent).hasClass(CLASS_NAME_SHOW)) {
449
+ if (!toggles[i].classList.contains(CLASS_NAME_SHOW)) {
405
450
  continue;
406
451
  }
407
452
 
408
- 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)) {
453
+ if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.key === TAB_KEY) && dropdownMenu.contains(event.target)) {
409
454
  continue;
410
455
  }
411
456
 
412
- var hideEvent = $__default["default"].Event(EVENT_HIDE, relatedTarget);
413
- $__default["default"](parent).trigger(hideEvent);
457
+ var hideEvent = EventHandler.trigger(parent, EVENT_HIDE, relatedTarget);
414
458
 
415
- if (hideEvent.isDefaultPrevented()) {
459
+ if (hideEvent.defaultPrevented) {
416
460
  continue;
417
461
  } // If this is a touch-enabled device we remove the extra
418
462
  // empty mouseover listeners we added for iOS support
419
463
 
420
464
 
421
465
  if ('ontouchstart' in document.documentElement) {
422
- $__default["default"](document.body).children().off('mouseover', null, $__default["default"].noop);
466
+ var _ref2;
467
+
468
+ (_ref2 = []).concat.apply(_ref2, document.body.children).forEach(function (elem) {
469
+ return EventHandler.off(elem, 'mouseover', null, noop());
470
+ });
423
471
  }
424
472
 
425
473
  toggles[i].setAttribute('aria-expanded', 'false');
@@ -428,24 +476,17 @@
428
476
  context._popper.destroy();
429
477
  }
430
478
 
431
- $__default["default"](dropdownMenu).removeClass(CLASS_NAME_SHOW);
432
- $__default["default"](parent).removeClass(CLASS_NAME_SHOW).trigger($__default["default"].Event(EVENT_HIDDEN, relatedTarget));
479
+ dropdownMenu.classList.remove(CLASS_NAME_SHOW);
480
+ toggles[i].classList.remove(CLASS_NAME_SHOW);
481
+ EventHandler.trigger(parent, EVENT_HIDDEN, relatedTarget);
433
482
  }
434
483
  };
435
484
 
436
- Dropdown._getParentFromElement = function _getParentFromElement(element) {
437
- var parent;
438
- var selector = Util__default["default"].getSelectorFromElement(element);
439
-
440
- if (selector) {
441
- parent = document.querySelector(selector);
442
- }
443
-
444
- return parent || element.parentNode;
445
- } // eslint-disable-next-line complexity
446
- ;
485
+ Dropdown.getParentFromElement = function getParentFromElement(element) {
486
+ return getElementFromSelector(element) || element.parentNode;
487
+ };
447
488
 
448
- Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
489
+ Dropdown.dataApiKeydownHandler = function dataApiKeydownHandler(event) {
449
490
  // If not input/textarea:
450
491
  // - And not a key in REGEXP_KEYDOWN => not a dropdown command
451
492
  // If input/textarea:
@@ -453,61 +494,59 @@
453
494
  // - If key is other than escape
454
495
  // - If key is not up or down => not a dropdown command
455
496
  // - If trigger inside the menu => not a dropdown command
456
- 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)) {
497
+ if (/input|textarea/i.test(event.target.tagName) ? event.key === SPACE_KEY || event.key !== ESCAPE_KEY && (event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY || event.target.closest(SELECTOR_MENU)) : !REGEXP_KEYDOWN.test(event.key)) {
457
498
  return;
458
499
  }
459
500
 
460
- if (this.disabled || $__default["default"](this).hasClass(CLASS_NAME_DISABLED)) {
501
+ event.preventDefault();
502
+ event.stopPropagation();
503
+
504
+ if (this.disabled || this.classList.contains(CLASS_NAME_DISABLED)) {
461
505
  return;
462
506
  }
463
507
 
464
- var parent = Dropdown._getParentFromElement(this);
465
-
466
- var isActive = $__default["default"](parent).hasClass(CLASS_NAME_SHOW);
508
+ var parent = Dropdown.getParentFromElement(this);
509
+ var isActive = this.classList.contains(CLASS_NAME_SHOW);
467
510
 
468
- if (!isActive && event.which === ESCAPE_KEYCODE) {
511
+ if (event.key === ESCAPE_KEY) {
512
+ var button = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0];
513
+ button.focus();
514
+ Dropdown.clearMenus();
469
515
  return;
470
516
  }
471
517
 
472
- event.preventDefault();
473
- event.stopPropagation();
474
-
475
- if (!isActive || event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE) {
476
- if (event.which === ESCAPE_KEYCODE) {
477
- $__default["default"](parent.querySelector(SELECTOR_DATA_TOGGLE)).trigger('focus');
478
- }
479
-
480
- $__default["default"](this).trigger('click');
518
+ if (!isActive || event.key === SPACE_KEY) {
519
+ Dropdown.clearMenus();
481
520
  return;
482
521
  }
483
522
 
484
- var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) {
485
- return $__default["default"](item).is(':visible');
486
- });
523
+ var items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, parent).filter(isVisible);
487
524
 
488
- if (items.length === 0) {
525
+ if (!items.length) {
489
526
  return;
490
527
  }
491
528
 
492
529
  var index = items.indexOf(event.target);
493
530
 
494
- if (event.which === ARROW_UP_KEYCODE && index > 0) {
531
+ if (event.key === ARROW_UP_KEY && index > 0) {
495
532
  // Up
496
533
  index--;
497
534
  }
498
535
 
499
- if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {
536
+ if (event.key === ARROW_DOWN_KEY && index < items.length - 1) {
500
537
  // Down
501
538
  index++;
502
- }
539
+ } // index is -1 if the first keydown is an ArrowUp
503
540
 
504
- if (index < 0) {
505
- index = 0;
506
- }
507
541
 
542
+ index = index === -1 ? 0 : index;
508
543
  items[index].focus();
509
544
  };
510
545
 
546
+ Dropdown.getInstance = function getInstance(element) {
547
+ return Data.getData(element, DATA_KEY);
548
+ };
549
+
511
550
  _createClass(Dropdown, null, [{
512
551
  key: "VERSION",
513
552
  get: function get() {
@@ -528,30 +567,45 @@
528
567
  return Dropdown;
529
568
  }();
530
569
  /**
531
- * Data API implementation
570
+ * ------------------------------------------------------------------------
571
+ * Data Api implementation
572
+ * ------------------------------------------------------------------------
532
573
  */
533
574
 
534
575
 
535
- $__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) {
576
+ EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler);
577
+ EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
578
+ EventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus);
579
+ EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
580
+ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
536
581
  event.preventDefault();
537
582
  event.stopPropagation();
538
-
539
- Dropdown._jQueryInterface.call($__default["default"](this), 'toggle');
540
- }).on(EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, function (e) {
541
- e.stopPropagation();
583
+ Dropdown.dropdownInterface(this, 'toggle');
584
+ });
585
+ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, function (e) {
586
+ return e.stopPropagation();
542
587
  });
588
+ var $ = getjQuery();
543
589
  /**
590
+ * ------------------------------------------------------------------------
544
591
  * jQuery
592
+ * ------------------------------------------------------------------------
593
+ * add .dropdown to jQuery only if jQuery is present
545
594
  */
546
595
 
547
- $__default["default"].fn[NAME] = Dropdown._jQueryInterface;
548
- $__default["default"].fn[NAME].Constructor = Dropdown;
596
+ /* istanbul ignore if */
549
597
 
550
- $__default["default"].fn[NAME].noConflict = function () {
551
- $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
552
- return Dropdown._jQueryInterface;
553
- };
598
+ if ($) {
599
+ var JQUERY_NO_CONFLICT = $.fn[NAME];
600
+ $.fn[NAME] = Dropdown.jQueryInterface;
601
+ $.fn[NAME].Constructor = Dropdown;
602
+
603
+ $.fn[NAME].noConflict = function () {
604
+ $.fn[NAME] = JQUERY_NO_CONFLICT;
605
+ return Dropdown.jQueryInterface;
606
+ };
607
+ }
554
608
 
555
609
  return Dropdown;
556
610
 
557
- }));
611
+ })));