design-angular-kit
Version:
Un toolkit Angular conforme alle linee guida di design per i servizi web della PA
64 lines • 8.75 kB
JavaScript
import { HttpClient, provideHttpClient } from '@angular/common/http';
import { APP_INITIALIZER, importProvidersFrom, makeEnvironmentProviders } from '@angular/core';
import { provideAnimationsAsync } from '@angular/platform-browser/animations/async';
import { TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
import { loadFonts } from 'bootstrap-italia';
import { IT_ASSET_BASE_PATH } from './interfaces/design-angular-kit-config';
/**
* Configures DesignAngularKit library
* @param config the DesignAngularKit config
*/
export function provideDesignAngularKit(config) {
let assetBasePath = './bootstrap-italia';
if (config?.assetBasePath) {
assetBasePath = config.assetBasePath.endsWith('/')
? config.assetBasePath.substring(0, config.assetBasePath.lastIndexOf('/'))
: config.assetBasePath;
}
const providers = [
{
provide: IT_ASSET_BASE_PATH,
useValue: assetBasePath,
},
provideAnimationsAsync(),
provideHttpClient(),
];
if (config?.loadFont !== false) {
// Add provider to initialize the bootstrap-italia font
providers.push({
provide: APP_INITIALIZER,
useFactory: () => {
return () => {
loadFonts(`${assetBasePath}/dist/fonts`);
};
},
multi: true,
});
}
// Add provider to initialize the TranslateModule
const langPrefix = `${assetBasePath}/i18n/`;
const langSuffix = `.json`; // TODO: add ?v${version} to prevent cache loading on version change
providers.push(importProvidersFrom(TranslateModule.forRoot({
loader: config?.translateLoader?.(langPrefix, langSuffix) ?? {
provide: TranslateLoader,
useFactory: (http) => new TranslateHttpLoader(http, langPrefix, langSuffix),
deps: [HttpClient],
},
defaultLanguage: 'it',
useDefaultLang: true,
})));
// Add provider to initialize library default languages
providers.push({
provide: APP_INITIALIZER,
useFactory: (translateService) => {
return () => {
translateService.addLangs(['it', 'en']); // Adds 'it' and 'en' as available languages.
};
},
multi: true,
deps: [TranslateService],
});
return makeEnvironmentProviders(providers);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1kZXNpZ24tYW5ndWxhci1raXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tYW5ndWxhci1raXQvc3JjL2xpYi9wcm92aWRlLWRlc2lnbi1hbmd1bGFyLWtpdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckUsT0FBTyxFQUFFLGVBQWUsRUFBd0IsbUJBQW1CLEVBQUUsd0JBQXdCLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDL0gsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxFQUEwQixrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXBHOzs7R0FHRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxNQUErQjtJQUNyRSxJQUFJLGFBQWEsR0FBRyxvQkFBb0IsQ0FBQztJQUN6QyxJQUFJLE1BQU0sRUFBRSxhQUFhLEVBQUUsQ0FBQztRQUMxQixhQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1lBQ2hELENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDMUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUM7SUFDM0IsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUEyQztRQUN4RDtZQUNFLE9BQU8sRUFBRSxrQkFBa0I7WUFDM0IsUUFBUSxFQUFFLGFBQWE7U0FDeEI7UUFDRCxzQkFBc0IsRUFBRTtRQUN4QixpQkFBaUIsRUFBRTtLQUNwQixDQUFDO0lBRUYsSUFBSSxNQUFNLEVBQUUsUUFBUSxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQy9CLHVEQUF1RDtRQUN2RCxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ2IsT0FBTyxFQUFFLGVBQWU7WUFDeEIsVUFBVSxFQUFFLEdBQUcsRUFBRTtnQkFDZixPQUFPLEdBQUcsRUFBRTtvQkFDVixTQUFTLENBQUMsR0FBRyxhQUFhLGFBQWEsQ0FBQyxDQUFDO2dCQUMzQyxDQUFDLENBQUM7WUFDSixDQUFDO1lBQ0QsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsaURBQWlEO0lBQ2pELE1BQU0sVUFBVSxHQUFHLEdBQUcsYUFBYSxRQUFRLENBQUM7SUFDNUMsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLENBQUMsb0VBQW9FO0lBQ2hHLFNBQVMsQ0FBQyxJQUFJLENBQ1osbUJBQW1CLENBQ2pCLGVBQWUsQ0FBQyxPQUFPLENBQUM7UUFDdEIsTUFBTSxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLElBQUk7WUFDM0QsT0FBTyxFQUFFLGVBQWU7WUFDeEIsVUFBVSxFQUFFLENBQUMsSUFBZ0IsRUFBRSxFQUFFLENBQUMsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQztZQUN2RixJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUM7U0FDbkI7UUFDRCxlQUFlLEVBQUUsSUFBSTtRQUNyQixjQUFjLEVBQUUsSUFBSTtLQUNyQixDQUFDLENBQ0gsQ0FDRixDQUFDO0lBRUYsdURBQXVEO0lBQ3ZELFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDYixPQUFPLEVBQUUsZUFBZTtRQUN4QixVQUFVLEVBQUUsQ0FBQyxnQkFBa0MsRUFBRSxFQUFFO1lBQ2pELE9BQU8sR0FBRyxFQUFFO2dCQUNWLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsNkNBQTZDO1lBQ3hGLENBQUMsQ0FBQztRQUNKLENBQUM7UUFDRCxLQUFLLEVBQUUsSUFBSTtRQUNYLElBQUksRUFBRSxDQUFDLGdCQUFnQixDQUFDO0tBQ3pCLENBQUMsQ0FBQztJQUVILE9BQU8sd0JBQXdCLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIHByb3ZpZGVIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQVBQX0lOSVRJQUxJWkVSLCBFbnZpcm9ubWVudFByb3ZpZGVycywgaW1wb3J0UHJvdmlkZXJzRnJvbSwgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcHJvdmlkZUFuaW1hdGlvbnNBc3luYyB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvYW5pbWF0aW9ucy9hc3luYyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVMb2FkZXIsIFRyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlSHR0cExvYWRlciB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2h0dHAtbG9hZGVyJztcbmltcG9ydCB7IGxvYWRGb250cyB9IGZyb20gJ2Jvb3RzdHJhcC1pdGFsaWEnO1xuaW1wb3J0IHsgRGVzaWduQW5ndWxhcktpdENvbmZpZywgSVRfQVNTRVRfQkFTRV9QQVRIIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2Rlc2lnbi1hbmd1bGFyLWtpdC1jb25maWcnO1xuXG4vKipcbiAqIENvbmZpZ3VyZXMgRGVzaWduQW5ndWxhcktpdCBsaWJyYXJ5XG4gKiBAcGFyYW0gY29uZmlnIHRoZSBEZXNpZ25Bbmd1bGFyS2l0IGNvbmZpZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZURlc2lnbkFuZ3VsYXJLaXQoY29uZmlnPzogRGVzaWduQW5ndWxhcktpdENvbmZpZyk6IEVudmlyb25tZW50UHJvdmlkZXJzIHtcbiAgbGV0IGFzc2V0QmFzZVBhdGggPSAnLi9ib290c3RyYXAtaXRhbGlhJztcbiAgaWYgKGNvbmZpZz8uYXNzZXRCYXNlUGF0aCkge1xuICAgIGFzc2V0QmFzZVBhdGggPSBjb25maWcuYXNzZXRCYXNlUGF0aC5lbmRzV2l0aCgnLycpXG4gICAgICA/IGNvbmZpZy5hc3NldEJhc2VQYXRoLnN1YnN0cmluZygwLCBjb25maWcuYXNzZXRCYXNlUGF0aC5sYXN0SW5kZXhPZignLycpKVxuICAgICAgOiBjb25maWcuYXNzZXRCYXNlUGF0aDtcbiAgfVxuXG4gIGNvbnN0IHByb3ZpZGVyczogQXJyYXk8RW52aXJvbm1lbnRQcm92aWRlcnMgfCBQcm92aWRlcj4gPSBbXG4gICAge1xuICAgICAgcHJvdmlkZTogSVRfQVNTRVRfQkFTRV9QQVRILFxuICAgICAgdXNlVmFsdWU6IGFzc2V0QmFzZVBhdGgsXG4gICAgfSxcbiAgICBwcm92aWRlQW5pbWF0aW9uc0FzeW5jKCksXG4gICAgcHJvdmlkZUh0dHBDbGllbnQoKSxcbiAgXTtcblxuICBpZiAoY29uZmlnPy5sb2FkRm9udCAhPT0gZmFsc2UpIHtcbiAgICAvLyBBZGQgcHJvdmlkZXIgdG8gaW5pdGlhbGl6ZSB0aGUgYm9vdHN0cmFwLWl0YWxpYSBmb250XG4gICAgcHJvdmlkZXJzLnB1c2goe1xuICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgdXNlRmFjdG9yeTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgIGxvYWRGb250cyhgJHthc3NldEJhc2VQYXRofS9kaXN0L2ZvbnRzYCk7XG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICAvLyBBZGQgcHJvdmlkZXIgdG8gaW5pdGlhbGl6ZSB0aGUgVHJhbnNsYXRlTW9kdWxlXG4gIGNvbnN0IGxhbmdQcmVmaXggPSBgJHthc3NldEJhc2VQYXRofS9pMThuL2A7XG4gIGNvbnN0IGxhbmdTdWZmaXggPSBgLmpzb25gOyAvLyBUT0RPOiBhZGQgP3Yke3ZlcnNpb259IHRvIHByZXZlbnQgY2FjaGUgbG9hZGluZyBvbiB2ZXJzaW9uIGNoYW5nZVxuICBwcm92aWRlcnMucHVzaChcbiAgICBpbXBvcnRQcm92aWRlcnNGcm9tKFxuICAgICAgVHJhbnNsYXRlTW9kdWxlLmZvclJvb3Qoe1xuICAgICAgICBsb2FkZXI6IGNvbmZpZz8udHJhbnNsYXRlTG9hZGVyPy4obGFuZ1ByZWZpeCwgbGFuZ1N1ZmZpeCkgPz8ge1xuICAgICAgICAgIHByb3ZpZGU6IFRyYW5zbGF0ZUxvYWRlcixcbiAgICAgICAgICB1c2VGYWN0b3J5OiAoaHR0cDogSHR0cENsaWVudCkgPT4gbmV3IFRyYW5zbGF0ZUh0dHBMb2FkZXIoaHR0cCwgbGFuZ1ByZWZpeCwgbGFuZ1N1ZmZpeCksXG4gICAgICAgICAgZGVwczogW0h0dHBDbGllbnRdLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0TGFuZ3VhZ2U6ICdpdCcsXG4gICAgICAgIHVzZURlZmF1bHRMYW5nOiB0cnVlLFxuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgLy8gQWRkIHByb3ZpZGVyIHRvIGluaXRpYWxpemUgbGlicmFyeSBkZWZhdWx0IGxhbmd1YWdlc1xuICBwcm92aWRlcnMucHVzaCh7XG4gICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgIHVzZUZhY3Rvcnk6ICh0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlKSA9PiB7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB0cmFuc2xhdGVTZXJ2aWNlLmFkZExhbmdzKFsnaXQnLCAnZW4nXSk7IC8vIEFkZHMgJ2l0JyBhbmQgJ2VuJyBhcyBhdmFpbGFibGUgbGFuZ3VhZ2VzLlxuICAgICAgfTtcbiAgICB9LFxuICAgIG11bHRpOiB0cnVlLFxuICAgIGRlcHM6IFtUcmFuc2xhdGVTZXJ2aWNlXSxcbiAgfSk7XG5cbiAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhwcm92aWRlcnMpO1xufVxuIl19