]> git.apps.os.sepia.ceph.com Git - ceph.git/blob
8262eff99fc67340235ccd808490f82245ccd0ff
[ceph.git] /
1 import { Component, Input, OnInit } from '@angular/core';\r
2 \r
3 import { defineLocale } from 'ngx-bootstrap/chronos';\r
4 import { BsLocaleService } from 'ngx-bootstrap/datepicker';\r
5 \r
6 import { LocaleHelper } from '../../../locale.helper';\r
7 import { languageBootstrapMapping, SupportedLanguages } from './supported-languages.enum';\r
8 \r
9 @Component({\r
10   selector: 'cd-language-selector',\r
11   templateUrl: './language-selector.component.html',\r
12   styleUrls: ['./language-selector.component.scss']\r
13 })\r
14 export class LanguageSelectorComponent implements OnInit {\r
15   @Input()\r
16   isDropdown = true;\r
17 \r
18   supportedLanguages = SupportedLanguages;\r
19   selectedLanguage: string;\r
20 \r
21   constructor(private localeService: BsLocaleService) {}\r
22 \r
23   ngOnInit() {\r
24     this.selectedLanguage = LocaleHelper.getLocale();\r
25     this.defineUsedLanguage();\r
26   }\r
27 \r
28   /**\r
29    * Sets ngx-bootstrap local based on the current language selection\r
30    *\r
31    * ngx-bootstrap locals documentation:\r
32    * https://valor-software.com/ngx-bootstrap/#/datepicker#locales\r
33    */\r
34   private defineUsedLanguage() {\r
35     const lang = this.selectedLanguage.slice(0, 2);\r
36     if (lang in languageBootstrapMapping) {\r
37       defineLocale(lang, languageBootstrapMapping[lang]);\r
38       this.localeService.use(lang);\r
39     }\r
40   }\r
41 \r
42   /**\r
43    * Jest is being more restricted regarding spying on the reload method.\r
44    * This will allow us to spyOn this method instead.\r
45    */\r
46   reloadWindow() {\r
47     window.location.reload();\r
48   }\r
49 \r
50   changeLanguage(lang: string) {\r
51     LocaleHelper.setLocale(lang);\r
52     this.reloadWindow();\r
53   }\r
54 }\r