bootstrap 5.0.0.beta2 → 5.0.2

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