fix: recursiveAdaptWidgets

This commit is contained in:
Jean-Baptiste Pasquier 2020-02-19 16:27:22 +01:00
parent e1bce61124
commit 8042b179c6
No known key found for this signature in database
GPG Key ID: F2702E6D22ED4D62
5 changed files with 46 additions and 54 deletions

View File

@ -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"]
);
}
//- 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"
);
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"];
}
//- 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 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"]
);
}
//- 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);
//- 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/", "")
);
}
}
//- 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"];
}
}
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);
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])"
)) {

View File

@ -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']"
)

View File

@ -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'

View File

@ -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
)

View File

@ -94,7 +94,6 @@ sib-router(default-route='project-profile', hidden)
search-value-user=""
hd-inherit-user-id="search-value-user"
hd-inherit-widgets
)