mirror of
https://github.com/twbs/bootstrap.git
synced 2025-08-08 22:56:46 +02:00
Fix interoperability issue regarding Event properties (#36386)
* Fix interoperability issue regarding Event properties - make possible to re-set read-only event properties - use hydrateObj() to set delegateTarget property Fixes #36207 Co-authored-by: GeoSot <geo.sotis@gmail.com> Co-authored-by: Julien Déramond <julien.deramond@orange.com>
This commit is contained in:
committed by
GitHub
parent
4082a3b52d
commit
505e0235b9
@@ -89,7 +89,7 @@ function getElementEvents(element) {
|
||||
|
||||
function bootstrapHandler(element, fn) {
|
||||
return function handler(event) {
|
||||
event.delegateTarget = element
|
||||
hydrateObj(event, { delegateTarget: element })
|
||||
|
||||
if (handler.oneOff) {
|
||||
EventHandler.off(element, event.type, fn)
|
||||
@@ -109,7 +109,7 @@ function bootstrapDelegationHandler(element, selector, fn) {
|
||||
continue
|
||||
}
|
||||
|
||||
event.delegateTarget = target
|
||||
hydrateObj(event, { delegateTarget: target })
|
||||
|
||||
if (handler.oneOff) {
|
||||
EventHandler.off(element, event.type, selector, fn)
|
||||
@@ -302,11 +302,16 @@ const EventHandler = {
|
||||
|
||||
function hydrateObj(obj, meta) {
|
||||
for (const [key, value] of Object.entries(meta || {})) {
|
||||
Object.defineProperty(obj, key, {
|
||||
get() {
|
||||
return value
|
||||
}
|
||||
})
|
||||
try {
|
||||
obj[key] = value
|
||||
} catch {
|
||||
Object.defineProperty(obj, key, {
|
||||
configurable: true,
|
||||
get() {
|
||||
return value
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
return obj
|
||||
|
Reference in New Issue
Block a user