Newer
Older
export function openThem({ it, scrollToId }: { it: string; scrollToId?: string }) {
const gotoandopen = (_event: React.MouseEvent<HTMLElement, MouseEvent>) => {
updateTabs(it, scrollToId);
Liliana Sanfilippo
committed
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// Update der URL
const newUrl = `?tab=${it}`;
window.history.pushState({ tab: it }, '', newUrl);
};
return gotoandopen;
}
function updateTabs(it: string, scrollToId?: string) {
let contenttabid = "tab-" + it;
let parent = "parent-" + it;
// Verstecke alle Subtabs und Content-Tabs
const subtabs = document.getElementsByClassName("sidesubtab");
const contenttabs = document.getElementsByClassName("enginneeringtab");
const sideitems = document.getElementsByClassName("sideitem");
for (let i = 0; i < subtabs.length; i++) {
(subtabs[i] as HTMLElement).style.display = "none";
}
for (let i = 0; i < contenttabs.length; i++) {
(contenttabs[i] as HTMLElement).style.display = "none";
}
for (let i = 0; i < sideitems.length; i++) {
(sideitems[i] as HTMLElement)!.classList.remove("active-sideitem");
}
// Zeige den aktuellen Tab und markiere das entsprechende Sidebar-Item
document.getElementById(it)!.style.display = "block";
document.getElementById(parent)!.classList.add("active-sideitem");
document.getElementById(contenttabid)!.style.display = "block";
// Scrolle zu der angegebenen ID, falls vorhanden
if (scrollToId && document.getElementById(scrollToId)) {
document.getElementById(scrollToId)!.scrollIntoView({ behavior: "smooth" });
}
}
// Füge einen Event Listener für `popstate` hinzu
window.addEventListener('popstate', (event) => {
if (event.state) {
const tab = event.state.tab;
updateTabs(tab);
}
});