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.
47 lines
1.7 KiB
TypeScript
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;
|
|
}
|