From d01d06e6c30df7fef43f758fb601ffff89363b51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20So=CC=88derholm?= Date: Sun, 4 Feb 2018 22:30:40 +0100 Subject: [PATCH] DOM event handler fix, version bump --- package-lock.json | 2 +- package.json | 2 +- src/index.js | 17 +++++++++++------ 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2ae8c97..3f2de6b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "resolve-handlers", - "version": "0.1.2", + "version": "0.1.3", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 8273ef0..33c22d8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "resolve-handlers", - "version": "0.1.2", + "version": "0.1.3", "description": "Resolve handlers from strings.", "main": "index.js", "dependencies": {}, diff --git a/src/index.js b/src/index.js index c3b1015..215d920 100644 --- a/src/index.js +++ b/src/index.js @@ -107,12 +107,17 @@ export function getDOMEventHandler(handlerName, eventType, selector, useCapture, } // Handler method const handler = (event, ...handlerArgs) => { + // If no selector, just call handler + if (!selector) { + this[handlerName](event, ...args.concat(handlerArgs)); + return; + } // Find closest parent that matches selector const currentTarget = componentClosest(event.target, selector, event.currentTarget); - // If no selector or currentTarget found - if (!selector || currentTarget) { - // event proxy, override currentTarget property. - const eventProxy = new Proxy(event, { + // If currentTarget found + if (currentTarget) { + // Proxy event, override currentTarget property. + event = new Proxy(event, { get: function(target, prop, receiver) { if (prop === 'currentTarget') { return currentTarget; @@ -125,8 +130,8 @@ export function getDOMEventHandler(handlerName, eventType, selector, useCapture, } } }); - // Call handler - this[handlerName](eventProxy, ...args.concat(handlerArgs)); + // Call if currentTarget found for selector + this[handlerName](event, ...args.concat(handlerArgs)); } }; // Set attributes on handler for easy add/remove listeners