bootstrap 4.6.1 → 5.0.0.alpha1

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 (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
+ })));