From 8042b179c6585b399641f90c7723d81d639d88e0 Mon Sep 17 00:00:00 2001
From: Jean-Baptiste Pasquier <contact@jbpasquier.eu>
Date: Wed, 19 Feb 2020 16:27:22 +0100
Subject: [PATCH] fix: recursiveAdaptWidgets

---
 src/scripts/index.js                       | 83 +++++++++++-----------
 src/views/admin/page-admin-circles.pug     |  1 -
 src/views/admin/page-admin-projects.pug    |  3 -
 src/views/circle/page-circle-profile.pug   |  2 -
 src/views/project/page-project-profile.pug |  1 -
 5 files changed, 41 insertions(+), 49 deletions(-)

diff --git a/src/scripts/index.js b/src/scripts/index.js
index e9eedba7..ecbafe8f 100644
--- a/src/scripts/index.js
+++ b/src/scripts/index.js
@@ -1,50 +1,47 @@
-function recursiveAdaptWidgets(prefix, element, user) {
-  //- This function is a workaround for the currently unworking populate
-  //- Feel free to see examples on page-circles-
-
-  element.querySelectorAll("[" + prefix + "-user-id]").forEach(el => {
-    el.setAttribute(el.getAttribute(prefix + "-user-id"), user["@id"]);
-  });
-
-  if (element != document) {
-    //- Allow to bind-user on selected attribute
-    if (element.getAttribute(prefix + "-user-id")) {
-      element.setAttribute(
-        element.getAttribute(prefix + "-user-id"),
-        user["@id"]
-      );
-    }
+function applyAdapt(prefix, sibDisplay, user) {
+  
+  //- Allow to bind-user on selected attribute
+  if (sibDisplay.getAttribute(prefix + "-user-id")) {
+    sibDisplay.setAttribute(
+      sibDisplay.getAttribute(prefix + "-user-id"),
+      user["@id"]
+    );
+  }
 
-    //- Allow to set data-src to a children sib-form
-    if (element.getAttribute(prefix + "-bind-resources")) {
-      let form = element.querySelector(
-        element.getAttribute(prefix + "-bind-resources") + " sib-form"
+  //- Allow to set data-src to a children sib-form
+  if (sibDisplay.getAttribute(prefix + "-bind-resources")) {
+    let form = sibDisplay.querySelector(
+      sibDisplay.getAttribute(prefix + "-bind-resources") + " sib-form"
+    );
+    if (form) {
+      form.setAttribute(
+        "data-src",
+        sibDisplay.component.resourceId.replace("members/", "")
       );
-      if (form) {
-        form.setAttribute(
-          "data-src",
-          element.component.resourceId.replace("members/", "")
-        );
-      }
     }
+  }
 
-    //- Allow to put user on a targetted search field
-    if (element.getAttribute(prefix + "-bind-user2input")) {
-      element.querySelector(
-        element.getAttribute(prefix + "-bind-user2input")
-      ).value = user["@id"];
-    }
+  //- Allow to put user on a targetted search field
+  if (sibDisplay.getAttribute(prefix + "-bind-user2input")) {
+    sibDisplay.querySelector(
+      sibDisplay.getAttribute(prefix + "-bind-user2input")
+    ).value = user["@id"];
+  }
+}
 
-    //- In case your sib-display use a multiple, you have to target sub-sib-display auto-generated
-    element.querySelectorAll("sib-display, sib-form, div > sib-display, div > sib-form").forEach(el => {
-      el.setAttribute(prefix + "-widgets", "");
+function recursiveAdaptWidgets(prefix, element, user) {
+  
+  element.addEventListener("populate", () => {
+    
+    //- This function is a workaround for the currently unworking populate
+    //- Feel free to see examples on page-circles-
+    element.querySelectorAll("[" + prefix + "-user-id]").forEach(el => {
+      el.setAttribute(el.getAttribute(prefix + "-user-id"), user["@id"]);
     });
-  }
+    applyAdapt(prefix, element, user);
 
-  //- This function is hooked every time a sib-something with prefix+"-widgets" is populated
-  element.querySelectorAll("[" + prefix + "-widgets]").forEach(elementChild => {
-    elementChild.addEventListener("populate", () => {
-      recursiveAdaptWidgets(prefix, elementChild, user);
+    document.querySelectorAll('sib-display, sib-form').forEach(sibDisplay => {
+      applyAdapt(prefix, sibDisplay, user);
     });
   });
 }
@@ -219,8 +216,10 @@ document.addEventListener("DOMContentLoaded", function(event) {
         document
           .querySelector('button[role="log in"]')
           .setAttribute("style", "display:none !important");
-        // Set current user id on set-user-id of sib-display
-        recursiveAdaptWidgets("hd-inherit", document, user);
+        document.querySelectorAll('sib-display, sib-form').forEach(element => {
+          // Set current user id on set-user-id of sib-display
+          recursiveAdaptWidgets("hd-inherit", element, user);
+        });
         for (leaveBtn of document.querySelectorAll(
           "admin-circle-leave > sib-ac-checker:not([hidden])"
         )) {
diff --git a/src/views/admin/page-admin-circles.pug b/src/views/admin/page-admin-circles.pug
index b84078e4..fd9c3356 100644
--- a/src/views/admin/page-admin-circles.pug
+++ b/src/views/admin/page-admin-circles.pug
@@ -94,7 +94,6 @@
 
           class-members='w33 cell border cell-with-buttons'
           widget-members="admin-circle-join-button"
-          hd-inherit-bind-user2input="input[name='user.@id']"
         )
 
 
diff --git a/src/views/admin/page-admin-projects.pug b/src/views/admin/page-admin-projects.pug
index abec8575..d93aa332 100644
--- a/src/views/admin/page-admin-projects.pug
+++ b/src/views/admin/page-admin-projects.pug
@@ -68,7 +68,6 @@
               search-widget-user='sib-form-hidden'
               search-value-user="-"
               hd-inherit-user-id="search-value-user"
-              hd-inherit-widgets
             )
 
         sib-display(
@@ -84,8 +83,6 @@
 
           widget-buttons="admin-project-buttons"
           action-buttons="buttons"
-          hd-inherit-widgets
-          hd-inherit-widgets-multiple
 
           widget-captain='project-captain'
           widget-members='project-admins'
diff --git a/src/views/circle/page-circle-profile.pug b/src/views/circle/page-circle-profile.pug
index 1c102b2a..70c49026 100644
--- a/src/views/circle/page-circle-profile.pug
+++ b/src/views/circle/page-circle-profile.pug
@@ -60,7 +60,6 @@ sib-router(default-route='circle-profile', hidden)
               widget-user.@id='sib-form-hidden'
 
               hd-inherit-bind-user2input="input[name='user.@id']"
-              hd-inherit-widgets
 
               submit-button='Join Circle'
             )
@@ -77,7 +76,6 @@ sib-router(default-route='circle-profile', hidden)
         empty-widget='circle-join-button'
         hd-inherit-bind-resources='circle-join-button'
         hd-inherit-user-id="search-value-user"
-        hd-inherit-widgets
       )
 
 
diff --git a/src/views/project/page-project-profile.pug b/src/views/project/page-project-profile.pug
index 0f7c7653..62ac1d66 100644
--- a/src/views/project/page-project-profile.pug
+++ b/src/views/project/page-project-profile.pug
@@ -94,7 +94,6 @@ sib-router(default-route='project-profile', hidden)
       search-value-user=""
 
       hd-inherit-user-id="search-value-user"
-      hd-inherit-widgets
     )
 
 
-- 
GitLab