Browse Source

refactor: create RootCoreModule and return it from forRoot

pull/3698/head
Arman Ozak 7 years ago
parent
commit
014cedeb27
  1. 86
      npm/ng-packs/packages/core/src/lib/core.module.ts

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

@ -22,8 +22,8 @@ import { ReplaceableTemplateDirective } from './directives/replaceable-template.
import { StopPropagationDirective } from './directives/stop-propagation.directive'; import { StopPropagationDirective } from './directives/stop-propagation.directive';
import { VisibilityDirective } from './directives/visibility.directive'; import { VisibilityDirective } from './directives/visibility.directive';
import { ApiInterceptor } from './interceptors/api.interceptor'; import { ApiInterceptor } from './interceptors/api.interceptor';
import { LocalizationModule } from './localization.module';
import { ABP } from './models/common'; import { ABP } from './models/common';
import { LocalizationPipe } from './pipes/localization.pipe';
import { SortPipe } from './pipes/sort.pipe'; import { SortPipe } from './pipes/sort.pipe';
import { ConfigPlugin, NGXS_CONFIG_PLUGIN_OPTIONS } from './plugins/config.plugin'; import { ConfigPlugin, NGXS_CONFIG_PLUGIN_OPTIONS } from './plugins/config.plugin';
import { LocaleProvider } from './providers/locale.provider'; import { LocaleProvider } from './providers/locale.provider';
@ -32,77 +32,103 @@ import { ProfileState } from './states/profile.state';
import { ReplaceableComponentsState } from './states/replaceable-components.state'; import { ReplaceableComponentsState } from './states/replaceable-components.state';
import { SessionState } from './states/session.state'; import { SessionState } from './states/session.state';
import { CORE_OPTIONS } from './tokens/options.token'; import { CORE_OPTIONS } from './tokens/options.token';
import { getInitialData, localeInitializer } from './utils/initial-utils';
import './utils/date-extensions'; import './utils/date-extensions';
import { getInitialData, localeInitializer } from './utils/initial-utils';
export function storageFactory(): OAuthStorage { export function storageFactory(): OAuthStorage {
return localStorage; return localStorage;
} }
/**
* BaseCoreModule is the module that holds
* all imports, declarations, exports, and entryComponents
* but not the providers.
* This module will be imported and exported by all others.
*/
@NgModule({ @NgModule({
imports: [ exports: [
NgxsModule.forFeature([ReplaceableComponentsState, ProfileState, SessionState, ConfigState]),
NgxsRouterPluginModule.forRoot(),
NgxsStoragePluginModule.forRoot({ key: ['SessionState'] }),
OAuthModule,
CommonModule, CommonModule,
HttpClientModule, HttpClientModule,
FormsModule, FormsModule,
ReactiveFormsModule, ReactiveFormsModule,
RouterModule, RouterModule,
],
declarations: [ AbstractNgModelComponent,
ReplaceableRouteContainerComponent,
RouterOutletComponent,
DynamicLayoutComponent,
AutofocusDirective, AutofocusDirective,
DynamicLayoutComponent,
EllipsisDirective, EllipsisDirective,
ForDirective, ForDirective,
FormSubmitDirective, FormSubmitDirective,
LocalizationPipe,
SortPipe,
InitDirective, InitDirective,
PermissionDirective,
VisibilityDirective,
InputEventDebounceDirective, InputEventDebounceDirective,
StopPropagationDirective, PermissionDirective,
ReplaceableRouteContainerComponent,
ReplaceableTemplateDirective, ReplaceableTemplateDirective,
AbstractNgModelComponent, RouterOutletComponent,
SortPipe,
StopPropagationDirective,
VisibilityDirective,
], ],
exports: [ imports: [
OAuthModule,
CommonModule, CommonModule,
HttpClientModule, HttpClientModule,
FormsModule, FormsModule,
ReactiveFormsModule, ReactiveFormsModule,
RouterModule, RouterModule,
RouterOutletComponent, ],
DynamicLayoutComponent, declarations: [
AbstractNgModelComponent, AbstractNgModelComponent,
ReplaceableRouteContainerComponent,
AutofocusDirective, AutofocusDirective,
DynamicLayoutComponent,
EllipsisDirective, EllipsisDirective,
ForDirective, ForDirective,
FormSubmitDirective, FormSubmitDirective,
InitDirective, InitDirective,
PermissionDirective,
VisibilityDirective,
InputEventDebounceDirective, InputEventDebounceDirective,
PermissionDirective,
ReplaceableRouteContainerComponent,
ReplaceableTemplateDirective, ReplaceableTemplateDirective,
StopPropagationDirective, RouterOutletComponent,
LocalizationPipe,
SortPipe, SortPipe,
LocalizationPipe, StopPropagationDirective,
VisibilityDirective,
], ],
providers: [LocalizationPipe],
entryComponents: [ entryComponents: [
RouterOutletComponent, RouterOutletComponent,
DynamicLayoutComponent, DynamicLayoutComponent,
ReplaceableRouteContainerComponent, ReplaceableRouteContainerComponent,
], ],
}) })
export class BaseCoreModule {}
/**
* RootCoreModule is the module that will be used at root level
* and it introduces imports useful at root level (e.g. NGXS)
*/
@NgModule({
exports: [BaseCoreModule, LocalizationModule],
imports: [
BaseCoreModule,
LocalizationModule,
NgxsModule.forFeature([ReplaceableComponentsState, ProfileState, SessionState, ConfigState]),
NgxsRouterPluginModule.forRoot(),
NgxsStoragePluginModule.forRoot({ key: ['SessionState'] }),
],
})
export class RootCoreModule {}
/**
* CoreModule is the module that is publicly available
*/
@NgModule({
exports: [BaseCoreModule, LocalizationModule],
imports: [BaseCoreModule, LocalizationModule],
})
export class CoreModule { export class CoreModule {
static forRoot(options = {} as ABP.Root): ModuleWithProviders { static forRoot(options = {} as ABP.Root): ModuleWithProviders<RootCoreModule> {
return { return {
ngModule: CoreModule, ngModule: RootCoreModule,
providers: [ providers: [
LocaleProvider, LocaleProvider,
{ {

Loading…
Cancel
Save