bootstrap 4.5.2 → 5.0.0.beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -1
  3. data/README.md +5 -2
  4. data/assets/javascripts/bootstrap-sprockets.js +11 -8
  5. data/assets/javascripts/bootstrap.js +2170 -1572
  6. data/assets/javascripts/bootstrap.min.js +2 -2
  7. data/assets/javascripts/bootstrap/alert.js +195 -66
  8. data/assets/javascripts/bootstrap/button.js +120 -136
  9. data/assets/javascripts/bootstrap/carousel.js +390 -184
  10. data/assets/javascripts/bootstrap/collapse.js +364 -133
  11. data/assets/javascripts/bootstrap/dom/data.js +81 -0
  12. data/assets/javascripts/bootstrap/dom/event-handler.js +309 -0
  13. data/assets/javascripts/bootstrap/dom/manipulator.js +86 -0
  14. data/assets/javascripts/bootstrap/dom/selector-engine.js +98 -0
  15. data/assets/javascripts/bootstrap/dropdown.js +357 -232
  16. data/assets/javascripts/bootstrap/modal.js +406 -211
  17. data/assets/javascripts/bootstrap/popover.js +82 -50
  18. data/assets/javascripts/bootstrap/scrollspy.js +226 -80
  19. data/assets/javascripts/bootstrap/tab.js +215 -77
  20. data/assets/javascripts/bootstrap/toast.js +239 -79
  21. data/assets/javascripts/bootstrap/tooltip.js +529 -258
  22. data/assets/stylesheets/_bootstrap-grid.scss +51 -15
  23. data/assets/stylesheets/_bootstrap-reboot.scss +4 -1
  24. data/assets/stylesheets/_bootstrap.scss +15 -8
  25. data/assets/stylesheets/bootstrap/_accordion.scss +125 -0
  26. data/assets/stylesheets/bootstrap/_alert.scss +15 -9
  27. data/assets/stylesheets/bootstrap/_badge.scss +2 -27
  28. data/assets/stylesheets/bootstrap/_breadcrumb.scss +4 -20
  29. data/assets/stylesheets/bootstrap/_button-group.scss +21 -45
  30. data/assets/stylesheets/bootstrap/_buttons.scss +27 -60
  31. data/assets/stylesheets/bootstrap/_card.scss +25 -96
  32. data/assets/stylesheets/bootstrap/_carousel.scss +54 -28
  33. data/assets/stylesheets/bootstrap/_close.scss +30 -30
  34. data/assets/stylesheets/bootstrap/_containers.scss +41 -0
  35. data/assets/stylesheets/bootstrap/_dropdown.scss +74 -31
  36. data/assets/stylesheets/bootstrap/_forms.scss +9 -347
  37. data/assets/stylesheets/bootstrap/_functions.scss +87 -23
  38. data/assets/stylesheets/bootstrap/_grid.scss +3 -54
  39. data/assets/stylesheets/bootstrap/_helpers.scss +7 -0
  40. data/assets/stylesheets/bootstrap/_list-group.scss +18 -9
  41. data/assets/stylesheets/bootstrap/_mixins.scss +7 -13
  42. data/assets/stylesheets/bootstrap/_modal.scss +41 -46
  43. data/assets/stylesheets/bootstrap/_nav.scss +12 -8
  44. data/assets/stylesheets/bootstrap/_navbar.scss +43 -74
  45. data/assets/stylesheets/bootstrap/_pagination.scss +10 -20
  46. data/assets/stylesheets/bootstrap/_popover.scss +23 -20
  47. data/assets/stylesheets/bootstrap/_progress.scss +3 -5
  48. data/assets/stylesheets/bootstrap/_reboot.scss +328 -173
  49. data/assets/stylesheets/bootstrap/_root.scss +5 -9
  50. data/assets/stylesheets/bootstrap/_spinners.scss +14 -5
  51. data/assets/stylesheets/bootstrap/_tables.scss +79 -114
  52. data/assets/stylesheets/bootstrap/_toasts.scss +19 -15
  53. data/assets/stylesheets/bootstrap/_tooltip.scss +17 -17
  54. data/assets/stylesheets/bootstrap/_transitions.scss +0 -1
  55. data/assets/stylesheets/bootstrap/_type.scss +38 -59
  56. data/assets/stylesheets/bootstrap/_utilities.scss +560 -18
  57. data/assets/stylesheets/bootstrap/_variables.scss +652 -459
  58. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +18 -0
  59. data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +61 -0
  60. data/assets/stylesheets/bootstrap/forms/_form-check.scss +151 -0
  61. data/assets/stylesheets/bootstrap/forms/_form-control.scss +223 -0
  62. data/assets/stylesheets/bootstrap/forms/_form-range.scss +91 -0
  63. data/assets/stylesheets/bootstrap/forms/_form-select.scss +68 -0
  64. data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
  65. data/assets/stylesheets/bootstrap/forms/_input-group.scss +121 -0
  66. data/assets/stylesheets/bootstrap/forms/_labels.scss +36 -0
  67. data/assets/stylesheets/bootstrap/forms/_validation.scss +12 -0
  68. data/assets/stylesheets/bootstrap/{utilities → helpers}/_clearfix.scss +0 -0
  69. data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +12 -0
  70. data/assets/stylesheets/bootstrap/helpers/_position.scss +30 -0
  71. data/assets/stylesheets/bootstrap/helpers/_ratio.scss +26 -0
  72. data/assets/stylesheets/bootstrap/helpers/_stretched-link.scss +15 -0
  73. data/assets/stylesheets/bootstrap/helpers/_text-truncation.scss +7 -0
  74. data/assets/stylesheets/bootstrap/helpers/_visually-hidden.scss +8 -0
  75. data/assets/stylesheets/bootstrap/mixins/_alert.scss +1 -5
  76. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +9 -9
  77. data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +7 -9
  78. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +14 -10
  79. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +65 -47
  80. data/assets/stylesheets/bootstrap/mixins/_caret.scss +8 -8
  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 +17 -78
  84. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +9 -11
  85. data/assets/stylesheets/bootstrap/mixins/_grid.scss +84 -33
  86. data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -21
  87. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +3 -2
  88. data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
  89. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +15 -8
  90. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +2 -2
  91. data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +21 -0
  92. data/assets/stylesheets/bootstrap/mixins/_transition.scss +2 -2
  93. data/assets/stylesheets/bootstrap/mixins/_utilities.scss +68 -0
  94. data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +28 -0
  95. data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
  96. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +234 -126
  97. data/lib/bootstrap/version.rb +2 -2
  98. data/tasks/updater/js.rb +6 -4
  99. metadata +33 -41
  100. data/assets/javascripts/bootstrap/util.js +0 -192
  101. data/assets/stylesheets/bootstrap/_code.scss +0 -48
  102. data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -523
  103. data/assets/stylesheets/bootstrap/_input-group.scss +0 -192
  104. data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
  105. data/assets/stylesheets/bootstrap/_media.scss +0 -8
  106. data/assets/stylesheets/bootstrap/_print.scss +0 -141
  107. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -23
  108. data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
  109. data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
  110. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -80
  111. data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
  112. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -11
  113. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +0 -34
  114. data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
  115. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
  116. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -17
  117. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
  118. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
  119. data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
  120. data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
  121. data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
  122. data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
  123. data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
  124. data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
  125. data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
  126. data/assets/stylesheets/bootstrap/utilities/_interactions.scss +0 -5
  127. data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
  128. data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
  129. data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
  130. data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
  131. data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
  132. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
  133. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
  134. data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -72
  135. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
@@ -1,16 +1,47 @@
1
1
  /*!
2
- * Bootstrap popover.js v4.5.2 (https://getbootstrap.com/)
2
+ * Bootstrap popover.js v5.0.0-beta1 (https://getbootstrap.com/)
3
3
  * Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
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 = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Popover = factory(global.jQuery, global.Tooltip));
10
- }(this, (function ($, Tooltip) { 'use strict';
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', './dom/selector-engine', './tooltip'], factory) :
9
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Popover = factory(global.Data, global.SelectorEngine, global.Tooltip));
10
+ }(this, (function (Data, SelectorEngine, Tooltip) { 'use strict';
11
11
 
12
- $ = $ && Object.prototype.hasOwnProperty.call($, 'default') ? $['default'] : $;
13
- Tooltip = Tooltip && Object.prototype.hasOwnProperty.call(Tooltip, 'default') ? Tooltip['default'] : Tooltip;
12
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
+
14
+ var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data);
15
+ var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
16
+ var Tooltip__default = /*#__PURE__*/_interopDefaultLegacy(Tooltip);
17
+
18
+ /**
19
+ * --------------------------------------------------------------------------
20
+ * Bootstrap (v5.0.0-beta1): util/index.js
21
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
22
+ * --------------------------------------------------------------------------
23
+ */
24
+
25
+ var getjQuery = function getjQuery() {
26
+ var _window = window,
27
+ jQuery = _window.jQuery;
28
+
29
+ if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
30
+ return jQuery;
31
+ }
32
+
33
+ return null;
34
+ };
35
+
36
+ var onDOMContentLoaded = function onDOMContentLoaded(callback) {
37
+ if (document.readyState === 'loading') {
38
+ document.addEventListener('DOMContentLoaded', callback);
39
+ } else {
40
+ callback();
41
+ }
42
+ };
43
+
44
+ var isRTL = document.documentElement.dir === 'rtl';
14
45
 
15
46
  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); } }
16
47
 
@@ -26,28 +57,22 @@
26
57
  */
27
58
 
28
59
  var NAME = 'popover';
29
- var VERSION = '4.5.2';
30
60
  var DATA_KEY = 'bs.popover';
31
61
  var EVENT_KEY = "." + DATA_KEY;
32
- var JQUERY_NO_CONFLICT = $.fn[NAME];
33
62
  var CLASS_PREFIX = 'bs-popover';
34
63
  var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
35
64
 
36
- var Default = _extends({}, Tooltip.Default, {
65
+ var Default = _extends({}, Tooltip__default['default'].Default, {
37
66
  placement: 'right',
38
67
  trigger: 'click',
39
68
  content: '',
40
- template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>'
69
+ template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div>' + '</div>'
41
70
  });
42
71
 
43
- var DefaultType = _extends({}, Tooltip.DefaultType, {
72
+ var DefaultType = _extends({}, Tooltip__default['default'].DefaultType, {
44
73
  content: '(string|element|function)'
45
74
  });
46
75
 
47
- var CLASS_NAME_FADE = 'fade';
48
- var CLASS_NAME_SHOW = 'show';
49
- var SELECTOR_TITLE = '.popover-header';
50
- var SELECTOR_CONTENT = '.popover-body';
51
76
  var Event = {
52
77
  HIDE: "hide" + EVENT_KEY,
53
78
  HIDDEN: "hidden" + EVENT_KEY,
@@ -60,6 +85,10 @@
60
85
  MOUSEENTER: "mouseenter" + EVENT_KEY,
61
86
  MOUSELEAVE: "mouseleave" + EVENT_KEY
62
87
  };
88
+ var CLASS_NAME_FADE = 'fade';
89
+ var CLASS_NAME_SHOW = 'show';
90
+ var SELECTOR_TITLE = '.popover-header';
91
+ var SELECTOR_CONTENT = '.popover-body';
63
92
  /**
64
93
  * ------------------------------------------------------------------------
65
94
  * Class Definition
@@ -80,48 +109,47 @@
80
109
  return this.getTitle() || this._getContent();
81
110
  };
82
111
 
83
- _proto.addAttachmentClass = function addAttachmentClass(attachment) {
84
- $(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
85
- };
86
-
87
- _proto.getTipElement = function getTipElement() {
88
- this.tip = this.tip || $(this.config.template)[0];
89
- return this.tip;
90
- };
91
-
92
112
  _proto.setContent = function setContent() {
93
- var $tip = $(this.getTipElement()); // We use append for html objects to maintain js events
113
+ var tip = this.getTipElement(); // we use append for html objects to maintain js events
94
114
 
95
- this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle());
115
+ this.setElementContent(SelectorEngine__default['default'].findOne(SELECTOR_TITLE, tip), this.getTitle());
96
116
 
97
117
  var content = this._getContent();
98
118
 
99
119
  if (typeof content === 'function') {
100
- content = content.call(this.element);
120
+ content = content.call(this._element);
101
121
  }
102
122
 
103
- this.setElementContent($tip.find(SELECTOR_CONTENT), content);
104
- $tip.removeClass(CLASS_NAME_FADE + " " + CLASS_NAME_SHOW);
123
+ this.setElementContent(SelectorEngine__default['default'].findOne(SELECTOR_CONTENT, tip), content);
124
+ tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW);
105
125
  } // Private
106
126
  ;
107
127
 
128
+ _proto._addAttachmentClass = function _addAttachmentClass(attachment) {
129
+ this.getTipElement().classList.add(CLASS_PREFIX + "-" + this.updateAttachment(attachment));
130
+ };
131
+
108
132
  _proto._getContent = function _getContent() {
109
- return this.element.getAttribute('data-content') || this.config.content;
133
+ return this._element.getAttribute('data-bs-content') || this.config.content;
110
134
  };
111
135
 
112
136
  _proto._cleanTipClass = function _cleanTipClass() {
113
- var $tip = $(this.getTipElement());
114
- var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
137
+ var tip = this.getTipElement();
138
+ var tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX);
115
139
 
116
140
  if (tabClass !== null && tabClass.length > 0) {
117
- $tip.removeClass(tabClass.join(''));
141
+ tabClass.map(function (token) {
142
+ return token.trim();
143
+ }).forEach(function (tClass) {
144
+ return tip.classList.remove(tClass);
145
+ });
118
146
  }
119
147
  } // Static
120
148
  ;
121
149
 
122
- Popover._jQueryInterface = function _jQueryInterface(config) {
150
+ Popover.jQueryInterface = function jQueryInterface(config) {
123
151
  return this.each(function () {
124
- var data = $(this).data(DATA_KEY);
152
+ var data = Data__default['default'].getData(this, DATA_KEY);
125
153
 
126
154
  var _config = typeof config === 'object' ? config : null;
127
155
 
@@ -131,7 +159,7 @@
131
159
 
132
160
  if (!data) {
133
161
  data = new Popover(this, _config);
134
- $(this).data(DATA_KEY, data);
162
+ Data__default['default'].setData(this, DATA_KEY, data);
135
163
  }
136
164
 
137
165
  if (typeof config === 'string') {
@@ -145,13 +173,8 @@
145
173
  };
146
174
 
147
175
  _createClass(Popover, null, [{
148
- key: "VERSION",
149
- // Getters
150
- get: function get() {
151
- return VERSION;
152
- }
153
- }, {
154
176
  key: "Default",
177
+ // Getters
155
178
  get: function get() {
156
179
  return Default;
157
180
  }
@@ -183,21 +206,30 @@
183
206
  }]);
184
207
 
185
208
  return Popover;
186
- }(Tooltip);
209
+ }(Tooltip__default['default']);
187
210
  /**
188
211
  * ------------------------------------------------------------------------
189
212
  * jQuery
190
213
  * ------------------------------------------------------------------------
214
+ * add .Popover to jQuery only if jQuery is present
191
215
  */
192
216
 
193
217
 
194
- $.fn[NAME] = Popover._jQueryInterface;
195
- $.fn[NAME].Constructor = Popover;
218
+ onDOMContentLoaded(function () {
219
+ var $ = getjQuery();
220
+ /* istanbul ignore if */
196
221
 
197
- $.fn[NAME].noConflict = function () {
198
- $.fn[NAME] = JQUERY_NO_CONFLICT;
199
- return Popover._jQueryInterface;
200
- };
222
+ if ($) {
223
+ var JQUERY_NO_CONFLICT = $.fn[NAME];
224
+ $.fn[NAME] = Popover.jQueryInterface;
225
+ $.fn[NAME].Constructor = Popover;
226
+
227
+ $.fn[NAME].noConflict = function () {
228
+ $.fn[NAME] = JQUERY_NO_CONFLICT;
229
+ return Popover.jQueryInterface;
230
+ };
231
+ }
232
+ });
201
233
 
202
234
  return Popover;
203
235
 
@@ -1,18 +1,108 @@
1
1
  /*!
2
- * Bootstrap scrollspy.js v4.5.2 (https://getbootstrap.com/)
2
+ * Bootstrap scrollspy.js v5.0.0-beta1 (https://getbootstrap.com/)
3
3
  * Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
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 = typeof globalThis !== 'undefined' ? globalThis : global || self, global.ScrollSpy = factory(global.jQuery, global.Util));
10
- }(this, (function ($, Util) { 'use strict';
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', './dom/event-handler', './dom/manipulator', './dom/selector-engine'], factory) :
9
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.ScrollSpy = factory(global.Data, global.EventHandler, global.Manipulator, global.SelectorEngine));
10
+ }(this, (function (Data, EventHandler, Manipulator, SelectorEngine) { 'use strict';
11
11
 
12
- $ = $ && Object.prototype.hasOwnProperty.call($, 'default') ? $['default'] : $;
13
- Util = Util && Object.prototype.hasOwnProperty.call(Util, 'default') ? Util['default'] : Util;
12
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
14
13
 
15
- 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); }
14
+ var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data);
15
+ var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
16
+ var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);
17
+ var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
18
+
19
+ /**
20
+ * --------------------------------------------------------------------------
21
+ * Bootstrap (v5.0.0-beta1): util/index.js
22
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
23
+ * --------------------------------------------------------------------------
24
+ */
25
+ var MAX_UID = 1000000;
26
+
27
+ var toType = function toType(obj) {
28
+ if (obj === null || obj === undefined) {
29
+ return "" + obj;
30
+ }
31
+
32
+ return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
33
+ };
34
+ /**
35
+ * --------------------------------------------------------------------------
36
+ * Public Util Api
37
+ * --------------------------------------------------------------------------
38
+ */
39
+
40
+
41
+ var getUID = function getUID(prefix) {
42
+ do {
43
+ prefix += Math.floor(Math.random() * MAX_UID);
44
+ } while (document.getElementById(prefix));
45
+
46
+ return prefix;
47
+ };
48
+
49
+ var getSelector = function getSelector(element) {
50
+ var selector = element.getAttribute('data-bs-target');
51
+
52
+ if (!selector || selector === '#') {
53
+ var hrefAttr = element.getAttribute('href');
54
+ selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
55
+ }
56
+
57
+ return selector;
58
+ };
59
+
60
+ var getSelectorFromElement = function getSelectorFromElement(element) {
61
+ var selector = getSelector(element);
62
+
63
+ if (selector) {
64
+ return document.querySelector(selector) ? selector : null;
65
+ }
66
+
67
+ return null;
68
+ };
69
+
70
+ var isElement = function isElement(obj) {
71
+ return (obj[0] || obj).nodeType;
72
+ };
73
+
74
+ var typeCheckConfig = function typeCheckConfig(componentName, config, configTypes) {
75
+ Object.keys(configTypes).forEach(function (property) {
76
+ var expectedTypes = configTypes[property];
77
+ var value = config[property];
78
+ var valueType = value && isElement(value) ? 'element' : toType(value);
79
+
80
+ if (!new RegExp(expectedTypes).test(valueType)) {
81
+ throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
82
+ }
83
+ });
84
+ };
85
+
86
+ var getjQuery = function getjQuery() {
87
+ var _window = window,
88
+ jQuery = _window.jQuery;
89
+
90
+ if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
91
+ return jQuery;
92
+ }
93
+
94
+ return null;
95
+ };
96
+
97
+ var onDOMContentLoaded = function onDOMContentLoaded(callback) {
98
+ if (document.readyState === 'loading') {
99
+ document.addEventListener('DOMContentLoaded', callback);
100
+ } else {
101
+ callback();
102
+ }
103
+ };
104
+
105
+ var isRTL = document.documentElement.dir === 'rtl';
16
106
 
17
107
  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); } }
18
108
 
@@ -23,12 +113,58 @@
23
113
  * ------------------------------------------------------------------------
24
114
  */
25
115
 
116
+ var VERSION = '5.0.0-beta1';
117
+
118
+ var BaseComponent = /*#__PURE__*/function () {
119
+ function BaseComponent(element) {
120
+ if (!element) {
121
+ return;
122
+ }
123
+
124
+ this._element = element;
125
+ Data__default['default'].setData(element, this.constructor.DATA_KEY, this);
126
+ }
127
+
128
+ var _proto = BaseComponent.prototype;
129
+
130
+ _proto.dispose = function dispose() {
131
+ Data__default['default'].removeData(this._element, this.constructor.DATA_KEY);
132
+ this._element = null;
133
+ }
134
+ /** Static */
135
+ ;
136
+
137
+ BaseComponent.getInstance = function getInstance(element) {
138
+ return Data__default['default'].getData(element, this.DATA_KEY);
139
+ };
140
+
141
+ _createClass(BaseComponent, null, [{
142
+ key: "VERSION",
143
+ get: function get() {
144
+ return VERSION;
145
+ }
146
+ }]);
147
+
148
+ return BaseComponent;
149
+ }();
150
+
151
+ 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); }
152
+
153
+ function _defineProperties$1(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); } }
154
+
155
+ function _createClass$1(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties$1(Constructor.prototype, protoProps); if (staticProps) _defineProperties$1(Constructor, staticProps); return Constructor; }
156
+
157
+ function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
158
+ /**
159
+ * ------------------------------------------------------------------------
160
+ * Constants
161
+ * ------------------------------------------------------------------------
162
+ */
163
+
26
164
  var NAME = 'scrollspy';
27
- var VERSION = '4.5.2';
28
165
  var DATA_KEY = 'bs.scrollspy';
29
166
  var EVENT_KEY = "." + DATA_KEY;
30
167
  var DATA_API_KEY = '.data-api';
31
- var JQUERY_NO_CONFLICT = $.fn[NAME];
32
168
  var Default = {
33
169
  offset: 10,
34
170
  method: 'auto',
@@ -44,13 +180,12 @@
44
180
  var EVENT_LOAD_DATA_API = "load" + EVENT_KEY + DATA_API_KEY;
45
181
  var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';
46
182
  var CLASS_NAME_ACTIVE = 'active';
47
- var SELECTOR_DATA_SPY = '[data-spy="scroll"]';
183
+ var SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]';
48
184
  var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';
49
185
  var SELECTOR_NAV_LINKS = '.nav-link';
50
186
  var SELECTOR_NAV_ITEMS = '.nav-item';
51
187
  var SELECTOR_LIST_ITEMS = '.list-group-item';
52
188
  var SELECTOR_DROPDOWN = '.dropdown';
53
- var SELECTOR_DROPDOWN_ITEMS = '.dropdown-item';
54
189
  var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
55
190
  var METHOD_OFFSET = 'offset';
56
191
  var METHOD_POSITION = 'position';
@@ -60,24 +195,29 @@
60
195
  * ------------------------------------------------------------------------
61
196
  */
62
197
 
63
- var ScrollSpy = /*#__PURE__*/function () {
64
- function ScrollSpy(element, config) {
65
- var _this = this;
198
+ var ScrollSpy = /*#__PURE__*/function (_BaseComponent) {
199
+ _inheritsLoose(ScrollSpy, _BaseComponent);
66
200
 
67
- this._element = element;
68
- this._scrollElement = element.tagName === 'BODY' ? window : element;
69
- this._config = this._getConfig(config);
70
- this._selector = this._config.target + " " + SELECTOR_NAV_LINKS + "," + (this._config.target + " " + SELECTOR_LIST_ITEMS + ",") + (this._config.target + " " + SELECTOR_DROPDOWN_ITEMS);
71
- this._offsets = [];
72
- this._targets = [];
73
- this._activeTarget = null;
74
- this._scrollHeight = 0;
75
- $(this._scrollElement).on(EVENT_SCROLL, function (event) {
201
+ function ScrollSpy(element, config) {
202
+ var _this;
203
+
204
+ _this = _BaseComponent.call(this, element) || this;
205
+ _this._scrollElement = element.tagName === 'BODY' ? window : element;
206
+ _this._config = _this._getConfig(config);
207
+ _this._selector = _this._config.target + " " + SELECTOR_NAV_LINKS + ", " + _this._config.target + " " + SELECTOR_LIST_ITEMS + ", " + _this._config.target + " ." + CLASS_NAME_DROPDOWN_ITEM;
208
+ _this._offsets = [];
209
+ _this._targets = [];
210
+ _this._activeTarget = null;
211
+ _this._scrollHeight = 0;
212
+ EventHandler__default['default'].on(_this._scrollElement, EVENT_SCROLL, function (event) {
76
213
  return _this._process(event);
77
214
  });
78
- this.refresh();
79
215
 
80
- this._process();
216
+ _this.refresh();
217
+
218
+ _this._process();
219
+
220
+ return _this;
81
221
  } // Getters
82
222
 
83
223
 
@@ -93,21 +233,16 @@
93
233
  this._offsets = [];
94
234
  this._targets = [];
95
235
  this._scrollHeight = this._getScrollHeight();
96
- var targets = [].slice.call(document.querySelectorAll(this._selector));
236
+ var targets = SelectorEngine__default['default'].find(this._selector);
97
237
  targets.map(function (element) {
98
- var target;
99
- var targetSelector = Util.getSelectorFromElement(element);
100
-
101
- if (targetSelector) {
102
- target = document.querySelector(targetSelector);
103
- }
238
+ var targetSelector = getSelectorFromElement(element);
239
+ var target = targetSelector ? SelectorEngine__default['default'].findOne(targetSelector) : null;
104
240
 
105
241
  if (target) {
106
242
  var targetBCR = target.getBoundingClientRect();
107
243
 
108
244
  if (targetBCR.width || targetBCR.height) {
109
- // TODO (fat): remove sketch reliance on jQuery position/offset
110
- return [$(target)[offsetMethod]().top + offsetBase, targetSelector];
245
+ return [Manipulator__default['default'][offsetMethod](target).top + offsetBase, targetSelector];
111
246
  }
112
247
  }
113
248
 
@@ -124,9 +259,9 @@
124
259
  };
125
260
 
126
261
  _proto.dispose = function dispose() {
127
- $.removeData(this._element, DATA_KEY);
128
- $(this._scrollElement).off(EVENT_KEY);
129
- this._element = null;
262
+ _BaseComponent.prototype.dispose.call(this);
263
+
264
+ EventHandler__default['default'].off(this._scrollElement, EVENT_KEY);
130
265
  this._scrollElement = null;
131
266
  this._config = null;
132
267
  this._selector = null;
@@ -140,18 +275,18 @@
140
275
  _proto._getConfig = function _getConfig(config) {
141
276
  config = _extends({}, Default, typeof config === 'object' && config ? config : {});
142
277
 
143
- if (typeof config.target !== 'string' && Util.isElement(config.target)) {
144
- var id = $(config.target).attr('id');
278
+ if (typeof config.target !== 'string' && isElement(config.target)) {
279
+ var id = config.target.id;
145
280
 
146
281
  if (!id) {
147
- id = Util.getUID(NAME);
148
- $(config.target).attr('id', id);
282
+ id = getUID(NAME);
283
+ config.target.id = id;
149
284
  }
150
285
 
151
286
  config.target = "#" + id;
152
287
  }
153
288
 
154
- Util.typeCheckConfig(NAME, config, DefaultType);
289
+ typeCheckConfig(NAME, config, DefaultType);
155
290
  return config;
156
291
  };
157
292
 
@@ -211,31 +346,39 @@
211
346
  this._clear();
212
347
 
213
348
  var queries = this._selector.split(',').map(function (selector) {
214
- return selector + "[data-target=\"" + target + "\"]," + selector + "[href=\"" + target + "\"]";
349
+ return selector + "[data-bs-target=\"" + target + "\"]," + selector + "[href=\"" + target + "\"]";
215
350
  });
216
351
 
217
- var $link = $([].slice.call(document.querySelectorAll(queries.join(','))));
352
+ var link = SelectorEngine__default['default'].findOne(queries.join(','));
218
353
 
219
- if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {
220
- $link.closest(SELECTOR_DROPDOWN).find(SELECTOR_DROPDOWN_TOGGLE).addClass(CLASS_NAME_ACTIVE);
221
- $link.addClass(CLASS_NAME_ACTIVE);
354
+ if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {
355
+ SelectorEngine__default['default'].findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE);
356
+ link.classList.add(CLASS_NAME_ACTIVE);
222
357
  } else {
223
358
  // Set triggered link as active
224
- $link.addClass(CLASS_NAME_ACTIVE); // Set triggered links parents as active
225
- // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
226
-
227
- $link.parents(SELECTOR_NAV_LIST_GROUP).prev(SELECTOR_NAV_LINKS + ", " + SELECTOR_LIST_ITEMS).addClass(CLASS_NAME_ACTIVE); // Handle special case when .nav-link is inside .nav-item
228
-
229
- $link.parents(SELECTOR_NAV_LIST_GROUP).prev(SELECTOR_NAV_ITEMS).children(SELECTOR_NAV_LINKS).addClass(CLASS_NAME_ACTIVE);
359
+ link.classList.add(CLASS_NAME_ACTIVE);
360
+ SelectorEngine__default['default'].parents(link, SELECTOR_NAV_LIST_GROUP).forEach(function (listGroup) {
361
+ // Set triggered links parents as active
362
+ // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
363
+ SelectorEngine__default['default'].prev(listGroup, SELECTOR_NAV_LINKS + ", " + SELECTOR_LIST_ITEMS).forEach(function (item) {
364
+ return item.classList.add(CLASS_NAME_ACTIVE);
365
+ }); // Handle special case when .nav-link is inside .nav-item
366
+
367
+ SelectorEngine__default['default'].prev(listGroup, SELECTOR_NAV_ITEMS).forEach(function (navItem) {
368
+ SelectorEngine__default['default'].children(navItem, SELECTOR_NAV_LINKS).forEach(function (item) {
369
+ return item.classList.add(CLASS_NAME_ACTIVE);
370
+ });
371
+ });
372
+ });
230
373
  }
231
374
 
232
- $(this._scrollElement).trigger(EVENT_ACTIVATE, {
375
+ EventHandler__default['default'].trigger(this._scrollElement, EVENT_ACTIVATE, {
233
376
  relatedTarget: target
234
377
  });
235
378
  };
236
379
 
237
380
  _proto._clear = function _clear() {
238
- [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {
381
+ SelectorEngine__default['default'].find(this._selector).filter(function (node) {
239
382
  return node.classList.contains(CLASS_NAME_ACTIVE);
240
383
  }).forEach(function (node) {
241
384
  return node.classList.remove(CLASS_NAME_ACTIVE);
@@ -243,15 +386,14 @@
243
386
  } // Static
244
387
  ;
245
388
 
246
- ScrollSpy._jQueryInterface = function _jQueryInterface(config) {
389
+ ScrollSpy.jQueryInterface = function jQueryInterface(config) {
247
390
  return this.each(function () {
248
- var data = $(this).data(DATA_KEY);
391
+ var data = Data__default['default'].getData(this, DATA_KEY);
249
392
 
250
393
  var _config = typeof config === 'object' && config;
251
394
 
252
395
  if (!data) {
253
396
  data = new ScrollSpy(this, _config);
254
- $(this).data(DATA_KEY, data);
255
397
  }
256
398
 
257
399
  if (typeof config === 'string') {
@@ -264,20 +406,20 @@
264
406
  });
265
407
  };
266
408
 
267
- _createClass(ScrollSpy, null, [{
268
- key: "VERSION",
409
+ _createClass$1(ScrollSpy, null, [{
410
+ key: "Default",
269
411
  get: function get() {
270
- return VERSION;
412
+ return Default;
271
413
  }
272
414
  }, {
273
- key: "Default",
415
+ key: "DATA_KEY",
274
416
  get: function get() {
275
- return Default;
417
+ return DATA_KEY;
276
418
  }
277
419
  }]);
278
420
 
279
421
  return ScrollSpy;
280
- }();
422
+ }(BaseComponent);
281
423
  /**
282
424
  * ------------------------------------------------------------------------
283
425
  * Data Api implementation
@@ -285,29 +427,33 @@
285
427
  */
286
428
 
287
429
 
288
- $(window).on(EVENT_LOAD_DATA_API, function () {
289
- var scrollSpys = [].slice.call(document.querySelectorAll(SELECTOR_DATA_SPY));
290
- var scrollSpysLength = scrollSpys.length;
291
-
292
- for (var i = scrollSpysLength; i--;) {
293
- var $spy = $(scrollSpys[i]);
294
-
295
- ScrollSpy._jQueryInterface.call($spy, $spy.data());
296
- }
430
+ EventHandler__default['default'].on(window, EVENT_LOAD_DATA_API, function () {
431
+ SelectorEngine__default['default'].find(SELECTOR_DATA_SPY).forEach(function (spy) {
432
+ return new ScrollSpy(spy, Manipulator__default['default'].getDataAttributes(spy));
433
+ });
297
434
  });
298
435
  /**
299
436
  * ------------------------------------------------------------------------
300
437
  * jQuery
301
438
  * ------------------------------------------------------------------------
439
+ * add .ScrollSpy to jQuery only if jQuery is present
302
440
  */
303
441
 
304
- $.fn[NAME] = ScrollSpy._jQueryInterface;
305
- $.fn[NAME].Constructor = ScrollSpy;
442
+ onDOMContentLoaded(function () {
443
+ var $ = getjQuery();
444
+ /* istanbul ignore if */
306
445
 
307
- $.fn[NAME].noConflict = function () {
308
- $.fn[NAME] = JQUERY_NO_CONFLICT;
309
- return ScrollSpy._jQueryInterface;
310
- };
446
+ if ($) {
447
+ var JQUERY_NO_CONFLICT = $.fn[NAME];
448
+ $.fn[NAME] = ScrollSpy.jQueryInterface;
449
+ $.fn[NAME].Constructor = ScrollSpy;
450
+
451
+ $.fn[NAME].noConflict = function () {
452
+ $.fn[NAME] = JQUERY_NO_CONFLICT;
453
+ return ScrollSpy.jQueryInterface;
454
+ };
455
+ }
456
+ });
311
457
 
312
458
  return ScrollSpy;
313
459