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,18 +1,149 @@
1
1
  /*!
2
- * Bootstrap collapse.js v4.5.2 (https://getbootstrap.com/)
2
+ * Bootstrap collapse.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.Collapse = 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.Collapse = 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 MILLISECONDS_MULTIPLIER = 1000;
26
+ var TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
27
+
28
+ var toType = function toType(obj) {
29
+ if (obj === null || obj === undefined) {
30
+ return "" + obj;
31
+ }
32
+
33
+ return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
34
+ };
35
+
36
+ var getSelector = function getSelector(element) {
37
+ var selector = element.getAttribute('data-bs-target');
38
+
39
+ if (!selector || selector === '#') {
40
+ var hrefAttr = element.getAttribute('href');
41
+ selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;
42
+ }
43
+
44
+ return selector;
45
+ };
46
+
47
+ var getSelectorFromElement = function getSelectorFromElement(element) {
48
+ var selector = getSelector(element);
49
+
50
+ if (selector) {
51
+ return document.querySelector(selector) ? selector : null;
52
+ }
53
+
54
+ return null;
55
+ };
56
+
57
+ var getElementFromSelector = function getElementFromSelector(element) {
58
+ var selector = getSelector(element);
59
+ return selector ? document.querySelector(selector) : null;
60
+ };
61
+
62
+ var getTransitionDurationFromElement = function getTransitionDurationFromElement(element) {
63
+ if (!element) {
64
+ return 0;
65
+ } // Get transition-duration of the element
66
+
67
+
68
+ var _window$getComputedSt = window.getComputedStyle(element),
69
+ transitionDuration = _window$getComputedSt.transitionDuration,
70
+ transitionDelay = _window$getComputedSt.transitionDelay;
71
+
72
+ var floatTransitionDuration = Number.parseFloat(transitionDuration);
73
+ var floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
74
+
75
+ if (!floatTransitionDuration && !floatTransitionDelay) {
76
+ return 0;
77
+ } // If multiple durations are defined, take the first
78
+
79
+
80
+ transitionDuration = transitionDuration.split(',')[0];
81
+ transitionDelay = transitionDelay.split(',')[0];
82
+ return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
83
+ };
84
+
85
+ var triggerTransitionEnd = function triggerTransitionEnd(element) {
86
+ element.dispatchEvent(new Event(TRANSITION_END));
87
+ };
88
+
89
+ var isElement = function isElement(obj) {
90
+ return (obj[0] || obj).nodeType;
91
+ };
92
+
93
+ var emulateTransitionEnd = function emulateTransitionEnd(element, duration) {
94
+ var called = false;
95
+ var durationPadding = 5;
96
+ var emulatedDuration = duration + durationPadding;
97
+
98
+ function listener() {
99
+ called = true;
100
+ element.removeEventListener(TRANSITION_END, listener);
101
+ }
102
+
103
+ element.addEventListener(TRANSITION_END, listener);
104
+ setTimeout(function () {
105
+ if (!called) {
106
+ triggerTransitionEnd(element);
107
+ }
108
+ }, emulatedDuration);
109
+ };
110
+
111
+ var typeCheckConfig = function typeCheckConfig(componentName, config, configTypes) {
112
+ Object.keys(configTypes).forEach(function (property) {
113
+ var expectedTypes = configTypes[property];
114
+ var value = config[property];
115
+ var valueType = value && isElement(value) ? 'element' : toType(value);
116
+
117
+ if (!new RegExp(expectedTypes).test(valueType)) {
118
+ throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
119
+ }
120
+ });
121
+ };
122
+
123
+ var reflow = function reflow(element) {
124
+ return element.offsetHeight;
125
+ };
126
+
127
+ var getjQuery = function getjQuery() {
128
+ var _window = window,
129
+ jQuery = _window.jQuery;
130
+
131
+ if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
132
+ return jQuery;
133
+ }
134
+
135
+ return null;
136
+ };
137
+
138
+ var onDOMContentLoaded = function onDOMContentLoaded(callback) {
139
+ if (document.readyState === 'loading') {
140
+ document.addEventListener('DOMContentLoaded', callback);
141
+ } else {
142
+ callback();
143
+ }
144
+ };
145
+
146
+ var isRTL = document.documentElement.dir === 'rtl';
16
147
 
17
148
  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
149
 
@@ -23,12 +154,58 @@
23
154
  * ------------------------------------------------------------------------
24
155
  */
25
156
 
157
+ var VERSION = '5.0.0-beta1';
158
+
159
+ var BaseComponent = /*#__PURE__*/function () {
160
+ function BaseComponent(element) {
161
+ if (!element) {
162
+ return;
163
+ }
164
+
165
+ this._element = element;
166
+ Data__default['default'].setData(element, this.constructor.DATA_KEY, this);
167
+ }
168
+
169
+ var _proto = BaseComponent.prototype;
170
+
171
+ _proto.dispose = function dispose() {
172
+ Data__default['default'].removeData(this._element, this.constructor.DATA_KEY);
173
+ this._element = null;
174
+ }
175
+ /** Static */
176
+ ;
177
+
178
+ BaseComponent.getInstance = function getInstance(element) {
179
+ return Data__default['default'].getData(element, this.DATA_KEY);
180
+ };
181
+
182
+ _createClass(BaseComponent, null, [{
183
+ key: "VERSION",
184
+ get: function get() {
185
+ return VERSION;
186
+ }
187
+ }]);
188
+
189
+ return BaseComponent;
190
+ }();
191
+
192
+ 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); }
193
+
194
+ 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); } }
195
+
196
+ function _createClass$1(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties$1(Constructor.prototype, protoProps); if (staticProps) _defineProperties$1(Constructor, staticProps); return Constructor; }
197
+
198
+ function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
199
+ /**
200
+ * ------------------------------------------------------------------------
201
+ * Constants
202
+ * ------------------------------------------------------------------------
203
+ */
204
+
26
205
  var NAME = 'collapse';
27
- var VERSION = '4.5.2';
28
206
  var DATA_KEY = 'bs.collapse';
29
207
  var EVENT_KEY = "." + DATA_KEY;
30
208
  var DATA_API_KEY = '.data-api';
31
- var JQUERY_NO_CONFLICT = $.fn[NAME];
32
209
  var Default = {
33
210
  toggle: true,
34
211
  parent: ''
@@ -46,47 +223,53 @@
46
223
  var CLASS_NAME_COLLAPSE = 'collapse';
47
224
  var CLASS_NAME_COLLAPSING = 'collapsing';
48
225
  var CLASS_NAME_COLLAPSED = 'collapsed';
49
- var DIMENSION_WIDTH = 'width';
50
- var DIMENSION_HEIGHT = 'height';
226
+ var WIDTH = 'width';
227
+ var HEIGHT = 'height';
51
228
  var SELECTOR_ACTIVES = '.show, .collapsing';
52
- var SELECTOR_DATA_TOGGLE = '[data-toggle="collapse"]';
229
+ var SELECTOR_DATA_TOGGLE = '[data-bs-toggle="collapse"]';
53
230
  /**
54
231
  * ------------------------------------------------------------------------
55
232
  * Class Definition
56
233
  * ------------------------------------------------------------------------
57
234
  */
58
235
 
59
- var Collapse = /*#__PURE__*/function () {
236
+ var Collapse = /*#__PURE__*/function (_BaseComponent) {
237
+ _inheritsLoose(Collapse, _BaseComponent);
238
+
60
239
  function Collapse(element, config) {
61
- this._isTransitioning = false;
62
- this._element = element;
63
- this._config = this._getConfig(config);
64
- this._triggerArray = [].slice.call(document.querySelectorAll("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]")));
65
- var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));
240
+ var _this;
241
+
242
+ _this = _BaseComponent.call(this, element) || this;
243
+ _this._isTransitioning = false;
244
+ _this._config = _this._getConfig(config);
245
+ _this._triggerArray = SelectorEngine__default['default'].find(SELECTOR_DATA_TOGGLE + "[href=\"#" + element.id + "\"]," + (SELECTOR_DATA_TOGGLE + "[data-bs-target=\"#" + element.id + "\"]"));
246
+ var toggleList = SelectorEngine__default['default'].find(SELECTOR_DATA_TOGGLE);
66
247
 
67
248
  for (var i = 0, len = toggleList.length; i < len; i++) {
68
249
  var elem = toggleList[i];
69
- var selector = Util.getSelectorFromElement(elem);
70
- var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {
250
+ var selector = getSelectorFromElement(elem);
251
+ var filterElement = SelectorEngine__default['default'].find(selector).filter(function (foundElem) {
71
252
  return foundElem === element;
72
253
  });
73
254
 
74
- if (selector !== null && filterElement.length > 0) {
75
- this._selector = selector;
255
+ if (selector !== null && filterElement.length) {
256
+ _this._selector = selector;
76
257
 
77
- this._triggerArray.push(elem);
258
+ _this._triggerArray.push(elem);
78
259
  }
79
260
  }
80
261
 
81
- this._parent = this._config.parent ? this._getParent() : null;
262
+ _this._parent = _this._config.parent ? _this._getParent() : null;
82
263
 
83
- if (!this._config.parent) {
84
- this._addAriaAndCollapsedClass(this._element, this._triggerArray);
264
+ if (!_this._config.parent) {
265
+ _this._addAriaAndCollapsedClass(_this._element, _this._triggerArray);
85
266
  }
86
267
 
87
- if (this._config.toggle) {
88
- this.toggle();
268
+ if (_this._config.toggle) {
269
+ _this.toggle();
89
270
  }
271
+
272
+ return _this;
90
273
  } // Getters
91
274
 
92
275
 
@@ -94,7 +277,7 @@
94
277
 
95
278
  // Public
96
279
  _proto.toggle = function toggle() {
97
- if ($(this._element).hasClass(CLASS_NAME_SHOW)) {
280
+ if (this._element.classList.contains(CLASS_NAME_SHOW)) {
98
281
  this.hide();
99
282
  } else {
100
283
  this.show();
@@ -102,9 +285,9 @@
102
285
  };
103
286
 
104
287
  _proto.show = function show() {
105
- var _this = this;
288
+ var _this2 = this;
106
289
 
107
- if (this._isTransitioning || $(this._element).hasClass(CLASS_NAME_SHOW)) {
290
+ if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {
108
291
  return;
109
292
  }
110
293
 
@@ -112,9 +295,9 @@
112
295
  var activesData;
113
296
 
114
297
  if (this._parent) {
115
- actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) {
116
- if (typeof _this._config.parent === 'string') {
117
- return elem.getAttribute('data-parent') === _this._config.parent;
298
+ actives = SelectorEngine__default['default'].find(SELECTOR_ACTIVES, this._parent).filter(function (elem) {
299
+ if (typeof _this2._config.parent === 'string') {
300
+ return elem.getAttribute('data-bs-parent') === _this2._config.parent;
118
301
  }
119
302
 
120
303
  return elem.classList.contains(CLASS_NAME_COLLAPSE);
@@ -125,88 +308,106 @@
125
308
  }
126
309
  }
127
310
 
311
+ var container = SelectorEngine__default['default'].findOne(this._selector);
312
+
128
313
  if (actives) {
129
- activesData = $(actives).not(this._selector).data(DATA_KEY);
314
+ var tempActiveData = actives.find(function (elem) {
315
+ return container !== elem;
316
+ });
317
+ activesData = tempActiveData ? Data__default['default'].getData(tempActiveData, DATA_KEY) : null;
130
318
 
131
319
  if (activesData && activesData._isTransitioning) {
132
320
  return;
133
321
  }
134
322
  }
135
323
 
136
- var startEvent = $.Event(EVENT_SHOW);
137
- $(this._element).trigger(startEvent);
324
+ var startEvent = EventHandler__default['default'].trigger(this._element, EVENT_SHOW);
138
325
 
139
- if (startEvent.isDefaultPrevented()) {
326
+ if (startEvent.defaultPrevented) {
140
327
  return;
141
328
  }
142
329
 
143
330
  if (actives) {
144
- Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide');
331
+ actives.forEach(function (elemActive) {
332
+ if (container !== elemActive) {
333
+ Collapse.collapseInterface(elemActive, 'hide');
334
+ }
145
335
 
146
- if (!activesData) {
147
- $(actives).data(DATA_KEY, null);
148
- }
336
+ if (!activesData) {
337
+ Data__default['default'].setData(elemActive, DATA_KEY, null);
338
+ }
339
+ });
149
340
  }
150
341
 
151
342
  var dimension = this._getDimension();
152
343
 
153
- $(this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING);
344
+ this._element.classList.remove(CLASS_NAME_COLLAPSE);
345
+
346
+ this._element.classList.add(CLASS_NAME_COLLAPSING);
347
+
154
348
  this._element.style[dimension] = 0;
155
349
 
156
350
  if (this._triggerArray.length) {
157
- $(this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true);
351
+ this._triggerArray.forEach(function (element) {
352
+ element.classList.remove(CLASS_NAME_COLLAPSED);
353
+ element.setAttribute('aria-expanded', true);
354
+ });
158
355
  }
159
356
 
160
357
  this.setTransitioning(true);
161
358
 
162
359
  var complete = function complete() {
163
- $(_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW);
164
- _this._element.style[dimension] = '';
360
+ _this2._element.classList.remove(CLASS_NAME_COLLAPSING);
361
+
362
+ _this2._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
165
363
 
166
- _this.setTransitioning(false);
364
+ _this2._element.style[dimension] = '';
365
+
366
+ _this2.setTransitioning(false);
167
367
 
168
- $(_this._element).trigger(EVENT_SHOWN);
368
+ EventHandler__default['default'].trigger(_this2._element, EVENT_SHOWN);
169
369
  };
170
370
 
171
371
  var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
172
372
  var scrollSize = "scroll" + capitalizedDimension;
173
- var transitionDuration = Util.getTransitionDurationFromElement(this._element);
174
- $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
373
+ var transitionDuration = getTransitionDurationFromElement(this._element);
374
+ EventHandler__default['default'].one(this._element, TRANSITION_END, complete);
375
+ emulateTransitionEnd(this._element, transitionDuration);
175
376
  this._element.style[dimension] = this._element[scrollSize] + "px";
176
377
  };
177
378
 
178
379
  _proto.hide = function hide() {
179
- var _this2 = this;
380
+ var _this3 = this;
180
381
 
181
- if (this._isTransitioning || !$(this._element).hasClass(CLASS_NAME_SHOW)) {
382
+ if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) {
182
383
  return;
183
384
  }
184
385
 
185
- var startEvent = $.Event(EVENT_HIDE);
186
- $(this._element).trigger(startEvent);
386
+ var startEvent = EventHandler__default['default'].trigger(this._element, EVENT_HIDE);
187
387
 
188
- if (startEvent.isDefaultPrevented()) {
388
+ if (startEvent.defaultPrevented) {
189
389
  return;
190
390
  }
191
391
 
192
392
  var dimension = this._getDimension();
193
393
 
194
394
  this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
195
- Util.reflow(this._element);
196
- $(this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW);
395
+ reflow(this._element);
396
+
397
+ this._element.classList.add(CLASS_NAME_COLLAPSING);
398
+
399
+ this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
400
+
197
401
  var triggerArrayLength = this._triggerArray.length;
198
402
 
199
403
  if (triggerArrayLength > 0) {
200
404
  for (var i = 0; i < triggerArrayLength; i++) {
201
405
  var trigger = this._triggerArray[i];
202
- var selector = Util.getSelectorFromElement(trigger);
406
+ var elem = getElementFromSelector(trigger);
203
407
 
204
- if (selector !== null) {
205
- var $elem = $([].slice.call(document.querySelectorAll(selector)));
206
-
207
- if (!$elem.hasClass(CLASS_NAME_SHOW)) {
208
- $(trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false);
209
- }
408
+ if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {
409
+ trigger.classList.add(CLASS_NAME_COLLAPSED);
410
+ trigger.setAttribute('aria-expanded', false);
210
411
  }
211
412
  }
212
413
  }
@@ -214,14 +415,19 @@
214
415
  this.setTransitioning(true);
215
416
 
216
417
  var complete = function complete() {
217
- _this2.setTransitioning(false);
418
+ _this3.setTransitioning(false);
419
+
420
+ _this3._element.classList.remove(CLASS_NAME_COLLAPSING);
421
+
422
+ _this3._element.classList.add(CLASS_NAME_COLLAPSE);
218
423
 
219
- $(_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN);
424
+ EventHandler__default['default'].trigger(_this3._element, EVENT_HIDDEN);
220
425
  };
221
426
 
222
427
  this._element.style[dimension] = '';
223
- var transitionDuration = Util.getTransitionDurationFromElement(this._element);
224
- $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
428
+ var transitionDuration = getTransitionDurationFromElement(this._element);
429
+ EventHandler__default['default'].one(this._element, TRANSITION_END, complete);
430
+ emulateTransitionEnd(this._element, transitionDuration);
225
431
  };
226
432
 
227
433
  _proto.setTransitioning = function setTransitioning(isTransitioning) {
@@ -229,10 +435,10 @@
229
435
  };
230
436
 
231
437
  _proto.dispose = function dispose() {
232
- $.removeData(this._element, DATA_KEY);
438
+ _BaseComponent.prototype.dispose.call(this);
439
+
233
440
  this._config = null;
234
441
  this._parent = null;
235
- this._element = null;
236
442
  this._triggerArray = null;
237
443
  this._isTransitioning = null;
238
444
  } // Private
@@ -242,92 +448,97 @@
242
448
  config = _extends({}, Default, config);
243
449
  config.toggle = Boolean(config.toggle); // Coerce string values
244
450
 
245
- Util.typeCheckConfig(NAME, config, DefaultType);
451
+ typeCheckConfig(NAME, config, DefaultType);
246
452
  return config;
247
453
  };
248
454
 
249
455
  _proto._getDimension = function _getDimension() {
250
- var hasWidth = $(this._element).hasClass(DIMENSION_WIDTH);
251
- return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT;
456
+ return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT;
252
457
  };
253
458
 
254
459
  _proto._getParent = function _getParent() {
255
- var _this3 = this;
460
+ var _this4 = this;
256
461
 
257
- var parent;
462
+ var parent = this._config.parent;
258
463
 
259
- if (Util.isElement(this._config.parent)) {
260
- parent = this._config.parent; // It's a jQuery object
261
-
262
- if (typeof this._config.parent.jquery !== 'undefined') {
263
- parent = this._config.parent[0];
464
+ if (isElement(parent)) {
465
+ // it's a jQuery object
466
+ if (typeof parent.jquery !== 'undefined' || typeof parent[0] !== 'undefined') {
467
+ parent = parent[0];
264
468
  }
265
469
  } else {
266
- parent = document.querySelector(this._config.parent);
470
+ parent = SelectorEngine__default['default'].findOne(parent);
267
471
  }
268
472
 
269
- var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]";
270
- var children = [].slice.call(parent.querySelectorAll(selector));
271
- $(children).each(function (i, element) {
272
- _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);
473
+ var selector = SELECTOR_DATA_TOGGLE + "[data-bs-parent=\"" + parent + "\"]";
474
+ SelectorEngine__default['default'].find(selector, parent).forEach(function (element) {
475
+ var selected = getElementFromSelector(element);
476
+
477
+ _this4._addAriaAndCollapsedClass(selected, [element]);
273
478
  });
274
479
  return parent;
275
480
  };
276
481
 
277
482
  _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
278
- var isOpen = $(element).hasClass(CLASS_NAME_SHOW);
279
-
280
- if (triggerArray.length) {
281
- $(triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
483
+ if (!element || !triggerArray.length) {
484
+ return;
282
485
  }
486
+
487
+ var isOpen = element.classList.contains(CLASS_NAME_SHOW);
488
+ triggerArray.forEach(function (elem) {
489
+ if (isOpen) {
490
+ elem.classList.remove(CLASS_NAME_COLLAPSED);
491
+ } else {
492
+ elem.classList.add(CLASS_NAME_COLLAPSED);
493
+ }
494
+
495
+ elem.setAttribute('aria-expanded', isOpen);
496
+ });
283
497
  } // Static
284
498
  ;
285
499
 
286
- Collapse._getTargetFromElement = function _getTargetFromElement(element) {
287
- var selector = Util.getSelectorFromElement(element);
288
- return selector ? document.querySelector(selector) : null;
289
- };
500
+ Collapse.collapseInterface = function collapseInterface(element, config) {
501
+ var data = Data__default['default'].getData(element, DATA_KEY);
290
502
 
291
- Collapse._jQueryInterface = function _jQueryInterface(config) {
292
- return this.each(function () {
293
- var $this = $(this);
294
- var data = $this.data(DATA_KEY);
503
+ var _config = _extends({}, Default, Manipulator__default['default'].getDataAttributes(element), typeof config === 'object' && config ? config : {});
295
504
 
296
- var _config = _extends({}, Default, $this.data(), typeof config === 'object' && config ? config : {});
505
+ if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {
506
+ _config.toggle = false;
507
+ }
297
508
 
298
- if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {
299
- _config.toggle = false;
300
- }
509
+ if (!data) {
510
+ data = new Collapse(element, _config);
511
+ }
301
512
 
302
- if (!data) {
303
- data = new Collapse(this, _config);
304
- $this.data(DATA_KEY, data);
513
+ if (typeof config === 'string') {
514
+ if (typeof data[config] === 'undefined') {
515
+ throw new TypeError("No method named \"" + config + "\"");
305
516
  }
306
517
 
307
- if (typeof config === 'string') {
308
- if (typeof data[config] === 'undefined') {
309
- throw new TypeError("No method named \"" + config + "\"");
310
- }
518
+ data[config]();
519
+ }
520
+ };
311
521
 
312
- data[config]();
313
- }
522
+ Collapse.jQueryInterface = function jQueryInterface(config) {
523
+ return this.each(function () {
524
+ Collapse.collapseInterface(this, config);
314
525
  });
315
526
  };
316
527
 
317
- _createClass(Collapse, null, [{
318
- key: "VERSION",
528
+ _createClass$1(Collapse, null, [{
529
+ key: "Default",
319
530
  get: function get() {
320
- return VERSION;
531
+ return Default;
321
532
  }
322
533
  }, {
323
- key: "Default",
534
+ key: "DATA_KEY",
324
535
  get: function get() {
325
- return Default;
536
+ return DATA_KEY;
326
537
  }
327
538
  }]);
328
539
 
329
540
  return Collapse;
330
- }();
541
+ }(BaseComponent);
331
542
  /**
332
543
  * ------------------------------------------------------------------------
333
544
  * Data Api implementation
@@ -335,36 +546,56 @@
335
546
  */
336
547
 
337
548
 
338
- $(document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
549
+ EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
339
550
  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
340
- if (event.currentTarget.tagName === 'A') {
551
+ if (event.target.tagName === 'A') {
341
552
  event.preventDefault();
342
553
  }
343
554
 
344
- var $trigger = $(this);
345
- var selector = Util.getSelectorFromElement(this);
346
- var selectors = [].slice.call(document.querySelectorAll(selector));
347
- $(selectors).each(function () {
348
- var $target = $(this);
349
- var data = $target.data(DATA_KEY);
350
- var config = data ? 'toggle' : $trigger.data();
555
+ var triggerData = Manipulator__default['default'].getDataAttributes(this);
556
+ var selector = getSelectorFromElement(this);
557
+ var selectorElements = SelectorEngine__default['default'].find(selector);
558
+ selectorElements.forEach(function (element) {
559
+ var data = Data__default['default'].getData(element, DATA_KEY);
560
+ var config;
561
+
562
+ if (data) {
563
+ // update parent attribute
564
+ if (data._parent === null && typeof triggerData.parent === 'string') {
565
+ data._config.parent = triggerData.parent;
566
+ data._parent = data._getParent();
567
+ }
351
568
 
352
- Collapse._jQueryInterface.call($target, config);
569
+ config = 'toggle';
570
+ } else {
571
+ config = triggerData;
572
+ }
573
+
574
+ Collapse.collapseInterface(element, config);
353
575
  });
354
576
  });
355
577
  /**
356
578
  * ------------------------------------------------------------------------
357
579
  * jQuery
358
580
  * ------------------------------------------------------------------------
581
+ * add .Collapse to jQuery only if jQuery is present
359
582
  */
360
583
 
361
- $.fn[NAME] = Collapse._jQueryInterface;
362
- $.fn[NAME].Constructor = Collapse;
584
+ onDOMContentLoaded(function () {
585
+ var $ = getjQuery();
586
+ /* istanbul ignore if */
363
587
 
364
- $.fn[NAME].noConflict = function () {
365
- $.fn[NAME] = JQUERY_NO_CONFLICT;
366
- return Collapse._jQueryInterface;
367
- };
588
+ if ($) {
589
+ var JQUERY_NO_CONFLICT = $.fn[NAME];
590
+ $.fn[NAME] = Collapse.jQueryInterface;
591
+ $.fn[NAME].Constructor = Collapse;
592
+
593
+ $.fn[NAME].noConflict = function () {
594
+ $.fn[NAME] = JQUERY_NO_CONFLICT;
595
+ return Collapse.jQueryInterface;
596
+ };
597
+ }
598
+ });
368
599
 
369
600
  return Collapse;
370
601