bootstrap 5.1.3 → 5.2.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 +24 -4
- data/assets/javascripts/bootstrap/alert.js +11 -146
- data/assets/javascripts/bootstrap/base-component.js +37 -120
- data/assets/javascripts/bootstrap/button.js +10 -74
- data/assets/javascripts/bootstrap/carousel.js +213 -485
- data/assets/javascripts/bootstrap/collapse.js +65 -249
- data/assets/javascripts/bootstrap/dom/data.js +3 -5
- data/assets/javascripts/bootstrap/dom/event-handler.js +94 -132
- data/assets/javascripts/bootstrap/dom/manipulator.js +23 -27
- data/assets/javascripts/bootstrap/dom/selector-engine.js +16 -58
- data/assets/javascripts/bootstrap/dropdown.js +103 -317
- data/assets/javascripts/bootstrap/modal.js +107 -749
- data/assets/javascripts/bootstrap/offcanvas.js +90 -659
- data/assets/javascripts/bootstrap/popover.js +36 -118
- data/assets/javascripts/bootstrap/scrollspy.js +183 -262
- data/assets/javascripts/bootstrap/tab.js +215 -214
- data/assets/javascripts/bootstrap/toast.js +36 -218
- data/assets/javascripts/bootstrap/tooltip.js +280 -629
- data/assets/javascripts/bootstrap/util/backdrop.js +165 -0
- data/assets/javascripts/bootstrap/util/component-functions.js +46 -0
- data/assets/javascripts/bootstrap/util/config.js +79 -0
- data/assets/javascripts/bootstrap/util/focustrap.js +129 -0
- data/assets/javascripts/bootstrap/util/index.js +350 -0
- data/assets/javascripts/bootstrap/util/sanitizer.js +122 -0
- data/assets/javascripts/bootstrap/util/scrollbar.js +138 -0
- data/assets/javascripts/bootstrap/util/swipe.js +155 -0
- data/assets/javascripts/bootstrap/util/template-factory.js +177 -0
- data/assets/javascripts/bootstrap-global-this-define.js +1 -1
- data/assets/javascripts/bootstrap-sprockets.js +17 -8
- data/assets/javascripts/bootstrap.js +2093 -1881
- data/assets/javascripts/bootstrap.min.js +3 -3
- data/assets/stylesheets/_bootstrap-grid.scss +3 -6
- data/assets/stylesheets/_bootstrap-reboot.scss +3 -7
- data/assets/stylesheets/_bootstrap.scss +4 -6
- data/assets/stylesheets/bootstrap/_accordion.scss +56 -25
- data/assets/stylesheets/bootstrap/_alert.scss +18 -4
- data/assets/stylesheets/bootstrap/_badge.scss +14 -5
- data/assets/stylesheets/bootstrap/_breadcrumb.scss +22 -10
- data/assets/stylesheets/bootstrap/_button-group.scss +4 -1
- data/assets/stylesheets/bootstrap/_buttons.scss +125 -29
- data/assets/stylesheets/bootstrap/_card.scss +55 -37
- data/assets/stylesheets/bootstrap/_close.scss +1 -1
- data/assets/stylesheets/bootstrap/_containers.scss +1 -1
- data/assets/stylesheets/bootstrap/_dropdown.scss +85 -76
- data/assets/stylesheets/bootstrap/_functions.scss +8 -8
- data/assets/stylesheets/bootstrap/_grid.scss +3 -3
- data/assets/stylesheets/bootstrap/_helpers.scss +1 -0
- data/assets/stylesheets/bootstrap/_list-group.scss +48 -30
- data/assets/stylesheets/bootstrap/_maps.scss +54 -0
- data/assets/stylesheets/bootstrap/_modal.scss +71 -43
- data/assets/stylesheets/bootstrap/_nav.scss +53 -20
- data/assets/stylesheets/bootstrap/_navbar.scss +93 -150
- data/assets/stylesheets/bootstrap/_offcanvas.scss +120 -59
- data/assets/stylesheets/bootstrap/_pagination.scss +66 -21
- data/assets/stylesheets/bootstrap/_placeholders.scss +1 -1
- data/assets/stylesheets/bootstrap/_popover.scss +90 -52
- data/assets/stylesheets/bootstrap/_progress.scss +20 -9
- data/assets/stylesheets/bootstrap/_reboot.scss +25 -40
- data/assets/stylesheets/bootstrap/_root.scss +40 -21
- data/assets/stylesheets/bootstrap/_spinners.scss +38 -22
- data/assets/stylesheets/bootstrap/_tables.scss +32 -23
- data/assets/stylesheets/bootstrap/_toasts.scss +38 -16
- data/assets/stylesheets/bootstrap/_tooltip.scss +61 -56
- data/assets/stylesheets/bootstrap/_type.scss +2 -0
- data/assets/stylesheets/bootstrap/_utilities.scss +43 -26
- data/assets/stylesheets/bootstrap/_variables.scss +128 -135
- data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +3 -6
- data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +15 -3
- data/assets/stylesheets/bootstrap/forms/_form-check.scss +28 -5
- data/assets/stylesheets/bootstrap/forms/_form-control.scss +12 -37
- data/assets/stylesheets/bootstrap/forms/_form-select.scss +0 -1
- data/assets/stylesheets/bootstrap/forms/_input-group.scss +19 -8
- data/assets/stylesheets/bootstrap/helpers/_color-bg.scss +10 -0
- data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +2 -2
- data/assets/stylesheets/bootstrap/helpers/_position.scss +7 -1
- data/assets/stylesheets/bootstrap/helpers/_ratio.scss +2 -2
- data/assets/stylesheets/bootstrap/helpers/_vr.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_alert.scss +7 -3
- data/assets/stylesheets/bootstrap/mixins/_banner.scss +9 -0
- data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +8 -8
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +32 -95
- data/assets/stylesheets/bootstrap/mixins/_container.scss +4 -2
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +18 -10
- data/assets/stylesheets/bootstrap/mixins/_gradients.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +12 -12
- data/assets/stylesheets/bootstrap/mixins/_pagination.scss +4 -25
- data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_table-variants.scss +12 -9
- data/assets/stylesheets/bootstrap/mixins/_utilities.scss +13 -5
- data/bootstrap.gemspec +1 -1
- data/lib/bootstrap/version.rb +2 -2
- data/tasks/updater/js.rb +10 -5
- data/tasks/updater.rb +2 -2
- metadata +16 -4
|
@@ -1,43 +1,22 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Bootstrap event-handler.js v5.
|
|
3
|
-
* Copyright 2011-
|
|
2
|
+
* Bootstrap event-handler.js v5.2.2 (https://getbootstrap.com/)
|
|
3
|
+
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
|
4
4
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
5
5
|
*/
|
|
6
6
|
(function (global, factory) {
|
|
7
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
|
8
|
-
typeof define === 'function' && define.amd ? define(factory) :
|
|
9
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.EventHandler = factory());
|
|
10
|
-
})(this, (function () { 'use strict';
|
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('../util/index')) :
|
|
8
|
+
typeof define === 'function' && define.amd ? define(['../util/index'], factory) :
|
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.EventHandler = factory(global.Index));
|
|
10
|
+
})(this, (function (index) { 'use strict';
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* --------------------------------------------------------------------------
|
|
14
|
-
* Bootstrap (v5.
|
|
14
|
+
* Bootstrap (v5.2.2): dom/event-handler.js
|
|
15
15
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
16
16
|
* --------------------------------------------------------------------------
|
|
17
17
|
*/
|
|
18
|
-
|
|
19
|
-
const getjQuery = () => {
|
|
20
|
-
const {
|
|
21
|
-
jQuery
|
|
22
|
-
} = window;
|
|
23
|
-
|
|
24
|
-
if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
|
|
25
|
-
return jQuery;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
return null;
|
|
29
|
-
};
|
|
30
|
-
|
|
31
18
|
/**
|
|
32
|
-
* --------------------------------------------------------------------------
|
|
33
|
-
* Bootstrap (v5.1.3): dom/event-handler.js
|
|
34
|
-
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
35
|
-
* --------------------------------------------------------------------------
|
|
36
|
-
*/
|
|
37
|
-
/**
|
|
38
|
-
* ------------------------------------------------------------------------
|
|
39
19
|
* Constants
|
|
40
|
-
* ------------------------------------------------------------------------
|
|
41
20
|
*/
|
|
42
21
|
|
|
43
22
|
const namespaceRegex = /[^.]*(?=\..*)\.|.*/;
|
|
@@ -50,20 +29,17 @@
|
|
|
50
29
|
mouseenter: 'mouseover',
|
|
51
30
|
mouseleave: 'mouseout'
|
|
52
31
|
};
|
|
53
|
-
const customEventsRegex = /^(mouseenter|mouseleave)/i;
|
|
54
32
|
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
33
|
/**
|
|
56
|
-
* ------------------------------------------------------------------------
|
|
57
34
|
* Private methods
|
|
58
|
-
* ------------------------------------------------------------------------
|
|
59
35
|
*/
|
|
60
36
|
|
|
61
|
-
function
|
|
37
|
+
function makeEventUid(element, uid) {
|
|
62
38
|
return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;
|
|
63
39
|
}
|
|
64
40
|
|
|
65
|
-
function
|
|
66
|
-
const uid =
|
|
41
|
+
function getElementEvents(element) {
|
|
42
|
+
const uid = makeEventUid(element);
|
|
67
43
|
element.uidEvent = uid;
|
|
68
44
|
eventRegistry[uid] = eventRegistry[uid] || {};
|
|
69
45
|
return eventRegistry[uid];
|
|
@@ -71,7 +47,9 @@
|
|
|
71
47
|
|
|
72
48
|
function bootstrapHandler(element, fn) {
|
|
73
49
|
return function handler(event) {
|
|
74
|
-
event
|
|
50
|
+
hydrateObj(event, {
|
|
51
|
+
delegateTarget: element
|
|
52
|
+
});
|
|
75
53
|
|
|
76
54
|
if (handler.oneOff) {
|
|
77
55
|
EventHandler.off(element, event.type, fn);
|
|
@@ -88,65 +66,52 @@
|
|
|
88
66
|
for (let {
|
|
89
67
|
target
|
|
90
68
|
} = event; target && target !== this; target = target.parentNode) {
|
|
91
|
-
for (
|
|
92
|
-
if (
|
|
93
|
-
|
|
69
|
+
for (const domElement of domElements) {
|
|
70
|
+
if (domElement !== target) {
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
94
73
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
74
|
+
hydrateObj(event, {
|
|
75
|
+
delegateTarget: target
|
|
76
|
+
});
|
|
98
77
|
|
|
99
|
-
|
|
78
|
+
if (handler.oneOff) {
|
|
79
|
+
EventHandler.off(element, event.type, selector, fn);
|
|
100
80
|
}
|
|
101
|
-
}
|
|
102
|
-
} // To please ESLint
|
|
103
81
|
|
|
104
|
-
|
|
105
|
-
|
|
82
|
+
return fn.apply(target, [event]);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
106
85
|
};
|
|
107
86
|
}
|
|
108
87
|
|
|
109
|
-
function findHandler(events,
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
for (let i = 0, len = uidEventList.length; i < len; i++) {
|
|
113
|
-
const event = events[uidEventList[i]];
|
|
114
|
-
|
|
115
|
-
if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {
|
|
116
|
-
return event;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
return null;
|
|
88
|
+
function findHandler(events, callable, delegationSelector = null) {
|
|
89
|
+
return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector);
|
|
121
90
|
}
|
|
122
91
|
|
|
123
|
-
function
|
|
124
|
-
const
|
|
125
|
-
|
|
92
|
+
function normalizeParameters(originalTypeEvent, handler, delegationFunction) {
|
|
93
|
+
const isDelegated = typeof handler === 'string'; // todo: tooltip passes `false` instead of selector, so we need to check
|
|
94
|
+
|
|
95
|
+
const callable = isDelegated ? delegationFunction : handler || delegationFunction;
|
|
126
96
|
let typeEvent = getTypeEvent(originalTypeEvent);
|
|
127
|
-
const isNative = nativeEvents.has(typeEvent);
|
|
128
97
|
|
|
129
|
-
if (!
|
|
98
|
+
if (!nativeEvents.has(typeEvent)) {
|
|
130
99
|
typeEvent = originalTypeEvent;
|
|
131
100
|
}
|
|
132
101
|
|
|
133
|
-
return [
|
|
102
|
+
return [isDelegated, callable, typeEvent];
|
|
134
103
|
}
|
|
135
104
|
|
|
136
|
-
function addHandler(element, originalTypeEvent, handler,
|
|
105
|
+
function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {
|
|
137
106
|
if (typeof originalTypeEvent !== 'string' || !element) {
|
|
138
107
|
return;
|
|
139
108
|
}
|
|
140
109
|
|
|
141
|
-
|
|
142
|
-
handler = delegationFn;
|
|
143
|
-
delegationFn = null;
|
|
144
|
-
} // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position
|
|
110
|
+
let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position
|
|
145
111
|
// this prevents the handler from being dispatched the same way as mouseover or mouseout does
|
|
146
112
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
const wrapFn = fn => {
|
|
113
|
+
if (originalTypeEvent in customEvents) {
|
|
114
|
+
const wrapFunction = fn => {
|
|
150
115
|
return function (event) {
|
|
151
116
|
if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {
|
|
152
117
|
return fn.call(this, event);
|
|
@@ -154,31 +119,26 @@
|
|
|
154
119
|
};
|
|
155
120
|
};
|
|
156
121
|
|
|
157
|
-
|
|
158
|
-
delegationFn = wrapFn(delegationFn);
|
|
159
|
-
} else {
|
|
160
|
-
handler = wrapFn(handler);
|
|
161
|
-
}
|
|
122
|
+
callable = wrapFunction(callable);
|
|
162
123
|
}
|
|
163
124
|
|
|
164
|
-
const
|
|
165
|
-
const events = getEvent(element);
|
|
125
|
+
const events = getElementEvents(element);
|
|
166
126
|
const handlers = events[typeEvent] || (events[typeEvent] = {});
|
|
167
|
-
const
|
|
127
|
+
const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);
|
|
168
128
|
|
|
169
|
-
if (
|
|
170
|
-
|
|
129
|
+
if (previousFunction) {
|
|
130
|
+
previousFunction.oneOff = previousFunction.oneOff && oneOff;
|
|
171
131
|
return;
|
|
172
132
|
}
|
|
173
133
|
|
|
174
|
-
const uid =
|
|
175
|
-
const fn =
|
|
176
|
-
fn.delegationSelector =
|
|
177
|
-
fn.
|
|
134
|
+
const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));
|
|
135
|
+
const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);
|
|
136
|
+
fn.delegationSelector = isDelegated ? handler : null;
|
|
137
|
+
fn.callable = callable;
|
|
178
138
|
fn.oneOff = oneOff;
|
|
179
139
|
fn.uidEvent = uid;
|
|
180
140
|
handlers[uid] = fn;
|
|
181
|
-
element.addEventListener(typeEvent, fn,
|
|
141
|
+
element.addEventListener(typeEvent, fn, isDelegated);
|
|
182
142
|
}
|
|
183
143
|
|
|
184
144
|
function removeHandler(element, events, typeEvent, handler, delegationSelector) {
|
|
@@ -194,12 +154,13 @@
|
|
|
194
154
|
|
|
195
155
|
function removeNamespacedHandlers(element, events, typeEvent, namespace) {
|
|
196
156
|
const storeElementEvent = events[typeEvent] || {};
|
|
197
|
-
|
|
157
|
+
|
|
158
|
+
for (const handlerKey of Object.keys(storeElementEvent)) {
|
|
198
159
|
if (handlerKey.includes(namespace)) {
|
|
199
160
|
const event = storeElementEvent[handlerKey];
|
|
200
|
-
removeHandler(element, events, typeEvent, event.
|
|
161
|
+
removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
|
|
201
162
|
}
|
|
202
|
-
}
|
|
163
|
+
}
|
|
203
164
|
}
|
|
204
165
|
|
|
205
166
|
function getTypeEvent(event) {
|
|
@@ -209,49 +170,49 @@
|
|
|
209
170
|
}
|
|
210
171
|
|
|
211
172
|
const EventHandler = {
|
|
212
|
-
on(element, event, handler,
|
|
213
|
-
addHandler(element, event, handler,
|
|
173
|
+
on(element, event, handler, delegationFunction) {
|
|
174
|
+
addHandler(element, event, handler, delegationFunction, false);
|
|
214
175
|
},
|
|
215
176
|
|
|
216
|
-
one(element, event, handler,
|
|
217
|
-
addHandler(element, event, handler,
|
|
177
|
+
one(element, event, handler, delegationFunction) {
|
|
178
|
+
addHandler(element, event, handler, delegationFunction, true);
|
|
218
179
|
},
|
|
219
180
|
|
|
220
|
-
off(element, originalTypeEvent, handler,
|
|
181
|
+
off(element, originalTypeEvent, handler, delegationFunction) {
|
|
221
182
|
if (typeof originalTypeEvent !== 'string' || !element) {
|
|
222
183
|
return;
|
|
223
184
|
}
|
|
224
185
|
|
|
225
|
-
const [
|
|
186
|
+
const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);
|
|
226
187
|
const inNamespace = typeEvent !== originalTypeEvent;
|
|
227
|
-
const events =
|
|
188
|
+
const events = getElementEvents(element);
|
|
189
|
+
const storeElementEvent = events[typeEvent] || {};
|
|
228
190
|
const isNamespace = originalTypeEvent.startsWith('.');
|
|
229
191
|
|
|
230
|
-
if (typeof
|
|
192
|
+
if (typeof callable !== 'undefined') {
|
|
231
193
|
// Simplest case: handler is passed, remove that listener ONLY.
|
|
232
|
-
if (!
|
|
194
|
+
if (!Object.keys(storeElementEvent).length) {
|
|
233
195
|
return;
|
|
234
196
|
}
|
|
235
197
|
|
|
236
|
-
removeHandler(element, events, typeEvent,
|
|
198
|
+
removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);
|
|
237
199
|
return;
|
|
238
200
|
}
|
|
239
201
|
|
|
240
202
|
if (isNamespace) {
|
|
241
|
-
Object.keys(events)
|
|
203
|
+
for (const elementEvent of Object.keys(events)) {
|
|
242
204
|
removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));
|
|
243
|
-
}
|
|
205
|
+
}
|
|
244
206
|
}
|
|
245
207
|
|
|
246
|
-
const
|
|
247
|
-
Object.keys(storeElementEvent).forEach(keyHandlers => {
|
|
208
|
+
for (const keyHandlers of Object.keys(storeElementEvent)) {
|
|
248
209
|
const handlerKey = keyHandlers.replace(stripUidRegex, '');
|
|
249
210
|
|
|
250
211
|
if (!inNamespace || originalTypeEvent.includes(handlerKey)) {
|
|
251
212
|
const event = storeElementEvent[keyHandlers];
|
|
252
|
-
removeHandler(element, events, typeEvent, event.
|
|
213
|
+
removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
|
|
253
214
|
}
|
|
254
|
-
}
|
|
215
|
+
}
|
|
255
216
|
},
|
|
256
217
|
|
|
257
218
|
trigger(element, event, args) {
|
|
@@ -259,15 +220,13 @@
|
|
|
259
220
|
return null;
|
|
260
221
|
}
|
|
261
222
|
|
|
262
|
-
const $ = getjQuery();
|
|
223
|
+
const $ = index.getjQuery();
|
|
263
224
|
const typeEvent = getTypeEvent(event);
|
|
264
225
|
const inNamespace = event !== typeEvent;
|
|
265
|
-
|
|
266
|
-
let jQueryEvent;
|
|
226
|
+
let jQueryEvent = null;
|
|
267
227
|
let bubbles = true;
|
|
268
228
|
let nativeDispatch = true;
|
|
269
229
|
let defaultPrevented = false;
|
|
270
|
-
let evt = null;
|
|
271
230
|
|
|
272
231
|
if (inNamespace && $) {
|
|
273
232
|
jQueryEvent = $.Event(event, args);
|
|
@@ -277,27 +236,11 @@
|
|
|
277
236
|
defaultPrevented = jQueryEvent.isDefaultPrevented();
|
|
278
237
|
}
|
|
279
238
|
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
bubbles,
|
|
286
|
-
cancelable: true
|
|
287
|
-
});
|
|
288
|
-
} // merge custom information in our event
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
if (typeof args !== 'undefined') {
|
|
292
|
-
Object.keys(args).forEach(key => {
|
|
293
|
-
Object.defineProperty(evt, key, {
|
|
294
|
-
get() {
|
|
295
|
-
return args[key];
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
});
|
|
299
|
-
});
|
|
300
|
-
}
|
|
239
|
+
let evt = new Event(event, {
|
|
240
|
+
bubbles,
|
|
241
|
+
cancelable: true
|
|
242
|
+
});
|
|
243
|
+
evt = hydrateObj(evt, args);
|
|
301
244
|
|
|
302
245
|
if (defaultPrevented) {
|
|
303
246
|
evt.preventDefault();
|
|
@@ -307,7 +250,7 @@
|
|
|
307
250
|
element.dispatchEvent(evt);
|
|
308
251
|
}
|
|
309
252
|
|
|
310
|
-
if (evt.defaultPrevented &&
|
|
253
|
+
if (evt.defaultPrevented && jQueryEvent) {
|
|
311
254
|
jQueryEvent.preventDefault();
|
|
312
255
|
}
|
|
313
256
|
|
|
@@ -316,6 +259,25 @@
|
|
|
316
259
|
|
|
317
260
|
};
|
|
318
261
|
|
|
262
|
+
function hydrateObj(obj, meta) {
|
|
263
|
+
for (const [key, value] of Object.entries(meta || {})) {
|
|
264
|
+
try {
|
|
265
|
+
obj[key] = value;
|
|
266
|
+
} catch (_unused) {
|
|
267
|
+
Object.defineProperty(obj, key, {
|
|
268
|
+
configurable: true,
|
|
269
|
+
|
|
270
|
+
get() {
|
|
271
|
+
return value;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
return obj;
|
|
279
|
+
}
|
|
280
|
+
|
|
319
281
|
return EventHandler;
|
|
320
282
|
|
|
321
283
|
}));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Bootstrap manipulator.js v5.
|
|
3
|
-
* Copyright 2011-
|
|
2
|
+
* Bootstrap manipulator.js v5.2.2 (https://getbootstrap.com/)
|
|
3
|
+
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
|
4
4
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
5
5
|
*/
|
|
6
6
|
(function (global, factory) {
|
|
@@ -11,28 +11,36 @@
|
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* --------------------------------------------------------------------------
|
|
14
|
-
* Bootstrap (v5.
|
|
14
|
+
* Bootstrap (v5.2.2): dom/manipulator.js
|
|
15
15
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
16
16
|
* --------------------------------------------------------------------------
|
|
17
17
|
*/
|
|
18
|
-
function normalizeData(
|
|
19
|
-
if (
|
|
18
|
+
function normalizeData(value) {
|
|
19
|
+
if (value === 'true') {
|
|
20
20
|
return true;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
if (
|
|
23
|
+
if (value === 'false') {
|
|
24
24
|
return false;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
if (
|
|
28
|
-
return Number(
|
|
27
|
+
if (value === Number(value).toString()) {
|
|
28
|
+
return Number(value);
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
if (
|
|
31
|
+
if (value === '' || value === 'null') {
|
|
32
32
|
return null;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
if (typeof value !== 'string') {
|
|
36
|
+
return value;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
try {
|
|
40
|
+
return JSON.parse(decodeURIComponent(value));
|
|
41
|
+
} catch (_unused) {
|
|
42
|
+
return value;
|
|
43
|
+
}
|
|
36
44
|
}
|
|
37
45
|
|
|
38
46
|
function normalizeDataKey(key) {
|
|
@@ -54,31 +62,19 @@
|
|
|
54
62
|
}
|
|
55
63
|
|
|
56
64
|
const attributes = {};
|
|
57
|
-
Object.keys(element.dataset).filter(key => key.startsWith('bs')
|
|
65
|
+
const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'));
|
|
66
|
+
|
|
67
|
+
for (const key of bsKeys) {
|
|
58
68
|
let pureKey = key.replace(/^bs/, '');
|
|
59
69
|
pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);
|
|
60
70
|
attributes[pureKey] = normalizeData(element.dataset[key]);
|
|
61
|
-
}
|
|
71
|
+
}
|
|
72
|
+
|
|
62
73
|
return attributes;
|
|
63
74
|
},
|
|
64
75
|
|
|
65
76
|
getDataAttribute(element, key) {
|
|
66
77
|
return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));
|
|
67
|
-
},
|
|
68
|
-
|
|
69
|
-
offset(element) {
|
|
70
|
-
const rect = element.getBoundingClientRect();
|
|
71
|
-
return {
|
|
72
|
-
top: rect.top + window.pageYOffset,
|
|
73
|
-
left: rect.left + window.pageXOffset
|
|
74
|
-
};
|
|
75
|
-
},
|
|
76
|
-
|
|
77
|
-
position(element) {
|
|
78
|
-
return {
|
|
79
|
-
top: element.offsetTop,
|
|
80
|
-
left: element.offsetLeft
|
|
81
|
-
};
|
|
82
78
|
}
|
|
83
79
|
|
|
84
80
|
};
|
|
@@ -1,64 +1,24 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Bootstrap selector-engine.js v5.
|
|
3
|
-
* Copyright 2011-
|
|
2
|
+
* Bootstrap selector-engine.js v5.2.2 (https://getbootstrap.com/)
|
|
3
|
+
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
|
4
4
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
5
5
|
*/
|
|
6
6
|
(function (global, factory) {
|
|
7
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
|
8
|
-
typeof define === 'function' && define.amd ? define(factory) :
|
|
9
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.SelectorEngine = factory());
|
|
10
|
-
})(this, (function () { 'use strict';
|
|
7
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('../util/index')) :
|
|
8
|
+
typeof define === 'function' && define.amd ? define(['../util/index'], factory) :
|
|
9
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.SelectorEngine = factory(global.Index));
|
|
10
|
+
})(this, (function (index) { 'use strict';
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* --------------------------------------------------------------------------
|
|
14
|
-
* Bootstrap (v5.
|
|
14
|
+
* Bootstrap (v5.2.2): dom/selector-engine.js
|
|
15
15
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
16
16
|
* --------------------------------------------------------------------------
|
|
17
17
|
*/
|
|
18
|
-
|
|
19
|
-
const isElement = obj => {
|
|
20
|
-
if (!obj || typeof obj !== 'object') {
|
|
21
|
-
return false;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
if (typeof obj.jquery !== 'undefined') {
|
|
25
|
-
obj = obj[0];
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
return typeof obj.nodeType !== 'undefined';
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
const isVisible = element => {
|
|
32
|
-
if (!isElement(element) || element.getClientRects().length === 0) {
|
|
33
|
-
return false;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
return getComputedStyle(element).getPropertyValue('visibility') === 'visible';
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
const isDisabled = element => {
|
|
40
|
-
if (!element || element.nodeType !== Node.ELEMENT_NODE) {
|
|
41
|
-
return true;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
if (element.classList.contains('disabled')) {
|
|
45
|
-
return true;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
if (typeof element.disabled !== 'undefined') {
|
|
49
|
-
return element.disabled;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';
|
|
53
|
-
};
|
|
54
|
-
|
|
55
18
|
/**
|
|
56
|
-
*
|
|
57
|
-
* Bootstrap (v5.1.3): dom/selector-engine.js
|
|
58
|
-
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
59
|
-
* --------------------------------------------------------------------------
|
|
19
|
+
* Constants
|
|
60
20
|
*/
|
|
61
|
-
|
|
21
|
+
|
|
62
22
|
const SelectorEngine = {
|
|
63
23
|
find(selector, element = document.documentElement) {
|
|
64
24
|
return [].concat(...Element.prototype.querySelectorAll.call(element, selector));
|
|
@@ -74,14 +34,11 @@
|
|
|
74
34
|
|
|
75
35
|
parents(element, selector) {
|
|
76
36
|
const parents = [];
|
|
77
|
-
let ancestor = element.parentNode;
|
|
78
|
-
|
|
79
|
-
while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {
|
|
80
|
-
if (ancestor.matches(selector)) {
|
|
81
|
-
parents.push(ancestor);
|
|
82
|
-
}
|
|
37
|
+
let ancestor = element.parentNode.closest(selector);
|
|
83
38
|
|
|
84
|
-
|
|
39
|
+
while (ancestor) {
|
|
40
|
+
parents.push(ancestor);
|
|
41
|
+
ancestor = ancestor.parentNode.closest(selector);
|
|
85
42
|
}
|
|
86
43
|
|
|
87
44
|
return parents;
|
|
@@ -101,6 +58,7 @@
|
|
|
101
58
|
return [];
|
|
102
59
|
},
|
|
103
60
|
|
|
61
|
+
// TODO: this is now unused; remove later along with prev()
|
|
104
62
|
next(element, selector) {
|
|
105
63
|
let next = element.nextElementSibling;
|
|
106
64
|
|
|
@@ -116,8 +74,8 @@
|
|
|
116
74
|
},
|
|
117
75
|
|
|
118
76
|
focusableChildren(element) {
|
|
119
|
-
const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable="true"]'].map(selector => `${selector}:not([tabindex^="-"])`).join(',
|
|
120
|
-
return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el));
|
|
77
|
+
const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable="true"]'].map(selector => `${selector}:not([tabindex^="-"])`).join(',');
|
|
78
|
+
return this.find(focusables, element).filter(el => !index.isDisabled(el) && index.isVisible(el));
|
|
121
79
|
}
|
|
122
80
|
|
|
123
81
|
};
|