Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/gohugoio/hugo-mod-jslibs-dist.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'alpinejs/packages/alpinejs/src/utils/on.js')
-rw-r--r--alpinejs/packages/alpinejs/src/utils/on.js18
1 files changed, 10 insertions, 8 deletions
diff --git a/alpinejs/packages/alpinejs/src/utils/on.js b/alpinejs/packages/alpinejs/src/utils/on.js
index b000cfd..1727d37 100644
--- a/alpinejs/packages/alpinejs/src/utils/on.js
+++ b/alpinejs/packages/alpinejs/src/utils/on.js
@@ -28,6 +28,8 @@ export default function on (el, event, modifiers, callback) {
handler = wrapHandler(handler, (next, e) => {
if (el.contains(e.target)) return
+ if (e.target.isConnected === false) return
+
if (el.offsetWidth < 1 && el.offsetHeight < 1) return
// Additional check for special implementations like x-collapse
@@ -38,6 +40,14 @@ export default function on (el, event, modifiers, callback) {
})
}
+ if (modifiers.includes('once')) {
+ handler = wrapHandler(handler, (next, e) => {
+ next(e)
+
+ listenerTarget.removeEventListener(event, handler, options)
+ })
+ }
+
// Handle :keydown and :keyup listeners.
handler = wrapHandler(handler, (next, e) => {
if (isKeyEvent(event)) {
@@ -63,14 +73,6 @@ export default function on (el, event, modifiers, callback) {
handler = throttle(handler, wait)
}
- if (modifiers.includes('once')) {
- handler = wrapHandler(handler, (next, e) => {
- next(e)
-
- listenerTarget.removeEventListener(event, handler, options)
- })
- }
-
listenerTarget.addEventListener(event, handler, options)
return () => {