Files
pireon-ui/apps/playground/src/app/app.config.ts
2026-07-31 20:47:15 +02:00

76 lines
2.2 KiB
TypeScript

import {
ApplicationConfig,
inject,
provideAppInitializer,
provideBrowserGlobalErrorListeners,
} from '@angular/core';
import { provideAnimationsAsync } from '@angular/platform-browser/animations/async';
import { provideRouter, withInMemoryScrolling } from '@angular/router';
import { routes } from './app.routes';
import {
TranslateLoader,
TranslationObject,
provideTranslateService,
} from '@ngx-translate/core';
import { Observable, of } from 'rxjs';
import { DeviceConfigsService, IconRegistryService } from '@pi/ui';
/**
* Diccionario en línea: la librería resuelve los textos con `| translate`, y
* montar el loader HTTP real exigiría ficheros de i18n que no forman parte de
* la librería. Con las claves que faltan ngx-translate devuelve la propia
* clave, que para un catálogo de componentes es suficiente.
*/
const TRANSLATIONS: TranslationObject = {
common: {
close: 'Cerrar',
min: 'Mín',
max: 'Máx',
save: 'Guardar',
reset: 'Borrar',
search: 'Buscar…',
noResults: 'Sin resultados',
validator: {
requiredField: 'Este campo es obligatorio',
onlyNumbers: 'Sólo se admiten números',
enterValidEmail: 'Introduce un email válido',
minimumPasswordCharacters: 'La contraseña es demasiado corta',
},
},
};
class PlaygroundTranslateLoader implements TranslateLoader {
getTranslation(): Observable<TranslationObject> {
return of(TRANSLATIONS);
}
}
export const appConfig: ApplicationConfig = {
providers: [
provideBrowserGlobalErrorListeners(),
provideAnimationsAsync(),
provideRouter(
routes,
// Al cambiar de página se vuelve arriba; el catálogo es muy largo.
withInMemoryScrolling({ scrollPositionRestoration: 'top' }),
),
// Los iconos son SVG registrados en el MatIconRegistry (assets/icons).
provideAppInitializer(() => inject(IconRegistryService).init()),
// data-table, carousel y background-image leen el tipo de dispositivo;
// instanciarlo arranca el listener de breakpoints.
provideAppInitializer(() => {
inject(DeviceConfigsService);
}),
provideTranslateService({
fallbackLang: 'es',
loader: { provide: TranslateLoader, useClass: PlaygroundTranslateLoader },
}),
],
};