bootstrap 5.0.0.beta2 → 5.0.2

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 (69) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -3
  3. data/assets/javascripts/bootstrap-sprockets.js +8 -7
  4. data/assets/javascripts/bootstrap.js +2525 -2460
  5. data/assets/javascripts/bootstrap.min.js +2 -2
  6. data/assets/javascripts/bootstrap/alert.js +77 -179
  7. data/assets/javascripts/bootstrap/base-component.js +140 -38
  8. data/assets/javascripts/bootstrap/button.js +54 -100
  9. data/assets/javascripts/bootstrap/carousel.js +335 -451
  10. data/assets/javascripts/bootstrap/collapse.js +195 -303
  11. data/assets/javascripts/bootstrap/dom/data.js +34 -47
  12. data/assets/javascripts/bootstrap/dom/event-handler.js +95 -90
  13. data/assets/javascripts/bootstrap/dom/manipulator.js +23 -21
  14. data/assets/javascripts/bootstrap/dom/selector-engine.js +20 -28
  15. data/assets/javascripts/bootstrap/dropdown.js +323 -358
  16. data/assets/javascripts/bootstrap/modal.js +537 -489
  17. data/assets/javascripts/bootstrap/offcanvas.js +720 -0
  18. data/assets/javascripts/bootstrap/popover.js +112 -180
  19. data/assets/javascripts/bootstrap/scrollspy.js +167 -235
  20. data/assets/javascripts/bootstrap/tab.js +121 -188
  21. data/assets/javascripts/bootstrap/toast.js +166 -243
  22. data/assets/javascripts/bootstrap/tooltip.js +333 -495
  23. data/assets/stylesheets/_bootstrap-grid.scss +1 -1
  24. data/assets/stylesheets/_bootstrap-reboot.scss +1 -1
  25. data/assets/stylesheets/_bootstrap.scss +2 -1
  26. data/assets/stylesheets/bootstrap/_accordion.scss +24 -32
  27. data/assets/stylesheets/bootstrap/_buttons.scss +2 -0
  28. data/assets/stylesheets/bootstrap/_card.scss +6 -6
  29. data/assets/stylesheets/bootstrap/_carousel.scss +2 -2
  30. data/assets/stylesheets/bootstrap/_dropdown.scss +14 -23
  31. data/assets/stylesheets/bootstrap/_functions.scss +61 -3
  32. data/assets/stylesheets/bootstrap/_images.scss +1 -1
  33. data/assets/stylesheets/bootstrap/_list-group.scss +16 -5
  34. data/assets/stylesheets/bootstrap/_mixins.scss +1 -0
  35. data/assets/stylesheets/bootstrap/_modal.scss +8 -24
  36. data/assets/stylesheets/bootstrap/_nav.scss +7 -0
  37. data/assets/stylesheets/bootstrap/_navbar.scss +2 -0
  38. data/assets/stylesheets/bootstrap/_offcanvas.scss +79 -0
  39. data/assets/stylesheets/bootstrap/_popover.scss +10 -10
  40. data/assets/stylesheets/bootstrap/_progress.scss +3 -0
  41. data/assets/stylesheets/bootstrap/_reboot.scss +7 -21
  42. data/assets/stylesheets/bootstrap/_spinners.scss +6 -2
  43. data/assets/stylesheets/bootstrap/_tables.scss +1 -0
  44. data/assets/stylesheets/bootstrap/_toasts.scss +1 -1
  45. data/assets/stylesheets/bootstrap/_tooltip.scss +4 -4
  46. data/assets/stylesheets/bootstrap/_transitions.scss +2 -0
  47. data/assets/stylesheets/bootstrap/_utilities.scss +65 -37
  48. data/assets/stylesheets/bootstrap/_variables.scss +162 -50
  49. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +1 -1
  50. data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +3 -1
  51. data/assets/stylesheets/bootstrap/forms/_form-check.scss +1 -1
  52. data/assets/stylesheets/bootstrap/forms/_form-control.scss +0 -4
  53. data/assets/stylesheets/bootstrap/forms/_form-range.scss +1 -1
  54. data/assets/stylesheets/bootstrap/forms/_form-select.scss +3 -0
  55. data/assets/stylesheets/bootstrap/mixins/_alert.scss +2 -0
  56. data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +2 -0
  57. data/assets/stylesheets/bootstrap/mixins/_buttons.scss +7 -2
  58. data/assets/stylesheets/bootstrap/mixins/_caret.scss +2 -0
  59. data/assets/stylesheets/bootstrap/mixins/_color-scheme.scss +7 -0
  60. data/assets/stylesheets/bootstrap/mixins/_forms.scss +25 -5
  61. data/assets/stylesheets/bootstrap/mixins/_grid.scss +23 -11
  62. data/assets/stylesheets/bootstrap/mixins/_list-group.scss +2 -0
  63. data/assets/stylesheets/bootstrap/mixins/_pagination.scss +2 -0
  64. data/assets/stylesheets/bootstrap/vendor/_rfs.scss +55 -13
  65. data/bootstrap.gemspec +1 -1
  66. data/lib/bootstrap/version.rb +2 -2
  67. data/tasks/updater/js.rb +1 -1
  68. data/tasks/updater/network.rb +7 -1
  69. metadata +9 -6
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Bootstrap data.js v5.0.0-beta2 (https://getbootstrap.com/)
2
+ * Bootstrap data.js v5.0.2 (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
  */
@@ -11,7 +11,7 @@
11
11
 
12
12
  /**
13
13
  * --------------------------------------------------------------------------
14
- * Bootstrap (v5.0.0-beta2): dom/data.js
14
+ * Bootstrap (v5.0.2): dom/data.js
15
15
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
16
16
  * --------------------------------------------------------------------------
17
17
  */
@@ -21,61 +21,48 @@
21
21
  * Constants
22
22
  * ------------------------------------------------------------------------
23
23
  */
24
- var mapData = function () {
25
- var storeData = {};
26
- var id = 1;
27
- return {
28
- set: function set(element, key, data) {
29
- if (typeof element.bsKey === 'undefined') {
30
- element.bsKey = {
31
- key: key,
32
- id: id
33
- };
34
- id++;
35
- }
24
+ const elementMap = new Map();
25
+ var data = {
26
+ set(element, key, instance) {
27
+ if (!elementMap.has(element)) {
28
+ elementMap.set(element, new Map());
29
+ }
36
30
 
37
- storeData[element.bsKey.id] = data;
38
- },
39
- get: function get(element, key) {
40
- if (!element || typeof element.bsKey === 'undefined') {
41
- return null;
42
- }
31
+ const instanceMap = elementMap.get(element); // make it clear we only want one instance per element
32
+ // can be removed later when multiple key/instances are fine to be used
43
33
 
44
- var keyProperties = element.bsKey;
34
+ if (!instanceMap.has(key) && instanceMap.size !== 0) {
35
+ // eslint-disable-next-line no-console
36
+ console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);
37
+ return;
38
+ }
45
39
 
46
- if (keyProperties.key === key) {
47
- return storeData[keyProperties.id];
48
- }
40
+ instanceMap.set(key, instance);
41
+ },
49
42
 
50
- return null;
51
- },
52
- delete: function _delete(element, key) {
53
- if (typeof element.bsKey === 'undefined') {
54
- return;
55
- }
43
+ get(element, key) {
44
+ if (elementMap.has(element)) {
45
+ return elementMap.get(element).get(key) || null;
46
+ }
56
47
 
57
- var keyProperties = element.bsKey;
48
+ return null;
49
+ },
58
50
 
59
- if (keyProperties.key === key) {
60
- delete storeData[keyProperties.id];
61
- delete element.bsKey;
62
- }
51
+ remove(element, key) {
52
+ if (!elementMap.has(element)) {
53
+ return;
63
54
  }
64
- };
65
- }();
66
55
 
67
- var Data = {
68
- setData: function setData(instance, key, data) {
69
- mapData.set(instance, key, data);
70
- },
71
- getData: function getData(instance, key) {
72
- return mapData.get(instance, key);
73
- },
74
- removeData: function removeData(instance, key) {
75
- mapData.delete(instance, key);
56
+ const instanceMap = elementMap.get(element);
57
+ instanceMap.delete(key); // free up element references if there are no instances left for an element
58
+
59
+ if (instanceMap.size === 0) {
60
+ elementMap.delete(element);
61
+ }
76
62
  }
63
+
77
64
  };
78
65
 
79
- return Data;
66
+ return data;
80
67
 
81
68
  })));
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Bootstrap event-handler.js v5.0.0-beta2 (https://getbootstrap.com/)
2
+ * Bootstrap event-handler.js v5.0.2 (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
  */
@@ -9,16 +9,10 @@
9
9
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.EventHandler = factory());
10
10
  }(this, (function () { 'use strict';
11
11
 
12
- /**
13
- * --------------------------------------------------------------------------
14
- * Bootstrap (v5.0.0-beta2): util/index.js
15
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
16
- * --------------------------------------------------------------------------
17
- */
18
-
19
- var getjQuery = function getjQuery() {
20
- var _window = window,
21
- jQuery = _window.jQuery;
12
+ const getjQuery = () => {
13
+ const {
14
+ jQuery
15
+ } = window;
22
16
 
23
17
  if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
24
18
  return jQuery;
@@ -27,11 +21,9 @@
27
21
  return null;
28
22
  };
29
23
 
30
- document.documentElement.dir === 'rtl';
31
-
32
24
  /**
33
25
  * --------------------------------------------------------------------------
34
- * Bootstrap (v5.0.0-beta2): dom/event-handler.js
26
+ * Bootstrap (v5.0.2): dom/event-handler.js
35
27
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
36
28
  * --------------------------------------------------------------------------
37
29
  */
@@ -41,17 +33,18 @@
41
33
  * ------------------------------------------------------------------------
42
34
  */
43
35
 
44
- var namespaceRegex = /[^.]*(?=\..*)\.|.*/;
45
- var stripNameRegex = /\..*/;
46
- var stripUidRegex = /::\d+$/;
47
- var eventRegistry = {}; // Events storage
36
+ const namespaceRegex = /[^.]*(?=\..*)\.|.*/;
37
+ const stripNameRegex = /\..*/;
38
+ const stripUidRegex = /::\d+$/;
39
+ const eventRegistry = {}; // Events storage
48
40
 
49
- var uidEvent = 1;
50
- var customEvents = {
41
+ let uidEvent = 1;
42
+ const customEvents = {
51
43
  mouseenter: 'mouseover',
52
44
  mouseleave: 'mouseout'
53
45
  };
54
- var nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);
46
+ const customEventsRegex = /^(mouseenter|mouseleave)/i;
47
+ const nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);
55
48
  /**
56
49
  * ------------------------------------------------------------------------
57
50
  * Private methods
@@ -59,11 +52,11 @@
59
52
  */
60
53
 
61
54
  function getUidEvent(element, uid) {
62
- return uid && uid + "::" + uidEvent++ || element.uidEvent || uidEvent++;
55
+ return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;
63
56
  }
64
57
 
65
58
  function getEvent(element) {
66
- var uid = getUidEvent(element);
59
+ const uid = getUidEvent(element);
67
60
  element.uidEvent = uid;
68
61
  eventRegistry[uid] = eventRegistry[uid] || {};
69
62
  return eventRegistry[uid];
@@ -83,16 +76,18 @@
83
76
 
84
77
  function bootstrapDelegationHandler(element, selector, fn) {
85
78
  return function handler(event) {
86
- var domElements = element.querySelectorAll(selector);
79
+ const domElements = element.querySelectorAll(selector);
87
80
 
88
- for (var target = event.target; target && target !== this; target = target.parentNode) {
89
- for (var i = domElements.length; i--;) {
81
+ for (let {
82
+ target
83
+ } = event; target && target !== this; target = target.parentNode) {
84
+ for (let i = domElements.length; i--;) {
90
85
  if (domElements[i] === target) {
91
86
  event.delegateTarget = target;
92
87
 
93
88
  if (handler.oneOff) {
94
89
  // eslint-disable-next-line unicorn/consistent-destructuring
95
- EventHandler.off(element, event.type, fn);
90
+ EventHandler.off(element, event.type, selector, fn);
96
91
  }
97
92
 
98
93
  return fn.apply(target, [event]);
@@ -105,15 +100,11 @@
105
100
  };
106
101
  }
107
102
 
108
- function findHandler(events, handler, delegationSelector) {
109
- if (delegationSelector === void 0) {
110
- delegationSelector = null;
111
- }
112
-
113
- var uidEventList = Object.keys(events);
103
+ function findHandler(events, handler, delegationSelector = null) {
104
+ const uidEventList = Object.keys(events);
114
105
 
115
- for (var i = 0, len = uidEventList.length; i < len; i++) {
116
- var event = events[uidEventList[i]];
106
+ for (let i = 0, len = uidEventList.length; i < len; i++) {
107
+ const event = events[uidEventList[i]];
117
108
 
118
109
  if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {
119
110
  return event;
@@ -124,17 +115,10 @@
124
115
  }
125
116
 
126
117
  function normalizeParams(originalTypeEvent, handler, delegationFn) {
127
- var delegation = typeof handler === 'string';
128
- var originalHandler = delegation ? delegationFn : handler; // allow to get the native events from namespaced events ('click.bs.button' --> 'click')
129
-
130
- var typeEvent = originalTypeEvent.replace(stripNameRegex, '');
131
- var custom = customEvents[typeEvent];
132
-
133
- if (custom) {
134
- typeEvent = custom;
135
- }
136
-
137
- var isNative = nativeEvents.has(typeEvent);
118
+ const delegation = typeof handler === 'string';
119
+ const originalHandler = delegation ? delegationFn : handler;
120
+ let typeEvent = getTypeEvent(originalTypeEvent);
121
+ const isNative = nativeEvents.has(typeEvent);
138
122
 
139
123
  if (!isNative) {
140
124
  typeEvent = originalTypeEvent;
@@ -151,24 +135,38 @@
151
135
  if (!handler) {
152
136
  handler = delegationFn;
153
137
  delegationFn = null;
154
- }
138
+ } // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position
139
+ // this prevents the handler from being dispatched the same way as mouseover or mouseout does
155
140
 
156
- var _normalizeParams = normalizeParams(originalTypeEvent, handler, delegationFn),
157
- delegation = _normalizeParams[0],
158
- originalHandler = _normalizeParams[1],
159
- typeEvent = _normalizeParams[2];
160
141
 
161
- var events = getEvent(element);
162
- var handlers = events[typeEvent] || (events[typeEvent] = {});
163
- var previousFn = findHandler(handlers, originalHandler, delegation ? handler : null);
142
+ if (customEventsRegex.test(originalTypeEvent)) {
143
+ const wrapFn = fn => {
144
+ return function (event) {
145
+ if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {
146
+ return fn.call(this, event);
147
+ }
148
+ };
149
+ };
150
+
151
+ if (delegationFn) {
152
+ delegationFn = wrapFn(delegationFn);
153
+ } else {
154
+ handler = wrapFn(handler);
155
+ }
156
+ }
157
+
158
+ const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);
159
+ const events = getEvent(element);
160
+ const handlers = events[typeEvent] || (events[typeEvent] = {});
161
+ const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null);
164
162
 
165
163
  if (previousFn) {
166
164
  previousFn.oneOff = previousFn.oneOff && oneOff;
167
165
  return;
168
166
  }
169
167
 
170
- var uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''));
171
- var fn = delegation ? bootstrapDelegationHandler(element, handler, delegationFn) : bootstrapHandler(element, handler);
168
+ const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''));
169
+ const fn = delegation ? bootstrapDelegationHandler(element, handler, delegationFn) : bootstrapHandler(element, handler);
172
170
  fn.delegationSelector = delegation ? handler : null;
173
171
  fn.originalHandler = originalHandler;
174
172
  fn.oneOff = oneOff;
@@ -178,7 +176,7 @@
178
176
  }
179
177
 
180
178
  function removeHandler(element, events, typeEvent, handler, delegationSelector) {
181
- var fn = findHandler(events[typeEvent], handler, delegationSelector);
179
+ const fn = findHandler(events[typeEvent], handler, delegationSelector);
182
180
 
183
181
  if (!fn) {
184
182
  return;
@@ -189,35 +187,39 @@
189
187
  }
190
188
 
191
189
  function removeNamespacedHandlers(element, events, typeEvent, namespace) {
192
- var storeElementEvent = events[typeEvent] || {};
193
- Object.keys(storeElementEvent).forEach(function (handlerKey) {
190
+ const storeElementEvent = events[typeEvent] || {};
191
+ Object.keys(storeElementEvent).forEach(handlerKey => {
194
192
  if (handlerKey.includes(namespace)) {
195
- var event = storeElementEvent[handlerKey];
193
+ const event = storeElementEvent[handlerKey];
196
194
  removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);
197
195
  }
198
196
  });
199
197
  }
200
198
 
201
- var EventHandler = {
202
- on: function on(element, event, handler, delegationFn) {
199
+ function getTypeEvent(event) {
200
+ // allow to get the native events from namespaced events ('click.bs.button' --> 'click')
201
+ event = event.replace(stripNameRegex, '');
202
+ return customEvents[event] || event;
203
+ }
204
+
205
+ const EventHandler = {
206
+ on(element, event, handler, delegationFn) {
203
207
  addHandler(element, event, handler, delegationFn, false);
204
208
  },
205
- one: function one(element, event, handler, delegationFn) {
209
+
210
+ one(element, event, handler, delegationFn) {
206
211
  addHandler(element, event, handler, delegationFn, true);
207
212
  },
208
- off: function off(element, originalTypeEvent, handler, delegationFn) {
213
+
214
+ off(element, originalTypeEvent, handler, delegationFn) {
209
215
  if (typeof originalTypeEvent !== 'string' || !element) {
210
216
  return;
211
217
  }
212
218
 
213
- var _normalizeParams2 = normalizeParams(originalTypeEvent, handler, delegationFn),
214
- delegation = _normalizeParams2[0],
215
- originalHandler = _normalizeParams2[1],
216
- typeEvent = _normalizeParams2[2];
217
-
218
- var inNamespace = typeEvent !== originalTypeEvent;
219
- var events = getEvent(element);
220
- var isNamespace = originalTypeEvent.startsWith('.');
219
+ const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);
220
+ const inNamespace = typeEvent !== originalTypeEvent;
221
+ const events = getEvent(element);
222
+ const isNamespace = originalTypeEvent.startsWith('.');
221
223
 
222
224
  if (typeof originalHandler !== 'undefined') {
223
225
  // Simplest case: handler is passed, remove that listener ONLY.
@@ -230,35 +232,36 @@
230
232
  }
231
233
 
232
234
  if (isNamespace) {
233
- Object.keys(events).forEach(function (elementEvent) {
235
+ Object.keys(events).forEach(elementEvent => {
234
236
  removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));
235
237
  });
236
238
  }
237
239
 
238
- var storeElementEvent = events[typeEvent] || {};
239
- Object.keys(storeElementEvent).forEach(function (keyHandlers) {
240
- var handlerKey = keyHandlers.replace(stripUidRegex, '');
240
+ const storeElementEvent = events[typeEvent] || {};
241
+ Object.keys(storeElementEvent).forEach(keyHandlers => {
242
+ const handlerKey = keyHandlers.replace(stripUidRegex, '');
241
243
 
242
244
  if (!inNamespace || originalTypeEvent.includes(handlerKey)) {
243
- var event = storeElementEvent[keyHandlers];
245
+ const event = storeElementEvent[keyHandlers];
244
246
  removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);
245
247
  }
246
248
  });
247
249
  },
248
- trigger: function trigger(element, event, args) {
250
+
251
+ trigger(element, event, args) {
249
252
  if (typeof event !== 'string' || !element) {
250
253
  return null;
251
254
  }
252
255
 
253
- var $ = getjQuery();
254
- var typeEvent = event.replace(stripNameRegex, '');
255
- var inNamespace = event !== typeEvent;
256
- var isNative = nativeEvents.has(typeEvent);
257
- var jQueryEvent;
258
- var bubbles = true;
259
- var nativeDispatch = true;
260
- var defaultPrevented = false;
261
- var evt = null;
256
+ const $ = getjQuery();
257
+ const typeEvent = getTypeEvent(event);
258
+ const inNamespace = event !== typeEvent;
259
+ const isNative = nativeEvents.has(typeEvent);
260
+ let jQueryEvent;
261
+ let bubbles = true;
262
+ let nativeDispatch = true;
263
+ let defaultPrevented = false;
264
+ let evt = null;
262
265
 
263
266
  if (inNamespace && $) {
264
267
  jQueryEvent = $.Event(event, args);
@@ -273,18 +276,19 @@
273
276
  evt.initEvent(typeEvent, bubbles, true);
274
277
  } else {
275
278
  evt = new CustomEvent(event, {
276
- bubbles: bubbles,
279
+ bubbles,
277
280
  cancelable: true
278
281
  });
279
282
  } // merge custom information in our event
280
283
 
281
284
 
282
285
  if (typeof args !== 'undefined') {
283
- Object.keys(args).forEach(function (key) {
286
+ Object.keys(args).forEach(key => {
284
287
  Object.defineProperty(evt, key, {
285
- get: function get() {
288
+ get() {
286
289
  return args[key];
287
290
  }
291
+
288
292
  });
289
293
  });
290
294
  }
@@ -303,6 +307,7 @@
303
307
 
304
308
  return evt;
305
309
  }
310
+
306
311
  };
307
312
 
308
313
  return EventHandler;
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Bootstrap manipulator.js v5.0.0-beta2 (https://getbootstrap.com/)
2
+ * Bootstrap manipulator.js v5.0.2 (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
  */
@@ -11,7 +11,7 @@
11
11
 
12
12
  /**
13
13
  * --------------------------------------------------------------------------
14
- * Bootstrap (v5.0.0-beta2): dom/manipulator.js
14
+ * Bootstrap (v5.0.2): dom/manipulator.js
15
15
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
16
16
  * --------------------------------------------------------------------------
17
17
  */
@@ -36,49 +36,51 @@
36
36
  }
37
37
 
38
38
  function normalizeDataKey(key) {
39
- return key.replace(/[A-Z]/g, function (chr) {
40
- return "-" + chr.toLowerCase();
41
- });
39
+ return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);
42
40
  }
43
41
 
44
- var Manipulator = {
45
- setDataAttribute: function setDataAttribute(element, key, value) {
46
- element.setAttribute("data-bs-" + normalizeDataKey(key), value);
42
+ const Manipulator = {
43
+ setDataAttribute(element, key, value) {
44
+ element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);
47
45
  },
48
- removeDataAttribute: function removeDataAttribute(element, key) {
49
- element.removeAttribute("data-bs-" + normalizeDataKey(key));
46
+
47
+ removeDataAttribute(element, key) {
48
+ element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);
50
49
  },
51
- getDataAttributes: function getDataAttributes(element) {
50
+
51
+ getDataAttributes(element) {
52
52
  if (!element) {
53
53
  return {};
54
54
  }
55
55
 
56
- var attributes = {};
57
- Object.keys(element.dataset).filter(function (key) {
58
- return key.startsWith('bs');
59
- }).forEach(function (key) {
60
- var pureKey = key.replace(/^bs/, '');
56
+ const attributes = {};
57
+ Object.keys(element.dataset).filter(key => key.startsWith('bs')).forEach(key => {
58
+ let pureKey = key.replace(/^bs/, '');
61
59
  pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);
62
60
  attributes[pureKey] = normalizeData(element.dataset[key]);
63
61
  });
64
62
  return attributes;
65
63
  },
66
- getDataAttribute: function getDataAttribute(element, key) {
67
- return normalizeData(element.getAttribute("data-bs-" + normalizeDataKey(key)));
64
+
65
+ getDataAttribute(element, key) {
66
+ return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));
68
67
  },
69
- offset: function offset(element) {
70
- var rect = element.getBoundingClientRect();
68
+
69
+ offset(element) {
70
+ const rect = element.getBoundingClientRect();
71
71
  return {
72
72
  top: rect.top + document.body.scrollTop,
73
73
  left: rect.left + document.body.scrollLeft
74
74
  };
75
75
  },
76
- position: function position(element) {
76
+
77
+ position(element) {
77
78
  return {
78
79
  top: element.offsetTop,
79
80
  left: element.offsetLeft
80
81
  };
81
82
  }
83
+
82
84
  };
83
85
 
84
86
  return Manipulator;