allow adding custom event handlers to a template view

so you don't have to remove them yourself
This commit is contained in:
Bruno Windels 2020-10-30 22:48:56 +01:00
parent c847cfb200
commit 581dc95c53

View file

@ -74,16 +74,16 @@ export class TemplateView {
_attach() { _attach() {
if (this._eventListeners) { if (this._eventListeners) {
for (let {node, name, fn} of this._eventListeners) { for (let {node, name, fn, useCapture} of this._eventListeners) {
node.addEventListener(name, fn); node.addEventListener(name, fn, useCapture);
} }
} }
} }
_detach() { _detach() {
if (this._eventListeners) { if (this._eventListeners) {
for (let {node, name, fn} of this._eventListeners) { for (let {node, name, fn, useCapture} of this._eventListeners) {
node.removeEventListener(name, fn); node.removeEventListener(name, fn, useCapture);
} }
} }
} }
@ -132,11 +132,11 @@ export class TemplateView {
} }
} }
_addEventListener(node, name, fn) { _addEventListener(node, name, fn, useCapture = false) {
if (!this._eventListeners) { if (!this._eventListeners) {
this._eventListeners = []; this._eventListeners = [];
} }
this._eventListeners.push({node, name, fn}); this._eventListeners.push({node, name, fn, useCapture});
} }
_addBinding(bindingFn) { _addBinding(bindingFn) {
@ -164,6 +164,10 @@ class TemplateBuilder {
return this._templateView._value; return this._templateView._value;
} }
addEventListener(node, name, fn, useCapture = false) {
this._templateView._addEventListener(node, name, fn, useCapture);
}
_addAttributeBinding(node, name, fn) { _addAttributeBinding(node, name, fn) {
let prevValue = undefined; let prevValue = undefined;
const binding = () => { const binding = () => {