mirror of https://github.com/abpframework/abp.git
committed by
GitHub
39 changed files with 630 additions and 334 deletions
@ -1,21 +1,15 @@ |
|||
import { Injector, ModuleWithProviders, NgModule } from '@angular/core'; |
|||
import { NAVIGATE_TO_MANAGE_PROFILE } from '@abp/ng.core'; |
|||
import { ACCOUNT_ROUTE_PROVIDERS } from './providers/route.provider'; |
|||
import { navigateToManageProfileFactory } from './utils/factories'; |
|||
import { ModuleWithProviders, NgModule } from '@angular/core'; |
|||
import { provideAccountConfig } from './providers'; |
|||
|
|||
/** |
|||
* @deprecated AccountConfigModule is deprecated use `provideAccountConfig` *function* instead. |
|||
*/ |
|||
@NgModule() |
|||
export class AccountConfigModule { |
|||
static forRoot(): ModuleWithProviders<AccountConfigModule> { |
|||
return { |
|||
ngModule: AccountConfigModule, |
|||
providers: [ |
|||
ACCOUNT_ROUTE_PROVIDERS, |
|||
{ |
|||
provide: NAVIGATE_TO_MANAGE_PROFILE, |
|||
useFactory: navigateToManageProfileFactory, |
|||
deps: [Injector], |
|||
}, |
|||
], |
|||
providers: [provideAccountConfig()], |
|||
}; |
|||
} |
|||
} |
|||
|
|||
@ -0,0 +1,15 @@ |
|||
import { NAVIGATE_TO_MANAGE_PROFILE } from '@abp/ng.core'; |
|||
import { makeEnvironmentProviders, Injector } from '@angular/core'; |
|||
import { navigateToManageProfileFactory } from '../utils'; |
|||
import { ACCOUNT_ROUTE_PROVIDERS } from './'; |
|||
|
|||
export function provideAccountConfig() { |
|||
return makeEnvironmentProviders([ |
|||
ACCOUNT_ROUTE_PROVIDERS, |
|||
{ |
|||
provide: NAVIGATE_TO_MANAGE_PROFILE, |
|||
useFactory: navigateToManageProfileFactory, |
|||
deps: [Injector], |
|||
}, |
|||
]); |
|||
} |
|||
@ -1 +1,2 @@ |
|||
export * from './route.provider'; |
|||
export * from './account-config.provider'; |
|||
|
|||
@ -1,3 +1,4 @@ |
|||
export * from './account-config.module'; |
|||
export * from './enums'; |
|||
export * from './providers'; |
|||
export * from './utils'; |
|||
|
|||
@ -0,0 +1 @@ |
|||
export * from './factories'; |
|||
@ -0,0 +1,159 @@ |
|||
import { makeEnvironmentProviders, APP_INITIALIZER, Injector, Provider } from '@angular/core'; |
|||
import { TitleStrategy } from '@angular/router'; |
|||
import { |
|||
CORE_OPTIONS, |
|||
LOCALIZATIONS, |
|||
DYNAMIC_LAYOUTS_TOKEN, |
|||
OTHERS_GROUP, |
|||
QUEUE_MANAGER, |
|||
SORT_COMPARE_FUNC, |
|||
TENANT_KEY, |
|||
compareFuncFactory, |
|||
coreOptionsFactory, |
|||
localizationContributor, |
|||
} from '../tokens'; |
|||
import { RoutesHandler } from '../handlers'; |
|||
import { ABP, SortableItem } from '../models'; |
|||
import { AuthErrorFilterService } from '../abstracts'; |
|||
import { DEFAULT_DYNAMIC_LAYOUTS } from '../constants'; |
|||
import { LocalizationService, LocalStorageListenerService, AbpTitleStrategy } from '../services'; |
|||
import { DefaultQueueManager, getInitialData, localeInitializer, noop } from '../utils'; |
|||
import { CookieLanguageProvider, IncludeLocalizationResourcesProvider, LocaleProvider } from './'; |
|||
|
|||
export enum CoreFeatureKind { |
|||
Options, |
|||
CompareFunctionFactory, |
|||
TitleStrategy, |
|||
} |
|||
|
|||
export interface CoreFeature<KindT extends CoreFeatureKind> { |
|||
ɵkind: KindT; |
|||
ɵproviders: Provider[]; |
|||
} |
|||
|
|||
function makeCoreFeature<KindT extends CoreFeatureKind>( |
|||
kind: KindT, |
|||
providers: Provider[], |
|||
): CoreFeature<KindT> { |
|||
return { |
|||
ɵkind: kind, |
|||
ɵproviders: providers, |
|||
}; |
|||
} |
|||
|
|||
export function withOptions(options = {} as ABP.Root): CoreFeature<CoreFeatureKind.Options> { |
|||
return makeCoreFeature(CoreFeatureKind.Options, [ |
|||
{ |
|||
provide: 'CORE_OPTIONS', |
|||
useValue: options, |
|||
}, |
|||
{ |
|||
provide: CORE_OPTIONS, |
|||
useFactory: coreOptionsFactory, |
|||
deps: ['CORE_OPTIONS'], |
|||
}, |
|||
{ provide: TENANT_KEY, useValue: options.tenantKey || '__tenant' }, |
|||
{ |
|||
provide: LOCALIZATIONS, |
|||
multi: true, |
|||
useValue: localizationContributor(options.localizations), |
|||
deps: [LocalizationService], |
|||
}, |
|||
{ |
|||
provide: OTHERS_GROUP, |
|||
useValue: options.othersGroup || 'AbpUi::OthersGroup', |
|||
}, |
|||
{ |
|||
provide: DYNAMIC_LAYOUTS_TOKEN, |
|||
useValue: options.dynamicLayouts || DEFAULT_DYNAMIC_LAYOUTS, |
|||
}, |
|||
]); |
|||
} |
|||
|
|||
export function withTitleStrategy(strategy: unknown): CoreFeature<CoreFeatureKind.TitleStrategy> { |
|||
return makeCoreFeature(CoreFeatureKind.TitleStrategy, [ |
|||
{ |
|||
provide: TitleStrategy, |
|||
useExisting: strategy, |
|||
}, |
|||
]); |
|||
} |
|||
|
|||
export function withCompareFuncFactory( |
|||
factory: (a: SortableItem, b: SortableItem) => 1 | -1 | 0, |
|||
): CoreFeature<CoreFeatureKind.CompareFunctionFactory> { |
|||
return makeCoreFeature(CoreFeatureKind.CompareFunctionFactory, [ |
|||
{ |
|||
provide: SORT_COMPARE_FUNC, |
|||
useFactory: factory, |
|||
}, |
|||
]); |
|||
} |
|||
|
|||
export function provideAbpCore(...features: CoreFeature<CoreFeatureKind>[]) { |
|||
const providers = [ |
|||
LocaleProvider, |
|||
CookieLanguageProvider, |
|||
{ |
|||
provide: APP_INITIALIZER, |
|||
multi: true, |
|||
deps: [Injector], |
|||
useFactory: getInitialData, |
|||
}, |
|||
{ |
|||
provide: APP_INITIALIZER, |
|||
multi: true, |
|||
deps: [Injector], |
|||
useFactory: localeInitializer, |
|||
}, |
|||
{ |
|||
provide: APP_INITIALIZER, |
|||
multi: true, |
|||
deps: [LocalizationService], |
|||
useFactory: noop, |
|||
}, |
|||
{ |
|||
provide: APP_INITIALIZER, |
|||
multi: true, |
|||
deps: [LocalStorageListenerService], |
|||
useFactory: noop, |
|||
}, |
|||
{ |
|||
provide: APP_INITIALIZER, |
|||
multi: true, |
|||
deps: [RoutesHandler], |
|||
useFactory: noop, |
|||
}, |
|||
{ |
|||
provide: SORT_COMPARE_FUNC, |
|||
useFactory: compareFuncFactory, |
|||
}, |
|||
{ |
|||
provide: QUEUE_MANAGER, |
|||
useClass: DefaultQueueManager, |
|||
}, |
|||
AuthErrorFilterService, |
|||
IncludeLocalizationResourcesProvider, |
|||
{ |
|||
provide: TitleStrategy, |
|||
useExisting: AbpTitleStrategy, |
|||
}, |
|||
]; |
|||
|
|||
for (const feature of features) { |
|||
providers.push(...feature.ɵproviders); |
|||
} |
|||
|
|||
return makeEnvironmentProviders(providers); |
|||
} |
|||
|
|||
export function provideAbpCoreChild(options = {} as ABP.Child) { |
|||
return makeEnvironmentProviders([ |
|||
{ |
|||
provide: LOCALIZATIONS, |
|||
multi: true, |
|||
useValue: localizationContributor(options.localizations), |
|||
deps: [LocalizationService], |
|||
}, |
|||
]); |
|||
} |
|||
@ -1,3 +1,4 @@ |
|||
export * from './cookie-language.provider'; |
|||
export * from './locale.provider'; |
|||
export * from './include-localization-resources.provider'; |
|||
export * from './core-module-config.provider'; |
|||
|
|||
@ -0,0 +1,6 @@ |
|||
import { makeEnvironmentProviders } from '@angular/core'; |
|||
import { FEATURE_MANAGEMENT_SETTINGS_PROVIDERS } from './'; |
|||
|
|||
export function provideFeatureManagementConfig() { |
|||
return makeEnvironmentProviders([FEATURE_MANAGEMENT_SETTINGS_PROVIDERS]); |
|||
} |
|||
@ -1 +1,2 @@ |
|||
export * from './feature-management-settings.provider'; |
|||
export * from './feature-management-config.provider'; |
|||
|
|||
@ -1,12 +1,15 @@ |
|||
import { ModuleWithProviders, NgModule } from '@angular/core'; |
|||
import { IDENTITY_ROUTE_PROVIDERS } from './providers/route.provider'; |
|||
import { provideIdentityConfig } from './providers'; |
|||
|
|||
/** |
|||
* @deprecated IdentityConfigModule is deprecated use `provideIdentityConfig` *function* instead. |
|||
*/ |
|||
@NgModule() |
|||
export class IdentityConfigModule { |
|||
static forRoot(): ModuleWithProviders<IdentityConfigModule> { |
|||
return { |
|||
ngModule: IdentityConfigModule, |
|||
providers: [IDENTITY_ROUTE_PROVIDERS], |
|||
providers: [provideIdentityConfig()], |
|||
}; |
|||
} |
|||
} |
|||
|
|||
@ -0,0 +1,6 @@ |
|||
import { makeEnvironmentProviders } from '@angular/core'; |
|||
import { IDENTITY_ROUTE_PROVIDERS } from './'; |
|||
|
|||
export function provideIdentityConfig() { |
|||
return makeEnvironmentProviders([IDENTITY_ROUTE_PROVIDERS]); |
|||
} |
|||
@ -1 +1,2 @@ |
|||
export * from './route.provider'; |
|||
export * from './identity-config.provider'; |
|||
|
|||
@ -1,73 +1,15 @@ |
|||
import { APP_INITIALIZER, ModuleWithProviders, NgModule, Provider } from '@angular/core'; |
|||
import { CommonModule } from '@angular/common'; |
|||
import { HTTP_INTERCEPTORS } from '@angular/common/http'; |
|||
import { OAuthModule, OAuthStorage } from 'angular-oauth2-oidc'; |
|||
import { |
|||
AbpLocalStorageService, |
|||
ApiInterceptor, |
|||
AuthErrorFilterService, |
|||
AuthGuard, |
|||
authGuard, |
|||
AuthService, |
|||
CHECK_AUTHENTICATION_STATE_FN_KEY, |
|||
noop, |
|||
PIPE_TO_LOGIN_FN_KEY, |
|||
} from '@abp/ng.core'; |
|||
import { AbpOAuthService, OAuthErrorFilterService } from './services'; |
|||
import { OAuthConfigurationHandler } from './handlers/oauth-configuration.handler'; |
|||
import { OAuthApiInterceptor } from './interceptors/api.interceptor'; |
|||
import { AbpOAuthGuard, abpOAuthGuard } from './guards/oauth.guard'; |
|||
import { NavigateToManageProfileProvider } from './providers'; |
|||
import { checkAccessToken, pipeToLogin } from './utils'; |
|||
import { ModuleWithProviders, NgModule } from '@angular/core'; |
|||
import { provideAbpOAuth } from './providers'; |
|||
|
|||
@NgModule({ |
|||
imports: [CommonModule, OAuthModule], |
|||
}) |
|||
/** |
|||
* @deprecated AbpOAuthModule is deprecated use `provideAbpOAuth` *function* instead. |
|||
*/ |
|||
@NgModule() |
|||
export class AbpOAuthModule { |
|||
static forRoot(): ModuleWithProviders<AbpOAuthModule> { |
|||
return { |
|||
ngModule: AbpOAuthModule, |
|||
providers: [ |
|||
{ |
|||
provide: AuthService, |
|||
useClass: AbpOAuthService, |
|||
}, |
|||
{ |
|||
provide: AuthGuard, |
|||
useClass: AbpOAuthGuard, |
|||
}, |
|||
{ |
|||
provide: authGuard, |
|||
useValue: abpOAuthGuard, |
|||
}, |
|||
{ |
|||
provide: ApiInterceptor, |
|||
useClass: OAuthApiInterceptor, |
|||
}, |
|||
{ |
|||
provide: PIPE_TO_LOGIN_FN_KEY, |
|||
useValue: pipeToLogin, |
|||
}, |
|||
{ |
|||
provide: CHECK_AUTHENTICATION_STATE_FN_KEY, |
|||
useValue: checkAccessToken, |
|||
}, |
|||
{ |
|||
provide: HTTP_INTERCEPTORS, |
|||
useExisting: ApiInterceptor, |
|||
multi: true, |
|||
}, |
|||
NavigateToManageProfileProvider, |
|||
{ |
|||
provide: APP_INITIALIZER, |
|||
multi: true, |
|||
deps: [OAuthConfigurationHandler], |
|||
useFactory: noop, |
|||
}, |
|||
OAuthModule.forRoot().providers as Provider[], |
|||
{ provide: OAuthStorage, useClass: AbpLocalStorageService }, |
|||
{ provide: AuthErrorFilterService, useExisting: OAuthErrorFilterService }, |
|||
], |
|||
providers: [provideAbpOAuth()], |
|||
}; |
|||
} |
|||
} |
|||
|
|||
@ -1 +1,2 @@ |
|||
export * from './navigate-to-manage-profile.provider'; |
|||
export * from './oauth-module-config.provider'; |
|||
|
|||
@ -0,0 +1,66 @@ |
|||
import { |
|||
AuthService, |
|||
AuthGuard, |
|||
authGuard, |
|||
ApiInterceptor, |
|||
PIPE_TO_LOGIN_FN_KEY, |
|||
CHECK_AUTHENTICATION_STATE_FN_KEY, |
|||
AbpLocalStorageService, |
|||
AuthErrorFilterService, |
|||
noop, |
|||
} from '@abp/ng.core'; |
|||
import { APP_INITIALIZER, Provider, makeEnvironmentProviders } from '@angular/core'; |
|||
import { HTTP_INTERCEPTORS } from '@angular/common/http'; |
|||
import { OAuthModule, OAuthStorage } from 'angular-oauth2-oidc'; |
|||
import { AbpOAuthGuard, abpOAuthGuard } from '../guards'; |
|||
import { OAuthConfigurationHandler } from '../handlers'; |
|||
import { OAuthApiInterceptor } from '../interceptors'; |
|||
import { AbpOAuthService, OAuthErrorFilterService } from '../services'; |
|||
import { pipeToLogin, checkAccessToken } from '../utils'; |
|||
import { NavigateToManageProfileProvider } from './navigate-to-manage-profile.provider'; |
|||
|
|||
export function provideAbpOAuth() { |
|||
const providers = [ |
|||
{ |
|||
provide: AuthService, |
|||
useClass: AbpOAuthService, |
|||
}, |
|||
{ |
|||
provide: AuthGuard, |
|||
useClass: AbpOAuthGuard, |
|||
}, |
|||
{ |
|||
provide: authGuard, |
|||
useValue: abpOAuthGuard, |
|||
}, |
|||
{ |
|||
provide: ApiInterceptor, |
|||
useClass: OAuthApiInterceptor, |
|||
}, |
|||
{ |
|||
provide: PIPE_TO_LOGIN_FN_KEY, |
|||
useValue: pipeToLogin, |
|||
}, |
|||
{ |
|||
provide: CHECK_AUTHENTICATION_STATE_FN_KEY, |
|||
useValue: checkAccessToken, |
|||
}, |
|||
{ |
|||
provide: HTTP_INTERCEPTORS, |
|||
useExisting: ApiInterceptor, |
|||
multi: true, |
|||
}, |
|||
NavigateToManageProfileProvider, |
|||
{ |
|||
provide: APP_INITIALIZER, |
|||
multi: true, |
|||
deps: [OAuthConfigurationHandler], |
|||
useFactory: noop, |
|||
}, |
|||
OAuthModule.forRoot().providers as Provider[], |
|||
{ provide: OAuthStorage, useClass: AbpLocalStorageService }, |
|||
{ provide: AuthErrorFilterService, useExisting: OAuthErrorFilterService }, |
|||
]; |
|||
|
|||
return makeEnvironmentProviders(providers); |
|||
} |
|||
@ -1,3 +1,5 @@ |
|||
export * from './route.provider'; |
|||
export * from './setting-tab.provider'; |
|||
export * from './visible.provider'; |
|||
export * from './setting-management-config.provider'; |
|||
export * from './features.token'; |
|||
|
|||
@ -0,0 +1,16 @@ |
|||
import { makeEnvironmentProviders } from '@angular/core'; |
|||
import { |
|||
SETTING_MANAGEMENT_FEATURES_PROVIDERS, |
|||
SETTING_MANAGEMENT_ROUTE_PROVIDERS, |
|||
SETTING_MANAGEMENT_SETTING_TAB_PROVIDERS, |
|||
SETTING_MANAGEMENT_VISIBLE_PROVIDERS, |
|||
} from './'; |
|||
|
|||
export function provideSettingManagementConfig() { |
|||
return makeEnvironmentProviders([ |
|||
SETTING_MANAGEMENT_ROUTE_PROVIDERS, |
|||
SETTING_MANAGEMENT_SETTING_TAB_PROVIDERS, |
|||
SETTING_MANAGEMENT_FEATURES_PROVIDERS, |
|||
SETTING_MANAGEMENT_VISIBLE_PROVIDERS, |
|||
]); |
|||
} |
|||
@ -1 +1,2 @@ |
|||
export * from './route.provider'; |
|||
export * from './tenant-management-config.provider'; |
|||
|
|||
@ -0,0 +1,6 @@ |
|||
import { makeEnvironmentProviders } from '@angular/core'; |
|||
import { TENANT_MANAGEMENT_ROUTE_PROVIDERS } from './'; |
|||
|
|||
export function provideTenantManagementConfig() { |
|||
return makeEnvironmentProviders([TENANT_MANAGEMENT_ROUTE_PROVIDERS]); |
|||
} |
|||
@ -1,12 +1,15 @@ |
|||
import { ModuleWithProviders, NgModule } from '@angular/core'; |
|||
import { TENANT_MANAGEMENT_ROUTE_PROVIDERS } from './providers/route.provider'; |
|||
import { provideTenantManagementConfig } from './providers'; |
|||
|
|||
/** |
|||
* @deprecated TenantManagementConfigModule is deprecated use `provideTenantManagementConfig` *function* instead. |
|||
*/ |
|||
@NgModule() |
|||
export class TenantManagementConfigModule { |
|||
static forRoot(): ModuleWithProviders<TenantManagementConfigModule> { |
|||
return { |
|||
ngModule: TenantManagementConfigModule, |
|||
providers: [TENANT_MANAGEMENT_ROUTE_PROVIDERS], |
|||
providers: [provideTenantManagementConfig()], |
|||
}; |
|||
} |
|||
} |
|||
|
|||
@ -1,3 +1,4 @@ |
|||
export * from './nav-item.provider'; |
|||
export * from './styles.provider'; |
|||
export * from './user-menu.provider'; |
|||
export * from './theme-basic-config.provider'; |
|||
|
|||
@ -0,0 +1,39 @@ |
|||
import { APP_INITIALIZER, makeEnvironmentProviders } from '@angular/core'; |
|||
import { noop } from '@abp/ng.core'; |
|||
import { |
|||
VALIDATION_ERROR_TEMPLATE, |
|||
VALIDATION_TARGET_SELECTOR, |
|||
VALIDATION_INVALID_CLASSES, |
|||
} from '@ngx-validate/core'; |
|||
import { LazyStyleHandler } from '../handlers'; |
|||
import { BASIC_THEME_NAV_ITEM_PROVIDERS } from './nav-item.provider'; |
|||
import { BASIC_THEME_STYLES_PROVIDERS } from './styles.provider'; |
|||
import { BASIC_THEME_USER_MENU_PROVIDERS } from './user-menu.provider'; |
|||
import { ValidationErrorComponent } from '../components'; |
|||
|
|||
export function provideThemeBasicConfig() { |
|||
return makeEnvironmentProviders([ |
|||
BASIC_THEME_NAV_ITEM_PROVIDERS, |
|||
BASIC_THEME_USER_MENU_PROVIDERS, |
|||
BASIC_THEME_STYLES_PROVIDERS, |
|||
{ |
|||
provide: VALIDATION_ERROR_TEMPLATE, |
|||
useValue: ValidationErrorComponent, |
|||
}, |
|||
{ |
|||
provide: VALIDATION_TARGET_SELECTOR, |
|||
useValue: '.form-group', |
|||
}, |
|||
{ |
|||
provide: VALIDATION_INVALID_CLASSES, |
|||
useValue: 'is-invalid', |
|||
}, |
|||
LazyStyleHandler, |
|||
{ |
|||
provide: APP_INITIALIZER, |
|||
useFactory: noop, |
|||
multi: true, |
|||
deps: [LazyStyleHandler], |
|||
}, |
|||
]); |
|||
} |
|||
@ -0,0 +1,161 @@ |
|||
import { APP_INITIALIZER, Provider, makeEnvironmentProviders } from '@angular/core'; |
|||
import { noop } from '@abp/ng.core'; |
|||
import { NgbDateParserFormatter } from '@ng-bootstrap/ng-bootstrap'; |
|||
import { |
|||
VALIDATION_BLUEPRINTS, |
|||
VALIDATION_MAP_ERRORS_FN, |
|||
defaultMapErrorsFn, |
|||
VALIDATION_VALIDATE_ON_SUBMIT, |
|||
Validation, |
|||
} from '@ngx-validate/core'; |
|||
import { DEFAULT_VALIDATION_BLUEPRINTS } from '../constants'; |
|||
import { DocumentDirHandlerService, ErrorHandler } from '../handlers'; |
|||
import { HttpErrorConfig } from '../models'; |
|||
import { |
|||
THEME_SHARED_APPEND_CONTENT, |
|||
HTTP_ERROR_CONFIG, |
|||
CONFIRMATION_ICONS, |
|||
ConfirmationIcons, |
|||
DEFAULT_CONFIRMATION_ICONS, |
|||
} from '../tokens'; |
|||
import { DateParserFormatter } from '../utils'; |
|||
import { |
|||
DEFAULT_HANDLERS_PROVIDERS, |
|||
NG_BOOTSTRAP_CONFIG_PROVIDERS, |
|||
THEME_SHARED_ROUTE_PROVIDERS, |
|||
tenantNotFoundProvider, |
|||
} from './'; |
|||
|
|||
export enum ThemeSharedFeatureKind { |
|||
HttpErrorConfig, |
|||
ValidationBluePrint, |
|||
ValidationErrorsFn, |
|||
ValidateOnSubmit, |
|||
Validation, |
|||
ConfirmationIcons, |
|||
} |
|||
|
|||
export interface ThemeSharedFeature<KindT extends ThemeSharedFeatureKind> { |
|||
ɵkind: KindT; |
|||
ɵproviders: Provider[]; |
|||
} |
|||
|
|||
function makeThemeSharedFeature<KindT extends ThemeSharedFeatureKind>( |
|||
kind: KindT, |
|||
providers: Provider[], |
|||
): ThemeSharedFeature<KindT> { |
|||
return { |
|||
ɵkind: kind, |
|||
ɵproviders: providers, |
|||
}; |
|||
} |
|||
|
|||
export function withHttpErrorConfig( |
|||
httpErrorConfig: HttpErrorConfig, |
|||
): ThemeSharedFeature<ThemeSharedFeatureKind.HttpErrorConfig> { |
|||
return makeThemeSharedFeature(ThemeSharedFeatureKind.HttpErrorConfig, [ |
|||
{ |
|||
provide: HTTP_ERROR_CONFIG, |
|||
useValue: httpErrorConfig, |
|||
}, |
|||
]); |
|||
} |
|||
|
|||
export function withValidationBluePrint( |
|||
bluePrints: Validation.Blueprints, |
|||
): ThemeSharedFeature<ThemeSharedFeatureKind.ValidationBluePrint> { |
|||
return makeThemeSharedFeature(ThemeSharedFeatureKind.ValidationBluePrint, [ |
|||
{ |
|||
provide: VALIDATION_BLUEPRINTS, |
|||
useValue: { |
|||
...DEFAULT_VALIDATION_BLUEPRINTS, |
|||
...(bluePrints || {}), |
|||
}, |
|||
}, |
|||
]); |
|||
} |
|||
|
|||
export function withValidationMapErrorsFn( |
|||
mapErrorsFn: Validation.MapErrorsFn, |
|||
): ThemeSharedFeature<ThemeSharedFeatureKind.ValidationErrorsFn> { |
|||
return makeThemeSharedFeature(ThemeSharedFeatureKind.ValidationErrorsFn, [ |
|||
{ |
|||
provide: VALIDATION_MAP_ERRORS_FN, |
|||
useValue: mapErrorsFn || defaultMapErrorsFn, |
|||
}, |
|||
]); |
|||
} |
|||
|
|||
export function withValidateOnSubmit( |
|||
validateOnSubmit: boolean, |
|||
): ThemeSharedFeature<ThemeSharedFeatureKind.ValidateOnSubmit> { |
|||
return makeThemeSharedFeature(ThemeSharedFeatureKind.ValidateOnSubmit, [ |
|||
{ |
|||
provide: VALIDATION_VALIDATE_ON_SUBMIT, |
|||
useValue: validateOnSubmit, |
|||
}, |
|||
]); |
|||
} |
|||
|
|||
export function withConfirmationIcon( |
|||
confirmationIcons: Partial<ConfirmationIcons>, |
|||
): ThemeSharedFeature<ThemeSharedFeatureKind.HttpErrorConfig> { |
|||
return makeThemeSharedFeature(ThemeSharedFeatureKind.HttpErrorConfig, [ |
|||
{ |
|||
provide: CONFIRMATION_ICONS, |
|||
useValue: { ...DEFAULT_CONFIRMATION_ICONS, ...(confirmationIcons || {}) }, |
|||
}, |
|||
]); |
|||
} |
|||
|
|||
export function provideAbpThemeShared(...features: ThemeSharedFeature<ThemeSharedFeatureKind>[]) { |
|||
const providers = [ |
|||
{ |
|||
provide: APP_INITIALIZER, |
|||
multi: true, |
|||
deps: [ErrorHandler], |
|||
useFactory: noop, |
|||
}, |
|||
THEME_SHARED_ROUTE_PROVIDERS, |
|||
{ |
|||
provide: APP_INITIALIZER, |
|||
multi: true, |
|||
deps: [THEME_SHARED_APPEND_CONTENT], |
|||
useFactory: noop, |
|||
}, |
|||
{ provide: HTTP_ERROR_CONFIG, useValue: undefined }, |
|||
{ provide: NgbDateParserFormatter, useClass: DateParserFormatter }, |
|||
NG_BOOTSTRAP_CONFIG_PROVIDERS, |
|||
{ |
|||
provide: VALIDATION_BLUEPRINTS, |
|||
useValue: { ...DEFAULT_VALIDATION_BLUEPRINTS }, |
|||
}, |
|||
{ |
|||
provide: VALIDATION_MAP_ERRORS_FN, |
|||
useValue: defaultMapErrorsFn, |
|||
}, |
|||
{ |
|||
provide: VALIDATION_VALIDATE_ON_SUBMIT, |
|||
useValue: undefined, |
|||
}, |
|||
DocumentDirHandlerService, |
|||
{ |
|||
provide: APP_INITIALIZER, |
|||
useFactory: noop, |
|||
multi: true, |
|||
deps: [DocumentDirHandlerService], |
|||
}, |
|||
{ |
|||
provide: CONFIRMATION_ICONS, |
|||
useValue: { ...DEFAULT_CONFIRMATION_ICONS }, |
|||
}, |
|||
tenantNotFoundProvider, |
|||
DEFAULT_HANDLERS_PROVIDERS, |
|||
]; |
|||
|
|||
for (const feature of features) { |
|||
providers.push(...feature.ɵproviders); |
|||
} |
|||
|
|||
return makeEnvironmentProviders(providers); |
|||
} |
|||
Loading…
Reference in new issue