bootstrap 4.3.0 → 5.0.0.alpha1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +15 -1
  3. data/CHANGELOG.md +2 -14
  4. data/README.md +1 -1
  5. data/assets/javascripts/bootstrap-sprockets.js +5 -1
  6. data/assets/javascripts/bootstrap.js +2292 -1514
  7. data/assets/javascripts/bootstrap.min.js +4 -4
  8. data/assets/javascripts/bootstrap/alert.js +148 -85
  9. data/assets/javascripts/bootstrap/button.js +69 -110
  10. data/assets/javascripts/bootstrap/carousel.js +320 -239
  11. data/assets/javascripts/bootstrap/collapse.js +300 -177
  12. data/assets/javascripts/bootstrap/dom/data.js +81 -0
  13. data/assets/javascripts/bootstrap/dom/event-handler.js +311 -0
  14. data/assets/javascripts/bootstrap/dom/manipulator.js +100 -0
  15. data/assets/javascripts/bootstrap/dom/polyfill.js +110 -0
  16. data/assets/javascripts/bootstrap/dom/selector-engine.js +98 -0
  17. data/assets/javascripts/bootstrap/dropdown.js +282 -265
  18. data/assets/javascripts/bootstrap/modal.js +348 -231
  19. data/assets/javascripts/bootstrap/popover.js +80 -105
  20. data/assets/javascripts/bootstrap/scrollspy.js +173 -138
  21. data/assets/javascripts/bootstrap/tab.js +180 -115
  22. data/assets/javascripts/bootstrap/toast.js +188 -132
  23. data/assets/javascripts/bootstrap/tooltip.js +508 -230
  24. data/assets/stylesheets/_bootstrap-grid.scss +54 -18
  25. data/assets/stylesheets/_bootstrap-reboot.scss +7 -4
  26. data/assets/stylesheets/_bootstrap.scss +17 -11
  27. data/assets/stylesheets/bootstrap/_alert.scss +3 -3
  28. data/assets/stylesheets/bootstrap/_badge.scss +2 -27
  29. data/assets/stylesheets/bootstrap/_breadcrumb.scss +7 -18
  30. data/assets/stylesheets/bootstrap/_button-group.scss +16 -38
  31. data/assets/stylesheets/bootstrap/_buttons.scss +26 -39
  32. data/assets/stylesheets/bootstrap/_card.scss +48 -97
  33. data/assets/stylesheets/bootstrap/_carousel.scss +16 -18
  34. data/assets/stylesheets/bootstrap/_close.scss +9 -14
  35. data/assets/stylesheets/bootstrap/_containers.scss +41 -0
  36. data/assets/stylesheets/bootstrap/_dropdown.scss +13 -9
  37. data/assets/stylesheets/bootstrap/_forms.scss +9 -330
  38. data/assets/stylesheets/bootstrap/_functions.scss +141 -24
  39. data/assets/stylesheets/bootstrap/_grid.scss +4 -34
  40. data/assets/stylesheets/bootstrap/_helpers.scss +7 -0
  41. data/assets/stylesheets/bootstrap/_images.scss +2 -2
  42. data/assets/stylesheets/bootstrap/_list-group.scss +41 -33
  43. data/assets/stylesheets/bootstrap/_mixins.scss +9 -15
  44. data/assets/stylesheets/bootstrap/_modal.scss +54 -48
  45. data/assets/stylesheets/bootstrap/_nav.scss +12 -9
  46. data/assets/stylesheets/bootstrap/_navbar.scss +54 -56
  47. data/assets/stylesheets/bootstrap/_pagination.scss +10 -22
  48. data/assets/stylesheets/bootstrap/_popover.scss +13 -14
  49. data/assets/stylesheets/bootstrap/_progress.scss +6 -4
  50. data/assets/stylesheets/bootstrap/_reboot.scss +318 -185
  51. data/assets/stylesheets/bootstrap/_root.scss +5 -8
  52. data/assets/stylesheets/bootstrap/_spinners.scss +3 -2
  53. data/assets/stylesheets/bootstrap/_tables.scss +80 -114
  54. data/assets/stylesheets/bootstrap/_tooltip.scss +5 -5
  55. data/assets/stylesheets/bootstrap/_transitions.scss +0 -1
  56. data/assets/stylesheets/bootstrap/_type.scss +40 -61
  57. data/assets/stylesheets/bootstrap/_utilities.scss +503 -17
  58. data/assets/stylesheets/bootstrap/_variables.scss +567 -430
  59. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +18 -0
  60. data/assets/stylesheets/bootstrap/forms/_form-check.scss +142 -0
  61. data/assets/stylesheets/bootstrap/forms/_form-control.scss +116 -0
  62. data/assets/stylesheets/bootstrap/forms/_form-file.scss +91 -0
  63. data/assets/stylesheets/bootstrap/forms/_form-range.scss +136 -0
  64. data/assets/stylesheets/bootstrap/forms/_form-select.scss +82 -0
  65. data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
  66. data/assets/stylesheets/bootstrap/forms/_input-group.scss +140 -0
  67. data/assets/stylesheets/bootstrap/forms/_labels.scss +36 -0
  68. data/assets/stylesheets/bootstrap/forms/_validation.scss +12 -0
  69. data/assets/stylesheets/bootstrap/{utilities → helpers}/_clearfix.scss +0 -0
  70. data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +12 -0
  71. data/assets/stylesheets/bootstrap/helpers/_embed.scss +31 -0
  72. data/assets/stylesheets/bootstrap/helpers/_position.scss +30 -0
  73. data/assets/stylesheets/bootstrap/helpers/_screenreaders.scss +8 -0
  74. data/assets/stylesheets/bootstrap/helpers/_stretched-link.scss +15 -0
  75. data/assets/stylesheets/bootstrap/helpers/_text-truncation.scss +7 -0
  76. data/assets/stylesheets/bootstrap/mixins/_alert.scss +0 -4
  77. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +26 -13
  78. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +11 -8
  79. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +68 -50
  80. data/assets/stylesheets/bootstrap/mixins/_caret.scss +4 -4
  81. data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
  82. data/assets/stylesheets/bootstrap/mixins/_container.scss +9 -0
  83. data/assets/stylesheets/bootstrap/mixins/_forms.scss +47 -106
  84. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +9 -11
  85. data/assets/stylesheets/bootstrap/mixins/_grid.scss +99 -29
  86. data/assets/stylesheets/bootstrap/mixins/_image.scss +0 -20
  87. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +2 -1
  88. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +15 -8
  89. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +1 -1
  90. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +14 -19
  91. data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +21 -0
  92. data/assets/stylesheets/bootstrap/mixins/_transition.scss +17 -7
  93. data/assets/stylesheets/bootstrap/mixins/_utilities.scss +49 -0
  94. data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
  95. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +230 -130
  96. data/bootstrap.gemspec +1 -1
  97. data/lib/bootstrap/version.rb +2 -2
  98. data/tasks/updater/js.rb +3 -3
  99. data/tasks/updater/network.rb +2 -2
  100. data/test/dummy_rails/app/assets/config/manifest.js +3 -0
  101. data/test/dummy_rails/app/assets/stylesheets/.browserslistrc +1 -0
  102. data/test/gemfiles/rails_6_0.gemfile +7 -0
  103. data/test/support/dummy_rails_integration.rb +3 -1
  104. data/test/test_helper.rb +18 -13
  105. metadata +40 -42
  106. data/assets/javascripts/bootstrap/util.js +0 -171
  107. data/assets/stylesheets/bootstrap/_code.scss +0 -48
  108. data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -507
  109. data/assets/stylesheets/bootstrap/_input-group.scss +0 -193
  110. data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
  111. data/assets/stylesheets/bootstrap/_media.scss +0 -8
  112. data/assets/stylesheets/bootstrap/_print.scss +0 -141
  113. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -21
  114. data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
  115. data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
  116. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -66
  117. data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
  118. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -10
  119. data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
  120. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
  121. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -16
  122. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
  123. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
  124. data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
  125. data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
  126. data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
  127. data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
  128. data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
  129. data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
  130. data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
  131. data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
  132. data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
  133. data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
  134. data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
  135. data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
  136. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
  137. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
  138. data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -72
  139. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
@@ -1,73 +1,47 @@
1
1
  /*!
2
- * Bootstrap popover.js v4.3.0 (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)
2
+ * Bootstrap popover.js v5.0.0-alpha1 (https://getbootstrap.com/)
3
+ * Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
5
  */
6
6
  (function (global, factory) {
7
- typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('./tooltip.js')) :
8
- typeof define === 'function' && define.amd ? define(['jquery', './tooltip.js'], factory) :
9
- (global = global || self, global.Popover = factory(global.jQuery, global.Tooltip));
10
- }(this, function ($, Tooltip) { 'use strict';
11
-
12
- $ = $ && $.hasOwnProperty('default') ? $['default'] : $;
13
- Tooltip = Tooltip && Tooltip.hasOwnProperty('default') ? Tooltip['default'] : Tooltip;
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
- }
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js'), require('./dom/selector-engine.js'), require('./tooltip.js')) :
8
+ typeof define === 'function' && define.amd ? define(['./dom/data.js', './dom/selector-engine.js', './tooltip.js'], factory) :
9
+ (global = global || self, global.Popover = factory(global.Data, global.SelectorEngine, global.Tooltip));
10
+ }(this, (function (Data, SelectorEngine, Tooltip) { 'use strict';
24
11
 
25
- function _createClass(Constructor, protoProps, staticProps) {
26
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
27
- if (staticProps) _defineProperties(Constructor, staticProps);
28
- return Constructor;
29
- }
12
+ Data = Data && Object.prototype.hasOwnProperty.call(Data, 'default') ? Data['default'] : Data;
13
+ SelectorEngine = SelectorEngine && Object.prototype.hasOwnProperty.call(SelectorEngine, 'default') ? SelectorEngine['default'] : SelectorEngine;
14
+ Tooltip = Tooltip && Object.prototype.hasOwnProperty.call(Tooltip, 'default') ? Tooltip['default'] : Tooltip;
30
15
 
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;
16
+ /**
17
+ * --------------------------------------------------------------------------
18
+ * Bootstrap (v5.0.0-alpha1): util/index.js
19
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
20
+ * --------------------------------------------------------------------------
21
+ */
22
+
23
+ var getjQuery = function getjQuery() {
24
+ var _window = window,
25
+ jQuery = _window.jQuery;
26
+
27
+ if (jQuery && !document.body.hasAttribute('data-no-jquery')) {
28
+ return jQuery;
41
29
  }
42
30
 
43
- return obj;
44
- }
31
+ return null;
32
+ };
45
33
 
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);
34
+ 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); } }
50
35
 
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
- }
36
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
56
37
 
57
- ownKeys.forEach(function (key) {
58
- _defineProperty(target, key, source[key]);
59
- });
60
- }
38
+ function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
61
39
 
62
- return target;
63
- }
40
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
64
41
 
65
- function _inheritsLoose(subClass, superClass) {
66
- subClass.prototype = Object.create(superClass.prototype);
67
- subClass.prototype.constructor = subClass;
68
- subClass.__proto__ = superClass;
69
- }
42
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
70
43
 
44
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
71
45
  /**
72
46
  * ------------------------------------------------------------------------
73
47
  * Constants
@@ -75,32 +49,23 @@
75
49
  */
76
50
 
77
51
  var NAME = 'popover';
78
- var VERSION = '4.3.0';
52
+ var VERSION = '5.0.0-alpha1';
79
53
  var DATA_KEY = 'bs.popover';
80
54
  var EVENT_KEY = "." + DATA_KEY;
81
- var JQUERY_NO_CONFLICT = $.fn[NAME];
82
55
  var CLASS_PREFIX = 'bs-popover';
83
56
  var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
84
57
 
85
- var Default = _objectSpread({}, Tooltip.Default, {
58
+ var Default = _objectSpread(_objectSpread({}, Tooltip.Default), {}, {
86
59
  placement: 'right',
87
60
  trigger: 'click',
88
61
  content: '',
89
- template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>'
62
+ template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>'
90
63
  });
91
64
 
92
- var DefaultType = _objectSpread({}, Tooltip.DefaultType, {
65
+ var DefaultType = _objectSpread(_objectSpread({}, Tooltip.DefaultType), {}, {
93
66
  content: '(string|element|function)'
94
67
  });
95
68
 
96
- var ClassName = {
97
- FADE: 'fade',
98
- SHOW: 'show'
99
- };
100
- var Selector = {
101
- TITLE: '.popover-header',
102
- CONTENT: '.popover-body'
103
- };
104
69
  var Event = {
105
70
  HIDE: "hide" + EVENT_KEY,
106
71
  HIDDEN: "hidden" + EVENT_KEY,
@@ -112,17 +77,18 @@
112
77
  FOCUSOUT: "focusout" + EVENT_KEY,
113
78
  MOUSEENTER: "mouseenter" + EVENT_KEY,
114
79
  MOUSELEAVE: "mouseleave" + EVENT_KEY
115
- /**
116
- * ------------------------------------------------------------------------
117
- * Class Definition
118
- * ------------------------------------------------------------------------
119
- */
120
-
121
80
  };
81
+ var CLASS_NAME_FADE = 'fade';
82
+ var CLASS_NAME_SHOW = 'show';
83
+ var SELECTOR_TITLE = '.popover-header';
84
+ var SELECTOR_CONTENT = '.popover-body';
85
+ /**
86
+ * ------------------------------------------------------------------------
87
+ * Class Definition
88
+ * ------------------------------------------------------------------------
89
+ */
122
90
 
123
- var Popover =
124
- /*#__PURE__*/
125
- function (_Tooltip) {
91
+ var Popover = /*#__PURE__*/function (_Tooltip) {
126
92
  _inheritsLoose(Popover, _Tooltip);
127
93
 
128
94
  function Popover() {
@@ -136,19 +102,10 @@
136
102
  return this.getTitle() || this._getContent();
137
103
  };
138
104
 
139
- _proto.addAttachmentClass = function addAttachmentClass(attachment) {
140
- $(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
141
- };
142
-
143
- _proto.getTipElement = function getTipElement() {
144
- this.tip = this.tip || $(this.config.template)[0];
145
- return this.tip;
146
- };
147
-
148
105
  _proto.setContent = function setContent() {
149
- var $tip = $(this.getTipElement()); // We use append for html objects to maintain js events
106
+ var tip = this.getTipElement(); // we use append for html objects to maintain js events
150
107
 
151
- this.setElementContent($tip.find(Selector.TITLE), this.getTitle());
108
+ this.setElementContent(SelectorEngine.findOne(SELECTOR_TITLE, tip), this.getTitle());
152
109
 
153
110
  var content = this._getContent();
154
111
 
@@ -156,8 +113,12 @@
156
113
  content = content.call(this.element);
157
114
  }
158
115
 
159
- this.setElementContent($tip.find(Selector.CONTENT), content);
160
- $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW);
116
+ this.setElementContent(SelectorEngine.findOne(SELECTOR_CONTENT, tip), content);
117
+ tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW);
118
+ };
119
+
120
+ _proto._addAttachmentClass = function _addAttachmentClass(attachment) {
121
+ this.getTipElement().classList.add(CLASS_PREFIX + "-" + attachment);
161
122
  } // Private
162
123
  ;
163
124
 
@@ -166,18 +127,22 @@
166
127
  };
167
128
 
168
129
  _proto._cleanTipClass = function _cleanTipClass() {
169
- var $tip = $(this.getTipElement());
170
- var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
130
+ var tip = this.getTipElement();
131
+ var tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX);
171
132
 
172
133
  if (tabClass !== null && tabClass.length > 0) {
173
- $tip.removeClass(tabClass.join(''));
134
+ tabClass.map(function (token) {
135
+ return token.trim();
136
+ }).forEach(function (tClass) {
137
+ return tip.classList.remove(tClass);
138
+ });
174
139
  }
175
140
  } // Static
176
141
  ;
177
142
 
178
- Popover._jQueryInterface = function _jQueryInterface(config) {
143
+ Popover.jQueryInterface = function jQueryInterface(config) {
179
144
  return this.each(function () {
180
- var data = $(this).data(DATA_KEY);
145
+ var data = Data.getData(this, DATA_KEY);
181
146
 
182
147
  var _config = typeof config === 'object' ? config : null;
183
148
 
@@ -187,7 +152,7 @@
187
152
 
188
153
  if (!data) {
189
154
  data = new Popover(this, _config);
190
- $(this).data(DATA_KEY, data);
155
+ Data.setData(this, DATA_KEY, data);
191
156
  }
192
157
 
193
158
  if (typeof config === 'string') {
@@ -200,6 +165,10 @@
200
165
  });
201
166
  };
202
167
 
168
+ Popover.getInstance = function getInstance(element) {
169
+ return Data.getData(element, DATA_KEY);
170
+ };
171
+
203
172
  _createClass(Popover, null, [{
204
173
  key: "VERSION",
205
174
  // Getters
@@ -240,21 +209,27 @@
240
209
 
241
210
  return Popover;
242
211
  }(Tooltip);
212
+
213
+ var $ = getjQuery();
243
214
  /**
244
215
  * ------------------------------------------------------------------------
245
216
  * jQuery
246
217
  * ------------------------------------------------------------------------
247
218
  */
248
219
 
220
+ /* istanbul ignore if */
249
221
 
250
- $.fn[NAME] = Popover._jQueryInterface;
251
- $.fn[NAME].Constructor = Popover;
222
+ if ($) {
223
+ var JQUERY_NO_CONFLICT = $.fn[NAME];
224
+ $.fn[NAME] = Popover.jQueryInterface;
225
+ $.fn[NAME].Constructor = Popover;
252
226
 
253
- $.fn[NAME].noConflict = function () {
254
- $.fn[NAME] = JQUERY_NO_CONFLICT;
255
- return Popover._jQueryInterface;
256
- };
227
+ $.fn[NAME].noConflict = function () {
228
+ $.fn[NAME] = JQUERY_NO_CONFLICT;
229
+ return Popover.jQueryInterface;
230
+ };
231
+ }
257
232
 
258
233
  return Popover;
259
234
 
260
- }));
235
+ })));
@@ -1,67 +1,106 @@
1
1
  /*!
2
- * Bootstrap scrollspy.js v4.3.0 (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)
2
+ * Bootstrap scrollspy.js v5.0.0-alpha1 (https://getbootstrap.com/)
3
+ * Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
5
  */
6
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.ScrollSpy = 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);
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./dom/selector-engine.js')) :
8
+ typeof define === 'function' && define.amd ? define(['./dom/data.js', './dom/event-handler.js', './dom/manipulator.js', './dom/selector-engine.js'], factory) :
9
+ (global = global || self, global.ScrollSpy = factory(global.Data, global.EventHandler, global.Manipulator, global.SelectorEngine));
10
+ }(this, (function (Data, EventHandler, Manipulator, SelectorEngine) { 'use strict';
11
+
12
+ Data = Data && Object.prototype.hasOwnProperty.call(Data, 'default') ? Data['default'] : Data;
13
+ EventHandler = EventHandler && Object.prototype.hasOwnProperty.call(EventHandler, 'default') ? EventHandler['default'] : EventHandler;
14
+ Manipulator = Manipulator && Object.prototype.hasOwnProperty.call(Manipulator, 'default') ? Manipulator['default'] : Manipulator;
15
+ SelectorEngine = SelectorEngine && Object.prototype.hasOwnProperty.call(SelectorEngine, 'default') ? SelectorEngine['default'] : SelectorEngine;
16
+
17
+ /**
18
+ * --------------------------------------------------------------------------
19
+ * Bootstrap (v5.0.0-alpha1): util/index.js
20
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
21
+ * --------------------------------------------------------------------------
22
+ */
23
+ var MAX_UID = 1000000;
24
+
25
+ var toType = function toType(obj) {
26
+ if (obj === null || obj === undefined) {
27
+ return "" + obj;
22
28
  }
23
- }
24
29
 
25
- function _createClass(Constructor, protoProps, staticProps) {
26
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
27
- if (staticProps) _defineProperties(Constructor, staticProps);
28
- return Constructor;
29
- }
30
+ return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
31
+ };
32
+ /**
33
+ * --------------------------------------------------------------------------
34
+ * Public Util Api
35
+ * --------------------------------------------------------------------------
36
+ */
30
37
 
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;
38
+
39
+ var getUID = function getUID(prefix) {
40
+ do {
41
+ prefix += Math.floor(Math.random() * MAX_UID);
42
+ } while (document.getElementById(prefix));
43
+
44
+ return prefix;
45
+ };
46
+
47
+ var getSelector = function getSelector(element) {
48
+ var selector = element.getAttribute('data-target');
49
+
50
+ if (!selector || selector === '#') {
51
+ var hrefAttr = element.getAttribute('href');
52
+ selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
41
53
  }
42
54
 
43
- return obj;
44
- }
55
+ return selector;
56
+ };
57
+
58
+ var getSelectorFromElement = function getSelectorFromElement(element) {
59
+ var selector = getSelector(element);
60
+
61
+ if (selector) {
62
+ return document.querySelector(selector) ? selector : null;
63
+ }
45
64
 
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);
65
+ return null;
66
+ };
67
+
68
+ var isElement = function isElement(obj) {
69
+ return (obj[0] || obj).nodeType;
70
+ };
71
+
72
+ var typeCheckConfig = function typeCheckConfig(componentName, config, configTypes) {
73
+ Object.keys(configTypes).forEach(function (property) {
74
+ var expectedTypes = configTypes[property];
75
+ var value = config[property];
76
+ var valueType = value && isElement(value) ? 'element' : toType(value);
50
77
 
51
- if (typeof Object.getOwnPropertySymbols === 'function') {
52
- ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
53
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
54
- }));
78
+ if (!new RegExp(expectedTypes).test(valueType)) {
79
+ throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
55
80
  }
81
+ });
82
+ };
56
83
 
57
- ownKeys.forEach(function (key) {
58
- _defineProperty(target, key, source[key]);
59
- });
84
+ var getjQuery = function getjQuery() {
85
+ var _window = window,
86
+ jQuery = _window.jQuery;
87
+
88
+ if (jQuery && !document.body.hasAttribute('data-no-jquery')) {
89
+ return jQuery;
60
90
  }
61
91
 
62
- return target;
63
- }
92
+ return null;
93
+ };
94
+
95
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
96
+
97
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
64
98
 
99
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
100
+
101
+ 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); } }
102
+
103
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
65
104
  /**
66
105
  * ------------------------------------------------------------------------
67
106
  * Constants
@@ -69,11 +108,10 @@
69
108
  */
70
109
 
71
110
  var NAME = 'scrollspy';
72
- var VERSION = '4.3.0';
111
+ var VERSION = '5.0.0-alpha1';
73
112
  var DATA_KEY = 'bs.scrollspy';
74
113
  var EVENT_KEY = "." + DATA_KEY;
75
114
  var DATA_API_KEY = '.data-api';
76
- var JQUERY_NO_CONFLICT = $.fn[NAME];
77
115
  var Default = {
78
116
  offset: 10,
79
117
  method: 'auto',
@@ -84,58 +122,46 @@
84
122
  method: 'string',
85
123
  target: '(string|element)'
86
124
  };
87
- var Event = {
88
- ACTIVATE: "activate" + EVENT_KEY,
89
- SCROLL: "scroll" + EVENT_KEY,
90
- LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY
91
- };
92
- var ClassName = {
93
- DROPDOWN_ITEM: 'dropdown-item',
94
- DROPDOWN_MENU: 'dropdown-menu',
95
- ACTIVE: 'active'
96
- };
97
- var Selector = {
98
- DATA_SPY: '[data-spy="scroll"]',
99
- ACTIVE: '.active',
100
- NAV_LIST_GROUP: '.nav, .list-group',
101
- NAV_LINKS: '.nav-link',
102
- NAV_ITEMS: '.nav-item',
103
- LIST_ITEMS: '.list-group-item',
104
- DROPDOWN: '.dropdown',
105
- DROPDOWN_ITEMS: '.dropdown-item',
106
- DROPDOWN_TOGGLE: '.dropdown-toggle'
107
- };
108
- var OffsetMethod = {
109
- OFFSET: 'offset',
110
- POSITION: 'position'
111
- /**
112
- * ------------------------------------------------------------------------
113
- * Class Definition
114
- * ------------------------------------------------------------------------
115
- */
116
-
117
- };
125
+ var EVENT_ACTIVATE = "activate" + EVENT_KEY;
126
+ var EVENT_SCROLL = "scroll" + EVENT_KEY;
127
+ var EVENT_LOAD_DATA_API = "load" + EVENT_KEY + DATA_API_KEY;
128
+ var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';
129
+ var CLASS_NAME_ACTIVE = 'active';
130
+ var SELECTOR_DATA_SPY = '[data-spy="scroll"]';
131
+ var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';
132
+ var SELECTOR_NAV_LINKS = '.nav-link';
133
+ var SELECTOR_NAV_ITEMS = '.nav-item';
134
+ var SELECTOR_LIST_ITEMS = '.list-group-item';
135
+ var SELECTOR_DROPDOWN = '.dropdown';
136
+ var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
137
+ var METHOD_OFFSET = 'offset';
138
+ var METHOD_POSITION = 'position';
139
+ /**
140
+ * ------------------------------------------------------------------------
141
+ * Class Definition
142
+ * ------------------------------------------------------------------------
143
+ */
118
144
 
119
- var ScrollSpy =
120
- /*#__PURE__*/
121
- function () {
145
+ var ScrollSpy = /*#__PURE__*/function () {
122
146
  function ScrollSpy(element, config) {
123
147
  var _this = this;
124
148
 
125
149
  this._element = element;
126
150
  this._scrollElement = element.tagName === 'BODY' ? window : element;
127
151
  this._config = this._getConfig(config);
128
- this._selector = this._config.target + " " + Selector.NAV_LINKS + "," + (this._config.target + " " + Selector.LIST_ITEMS + ",") + (this._config.target + " " + Selector.DROPDOWN_ITEMS);
152
+ this._selector = this._config.target + " " + SELECTOR_NAV_LINKS + "," + (this._config.target + " " + SELECTOR_LIST_ITEMS + ",") + (this._config.target + " ." + CLASS_NAME_DROPDOWN_ITEM);
129
153
  this._offsets = [];
130
154
  this._targets = [];
131
155
  this._activeTarget = null;
132
156
  this._scrollHeight = 0;
133
- $(this._scrollElement).on(Event.SCROLL, function (event) {
157
+ EventHandler.on(this._scrollElement, EVENT_SCROLL, function (event) {
134
158
  return _this._process(event);
135
159
  });
136
160
  this.refresh();
137
161
 
138
162
  this._process();
163
+
164
+ Data.setData(element, DATA_KEY, this);
139
165
  } // Getters
140
166
 
141
167
 
@@ -145,27 +171,26 @@
145
171
  _proto.refresh = function refresh() {
146
172
  var _this2 = this;
147
173
 
148
- var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION;
174
+ var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;
149
175
  var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;
150
- var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0;
176
+ var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;
151
177
  this._offsets = [];
152
178
  this._targets = [];
153
179
  this._scrollHeight = this._getScrollHeight();
154
- var targets = [].slice.call(document.querySelectorAll(this._selector));
180
+ var targets = SelectorEngine.find(this._selector);
155
181
  targets.map(function (element) {
156
182
  var target;
157
- var targetSelector = Util.getSelectorFromElement(element);
183
+ var targetSelector = getSelectorFromElement(element);
158
184
 
159
185
  if (targetSelector) {
160
- target = document.querySelector(targetSelector);
186
+ target = SelectorEngine.findOne(targetSelector);
161
187
  }
162
188
 
163
189
  if (target) {
164
190
  var targetBCR = target.getBoundingClientRect();
165
191
 
166
192
  if (targetBCR.width || targetBCR.height) {
167
- // TODO (fat): remove sketch reliance on jQuery position/offset
168
- return [$(target)[offsetMethod]().top + offsetBase, targetSelector];
193
+ return [Manipulator[offsetMethod](target).top + offsetBase, targetSelector];
169
194
  }
170
195
  }
171
196
 
@@ -182,8 +207,8 @@
182
207
  };
183
208
 
184
209
  _proto.dispose = function dispose() {
185
- $.removeData(this._element, DATA_KEY);
186
- $(this._scrollElement).off(EVENT_KEY);
210
+ Data.removeData(this._element, DATA_KEY);
211
+ EventHandler.off(this._scrollElement, EVENT_KEY);
187
212
  this._element = null;
188
213
  this._scrollElement = null;
189
214
  this._config = null;
@@ -196,20 +221,20 @@
196
221
  ;
197
222
 
198
223
  _proto._getConfig = function _getConfig(config) {
199
- config = _objectSpread({}, Default, typeof config === 'object' && config ? config : {});
224
+ config = _objectSpread(_objectSpread({}, Default), typeof config === 'object' && config ? config : {});
200
225
 
201
- if (typeof config.target !== 'string') {
202
- var id = $(config.target).attr('id');
226
+ if (typeof config.target !== 'string' && isElement(config.target)) {
227
+ var id = config.target.id;
203
228
 
204
229
  if (!id) {
205
- id = Util.getUID(NAME);
206
- $(config.target).attr('id', id);
230
+ id = getUID(NAME);
231
+ config.target.id = id;
207
232
  }
208
233
 
209
234
  config.target = "#" + id;
210
235
  }
211
236
 
212
- Util.typeCheckConfig(NAME, config, DefaultType);
237
+ typeCheckConfig(NAME, config, DefaultType);
213
238
  return config;
214
239
  };
215
240
 
@@ -254,9 +279,7 @@
254
279
  return;
255
280
  }
256
281
 
257
- var offsetLength = this._offsets.length;
258
-
259
- for (var i = offsetLength; i--;) {
282
+ for (var i = this._offsets.length; i--;) {
260
283
  var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);
261
284
 
262
285
  if (isActiveTarget) {
@@ -274,44 +297,51 @@
274
297
  return selector + "[data-target=\"" + target + "\"]," + selector + "[href=\"" + target + "\"]";
275
298
  });
276
299
 
277
- var $link = $([].slice.call(document.querySelectorAll(queries.join(','))));
300
+ var link = SelectorEngine.findOne(queries.join(','));
278
301
 
279
- if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {
280
- $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
281
- $link.addClass(ClassName.ACTIVE);
302
+ if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {
303
+ SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE);
304
+ link.classList.add(CLASS_NAME_ACTIVE);
282
305
  } else {
283
306
  // Set triggered link as active
284
- $link.addClass(ClassName.ACTIVE); // Set triggered links parents as active
285
- // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
286
-
287
- $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_LINKS + ", " + Selector.LIST_ITEMS).addClass(ClassName.ACTIVE); // Handle special case when .nav-link is inside .nav-item
288
-
289
- $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_ITEMS).children(Selector.NAV_LINKS).addClass(ClassName.ACTIVE);
307
+ link.classList.add(CLASS_NAME_ACTIVE);
308
+ SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP).forEach(function (listGroup) {
309
+ // Set triggered links parents as active
310
+ // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
311
+ SelectorEngine.prev(listGroup, SELECTOR_NAV_LINKS + ", " + SELECTOR_LIST_ITEMS).forEach(function (item) {
312
+ return item.classList.add(CLASS_NAME_ACTIVE);
313
+ }); // Handle special case when .nav-link is inside .nav-item
314
+
315
+ SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS).forEach(function (navItem) {
316
+ SelectorEngine.children(navItem, SELECTOR_NAV_LINKS).forEach(function (item) {
317
+ return item.classList.add(CLASS_NAME_ACTIVE);
318
+ });
319
+ });
320
+ });
290
321
  }
291
322
 
292
- $(this._scrollElement).trigger(Event.ACTIVATE, {
323
+ EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {
293
324
  relatedTarget: target
294
325
  });
295
326
  };
296
327
 
297
328
  _proto._clear = function _clear() {
298
- [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {
299
- return node.classList.contains(ClassName.ACTIVE);
329
+ SelectorEngine.find(this._selector).filter(function (node) {
330
+ return node.classList.contains(CLASS_NAME_ACTIVE);
300
331
  }).forEach(function (node) {
301
- return node.classList.remove(ClassName.ACTIVE);
332
+ return node.classList.remove(CLASS_NAME_ACTIVE);
302
333
  });
303
334
  } // Static
304
335
  ;
305
336
 
306
- ScrollSpy._jQueryInterface = function _jQueryInterface(config) {
337
+ ScrollSpy.jQueryInterface = function jQueryInterface(config) {
307
338
  return this.each(function () {
308
- var data = $(this).data(DATA_KEY);
339
+ var data = Data.getData(this, DATA_KEY);
309
340
 
310
341
  var _config = typeof config === 'object' && config;
311
342
 
312
343
  if (!data) {
313
344
  data = new ScrollSpy(this, _config);
314
- $(this).data(DATA_KEY, data);
315
345
  }
316
346
 
317
347
  if (typeof config === 'string') {
@@ -324,6 +354,10 @@
324
354
  });
325
355
  };
326
356
 
357
+ ScrollSpy.getInstance = function getInstance(element) {
358
+ return Data.getData(element, DATA_KEY);
359
+ };
360
+
327
361
  _createClass(ScrollSpy, null, [{
328
362
  key: "VERSION",
329
363
  get: function get() {
@@ -345,30 +379,31 @@
345
379
  */
346
380
 
347
381
 
348
- $(window).on(Event.LOAD_DATA_API, function () {
349
- var scrollSpys = [].slice.call(document.querySelectorAll(Selector.DATA_SPY));
350
- var scrollSpysLength = scrollSpys.length;
351
-
352
- for (var i = scrollSpysLength; i--;) {
353
- var $spy = $(scrollSpys[i]);
354
-
355
- ScrollSpy._jQueryInterface.call($spy, $spy.data());
356
- }
382
+ EventHandler.on(window, EVENT_LOAD_DATA_API, function () {
383
+ SelectorEngine.find(SELECTOR_DATA_SPY).forEach(function (spy) {
384
+ return new ScrollSpy(spy, Manipulator.getDataAttributes(spy));
385
+ });
357
386
  });
387
+ var $ = getjQuery();
358
388
  /**
359
389
  * ------------------------------------------------------------------------
360
390
  * jQuery
361
391
  * ------------------------------------------------------------------------
362
392
  */
363
393
 
364
- $.fn[NAME] = ScrollSpy._jQueryInterface;
365
- $.fn[NAME].Constructor = ScrollSpy;
394
+ /* istanbul ignore if */
366
395
 
367
- $.fn[NAME].noConflict = function () {
368
- $.fn[NAME] = JQUERY_NO_CONFLICT;
369
- return ScrollSpy._jQueryInterface;
370
- };
396
+ if ($) {
397
+ var JQUERY_NO_CONFLICT = $.fn[NAME];
398
+ $.fn[NAME] = ScrollSpy.jQueryInterface;
399
+ $.fn[NAME].Constructor = ScrollSpy;
400
+
401
+ $.fn[NAME].noConflict = function () {
402
+ $.fn[NAME] = JQUERY_NO_CONFLICT;
403
+ return ScrollSpy.jQueryInterface;
404
+ };
405
+ }
371
406
 
372
407
  return ScrollSpy;
373
408
 
374
- }));
409
+ })));