TabContainer = { initTabGroups() { const groups = document.querySelectorAll(".tab-group"); const unloadedGroups = [...groups].filter((g) => !g.initialised); unloadedGroups.forEach((group) => { const containers = group.querySelectorAll(".tab-container"); const tabTitles = [...containers].map((c) => c.getAttribute("title")); const tabList = document.createElement("div"); tabList.classList.add("tab-buttons"); tabTitles.forEach((title) => { const tabButton = document.createElement("button"); tabButton.innerHTML = title; tabButton.onclick = (e) => { this.setActiveTab(e.target); }; tabList.appendChild(tabButton); }); group.prepend(tabList); this.setActiveTab(tabList.firstChild); group.initialised = true; }); }, setActiveTab(tabButton) { const group = tabButton.closest(".tab-group"); group.querySelectorAll(".active").forEach((el) => el.classList.remove("active")); tabButton.classList.add("active"); group.querySelector(`[title="${tabButton.innerHTML}"]`).classList.add("active"); }, }; document.addEventListener("DOMContentLoaded", () => { TabContainer.initTabGroups(); });