sidebar
This commit is contained in:
@@ -3,8 +3,7 @@
|
|||||||
<div class="nav-item" (click)="toggleSidebar()">
|
<div class="nav-item" (click)="toggleSidebar()">
|
||||||
<app-icon [iconName]="'placeholder'" [svgColor]="'#8e44ad'"></app-icon>
|
<app-icon [iconName]="'placeholder'" [svgColor]="'#8e44ad'"></app-icon>
|
||||||
|
|
||||||
<span>Toggle</span>
|
<span>Toggle</span>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
@@ -14,9 +13,29 @@
|
|||||||
>
|
>
|
||||||
<app-icon [iconName]="'placeholder'" [svgColor]="'#8e44ad'"></app-icon>
|
<app-icon [iconName]="'placeholder'" [svgColor]="'#8e44ad'"></app-icon>
|
||||||
|
|
||||||
<span>Home</span>
|
<span>Home</span>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div
|
||||||
|
class="nav-item"
|
||||||
|
[class.active]="activeRoute === 'categories'"
|
||||||
|
(click)="setActive('categories')"
|
||||||
|
>
|
||||||
|
<app-icon [iconName]="'placeholder'" [svgColor]="'#8e44ad'"></app-icon>
|
||||||
|
|
||||||
|
<span>categories</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div
|
||||||
|
class="nav-item"
|
||||||
|
[class.active]="activeRoute === 'discounts'"
|
||||||
|
(click)="setActive('discounts')"
|
||||||
|
>
|
||||||
|
<app-icon [iconName]="'placeholder'" [svgColor]="'#8e44ad'"></app-icon>
|
||||||
|
|
||||||
|
<span>discounts</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="nav-item"
|
class="nav-item"
|
||||||
[class.active]="activeRoute === 'uebersicht'"
|
[class.active]="activeRoute === 'uebersicht'"
|
||||||
@@ -24,8 +43,7 @@
|
|||||||
>
|
>
|
||||||
<app-icon [iconName]="'placeholder'" [svgColor]="'#8e44ad'"></app-icon>
|
<app-icon [iconName]="'placeholder'" [svgColor]="'#8e44ad'"></app-icon>
|
||||||
|
|
||||||
<span>Übersicht</span>
|
<span>Übersicht</span>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
</aside>
|
</aside>
|
||||||
|
|||||||
@@ -1,15 +1,17 @@
|
|||||||
import { Component, Inject, PLATFORM_ID, OnInit } from '@angular/core';
|
import { Component, Inject, PLATFORM_ID, OnInit } from '@angular/core';
|
||||||
import { CommonModule, isPlatformBrowser } from '@angular/common';
|
import { CommonModule, isPlatformBrowser } from '@angular/common';
|
||||||
import { IconComponent } from '../../ui/icon/icon.component';
|
import { IconComponent } from '../../ui/icon/icon.component';
|
||||||
|
import { Router } from '@angular/router';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-sidebar',
|
selector: 'app-sidebar',
|
||||||
standalone: true,
|
standalone: true,
|
||||||
imports: [CommonModule, IconComponent],
|
imports: [CommonModule, IconComponent],
|
||||||
templateUrl: './sidebar.component.html',
|
templateUrl: './sidebar.component.html',
|
||||||
styleUrl: './sidebar.component.css'
|
styleUrl: './sidebar.component.css',
|
||||||
})
|
})
|
||||||
export class SidebarComponent implements OnInit { // 1. OnInit implementieren
|
export class SidebarComponent implements OnInit {
|
||||||
|
// 1. OnInit implementieren
|
||||||
// Key für localStorage, genau wie beim Dark Mode
|
// Key für localStorage, genau wie beim Dark Mode
|
||||||
private readonly sidebarCollapsedKey = 'app-sidebar-collapsed-setting';
|
private readonly sidebarCollapsedKey = 'app-sidebar-collapsed-setting';
|
||||||
|
|
||||||
@@ -20,7 +22,10 @@ export class SidebarComponent implements OnInit { // 1. OnInit implementieren
|
|||||||
public isCollapsed = false;
|
public isCollapsed = false;
|
||||||
|
|
||||||
// 2. PLATFORM_ID injizieren, um localStorage sicher zu verwenden
|
// 2. PLATFORM_ID injizieren, um localStorage sicher zu verwenden
|
||||||
constructor(@Inject(PLATFORM_ID) private platformId: Object) {}
|
constructor(
|
||||||
|
@Inject(PLATFORM_ID) private platformId: Object,
|
||||||
|
private router: Router
|
||||||
|
) {}
|
||||||
|
|
||||||
// 3. Beim Start der Komponente den gespeicherten Zustand laden
|
// 3. Beim Start der Komponente den gespeicherten Zustand laden
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
@@ -30,6 +35,8 @@ export class SidebarComponent implements OnInit { // 1. OnInit implementieren
|
|||||||
// Dummy-Methode
|
// Dummy-Methode
|
||||||
setActive(route: string): void {
|
setActive(route: string): void {
|
||||||
this.activeRoute = route;
|
this.activeRoute = route;
|
||||||
|
this.router.navigateByUrl('/shop/' + route);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 4. Die Umschalt-Methode aktualisieren, damit sie den neuen Zustand speichert
|
// 4. Die Umschalt-Methode aktualisieren, damit sie den neuen Zustand speichert
|
||||||
@@ -57,7 +64,10 @@ export class SidebarComponent implements OnInit { // 1. OnInit implementieren
|
|||||||
private saveCollapsedState(): void {
|
private saveCollapsedState(): void {
|
||||||
if (isPlatformBrowser(this.platformId)) {
|
if (isPlatformBrowser(this.platformId)) {
|
||||||
try {
|
try {
|
||||||
localStorage.setItem(this.sidebarCollapsedKey, String(this.isCollapsed));
|
localStorage.setItem(
|
||||||
|
this.sidebarCollapsedKey,
|
||||||
|
String(this.isCollapsed)
|
||||||
|
);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error('Could not write to localStorage for sidebar state:', e);
|
console.error('Could not write to localStorage for sidebar state:', e);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user