import { Component, OnDestroy, OnInit } from '@angular/core'; import { NbMediaBreakpointsService, NbMenuService, NbSidebarService, NbThemeService, NbMenuItem } from '@nebular/theme'; import { UserData } from '../../../@core/data/users'; import { LayoutService } from '../../../@core/utils'; import { map, takeUntil } from 'rxjs/operators'; import { Subject } from 'rxjs'; import { AuthService } from '../../../service/auth.service'; import { Router } from '@angular/router'; @Component({ selector: 'ngx-header', styleUrls: ['./header.component.scss'], templateUrl: './header.component.html', }) export class HeaderComponent implements OnInit, OnDestroy { private destroy$: Subject = new Subject(); userPictureOnly: boolean = false; user: any; themes = [ { value: 'default', name: 'Light', }, { value: 'dark', name: 'Dark', }, // { // value: 'cosmic', // name: 'Cosmic', // }, // { // value: 'corporate', // name: 'Corporate', // }, ]; currentTheme = 'default'; userMenu = [ { title: 'Profile' }, { title: 'Log out' } ]; constructor(private sidebarService: NbSidebarService, private menuService: NbMenuService, private themeService: NbThemeService, private userService: UserData, private layoutService: LayoutService, private breakpointService: NbMediaBreakpointsService, private authService: AuthService, private router: Router) { } ngOnInit() { this.currentTheme = this.themeService.currentTheme; this.userService.getUsers() .pipe(takeUntil(this.destroy$)) .subscribe((users: any) => this.user = users.nick); const { xl } = this.breakpointService.getBreakpointsMap(); this.themeService.onMediaQueryChange() .pipe( map(([, currentBreakpoint]) => currentBreakpoint.width < xl), takeUntil(this.destroy$), ) .subscribe((isLessThanXl: boolean) => this.userPictureOnly = isLessThanXl); this.themeService.onThemeChange() .pipe( map(({ name }) => name), takeUntil(this.destroy$), ) .subscribe(themeName => this.currentTheme = themeName); this.menuService.onItemClick().subscribe((event: { item: NbMenuItem }) => { if (event.item.title === 'Log out') { this.logout(); } else if (event.item.title === 'Profile') { this.router.navigate(['/pages/layout/stepper/profile']); // Redirect to profile page } }); } ngOnDestroy() { this.destroy$.next(); this.destroy$.complete(); } changeTheme(themeName: string) { this.themeService.changeTheme(themeName); } toggleSidebar(): boolean { this.sidebarService.toggle(true, 'menu-sidebar'); this.layoutService.changeLayoutSize(); return false; } navigateHome() { this.menuService.navigateHome(); return false; } logout(): void { this.authService.logout(); } }