bootstrap 4.0.0 → 4.3.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 (104) hide show
  1. checksums.yaml +5 -5
  2. data/.travis.yml +1 -1
  3. data/CHANGELOG.md +8 -0
  4. data/README.md +2 -2
  5. data/Rakefile +4 -2
  6. data/assets/javascripts/bootstrap/alert.js +45 -22
  7. data/assets/javascripts/bootstrap/button.js +39 -19
  8. data/assets/javascripts/bootstrap/carousel.js +213 -51
  9. data/assets/javascripts/bootstrap/collapse.js +105 -52
  10. data/assets/javascripts/bootstrap/dropdown.js +169 -45
  11. data/assets/javascripts/bootstrap/modal.js +139 -71
  12. data/assets/javascripts/bootstrap/popover.js +77 -20
  13. data/assets/javascripts/bootstrap/scrollspy.js +87 -29
  14. data/assets/javascripts/bootstrap/tab.js +50 -32
  15. data/assets/javascripts/bootstrap/toast.js +282 -0
  16. data/assets/javascripts/bootstrap/tooltip.js +295 -59
  17. data/assets/javascripts/bootstrap/util.js +78 -45
  18. data/assets/javascripts/bootstrap-sprockets.js +7 -6
  19. data/assets/javascripts/bootstrap.js +1537 -996
  20. data/assets/javascripts/bootstrap.min.js +3 -3
  21. data/assets/stylesheets/_bootstrap-grid.scss +4 -7
  22. data/assets/stylesheets/_bootstrap-reboot.scss +3 -3
  23. data/assets/stylesheets/_bootstrap.scss +5 -3
  24. data/assets/stylesheets/bootstrap/_alert.scss +1 -1
  25. data/assets/stylesheets/bootstrap/_badge.scss +8 -1
  26. data/assets/stylesheets/bootstrap/_breadcrumb.scss +9 -6
  27. data/assets/stylesheets/bootstrap/_button-group.scss +16 -19
  28. data/assets/stylesheets/bootstrap/_buttons.scss +10 -16
  29. data/assets/stylesheets/bootstrap/_card.scss +53 -34
  30. data/assets/stylesheets/bootstrap/_carousel.scss +66 -60
  31. data/assets/stylesheets/bootstrap/_close.scss +15 -8
  32. data/assets/stylesheets/bootstrap/_code.scss +5 -13
  33. data/assets/stylesheets/bootstrap/_custom-forms.scss +250 -40
  34. data/assets/stylesheets/bootstrap/_dropdown.scss +65 -5
  35. data/assets/stylesheets/bootstrap/_forms.scss +32 -35
  36. data/assets/stylesheets/bootstrap/_functions.scss +9 -9
  37. data/assets/stylesheets/bootstrap/_images.scss +2 -2
  38. data/assets/stylesheets/bootstrap/_input-group.scss +45 -11
  39. data/assets/stylesheets/bootstrap/_jumbotron.scss +1 -0
  40. data/assets/stylesheets/bootstrap/_list-group.scss +39 -5
  41. data/assets/stylesheets/bootstrap/_mixins.scss +6 -1
  42. data/assets/stylesheets/bootstrap/_modal.scss +80 -19
  43. data/assets/stylesheets/bootstrap/_nav.scss +2 -0
  44. data/assets/stylesheets/bootstrap/_navbar.scss +9 -26
  45. data/assets/stylesheets/bootstrap/_pagination.scss +2 -6
  46. data/assets/stylesheets/bootstrap/_popover.scss +47 -59
  47. data/assets/stylesheets/bootstrap/_print.scss +23 -6
  48. data/assets/stylesheets/bootstrap/_progress.scss +16 -6
  49. data/assets/stylesheets/bootstrap/_reboot.scss +51 -50
  50. data/assets/stylesheets/bootstrap/_spinners.scss +55 -0
  51. data/assets/stylesheets/bootstrap/_tables.scss +16 -11
  52. data/assets/stylesheets/bootstrap/_toasts.scss +44 -0
  53. data/assets/stylesheets/bootstrap/_tooltip.scss +1 -1
  54. data/assets/stylesheets/bootstrap/_transitions.scss +4 -20
  55. data/assets/stylesheets/bootstrap/_type.scss +16 -16
  56. data/assets/stylesheets/bootstrap/_utilities.scss +3 -0
  57. data/assets/stylesheets/bootstrap/_variables.scss +430 -201
  58. data/assets/stylesheets/bootstrap/mixins/_badge.scss +7 -2
  59. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +29 -1
  60. data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +16 -1
  61. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +3 -3
  62. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +12 -14
  63. data/assets/stylesheets/bootstrap/mixins/_caret.scss +5 -8
  64. data/assets/stylesheets/bootstrap/mixins/_deprecate.scss +10 -0
  65. data/assets/stylesheets/bootstrap/mixins/_float.scss +3 -0
  66. data/assets/stylesheets/bootstrap/mixins/_forms.scss +68 -13
  67. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +7 -7
  68. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +3 -4
  69. data/assets/stylesheets/bootstrap/mixins/_grid.scss +9 -10
  70. data/assets/stylesheets/bootstrap/mixins/_hover.scss +3 -5
  71. data/assets/stylesheets/bootstrap/mixins/_image.scss +2 -2
  72. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +1 -1
  73. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +2 -2
  74. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +1 -1
  75. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +1 -1
  76. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +1 -3
  77. data/assets/stylesheets/bootstrap/mixins/_size.scss +1 -0
  78. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +10 -1
  79. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +5 -3
  80. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +3 -1
  81. data/assets/stylesheets/bootstrap/mixins/_transition.scss +7 -0
  82. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +1 -0
  83. data/assets/stylesheets/bootstrap/utilities/_borders.scss +17 -1
  84. data/assets/stylesheets/bootstrap/utilities/_display.scss +6 -18
  85. data/assets/stylesheets/bootstrap/utilities/_embed.scss +7 -20
  86. data/assets/stylesheets/bootstrap/utilities/_flex.scss +5 -0
  87. data/assets/stylesheets/bootstrap/utilities/_float.scss +5 -3
  88. data/assets/stylesheets/bootstrap/utilities/_overflow.scss +5 -0
  89. data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -4
  90. data/assets/stylesheets/bootstrap/utilities/_shadows.scss +6 -0
  91. data/assets/stylesheets/bootstrap/utilities/_sizing.scss +8 -0
  92. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +23 -1
  93. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +19 -0
  94. data/assets/stylesheets/bootstrap/utilities/_text.scss +26 -6
  95. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +4 -2
  96. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +204 -0
  97. data/bootstrap.gemspec +6 -3
  98. data/lib/bootstrap/engine.rb +3 -0
  99. data/lib/bootstrap/version.rb +4 -2
  100. data/lib/bootstrap.rb +10 -7
  101. data/tasks/updater/js.rb +1 -1
  102. data/test/test_helper.rb +7 -6
  103. metadata +19 -12
  104. data/assets/stylesheets/bootstrap/mixins/_navbar-align.scss +0 -10
@@ -1,28 +1,79 @@
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); }
1
+ /*!
2
+ * Bootstrap collapse.js v4.3.1 (https://getbootstrap.com/)
3
+ * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5
+ */
6
+ (function (global, factory) {
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('./util.js')) :
8
+ typeof define === 'function' && define.amd ? define(['jquery', './util.js'], factory) :
9
+ (global = global || self, global.Collapse = factory(global.jQuery, global.Util));
10
+ }(this, function ($, Util) { 'use strict';
11
+
12
+ $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
13
+ Util = Util && Util.hasOwnProperty('default') ? Util['default'] : Util;
14
+
15
+ function _defineProperties(target, props) {
16
+ for (var i = 0; i < props.length; i++) {
17
+ var descriptor = props[i];
18
+ descriptor.enumerable = descriptor.enumerable || false;
19
+ descriptor.configurable = true;
20
+ if ("value" in descriptor) descriptor.writable = true;
21
+ Object.defineProperty(target, descriptor.key, descriptor);
22
+ }
23
+ }
24
+
25
+ function _createClass(Constructor, protoProps, staticProps) {
26
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
27
+ if (staticProps) _defineProperties(Constructor, staticProps);
28
+ return Constructor;
29
+ }
30
+
31
+ function _defineProperty(obj, key, value) {
32
+ if (key in obj) {
33
+ Object.defineProperty(obj, key, {
34
+ value: value,
35
+ enumerable: true,
36
+ configurable: true,
37
+ writable: true
38
+ });
39
+ } else {
40
+ obj[key] = value;
41
+ }
42
+
43
+ return obj;
44
+ }
45
+
46
+ function _objectSpread(target) {
47
+ for (var i = 1; i < arguments.length; i++) {
48
+ var source = arguments[i] != null ? arguments[i] : {};
49
+ var ownKeys = Object.keys(source);
50
+
51
+ if (typeof Object.getOwnPropertySymbols === 'function') {
52
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
53
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
54
+ }));
55
+ }
2
56
 
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); } }
57
+ ownKeys.forEach(function (key) {
58
+ _defineProperty(target, key, source[key]);
59
+ });
60
+ }
4
61
 
5
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
62
+ return target;
63
+ }
6
64
 
7
- /**
8
- * --------------------------------------------------------------------------
9
- * Bootstrap (v4.0.0): collapse.js
10
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
11
- * --------------------------------------------------------------------------
12
- */
13
- var Collapse = function ($) {
14
65
  /**
15
66
  * ------------------------------------------------------------------------
16
67
  * Constants
17
68
  * ------------------------------------------------------------------------
18
69
  */
70
+
19
71
  var NAME = 'collapse';
20
- var VERSION = '4.0.0';
72
+ var VERSION = '4.3.1';
21
73
  var DATA_KEY = 'bs.collapse';
22
74
  var EVENT_KEY = "." + DATA_KEY;
23
75
  var DATA_API_KEY = '.data-api';
24
76
  var JQUERY_NO_CONFLICT = $.fn[NAME];
25
- var TRANSITION_DURATION = 600;
26
77
  var Default = {
27
78
  toggle: true,
28
79
  parent: ''
@@ -66,14 +117,17 @@ var Collapse = function ($) {
66
117
  this._isTransitioning = false;
67
118
  this._element = element;
68
119
  this._config = this._getConfig(config);
69
- this._triggerArray = $.makeArray($("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]")));
70
- var tabToggles = $(Selector.DATA_TOGGLE);
120
+ this._triggerArray = [].slice.call(document.querySelectorAll("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]")));
121
+ var toggleList = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE));
71
122
 
72
- for (var i = 0; i < tabToggles.length; i++) {
73
- var elem = tabToggles[i];
123
+ for (var i = 0, len = toggleList.length; i < len; i++) {
124
+ var elem = toggleList[i];
74
125
  var selector = Util.getSelectorFromElement(elem);
126
+ var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {
127
+ return foundElem === element;
128
+ });
75
129
 
76
- if (selector !== null && $(selector).filter(element).length > 0) {
130
+ if (selector !== null && filterElement.length > 0) {
77
131
  this._selector = selector;
78
132
 
79
133
  this._triggerArray.push(elem);
@@ -114,7 +168,13 @@ var Collapse = function ($) {
114
168
  var activesData;
115
169
 
116
170
  if (this._parent) {
117
- actives = $.makeArray($(this._parent).find(Selector.ACTIVES).filter("[data-parent=\"" + this._config.parent + "\"]"));
171
+ actives = [].slice.call(this._parent.querySelectorAll(Selector.ACTIVES)).filter(function (elem) {
172
+ if (typeof _this._config.parent === 'string') {
173
+ return elem.getAttribute('data-parent') === _this._config.parent;
174
+ }
175
+
176
+ return elem.classList.contains(ClassName.COLLAPSE);
177
+ });
118
178
 
119
179
  if (actives.length === 0) {
120
180
  actives = null;
@@ -149,7 +209,7 @@ var Collapse = function ($) {
149
209
  $(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING);
150
210
  this._element.style[dimension] = 0;
151
211
 
152
- if (this._triggerArray.length > 0) {
212
+ if (this._triggerArray.length) {
153
213
  $(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true);
154
214
  }
155
215
 
@@ -164,14 +224,10 @@ var Collapse = function ($) {
164
224
  $(_this._element).trigger(Event.SHOWN);
165
225
  };
166
226
 
167
- if (!Util.supportsTransitionEnd()) {
168
- complete();
169
- return;
170
- }
171
-
172
227
  var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
173
228
  var scrollSize = "scroll" + capitalizedDimension;
174
- $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
229
+ var transitionDuration = Util.getTransitionDurationFromElement(this._element);
230
+ $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
175
231
  this._element.style[dimension] = this._element[scrollSize] + "px";
176
232
  };
177
233
 
@@ -194,14 +250,15 @@ var Collapse = function ($) {
194
250
  this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
195
251
  Util.reflow(this._element);
196
252
  $(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW);
253
+ var triggerArrayLength = this._triggerArray.length;
197
254
 
198
- if (this._triggerArray.length > 0) {
199
- for (var i = 0; i < this._triggerArray.length; i++) {
255
+ if (triggerArrayLength > 0) {
256
+ for (var i = 0; i < triggerArrayLength; i++) {
200
257
  var trigger = this._triggerArray[i];
201
258
  var selector = Util.getSelectorFromElement(trigger);
202
259
 
203
260
  if (selector !== null) {
204
- var $elem = $(selector);
261
+ var $elem = $([].slice.call(document.querySelectorAll(selector)));
205
262
 
206
263
  if (!$elem.hasClass(ClassName.SHOW)) {
207
264
  $(trigger).addClass(ClassName.COLLAPSED).attr('aria-expanded', false);
@@ -219,13 +276,8 @@ var Collapse = function ($) {
219
276
  };
220
277
 
221
278
  this._element.style[dimension] = '';
222
-
223
- if (!Util.supportsTransitionEnd()) {
224
- complete();
225
- return;
226
- }
227
-
228
- $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
279
+ var transitionDuration = Util.getTransitionDurationFromElement(this._element);
280
+ $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
229
281
  };
230
282
 
231
283
  _proto.setTransitioning = function setTransitioning(isTransitioning) {
@@ -239,11 +291,11 @@ var Collapse = function ($) {
239
291
  this._element = null;
240
292
  this._triggerArray = null;
241
293
  this._isTransitioning = null;
242
- }; // Private
243
-
294
+ } // Private
295
+ ;
244
296
 
245
297
  _proto._getConfig = function _getConfig(config) {
246
- config = _extends({}, Default, config);
298
+ config = _objectSpread({}, Default, config);
247
299
  config.toggle = Boolean(config.toggle); // Coerce string values
248
300
 
249
301
  Util.typeCheckConfig(NAME, config, DefaultType);
@@ -258,7 +310,7 @@ var Collapse = function ($) {
258
310
  _proto._getParent = function _getParent() {
259
311
  var _this3 = this;
260
312
 
261
- var parent = null;
313
+ var parent;
262
314
 
263
315
  if (Util.isElement(this._config.parent)) {
264
316
  parent = this._config.parent; // It's a jQuery object
@@ -267,30 +319,29 @@ var Collapse = function ($) {
267
319
  parent = this._config.parent[0];
268
320
  }
269
321
  } else {
270
- parent = $(this._config.parent)[0];
322
+ parent = document.querySelector(this._config.parent);
271
323
  }
272
324
 
273
325
  var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]";
274
- $(parent).find(selector).each(function (i, element) {
326
+ var children = [].slice.call(parent.querySelectorAll(selector));
327
+ $(children).each(function (i, element) {
275
328
  _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);
276
329
  });
277
330
  return parent;
278
331
  };
279
332
 
280
333
  _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
281
- if (element) {
282
- var isOpen = $(element).hasClass(ClassName.SHOW);
334
+ var isOpen = $(element).hasClass(ClassName.SHOW);
283
335
 
284
- if (triggerArray.length > 0) {
285
- $(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
286
- }
336
+ if (triggerArray.length) {
337
+ $(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
287
338
  }
288
- }; // Static
289
-
339
+ } // Static
340
+ ;
290
341
 
291
342
  Collapse._getTargetFromElement = function _getTargetFromElement(element) {
292
343
  var selector = Util.getSelectorFromElement(element);
293
- return selector ? $(selector)[0] : null;
344
+ return selector ? document.querySelector(selector) : null;
294
345
  };
295
346
 
296
347
  Collapse._jQueryInterface = function _jQueryInterface(config) {
@@ -298,7 +349,7 @@ var Collapse = function ($) {
298
349
  var $this = $(this);
299
350
  var data = $this.data(DATA_KEY);
300
351
 
301
- var _config = _extends({}, Default, $this.data(), typeof config === 'object' && config);
352
+ var _config = _objectSpread({}, Default, $this.data(), typeof config === 'object' && config ? config : {});
302
353
 
303
354
  if (!data && _config.toggle && /show|hide/.test(config)) {
304
355
  _config.toggle = false;
@@ -348,7 +399,8 @@ var Collapse = function ($) {
348
399
 
349
400
  var $trigger = $(this);
350
401
  var selector = Util.getSelectorFromElement(this);
351
- $(selector).each(function () {
402
+ var selectors = [].slice.call(document.querySelectorAll(selector));
403
+ $(selectors).each(function () {
352
404
  var $target = $(this);
353
405
  var data = $target.data(DATA_KEY);
354
406
  var config = data ? 'toggle' : $trigger.data();
@@ -371,4 +423,5 @@ var Collapse = function ($) {
371
423
  };
372
424
 
373
425
  return Collapse;
374
- }($);
426
+
427
+ }));
@@ -1,23 +1,76 @@
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); }
1
+ /*!
2
+ * Bootstrap dropdown.js v4.3.1 (https://getbootstrap.com/)
3
+ * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/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.js'], factory) :
9
+ (global = global || self, global.Dropdown = factory(global.jQuery, global.Popper, global.Util));
10
+ }(this, function ($, Popper, Util) { 'use strict';
11
+
12
+ $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
13
+ Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper;
14
+ Util = Util && Util.hasOwnProperty('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;
42
+ }
43
+
44
+ return obj;
45
+ }
46
+
47
+ function _objectSpread(target) {
48
+ for (var i = 1; i < arguments.length; i++) {
49
+ var source = arguments[i] != null ? arguments[i] : {};
50
+ var ownKeys = Object.keys(source);
51
+
52
+ if (typeof Object.getOwnPropertySymbols === 'function') {
53
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
54
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
55
+ }));
56
+ }
2
57
 
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); } }
58
+ ownKeys.forEach(function (key) {
59
+ _defineProperty(target, key, source[key]);
60
+ });
61
+ }
4
62
 
5
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
63
+ return target;
64
+ }
6
65
 
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
66
  /**
15
67
  * ------------------------------------------------------------------------
16
68
  * Constants
17
69
  * ------------------------------------------------------------------------
18
70
  */
71
+
19
72
  var NAME = 'dropdown';
20
- var VERSION = '4.0.0';
73
+ var VERSION = '4.3.1';
21
74
  var DATA_KEY = 'bs.dropdown';
22
75
  var EVENT_KEY = "." + DATA_KEY;
23
76
  var DATA_API_KEY = '.data-api';
@@ -60,7 +113,7 @@ var Dropdown = function ($) {
60
113
  FORM_CHILD: '.dropdown form',
61
114
  MENU: '.dropdown-menu',
62
115
  NAVBAR_NAV: '.navbar-nav',
63
- VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled)'
116
+ VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'
64
117
  };
65
118
  var AttachmentMap = {
66
119
  TOP: 'top-start',
@@ -75,12 +128,16 @@ var Dropdown = function ($) {
75
128
  var Default = {
76
129
  offset: 0,
77
130
  flip: true,
78
- boundary: 'scrollParent'
131
+ boundary: 'scrollParent',
132
+ reference: 'toggle',
133
+ display: 'dynamic'
79
134
  };
80
135
  var DefaultType = {
81
136
  offset: '(number|string|function)',
82
137
  flip: 'boolean',
83
- boundary: '(string|element)'
138
+ boundary: '(string|element)',
139
+ reference: '(string|element)',
140
+ display: 'string'
84
141
  /**
85
142
  * ------------------------------------------------------------------------
86
143
  * Class Definition
@@ -138,14 +195,18 @@ var Dropdown = function ($) {
138
195
  * Popper - https://popper.js.org
139
196
  */
140
197
  if (typeof Popper === 'undefined') {
141
- throw new TypeError('Bootstrap dropdown require Popper.js (https://popper.js.org)');
198
+ throw new TypeError('Bootstrap\'s dropdowns require Popper.js (https://popper.js.org/)');
142
199
  }
143
200
 
144
- var element = this._element; // For dropup with alignment we use the parent as popper container
201
+ var referenceElement = this._element;
145
202
 
146
- if ($(parent).hasClass(ClassName.DROPUP)) {
147
- if ($(this._menu).hasClass(ClassName.MENULEFT) || $(this._menu).hasClass(ClassName.MENURIGHT)) {
148
- element = parent;
203
+ if (this._config.reference === 'parent') {
204
+ referenceElement = parent;
205
+ } else if (Util.isElement(this._config.reference)) {
206
+ referenceElement = this._config.reference; // Check if it's jQuery element
207
+
208
+ if (typeof this._config.reference.jquery !== 'undefined') {
209
+ referenceElement = this._config.reference[0];
149
210
  }
150
211
  } // If boundary is not `scrollParent`, then set position to `static`
151
212
  // to allow the menu to "escape" the scroll parent's boundaries
@@ -156,7 +217,7 @@ var Dropdown = function ($) {
156
217
  $(parent).addClass(ClassName.POSITION_STATIC);
157
218
  }
158
219
 
159
- this._popper = new Popper(element, this._menu, this._getPopperConfig());
220
+ this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig());
160
221
  } // If this is a touch-enabled device we add extra
161
222
  // empty mouseover listeners to the body's immediate children;
162
223
  // only needed because of broken event delegation on iOS
@@ -164,7 +225,7 @@ var Dropdown = function ($) {
164
225
 
165
226
 
166
227
  if ('ontouchstart' in document.documentElement && $(parent).closest(Selector.NAVBAR_NAV).length === 0) {
167
- $('body').children().on('mouseover', null, $.noop);
228
+ $(document.body).children().on('mouseover', null, $.noop);
168
229
  }
169
230
 
170
231
  this._element.focus();
@@ -175,6 +236,50 @@ var Dropdown = function ($) {
175
236
  $(parent).toggleClass(ClassName.SHOW).trigger($.Event(Event.SHOWN, relatedTarget));
176
237
  };
177
238
 
239
+ _proto.show = function show() {
240
+ if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED) || $(this._menu).hasClass(ClassName.SHOW)) {
241
+ return;
242
+ }
243
+
244
+ var relatedTarget = {
245
+ relatedTarget: this._element
246
+ };
247
+ var showEvent = $.Event(Event.SHOW, relatedTarget);
248
+
249
+ var parent = Dropdown._getParentFromElement(this._element);
250
+
251
+ $(parent).trigger(showEvent);
252
+
253
+ if (showEvent.isDefaultPrevented()) {
254
+ return;
255
+ }
256
+
257
+ $(this._menu).toggleClass(ClassName.SHOW);
258
+ $(parent).toggleClass(ClassName.SHOW).trigger($.Event(Event.SHOWN, relatedTarget));
259
+ };
260
+
261
+ _proto.hide = function hide() {
262
+ if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED) || !$(this._menu).hasClass(ClassName.SHOW)) {
263
+ return;
264
+ }
265
+
266
+ var relatedTarget = {
267
+ relatedTarget: this._element
268
+ };
269
+ var hideEvent = $.Event(Event.HIDE, relatedTarget);
270
+
271
+ var parent = Dropdown._getParentFromElement(this._element);
272
+
273
+ $(parent).trigger(hideEvent);
274
+
275
+ if (hideEvent.isDefaultPrevented()) {
276
+ return;
277
+ }
278
+
279
+ $(this._menu).toggleClass(ClassName.SHOW);
280
+ $(parent).toggleClass(ClassName.SHOW).trigger($.Event(Event.HIDDEN, relatedTarget));
281
+ };
282
+
178
283
  _proto.dispose = function dispose() {
179
284
  $.removeData(this._element, DATA_KEY);
180
285
  $(this._element).off(EVENT_KEY);
@@ -194,8 +299,8 @@ var Dropdown = function ($) {
194
299
  if (this._popper !== null) {
195
300
  this._popper.scheduleUpdate();
196
301
  }
197
- }; // Private
198
-
302
+ } // Private
303
+ ;
199
304
 
200
305
  _proto._addEventListeners = function _addEventListeners() {
201
306
  var _this = this;
@@ -209,7 +314,7 @@ var Dropdown = function ($) {
209
314
  };
210
315
 
211
316
  _proto._getConfig = function _getConfig(config) {
212
- config = _extends({}, this.constructor.Default, $(this._element).data(), config);
317
+ config = _objectSpread({}, this.constructor.Default, $(this._element).data(), config);
213
318
  Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);
214
319
  return config;
215
320
  };
@@ -218,14 +323,16 @@ var Dropdown = function ($) {
218
323
  if (!this._menu) {
219
324
  var parent = Dropdown._getParentFromElement(this._element);
220
325
 
221
- this._menu = $(parent).find(Selector.MENU)[0];
326
+ if (parent) {
327
+ this._menu = parent.querySelector(Selector.MENU);
328
+ }
222
329
  }
223
330
 
224
331
  return this._menu;
225
332
  };
226
333
 
227
334
  _proto._getPlacement = function _getPlacement() {
228
- var $parentDropdown = $(this._element).parent();
335
+ var $parentDropdown = $(this._element.parentNode);
229
336
  var placement = AttachmentMap.BOTTOM; // Handle dropup
230
337
 
231
338
  if ($parentDropdown.hasClass(ClassName.DROPUP)) {
@@ -249,35 +356,47 @@ var Dropdown = function ($) {
249
356
  return $(this._element).closest('.navbar').length > 0;
250
357
  };
251
358
 
252
- _proto._getPopperConfig = function _getPopperConfig() {
359
+ _proto._getOffset = function _getOffset() {
253
360
  var _this2 = this;
254
361
 
255
- var offsetConf = {};
362
+ var offset = {};
256
363
 
257
364
  if (typeof this._config.offset === 'function') {
258
- offsetConf.fn = function (data) {
259
- data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets) || {});
365
+ offset.fn = function (data) {
366
+ data.offsets = _objectSpread({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {});
260
367
  return data;
261
368
  };
262
369
  } else {
263
- offsetConf.offset = this._config.offset;
370
+ offset.offset = this._config.offset;
264
371
  }
265
372
 
373
+ return offset;
374
+ };
375
+
376
+ _proto._getPopperConfig = function _getPopperConfig() {
266
377
  var popperConfig = {
267
378
  placement: this._getPlacement(),
268
379
  modifiers: {
269
- offset: offsetConf,
380
+ offset: this._getOffset(),
270
381
  flip: {
271
382
  enabled: this._config.flip
272
383
  },
273
384
  preventOverflow: {
274
385
  boundariesElement: this._config.boundary
275
386
  }
276
- }
387
+ } // Disable Popper.js if we have a static display
388
+
277
389
  };
278
- return popperConfig;
279
- }; // Static
280
390
 
391
+ if (this._config.display === 'static') {
392
+ popperConfig.modifiers.applyStyle = {
393
+ enabled: false
394
+ };
395
+ }
396
+
397
+ return popperConfig;
398
+ } // Static
399
+ ;
281
400
 
282
401
  Dropdown._jQueryInterface = function _jQueryInterface(config) {
283
402
  return this.each(function () {
@@ -305,9 +424,9 @@ var Dropdown = function ($) {
305
424
  return;
306
425
  }
307
426
 
308
- var toggles = $.makeArray($(Selector.DATA_TOGGLE));
427
+ var toggles = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE));
309
428
 
310
- for (var i = 0; i < toggles.length; i++) {
429
+ for (var i = 0, len = toggles.length; i < len; i++) {
311
430
  var parent = Dropdown._getParentFromElement(toggles[i]);
312
431
 
313
432
  var context = $(toggles[i]).data(DATA_KEY);
@@ -315,6 +434,10 @@ var Dropdown = function ($) {
315
434
  relatedTarget: toggles[i]
316
435
  };
317
436
 
437
+ if (event && event.type === 'click') {
438
+ relatedTarget.clickEvent = event;
439
+ }
440
+
318
441
  if (!context) {
319
442
  continue;
320
443
  }
@@ -339,7 +462,7 @@ var Dropdown = function ($) {
339
462
 
340
463
 
341
464
  if ('ontouchstart' in document.documentElement) {
342
- $('body').children().off('mouseover', null, $.noop);
465
+ $(document.body).children().off('mouseover', null, $.noop);
343
466
  }
344
467
 
345
468
  toggles[i].setAttribute('aria-expanded', 'false');
@@ -353,12 +476,12 @@ var Dropdown = function ($) {
353
476
  var selector = Util.getSelectorFromElement(element);
354
477
 
355
478
  if (selector) {
356
- parent = $(selector)[0];
479
+ parent = document.querySelector(selector);
357
480
  }
358
481
 
359
482
  return parent || element.parentNode;
360
- }; // eslint-disable-next-line complexity
361
-
483
+ } // eslint-disable-next-line complexity
484
+ ;
362
485
 
363
486
  Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
364
487
  // If not input/textarea:
@@ -383,9 +506,9 @@ var Dropdown = function ($) {
383
506
 
384
507
  var isActive = $(parent).hasClass(ClassName.SHOW);
385
508
 
386
- if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
509
+ if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
387
510
  if (event.which === ESCAPE_KEYCODE) {
388
- var toggle = $(parent).find(Selector.DATA_TOGGLE)[0];
511
+ var toggle = parent.querySelector(Selector.DATA_TOGGLE);
389
512
  $(toggle).trigger('focus');
390
513
  }
391
514
 
@@ -393,7 +516,7 @@ var Dropdown = function ($) {
393
516
  return;
394
517
  }
395
518
 
396
- var items = $(parent).find(Selector.VISIBLE_ITEMS).get();
519
+ var items = [].slice.call(parent.querySelectorAll(Selector.VISIBLE_ITEMS));
397
520
 
398
521
  if (items.length === 0) {
399
522
  return;
@@ -467,4 +590,5 @@ var Dropdown = function ($) {
467
590
  };
468
591
 
469
592
  return Dropdown;
470
- }($, Popper);
593
+
594
+ }));