bootstrap 4.5.3 → 5.2.3

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 (171) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +55 -0
  3. data/README.md +28 -5
  4. data/assets/javascripts/bootstrap/alert.js +54 -133
  5. data/assets/javascripts/bootstrap/base-component.js +99 -0
  6. data/assets/javascripts/bootstrap/button.js +44 -183
  7. data/assets/javascripts/bootstrap/carousel.js +308 -450
  8. data/assets/javascripts/bootstrap/collapse.js +180 -243
  9. data/assets/javascripts/bootstrap/dom/data.js +66 -0
  10. data/assets/javascripts/bootstrap/dom/event-handler.js +283 -0
  11. data/assets/javascripts/bootstrap/dom/manipulator.js +84 -0
  12. data/assets/javascripts/bootstrap/dom/selector-engine.js +85 -0
  13. data/assets/javascripts/bootstrap/dropdown.js +320 -387
  14. data/assets/javascripts/bootstrap/modal.js +238 -478
  15. data/assets/javascripts/bootstrap/offcanvas.js +297 -0
  16. data/assets/javascripts/bootstrap/popover.js +58 -163
  17. data/assets/javascripts/bootstrap/scrollspy.js +223 -228
  18. data/assets/javascripts/bootstrap/tab.js +251 -166
  19. data/assets/javascripts/bootstrap/toast.js +147 -149
  20. data/assets/javascripts/bootstrap/tooltip.js +434 -646
  21. data/assets/javascripts/bootstrap/util/backdrop.js +165 -0
  22. data/assets/javascripts/bootstrap/util/component-functions.js +46 -0
  23. data/assets/javascripts/bootstrap/util/config.js +79 -0
  24. data/assets/javascripts/bootstrap/util/focustrap.js +129 -0
  25. data/assets/javascripts/bootstrap/util/index.js +350 -0
  26. data/assets/javascripts/bootstrap/util/sanitizer.js +122 -0
  27. data/assets/javascripts/bootstrap/util/scrollbar.js +138 -0
  28. data/assets/javascripts/bootstrap/util/swipe.js +155 -0
  29. data/assets/javascripts/bootstrap/util/template-factory.js +177 -0
  30. data/assets/javascripts/bootstrap-global-this-define.js +6 -0
  31. data/assets/javascripts/bootstrap-global-this-undefine.js +2 -0
  32. data/assets/javascripts/bootstrap-sprockets.js +24 -8
  33. data/assets/javascripts/bootstrap.js +4037 -3206
  34. data/assets/javascripts/bootstrap.min.js +3 -3
  35. data/assets/stylesheets/_bootstrap-grid.scss +56 -21
  36. data/assets/stylesheets/_bootstrap-reboot.scss +4 -7
  37. data/assets/stylesheets/_bootstrap.scss +20 -13
  38. data/assets/stylesheets/bootstrap/_accordion.scss +149 -0
  39. data/assets/stylesheets/bootstrap/_alert.scss +33 -14
  40. data/assets/stylesheets/bootstrap/_badge.scss +15 -31
  41. data/assets/stylesheets/bootstrap/_breadcrumb.scss +23 -27
  42. data/assets/stylesheets/bootstrap/_button-group.scss +25 -46
  43. data/assets/stylesheets/bootstrap/_buttons.scss +136 -71
  44. data/assets/stylesheets/bootstrap/_card.scss +61 -113
  45. data/assets/stylesheets/bootstrap/_carousel.scss +64 -35
  46. data/assets/stylesheets/bootstrap/_close.scss +30 -30
  47. data/assets/stylesheets/bootstrap/_containers.scss +41 -0
  48. data/assets/stylesheets/bootstrap/_dropdown.scss +128 -71
  49. data/assets/stylesheets/bootstrap/_forms.scss +9 -347
  50. data/assets/stylesheets/bootstrap/_functions.scss +181 -23
  51. data/assets/stylesheets/bootstrap/_grid.scss +13 -53
  52. data/assets/stylesheets/bootstrap/_helpers.scss +10 -0
  53. data/assets/stylesheets/bootstrap/_images.scss +1 -1
  54. data/assets/stylesheets/bootstrap/_list-group.scss +72 -34
  55. data/assets/stylesheets/bootstrap/_maps.scss +54 -0
  56. data/assets/stylesheets/bootstrap/_mixins.scss +9 -13
  57. data/assets/stylesheets/bootstrap/_modal.scss +107 -110
  58. data/assets/stylesheets/bootstrap/_nav.scss +72 -23
  59. data/assets/stylesheets/bootstrap/_navbar.scss +127 -173
  60. data/assets/stylesheets/bootstrap/_offcanvas.scss +144 -0
  61. data/assets/stylesheets/bootstrap/_pagination.scss +72 -37
  62. data/assets/stylesheets/bootstrap/_placeholders.scss +51 -0
  63. data/assets/stylesheets/bootstrap/_popover.scss +99 -73
  64. data/assets/stylesheets/bootstrap/_progress.scss +26 -14
  65. data/assets/stylesheets/bootstrap/_reboot.scss +326 -200
  66. data/assets/stylesheets/bootstrap/_root.scss +62 -9
  67. data/assets/stylesheets/bootstrap/_spinners.scss +51 -22
  68. data/assets/stylesheets/bootstrap/_tables.scss +94 -115
  69. data/assets/stylesheets/bootstrap/_toasts.scss +54 -27
  70. data/assets/stylesheets/bootstrap/_tooltip.scss +68 -63
  71. data/assets/stylesheets/bootstrap/_transitions.scss +8 -1
  72. data/assets/stylesheets/bootstrap/_type.scss +40 -59
  73. data/assets/stylesheets/bootstrap/_utilities.scss +647 -18
  74. data/assets/stylesheets/bootstrap/_variables.scss +1018 -526
  75. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +18 -0
  76. data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +75 -0
  77. data/assets/stylesheets/bootstrap/forms/_form-check.scss +175 -0
  78. data/assets/stylesheets/bootstrap/forms/_form-control.scss +194 -0
  79. data/assets/stylesheets/bootstrap/forms/_form-range.scss +91 -0
  80. data/assets/stylesheets/bootstrap/forms/_form-select.scss +71 -0
  81. data/assets/stylesheets/bootstrap/forms/_form-text.scss +11 -0
  82. data/assets/stylesheets/bootstrap/forms/_input-group.scss +132 -0
  83. data/assets/stylesheets/bootstrap/forms/_labels.scss +36 -0
  84. data/assets/stylesheets/bootstrap/forms/_validation.scss +12 -0
  85. data/assets/stylesheets/bootstrap/helpers/_color-bg.scss +10 -0
  86. data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +12 -0
  87. data/assets/stylesheets/bootstrap/helpers/_position.scss +36 -0
  88. data/assets/stylesheets/bootstrap/helpers/_ratio.scss +26 -0
  89. data/assets/stylesheets/bootstrap/helpers/_stacks.scss +15 -0
  90. data/assets/stylesheets/bootstrap/helpers/_stretched-link.scss +15 -0
  91. data/assets/stylesheets/bootstrap/helpers/_text-truncation.scss +7 -0
  92. data/assets/stylesheets/bootstrap/helpers/_visually-hidden.scss +8 -0
  93. data/assets/stylesheets/bootstrap/helpers/_vr.scss +8 -0
  94. data/assets/stylesheets/bootstrap/mixins/_alert.scss +8 -6
  95. data/assets/stylesheets/bootstrap/mixins/_backdrop.scss +14 -0
  96. data/assets/stylesheets/bootstrap/mixins/_banner.scss +9 -0
  97. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +10 -8
  98. data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +7 -9
  99. data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +20 -16
  100. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +60 -100
  101. data/assets/stylesheets/bootstrap/mixins/_caret.scss +10 -8
  102. data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +2 -0
  103. data/assets/stylesheets/bootstrap/mixins/_color-scheme.scss +7 -0
  104. data/assets/stylesheets/bootstrap/mixins/_container.scss +11 -0
  105. data/assets/stylesheets/bootstrap/mixins/_forms.scss +48 -74
  106. data/assets/stylesheets/bootstrap/mixins/_gradients.scss +13 -11
  107. data/assets/stylesheets/bootstrap/mixins/_grid.scss +119 -37
  108. data/assets/stylesheets/bootstrap/mixins/_image.scss +1 -21
  109. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +5 -2
  110. data/assets/stylesheets/bootstrap/mixins/_lists.scss +1 -1
  111. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +7 -19
  112. data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +3 -3
  113. data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +24 -0
  114. data/assets/stylesheets/bootstrap/mixins/_transition.scss +1 -1
  115. data/assets/stylesheets/bootstrap/mixins/_utilities.scss +97 -0
  116. data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +29 -0
  117. data/assets/stylesheets/bootstrap/utilities/_api.scss +47 -0
  118. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +278 -128
  119. data/bootstrap.gemspec +3 -5
  120. data/lib/bootstrap/version.rb +2 -2
  121. data/tasks/updater/js.rb +31 -7
  122. data/tasks/updater/network.rb +9 -3
  123. data/tasks/updater.rb +2 -2
  124. data/test/dummy_rails/app/assets/javascripts/application.js +4 -3
  125. data/test/dummy_rails/app/views/layouts/application.html.erb +3 -1
  126. data/test/dummy_rails/app/views/pages/root.html +89 -0
  127. data/test/dummy_rails/config/application.rb +0 -3
  128. data/test/gemfiles/rails_5_2.gemfile +8 -0
  129. data/test/gemfiles/rails_6_1.gemfile +7 -0
  130. data/test/gemfiles/rails_7_0.gemfile +7 -0
  131. data/test/test_helper.rb +3 -2
  132. metadata +70 -78
  133. data/.travis.yml +0 -31
  134. data/assets/javascripts/bootstrap/util.js +0 -192
  135. data/assets/stylesheets/bootstrap/_code.scss +0 -48
  136. data/assets/stylesheets/bootstrap/_custom-forms.scss +0 -524
  137. data/assets/stylesheets/bootstrap/_input-group.scss +0 -192
  138. data/assets/stylesheets/bootstrap/_jumbotron.scss +0 -17
  139. data/assets/stylesheets/bootstrap/_media.scss +0 -8
  140. data/assets/stylesheets/bootstrap/_print.scss +0 -141
  141. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -23
  142. data/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -17
  143. data/assets/stylesheets/bootstrap/mixins/_float.scss +0 -14
  144. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -80
  145. data/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -37
  146. data/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -11
  147. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +0 -34
  148. data/assets/stylesheets/bootstrap/mixins/_size.scss +0 -7
  149. data/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -39
  150. data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -17
  151. data/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -11
  152. data/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -8
  153. data/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
  154. data/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
  155. data/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -75
  156. data/assets/stylesheets/bootstrap/utilities/_display.scss +0 -26
  157. data/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -39
  158. data/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -51
  159. data/assets/stylesheets/bootstrap/utilities/_float.scss +0 -11
  160. data/assets/stylesheets/bootstrap/utilities/_interactions.scss +0 -5
  161. data/assets/stylesheets/bootstrap/utilities/_overflow.scss +0 -5
  162. data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -32
  163. data/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
  164. data/assets/stylesheets/bootstrap/utilities/_shadows.scss +0 -6
  165. data/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -20
  166. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -73
  167. data/assets/stylesheets/bootstrap/utilities/_stretched-link.scss +0 -19
  168. data/assets/stylesheets/bootstrap/utilities/_text.scss +0 -72
  169. data/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -13
  170. data/test/dummy_rails/app/views/pages/root.html.slim +0 -58
  171. /data/assets/stylesheets/bootstrap/{utilities → helpers}/_clearfix.scss +0 -0
@@ -1,89 +1,81 @@
1
1
  /*!
2
- * Bootstrap collapse.js v4.5.3 (https://getbootstrap.com/)
3
- * Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
2
+ * Bootstrap collapse.js v5.2.3 (https://getbootstrap.com/)
3
+ * Copyright 2011-2022 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('./util/index'), require('./dom/event-handler'), require('./dom/selector-engine'), require('./base-component')) :
8
+ typeof define === 'function' && define.amd ? define(['./util/index', './dom/event-handler', './dom/selector-engine', './base-component'], factory) :
9
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Collapse = factory(global.Index, global.EventHandler, global.SelectorEngine, global.BaseComponent));
10
+ })(this, (function (index, EventHandler, SelectorEngine, BaseComponent) { 'use strict';
11
11
 
12
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
12
+ const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e };
13
13
 
14
- var $__default = /*#__PURE__*/_interopDefaultLegacy($);
15
- var Util__default = /*#__PURE__*/_interopDefaultLegacy(Util);
14
+ const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
15
+ const SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
16
+ const BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
16
17
 
17
- 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); }
18
-
19
- 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); } }
20
-
21
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
22
18
  /**
23
- * ------------------------------------------------------------------------
19
+ * --------------------------------------------------------------------------
20
+ * Bootstrap (v5.2.3): collapse.js
21
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
22
+ * --------------------------------------------------------------------------
23
+ */
24
+ /**
24
25
  * Constants
25
- * ------------------------------------------------------------------------
26
26
  */
27
27
 
28
- var NAME = 'collapse';
29
- var VERSION = '4.5.3';
30
- var DATA_KEY = 'bs.collapse';
31
- var EVENT_KEY = "." + DATA_KEY;
32
- var DATA_API_KEY = '.data-api';
33
- var JQUERY_NO_CONFLICT = $__default['default'].fn[NAME];
34
- var Default = {
35
- toggle: true,
36
- parent: ''
28
+ const NAME = 'collapse';
29
+ const DATA_KEY = 'bs.collapse';
30
+ const EVENT_KEY = `.${DATA_KEY}`;
31
+ const DATA_API_KEY = '.data-api';
32
+ const EVENT_SHOW = `show${EVENT_KEY}`;
33
+ const EVENT_SHOWN = `shown${EVENT_KEY}`;
34
+ const EVENT_HIDE = `hide${EVENT_KEY}`;
35
+ const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
36
+ const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
37
+ const CLASS_NAME_SHOW = 'show';
38
+ const CLASS_NAME_COLLAPSE = 'collapse';
39
+ const CLASS_NAME_COLLAPSING = 'collapsing';
40
+ const CLASS_NAME_COLLAPSED = 'collapsed';
41
+ const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;
42
+ const CLASS_NAME_HORIZONTAL = 'collapse-horizontal';
43
+ const WIDTH = 'width';
44
+ const HEIGHT = 'height';
45
+ const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';
46
+ const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="collapse"]';
47
+ const Default = {
48
+ parent: null,
49
+ toggle: true
37
50
  };
38
- var DefaultType = {
39
- toggle: 'boolean',
40
- parent: '(string|element)'
51
+ const DefaultType = {
52
+ parent: '(null|element)',
53
+ toggle: 'boolean'
41
54
  };
42
- var EVENT_SHOW = "show" + EVENT_KEY;
43
- var EVENT_SHOWN = "shown" + EVENT_KEY;
44
- var EVENT_HIDE = "hide" + EVENT_KEY;
45
- var EVENT_HIDDEN = "hidden" + EVENT_KEY;
46
- var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
47
- var CLASS_NAME_SHOW = 'show';
48
- var CLASS_NAME_COLLAPSE = 'collapse';
49
- var CLASS_NAME_COLLAPSING = 'collapsing';
50
- var CLASS_NAME_COLLAPSED = 'collapsed';
51
- var DIMENSION_WIDTH = 'width';
52
- var DIMENSION_HEIGHT = 'height';
53
- var SELECTOR_ACTIVES = '.show, .collapsing';
54
- var SELECTOR_DATA_TOGGLE = '[data-toggle="collapse"]';
55
55
  /**
56
- * ------------------------------------------------------------------------
57
- * Class Definition
58
- * ------------------------------------------------------------------------
56
+ * Class definition
59
57
  */
60
58
 
61
- var Collapse = /*#__PURE__*/function () {
62
- function Collapse(element, config) {
59
+ class Collapse extends BaseComponent__default.default {
60
+ constructor(element, config) {
61
+ super(element, config);
63
62
  this._isTransitioning = false;
64
- this._element = element;
65
- this._config = this._getConfig(config);
66
- this._triggerArray = [].slice.call(document.querySelectorAll("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]")));
67
- var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));
63
+ this._triggerArray = [];
64
+ const toggleList = SelectorEngine__default.default.find(SELECTOR_DATA_TOGGLE);
68
65
 
69
- for (var i = 0, len = toggleList.length; i < len; i++) {
70
- var elem = toggleList[i];
71
- var selector = Util__default['default'].getSelectorFromElement(elem);
72
- var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {
73
- return foundElem === element;
74
- });
75
-
76
- if (selector !== null && filterElement.length > 0) {
77
- this._selector = selector;
66
+ for (const elem of toggleList) {
67
+ const selector = index.getSelectorFromElement(elem);
68
+ const filterElement = SelectorEngine__default.default.find(selector).filter(foundElement => foundElement === this._element);
78
69
 
70
+ if (selector !== null && filterElement.length) {
79
71
  this._triggerArray.push(elem);
80
72
  }
81
73
  }
82
74
 
83
- this._parent = this._config.parent ? this._getParent() : null;
75
+ this._initializeChildren();
84
76
 
85
77
  if (!this._config.parent) {
86
- this._addAriaAndCollapsedClass(this._element, this._triggerArray);
78
+ this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());
87
79
  }
88
80
 
89
81
  if (this._config.toggle) {
@@ -92,282 +84,227 @@
92
84
  } // Getters
93
85
 
94
86
 
95
- var _proto = Collapse.prototype;
87
+ static get Default() {
88
+ return Default;
89
+ }
90
+
91
+ static get DefaultType() {
92
+ return DefaultType;
93
+ }
96
94
 
97
- // Public
98
- _proto.toggle = function toggle() {
99
- if ($__default['default'](this._element).hasClass(CLASS_NAME_SHOW)) {
95
+ static get NAME() {
96
+ return NAME;
97
+ } // Public
98
+
99
+
100
+ toggle() {
101
+ if (this._isShown()) {
100
102
  this.hide();
101
103
  } else {
102
104
  this.show();
103
105
  }
104
- };
105
-
106
- _proto.show = function show() {
107
- var _this = this;
106
+ }
108
107
 
109
- if (this._isTransitioning || $__default['default'](this._element).hasClass(CLASS_NAME_SHOW)) {
108
+ show() {
109
+ if (this._isTransitioning || this._isShown()) {
110
110
  return;
111
111
  }
112
112
 
113
- var actives;
114
- var activesData;
115
-
116
- if (this._parent) {
117
- actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) {
118
- if (typeof _this._config.parent === 'string') {
119
- return elem.getAttribute('data-parent') === _this._config.parent;
120
- }
121
-
122
- return elem.classList.contains(CLASS_NAME_COLLAPSE);
123
- });
113
+ let activeChildren = []; // find active children
124
114
 
125
- if (actives.length === 0) {
126
- actives = null;
127
- }
115
+ if (this._config.parent) {
116
+ activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, {
117
+ toggle: false
118
+ }));
128
119
  }
129
120
 
130
- if (actives) {
131
- activesData = $__default['default'](actives).not(this._selector).data(DATA_KEY);
132
-
133
- if (activesData && activesData._isTransitioning) {
134
- return;
135
- }
121
+ if (activeChildren.length && activeChildren[0]._isTransitioning) {
122
+ return;
136
123
  }
137
124
 
138
- var startEvent = $__default['default'].Event(EVENT_SHOW);
139
- $__default['default'](this._element).trigger(startEvent);
125
+ const startEvent = EventHandler__default.default.trigger(this._element, EVENT_SHOW);
140
126
 
141
- if (startEvent.isDefaultPrevented()) {
127
+ if (startEvent.defaultPrevented) {
142
128
  return;
143
129
  }
144
130
 
145
- if (actives) {
146
- Collapse._jQueryInterface.call($__default['default'](actives).not(this._selector), 'hide');
147
-
148
- if (!activesData) {
149
- $__default['default'](actives).data(DATA_KEY, null);
150
- }
131
+ for (const activeInstance of activeChildren) {
132
+ activeInstance.hide();
151
133
  }
152
134
 
153
- var dimension = this._getDimension();
135
+ const dimension = this._getDimension();
136
+
137
+ this._element.classList.remove(CLASS_NAME_COLLAPSE);
138
+
139
+ this._element.classList.add(CLASS_NAME_COLLAPSING);
154
140
 
155
- $__default['default'](this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING);
156
141
  this._element.style[dimension] = 0;
157
142
 
158
- if (this._triggerArray.length) {
159
- $__default['default'](this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true);
160
- }
143
+ this._addAriaAndCollapsedClass(this._triggerArray, true);
144
+
145
+ this._isTransitioning = true;
161
146
 
162
- this.setTransitioning(true);
147
+ const complete = () => {
148
+ this._isTransitioning = false;
163
149
 
164
- var complete = function complete() {
165
- $__default['default'](_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW);
166
- _this._element.style[dimension] = '';
150
+ this._element.classList.remove(CLASS_NAME_COLLAPSING);
167
151
 
168
- _this.setTransitioning(false);
152
+ this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
169
153
 
170
- $__default['default'](_this._element).trigger(EVENT_SHOWN);
154
+ this._element.style[dimension] = '';
155
+ EventHandler__default.default.trigger(this._element, EVENT_SHOWN);
171
156
  };
172
157
 
173
- var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
174
- var scrollSize = "scroll" + capitalizedDimension;
175
- var transitionDuration = Util__default['default'].getTransitionDurationFromElement(this._element);
176
- $__default['default'](this._element).one(Util__default['default'].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
177
- this._element.style[dimension] = this._element[scrollSize] + "px";
178
- };
158
+ const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
159
+ const scrollSize = `scroll${capitalizedDimension}`;
179
160
 
180
- _proto.hide = function hide() {
181
- var _this2 = this;
161
+ this._queueCallback(complete, this._element, true);
162
+
163
+ this._element.style[dimension] = `${this._element[scrollSize]}px`;
164
+ }
182
165
 
183
- if (this._isTransitioning || !$__default['default'](this._element).hasClass(CLASS_NAME_SHOW)) {
166
+ hide() {
167
+ if (this._isTransitioning || !this._isShown()) {
184
168
  return;
185
169
  }
186
170
 
187
- var startEvent = $__default['default'].Event(EVENT_HIDE);
188
- $__default['default'](this._element).trigger(startEvent);
171
+ const startEvent = EventHandler__default.default.trigger(this._element, EVENT_HIDE);
189
172
 
190
- if (startEvent.isDefaultPrevented()) {
173
+ if (startEvent.defaultPrevented) {
191
174
  return;
192
175
  }
193
176
 
194
- var dimension = this._getDimension();
177
+ const dimension = this._getDimension();
195
178
 
196
- this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
197
- Util__default['default'].reflow(this._element);
198
- $__default['default'](this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW);
199
- var triggerArrayLength = this._triggerArray.length;
179
+ this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;
180
+ index.reflow(this._element);
200
181
 
201
- if (triggerArrayLength > 0) {
202
- for (var i = 0; i < triggerArrayLength; i++) {
203
- var trigger = this._triggerArray[i];
204
- var selector = Util__default['default'].getSelectorFromElement(trigger);
182
+ this._element.classList.add(CLASS_NAME_COLLAPSING);
205
183
 
206
- if (selector !== null) {
207
- var $elem = $__default['default']([].slice.call(document.querySelectorAll(selector)));
184
+ this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW);
208
185
 
209
- if (!$elem.hasClass(CLASS_NAME_SHOW)) {
210
- $__default['default'](trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false);
211
- }
212
- }
186
+ for (const trigger of this._triggerArray) {
187
+ const element = index.getElementFromSelector(trigger);
188
+
189
+ if (element && !this._isShown(element)) {
190
+ this._addAriaAndCollapsedClass([trigger], false);
213
191
  }
214
192
  }
215
193
 
216
- this.setTransitioning(true);
194
+ this._isTransitioning = true;
195
+
196
+ const complete = () => {
197
+ this._isTransitioning = false;
217
198
 
218
- var complete = function complete() {
219
- _this2.setTransitioning(false);
199
+ this._element.classList.remove(CLASS_NAME_COLLAPSING);
220
200
 
221
- $__default['default'](_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN);
201
+ this._element.classList.add(CLASS_NAME_COLLAPSE);
202
+
203
+ EventHandler__default.default.trigger(this._element, EVENT_HIDDEN);
222
204
  };
223
205
 
224
206
  this._element.style[dimension] = '';
225
- var transitionDuration = Util__default['default'].getTransitionDurationFromElement(this._element);
226
- $__default['default'](this._element).one(Util__default['default'].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
227
- };
228
-
229
- _proto.setTransitioning = function setTransitioning(isTransitioning) {
230
- this._isTransitioning = isTransitioning;
231
- };
232
-
233
- _proto.dispose = function dispose() {
234
- $__default['default'].removeData(this._element, DATA_KEY);
235
- this._config = null;
236
- this._parent = null;
237
- this._element = null;
238
- this._triggerArray = null;
239
- this._isTransitioning = null;
207
+
208
+ this._queueCallback(complete, this._element, true);
209
+ }
210
+
211
+ _isShown(element = this._element) {
212
+ return element.classList.contains(CLASS_NAME_SHOW);
240
213
  } // Private
241
- ;
242
214
 
243
- _proto._getConfig = function _getConfig(config) {
244
- config = _extends({}, Default, config);
215
+
216
+ _configAfterMerge(config) {
245
217
  config.toggle = Boolean(config.toggle); // Coerce string values
246
218
 
247
- Util__default['default'].typeCheckConfig(NAME, config, DefaultType);
219
+ config.parent = index.getElement(config.parent);
248
220
  return config;
249
- };
221
+ }
250
222
 
251
- _proto._getDimension = function _getDimension() {
252
- var hasWidth = $__default['default'](this._element).hasClass(DIMENSION_WIDTH);
253
- return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT;
254
- };
223
+ _getDimension() {
224
+ return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;
225
+ }
255
226
 
256
- _proto._getParent = function _getParent() {
257
- var _this3 = this;
227
+ _initializeChildren() {
228
+ if (!this._config.parent) {
229
+ return;
230
+ }
258
231
 
259
- var parent;
232
+ const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE);
260
233
 
261
- if (Util__default['default'].isElement(this._config.parent)) {
262
- parent = this._config.parent; // It's a jQuery object
234
+ for (const element of children) {
235
+ const selected = index.getElementFromSelector(element);
263
236
 
264
- if (typeof this._config.parent.jquery !== 'undefined') {
265
- parent = this._config.parent[0];
237
+ if (selected) {
238
+ this._addAriaAndCollapsedClass([element], this._isShown(selected));
266
239
  }
267
- } else {
268
- parent = document.querySelector(this._config.parent);
269
240
  }
241
+ }
270
242
 
271
- var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]";
272
- var children = [].slice.call(parent.querySelectorAll(selector));
273
- $__default['default'](children).each(function (i, element) {
274
- _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);
275
- });
276
- return parent;
277
- };
243
+ _getFirstLevelChildren(selector) {
244
+ const children = SelectorEngine__default.default.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); // remove children if greater depth
245
+
246
+ return SelectorEngine__default.default.find(selector, this._config.parent).filter(element => !children.includes(element));
247
+ }
278
248
 
279
- _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
280
- var isOpen = $__default['default'](element).hasClass(CLASS_NAME_SHOW);
249
+ _addAriaAndCollapsedClass(triggerArray, isOpen) {
250
+ if (!triggerArray.length) {
251
+ return;
252
+ }
281
253
 
282
- if (triggerArray.length) {
283
- $__default['default'](triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
254
+ for (const element of triggerArray) {
255
+ element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);
256
+ element.setAttribute('aria-expanded', isOpen);
284
257
  }
285
258
  } // Static
286
- ;
287
259
 
288
- Collapse._getTargetFromElement = function _getTargetFromElement(element) {
289
- var selector = Util__default['default'].getSelectorFromElement(element);
290
- return selector ? document.querySelector(selector) : null;
291
- };
292
-
293
- Collapse._jQueryInterface = function _jQueryInterface(config) {
294
- return this.each(function () {
295
- var $element = $__default['default'](this);
296
- var data = $element.data(DATA_KEY);
297
260
 
298
- var _config = _extends({}, Default, $element.data(), typeof config === 'object' && config ? config : {});
261
+ static jQueryInterface(config) {
262
+ const _config = {};
299
263
 
300
- if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {
301
- _config.toggle = false;
302
- }
264
+ if (typeof config === 'string' && /show|hide/.test(config)) {
265
+ _config.toggle = false;
266
+ }
303
267
 
304
- if (!data) {
305
- data = new Collapse(this, _config);
306
- $element.data(DATA_KEY, data);
307
- }
268
+ return this.each(function () {
269
+ const data = Collapse.getOrCreateInstance(this, _config);
308
270
 
309
271
  if (typeof config === 'string') {
310
272
  if (typeof data[config] === 'undefined') {
311
- throw new TypeError("No method named \"" + config + "\"");
273
+ throw new TypeError(`No method named "${config}"`);
312
274
  }
313
275
 
314
276
  data[config]();
315
277
  }
316
278
  });
317
- };
318
-
319
- _createClass(Collapse, null, [{
320
- key: "VERSION",
321
- get: function get() {
322
- return VERSION;
323
- }
324
- }, {
325
- key: "Default",
326
- get: function get() {
327
- return Default;
328
- }
329
- }]);
279
+ }
330
280
 
331
- return Collapse;
332
- }();
281
+ }
333
282
  /**
334
- * ------------------------------------------------------------------------
335
- * Data Api implementation
336
- * ------------------------------------------------------------------------
283
+ * Data API implementation
337
284
  */
338
285
 
339
286
 
340
- $__default['default'](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
287
+ EventHandler__default.default.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
341
288
  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
342
- if (event.currentTarget.tagName === 'A') {
289
+ if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {
343
290
  event.preventDefault();
344
291
  }
345
292
 
346
- var $trigger = $__default['default'](this);
347
- var selector = Util__default['default'].getSelectorFromElement(this);
348
- var selectors = [].slice.call(document.querySelectorAll(selector));
349
- $__default['default'](selectors).each(function () {
350
- var $target = $__default['default'](this);
351
- var data = $target.data(DATA_KEY);
352
- var config = data ? 'toggle' : $trigger.data();
293
+ const selector = index.getSelectorFromElement(this);
294
+ const selectorElements = SelectorEngine__default.default.find(selector);
353
295
 
354
- Collapse._jQueryInterface.call($target, config);
355
- });
296
+ for (const element of selectorElements) {
297
+ Collapse.getOrCreateInstance(element, {
298
+ toggle: false
299
+ }).toggle();
300
+ }
356
301
  });
357
302
  /**
358
- * ------------------------------------------------------------------------
359
303
  * jQuery
360
- * ------------------------------------------------------------------------
361
304
  */
362
305
 
363
- $__default['default'].fn[NAME] = Collapse._jQueryInterface;
364
- $__default['default'].fn[NAME].Constructor = Collapse;
365
-
366
- $__default['default'].fn[NAME].noConflict = function () {
367
- $__default['default'].fn[NAME] = JQUERY_NO_CONFLICT;
368
- return Collapse._jQueryInterface;
369
- };
306
+ index.defineJQueryPlugin(Collapse);
370
307
 
371
308
  return Collapse;
372
309
 
373
- })));
310
+ }));
@@ -0,0 +1,66 @@
1
+ /*!
2
+ * Bootstrap data.js v5.2.3 (https://getbootstrap.com/)
3
+ * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
+ */
6
+ (function (global, factory) {
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
8
+ typeof define === 'function' && define.amd ? define(factory) :
9
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Data = factory());
10
+ })(this, (function () { 'use strict';
11
+
12
+ /**
13
+ * --------------------------------------------------------------------------
14
+ * Bootstrap (v5.2.3): dom/data.js
15
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
16
+ * --------------------------------------------------------------------------
17
+ */
18
+
19
+ /**
20
+ * Constants
21
+ */
22
+ const elementMap = new Map();
23
+ const data = {
24
+ set(element, key, instance) {
25
+ if (!elementMap.has(element)) {
26
+ elementMap.set(element, new Map());
27
+ }
28
+
29
+ const instanceMap = elementMap.get(element); // make it clear we only want one instance per element
30
+ // can be removed later when multiple key/instances are fine to be used
31
+
32
+ if (!instanceMap.has(key) && instanceMap.size !== 0) {
33
+ // eslint-disable-next-line no-console
34
+ console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);
35
+ return;
36
+ }
37
+
38
+ instanceMap.set(key, instance);
39
+ },
40
+
41
+ get(element, key) {
42
+ if (elementMap.has(element)) {
43
+ return elementMap.get(element).get(key) || null;
44
+ }
45
+
46
+ return null;
47
+ },
48
+
49
+ remove(element, key) {
50
+ if (!elementMap.has(element)) {
51
+ return;
52
+ }
53
+
54
+ const instanceMap = elementMap.get(element);
55
+ instanceMap.delete(key); // free up element references if there are no instances left for an element
56
+
57
+ if (instanceMap.size === 0) {
58
+ elementMap.delete(element);
59
+ }
60
+ }
61
+
62
+ };
63
+
64
+ return data;
65
+
66
+ }));