bootstrap 5.0.2 → 5.1.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 (54) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/assets/javascripts/bootstrap/alert.js +78 -48
  4. data/assets/javascripts/bootstrap/base-component.js +22 -17
  5. data/assets/javascripts/bootstrap/button.js +19 -12
  6. data/assets/javascripts/bootstrap/carousel.js +66 -44
  7. data/assets/javascripts/bootstrap/collapse.js +114 -131
  8. data/assets/javascripts/bootstrap/dom/data.js +5 -5
  9. data/assets/javascripts/bootstrap/dom/event-handler.js +11 -5
  10. data/assets/javascripts/bootstrap/dom/manipulator.js +6 -6
  11. data/assets/javascripts/bootstrap/dom/selector-engine.js +49 -7
  12. data/assets/javascripts/bootstrap/dropdown.js +96 -106
  13. data/assets/javascripts/bootstrap/modal.js +241 -87
  14. data/assets/javascripts/bootstrap/offcanvas.js +203 -57
  15. data/assets/javascripts/bootstrap/popover.js +25 -58
  16. data/assets/javascripts/bootstrap/scrollspy.js +47 -66
  17. data/assets/javascripts/bootstrap/tab.js +41 -22
  18. data/assets/javascripts/bootstrap/toast.js +124 -29
  19. data/assets/javascripts/bootstrap/tooltip.js +122 -104
  20. data/assets/javascripts/bootstrap-sprockets.js +7 -7
  21. data/assets/javascripts/bootstrap.js +660 -630
  22. data/assets/javascripts/bootstrap.min.js +2 -2
  23. data/assets/stylesheets/_bootstrap-grid.scss +3 -1
  24. data/assets/stylesheets/_bootstrap-reboot.scss +2 -4
  25. data/assets/stylesheets/_bootstrap.scss +2 -1
  26. data/assets/stylesheets/bootstrap/_card.scss +2 -1
  27. data/assets/stylesheets/bootstrap/_functions.scss +51 -12
  28. data/assets/stylesheets/bootstrap/_grid.scss +11 -0
  29. data/assets/stylesheets/bootstrap/_helpers.scss +2 -0
  30. data/assets/stylesheets/bootstrap/_mixins.scss +1 -0
  31. data/assets/stylesheets/bootstrap/_modal.scss +1 -11
  32. data/assets/stylesheets/bootstrap/_navbar.scss +30 -1
  33. data/assets/stylesheets/bootstrap/_offcanvas.scss +4 -0
  34. data/assets/stylesheets/bootstrap/_placeholders.scss +51 -0
  35. data/assets/stylesheets/bootstrap/_reboot.scss +12 -8
  36. data/assets/stylesheets/bootstrap/_root.scss +40 -2
  37. data/assets/stylesheets/bootstrap/_tables.scss +8 -4
  38. data/assets/stylesheets/bootstrap/_toasts.scss +2 -2
  39. data/assets/stylesheets/bootstrap/_transitions.scss +6 -0
  40. data/assets/stylesheets/bootstrap/_utilities.scss +44 -8
  41. data/assets/stylesheets/bootstrap/_variables.scss +184 -11
  42. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +1 -1
  43. data/assets/stylesheets/bootstrap/forms/_form-control.scss +1 -1
  44. data/assets/stylesheets/bootstrap/forms/_form-select.scss +2 -0
  45. data/assets/stylesheets/bootstrap/helpers/_stacks.scss +15 -0
  46. data/assets/stylesheets/bootstrap/helpers/_vr.scss +8 -0
  47. data/assets/stylesheets/bootstrap/mixins/_backdrop.scss +14 -0
  48. data/assets/stylesheets/bootstrap/mixins/_grid.scss +29 -10
  49. data/assets/stylesheets/bootstrap/mixins/_utilities.scss +27 -6
  50. data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +1 -1
  51. data/bootstrap.gemspec +3 -3
  52. data/lib/bootstrap/version.rb +2 -2
  53. data/tasks/updater/js.rb +6 -2
  54. metadata +12 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0314dcfea7c5fef8beb89c89aae1079993ed58c6509eb6325a7b00bd25bac45e
4
- data.tar.gz: 1cf536b8bb87f45060505977be1c795d1159b72bce299caeb8652a2f9c122e21
3
+ metadata.gz: 666b108731be39c8122df9a54b7b2a1715f02b92e03caa941c132b3e7ec352ca
4
+ data.tar.gz: 57086f0d9bb88ba6a0abf74a5f0006b6eed21168d37009c2159e8ab9b68385f4
5
5
  SHA512:
6
- metadata.gz: 91e3199ea081cf8a4e515f637a20f155ae77ab602e821220e35218cd52af51563adc616646c099aeda3ee88ee1365d12bb12865963f6fae5b7481af449d3351d
7
- data.tar.gz: 56fbbc51f5db1cad7c06e785f7b8868010c7db2bdaa6d9278a012b28b15cf7cbbe7c5fa3339f49df40e751032e956f4a00d57558caff3f626d9f1ab4236122a4
6
+ metadata.gz: 6171d65c922c486d41a0cb7f4e781e389b2cf0d9e00cf7c350fcdf6ab59b814e8daa7449a9a97d7462e6945f766261466cbf750f0aedc07301f366d2f7731eaf
7
+ data.tar.gz: b65871d048cecf29a714362f75348bc167ba158e50197908cde71ff197d834c0d84eb9ead9be4f7c87c22f49da0c164a6aa997843b2bc5998f6b12effc762db7
data/README.md CHANGED
@@ -20,7 +20,7 @@ Please see the appropriate guide for your environment of choice:
20
20
  Add `bootstrap` to your Gemfile:
21
21
 
22
22
  ```ruby
23
- gem 'bootstrap', '~> 5.0.2'
23
+ gem 'bootstrap', '~> 5.1.3'
24
24
  ```
25
25
 
26
26
  Ensure that `sprockets-rails` is at least v2.3.2.
@@ -1,18 +1,25 @@
1
1
  /*!
2
- * Bootstrap alert.js v5.0.2 (https://getbootstrap.com/)
2
+ * Bootstrap alert.js v5.1.3 (https://getbootstrap.com/)
3
3
  * Copyright 2011-2021 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('./dom/selector-engine.js'), require('./dom/event-handler.js'), require('./base-component.js')) :
8
- typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/event-handler', './base-component'], factory) :
9
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Alert = factory(global.SelectorEngine, global.EventHandler, global.Base));
10
- }(this, (function (SelectorEngine, EventHandler, BaseComponent) { 'use strict';
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/event-handler.js'), require('./base-component.js')) :
8
+ typeof define === 'function' && define.amd ? define(['./dom/event-handler', './base-component'], factory) :
9
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Alert = factory(global.EventHandler, global.Base));
10
+ })(this, (function (EventHandler, 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 EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
15
- var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
14
+ const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
15
+ const BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
16
+
17
+ /**
18
+ * --------------------------------------------------------------------------
19
+ * Bootstrap (v5.1.3): util/index.js
20
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
21
+ * --------------------------------------------------------------------------
22
+ */
16
23
 
17
24
  const getSelector = element => {
18
25
  let selector = element.getAttribute('data-bs-target');
@@ -43,6 +50,22 @@
43
50
  return selector ? document.querySelector(selector) : null;
44
51
  };
45
52
 
53
+ const isDisabled = element => {
54
+ if (!element || element.nodeType !== Node.ELEMENT_NODE) {
55
+ return true;
56
+ }
57
+
58
+ if (element.classList.contains('disabled')) {
59
+ return true;
60
+ }
61
+
62
+ if (typeof element.disabled !== 'undefined') {
63
+ return element.disabled;
64
+ }
65
+
66
+ return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';
67
+ };
68
+
46
69
  const getjQuery = () => {
47
70
  const {
48
71
  jQuery
@@ -93,7 +116,33 @@
93
116
 
94
117
  /**
95
118
  * --------------------------------------------------------------------------
96
- * Bootstrap (v5.0.2): alert.js
119
+ * Bootstrap (v5.1.3): util/component-functions.js
120
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
121
+ * --------------------------------------------------------------------------
122
+ */
123
+
124
+ const enableDismissTrigger = (component, method = 'hide') => {
125
+ const clickEvent = `click.dismiss${component.EVENT_KEY}`;
126
+ const name = component.NAME;
127
+ EventHandler__default.default.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) {
128
+ if (['A', 'AREA'].includes(this.tagName)) {
129
+ event.preventDefault();
130
+ }
131
+
132
+ if (isDisabled(this)) {
133
+ return;
134
+ }
135
+
136
+ const target = getElementFromSelector(this) || this.closest(`.${name}`);
137
+ const instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method
138
+
139
+ instance[method]();
140
+ });
141
+ };
142
+
143
+ /**
144
+ * --------------------------------------------------------------------------
145
+ * Bootstrap (v5.1.3): alert.js
97
146
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
98
147
  * --------------------------------------------------------------------------
99
148
  */
@@ -106,12 +155,8 @@
106
155
  const NAME = 'alert';
107
156
  const DATA_KEY = 'bs.alert';
108
157
  const EVENT_KEY = `.${DATA_KEY}`;
109
- const DATA_API_KEY = '.data-api';
110
- const SELECTOR_DISMISS = '[data-bs-dismiss="alert"]';
111
158
  const EVENT_CLOSE = `close${EVENT_KEY}`;
112
159
  const EVENT_CLOSED = `closed${EVENT_KEY}`;
113
- const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
114
- const CLASS_NAME_ALERT = 'alert';
115
160
  const CLASS_NAME_FADE = 'fade';
116
161
  const CLASS_NAME_SHOW = 'show';
117
162
  /**
@@ -120,44 +165,33 @@
120
165
  * ------------------------------------------------------------------------
121
166
  */
122
167
 
123
- class Alert extends BaseComponent__default['default'] {
168
+ class Alert extends BaseComponent__default.default {
124
169
  // Getters
125
170
  static get NAME() {
126
171
  return NAME;
127
172
  } // Public
128
173
 
129
174
 
130
- close(element) {
131
- const rootElement = element ? this._getRootElement(element) : this._element;
132
-
133
- const customEvent = this._triggerCloseEvent(rootElement);
175
+ close() {
176
+ const closeEvent = EventHandler__default.default.trigger(this._element, EVENT_CLOSE);
134
177
 
135
- if (customEvent === null || customEvent.defaultPrevented) {
178
+ if (closeEvent.defaultPrevented) {
136
179
  return;
137
180
  }
138
181
 
139
- this._removeElement(rootElement);
140
- } // Private
182
+ this._element.classList.remove(CLASS_NAME_SHOW);
141
183
 
184
+ const isAnimated = this._element.classList.contains(CLASS_NAME_FADE);
142
185
 
143
- _getRootElement(element) {
144
- return getElementFromSelector(element) || element.closest(`.${CLASS_NAME_ALERT}`);
145
- }
186
+ this._queueCallback(() => this._destroyElement(), this._element, isAnimated);
187
+ } // Private
146
188
 
147
- _triggerCloseEvent(element) {
148
- return EventHandler__default['default'].trigger(element, EVENT_CLOSE);
149
- }
150
189
 
151
- _removeElement(element) {
152
- element.classList.remove(CLASS_NAME_SHOW);
153
- const isAnimated = element.classList.contains(CLASS_NAME_FADE);
190
+ _destroyElement() {
191
+ this._element.remove();
154
192
 
155
- this._queueCallback(() => this._destroyElement(element), element, isAnimated);
156
- }
157
-
158
- _destroyElement(element) {
159
- element.remove();
160
- EventHandler__default['default'].trigger(element, EVENT_CLOSED);
193
+ EventHandler__default.default.trigger(this._element, EVENT_CLOSED);
194
+ this.dispose();
161
195
  } // Static
162
196
 
163
197
 
@@ -165,20 +199,16 @@
165
199
  return this.each(function () {
166
200
  const data = Alert.getOrCreateInstance(this);
167
201
 
168
- if (config === 'close') {
169
- data[config](this);
202
+ if (typeof config !== 'string') {
203
+ return;
170
204
  }
171
- });
172
- }
173
205
 
174
- static handleDismiss(alertInstance) {
175
- return function (event) {
176
- if (event) {
177
- event.preventDefault();
206
+ if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
207
+ throw new TypeError(`No method named "${config}"`);
178
208
  }
179
209
 
180
- alertInstance.close(this);
181
- };
210
+ data[config](this);
211
+ });
182
212
  }
183
213
 
184
214
  }
@@ -189,7 +219,7 @@
189
219
  */
190
220
 
191
221
 
192
- EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert()));
222
+ enableDismissTrigger(Alert, 'close');
193
223
  /**
194
224
  * ------------------------------------------------------------------------
195
225
  * jQuery
@@ -201,4 +231,4 @@
201
231
 
202
232
  return Alert;
203
233
 
204
- })));
234
+ }));
@@ -1,20 +1,25 @@
1
1
  /*!
2
- * Bootstrap base-component.js v5.0.2 (https://getbootstrap.com/)
2
+ * Bootstrap base-component.js v5.1.3 (https://getbootstrap.com/)
3
3
  * Copyright 2011-2021 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('./dom/data.js'), require('./dom/selector-engine.js'), require('./dom/event-handler.js')) :
8
- typeof define === 'function' && define.amd ? define(['./dom/data', './dom/selector-engine', './dom/event-handler'], factory) :
9
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Base = factory(global.Data, global.SelectorEngine, global.EventHandler));
10
- }(this, (function (Data, SelectorEngine, EventHandler) { 'use strict';
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js'), require('./dom/event-handler.js')) :
8
+ typeof define === 'function' && define.amd ? define(['./dom/data', './dom/event-handler'], factory) :
9
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Base = factory(global.Data, global.EventHandler));
10
+ })(this, (function (Data, EventHandler) { '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 Data__default = /*#__PURE__*/_interopDefaultLegacy(Data);
15
- var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
16
- var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
14
+ const Data__default = /*#__PURE__*/_interopDefaultLegacy(Data);
15
+ const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
17
16
 
17
+ /**
18
+ * --------------------------------------------------------------------------
19
+ * Bootstrap (v5.1.3): util/index.js
20
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
21
+ * --------------------------------------------------------------------------
22
+ */
18
23
  const MILLISECONDS_MULTIPLIER = 1000;
19
24
  const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
20
25
 
@@ -64,7 +69,7 @@
64
69
  }
65
70
 
66
71
  if (typeof obj === 'string' && obj.length > 0) {
67
- return SelectorEngine__default['default'].findOne(obj);
72
+ return document.querySelector(obj);
68
73
  }
69
74
 
70
75
  return null;
@@ -108,7 +113,7 @@
108
113
 
109
114
  /**
110
115
  * --------------------------------------------------------------------------
111
- * Bootstrap (v5.0.2): base-component.js
116
+ * Bootstrap (v5.1.3): base-component.js
112
117
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
113
118
  * --------------------------------------------------------------------------
114
119
  */
@@ -118,7 +123,7 @@
118
123
  * ------------------------------------------------------------------------
119
124
  */
120
125
 
121
- const VERSION = '5.0.2';
126
+ const VERSION = '5.1.3';
122
127
 
123
128
  class BaseComponent {
124
129
  constructor(element) {
@@ -129,12 +134,12 @@
129
134
  }
130
135
 
131
136
  this._element = element;
132
- Data__default['default'].set(this._element, this.constructor.DATA_KEY, this);
137
+ Data__default.default.set(this._element, this.constructor.DATA_KEY, this);
133
138
  }
134
139
 
135
140
  dispose() {
136
- Data__default['default'].remove(this._element, this.constructor.DATA_KEY);
137
- EventHandler__default['default'].off(this._element, this.constructor.EVENT_KEY);
141
+ Data__default.default.remove(this._element, this.constructor.DATA_KEY);
142
+ EventHandler__default.default.off(this._element, this.constructor.EVENT_KEY);
138
143
  Object.getOwnPropertyNames(this).forEach(propertyName => {
139
144
  this[propertyName] = null;
140
145
  });
@@ -147,7 +152,7 @@
147
152
 
148
153
 
149
154
  static getInstance(element) {
150
- return Data__default['default'].get(element, this.DATA_KEY);
155
+ return Data__default.default.get(getElement(element), this.DATA_KEY);
151
156
  }
152
157
 
153
158
  static getOrCreateInstance(element, config = {}) {
@@ -174,4 +179,4 @@
174
179
 
175
180
  return BaseComponent;
176
181
 
177
- })));
182
+ }));
@@ -1,18 +1,25 @@
1
1
  /*!
2
- * Bootstrap button.js v5.0.2 (https://getbootstrap.com/)
2
+ * Bootstrap button.js v5.1.3 (https://getbootstrap.com/)
3
3
  * Copyright 2011-2021 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('./dom/selector-engine.js'), require('./dom/event-handler.js'), require('./base-component.js')) :
8
- typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/event-handler', './base-component'], factory) :
9
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Button = factory(global.SelectorEngine, global.EventHandler, global.Base));
10
- }(this, (function (SelectorEngine, EventHandler, BaseComponent) { 'use strict';
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/event-handler.js'), require('./base-component.js')) :
8
+ typeof define === 'function' && define.amd ? define(['./dom/event-handler', './base-component'], factory) :
9
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Button = factory(global.EventHandler, global.Base));
10
+ })(this, (function (EventHandler, 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 EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
15
- var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
14
+ const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
15
+ const BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
16
+
17
+ /**
18
+ * --------------------------------------------------------------------------
19
+ * Bootstrap (v5.1.3): util/index.js
20
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
21
+ * --------------------------------------------------------------------------
22
+ */
16
23
 
17
24
  const getjQuery = () => {
18
25
  const {
@@ -64,7 +71,7 @@
64
71
 
65
72
  /**
66
73
  * --------------------------------------------------------------------------
67
- * Bootstrap (v5.0.2): button.js
74
+ * Bootstrap (v5.1.3): button.js
68
75
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
69
76
  * --------------------------------------------------------------------------
70
77
  */
@@ -87,7 +94,7 @@
87
94
  * ------------------------------------------------------------------------
88
95
  */
89
96
 
90
- class Button extends BaseComponent__default['default'] {
97
+ class Button extends BaseComponent__default.default {
91
98
  // Getters
92
99
  static get NAME() {
93
100
  return NAME;
@@ -118,7 +125,7 @@
118
125
  */
119
126
 
120
127
 
121
- EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {
128
+ EventHandler__default.default.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {
122
129
  event.preventDefault();
123
130
  const button = event.target.closest(SELECTOR_DATA_TOGGLE);
124
131
  const data = Button.getOrCreateInstance(button);
@@ -135,4 +142,4 @@
135
142
 
136
143
  return Button;
137
144
 
138
- })));
145
+ }));
@@ -1,21 +1,27 @@
1
1
  /*!
2
- * Bootstrap carousel.js v5.0.2 (https://getbootstrap.com/)
2
+ * Bootstrap carousel.js v5.1.3 (https://getbootstrap.com/)
3
3
  * Copyright 2011-2021 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('./dom/selector-engine.js'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./base-component.js')) :
8
- typeof define === 'function' && define.amd ? define(['./dom/selector-engine', './dom/event-handler', './dom/manipulator', './base-component'], factory) :
9
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Carousel = factory(global.SelectorEngine, global.EventHandler, global.Manipulator, global.Base));
10
- }(this, (function (SelectorEngine, EventHandler, Manipulator, BaseComponent) { 'use strict';
7
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./dom/selector-engine.js'), require('./base-component.js')) :
8
+ typeof define === 'function' && define.amd ? define(['./dom/event-handler', './dom/manipulator', './dom/selector-engine', './base-component'], factory) :
9
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Carousel = factory(global.EventHandler, global.Manipulator, global.SelectorEngine, global.Base));
10
+ })(this, (function (EventHandler, Manipulator, 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 SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
15
- var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
16
- var Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);
17
- var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
14
+ const EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
15
+ const Manipulator__default = /*#__PURE__*/_interopDefaultLegacy(Manipulator);
16
+ const SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
17
+ const BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
18
18
 
19
+ /**
20
+ * --------------------------------------------------------------------------
21
+ * Bootstrap (v5.1.3): util/index.js
22
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
23
+ * --------------------------------------------------------------------------
24
+ */
19
25
  const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
20
26
 
21
27
  const toType = obj => {
@@ -90,8 +96,20 @@
90
96
 
91
97
  return getComputedStyle(element).getPropertyValue('visibility') === 'visible';
92
98
  };
99
+ /**
100
+ * Trick to restart an element's animation
101
+ *
102
+ * @param {HTMLElement} element
103
+ * @return void
104
+ *
105
+ * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation
106
+ */
107
+
93
108
 
94
- const reflow = element => element.offsetHeight;
109
+ const reflow = element => {
110
+ // eslint-disable-next-line no-unused-expressions
111
+ element.offsetHeight;
112
+ };
95
113
 
96
114
  const getjQuery = () => {
97
115
  const {
@@ -172,7 +190,7 @@
172
190
 
173
191
  /**
174
192
  * --------------------------------------------------------------------------
175
- * Bootstrap (v5.0.2): carousel.js
193
+ * Bootstrap (v5.1.3): carousel.js
176
194
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
177
195
  * --------------------------------------------------------------------------
178
196
  */
@@ -253,7 +271,7 @@
253
271
  * ------------------------------------------------------------------------
254
272
  */
255
273
 
256
- class Carousel extends BaseComponent__default['default'] {
274
+ class Carousel extends BaseComponent__default.default {
257
275
  constructor(element, config) {
258
276
  super(element);
259
277
  this._items = null;
@@ -265,7 +283,7 @@
265
283
  this.touchStartX = 0;
266
284
  this.touchDeltaX = 0;
267
285
  this._config = this._getConfig(config);
268
- this._indicatorsElement = SelectorEngine__default['default'].findOne(SELECTOR_INDICATORS, this._element);
286
+ this._indicatorsElement = SelectorEngine__default.default.findOne(SELECTOR_INDICATORS, this._element);
269
287
  this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
270
288
  this._pointerEvent = Boolean(window.PointerEvent);
271
289
 
@@ -303,7 +321,7 @@
303
321
  this._isPaused = true;
304
322
  }
305
323
 
306
- if (SelectorEngine__default['default'].findOne(SELECTOR_NEXT_PREV, this._element)) {
324
+ if (SelectorEngine__default.default.findOne(SELECTOR_NEXT_PREV, this._element)) {
307
325
  triggerTransitionEnd(this._element);
308
326
  this.cycle(true);
309
327
  }
@@ -330,7 +348,7 @@
330
348
  }
331
349
 
332
350
  to(index) {
333
- this._activeElement = SelectorEngine__default['default'].findOne(SELECTOR_ACTIVE_ITEM, this._element);
351
+ this._activeElement = SelectorEngine__default.default.findOne(SELECTOR_ACTIVE_ITEM, this._element);
334
352
 
335
353
  const activeIndex = this._getItemIndex(this._activeElement);
336
354
 
@@ -339,7 +357,7 @@
339
357
  }
340
358
 
341
359
  if (this._isSliding) {
342
- EventHandler__default['default'].one(this._element, EVENT_SLID, () => this.to(index));
360
+ EventHandler__default.default.one(this._element, EVENT_SLID, () => this.to(index));
343
361
  return;
344
362
  }
345
363
 
@@ -357,7 +375,7 @@
357
375
 
358
376
  _getConfig(config) {
359
377
  config = { ...Default,
360
- ...Manipulator__default['default'].getDataAttributes(this._element),
378
+ ...Manipulator__default.default.getDataAttributes(this._element),
361
379
  ...(typeof config === 'object' ? config : {})
362
380
  };
363
381
  typeCheckConfig(NAME, config, DefaultType);
@@ -383,12 +401,12 @@
383
401
 
384
402
  _addEventListeners() {
385
403
  if (this._config.keyboard) {
386
- EventHandler__default['default'].on(this._element, EVENT_KEYDOWN, event => this._keydown(event));
404
+ EventHandler__default.default.on(this._element, EVENT_KEYDOWN, event => this._keydown(event));
387
405
  }
388
406
 
389
407
  if (this._config.pause === 'hover') {
390
- EventHandler__default['default'].on(this._element, EVENT_MOUSEENTER, event => this.pause(event));
391
- EventHandler__default['default'].on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event));
408
+ EventHandler__default.default.on(this._element, EVENT_MOUSEENTER, event => this.pause(event));
409
+ EventHandler__default.default.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event));
392
410
  }
393
411
 
394
412
  if (this._config.touch && this._touchSupported) {
@@ -397,8 +415,12 @@
397
415
  }
398
416
 
399
417
  _addTouchEventListeners() {
418
+ const hasPointerPenTouch = event => {
419
+ return this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);
420
+ };
421
+
400
422
  const start = event => {
401
- if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {
423
+ if (hasPointerPenTouch(event)) {
402
424
  this.touchStartX = event.clientX;
403
425
  } else if (!this._pointerEvent) {
404
426
  this.touchStartX = event.touches[0].clientX;
@@ -411,7 +433,7 @@
411
433
  };
412
434
 
413
435
  const end = event => {
414
- if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {
436
+ if (hasPointerPenTouch(event)) {
415
437
  this.touchDeltaX = event.clientX - this.touchStartX;
416
438
  }
417
439
 
@@ -435,19 +457,19 @@
435
457
  }
436
458
  };
437
459
 
438
- SelectorEngine__default['default'].find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {
439
- EventHandler__default['default'].on(itemImg, EVENT_DRAG_START, e => e.preventDefault());
460
+ SelectorEngine__default.default.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {
461
+ EventHandler__default.default.on(itemImg, EVENT_DRAG_START, event => event.preventDefault());
440
462
  });
441
463
 
442
464
  if (this._pointerEvent) {
443
- EventHandler__default['default'].on(this._element, EVENT_POINTERDOWN, event => start(event));
444
- EventHandler__default['default'].on(this._element, EVENT_POINTERUP, event => end(event));
465
+ EventHandler__default.default.on(this._element, EVENT_POINTERDOWN, event => start(event));
466
+ EventHandler__default.default.on(this._element, EVENT_POINTERUP, event => end(event));
445
467
 
446
468
  this._element.classList.add(CLASS_NAME_POINTER_EVENT);
447
469
  } else {
448
- EventHandler__default['default'].on(this._element, EVENT_TOUCHSTART, event => start(event));
449
- EventHandler__default['default'].on(this._element, EVENT_TOUCHMOVE, event => move(event));
450
- EventHandler__default['default'].on(this._element, EVENT_TOUCHEND, event => end(event));
470
+ EventHandler__default.default.on(this._element, EVENT_TOUCHSTART, event => start(event));
471
+ EventHandler__default.default.on(this._element, EVENT_TOUCHMOVE, event => move(event));
472
+ EventHandler__default.default.on(this._element, EVENT_TOUCHEND, event => end(event));
451
473
  }
452
474
  }
453
475
 
@@ -466,7 +488,7 @@
466
488
  }
467
489
 
468
490
  _getItemIndex(element) {
469
- this._items = element && element.parentNode ? SelectorEngine__default['default'].find(SELECTOR_ITEM, element.parentNode) : [];
491
+ this._items = element && element.parentNode ? SelectorEngine__default.default.find(SELECTOR_ITEM, element.parentNode) : [];
470
492
  return this._items.indexOf(element);
471
493
  }
472
494
 
@@ -478,9 +500,9 @@
478
500
  _triggerSlideEvent(relatedTarget, eventDirectionName) {
479
501
  const targetIndex = this._getItemIndex(relatedTarget);
480
502
 
481
- const fromIndex = this._getItemIndex(SelectorEngine__default['default'].findOne(SELECTOR_ACTIVE_ITEM, this._element));
503
+ const fromIndex = this._getItemIndex(SelectorEngine__default.default.findOne(SELECTOR_ACTIVE_ITEM, this._element));
482
504
 
483
- return EventHandler__default['default'].trigger(this._element, EVENT_SLIDE, {
505
+ return EventHandler__default.default.trigger(this._element, EVENT_SLIDE, {
484
506
  relatedTarget,
485
507
  direction: eventDirectionName,
486
508
  from: fromIndex,
@@ -490,10 +512,10 @@
490
512
 
491
513
  _setActiveIndicatorElement(element) {
492
514
  if (this._indicatorsElement) {
493
- const activeIndicator = SelectorEngine__default['default'].findOne(SELECTOR_ACTIVE, this._indicatorsElement);
515
+ const activeIndicator = SelectorEngine__default.default.findOne(SELECTOR_ACTIVE, this._indicatorsElement);
494
516
  activeIndicator.classList.remove(CLASS_NAME_ACTIVE);
495
517
  activeIndicator.removeAttribute('aria-current');
496
- const indicators = SelectorEngine__default['default'].find(SELECTOR_INDICATOR, this._indicatorsElement);
518
+ const indicators = SelectorEngine__default.default.find(SELECTOR_INDICATOR, this._indicatorsElement);
497
519
 
498
520
  for (let i = 0; i < indicators.length; i++) {
499
521
  if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {
@@ -506,7 +528,7 @@
506
528
  }
507
529
 
508
530
  _updateInterval() {
509
- const element = this._activeElement || SelectorEngine__default['default'].findOne(SELECTOR_ACTIVE_ITEM, this._element);
531
+ const element = this._activeElement || SelectorEngine__default.default.findOne(SELECTOR_ACTIVE_ITEM, this._element);
510
532
 
511
533
  if (!element) {
512
534
  return;
@@ -525,7 +547,7 @@
525
547
  _slide(directionOrOrder, element) {
526
548
  const order = this._directionToOrder(directionOrOrder);
527
549
 
528
- const activeElement = SelectorEngine__default['default'].findOne(SELECTOR_ACTIVE_ITEM, this._element);
550
+ const activeElement = SelectorEngine__default.default.findOne(SELECTOR_ACTIVE_ITEM, this._element);
529
551
 
530
552
  const activeElementIndex = this._getItemIndex(activeElement);
531
553
 
@@ -571,7 +593,7 @@
571
593
  this._activeElement = nextElement;
572
594
 
573
595
  const triggerSlidEvent = () => {
574
- EventHandler__default['default'].trigger(this._element, EVENT_SLID, {
596
+ EventHandler__default.default.trigger(this._element, EVENT_SLID, {
575
597
  relatedTarget: nextElement,
576
598
  direction: eventDirectionName,
577
599
  from: activeElementIndex,
@@ -672,8 +694,8 @@
672
694
  return;
673
695
  }
674
696
 
675
- const config = { ...Manipulator__default['default'].getDataAttributes(target),
676
- ...Manipulator__default['default'].getDataAttributes(this)
697
+ const config = { ...Manipulator__default.default.getDataAttributes(target),
698
+ ...Manipulator__default.default.getDataAttributes(this)
677
699
  };
678
700
  const slideIndex = this.getAttribute('data-bs-slide-to');
679
701
 
@@ -698,9 +720,9 @@
698
720
  */
699
721
 
700
722
 
701
- EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler);
702
- EventHandler__default['default'].on(window, EVENT_LOAD_DATA_API, () => {
703
- const carousels = SelectorEngine__default['default'].find(SELECTOR_DATA_RIDE);
723
+ EventHandler__default.default.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler);
724
+ EventHandler__default.default.on(window, EVENT_LOAD_DATA_API, () => {
725
+ const carousels = SelectorEngine__default.default.find(SELECTOR_DATA_RIDE);
704
726
 
705
727
  for (let i = 0, len = carousels.length; i < len; i++) {
706
728
  Carousel.carouselInterface(carousels[i], Carousel.getInstance(carousels[i]));
@@ -717,4 +739,4 @@
717
739
 
718
740
  return Carousel;
719
741
 
720
- })));
742
+ }));