From dd098277bc5e6770559f6016d4e79cb48b7d2a8d Mon Sep 17 00:00:00 2001
From: Tamara Steinwender <tamara.steinwender@tugraz.at>
Date: Tue, 9 Feb 2021 15:17:52 +0100
Subject: [PATCH] Add Readme description for dbp-adapter

---
 packages/provider/README.md      | 20 ++++++++++++++++++++
 packages/provider/src/adapter.js | 20 +++-----------------
 2 files changed, 23 insertions(+), 17 deletions(-)

diff --git a/packages/provider/README.md b/packages/provider/README.md
index bbdce00e..69a64ba0 100644
--- a/packages/provider/README.md
+++ b/packages/provider/README.md
@@ -88,3 +88,23 @@ the bearer token via `this.auth.token`.
   <dbp-person-select subscribe="auth" lang="${this.lang}" entry-point-url="${this.entryPointUrl}"></dbp-person-select>
 </dbp-person-select-demo>
 ```
+
+## AdapterElement
+
+This is a wrapper for third party webcomponents. you can wrap this class around to support the provider functionality in third party webcomponents.
+
+You can locally "subscribe" to attributes (e.g. `local-name`) that can be provided by a `dbp-provider` (e.g. `global-name`). The `dbp-adapter` will set the attributes to his childnodes.
+
+### Example
+
+Multiple attributes can be subscribed when separated by a comma (`,`).
+
+```html
+<provider global-name="value" global-name2="value2">
+  <dbp-provider-adapter subscribe="local-name:global-name">
+    <third-party-webcomponent>  </third-party-webcomponent>
+  </dbp-provider-adapter>
+</provider>
+<script type="module" src="node_modules/@dbp-toolkit/provider/dist/dbp-provider.js"></script>
+<script type="module" src="node_modules/@dbp-toolkit/provider/dist/dbp-adapter.js"></script>
+```
\ No newline at end of file
diff --git a/packages/provider/src/adapter.js b/packages/provider/src/adapter.js
index 92e97656..6d5dec72 100644
--- a/packages/provider/src/adapter.js
+++ b/packages/provider/src/adapter.js
@@ -22,23 +22,12 @@ export class Adapter extends HTMLElement {
         this[this.findPropertyName(name)] = value;
     }
 
-    setProperty(name, value) {
-        if (typeof value === 'object' && value !== null) {
-            // console.log("value is object", value);
-            this.setPropertyByAttributeName(name, value);
-        } else {
-            this.attributeChangedCallback(name, this.getPropertyByAttributeName(name), value);
-        }
-
-    }
-
     connectedCallback() {
 
         this.connected = true;
 
         const that = this;
 
-        that.setPropertiesToChildNodes();
 
         // get all *not observed* attributes
         if (this.hasAttributes()) {
@@ -47,8 +36,10 @@ export class Adapter extends HTMLElement {
                 if (['id', 'class', 'style', 'data-tag-name'].includes(attrs[i].name)) {
                     continue;
                 }
+                this.setPropertiesToChildNodes();
+
+                this.attributeChangedCallback(attrs[i].name, this.getPropertyByAttributeName(attrs[i].name), attrs[i].value);
 
-                this.setProperty(attrs[i].name, attrs[i].value);
                 console.log('AdapterProvider (' + that.tagName + ') found attribute "' + attrs[i].name + '" = "' + attrs[i].value + '"');
             }
         }
@@ -168,12 +159,8 @@ export class Adapter extends HTMLElement {
                 break;
             default:
                 break;
-                //super.attributeChangedCallback(name, oldValue, newValue);
         }
 
-        // console.log("this.lang", this.tagName, name, this.lang);
-        // console.log("this.entryPointUrl", this.tagName, name, this.entryPointUrl);
-        // console.trace();
     }
 
     /**
@@ -196,7 +183,6 @@ export class Adapter extends HTMLElement {
     setPropertiesToChildNodes(local, value)
     {
         let children = this.children;
-        console.log("----------", children);
         Array.from(children).forEach(child => child.setAttribute(local, value));
     }
 
-- 
GitLab