bootstrap 4.5.0 → 5.0.0.alpha3

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