bootstrap 4.0.0 → 4.6.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. checksums.yaml +5 -5
  2. data/.travis.yml +15 -1
  3. data/CHANGELOG.md +4 -4
  4. data/README.md +8 -2
  5. data/Rakefile +18 -4
  6. data/assets/javascripts/bootstrap/alert.js +77 -66
  7. data/assets/javascripts/bootstrap/button.js +138 -76
  8. data/assets/javascripts/bootstrap/carousel.js +289 -152
  9. data/assets/javascripts/bootstrap/collapse.js +150 -128
  10. data/assets/javascripts/bootstrap/dropdown.js +249 -160
  11. data/assets/javascripts/bootstrap/modal.js +280 -199
  12. data/assets/javascripts/bootstrap/popover.js +99 -58
  13. data/assets/javascripts/bootstrap/scrollspy.js +123 -102
  14. data/assets/javascripts/bootstrap/tab.js +110 -98
  15. data/assets/javascripts/bootstrap/toast.js +267 -0
  16. data/assets/javascripts/bootstrap/tooltip.js +401 -183
  17. data/assets/javascripts/bootstrap/util.js +106 -55
  18. data/assets/javascripts/bootstrap-sprockets.js +7 -6
  19. data/assets/javascripts/bootstrap.js +1903 -1441
  20. data/assets/javascripts/bootstrap.min.js +4 -4
  21. data/assets/stylesheets/_bootstrap-grid.scss +6 -8
  22. data/assets/stylesheets/_bootstrap-reboot.scss +4 -4
  23. data/assets/stylesheets/_bootstrap.scss +6 -4
  24. data/assets/stylesheets/bootstrap/_alert.scss +2 -1
  25. data/assets/stylesheets/bootstrap/_badge.scss +8 -1
  26. data/assets/stylesheets/bootstrap/_breadcrumb.scss +10 -6
  27. data/assets/stylesheets/bootstrap/_button-group.scss +17 -20
  28. data/assets/stylesheets/bootstrap/_buttons.scss +20 -21
  29. data/assets/stylesheets/bootstrap/_card.scss +77 -61
  30. data/assets/stylesheets/bootstrap/_carousel.scss +72 -63
  31. data/assets/stylesheets/bootstrap/_close.scss +14 -8
  32. data/assets/stylesheets/bootstrap/_code.scss +6 -14
  33. data/assets/stylesheets/bootstrap/_custom-forms.scss +274 -45
  34. data/assets/stylesheets/bootstrap/_dropdown.scss +70 -9
  35. data/assets/stylesheets/bootstrap/_forms.scss +56 -42
  36. data/assets/stylesheets/bootstrap/_functions.scss +117 -13
  37. data/assets/stylesheets/bootstrap/_grid.scss +32 -11
  38. data/assets/stylesheets/bootstrap/_images.scss +4 -4
  39. data/assets/stylesheets/bootstrap/_input-group.scss +68 -16
  40. data/assets/stylesheets/bootstrap/_jumbotron.scss +2 -1
  41. data/assets/stylesheets/bootstrap/_list-group.scss +63 -24
  42. data/assets/stylesheets/bootstrap/_mixins.scss +9 -4
  43. data/assets/stylesheets/bootstrap/_modal.scss +96 -24
  44. data/assets/stylesheets/bootstrap/_nav.scss +14 -7
  45. data/assets/stylesheets/bootstrap/_navbar.scss +64 -43
  46. data/assets/stylesheets/bootstrap/_pagination.scss +7 -10
  47. data/assets/stylesheets/bootstrap/_popover.scss +55 -68
  48. data/assets/stylesheets/bootstrap/_print.scss +24 -16
  49. data/assets/stylesheets/bootstrap/_progress.scss +20 -6
  50. data/assets/stylesheets/bootstrap/_reboot.scss +88 -86
  51. data/assets/stylesheets/bootstrap/_spinners.scss +65 -0
  52. data/assets/stylesheets/bootstrap/_tables.scss +19 -14
  53. data/assets/stylesheets/bootstrap/_toasts.scss +46 -0
  54. data/assets/stylesheets/bootstrap/_tooltip.scss +5 -5
  55. data/assets/stylesheets/bootstrap/_transitions.scss +10 -20
  56. data/assets/stylesheets/bootstrap/_type.scss +19 -19
  57. data/assets/stylesheets/bootstrap/_utilities.scss +4 -0
  58. data/assets/stylesheets/bootstrap/_variables.scss +462 -207
  59. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +5 -3
  60. data/assets/stylesheets/bootstrap/mixins/_badge.scss +8 -3
  61. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +51 -10
  62. data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +16 -1
  63. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +3 -3
  64. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +20 -19
  65. data/assets/stylesheets/bootstrap/mixins/_caret.scss +13 -16
  66. data/assets/stylesheets/bootstrap/mixins/_deprecate.scss +10 -0
  67. data/assets/stylesheets/bootstrap/mixins/_float.scss +6 -3
  68. data/assets/stylesheets/bootstrap/mixins/_forms.scss +96 -38
  69. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +7 -7
  70. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +31 -18
  71. data/assets/stylesheets/bootstrap/mixins/_grid.scss +34 -17
  72. data/assets/stylesheets/bootstrap/mixins/_hover.scss +7 -9
  73. data/assets/stylesheets/bootstrap/mixins/_image.scss +4 -4
  74. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +2 -2
  75. data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
  76. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +3 -2
  77. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +1 -1
  78. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +3 -3
  79. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +5 -6
  80. data/assets/stylesheets/bootstrap/mixins/_size.scss +1 -0
  81. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +11 -2
  82. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +7 -4
  83. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +3 -1
  84. data/assets/stylesheets/bootstrap/mixins/_transition.scss +20 -3
  85. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +1 -0
  86. data/assets/stylesheets/bootstrap/utilities/_background.scss +2 -2
  87. data/assets/stylesheets/bootstrap/utilities/_borders.scss +17 -1
  88. data/assets/stylesheets/bootstrap/utilities/_display.scss +6 -18
  89. data/assets/stylesheets/bootstrap/utilities/_embed.scss +7 -20
  90. data/assets/stylesheets/bootstrap/utilities/_flex.scss +5 -0
  91. data/assets/stylesheets/bootstrap/utilities/_float.scss +5 -3
  92. data/assets/stylesheets/bootstrap/utilities/_interactions.scss +5 -0
  93. data/assets/stylesheets/bootstrap/utilities/_overflow.scss +5 -0
  94. data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -4
  95. data/assets/stylesheets/bootstrap/utilities/_shadows.scss +6 -0
  96. data/assets/stylesheets/bootstrap/utilities/_sizing.scss +8 -0
  97. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +23 -1
  98. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +19 -0
  99. data/assets/stylesheets/bootstrap/utilities/_text.scss +28 -8
  100. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +4 -2
  101. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +228 -0
  102. data/bootstrap.gemspec +5 -4
  103. data/lib/bootstrap/engine.rb +19 -0
  104. data/lib/bootstrap/version.rb +4 -2
  105. data/lib/bootstrap.rb +10 -7
  106. data/tasks/updater/js.rb +18 -6
  107. data/tasks/updater/network.rb +8 -2
  108. data/test/dummy_rails/app/assets/config/manifest.js +3 -0
  109. data/test/dummy_rails/app/assets/stylesheets/.browserslistrc +1 -0
  110. data/test/gemfiles/rails_6_0.gemfile +7 -0
  111. data/test/gemfiles/rails_7_0_dartsass.gemfile +8 -0
  112. data/test/gemfiles/rails_7_0_sassc.gemfile +8 -0
  113. data/test/support/dummy_rails_integration.rb +3 -1
  114. data/test/test_helper.rb +21 -15
  115. metadata +28 -25
  116. data/assets/stylesheets/bootstrap/mixins/_navbar-align.scss +0 -10
@@ -1,27 +1,66 @@
1
- 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); }
2
-
3
- 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); } }
1
+ /*!
2
+ * Bootstrap dropdown.js v4.6.2 (https://getbootstrap.com/)
3
+ * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
+ */
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);
25
+ }
26
+ }
27
+
28
+ function _createClass(Constructor, protoProps, staticProps) {
29
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
30
+ if (staticProps) _defineProperties(Constructor, staticProps);
31
+ Object.defineProperty(Constructor, "prototype", {
32
+ writable: false
33
+ });
34
+ return Constructor;
35
+ }
36
+
37
+ function _extends() {
38
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
39
+ for (var i = 1; i < arguments.length; i++) {
40
+ var source = arguments[i];
41
+
42
+ for (var key in source) {
43
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
44
+ target[key] = source[key];
45
+ }
46
+ }
47
+ }
4
48
 
5
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
49
+ return target;
50
+ };
51
+ return _extends.apply(this, arguments);
52
+ }
6
53
 
7
- /**
8
- * --------------------------------------------------------------------------
9
- * Bootstrap (v4.0.0): dropdown.js
10
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
11
- * --------------------------------------------------------------------------
12
- */
13
- var Dropdown = function ($) {
14
54
  /**
15
- * ------------------------------------------------------------------------
16
55
  * Constants
17
- * ------------------------------------------------------------------------
18
56
  */
57
+
19
58
  var NAME = 'dropdown';
20
- var VERSION = '4.0.0';
59
+ var VERSION = '4.6.2';
21
60
  var DATA_KEY = 'bs.dropdown';
22
61
  var EVENT_KEY = "." + DATA_KEY;
23
62
  var DATA_API_KEY = '.data-api';
24
- var JQUERY_NO_CONFLICT = $.fn[NAME];
63
+ var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
25
64
  var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
26
65
 
27
66
  var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key
@@ -35,63 +74,53 @@ var Dropdown = function ($) {
35
74
  var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)
36
75
 
37
76
  var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE);
38
- var Event = {
39
- HIDE: "hide" + EVENT_KEY,
40
- HIDDEN: "hidden" + EVENT_KEY,
41
- SHOW: "show" + EVENT_KEY,
42
- SHOWN: "shown" + EVENT_KEY,
43
- CLICK: "click" + EVENT_KEY,
44
- CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY,
45
- KEYDOWN_DATA_API: "keydown" + EVENT_KEY + DATA_API_KEY,
46
- KEYUP_DATA_API: "keyup" + EVENT_KEY + DATA_API_KEY
47
- };
48
- var ClassName = {
49
- DISABLED: 'disabled',
50
- SHOW: 'show',
51
- DROPUP: 'dropup',
52
- DROPRIGHT: 'dropright',
53
- DROPLEFT: 'dropleft',
54
- MENURIGHT: 'dropdown-menu-right',
55
- MENULEFT: 'dropdown-menu-left',
56
- POSITION_STATIC: 'position-static'
57
- };
58
- var Selector = {
59
- DATA_TOGGLE: '[data-toggle="dropdown"]',
60
- FORM_CHILD: '.dropdown form',
61
- MENU: '.dropdown-menu',
62
- NAVBAR_NAV: '.navbar-nav',
63
- VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled)'
64
- };
65
- var AttachmentMap = {
66
- TOP: 'top-start',
67
- TOPEND: 'top-end',
68
- BOTTOM: 'bottom-start',
69
- BOTTOMEND: 'bottom-end',
70
- RIGHT: 'right-start',
71
- RIGHTEND: 'right-end',
72
- LEFT: 'left-start',
73
- LEFTEND: 'left-end'
74
- };
77
+ var CLASS_NAME_DISABLED = 'disabled';
78
+ var CLASS_NAME_SHOW = 'show';
79
+ var CLASS_NAME_DROPUP = 'dropup';
80
+ var CLASS_NAME_DROPRIGHT = 'dropright';
81
+ var CLASS_NAME_DROPLEFT = 'dropleft';
82
+ var CLASS_NAME_MENURIGHT = 'dropdown-menu-right';
83
+ var CLASS_NAME_POSITION_STATIC = 'position-static';
84
+ var EVENT_HIDE = "hide" + EVENT_KEY;
85
+ var EVENT_HIDDEN = "hidden" + EVENT_KEY;
86
+ var EVENT_SHOW = "show" + EVENT_KEY;
87
+ var EVENT_SHOWN = "shown" + EVENT_KEY;
88
+ var EVENT_CLICK = "click" + EVENT_KEY;
89
+ var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
90
+ var EVENT_KEYDOWN_DATA_API = "keydown" + EVENT_KEY + DATA_API_KEY;
91
+ var EVENT_KEYUP_DATA_API = "keyup" + EVENT_KEY + DATA_API_KEY;
92
+ var SELECTOR_DATA_TOGGLE = '[data-toggle="dropdown"]';
93
+ var SELECTOR_FORM_CHILD = '.dropdown form';
94
+ var SELECTOR_MENU = '.dropdown-menu';
95
+ var SELECTOR_NAVBAR_NAV = '.navbar-nav';
96
+ var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';
97
+ var PLACEMENT_TOP = 'top-start';
98
+ var PLACEMENT_TOPEND = 'top-end';
99
+ var PLACEMENT_BOTTOM = 'bottom-start';
100
+ var PLACEMENT_BOTTOMEND = 'bottom-end';
101
+ var PLACEMENT_RIGHT = 'right-start';
102
+ var PLACEMENT_LEFT = 'left-start';
75
103
  var Default = {
76
104
  offset: 0,
77
105
  flip: true,
78
- boundary: 'scrollParent'
106
+ boundary: 'scrollParent',
107
+ reference: 'toggle',
108
+ display: 'dynamic',
109
+ popperConfig: null
79
110
  };
80
111
  var DefaultType = {
81
112
  offset: '(number|string|function)',
82
113
  flip: 'boolean',
83
- boundary: '(string|element)'
84
- /**
85
- * ------------------------------------------------------------------------
86
- * Class Definition
87
- * ------------------------------------------------------------------------
88
- */
89
-
114
+ boundary: '(string|element)',
115
+ reference: '(string|element)',
116
+ display: 'string',
117
+ popperConfig: '(null|object)'
90
118
  };
119
+ /**
120
+ * Class definition
121
+ */
91
122
 
92
- var Dropdown =
93
- /*#__PURE__*/
94
- function () {
123
+ var Dropdown = /*#__PURE__*/function () {
95
124
  function Dropdown(element, config) {
96
125
  this._element = element;
97
126
  this._popper = null;
@@ -107,13 +136,11 @@ var Dropdown = function ($) {
107
136
 
108
137
  // Public
109
138
  _proto.toggle = function toggle() {
110
- if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED)) {
139
+ if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED)) {
111
140
  return;
112
141
  }
113
142
 
114
- var parent = Dropdown._getParentFromElement(this._element);
115
-
116
- var isActive = $(this._menu).hasClass(ClassName.SHOW);
143
+ var isActive = $__default["default"](this._menu).hasClass(CLASS_NAME_SHOW);
117
144
 
118
145
  Dropdown._clearMenus();
119
146
 
@@ -121,31 +148,47 @@ var Dropdown = function ($) {
121
148
  return;
122
149
  }
123
150
 
151
+ this.show(true);
152
+ };
153
+
154
+ _proto.show = function show(usePopper) {
155
+ if (usePopper === void 0) {
156
+ usePopper = false;
157
+ }
158
+
159
+ if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED) || $__default["default"](this._menu).hasClass(CLASS_NAME_SHOW)) {
160
+ return;
161
+ }
162
+
124
163
  var relatedTarget = {
125
164
  relatedTarget: this._element
126
165
  };
127
- var showEvent = $.Event(Event.SHOW, relatedTarget);
128
- $(parent).trigger(showEvent);
166
+ var showEvent = $__default["default"].Event(EVENT_SHOW, relatedTarget);
167
+
168
+ var parent = Dropdown._getParentFromElement(this._element);
169
+
170
+ $__default["default"](parent).trigger(showEvent);
129
171
 
130
172
  if (showEvent.isDefaultPrevented()) {
131
173
  return;
132
- } // Disable totally Popper.js for Dropdown in Navbar
174
+ } // Totally disable Popper for Dropdowns in Navbar
133
175
 
134
176
 
135
- if (!this._inNavbar) {
136
- /**
137
- * Check for Popper dependency
138
- * Popper - https://popper.js.org
139
- */
140
- if (typeof Popper === 'undefined') {
141
- throw new TypeError('Bootstrap dropdown require Popper.js (https://popper.js.org)');
177
+ if (!this._inNavbar && usePopper) {
178
+ // Check for Popper dependency
179
+ if (typeof Popper__default["default"] === 'undefined') {
180
+ throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)');
142
181
  }
143
182
 
144
- var element = this._element; // For dropup with alignment we use the parent as popper container
183
+ var referenceElement = this._element;
184
+
185
+ if (this._config.reference === 'parent') {
186
+ referenceElement = parent;
187
+ } else if (Util__default["default"].isElement(this._config.reference)) {
188
+ referenceElement = this._config.reference; // Check if it's jQuery element
145
189
 
146
- if ($(parent).hasClass(ClassName.DROPUP)) {
147
- if ($(this._menu).hasClass(ClassName.MENULEFT) || $(this._menu).hasClass(ClassName.MENURIGHT)) {
148
- element = parent;
190
+ if (typeof this._config.reference.jquery !== 'undefined') {
191
+ referenceElement = this._config.reference[0];
149
192
  }
150
193
  } // If boundary is not `scrollParent`, then set position to `static`
151
194
  // to allow the menu to "escape" the scroll parent's boundaries
@@ -153,31 +196,57 @@ var Dropdown = function ($) {
153
196
 
154
197
 
155
198
  if (this._config.boundary !== 'scrollParent') {
156
- $(parent).addClass(ClassName.POSITION_STATIC);
199
+ $__default["default"](parent).addClass(CLASS_NAME_POSITION_STATIC);
157
200
  }
158
201
 
159
- this._popper = new Popper(element, this._menu, this._getPopperConfig());
202
+ this._popper = new Popper__default["default"](referenceElement, this._menu, this._getPopperConfig());
160
203
  } // If this is a touch-enabled device we add extra
161
204
  // empty mouseover listeners to the body's immediate children;
162
205
  // only needed because of broken event delegation on iOS
163
206
  // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
164
207
 
165
208
 
166
- if ('ontouchstart' in document.documentElement && $(parent).closest(Selector.NAVBAR_NAV).length === 0) {
167
- $('body').children().on('mouseover', null, $.noop);
209
+ if ('ontouchstart' in document.documentElement && $__default["default"](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {
210
+ $__default["default"](document.body).children().on('mouseover', null, $__default["default"].noop);
168
211
  }
169
212
 
170
213
  this._element.focus();
171
214
 
172
215
  this._element.setAttribute('aria-expanded', true);
173
216
 
174
- $(this._menu).toggleClass(ClassName.SHOW);
175
- $(parent).toggleClass(ClassName.SHOW).trigger($.Event(Event.SHOWN, relatedTarget));
217
+ $__default["default"](this._menu).toggleClass(CLASS_NAME_SHOW);
218
+ $__default["default"](parent).toggleClass(CLASS_NAME_SHOW).trigger($__default["default"].Event(EVENT_SHOWN, relatedTarget));
219
+ };
220
+
221
+ _proto.hide = function hide() {
222
+ if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED) || !$__default["default"](this._menu).hasClass(CLASS_NAME_SHOW)) {
223
+ return;
224
+ }
225
+
226
+ var relatedTarget = {
227
+ relatedTarget: this._element
228
+ };
229
+ var hideEvent = $__default["default"].Event(EVENT_HIDE, relatedTarget);
230
+
231
+ var parent = Dropdown._getParentFromElement(this._element);
232
+
233
+ $__default["default"](parent).trigger(hideEvent);
234
+
235
+ if (hideEvent.isDefaultPrevented()) {
236
+ return;
237
+ }
238
+
239
+ if (this._popper) {
240
+ this._popper.destroy();
241
+ }
242
+
243
+ $__default["default"](this._menu).toggleClass(CLASS_NAME_SHOW);
244
+ $__default["default"](parent).toggleClass(CLASS_NAME_SHOW).trigger($__default["default"].Event(EVENT_HIDDEN, relatedTarget));
176
245
  };
177
246
 
178
247
  _proto.dispose = function dispose() {
179
- $.removeData(this._element, DATA_KEY);
180
- $(this._element).off(EVENT_KEY);
248
+ $__default["default"].removeData(this._element, DATA_KEY);
249
+ $__default["default"](this._element).off(EVENT_KEY);
181
250
  this._element = null;
182
251
  this._menu = null;
183
252
 
@@ -194,13 +263,13 @@ var Dropdown = function ($) {
194
263
  if (this._popper !== null) {
195
264
  this._popper.scheduleUpdate();
196
265
  }
197
- }; // Private
198
-
266
+ } // Private
267
+ ;
199
268
 
200
269
  _proto._addEventListeners = function _addEventListeners() {
201
270
  var _this = this;
202
271
 
203
- $(this._element).on(Event.CLICK, function (event) {
272
+ $__default["default"](this._element).on(EVENT_CLICK, function (event) {
204
273
  event.preventDefault();
205
274
  event.stopPropagation();
206
275
 
@@ -209,8 +278,8 @@ var Dropdown = function ($) {
209
278
  };
210
279
 
211
280
  _proto._getConfig = function _getConfig(config) {
212
- config = _extends({}, this.constructor.Default, $(this._element).data(), config);
213
- Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);
281
+ config = _extends({}, this.constructor.Default, $__default["default"](this._element).data(), config);
282
+ Util__default["default"].typeCheckConfig(NAME, config, this.constructor.DefaultType);
214
283
  return config;
215
284
  };
216
285
 
@@ -218,55 +287,57 @@ var Dropdown = function ($) {
218
287
  if (!this._menu) {
219
288
  var parent = Dropdown._getParentFromElement(this._element);
220
289
 
221
- this._menu = $(parent).find(Selector.MENU)[0];
290
+ if (parent) {
291
+ this._menu = parent.querySelector(SELECTOR_MENU);
292
+ }
222
293
  }
223
294
 
224
295
  return this._menu;
225
296
  };
226
297
 
227
298
  _proto._getPlacement = function _getPlacement() {
228
- var $parentDropdown = $(this._element).parent();
229
- var placement = AttachmentMap.BOTTOM; // Handle dropup
230
-
231
- if ($parentDropdown.hasClass(ClassName.DROPUP)) {
232
- placement = AttachmentMap.TOP;
233
-
234
- if ($(this._menu).hasClass(ClassName.MENURIGHT)) {
235
- placement = AttachmentMap.TOPEND;
236
- }
237
- } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) {
238
- placement = AttachmentMap.RIGHT;
239
- } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) {
240
- placement = AttachmentMap.LEFT;
241
- } else if ($(this._menu).hasClass(ClassName.MENURIGHT)) {
242
- placement = AttachmentMap.BOTTOMEND;
299
+ var $parentDropdown = $__default["default"](this._element.parentNode);
300
+ var placement = PLACEMENT_BOTTOM; // Handle dropup
301
+
302
+ if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {
303
+ placement = $__default["default"](this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP;
304
+ } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {
305
+ placement = PLACEMENT_RIGHT;
306
+ } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {
307
+ placement = PLACEMENT_LEFT;
308
+ } else if ($__default["default"](this._menu).hasClass(CLASS_NAME_MENURIGHT)) {
309
+ placement = PLACEMENT_BOTTOMEND;
243
310
  }
244
311
 
245
312
  return placement;
246
313
  };
247
314
 
248
315
  _proto._detectNavbar = function _detectNavbar() {
249
- return $(this._element).closest('.navbar').length > 0;
316
+ return $__default["default"](this._element).closest('.navbar').length > 0;
250
317
  };
251
318
 
252
- _proto._getPopperConfig = function _getPopperConfig() {
319
+ _proto._getOffset = function _getOffset() {
253
320
  var _this2 = this;
254
321
 
255
- var offsetConf = {};
322
+ var offset = {};
256
323
 
257
324
  if (typeof this._config.offset === 'function') {
258
- offsetConf.fn = function (data) {
259
- data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets) || {});
325
+ offset.fn = function (data) {
326
+ data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element));
260
327
  return data;
261
328
  };
262
329
  } else {
263
- offsetConf.offset = this._config.offset;
330
+ offset.offset = this._config.offset;
264
331
  }
265
332
 
333
+ return offset;
334
+ };
335
+
336
+ _proto._getPopperConfig = function _getPopperConfig() {
266
337
  var popperConfig = {
267
338
  placement: this._getPlacement(),
268
339
  modifiers: {
269
- offset: offsetConf,
340
+ offset: this._getOffset(),
270
341
  flip: {
271
342
  enabled: this._config.flip
272
343
  },
@@ -274,20 +345,27 @@ var Dropdown = function ($) {
274
345
  boundariesElement: this._config.boundary
275
346
  }
276
347
  }
277
- };
278
- return popperConfig;
279
- }; // Static
348
+ }; // Disable Popper if we have a static display
280
349
 
350
+ if (this._config.display === 'static') {
351
+ popperConfig.modifiers.applyStyle = {
352
+ enabled: false
353
+ };
354
+ }
355
+
356
+ return _extends({}, popperConfig, this._config.popperConfig);
357
+ } // Static
358
+ ;
281
359
 
282
360
  Dropdown._jQueryInterface = function _jQueryInterface(config) {
283
361
  return this.each(function () {
284
- var data = $(this).data(DATA_KEY);
362
+ var data = $__default["default"](this).data(DATA_KEY);
285
363
 
286
364
  var _config = typeof config === 'object' ? config : null;
287
365
 
288
366
  if (!data) {
289
367
  data = new Dropdown(this, _config);
290
- $(this).data(DATA_KEY, data);
368
+ $__default["default"](this).data(DATA_KEY, data);
291
369
  }
292
370
 
293
371
  if (typeof config === 'string') {
@@ -305,32 +383,36 @@ var Dropdown = function ($) {
305
383
  return;
306
384
  }
307
385
 
308
- var toggles = $.makeArray($(Selector.DATA_TOGGLE));
386
+ var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));
309
387
 
310
- for (var i = 0; i < toggles.length; i++) {
388
+ for (var i = 0, len = toggles.length; i < len; i++) {
311
389
  var parent = Dropdown._getParentFromElement(toggles[i]);
312
390
 
313
- var context = $(toggles[i]).data(DATA_KEY);
391
+ var context = $__default["default"](toggles[i]).data(DATA_KEY);
314
392
  var relatedTarget = {
315
393
  relatedTarget: toggles[i]
316
394
  };
317
395
 
396
+ if (event && event.type === 'click') {
397
+ relatedTarget.clickEvent = event;
398
+ }
399
+
318
400
  if (!context) {
319
401
  continue;
320
402
  }
321
403
 
322
404
  var dropdownMenu = context._menu;
323
405
 
324
- if (!$(parent).hasClass(ClassName.SHOW)) {
406
+ if (!$__default["default"](parent).hasClass(CLASS_NAME_SHOW)) {
325
407
  continue;
326
408
  }
327
409
 
328
- if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $.contains(parent, event.target)) {
410
+ if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $__default["default"].contains(parent, event.target)) {
329
411
  continue;
330
412
  }
331
413
 
332
- var hideEvent = $.Event(Event.HIDE, relatedTarget);
333
- $(parent).trigger(hideEvent);
414
+ var hideEvent = $__default["default"].Event(EVENT_HIDE, relatedTarget);
415
+ $__default["default"](parent).trigger(hideEvent);
334
416
 
335
417
  if (hideEvent.isDefaultPrevented()) {
336
418
  continue;
@@ -339,26 +421,31 @@ var Dropdown = function ($) {
339
421
 
340
422
 
341
423
  if ('ontouchstart' in document.documentElement) {
342
- $('body').children().off('mouseover', null, $.noop);
424
+ $__default["default"](document.body).children().off('mouseover', null, $__default["default"].noop);
343
425
  }
344
426
 
345
427
  toggles[i].setAttribute('aria-expanded', 'false');
346
- $(dropdownMenu).removeClass(ClassName.SHOW);
347
- $(parent).removeClass(ClassName.SHOW).trigger($.Event(Event.HIDDEN, relatedTarget));
428
+
429
+ if (context._popper) {
430
+ context._popper.destroy();
431
+ }
432
+
433
+ $__default["default"](dropdownMenu).removeClass(CLASS_NAME_SHOW);
434
+ $__default["default"](parent).removeClass(CLASS_NAME_SHOW).trigger($__default["default"].Event(EVENT_HIDDEN, relatedTarget));
348
435
  }
349
436
  };
350
437
 
351
438
  Dropdown._getParentFromElement = function _getParentFromElement(element) {
352
439
  var parent;
353
- var selector = Util.getSelectorFromElement(element);
440
+ var selector = Util__default["default"].getSelectorFromElement(element);
354
441
 
355
442
  if (selector) {
356
- parent = $(selector)[0];
443
+ parent = document.querySelector(selector);
357
444
  }
358
445
 
359
446
  return parent || element.parentNode;
360
- }; // eslint-disable-next-line complexity
361
-
447
+ } // eslint-disable-next-line complexity
448
+ ;
362
449
 
363
450
  Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
364
451
  // If not input/textarea:
@@ -368,32 +455,37 @@ var Dropdown = function ($) {
368
455
  // - If key is other than escape
369
456
  // - If key is not up or down => not a dropdown command
370
457
  // - If trigger inside the menu => not a dropdown command
371
- if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {
458
+ if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $__default["default"](event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {
372
459
  return;
373
460
  }
374
461
 
375
- event.preventDefault();
376
- event.stopPropagation();
377
-
378
- if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {
462
+ if (this.disabled || $__default["default"](this).hasClass(CLASS_NAME_DISABLED)) {
379
463
  return;
380
464
  }
381
465
 
382
466
  var parent = Dropdown._getParentFromElement(this);
383
467
 
384
- var isActive = $(parent).hasClass(ClassName.SHOW);
468
+ var isActive = $__default["default"](parent).hasClass(CLASS_NAME_SHOW);
385
469
 
386
- if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
470
+ if (!isActive && event.which === ESCAPE_KEYCODE) {
471
+ return;
472
+ }
473
+
474
+ event.preventDefault();
475
+ event.stopPropagation();
476
+
477
+ if (!isActive || event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE) {
387
478
  if (event.which === ESCAPE_KEYCODE) {
388
- var toggle = $(parent).find(Selector.DATA_TOGGLE)[0];
389
- $(toggle).trigger('focus');
479
+ $__default["default"](parent.querySelector(SELECTOR_DATA_TOGGLE)).trigger('focus');
390
480
  }
391
481
 
392
- $(this).trigger('click');
482
+ $__default["default"](this).trigger('click');
393
483
  return;
394
484
  }
395
485
 
396
- var items = $(parent).find(Selector.VISIBLE_ITEMS).get();
486
+ var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) {
487
+ return $__default["default"](item).is(':visible');
488
+ });
397
489
 
398
490
  if (items.length === 0) {
399
491
  return;
@@ -438,33 +530,30 @@ var Dropdown = function ($) {
438
530
  return Dropdown;
439
531
  }();
440
532
  /**
441
- * ------------------------------------------------------------------------
442
- * Data Api implementation
443
- * ------------------------------------------------------------------------
533
+ * Data API implementation
444
534
  */
445
535
 
446
536
 
447
- $(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API + " " + Event.KEYUP_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
537
+ $__default["default"](document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API + " " + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
448
538
  event.preventDefault();
449
539
  event.stopPropagation();
450
540
 
451
- Dropdown._jQueryInterface.call($(this), 'toggle');
452
- }).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) {
541
+ Dropdown._jQueryInterface.call($__default["default"](this), 'toggle');
542
+ }).on(EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, function (e) {
453
543
  e.stopPropagation();
454
544
  });
455
545
  /**
456
- * ------------------------------------------------------------------------
457
546
  * jQuery
458
- * ------------------------------------------------------------------------
459
547
  */
460
548
 
461
- $.fn[NAME] = Dropdown._jQueryInterface;
462
- $.fn[NAME].Constructor = Dropdown;
549
+ $__default["default"].fn[NAME] = Dropdown._jQueryInterface;
550
+ $__default["default"].fn[NAME].Constructor = Dropdown;
463
551
 
464
- $.fn[NAME].noConflict = function () {
465
- $.fn[NAME] = JQUERY_NO_CONFLICT;
552
+ $__default["default"].fn[NAME].noConflict = function () {
553
+ $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
466
554
  return Dropdown._jQueryInterface;
467
555
  };
468
556
 
469
557
  return Dropdown;
470
- }($, Popper);
558
+
559
+ }));