bootstrap 4.6.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 (132) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/assets/javascripts/bootstrap-sprockets.js +12 -8
  4. data/assets/javascripts/bootstrap.js +1889 -1255
  5. data/assets/javascripts/bootstrap.min.js +3 -3
  6. data/assets/javascripts/bootstrap/alert.js +136 -66
  7. data/assets/javascripts/bootstrap/button.js +59 -147
  8. data/assets/javascripts/bootstrap/carousel.js +276 -180
  9. data/assets/javascripts/bootstrap/collapse.js +284 -136
  10. data/assets/javascripts/bootstrap/dom/data.js +81 -0
  11. data/assets/javascripts/bootstrap/dom/event-handler.js +311 -0
  12. data/assets/javascripts/bootstrap/dom/manipulator.js +100 -0
  13. data/assets/javascripts/bootstrap/dom/polyfill.js +110 -0
  14. data/assets/javascripts/bootstrap/dom/selector-engine.js +98 -0
  15. data/assets/javascripts/bootstrap/dropdown.js +238 -195
  16. data/assets/javascripts/bootstrap/modal.js +321 -223
  17. data/assets/javascripts/bootstrap/popover.js +75 -79
  18. data/assets/javascripts/bootstrap/scrollspy.js +150 -86
  19. data/assets/javascripts/bootstrap/tab.js +154 -82
  20. data/assets/javascripts/bootstrap/toast.js +162 -95
  21. data/assets/javascripts/bootstrap/tooltip.js +337 -191
  22. data/assets/stylesheets/_bootstrap-grid.scss +53 -18
  23. data/assets/stylesheets/_bootstrap-reboot.scss +6 -3
  24. data/assets/stylesheets/_bootstrap.scss +16 -10
  25. data/assets/stylesheets/bootstrap/_alert.scss +3 -4
  26. data/assets/stylesheets/bootstrap/_badge.scss +2 -27
  27. data/assets/stylesheets/bootstrap/_breadcrumb.scss +5 -17
  28. data/assets/stylesheets/bootstrap/_button-group.scss +16 -38
  29. data/assets/stylesheets/bootstrap/_buttons.scss +27 -45
  30. data/assets/stylesheets/bootstrap/_card.scss +22 -68
  31. data/assets/stylesheets/bootstrap/_carousel.scss +13 -15
  32. data/assets/stylesheets/bootstrap/_close.scss +9 -13
  33. data/assets/stylesheets/bootstrap/_containers.scss +41 -0
  34. data/assets/stylesheets/bootstrap/_dropdown.scss +12 -9
  35. data/assets/stylesheets/bootstrap/_forms.scss +9 -347
  36. data/assets/stylesheets/bootstrap/_functions.scss +82 -23
  37. data/assets/stylesheets/bootstrap/_grid.scss +3 -54
  38. data/assets/stylesheets/bootstrap/_helpers.scss +7 -0
  39. data/assets/stylesheets/bootstrap/_list-group.scss +7 -4
  40. data/assets/stylesheets/bootstrap/_mixins.scss +6 -12
  41. data/assets/stylesheets/bootstrap/_modal.scss +34 -39
  42. data/assets/stylesheets/bootstrap/_nav.scss +7 -4
  43. data/assets/stylesheets/bootstrap/_navbar.scss +42 -82
  44. data/assets/stylesheets/bootstrap/_pagination.scss +7 -20
  45. data/assets/stylesheets/bootstrap/_popover.scss +5 -5
  46. data/assets/stylesheets/bootstrap/_progress.scss +3 -5
  47. data/assets/stylesheets/bootstrap/_reboot.scss +304 -172
  48. data/assets/stylesheets/bootstrap/_root.scss +5 -8
  49. data/assets/stylesheets/bootstrap/_spinners.scss +4 -13
  50. data/assets/stylesheets/bootstrap/_tables.scss +80 -114
  51. data/assets/stylesheets/bootstrap/_toasts.scss +2 -4
  52. data/assets/stylesheets/bootstrap/_tooltip.scss +5 -5
  53. data/assets/stylesheets/bootstrap/_transitions.scss +0 -1
  54. data/assets/stylesheets/bootstrap/_type.scss +38 -59
  55. data/assets/stylesheets/bootstrap/_utilities.scss +503 -18
  56. data/assets/stylesheets/bootstrap/_variables.scss +546 -432
  57. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +18 -0
  58. data/assets/stylesheets/bootstrap/forms/_form-check.scss +142 -0
  59. data/assets/stylesheets/bootstrap/forms/_form-control.scss +116 -0
  60. data/assets/stylesheets/bootstrap/forms/_form-file.scss +91 -0
  61. data/assets/stylesheets/bootstrap/forms/_form-range.scss +136 -0
  62. data/assets/stylesheets/bootstrap/forms/_form-select.scss +82 -0
  63. data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
  64. data/assets/stylesheets/bootstrap/forms/_input-group.scss +140 -0
  65. data/assets/stylesheets/bootstrap/forms/_labels.scss +36 -0
  66. data/assets/stylesheets/bootstrap/forms/_validation.scss +12 -0
  67. data/assets/stylesheets/bootstrap/{utilities → helpers}/_clearfix.scss +0 -0
  68. data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +12 -0
  69. data/assets/stylesheets/bootstrap/helpers/_embed.scss +31 -0
  70. data/assets/stylesheets/bootstrap/helpers/_position.scss +30 -0
  71. data/assets/stylesheets/bootstrap/helpers/_screenreaders.scss +8 -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/mixins/_alert.scss +0 -4
  75. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +1 -1
  76. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +11 -8
  77. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +62 -47
  78. data/assets/stylesheets/bootstrap/mixins/_caret.scss +4 -4
  79. data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
  80. data/assets/stylesheets/bootstrap/mixins/_container.scss +9 -0
  81. data/assets/stylesheets/bootstrap/mixins/_forms.scss +22 -74
  82. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +9 -11
  83. data/assets/stylesheets/bootstrap/mixins/_grid.scss +85 -33
  84. data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -21
  85. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +2 -1
  86. data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
  87. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +15 -8
  88. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +2 -2
  89. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +17 -23
  90. data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +21 -0
  91. data/assets/stylesheets/bootstrap/mixins/_transition.scss +2 -2
  92. data/assets/stylesheets/bootstrap/mixins/_utilities.scss +49 -0
  93. data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
  94. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +234 -126
  95. data/lib/bootstrap/version.rb +2 -2
  96. data/tasks/updater/js.rb +3 -3
  97. metadata +32 -40
  98. data/assets/javascripts/bootstrap/util.js +0 -192
  99. data/assets/stylesheets/bootstrap/_code.scss +0 -48
  100. data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -526
  101. data/assets/stylesheets/bootstrap/_input-group.scss +0 -208
  102. data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
  103. data/assets/stylesheets/bootstrap/_media.scss +0 -8
  104. data/assets/stylesheets/bootstrap/_print.scss +0 -141
  105. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -23
  106. data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
  107. data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
  108. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -80
  109. data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
  110. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -11
  111. data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
  112. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
  113. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -17
  114. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
  115. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
  116. data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
  117. data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
  118. data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
  119. data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
  120. data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
  121. data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
  122. data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
  123. data/assets/stylesheets/bootstrap/utilities/_interactions.scss +0 -5
  124. data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
  125. data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
  126. data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
  127. data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
  128. data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
  129. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
  130. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
  131. data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -72
  132. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
@@ -1,59 +1,47 @@
1
1
  /*!
2
- * Bootstrap popover.js v4.6.0 (https://getbootstrap.com/)
3
- * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
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
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'], factory) :
9
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Popover = factory(global.jQuery, global.Tooltip));
10
- }(this, (function ($, Tooltip) { 'use strict';
11
-
12
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
-
14
- var $__default = /*#__PURE__*/_interopDefaultLegacy($);
15
- var Tooltip__default = /*#__PURE__*/_interopDefaultLegacy(Tooltip);
16
-
17
- function _defineProperties(target, props) {
18
- for (var i = 0; i < props.length; i++) {
19
- var descriptor = props[i];
20
- descriptor.enumerable = descriptor.enumerable || false;
21
- descriptor.configurable = true;
22
- if ("value" in descriptor) descriptor.writable = true;
23
- Object.defineProperty(target, descriptor.key, descriptor);
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';
11
+
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;
15
+
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;
24
29
  }
25
- }
26
30
 
27
- function _createClass(Constructor, protoProps, staticProps) {
28
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
29
- if (staticProps) _defineProperties(Constructor, staticProps);
30
- return Constructor;
31
- }
31
+ return null;
32
+ };
32
33
 
33
- function _extends() {
34
- _extends = Object.assign || function (target) {
35
- for (var i = 1; i < arguments.length; i++) {
36
- var source = arguments[i];
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); } }
37
35
 
38
- for (var key in source) {
39
- if (Object.prototype.hasOwnProperty.call(source, key)) {
40
- target[key] = source[key];
41
- }
42
- }
43
- }
36
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
44
37
 
45
- return target;
46
- };
38
+ function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
47
39
 
48
- return _extends.apply(this, arguments);
49
- }
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; }
50
41
 
51
- function _inheritsLoose(subClass, superClass) {
52
- subClass.prototype = Object.create(superClass.prototype);
53
- subClass.prototype.constructor = subClass;
54
- subClass.__proto__ = superClass;
55
- }
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; }
56
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; }
57
45
  /**
58
46
  * ------------------------------------------------------------------------
59
47
  * Constants
@@ -61,28 +49,23 @@
61
49
  */
62
50
 
63
51
  var NAME = 'popover';
64
- var VERSION = '4.6.0';
52
+ var VERSION = '5.0.0-alpha1';
65
53
  var DATA_KEY = 'bs.popover';
66
54
  var EVENT_KEY = "." + DATA_KEY;
67
- var JQUERY_NO_CONFLICT = $__default['default'].fn[NAME];
68
55
  var CLASS_PREFIX = 'bs-popover';
69
56
  var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
70
57
 
71
- var Default = _extends({}, Tooltip__default['default'].Default, {
58
+ var Default = _objectSpread(_objectSpread({}, Tooltip.Default), {}, {
72
59
  placement: 'right',
73
60
  trigger: 'click',
74
61
  content: '',
75
- 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>'
76
63
  });
77
64
 
78
- var DefaultType = _extends({}, Tooltip__default['default'].DefaultType, {
65
+ var DefaultType = _objectSpread(_objectSpread({}, Tooltip.DefaultType), {}, {
79
66
  content: '(string|element|function)'
80
67
  });
81
68
 
82
- var CLASS_NAME_FADE = 'fade';
83
- var CLASS_NAME_SHOW = 'show';
84
- var SELECTOR_TITLE = '.popover-header';
85
- var SELECTOR_CONTENT = '.popover-body';
86
69
  var Event = {
87
70
  HIDE: "hide" + EVENT_KEY,
88
71
  HIDDEN: "hidden" + EVENT_KEY,
@@ -95,6 +78,10 @@
95
78
  MOUSEENTER: "mouseenter" + EVENT_KEY,
96
79
  MOUSELEAVE: "mouseleave" + EVENT_KEY
97
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';
98
85
  /**
99
86
  * ------------------------------------------------------------------------
100
87
  * Class Definition
@@ -115,19 +102,10 @@
115
102
  return this.getTitle() || this._getContent();
116
103
  };
117
104
 
118
- _proto.addAttachmentClass = function addAttachmentClass(attachment) {
119
- $__default['default'](this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
120
- };
121
-
122
- _proto.getTipElement = function getTipElement() {
123
- this.tip = this.tip || $__default['default'](this.config.template)[0];
124
- return this.tip;
125
- };
126
-
127
105
  _proto.setContent = function setContent() {
128
- var $tip = $__default['default'](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
129
107
 
130
- this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle());
108
+ this.setElementContent(SelectorEngine.findOne(SELECTOR_TITLE, tip), this.getTitle());
131
109
 
132
110
  var content = this._getContent();
133
111
 
@@ -135,8 +113,12 @@
135
113
  content = content.call(this.element);
136
114
  }
137
115
 
138
- this.setElementContent($tip.find(SELECTOR_CONTENT), content);
139
- $tip.removeClass(CLASS_NAME_FADE + " " + CLASS_NAME_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);
140
122
  } // Private
141
123
  ;
142
124
 
@@ -145,18 +127,22 @@
145
127
  };
146
128
 
147
129
  _proto._cleanTipClass = function _cleanTipClass() {
148
- var $tip = $__default['default'](this.getTipElement());
149
- var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
130
+ var tip = this.getTipElement();
131
+ var tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX);
150
132
 
151
133
  if (tabClass !== null && tabClass.length > 0) {
152
- $tip.removeClass(tabClass.join(''));
134
+ tabClass.map(function (token) {
135
+ return token.trim();
136
+ }).forEach(function (tClass) {
137
+ return tip.classList.remove(tClass);
138
+ });
153
139
  }
154
140
  } // Static
155
141
  ;
156
142
 
157
- Popover._jQueryInterface = function _jQueryInterface(config) {
143
+ Popover.jQueryInterface = function jQueryInterface(config) {
158
144
  return this.each(function () {
159
- var data = $__default['default'](this).data(DATA_KEY);
145
+ var data = Data.getData(this, DATA_KEY);
160
146
 
161
147
  var _config = typeof config === 'object' ? config : null;
162
148
 
@@ -166,7 +152,7 @@
166
152
 
167
153
  if (!data) {
168
154
  data = new Popover(this, _config);
169
- $__default['default'](this).data(DATA_KEY, data);
155
+ Data.setData(this, DATA_KEY, data);
170
156
  }
171
157
 
172
158
  if (typeof config === 'string') {
@@ -179,6 +165,10 @@
179
165
  });
180
166
  };
181
167
 
168
+ Popover.getInstance = function getInstance(element) {
169
+ return Data.getData(element, DATA_KEY);
170
+ };
171
+
182
172
  _createClass(Popover, null, [{
183
173
  key: "VERSION",
184
174
  // Getters
@@ -218,21 +208,27 @@
218
208
  }]);
219
209
 
220
210
  return Popover;
221
- }(Tooltip__default['default']);
211
+ }(Tooltip);
212
+
213
+ var $ = getjQuery();
222
214
  /**
223
215
  * ------------------------------------------------------------------------
224
216
  * jQuery
225
217
  * ------------------------------------------------------------------------
226
218
  */
227
219
 
220
+ /* istanbul ignore if */
228
221
 
229
- $__default['default'].fn[NAME] = Popover._jQueryInterface;
230
- $__default['default'].fn[NAME].Constructor = Popover;
222
+ if ($) {
223
+ var JQUERY_NO_CONFLICT = $.fn[NAME];
224
+ $.fn[NAME] = Popover.jQueryInterface;
225
+ $.fn[NAME].Constructor = Popover;
231
226
 
232
- $__default['default'].fn[NAME].noConflict = function () {
233
- $__default['default'].fn[NAME] = JQUERY_NO_CONFLICT;
234
- return Popover._jQueryInterface;
235
- };
227
+ $.fn[NAME].noConflict = function () {
228
+ $.fn[NAME] = JQUERY_NO_CONFLICT;
229
+ return Popover.jQueryInterface;
230
+ };
231
+ }
236
232
 
237
233
  return Popover;
238
234
 
@@ -1,53 +1,106 @@
1
1
  /*!
2
- * Bootstrap scrollspy.js v4.6.0 (https://getbootstrap.com/)
3
- * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
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
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'], factory) :
9
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.ScrollSpy = factory(global.jQuery, global.Util));
10
- }(this, (function ($, Util) { 'use strict';
11
-
12
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
-
14
- var $__default = /*#__PURE__*/_interopDefaultLegacy($);
15
- var Util__default = /*#__PURE__*/_interopDefaultLegacy(Util);
16
-
17
- function _defineProperties(target, props) {
18
- for (var i = 0; i < props.length; i++) {
19
- var descriptor = props[i];
20
- descriptor.enumerable = descriptor.enumerable || false;
21
- descriptor.configurable = true;
22
- if ("value" in descriptor) descriptor.writable = true;
23
- 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;
24
28
  }
25
- }
26
29
 
27
- function _createClass(Constructor, protoProps, staticProps) {
28
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
29
- if (staticProps) _defineProperties(Constructor, staticProps);
30
- return Constructor;
31
- }
30
+ return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
31
+ };
32
+ /**
33
+ * --------------------------------------------------------------------------
34
+ * Public Util Api
35
+ * --------------------------------------------------------------------------
36
+ */
32
37
 
33
- function _extends() {
34
- _extends = Object.assign || function (target) {
35
- for (var i = 1; i < arguments.length; i++) {
36
- var source = arguments[i];
37
38
 
38
- for (var key in source) {
39
- if (Object.prototype.hasOwnProperty.call(source, key)) {
40
- target[key] = source[key];
41
- }
42
- }
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;
53
+ }
54
+
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
+ }
64
+
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);
77
+
78
+ if (!new RegExp(expectedTypes).test(valueType)) {
79
+ throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
43
80
  }
81
+ });
82
+ };
44
83
 
45
- return target;
46
- };
84
+ var getjQuery = function getjQuery() {
85
+ var _window = window,
86
+ jQuery = _window.jQuery;
47
87
 
48
- return _extends.apply(this, arguments);
49
- }
88
+ if (jQuery && !document.body.hasAttribute('data-no-jquery')) {
89
+ return jQuery;
90
+ }
91
+
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; }
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); } }
50
102
 
103
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
51
104
  /**
52
105
  * ------------------------------------------------------------------------
53
106
  * Constants
@@ -55,11 +108,10 @@
55
108
  */
56
109
 
57
110
  var NAME = 'scrollspy';
58
- var VERSION = '4.6.0';
111
+ var VERSION = '5.0.0-alpha1';
59
112
  var DATA_KEY = 'bs.scrollspy';
60
113
  var EVENT_KEY = "." + DATA_KEY;
61
114
  var DATA_API_KEY = '.data-api';
62
- var JQUERY_NO_CONFLICT = $__default['default'].fn[NAME];
63
115
  var Default = {
64
116
  offset: 10,
65
117
  method: 'auto',
@@ -81,7 +133,6 @@
81
133
  var SELECTOR_NAV_ITEMS = '.nav-item';
82
134
  var SELECTOR_LIST_ITEMS = '.list-group-item';
83
135
  var SELECTOR_DROPDOWN = '.dropdown';
84
- var SELECTOR_DROPDOWN_ITEMS = '.dropdown-item';
85
136
  var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
86
137
  var METHOD_OFFSET = 'offset';
87
138
  var METHOD_POSITION = 'position';
@@ -98,17 +149,19 @@
98
149
  this._element = element;
99
150
  this._scrollElement = element.tagName === 'BODY' ? window : element;
100
151
  this._config = this._getConfig(config);
101
- 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);
102
153
  this._offsets = [];
103
154
  this._targets = [];
104
155
  this._activeTarget = null;
105
156
  this._scrollHeight = 0;
106
- $__default['default'](this._scrollElement).on(EVENT_SCROLL, function (event) {
157
+ EventHandler.on(this._scrollElement, EVENT_SCROLL, function (event) {
107
158
  return _this._process(event);
108
159
  });
109
160
  this.refresh();
110
161
 
111
162
  this._process();
163
+
164
+ Data.setData(element, DATA_KEY, this);
112
165
  } // Getters
113
166
 
114
167
 
@@ -124,21 +177,20 @@
124
177
  this._offsets = [];
125
178
  this._targets = [];
126
179
  this._scrollHeight = this._getScrollHeight();
127
- var targets = [].slice.call(document.querySelectorAll(this._selector));
180
+ var targets = SelectorEngine.find(this._selector);
128
181
  targets.map(function (element) {
129
182
  var target;
130
- var targetSelector = Util__default['default'].getSelectorFromElement(element);
183
+ var targetSelector = getSelectorFromElement(element);
131
184
 
132
185
  if (targetSelector) {
133
- target = document.querySelector(targetSelector);
186
+ target = SelectorEngine.findOne(targetSelector);
134
187
  }
135
188
 
136
189
  if (target) {
137
190
  var targetBCR = target.getBoundingClientRect();
138
191
 
139
192
  if (targetBCR.width || targetBCR.height) {
140
- // TODO (fat): remove sketch reliance on jQuery position/offset
141
- return [$__default['default'](target)[offsetMethod]().top + offsetBase, targetSelector];
193
+ return [Manipulator[offsetMethod](target).top + offsetBase, targetSelector];
142
194
  }
143
195
  }
144
196
 
@@ -155,8 +207,8 @@
155
207
  };
156
208
 
157
209
  _proto.dispose = function dispose() {
158
- $__default['default'].removeData(this._element, DATA_KEY);
159
- $__default['default'](this._scrollElement).off(EVENT_KEY);
210
+ Data.removeData(this._element, DATA_KEY);
211
+ EventHandler.off(this._scrollElement, EVENT_KEY);
160
212
  this._element = null;
161
213
  this._scrollElement = null;
162
214
  this._config = null;
@@ -169,20 +221,20 @@
169
221
  ;
170
222
 
171
223
  _proto._getConfig = function _getConfig(config) {
172
- config = _extends({}, Default, typeof config === 'object' && config ? config : {});
224
+ config = _objectSpread(_objectSpread({}, Default), typeof config === 'object' && config ? config : {});
173
225
 
174
- if (typeof config.target !== 'string' && Util__default['default'].isElement(config.target)) {
175
- var id = $__default['default'](config.target).attr('id');
226
+ if (typeof config.target !== 'string' && isElement(config.target)) {
227
+ var id = config.target.id;
176
228
 
177
229
  if (!id) {
178
- id = Util__default['default'].getUID(NAME);
179
- $__default['default'](config.target).attr('id', id);
230
+ id = getUID(NAME);
231
+ config.target.id = id;
180
232
  }
181
233
 
182
234
  config.target = "#" + id;
183
235
  }
184
236
 
185
- Util__default['default'].typeCheckConfig(NAME, config, DefaultType);
237
+ typeCheckConfig(NAME, config, DefaultType);
186
238
  return config;
187
239
  };
188
240
 
@@ -245,28 +297,36 @@
245
297
  return selector + "[data-target=\"" + target + "\"]," + selector + "[href=\"" + target + "\"]";
246
298
  });
247
299
 
248
- var $link = $__default['default']([].slice.call(document.querySelectorAll(queries.join(','))));
300
+ var link = SelectorEngine.findOne(queries.join(','));
249
301
 
250
- if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {
251
- $link.closest(SELECTOR_DROPDOWN).find(SELECTOR_DROPDOWN_TOGGLE).addClass(CLASS_NAME_ACTIVE);
252
- $link.addClass(CLASS_NAME_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);
253
305
  } else {
254
306
  // Set triggered link as active
255
- $link.addClass(CLASS_NAME_ACTIVE); // Set triggered links parents as active
256
- // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
257
-
258
- $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
259
-
260
- $link.parents(SELECTOR_NAV_LIST_GROUP).prev(SELECTOR_NAV_ITEMS).children(SELECTOR_NAV_LINKS).addClass(CLASS_NAME_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
+ });
261
321
  }
262
322
 
263
- $__default['default'](this._scrollElement).trigger(EVENT_ACTIVATE, {
323
+ EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {
264
324
  relatedTarget: target
265
325
  });
266
326
  };
267
327
 
268
328
  _proto._clear = function _clear() {
269
- [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {
329
+ SelectorEngine.find(this._selector).filter(function (node) {
270
330
  return node.classList.contains(CLASS_NAME_ACTIVE);
271
331
  }).forEach(function (node) {
272
332
  return node.classList.remove(CLASS_NAME_ACTIVE);
@@ -274,15 +334,14 @@
274
334
  } // Static
275
335
  ;
276
336
 
277
- ScrollSpy._jQueryInterface = function _jQueryInterface(config) {
337
+ ScrollSpy.jQueryInterface = function jQueryInterface(config) {
278
338
  return this.each(function () {
279
- var data = $__default['default'](this).data(DATA_KEY);
339
+ var data = Data.getData(this, DATA_KEY);
280
340
 
281
341
  var _config = typeof config === 'object' && config;
282
342
 
283
343
  if (!data) {
284
344
  data = new ScrollSpy(this, _config);
285
- $__default['default'](this).data(DATA_KEY, data);
286
345
  }
287
346
 
288
347
  if (typeof config === 'string') {
@@ -295,6 +354,10 @@
295
354
  });
296
355
  };
297
356
 
357
+ ScrollSpy.getInstance = function getInstance(element) {
358
+ return Data.getData(element, DATA_KEY);
359
+ };
360
+
298
361
  _createClass(ScrollSpy, null, [{
299
362
  key: "VERSION",
300
363
  get: function get() {
@@ -316,29 +379,30 @@
316
379
  */
317
380
 
318
381
 
319
- $__default['default'](window).on(EVENT_LOAD_DATA_API, function () {
320
- var scrollSpys = [].slice.call(document.querySelectorAll(SELECTOR_DATA_SPY));
321
- var scrollSpysLength = scrollSpys.length;
322
-
323
- for (var i = scrollSpysLength; i--;) {
324
- var $spy = $__default['default'](scrollSpys[i]);
325
-
326
- ScrollSpy._jQueryInterface.call($spy, $spy.data());
327
- }
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
+ });
328
386
  });
387
+ var $ = getjQuery();
329
388
  /**
330
389
  * ------------------------------------------------------------------------
331
390
  * jQuery
332
391
  * ------------------------------------------------------------------------
333
392
  */
334
393
 
335
- $__default['default'].fn[NAME] = ScrollSpy._jQueryInterface;
336
- $__default['default'].fn[NAME].Constructor = ScrollSpy;
394
+ /* istanbul ignore if */
337
395
 
338
- $__default['default'].fn[NAME].noConflict = function () {
339
- $__default['default'].fn[NAME] = JQUERY_NO_CONFLICT;
340
- return ScrollSpy._jQueryInterface;
341
- };
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
+ }
342
406
 
343
407
  return ScrollSpy;
344
408