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.
- checksums.yaml +4 -4
- data/README.md +3 -3
- data/assets/javascripts/bootstrap-sprockets.js +8 -7
- data/assets/javascripts/bootstrap.js +2525 -2460
- data/assets/javascripts/bootstrap.min.js +2 -2
- data/assets/javascripts/bootstrap/alert.js +77 -179
- data/assets/javascripts/bootstrap/base-component.js +140 -38
- data/assets/javascripts/bootstrap/button.js +54 -100
- data/assets/javascripts/bootstrap/carousel.js +335 -451
- data/assets/javascripts/bootstrap/collapse.js +195 -303
- data/assets/javascripts/bootstrap/dom/data.js +34 -47
- data/assets/javascripts/bootstrap/dom/event-handler.js +95 -90
- data/assets/javascripts/bootstrap/dom/manipulator.js +23 -21
- data/assets/javascripts/bootstrap/dom/selector-engine.js +20 -28
- data/assets/javascripts/bootstrap/dropdown.js +323 -358
- data/assets/javascripts/bootstrap/modal.js +537 -489
- data/assets/javascripts/bootstrap/offcanvas.js +720 -0
- data/assets/javascripts/bootstrap/popover.js +112 -180
- data/assets/javascripts/bootstrap/scrollspy.js +167 -235
- data/assets/javascripts/bootstrap/tab.js +121 -188
- data/assets/javascripts/bootstrap/toast.js +166 -243
- data/assets/javascripts/bootstrap/tooltip.js +333 -495
- data/assets/stylesheets/_bootstrap-grid.scss +1 -1
- data/assets/stylesheets/_bootstrap-reboot.scss +1 -1
- data/assets/stylesheets/_bootstrap.scss +2 -1
- data/assets/stylesheets/bootstrap/_accordion.scss +24 -32
- data/assets/stylesheets/bootstrap/_buttons.scss +2 -0
- data/assets/stylesheets/bootstrap/_card.scss +6 -6
- data/assets/stylesheets/bootstrap/_carousel.scss +2 -2
- data/assets/stylesheets/bootstrap/_dropdown.scss +14 -23
- data/assets/stylesheets/bootstrap/_functions.scss +61 -3
- data/assets/stylesheets/bootstrap/_images.scss +1 -1
- data/assets/stylesheets/bootstrap/_list-group.scss +16 -5
- data/assets/stylesheets/bootstrap/_mixins.scss +1 -0
- data/assets/stylesheets/bootstrap/_modal.scss +8 -24
- data/assets/stylesheets/bootstrap/_nav.scss +7 -0
- data/assets/stylesheets/bootstrap/_navbar.scss +2 -0
- data/assets/stylesheets/bootstrap/_offcanvas.scss +79 -0
- data/assets/stylesheets/bootstrap/_popover.scss +10 -10
- data/assets/stylesheets/bootstrap/_progress.scss +3 -0
- data/assets/stylesheets/bootstrap/_reboot.scss +7 -21
- data/assets/stylesheets/bootstrap/_spinners.scss +6 -2
- data/assets/stylesheets/bootstrap/_tables.scss +1 -0
- data/assets/stylesheets/bootstrap/_toasts.scss +1 -1
- data/assets/stylesheets/bootstrap/_tooltip.scss +4 -4
- data/assets/stylesheets/bootstrap/_transitions.scss +2 -0
- data/assets/stylesheets/bootstrap/_utilities.scss +65 -37
- data/assets/stylesheets/bootstrap/_variables.scss +162 -50
- data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +1 -1
- data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +3 -1
- data/assets/stylesheets/bootstrap/forms/_form-check.scss +1 -1
- data/assets/stylesheets/bootstrap/forms/_form-control.scss +0 -4
- data/assets/stylesheets/bootstrap/forms/_form-range.scss +1 -1
- data/assets/stylesheets/bootstrap/forms/_form-select.scss +3 -0
- data/assets/stylesheets/bootstrap/mixins/_alert.scss +2 -0
- data/assets/stylesheets/bootstrap/mixins/_border-radius.scss +2 -0
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +7 -2
- data/assets/stylesheets/bootstrap/mixins/_caret.scss +2 -0
- data/assets/stylesheets/bootstrap/mixins/_color-scheme.scss +7 -0
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +25 -5
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +23 -11
- data/assets/stylesheets/bootstrap/mixins/_list-group.scss +2 -0
- data/assets/stylesheets/bootstrap/mixins/_pagination.scss +2 -0
- data/assets/stylesheets/bootstrap/vendor/_rfs.scss +55 -13
- data/bootstrap.gemspec +1 -1
- data/lib/bootstrap/version.rb +2 -2
- data/tasks/updater/js.rb +1 -1
- data/tasks/updater/network.rb +7 -1
- metadata +9 -6
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* Bootstrap data.js v5.0.
|
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.
|
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
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
47
|
-
|
48
|
-
}
|
40
|
+
instanceMap.set(key, instance);
|
41
|
+
},
|
49
42
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
return;
|
55
|
-
}
|
43
|
+
get(element, key) {
|
44
|
+
if (elementMap.has(element)) {
|
45
|
+
return elementMap.get(element).get(key) || null;
|
46
|
+
}
|
56
47
|
|
57
|
-
|
48
|
+
return null;
|
49
|
+
},
|
58
50
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
}
|
51
|
+
remove(element, key) {
|
52
|
+
if (!elementMap.has(element)) {
|
53
|
+
return;
|
63
54
|
}
|
64
|
-
};
|
65
|
-
}();
|
66
55
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
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
|
66
|
+
return data;
|
80
67
|
|
81
68
|
})));
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* Bootstrap event-handler.js v5.0.
|
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
|
-
|
15
|
-
|
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.
|
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
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
36
|
+
const namespaceRegex = /[^.]*(?=\..*)\.|.*/;
|
37
|
+
const stripNameRegex = /\..*/;
|
38
|
+
const stripUidRegex = /::\d+$/;
|
39
|
+
const eventRegistry = {}; // Events storage
|
48
40
|
|
49
|
-
|
50
|
-
|
41
|
+
let uidEvent = 1;
|
42
|
+
const customEvents = {
|
51
43
|
mouseenter: 'mouseover',
|
52
44
|
mouseleave: 'mouseout'
|
53
45
|
};
|
54
|
-
|
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
|
55
|
+
return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;
|
63
56
|
}
|
64
57
|
|
65
58
|
function getEvent(element) {
|
66
|
-
|
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
|
-
|
79
|
+
const domElements = element.querySelectorAll(selector);
|
87
80
|
|
88
|
-
for (
|
89
|
-
|
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
|
-
|
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 (
|
116
|
-
|
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
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
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
|
-
|
162
|
-
|
163
|
-
|
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
|
-
|
171
|
-
|
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
|
-
|
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
|
-
|
193
|
-
Object.keys(storeElementEvent).forEach(
|
190
|
+
const storeElementEvent = events[typeEvent] || {};
|
191
|
+
Object.keys(storeElementEvent).forEach(handlerKey => {
|
194
192
|
if (handlerKey.includes(namespace)) {
|
195
|
-
|
193
|
+
const event = storeElementEvent[handlerKey];
|
196
194
|
removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);
|
197
195
|
}
|
198
196
|
});
|
199
197
|
}
|
200
198
|
|
201
|
-
|
202
|
-
|
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
|
-
|
209
|
+
|
210
|
+
one(element, event, handler, delegationFn) {
|
206
211
|
addHandler(element, event, handler, delegationFn, true);
|
207
212
|
},
|
208
|
-
|
213
|
+
|
214
|
+
off(element, originalTypeEvent, handler, delegationFn) {
|
209
215
|
if (typeof originalTypeEvent !== 'string' || !element) {
|
210
216
|
return;
|
211
217
|
}
|
212
218
|
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
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(
|
235
|
+
Object.keys(events).forEach(elementEvent => {
|
234
236
|
removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));
|
235
237
|
});
|
236
238
|
}
|
237
239
|
|
238
|
-
|
239
|
-
Object.keys(storeElementEvent).forEach(
|
240
|
-
|
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
|
-
|
245
|
+
const event = storeElementEvent[keyHandlers];
|
244
246
|
removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);
|
245
247
|
}
|
246
248
|
});
|
247
249
|
},
|
248
|
-
|
250
|
+
|
251
|
+
trigger(element, event, args) {
|
249
252
|
if (typeof event !== 'string' || !element) {
|
250
253
|
return null;
|
251
254
|
}
|
252
255
|
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
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
|
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(
|
286
|
+
Object.keys(args).forEach(key => {
|
284
287
|
Object.defineProperty(evt, key, {
|
285
|
-
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.
|
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.
|
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,
|
40
|
-
return "-" + chr.toLowerCase();
|
41
|
-
});
|
39
|
+
return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);
|
42
40
|
}
|
43
41
|
|
44
|
-
|
45
|
-
setDataAttribute
|
46
|
-
element.setAttribute(
|
42
|
+
const Manipulator = {
|
43
|
+
setDataAttribute(element, key, value) {
|
44
|
+
element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);
|
47
45
|
},
|
48
|
-
|
49
|
-
|
46
|
+
|
47
|
+
removeDataAttribute(element, key) {
|
48
|
+
element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);
|
50
49
|
},
|
51
|
-
|
50
|
+
|
51
|
+
getDataAttributes(element) {
|
52
52
|
if (!element) {
|
53
53
|
return {};
|
54
54
|
}
|
55
55
|
|
56
|
-
|
57
|
-
Object.keys(element.dataset).filter(
|
58
|
-
|
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
|
-
|
67
|
-
|
64
|
+
|
65
|
+
getDataAttribute(element, key) {
|
66
|
+
return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));
|
68
67
|
},
|
69
|
-
|
70
|
-
|
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
|
-
|
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;
|