document.addEventListener('DOMContentLoaded', () => { let elems = Array.from(document.getElementsByClassName("toggle-button")); for (let elem of elems) { elem.addEventListener('click', () => { registerDomSetting(elem as HTMLElement) }) } let copyInviteButtons = Array.from(document.getElementsByClassName("copy-invitation-link")); for (let button of copyInviteButtons) { button.addEventListener('click', () => { navigator.clipboard.writeText((button as HTMLElement).dataset.link).catch((err) => { console.error('Could not copy text: ', err); }); }) } }); const setSetting = (key: string, value: string) => { // @ts-ignore const baseUrl = window.opengist_base_url || ''; const data = new URLSearchParams(); data.append('key', key); data.append('value', value); if (document.getElementsByName('_csrf').length !== 0) { data.append('_csrf', ((document.getElementsByName('_csrf')[0] as HTMLInputElement).value)); } return fetch(`${baseUrl}/admin-panel/set-config`, { method: 'PUT', credentials: 'same-origin', body: data, }); }; const registerDomSetting = (el: HTMLElement) => { // @ts-ignore el.dataset["bool"] = !(el.dataset["bool"] === 'true'); setSetting(el.id, el.dataset["bool"] === 'true' ? '1' : '0') .then(() => { el.classList.toggle("bg-primary-600"); el.classList.toggle("dark:bg-gray-400"); el.classList.toggle("bg-gray-300"); (el.childNodes.item(1) as HTMLElement).classList.toggle("translate-x-5"); }); };