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