From 1621c5c575246790ac46f418c8b598c78e1764ac Mon Sep 17 00:00:00 2001 From: Patrizio Bekerle <patrizio@bekerle.com> Date: Mon, 11 Jan 2021 14:46:12 +0100 Subject: [PATCH] Don't use parent for events and add attribute warning (dbp/apps/library#77) --- packages/provider/src/adapter-lit-element.js | 16 ++++++++++++---- packages/provider/src/provider.js | 7 +++---- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/packages/provider/src/adapter-lit-element.js b/packages/provider/src/adapter-lit-element.js index e457983a..53ca6a10 100644 --- a/packages/provider/src/adapter-lit-element.js +++ b/packages/provider/src/adapter-lit-element.js @@ -46,13 +46,21 @@ export class AdapterLitElement extends LitElement { detail: { name: global, callback: (value) => { - console.log('AdapterLitElement(' + this.tagName + ') sub/Callback ' + global + ' -> ' + local + ' = ' + value); - this.attributeChangedCallback(local, that[local], value); + console.log('AdapterLitElement(' + that.tagName + ') sub/Callback ' + global + ' -> ' + local + ' = ' + value); + that.attributeChangedCallback(local, that[local], value); + + // we don't support attributes and provider values at the same time + if (that.getAttribute(local) !== null) { + console.warn('Provider callback: "' + local + '" is also an attribute in tag "' + that.tagName + '", this is not supported!'); + } else { + // we don't want to set the attribute + // that.setAttribute(local, value); + } }, sender: this, } }); - this.parentElement.dispatchEvent(event); + this.dispatchEvent(event); } unSubscribeProviderFor(element) { @@ -68,7 +76,7 @@ export class AdapterLitElement extends LitElement { sender: this, } }); - this.parentElement.dispatchEvent(event); + this.dispatchEvent(event); } static get properties() { diff --git a/packages/provider/src/provider.js b/packages/provider/src/provider.js index 49249d39..b213edbe 100644 --- a/packages/provider/src/provider.js +++ b/packages/provider/src/provider.js @@ -42,8 +42,7 @@ export class Provider extends HTMLElement { console.log('Provider(' + this.id() + ') connectedCallback()'); const that = this; - const parent = this.parentElement; - parent.addEventListener('inherit', function (e) { + this.addEventListener('inherit', function (e) { if (that[e.detail.name]) { console.log('Provider(' + that.id() + ') eventListener("inherit",..) name "' + e.detail.name + '" found.'); //console.dir(e.detail); @@ -52,7 +51,7 @@ export class Provider extends HTMLElement { } }, false); - parent.addEventListener('subscribe', function (e) { + this.addEventListener('subscribe', function (e) { const name = e.detail.name; if (that[name]) { console.log('Provider(' + that.id() + ') eventListener("subscribe",..) name "' + name + '" found.'); @@ -63,7 +62,7 @@ export class Provider extends HTMLElement { } }, false); - parent.addEventListener('unsubscribe', function (e) { + this.addEventListener('unsubscribe', function (e) { const name = e.detail.name; const sender = e.detail.sender; if (that[name]) { -- GitLab