import { Component, OnInit } from '@angular/core';
import getMenu from './menu';
import { DEFAULT_LANG, I18N_LANGUAGES } from './language-config';
import { TranslateService } from '@ngx-translate/core';
import { I18nUtil } from 'devui-commons/src/i18n/i18n.util';
import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { ThemeService } from 'ng-devui/theme';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss'],
})
export class AppComponent implements OnInit {
private destroy$ = new Subject<void>();
currentLang = I18nUtil.getCurrentLanguage();
innerMenuList = [
{
name: '首页',
enName: 'Home',
href: '/admin-page/home',
target: '_blank',
},
{
name: '文档',
enName: 'Docs',
href: '/admin-page/docs/getting-started',
target: '_blank',
},
{
name: 'Admin 区块',
enName: 'Admin Materials',
href: '/admin-materials/',
target: '_self',
},
];
menu: any;
themeService: ThemeService;
isDark: boolean;
constructor(private translate: TranslateService) {
this.translate.addLangs(I18N_LANGUAGES);
translate.setDefaultLang(DEFAULT_LANG);
translate.use(this.currentLang);
}
ngOnInit() {
this.themeService = window['devuiThemeService'];
if (this.themeService.eventBus) {
this.themeService.eventBus.add('themeChanged', this.themeChange);
}
this.themeChange();
this.translate
.get('menu')
.pipe(takeUntil(this.destroy$))
.subscribe((res) => {
this.updateMenu(res);
});
this.translate.onLangChange.pipe(takeUntil(this.destroy$)).subscribe(() => {
const values = this.translate.instant('menu');
this.updateMenu(values);
});
}
themeChange = () => {
if (this.themeService.currentTheme.id === 'devui-dark-theme') {
this.isDark = true;
} else {
this.isDark = false;
}
};
toggleLanguage(lang) {
this.translate.use(lang);
this.currentLang = lang;
}
updateMenu(value) {
this.menu = getMenu(value);
}
}