From 54f24250bd3fe938162411b64a6a31142b56f8df Mon Sep 17 00:00:00 2001 From: erdemcaygor Date: Fri, 2 May 2025 13:50:50 +0300 Subject: [PATCH] tenant management module standalone migration --- .../dev-app/src/app/app-routing.module.ts | 3 +- .../components/tenants/tenants.component.ts | 28 +++++++++++-- .../src/lib/tenant-management.module.ts | 25 ++--------- .../src/lib/tenant-management.routes.ts | 41 +++++++++++++++++++ .../src/lib/tenant-management.ts | 35 ++++++++++++++++ .../tenant-management/src/public-api.ts | 1 + 6 files changed, 106 insertions(+), 27 deletions(-) create mode 100644 npm/ng-packs/packages/tenant-management/src/lib/tenant-management.routes.ts create mode 100644 npm/ng-packs/packages/tenant-management/src/lib/tenant-management.ts diff --git a/npm/ng-packs/apps/dev-app/src/app/app-routing.module.ts b/npm/ng-packs/apps/dev-app/src/app/app-routing.module.ts index deb22273f8..f1605c4cdd 100644 --- a/npm/ng-packs/apps/dev-app/src/app/app-routing.module.ts +++ b/npm/ng-packs/apps/dev-app/src/app/app-routing.module.ts @@ -17,8 +17,7 @@ const routes: Routes = [ }, { path: 'tenant-management', - loadChildren: () => - import('@abp/ng.tenant-management').then(m => m.TenantManagementModule.forLazy()), + loadChildren: () => import('@abp/ng.tenant-management').then(m => m.tenantManagementRoutes), }, { path: 'setting-management', diff --git a/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts b/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts index 3722a8e5aa..f1c1e5d48d 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts +++ b/npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts @@ -1,8 +1,19 @@ -import { ListService, PagedResultDto } from '@abp/ng.core'; -import { eFeatureManagementComponents } from '@abp/ng.feature-management'; +import { CoreModule, ListService, PagedResultDto } from '@abp/ng.core'; +import { + eFeatureManagementComponents, + FeatureManagementComponent, + FeatureManagementModule, + provideFeatureManagementConfig, +} from '@abp/ng.feature-management'; import { GetTenantsInput, TenantDto, TenantService } from '@abp/ng.tenant-management/proxy'; -import { Confirmation, ConfirmationService, ToasterService } from '@abp/ng.theme.shared'; import { + Confirmation, + ConfirmationService, + ThemeSharedModule, + ToasterService, +} from '@abp/ng.theme.shared'; +import { + ExtensibleModule, EXTENSIONS_IDENTIFIER, FormPropData, generateFormFromProps, @@ -11,9 +22,10 @@ import { Component, inject, Injector, OnInit } from '@angular/core'; import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms'; import { finalize } from 'rxjs/operators'; import { eTenantManagementComponents } from '../../enums/components'; +import { CommonModule } from '@angular/common'; +import { PageModule } from '@abp/ng.components/page'; @Component({ - standalone: false, selector: 'abp-tenants', templateUrl: './tenants.component.html', providers: [ @@ -23,6 +35,14 @@ import { eTenantManagementComponents } from '../../enums/components'; useValue: eTenantManagementComponents.Tenants, }, ], + imports: [ + CommonModule, + CoreModule, + ThemeSharedModule, + PageModule, + ExtensibleModule, + FeatureManagementComponent, + ], }) export class TenantsComponent implements OnInit { protected readonly list = inject(ListService); diff --git a/npm/ng-packs/packages/tenant-management/src/lib/tenant-management.module.ts b/npm/ng-packs/packages/tenant-management/src/lib/tenant-management.module.ts index 76c917c51b..3d6fabc8dd 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/tenant-management.module.ts +++ b/npm/ng-packs/packages/tenant-management/src/lib/tenant-management.module.ts @@ -1,13 +1,7 @@ -import { CoreModule, LazyModuleFactory } from '@abp/ng.core'; -import { ThemeSharedModule } from '@abp/ng.theme.shared'; -import { ExtensibleModule } from '@abp/ng.components/extensible'; +import { LazyModuleFactory } from '@abp/ng.core'; import { ModuleWithProviders, NgModule, NgModuleFactory } from '@angular/core'; -import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; -import { NgxValidateCoreModule } from '@ngx-validate/core'; -import { TenantsComponent } from './components/tenants/tenants.component'; import { TenantManagementExtensionsGuard } from './guards/extensions.guard'; import { TenantManagementConfigOptions } from './models/config-options'; -import { TenantManagementRoutingModule } from './tenant-management-routing.module'; import { TENANT_MANAGEMENT_CREATE_FORM_PROP_CONTRIBUTORS, TENANT_MANAGEMENT_EDIT_FORM_PROP_CONTRIBUTORS, @@ -15,22 +9,11 @@ import { TENANT_MANAGEMENT_ENTITY_PROP_CONTRIBUTORS, TENANT_MANAGEMENT_TOOLBAR_ACTION_CONTRIBUTORS, } from './tokens/extensions.token'; -import { PageModule } from '@abp/ng.components/page'; -import { FeatureManagementComponent } from '@abp/ng.feature-management'; @NgModule({ - declarations: [TenantsComponent], - exports: [TenantsComponent], - imports: [ - TenantManagementRoutingModule, - NgxValidateCoreModule, - CoreModule, - ThemeSharedModule, - NgbDropdownModule, - ExtensibleModule, - PageModule, - FeatureManagementComponent, - ], + declarations: [], + exports: [], + imports: [], }) export class TenantManagementModule { static forChild( diff --git a/npm/ng-packs/packages/tenant-management/src/lib/tenant-management.routes.ts b/npm/ng-packs/packages/tenant-management/src/lib/tenant-management.routes.ts new file mode 100644 index 0000000000..7c44b962d3 --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/src/lib/tenant-management.routes.ts @@ -0,0 +1,41 @@ +import { Routes } from '@angular/router'; + +import { + authGuard, + permissionGuard, + ReplaceableComponents, + ReplaceableRouteContainerComponent, + ReplaceableRouteContainerStandaloneComponent, + RouterOutletComponent, + RouterOutletStandaloneComponent, +} from '@abp/ng.core'; + +import { TenantsComponent } from './components/tenants/tenants.component'; +import { eTenantManagementComponents } from './enums/components'; +import { tenantManagementExtensionsResolver } from './resolvers'; +import { provideTenantManagement } from './tenant-management'; + +export const tenantManagementRoutes: Routes = [ + { + path: '', + component: RouterOutletStandaloneComponent, + canActivate: [authGuard, permissionGuard], + resolve: [tenantManagementExtensionsResolver], + providers: [...provideTenantManagement()], + children: [ + { path: '', redirectTo: 'tenants', pathMatch: 'full' }, + { + path: 'tenants', + component: ReplaceableRouteContainerStandaloneComponent, + data: { + requiredPolicy: 'AbpTenantManagement.Tenants', + replaceableComponent: { + key: eTenantManagementComponents.Tenants, + defaultComponent: TenantsComponent, + } as ReplaceableComponents.RouteData, + }, + title: 'AbpTenantManagement::Tenants', + }, + ], + }, +]; diff --git a/npm/ng-packs/packages/tenant-management/src/lib/tenant-management.ts b/npm/ng-packs/packages/tenant-management/src/lib/tenant-management.ts new file mode 100644 index 0000000000..7ac344683d --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/src/lib/tenant-management.ts @@ -0,0 +1,35 @@ +import { TenantManagementExtensionsGuard } from './guards/extensions.guard'; +import { TenantManagementConfigOptions } from './models/config-options'; +import { + TENANT_MANAGEMENT_CREATE_FORM_PROP_CONTRIBUTORS, + TENANT_MANAGEMENT_EDIT_FORM_PROP_CONTRIBUTORS, + TENANT_MANAGEMENT_ENTITY_ACTION_CONTRIBUTORS, + TENANT_MANAGEMENT_ENTITY_PROP_CONTRIBUTORS, + TENANT_MANAGEMENT_TOOLBAR_ACTION_CONTRIBUTORS, +} from './tokens/extensions.token'; + +export function provideTenantManagement(options: TenantManagementConfigOptions = {}) { + return [ + { + provide: TENANT_MANAGEMENT_ENTITY_ACTION_CONTRIBUTORS, + useValue: options.entityActionContributors, + }, + { + provide: TENANT_MANAGEMENT_TOOLBAR_ACTION_CONTRIBUTORS, + useValue: options.toolbarActionContributors, + }, + { + provide: TENANT_MANAGEMENT_ENTITY_PROP_CONTRIBUTORS, + useValue: options.entityPropContributors, + }, + { + provide: TENANT_MANAGEMENT_CREATE_FORM_PROP_CONTRIBUTORS, + useValue: options.createFormPropContributors, + }, + { + provide: TENANT_MANAGEMENT_EDIT_FORM_PROP_CONTRIBUTORS, + useValue: options.editFormPropContributors, + }, + TenantManagementExtensionsGuard, + ]; +} diff --git a/npm/ng-packs/packages/tenant-management/src/public-api.ts b/npm/ng-packs/packages/tenant-management/src/public-api.ts index f39c438435..0ab49e4f64 100644 --- a/npm/ng-packs/packages/tenant-management/src/public-api.ts +++ b/npm/ng-packs/packages/tenant-management/src/public-api.ts @@ -5,3 +5,4 @@ export * from './lib/models'; export * from './lib/tenant-management.module'; export * from './lib/tokens'; export * from './lib/resolvers'; +export * from './lib/tenant-management.routes';