funky-framadate-front/src/app/shared/components/selectors/language-selector/language-selector.component.ts

80 lines
2.3 KiB
TypeScript
Raw Normal View History

2022-02-08 13:44:17 +01:00
import { Component, Inject, OnInit } from '@angular/core';
2020-05-05 18:17:12 +02:00
import { LanguageEnum } from '../../../../core/enums/language.enum';
2020-05-05 18:17:12 +02:00
import { LanguageService } from '../../../../core/services/language.service';
2021-05-03 11:32:03 +02:00
import { StorageService } from '../../../../core/services/storage.service';
2022-02-08 13:44:17 +01:00
import { DOCUMENT } from '@angular/common';
2020-05-05 18:17:12 +02:00
@Component({
selector: 'app-language-selector',
templateUrl: './language-selector.component.html',
styleUrls: ['./language-selector.component.scss'],
})
export class LanguageSelectorComponent implements OnInit {
2022-02-08 13:44:17 +01:00
public currentLang: string;
public availableLanguages: any = ['FR', 'EN', 'ES'];
2021-12-13 16:18:24 +01:00
language: string;
2022-02-08 13:44:17 +01:00
language_to_apply: string;
2022-02-08 14:04:09 +01:00
display_lang_dialog: boolean = false;
2020-05-05 18:17:12 +02:00
2022-02-08 13:44:17 +01:00
constructor(
private languageService: LanguageService,
private storageService: StorageService,
@Inject(DOCUMENT) private document: any
) {}
2020-05-05 18:17:12 +02:00
ngOnInit(): void {
this.availableLanguages = this.languageService.getAvailableLanguages();
this.currentLang = this.languageService.getLangage();
if (this.storageService.language && this.availableLanguages.indexOf(this.storageService.language) !== -1) {
this.languageService.setLanguage(this.storageService.language);
}
2020-05-05 18:17:12 +02:00
}
2022-02-08 13:44:17 +01:00
setLang(newlang: string = 'fr'): void {
this.currentLang = newlang;
this.languageService.setLanguage(newlang);
this.storageService.language = this.currentLang;
2020-05-05 18:17:12 +02:00
}
2021-05-03 11:32:03 +02:00
2022-02-08 13:44:17 +01:00
focusOnCancelButton() {
this.display_lang_dialog = false;
let buttonClose = this.document.querySelector('#display_cancel_popup_button');
if (buttonClose) {
buttonClose.focus();
}
}
2021-05-03 11:32:03 +02:00
nextLang(): void {
2021-05-18 11:46:35 +02:00
const index = this.availableLanguages.indexOf(this.currentLang);
if (index !== -1) {
// on passe au language suivant si il existe, sinon on revient au numéro 0
if (this.availableLanguages[index + 1]) {
this.currentLang = this.availableLanguages[index + 1];
} else {
this.currentLang = this.availableLanguages[0];
}
this.setLang();
}
2021-05-03 11:32:03 +02:00
}
2022-02-08 13:44:17 +01:00
applyLangAndClosePopup() {
this.setLang(this.language_to_apply);
this.display_lang_dialog = false;
let elem = this.document.querySelector('#lang_button_popup');
if (elem) {
elem.focus();
}
}
openDialogLang() {
this.display_lang_dialog = true;
let elem = this.document.querySelector('#lang_button_popup');
if (elem) {
elem.focus();
}
}
2020-05-05 18:17:12 +02:00
}