# Conflicts: # src/app/pages/cart/cart.component.ts # src/app/pages/category/category.component.html # src/app/pages/category/category.component.ts # src/app/pages/item-detail/item-detail.component.html # src/app/pages/item-detail/item-detail.component.ts # src/app/pages/legal/company-details/en/company-details-en.component.html # src/app/pages/legal/company-details/hy/company-details-hy.component.html # src/app/pages/legal/company-details/ru/company-details-ru.component.html # src/app/pages/legal/public-offer/en/public-offer-en.component.html # src/app/pages/legal/public-offer/ru/public-offer-ru.component.html # src/app/pages/search/search.component.ts # src/app/services/api.service.ts
64 lines
1.6 KiB
TypeScript
64 lines
1.6 KiB
TypeScript
import { Component, HostListener, ElementRef, ChangeDetectionStrategy } from '@angular/core';
|
|
import { LanguageService, Language, Currency } from '../../services/language.service';
|
|
|
|
@Component({
|
|
selector: 'app-language-selector',
|
|
imports: [],
|
|
templateUrl: './language-selector.component.html',
|
|
styleUrls: ['./language-selector.component.scss'],
|
|
changeDetection: ChangeDetectionStrategy.OnPush
|
|
})
|
|
export class LanguageSelectorComponent {
|
|
dropdownOpen = false;
|
|
currencyOpen = false;
|
|
|
|
constructor(
|
|
public languageService: LanguageService,
|
|
private elementRef: ElementRef
|
|
) {}
|
|
|
|
toggleDropdown(): void {
|
|
this.dropdownOpen = !this.dropdownOpen;
|
|
this.currencyOpen = false;
|
|
}
|
|
|
|
toggleCurrency(): void {
|
|
this.currencyOpen = !this.currencyOpen;
|
|
this.dropdownOpen = false;
|
|
}
|
|
|
|
selectLanguage(lang: Language): void {
|
|
if (lang.enabled) {
|
|
this.languageService.switchLanguage(lang.code);
|
|
this.dropdownOpen = false;
|
|
}
|
|
}
|
|
|
|
selectCurrency(currency: Currency): void {
|
|
this.languageService.setCurrency(currency.code);
|
|
this.currencyOpen = false;
|
|
}
|
|
|
|
closeDropdown(): void {
|
|
this.dropdownOpen = false;
|
|
this.currencyOpen = false;
|
|
}
|
|
|
|
onKeyDown(event: KeyboardEvent): void {
|
|
if (event.key === 'Escape') {
|
|
this.dropdownOpen = false;
|
|
} else if (event.key === 'Enter' || event.key === ' ') {
|
|
event.preventDefault();
|
|
this.toggleDropdown();
|
|
}
|
|
}
|
|
|
|
@HostListener('document:click', ['$event'])
|
|
onClickOutside(event: Event): void {
|
|
if (!this.elementRef.nativeElement.contains(event.target)) {
|
|
this.dropdownOpen = false;
|
|
this.currencyOpen = false;
|
|
}
|
|
}
|
|
}
|