From fba7700eff8dedbf24797d4564c289c35027e823 Mon Sep 17 00:00:00 2001 From: Mert Sincan Date: Tue, 7 Jan 2025 13:24:19 +0000 Subject: [PATCH] Fixed type issues --- src/app.config.ts | 2 +- src/app/layout/core/app.configurator.ts | 40 ++++++++++++++++++------- 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/src/app.config.ts b/src/app.config.ts index a6e4cf1..28f3188 100644 --- a/src/app.config.ts +++ b/src/app.config.ts @@ -2,8 +2,8 @@ import { provideHttpClient, withFetch } from '@angular/common/http'; import { ApplicationConfig } from '@angular/core'; import { provideAnimationsAsync } from '@angular/platform-browser/animations/async'; import { provideRouter, withEnabledBlockingInitialNavigation, withInMemoryScrolling } from '@angular/router'; -import { providePrimeNG } from 'primeng/config'; import Aura from '@primeng/themes/aura'; +import { providePrimeNG } from 'primeng/config'; import { appRoutes } from './app.routes'; export const appConfig: ApplicationConfig = { diff --git a/src/app/layout/core/app.configurator.ts b/src/app/layout/core/app.configurator.ts index 3cb604b..13c98a0 100644 --- a/src/app/layout/core/app.configurator.ts +++ b/src/app/layout/core/app.configurator.ts @@ -15,7 +15,27 @@ const presets = { Material, Lara, Nora -}; +} as const; + +declare type KeyOfType = keyof T extends infer U ? U : never; + +declare type SurfacesType = { + name?: string; + palette?: { + 0?: string; + 50?: string; + 100?: string; + 200?: string; + 300?: string; + 400?: string; + 500?: string; + 600?: string; + 700?: string; + 800?: string; + 900?: string; + 950?: string; + } +} @Component({ selector: 'app-configurator', @@ -34,7 +54,7 @@ const presets = { [ngClass]="{ 'outline-primary': primaryColor.name === selectedPrimaryColor() }" class="border-none w-5 h-5 rounded-full p-0 cursor-pointer outline-none outline-offset-1" [style]="{ - 'background-color': primaryColor.name === 'noir' ? 'var(--text-color)' : primaryColor?.palette['500'] + 'background-color': primaryColor?.name === 'noir' ? 'var(--text-color)' : primaryColor?.palette?.['500'] }" > } @@ -51,7 +71,7 @@ const presets = { [ngClass]="{ 'outline-primary': selectedSurfaceColor() ? selectedSurfaceColor() === surface.name : layoutService.layoutConfig().darkTheme ? surface.name === 'zinc' : surface.name === 'slate' }" class="border-none w-5 h-5 rounded-full p-0 cursor-pointer outline-none outline-offset-1" [style]="{ - 'background-color': surface.name === 'noir' ? 'var(--text-color)' : surface?.palette['500'] + 'background-color': surface?.name === 'noir' ? 'var(--text-color)' : surface?.palette?.['500'] }" > } @@ -93,7 +113,7 @@ export class AppConfigurator { } } - surfaces = [ + surfaces: SurfacesType[] = [ { name: 'slate', palette: { @@ -242,15 +262,15 @@ export class AppConfigurator { menuMode = computed(() => this.layoutService.layoutConfig().menuMode); - primaryColors = computed(() => { - const presetPalette = presets[this.layoutService.layoutConfig().preset].primitive; + primaryColors = computed(() => { + const presetPalette = presets[this.layoutService.layoutConfig().preset as KeyOfType].primitive; const colors = ['emerald', 'green', 'lime', 'orange', 'amber', 'yellow', 'teal', 'cyan', 'sky', 'blue', 'indigo', 'violet', 'purple', 'fuchsia', 'pink', 'rose']; - const palettes = [{ name: 'noir', palette: {} }]; + const palettes: SurfacesType[] = [{ name: 'noir', palette: {} }]; colors.forEach((color) => { palettes.push({ name: color, - palette: presetPalette[color] + palette: presetPalette?.[color as KeyOfType] as SurfacesType['palette'] }); }); @@ -258,7 +278,7 @@ export class AppConfigurator { }); getPresetExt() { - const color = this.primaryColors().find((c) => c.name === this.selectedPrimaryColor()); + const color: SurfacesType = this.primaryColors().find((c) => c.name === this.selectedPrimaryColor()) || {}; if (color.name === 'noir') { return { @@ -444,7 +464,7 @@ export class AppConfigurator { onPresetChange(event: any) { this.layoutService.layoutConfig.update((state) => ({ ...state, preset: event })); - const preset = presets[event]; + const preset = presets[event as KeyOfType]; const surfacePalette = this.surfaces.find((s) => s.name === this.selectedSurfaceColor())?.palette; if (this.layoutService.layoutConfig().preset === 'Material') { document.body.classList.add('material');