From 5809d1ba01438d3d5bc26c7a67a871c5459d2069 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Thu, 7 Nov 2019 16:04:30 +0300 Subject: [PATCH] feat(theme-shared): add http error config token --- .../theme-shared/src/lib/models/common.ts | 18 ++++++++++++++++++ .../src/lib/models/confirmation.ts | 9 +++++---- .../theme-shared/src/lib/models/index.ts | 1 + .../src/lib/theme-shared.module.ts | 10 +++++++++- .../src/lib/tokens/error-pages.token.ts | 15 +++++++++++++++ 5 files changed, 48 insertions(+), 5 deletions(-) create mode 100644 npm/ng-packs/packages/theme-shared/src/lib/models/common.ts create mode 100644 npm/ng-packs/packages/theme-shared/src/lib/tokens/error-pages.token.ts diff --git a/npm/ng-packs/packages/theme-shared/src/lib/models/common.ts b/npm/ng-packs/packages/theme-shared/src/lib/models/common.ts new file mode 100644 index 0000000000..f0cd03d6e7 --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/models/common.ts @@ -0,0 +1,18 @@ +import { Type } from '@angular/core'; + +export interface RootParams { + httpErrorConfig: HttpErrorConfig; +} + +export type ErrorScreenErrorCodes = 401 | 403 | 404 | 500; + +export interface HttpErrorConfig { + errorScreen?: { + component: Type; + forWhichErrors?: + | [ErrorScreenErrorCodes] + | [ErrorScreenErrorCodes, ErrorScreenErrorCodes] + | [ErrorScreenErrorCodes, ErrorScreenErrorCodes, ErrorScreenErrorCodes] + | [ErrorScreenErrorCodes, ErrorScreenErrorCodes, ErrorScreenErrorCodes, ErrorScreenErrorCodes]; + }; +} diff --git a/npm/ng-packs/packages/theme-shared/src/lib/models/confirmation.ts b/npm/ng-packs/packages/theme-shared/src/lib/models/confirmation.ts index 35b91b5f68..c3e203cded 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/models/confirmation.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/models/confirmation.ts @@ -1,18 +1,19 @@ import { Toaster } from './toaster'; +import { Config } from '@abp/ng.core'; export namespace Confirmation { export interface Options extends Toaster.Options { hideCancelBtn?: boolean; hideYesBtn?: boolean; - cancelText?: string; - yesText?: string; + cancelText?: Config.LocalizationParam; + yesText?: Config.LocalizationParam; /** * @deprecated to be deleted in v2 */ - cancelCopy?: string; + cancelCopy?: Config.LocalizationParam; /** * @deprecated to be deleted in v2 */ - yesCopy?: string; + yesCopy?: Config.LocalizationParam; } } diff --git a/npm/ng-packs/packages/theme-shared/src/lib/models/index.ts b/npm/ng-packs/packages/theme-shared/src/lib/models/index.ts index e42b6ccfa5..f82171101f 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/models/index.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/models/index.ts @@ -1,3 +1,4 @@ +export * from './common'; export * from './confirmation'; export * from './setting-management'; export * from './statistics'; diff --git a/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts b/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts index cae8baeea6..28c3926367 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts @@ -18,6 +18,8 @@ import styles from './contants/styles'; import { TableSortDirective } from './directives/table-sort.directive'; import { ErrorHandler } from './handlers/error.handler'; import { chartJsLoaded$ } from './utils/widget-utils'; +import { RootParams } from './models/common'; +import { HTTP_ERROR_CONFIG, httpErrorConfigFactory } from './tokens/error-pages.token'; export function appendScript(injector: Injector) { const fn = () => { @@ -69,7 +71,7 @@ export function appendScript(injector: Injector) { entryComponents: [ErrorComponent], }) export class ThemeSharedModule { - static forRoot(): ModuleWithProviders { + static forRoot(options = {} as RootParams): ModuleWithProviders { return { ngModule: ThemeSharedModule, providers: [ @@ -80,6 +82,12 @@ export class ThemeSharedModule { useFactory: appendScript, }, { provide: MessageService, useClass: MessageService }, + { provide: HTTP_ERROR_CONFIG, useValue: options.httpErrorConfig }, + { + provide: 'HTTP_ERROR_CONFIG', + useFactory: httpErrorConfigFactory, + deps: [HTTP_ERROR_CONFIG], + }, ], }; } diff --git a/npm/ng-packs/packages/theme-shared/src/lib/tokens/error-pages.token.ts b/npm/ng-packs/packages/theme-shared/src/lib/tokens/error-pages.token.ts new file mode 100644 index 0000000000..3df2b3fe2d --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/src/lib/tokens/error-pages.token.ts @@ -0,0 +1,15 @@ +import { InjectionToken } from '@angular/core'; +import { HttpErrorConfig } from '../models/common'; + +export function httpErrorConfigFactory(config = {} as HttpErrorConfig) { + if (config.errorScreen && config.errorScreen.component && !config.errorScreen.forWhichErrors) { + config.errorScreen.forWhichErrors = [401, 403, 404, 500]; + } + + return { + errorScreen: {}, + ...config, + } as HttpErrorConfig; +} + +export const HTTP_ERROR_CONFIG = new InjectionToken('HTTP_ERROR_CONFIG');