hubl/src/scripts/index.js

101 lines
3.8 KiB
JavaScript
Raw Normal View History

2019-11-14 12:27:04 +00:00
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
if (element.getAttribute(prefix + '-widgets-multiple') !== null) {
element.querySelectorAll('div > sib-display').forEach((el) => {
el.setAttribute(prefix + '-widgets', "");
});
}
}
2019-11-14 12:27:04 +00:00
//- 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);
});
});
}
2019-11-25 18:54:54 +00:00
// auxiliary function closes the user profile menu
function closeUserControls() {
let userControls = document.querySelector('#user-controls');
if (userControls) userControls.removeAttribute("open");
}
document.addEventListener('DOMContentLoaded', function (event) {
const menuWrappers = Array.from(document.querySelectorAll('.menu-wrapper'));
const rightMenus = Array.from(document.querySelectorAll('nav.jsRightMenu'));
2019-05-14 16:19:30 +00:00
const viewsContainer = Array.from(document.querySelectorAll('.views-container'));
//- View change event
// window.addEventListener('navigate', (event) => {
// });
2019-05-20 13:06:07 +00:00
2019-05-14 16:19:30 +00:00
//- Toggle sub-menus
menuWrappers.forEach(menuWrapper => {
const menu = menuWrapper.querySelector('.menu');
menu.addEventListener('click', e => {
menuWrapper.classList.toggle('is-closed');
});
});
2019-05-14 16:19:30 +00:00
//- Open/close menu on the right
rightMenus.forEach(rightMenu => {
const btnRightMenu = rightMenu.querySelector("li.jsOffsiteToggle");
2019-05-13 16:50:34 +00:00
btnRightMenu.addEventListener('click', e => {
2019-05-14 16:19:30 +00:00
rightMenus.forEach(rM => rM.classList.toggle('offsite-is-closed'));
viewsContainer.forEach(vC => vC.classList.toggle('sidebar-is-closed'));
})
2019-05-13 16:50:34 +00:00
});
2019-08-08 14:00:16 +00:00
document.querySelector('sib-auth').getUser().then(user => {
2019-11-14 12:27:04 +00:00
if (user !== null) {
2019-10-02 14:56:49 +00:00
// Hide login button if already logged
2019-11-12 12:13:52 +00:00
document.querySelector('button[role="log in"]').setAttribute('style', 'display:none !important');
2019-10-02 14:56:49 +00:00
// Set current user id on set-user-id of sib-display
2019-11-14 12:27:04 +00:00
recursiveAdaptWidgets("hd-inherit", document, user);
for (leaveBtn of document.querySelectorAll('admin-circle-leave > sib-ac-checker:not([hidden])')) {
2019-11-12 12:13:52 +00:00
leaveBtn.parentNode.parentNode.parentNode.nextElementSibling.setAttribute('style', 'display:none !important'); // Hide Join button
}
2019-08-08 14:00:16 +00:00
}
}).catch(error => console.log(error));
2019-11-15 13:02:08 +00:00
// Document -> close menu
document.addEventListener("click", event => {
2019-11-25 18:54:54 +00:00
if (!event.target.closest('#user-controls')) closeUserControls();
2019-11-15 13:02:08 +00:00
});
2019-11-14 12:27:04 +00:00
2019-11-25 18:54:54 +00:00
// listen for keypress
document.onkeydown = (e) => {
e = e || window.event;
if (e.key === "Escape" || e.key === "Esc") closeUserControls();
};
2019-05-13 16:50:34 +00:00
});