|
@@ -37,7 +37,14 @@ export default function on (el, event, modifiers, callback) {
|
|
|
|
|
|
if (modifiers.includes('prevent')) handler = wrapHandler(handler, (next, e) => { e.preventDefault(); next(e) })
|
|
|
if (modifiers.includes('stop')) handler = wrapHandler(handler, (next, e) => { e.stopPropagation(); next(e) })
|
|
|
- if (modifiers.includes('self')) handler = wrapHandler(handler, (next, e) => { e.target === el && next(e) })
|
|
|
+
|
|
|
+ if (modifiers.includes("once")) {
|
|
|
+ handler = wrapHandler(handler, (next, e) => {
|
|
|
+ next(e);
|
|
|
+
|
|
|
+ listenerTarget.removeEventListener(event, handler, options);
|
|
|
+ });
|
|
|
+ }
|
|
|
|
|
|
if (modifiers.includes('away') || modifiers.includes('outside')) {
|
|
|
listenerTarget = document
|
|
@@ -57,13 +64,7 @@ export default function on (el, event, modifiers, callback) {
|
|
|
})
|
|
|
}
|
|
|
|
|
|
- if (modifiers.includes('once')) {
|
|
|
- handler = wrapHandler(handler, (next, e) => {
|
|
|
- next(e)
|
|
|
-
|
|
|
- listenerTarget.removeEventListener(event, handler, options)
|
|
|
- })
|
|
|
- }
|
|
|
+ if (modifiers.includes('self')) handler = wrapHandler(handler, (next, e) => { e.target === el && next(e) })
|
|
|
|
|
|
// Handle :keydown and :keyup listeners.
|
|
|
handler = wrapHandler(handler, (next, e) => {
|