Browse Source

add provider function for modules

template-config-provider
Sinan997 2 years ago
parent
commit
4a9e07fc73
  1. 32
      npm/ng-packs/apps/dev-app/src/app/app.module.ts
  2. 94
      npm/ng-packs/packages/core/src/lib/core.module.ts
  3. 54
      npm/ng-packs/packages/oauth/src/lib/oauth.module.ts
  4. 13
      npm/ng-packs/packages/setting-management/config/src/lib/setting-management-config.module.ts
  5. 63
      npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts

32
npm/ng-packs/apps/dev-app/src/app/app.module.ts

@ -1,13 +1,17 @@
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { CoreModule } from '@abp/ng.core';
import { CoreModule, provideCoreModule } from '@abp/ng.core';
import { registerLocale } from '@abp/ng.core/locale';
import { InternetConnectionStatusComponent, ThemeSharedModule } from '@abp/ng.theme.shared';
import {
InternetConnectionStatusComponent,
ThemeSharedModule,
provideThemeShared,
} from '@abp/ng.theme.shared';
import { ThemeLeptonXModule } from '@abp/ng.theme.lepton-x';
import { SideMenuLayoutModule } from '@abp/ng.theme.lepton-x/layouts';
import { AbpOAuthModule } from '@abp/ng.oauth';
import { SettingManagementConfigModule } from '@abp/ng.setting-management/config';
import { provideAbpOAuth } from '@abp/ng.oauth';
import { provideSettingManagementConfig } from '@abp/ng.setting-management/config';
import { provideAccountConfig } from '@abp/ng.account/config';
import { provideIdentityConfig } from '@abp/ng.identity/config';
import { provideTenantManagementConfig } from '@abp/ng.tenant-management/config';
@ -23,15 +27,8 @@ import { APP_ROUTE_PROVIDER } from './route.provider';
BrowserModule,
BrowserAnimationsModule,
AppRoutingModule,
CoreModule.forRoot({
environment,
registerLocaleFn: registerLocale(),
sendNullsAsQueryParam: false,
skipGetAppConfiguration: false,
}),
AbpOAuthModule.forRoot(),
ThemeSharedModule.forRoot(),
SettingManagementConfigModule.forRoot(),
CoreModule,
ThemeSharedModule,
ThemeLeptonXModule.forRoot(),
SideMenuLayoutModule.forRoot(),
AccountLayoutModule.forRoot(),
@ -39,6 +36,15 @@ import { APP_ROUTE_PROVIDER } from './route.provider';
],
providers: [
APP_ROUTE_PROVIDER,
provideCoreModule({
environment,
registerLocaleFn: registerLocale(),
sendNullsAsQueryParam: false,
skipGetAppConfiguration: false,
}),
provideAbpOAuth(),
provideThemeShared(),
provideSettingManagementConfig(),
provideAccountConfig(),
provideIdentityConfig(),
provideTenantManagementConfig(),

94
npm/ng-packs/packages/core/src/lib/core.module.ts

@ -1,6 +1,12 @@
import { CommonModule } from '@angular/common';
import { HttpClientModule, HttpClientXsrfModule } from '@angular/common/http';
import { APP_INITIALIZER, Injector, ModuleWithProviders, NgModule } from '@angular/core';
import {
APP_INITIALIZER,
Injector,
ModuleWithProviders,
NgModule,
makeEnvironmentProviders,
} from '@angular/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { RouterModule, TitleStrategy } from '@angular/router';
import { AbstractNgModelComponent } from './abstracts/ng-model.component';
@ -40,12 +46,11 @@ import { DefaultQueueManager } from './utils/queue';
import { IncludeLocalizationResourcesProvider } from './providers/include-localization-resources.provider';
import { SORT_COMPARE_FUNC, compareFuncFactory } from './tokens/compare-func.token';
import { AuthErrorFilterService } from './abstracts';
import { DYNAMIC_LAYOUTS_TOKEN } from "./tokens/dynamic-layout.token";
import { DEFAULT_DYNAMIC_LAYOUTS } from "./constants";
import { DYNAMIC_LAYOUTS_TOKEN } from './tokens/dynamic-layout.token';
import { DEFAULT_DYNAMIC_LAYOUTS } from './constants';
import { AbpTitleStrategy } from './services/title-strategy.service';
import { LocalStorageListenerService } from './services/local-storage-listener.service';
const standaloneDirectives = [
AutofocusDirective,
InputEventDebounceDirective,
@ -201,12 +206,12 @@ export class CoreModule {
IncludeLocalizationResourcesProvider,
{
provide: DYNAMIC_LAYOUTS_TOKEN,
useValue: options.dynamicLayouts || DEFAULT_DYNAMIC_LAYOUTS
useValue: options.dynamicLayouts || DEFAULT_DYNAMIC_LAYOUTS,
},
{
provide: TitleStrategy,
useExisting: AbpTitleStrategy
}
useExisting: AbpTitleStrategy,
},
],
};
}
@ -225,3 +230,78 @@ export class CoreModule {
};
}
}
export function provideCoreModule(options = {} as ABP.Root) {
return makeEnvironmentProviders([
LocaleProvider,
CookieLanguageProvider,
{
provide: 'CORE_OPTIONS',
useValue: options,
},
{
provide: CORE_OPTIONS,
useFactory: coreOptionsFactory,
deps: ['CORE_OPTIONS'],
},
{
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: TENANT_KEY, useValue: options.tenantKey || '__tenant' },
{
provide: LOCALIZATIONS,
multi: true,
useValue: localizationContributor(options.localizations),
deps: [LocalizationService],
},
{
provide: SORT_COMPARE_FUNC,
useFactory: compareFuncFactory,
},
{
provide: QUEUE_MANAGER,
useClass: DefaultQueueManager,
},
{
provide: OTHERS_GROUP,
useValue: options.othersGroup || 'AbpUi::OthersGroup',
},
AuthErrorFilterService,
IncludeLocalizationResourcesProvider,
{
provide: DYNAMIC_LAYOUTS_TOKEN,
useValue: options.dynamicLayouts || DEFAULT_DYNAMIC_LAYOUTS,
},
{
provide: TitleStrategy,
useExisting: AbpTitleStrategy,
},
]);
}

54
npm/ng-packs/packages/oauth/src/lib/oauth.module.ts

@ -1,4 +1,10 @@
import { APP_INITIALIZER, ModuleWithProviders, NgModule, Provider } from '@angular/core';
import {
APP_INITIALIZER,
ModuleWithProviders,
NgModule,
Provider,
makeEnvironmentProviders,
} from '@angular/core';
import { CommonModule } from '@angular/common';
import { HTTP_INTERCEPTORS } from '@angular/common/http';
import { OAuthModule, OAuthStorage } from 'angular-oauth2-oidc';
@ -71,3 +77,49 @@ export class AbpOAuthModule {
};
}
}
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);
}

13
npm/ng-packs/packages/setting-management/config/src/lib/setting-management-config.module.ts

@ -1,5 +1,5 @@
import { ThemeSharedModule } from '@abp/ng.theme.shared';
import { ModuleWithProviders, NgModule } from '@angular/core';
import { ModuleWithProviders, NgModule, makeEnvironmentProviders } from '@angular/core';
import { CoreModule } from '@abp/ng.core';
import { NgxValidateCoreModule } from '@ngx-validate/core';
import { SETTING_MANAGEMENT_FEATURES_PROVIDERS } from './providers/features.token';
@ -9,7 +9,7 @@ import { SETTING_MANAGEMENT_SETTING_TAB_PROVIDERS } from './providers/setting-ta
import { EmailSettingGroupComponent } from './components/email-setting-group/email-setting-group.component';
@NgModule({
imports: [CoreModule,ThemeSharedModule,NgxValidateCoreModule],
imports: [CoreModule, ThemeSharedModule, NgxValidateCoreModule],
declarations: [EmailSettingGroupComponent],
exports: [EmailSettingGroupComponent],
})
@ -26,3 +26,12 @@ export class SettingManagementConfigModule {
};
}
}
export function provideSettingManagementConfig() {
return makeEnvironmentProviders([
SETTING_MANAGEMENT_ROUTE_PROVIDERS,
SETTING_MANAGEMENT_SETTING_TAB_PROVIDERS,
SETTING_MANAGEMENT_FEATURES_PROVIDERS,
SETTING_MANAGEMENT_VISIBLE_PROVIDERS,
]);
}

63
npm/ng-packs/packages/theme-shared/src/lib/theme-shared.module.ts

@ -1,6 +1,11 @@
import { CoreModule, noop } from '@abp/ng.core';
import { DatePipe } from '@angular/common';
import { APP_INITIALIZER, ModuleWithProviders, NgModule } from '@angular/core';
import {
APP_INITIALIZER,
ModuleWithProviders,
NgModule,
makeEnvironmentProviders,
} from '@angular/core';
import { NgbDateParserFormatter, NgbPaginationModule } from '@ng-bootstrap/ng-bootstrap';
import {
defaultMapErrorsFn,
@ -150,3 +155,59 @@ export class ThemeSharedModule {
};
}
}
export function provideThemeShared(
{ httpErrorConfig, validation = {}, confirmationIcons = {} } = {} as RootParams,
) {
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: httpErrorConfig },
{ provide: NgbDateParserFormatter, useClass: DateParserFormatter },
NG_BOOTSTRAP_CONFIG_PROVIDERS,
{
provide: VALIDATION_BLUEPRINTS,
useValue: {
...DEFAULT_VALIDATION_BLUEPRINTS,
...(validation.blueprints || {}),
},
},
{
provide: VALIDATION_MAP_ERRORS_FN,
useValue: validation.mapErrorsFn || defaultMapErrorsFn,
},
{
provide: VALIDATION_VALIDATE_ON_SUBMIT,
useValue: validation.validateOnSubmit,
},
DocumentDirHandlerService,
{
provide: APP_INITIALIZER,
useFactory: noop,
multi: true,
deps: [DocumentDirHandlerService],
},
{
provide: CONFIRMATION_ICONS,
useValue: {
...DEFAULT_CONFIRMATION_ICONS,
...(confirmationIcons || {}),
},
},
tenantNotFoundProvider,
DEFAULT_HANDLERS_PROVIDERS,
];
return makeEnvironmentProviders(providers);
}

Loading…
Cancel
Save