Files
playground-frontend/src/app/layout/topbar/topbar.component.ts
T
lobo dc9f09bede refactor(components): use OnPush and signals in components
Angular 22 defaults to OnPush, so Eager is removed.
Template state is now signals, so sorting needs no detectChanges.
Game of Life execution time now updates live.
Remove the unused ImageDialogComponent and turn the OnPush lint rule
back on.
2026-10-13 11:10:04 +02:00

47 lines
1.7 KiB
TypeScript

import { Component, computed, inject } from '@angular/core';
import { RouterLink, RouterLinkActive } from '@angular/router';
import { MatToolbarModule } from '@angular/material/toolbar';
import { MatIconModule } from '@angular/material/icon';
import { MatButtonModule } from '@angular/material/button';
import { MatMenuModule } from '@angular/material/menu';
import { MatTooltipModule } from '@angular/material/tooltip';
import { NgOptimizedImage } from '@angular/common';
import { TranslatePipe } from '@ngx-translate/core';
import { ThemeService } from '../../service/theme.service';
import { LanguageService } from '../../service/language.service';
import { MatDivider } from '@angular/material/divider';
import {AssetsConstants} from '../../constants/AssetsConstants';
import {RouterConstants} from '../../constants/RouterConstants';
@Component({
selector: 'app-topbar',
imports: [
RouterLink, RouterLinkActive,
MatToolbarModule, MatIconModule, MatButtonModule, MatMenuModule, MatTooltipModule,
TranslatePipe, MatDivider, NgOptimizedImage
],
templateUrl: './topbar.component.html',
styleUrl: './topbar.component.scss'
})
export class TopbarComponent {
readonly theme = inject(ThemeService);
readonly lang = inject(LanguageService);
readonly themeIcon = computed(() =>
this.theme.theme() === 'dark' ? 'light_mode' : 'dark_mode'
);
onKeydown(e: KeyboardEvent) {
const metaOrCtrl = e.metaKey || e.ctrlKey;
if (metaOrCtrl && (e.key.toLowerCase() === 'j')) {
e.preventDefault();
this.theme.toggle();
}
}
setLang(code: 'de' | 'en') { this.lang.use(code); }
protected readonly AssetsConstants = AssetsConstants;
protected readonly RouterConstants = RouterConstants;
}