2026-02-26 21:54:21 +04:00
|
|
|
import { Component, ChangeDetectionStrategy, Renderer2, inject, DOCUMENT } from '@angular/core';
|
2026-02-14 00:45:17 +04:00
|
|
|
import { Router, RouterLink, RouterLinkActive } from '@angular/router';
|
2026-02-26 22:23:08 +04:00
|
|
|
import { CartService, LanguageService } from '../../services';
|
2026-01-18 18:57:06 +04:00
|
|
|
import { environment } from '../../../environments/environment';
|
|
|
|
|
import { LogoComponent } from '../logo/logo.component';
|
|
|
|
|
import { LanguageSelectorComponent } from '../language-selector/language-selector.component';
|
2026-02-26 22:23:08 +04:00
|
|
|
import { LangRoutePipe } from '../../pipes/lang-route.pipe';
|
2026-01-18 18:57:06 +04:00
|
|
|
|
|
|
|
|
@Component({
|
|
|
|
|
selector: 'app-header',
|
2026-02-26 22:23:08 +04:00
|
|
|
imports: [RouterLink, RouterLinkActive, LogoComponent, LanguageSelectorComponent, LangRoutePipe],
|
2026-01-18 18:57:06 +04:00
|
|
|
templateUrl: './header.component.html',
|
2026-02-19 01:23:25 +04:00
|
|
|
styleUrls: ['./header.component.scss'],
|
|
|
|
|
changeDetection: ChangeDetectionStrategy.OnPush
|
2026-01-18 18:57:06 +04:00
|
|
|
})
|
|
|
|
|
export class HeaderComponent {
|
|
|
|
|
cartItemCount;
|
|
|
|
|
menuOpen = false;
|
|
|
|
|
brandName = environment.brandFullName;
|
|
|
|
|
logo = environment.logo;
|
|
|
|
|
isnovo = environment.theme === 'novo';
|
|
|
|
|
|
2026-02-26 21:54:21 +04:00
|
|
|
private renderer = inject(Renderer2);
|
|
|
|
|
private document = inject(DOCUMENT);
|
2026-02-26 22:23:08 +04:00
|
|
|
private langService = inject(LanguageService);
|
2026-02-26 21:54:21 +04:00
|
|
|
|
2026-02-14 00:45:17 +04:00
|
|
|
constructor(private cartService: CartService, private router: Router) {
|
2026-01-18 18:57:06 +04:00
|
|
|
this.cartItemCount = this.cartService.itemCount;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
toggleMenu(): void {
|
|
|
|
|
this.menuOpen = !this.menuOpen;
|
2026-02-26 21:54:21 +04:00
|
|
|
if (this.menuOpen) {
|
|
|
|
|
this.renderer.addClass(this.document.body, 'dexar-menu-open');
|
|
|
|
|
} else {
|
|
|
|
|
this.renderer.removeClass(this.document.body, 'dexar-menu-open');
|
|
|
|
|
}
|
2026-01-18 18:57:06 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
closeMenu(): void {
|
|
|
|
|
this.menuOpen = false;
|
2026-02-26 21:54:21 +04:00
|
|
|
this.renderer.removeClass(this.document.body, 'dexar-menu-open');
|
2026-01-18 18:57:06 +04:00
|
|
|
}
|
2026-02-14 00:45:17 +04:00
|
|
|
|
|
|
|
|
navigateToSearch(): void {
|
2026-02-26 22:23:08 +04:00
|
|
|
const lang = this.langService.currentLanguage();
|
|
|
|
|
this.router.navigate([`/${lang}/search`]);
|
2026-02-14 00:45:17 +04:00
|
|
|
}
|
2026-02-14 18:38:25 +04:00
|
|
|
|
|
|
|
|
navigateToCatalog(): void {
|
|
|
|
|
this.closeMenu();
|
2026-02-26 22:23:08 +04:00
|
|
|
const lang = this.langService.currentLanguage();
|
|
|
|
|
this.router.navigate([`/${lang}`]).then(() => {
|
2026-02-14 18:38:25 +04:00
|
|
|
setTimeout(() => {
|
2026-02-26 21:54:21 +04:00
|
|
|
this.document.getElementById('catalog')?.scrollIntoView({ behavior: 'smooth' });
|
2026-02-14 18:38:25 +04:00
|
|
|
}, 100);
|
|
|
|
|
});
|
|
|
|
|
}
|
2026-01-18 18:57:06 +04:00
|
|
|
}
|