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