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 { ModuleWithProviders, NgModule } from '@angular/core'; |
||||
import { NAVIGATE_TO_MANAGE_PROFILE } from '@abp/ng.core'; |
import { provideAccountConfig } from './providers'; |
||||
import { ACCOUNT_ROUTE_PROVIDERS } from './providers/route.provider'; |
|
||||
import { navigateToManageProfileFactory } from './utils/factories'; |
|
||||
|
|
||||
|
/** |
||||
|
* @deprecated AccountConfigModule is deprecated use `provideAccountConfig` *function* instead. |
||||
|
*/ |
||||
@NgModule() |
@NgModule() |
||||
export class AccountConfigModule { |
export class AccountConfigModule { |
||||
static forRoot(): ModuleWithProviders<AccountConfigModule> { |
static forRoot(): ModuleWithProviders<AccountConfigModule> { |
||||
return { |
return { |
||||
ngModule: AccountConfigModule, |
ngModule: AccountConfigModule, |
||||
providers: [ |
providers: [provideAccountConfig()], |
||||
ACCOUNT_ROUTE_PROVIDERS, |
|
||||
{ |
|
||||
provide: NAVIGATE_TO_MANAGE_PROFILE, |
|
||||
useFactory: navigateToManageProfileFactory, |
|
||||
deps: [Injector], |
|
||||
}, |
|
||||
], |
|
||||
}; |
}; |
||||
} |
} |
||||
} |
} |
||||
|
|||||
@ -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 './route.provider'; |
||||
|
export * from './account-config.provider'; |
||||
|
|||||
@ -1,3 +1,4 @@ |
|||||
export * from './account-config.module'; |
export * from './account-config.module'; |
||||
export * from './enums'; |
export * from './enums'; |
||||
export * from './providers'; |
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 './cookie-language.provider'; |
||||
export * from './locale.provider'; |
export * from './locale.provider'; |
||||
export * from './include-localization-resources.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-settings.provider'; |
||||
|
export * from './feature-management-config.provider'; |
||||
|
|||||
@ -1,12 +1,15 @@ |
|||||
import { ModuleWithProviders, NgModule } from '@angular/core'; |
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() |
@NgModule() |
||||
export class IdentityConfigModule { |
export class IdentityConfigModule { |
||||
static forRoot(): ModuleWithProviders<IdentityConfigModule> { |
static forRoot(): ModuleWithProviders<IdentityConfigModule> { |
||||
return { |
return { |
||||
ngModule: IdentityConfigModule, |
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 './route.provider'; |
||||
|
export * from './identity-config.provider'; |
||||
|
|||||
@ -1,73 +1,15 @@ |
|||||
import { APP_INITIALIZER, ModuleWithProviders, NgModule, Provider } from '@angular/core'; |
import { ModuleWithProviders, NgModule } from '@angular/core'; |
||||
import { CommonModule } from '@angular/common'; |
import { provideAbpOAuth } from './providers'; |
||||
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'; |
|
||||
|
|
||||
@NgModule({ |
/** |
||||
imports: [CommonModule, OAuthModule], |
* @deprecated AbpOAuthModule is deprecated use `provideAbpOAuth` *function* instead. |
||||
}) |
*/ |
||||
|
@NgModule() |
||||
export class AbpOAuthModule { |
export class AbpOAuthModule { |
||||
static forRoot(): ModuleWithProviders<AbpOAuthModule> { |
static forRoot(): ModuleWithProviders<AbpOAuthModule> { |
||||
return { |
return { |
||||
ngModule: AbpOAuthModule, |
ngModule: AbpOAuthModule, |
||||
providers: [ |
providers: [provideAbpOAuth()], |
||||
{ |
|
||||
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 }, |
|
||||
], |
|
||||
}; |
}; |
||||
} |
} |
||||
} |
} |
||||
|
|||||
@ -1 +1,2 @@ |
|||||
export * from './navigate-to-manage-profile.provider'; |
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 './route.provider'; |
||||
export * from './setting-tab.provider'; |
export * from './setting-tab.provider'; |
||||
export * from './visible.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 './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 { 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() |
@NgModule() |
||||
export class TenantManagementConfigModule { |
export class TenantManagementConfigModule { |
||||
static forRoot(): ModuleWithProviders<TenantManagementConfigModule> { |
static forRoot(): ModuleWithProviders<TenantManagementConfigModule> { |
||||
return { |
return { |
||||
ngModule: TenantManagementConfigModule, |
ngModule: TenantManagementConfigModule, |
||||
providers: [TENANT_MANAGEMENT_ROUTE_PROVIDERS], |
providers: [provideTenantManagementConfig()], |
||||
}; |
}; |
||||
} |
} |
||||
} |
} |
||||
|
|||||
@ -1,3 +1,4 @@ |
|||||
export * from './nav-item.provider'; |
export * from './nav-item.provider'; |
||||
export * from './styles.provider'; |
export * from './styles.provider'; |
||||
export * from './user-menu.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