bootstrap 4.5.3 → 5.2.3

Sign up to get free protection for your applications and to get access to all the features.
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
+ }));