2019-10-29 14:38:33 +00:00
|
|
|
function querySelectorParentChild(el, selector) {
|
|
|
|
while(el !== document.body) {
|
|
|
|
if(el.querySelector(selector)) {
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
el = el.parentNode;
|
|
|
|
}
|
|
|
|
return el.querySelector(selector);
|
|
|
|
}
|
|
|
|
|
2018-12-03 18:49:32 +00:00
|
|
|
document.addEventListener('DOMContentLoaded', function (event) {
|
|
|
|
const menuWrappers = Array.from(document.querySelectorAll('.menu-wrapper'));
|
2019-02-19 15:40:29 +00:00
|
|
|
const rightMenus = Array.from(document.querySelectorAll('nav.jsRightMenu'));
|
2019-05-14 16:19:30 +00:00
|
|
|
const viewsContainer = Array.from(document.querySelectorAll('.views-container'));
|
2018-12-03 18:49:32 +00:00
|
|
|
|
2019-06-05 11:26:10 +00:00
|
|
|
//- 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
|
2018-12-03 18:49:32 +00:00
|
|
|
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
|
2019-02-19 15:40:29 +00:00
|
|
|
rightMenus.forEach(rightMenu => {
|
|
|
|
const btnRightMenu = rightMenu.querySelector("li.jsOffsiteToggle");
|
2019-05-13 16:50:34 +00:00
|
|
|
|
2019-02-19 15:40:29 +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-02-19 15:40:29 +00:00
|
|
|
})
|
2019-05-13 16:50:34 +00:00
|
|
|
});
|
|
|
|
|
2019-06-05 11:26:10 +00:00
|
|
|
//- Watch every sib-forms & update data-src of linked sib-display
|
|
|
|
document.querySelectorAll('sib-form[data-src], sib-form[bind-resource]').forEach(function(el) {
|
|
|
|
el.addEventListener("save", function() {
|
|
|
|
let dataSrc = el.getAttribute('data-src');
|
|
|
|
document.querySelectorAll('sib-display[data-src="'+dataSrc+'"]').forEach(function(e) {
|
2019-11-12 11:49:12 +00:00
|
|
|
e.resource.clearCache();
|
2019-06-05 11:26:10 +00:00
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2019-08-08 14:00:16 +00:00
|
|
|
document.querySelector('sib-auth').getUser().then(user => {
|
|
|
|
if(user !== null) {
|
2019-10-02 14:56:49 +00:00
|
|
|
// Hide login button if already logged
|
2019-08-08 14:00:16 +00:00
|
|
|
document.querySelector('button[role="log in"]').style.display = 'none';
|
2019-10-02 14:56:49 +00:00
|
|
|
// Set current user id on set-user-id of sib-display
|
|
|
|
for(sibDisplay of document.querySelectorAll('sib-display[set-user-id]')) {
|
|
|
|
sibDisplay.setAttribute(sibDisplay.getAttribute('set-user-id'), user['@id']);
|
2019-08-08 14:00:16 +00:00
|
|
|
}
|
2019-10-25 13:35:14 +00:00
|
|
|
|
|
|
|
for(sibForm of document.querySelectorAll('[set-user-id-select]')) {
|
|
|
|
sibForm.addEventListener('populate', () => {
|
|
|
|
// BUG: Populate event trigger before the view is fully loaded! - https://git.happy-dev.fr/startinblox/framework/sib-core/issues/521
|
2019-10-29 14:38:33 +00:00
|
|
|
document.querySelectorAll('sib-ac-checker:not([hidden]) > sib-delete[data-label^="Leave"]').forEach((el)=>{
|
|
|
|
querySelectorParentChild(el, 'sib-form[submit-button^="Join"]').style.display = "none";
|
|
|
|
});
|
2019-10-25 13:35:14 +00:00
|
|
|
for(select of sibForm.querySelectorAll('select[name="'+sibForm.getAttribute('set-user-id-select')+'"]')) {
|
|
|
|
for(option of select.options) {
|
|
|
|
option.selected = (option.getAttribute('value') == '{"@id": "'+user['@id']+'"}');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
2019-10-25 17:15:45 +00:00
|
|
|
for(leaveBtn of document.querySelectorAll('admin-circle-leave > sib-ac-checker:not([hidden])')) {
|
|
|
|
leaveBtn.parentNode.parentNode.parentNode.nextElementSibling.style.display = "none"; // Hide Join button
|
|
|
|
}
|
2019-08-08 14:00:16 +00:00
|
|
|
}
|
|
|
|
}).catch(error => console.log(error));
|
2019-06-05 11:26:10 +00:00
|
|
|
|
2019-10-25 13:35:14 +00:00
|
|
|
|
|
|
|
|
2019-05-13 16:50:34 +00:00
|
|
|
});
|