bootstrap 4.0.0.beta3 → 4.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. checksums.yaml +5 -5
  2. data/.travis.yml +15 -1
  3. data/CHANGELOG.md +2 -2
  4. data/README.md +2 -2
  5. data/Rakefile +4 -2
  6. data/assets/javascripts/bootstrap/alert.js +79 -68
  7. data/assets/javascripts/bootstrap/button.js +140 -78
  8. data/assets/javascripts/bootstrap/carousel.js +294 -158
  9. data/assets/javascripts/bootstrap/collapse.js +157 -133
  10. data/assets/javascripts/bootstrap/dropdown.js +257 -167
  11. data/assets/javascripts/bootstrap/modal.js +285 -204
  12. data/assets/javascripts/bootstrap/popover.js +101 -60
  13. data/assets/javascripts/bootstrap/scrollspy.js +127 -106
  14. data/assets/javascripts/bootstrap/tab.js +113 -101
  15. data/assets/javascripts/bootstrap/toast.js +267 -0
  16. data/assets/javascripts/bootstrap/tooltip.js +406 -188
  17. data/assets/javascripts/bootstrap/util.js +106 -55
  18. data/assets/javascripts/bootstrap-sprockets.js +1 -0
  19. data/assets/javascripts/bootstrap.js +1946 -1482
  20. data/assets/javascripts/bootstrap.min.js +4 -4
  21. data/assets/stylesheets/_bootstrap-grid.scss +7 -12
  22. data/assets/stylesheets/_bootstrap-reboot.scss +4 -4
  23. data/assets/stylesheets/_bootstrap.scss +6 -4
  24. data/assets/stylesheets/bootstrap/_alert.scss +3 -2
  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 +23 -28
  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 +15 -9
  32. data/assets/stylesheets/bootstrap/_code.scss +6 -14
  33. data/assets/stylesheets/bootstrap/_custom-forms.scss +287 -43
  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 +80 -25
  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 +66 -45
  46. data/assets/stylesheets/bootstrap/_pagination.scss +10 -8
  47. data/assets/stylesheets/bootstrap/_popover.scss +56 -69
  48. data/assets/stylesheets/bootstrap/_print.scss +41 -19
  49. data/assets/stylesheets/bootstrap/_progress.scss +20 -6
  50. data/assets/stylesheets/bootstrap/_reboot.scss +88 -109
  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 +6 -6
  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 +492 -215
  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 +11 -9
  64. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +35 -26
  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 +102 -40
  69. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +7 -7
  70. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +36 -25
  71. data/assets/stylesheets/bootstrap/mixins/_grid.scss +34 -17
  72. data/assets/stylesheets/bootstrap/mixins/_hover.scss +27 -51
  73. data/assets/stylesheets/bootstrap/mixins/_image.scss +4 -4
  74. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +10 -13
  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 +23 -2
  88. data/assets/stylesheets/bootstrap/utilities/_display.scss +6 -36
  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 +7 -4
  103. data/lib/bootstrap/engine.rb +3 -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/support/dummy_rails_integration.rb +3 -1
  112. data/test/test_helper.rb +21 -15
  113. metadata +29 -16
  114. 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-beta.3): 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-beta.3';
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;
@@ -100,20 +129,18 @@ var Dropdown = function ($) {
100
129
  this._inNavbar = this._detectNavbar();
101
130
 
102
131
  this._addEventListeners();
103
- } // getters
132
+ } // Getters
104
133
 
105
134
 
106
135
  var _proto = Dropdown.prototype;
107
136
 
108
- // public
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 Error('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());
160
- } // if this is a touch-enabled device we add extra
202
+ this._popper = new Popper__default["default"](referenceElement, this._menu, this._getPopperConfig());
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) {
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,25 +345,32 @@ 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') {
294
372
  if (typeof data[config] === 'undefined') {
295
- throw new Error("No method named \"" + config + "\"");
373
+ throw new TypeError("No method named \"" + config + "\"");
296
374
  }
297
375
 
298
376
  data[config]();
@@ -305,59 +383,69 @@ 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;
337
- } // if this is a touch-enabled device we remove the extra
419
+ } // If this is a touch-enabled device we remove the extra
338
420
  // empty mouseover listeners we added for iOS support
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
- };
447
+ } // eslint-disable-next-line complexity
448
+ ;
361
449
 
362
450
  Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
363
451
  // If not input/textarea:
@@ -367,46 +455,51 @@ var Dropdown = function ($) {
367
455
  // - If key is other than escape
368
456
  // - If key is not up or down => not a dropdown command
369
457
  // - If trigger inside the menu => not a dropdown command
370
- 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)) {
371
459
  return;
372
460
  }
373
461
 
374
- event.preventDefault();
375
- event.stopPropagation();
376
-
377
- if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {
462
+ if (this.disabled || $__default["default"](this).hasClass(CLASS_NAME_DISABLED)) {
378
463
  return;
379
464
  }
380
465
 
381
466
  var parent = Dropdown._getParentFromElement(this);
382
467
 
383
- var isActive = $(parent).hasClass(ClassName.SHOW);
468
+ var isActive = $__default["default"](parent).hasClass(CLASS_NAME_SHOW);
384
469
 
385
- 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) {
386
478
  if (event.which === ESCAPE_KEYCODE) {
387
- var toggle = $(parent).find(Selector.DATA_TOGGLE)[0];
388
- $(toggle).trigger('focus');
479
+ $__default["default"](parent.querySelector(SELECTOR_DATA_TOGGLE)).trigger('focus');
389
480
  }
390
481
 
391
- $(this).trigger('click');
482
+ $__default["default"](this).trigger('click');
392
483
  return;
393
484
  }
394
485
 
395
- 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
+ });
396
489
 
397
- if (!items.length) {
490
+ if (items.length === 0) {
398
491
  return;
399
492
  }
400
493
 
401
494
  var index = items.indexOf(event.target);
402
495
 
403
496
  if (event.which === ARROW_UP_KEYCODE && index > 0) {
404
- // up
497
+ // Up
405
498
  index--;
406
499
  }
407
500
 
408
501
  if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {
409
- // down
502
+ // Down
410
503
  index++;
411
504
  }
412
505
 
@@ -437,33 +530,30 @@ var Dropdown = function ($) {
437
530
  return Dropdown;
438
531
  }();
439
532
  /**
440
- * ------------------------------------------------------------------------
441
- * Data Api implementation
442
- * ------------------------------------------------------------------------
533
+ * Data API implementation
443
534
  */
444
535
 
445
536
 
446
- $(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) {
447
538
  event.preventDefault();
448
539
  event.stopPropagation();
449
540
 
450
- Dropdown._jQueryInterface.call($(this), 'toggle');
451
- }).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) {
452
543
  e.stopPropagation();
453
544
  });
454
545
  /**
455
- * ------------------------------------------------------------------------
456
546
  * jQuery
457
- * ------------------------------------------------------------------------
458
547
  */
459
548
 
460
- $.fn[NAME] = Dropdown._jQueryInterface;
461
- $.fn[NAME].Constructor = Dropdown;
549
+ $__default["default"].fn[NAME] = Dropdown._jQueryInterface;
550
+ $__default["default"].fn[NAME].Constructor = Dropdown;
462
551
 
463
- $.fn[NAME].noConflict = function () {
464
- $.fn[NAME] = JQUERY_NO_CONFLICT;
552
+ $__default["default"].fn[NAME].noConflict = function () {
553
+ $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
465
554
  return Dropdown._jQueryInterface;
466
555
  };
467
556
 
468
557
  return Dropdown;
469
- }($, Popper);
558
+
559
+ }));