From 994093aea116e37a418a6205c1176b6bfdb5c5e3 Mon Sep 17 00:00:00 2001 From: bnymncoskuner Date: Fri, 10 Dec 2021 11:45:07 +0300 Subject: [PATCH] feat: add catalog routing and show the page --- .../config/src/catalog-config.module.ts | 12 +++++++ .../catalog/config/src/enums/index.ts | 2 ++ .../catalog/config/src/enums/policy-names.ts | 4 +++ .../catalog/config/src/enums/route-names.ts | 4 +++ .../catalog/config/src/providers/index.ts | 1 + .../config/src/providers/route.provider.ts | 31 +++++++++++++++++++ .../projects/catalog/config/src/public-api.ts | 3 ++ .../catalog/src/lib/catalog-routing.module.ts | 11 +++++++ .../catalog/src/lib/catalog.module.ts | 16 +++------- apps/angular/src/app/app-routing.module.ts | 4 +++ apps/angular/src/app/app.module.ts | 2 ++ apps/angular/tsconfig.json | 10 +++--- 12 files changed, 85 insertions(+), 15 deletions(-) create mode 100644 apps/angular/projects/catalog/config/src/catalog-config.module.ts create mode 100644 apps/angular/projects/catalog/config/src/enums/index.ts create mode 100644 apps/angular/projects/catalog/config/src/enums/policy-names.ts create mode 100644 apps/angular/projects/catalog/config/src/enums/route-names.ts create mode 100644 apps/angular/projects/catalog/config/src/providers/index.ts create mode 100644 apps/angular/projects/catalog/config/src/providers/route.provider.ts create mode 100644 apps/angular/projects/catalog/config/src/public-api.ts create mode 100644 apps/angular/projects/catalog/src/lib/catalog-routing.module.ts diff --git a/apps/angular/projects/catalog/config/src/catalog-config.module.ts b/apps/angular/projects/catalog/config/src/catalog-config.module.ts new file mode 100644 index 00000000..67cc0536 --- /dev/null +++ b/apps/angular/projects/catalog/config/src/catalog-config.module.ts @@ -0,0 +1,12 @@ +import { ModuleWithProviders, NgModule } from '@angular/core'; +import { CATALOG_ROUTE_PROVIDERS } from './providers/route.provider'; + +@NgModule() +export class CatalogConfigModule { + static forRoot(): ModuleWithProviders { + return { + ngModule: CatalogConfigModule, + providers: [CATALOG_ROUTE_PROVIDERS], + }; + } +} diff --git a/apps/angular/projects/catalog/config/src/enums/index.ts b/apps/angular/projects/catalog/config/src/enums/index.ts new file mode 100644 index 00000000..4a7a6a0e --- /dev/null +++ b/apps/angular/projects/catalog/config/src/enums/index.ts @@ -0,0 +1,2 @@ +export * from './policy-names'; +export * from './route-names'; diff --git a/apps/angular/projects/catalog/config/src/enums/policy-names.ts b/apps/angular/projects/catalog/config/src/enums/policy-names.ts new file mode 100644 index 00000000..86928cfb --- /dev/null +++ b/apps/angular/projects/catalog/config/src/enums/policy-names.ts @@ -0,0 +1,4 @@ +export const enum eCatalogPolicyNames { + Catalog = 'AbpCatalog.ProductManagement', + ProductManagement = 'AbpCatalog.ProductManagement', +} diff --git a/apps/angular/projects/catalog/config/src/enums/route-names.ts b/apps/angular/projects/catalog/config/src/enums/route-names.ts new file mode 100644 index 00000000..f2f86f69 --- /dev/null +++ b/apps/angular/projects/catalog/config/src/enums/route-names.ts @@ -0,0 +1,4 @@ +export const enum eCatalogRouteNames { + Catalog = 'AbpCatalog::Menu::Catalog', + ProductManagement = 'AbpCatalog::Menu:ProductManagement', +} diff --git a/apps/angular/projects/catalog/config/src/providers/index.ts b/apps/angular/projects/catalog/config/src/providers/index.ts new file mode 100644 index 00000000..fe08efba --- /dev/null +++ b/apps/angular/projects/catalog/config/src/providers/index.ts @@ -0,0 +1 @@ +export * from './route.provider'; diff --git a/apps/angular/projects/catalog/config/src/providers/route.provider.ts b/apps/angular/projects/catalog/config/src/providers/route.provider.ts new file mode 100644 index 00000000..ace11e4b --- /dev/null +++ b/apps/angular/projects/catalog/config/src/providers/route.provider.ts @@ -0,0 +1,31 @@ +import { eLayoutType, RoutesService } from '@abp/ng.core'; +import { APP_INITIALIZER } from '@angular/core'; +import { eCatalogRouteNames } from '../enums/route-names'; + +export const CATALOG_ROUTE_PROVIDERS = [ + { provide: APP_INITIALIZER, useFactory: configureRoutes, deps: [RoutesService], multi: true }, +]; + +export function configureRoutes(routesService: RoutesService) { + return () => { + routesService.add([ + { + path: '/catalog', + name: eCatalogRouteNames.Catalog, + layout: eLayoutType.application, + // TODO: find icon + iconClass: 'fa fa-users', + // TODO: add this policy + // requiredPolicy: eCatalogPolicyNames.Catalog, + }, + { + path: '/catalog', + name: eCatalogRouteNames.ProductManagement, + parentName: eCatalogRouteNames.Catalog, + order: 1, + // TODO: add this policy + // requiredPolicy: eCatalogPolicyNames.ProductManagement, + }, + ]); + }; +} diff --git a/apps/angular/projects/catalog/config/src/public-api.ts b/apps/angular/projects/catalog/config/src/public-api.ts new file mode 100644 index 00000000..cd9cb63f --- /dev/null +++ b/apps/angular/projects/catalog/config/src/public-api.ts @@ -0,0 +1,3 @@ +export * from './catalog-config.module'; +export * from './enums'; +export * from './providers'; diff --git a/apps/angular/projects/catalog/src/lib/catalog-routing.module.ts b/apps/angular/projects/catalog/src/lib/catalog-routing.module.ts new file mode 100644 index 00000000..4d848a7c --- /dev/null +++ b/apps/angular/projects/catalog/src/lib/catalog-routing.module.ts @@ -0,0 +1,11 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { CatalogComponent } from './catalog.component'; + +const routes: Routes = [{ path: '', component: CatalogComponent }]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class CatalogRoutingModule {} diff --git a/apps/angular/projects/catalog/src/lib/catalog.module.ts b/apps/angular/projects/catalog/src/lib/catalog.module.ts index d68cc777..1b07c62b 100644 --- a/apps/angular/projects/catalog/src/lib/catalog.module.ts +++ b/apps/angular/projects/catalog/src/lib/catalog.module.ts @@ -1,16 +1,10 @@ import { NgModule } from '@angular/core'; +import { CatalogRoutingModule } from './catalog-routing.module'; import { CatalogComponent } from './catalog.component'; - - @NgModule({ - declarations: [ - CatalogComponent - ], - imports: [ - ], - exports: [ - CatalogComponent - ] + declarations: [CatalogComponent], + imports: [CatalogRoutingModule], + exports: [CatalogComponent], }) -export class CatalogModule { } +export class CatalogModule {} diff --git a/apps/angular/src/app/app-routing.module.ts b/apps/angular/src/app/app-routing.module.ts index 178c1823..ee4b614f 100644 --- a/apps/angular/src/app/app-routing.module.ts +++ b/apps/angular/src/app/app-routing.module.ts @@ -25,6 +25,10 @@ const routes: Routes = [ loadChildren: () => import('@abp/ng.setting-management').then(m => m.SettingManagementModule.forLazy()), }, + { + path: 'catalog', + loadChildren: () => import('@catalog').then(m => m.CatalogModule), + }, ]; @NgModule({ diff --git a/apps/angular/src/app/app.module.ts b/apps/angular/src/app/app.module.ts index 532c2b41..af512779 100644 --- a/apps/angular/src/app/app.module.ts +++ b/apps/angular/src/app/app.module.ts @@ -9,6 +9,7 @@ import { ThemeSharedModule } from '@abp/ng.theme.shared'; import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { CatalogConfigModule } from '@catalog/config'; import { environment } from '../environments/environment'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; @@ -29,6 +30,7 @@ import { APP_ROUTE_PROVIDER } from './route.provider'; TenantManagementConfigModule.forRoot(), SettingManagementConfigModule.forRoot(), ThemeBasicModule.forRoot(), + CatalogConfigModule.forRoot(), ], declarations: [AppComponent], providers: [APP_ROUTE_PROVIDER], diff --git a/apps/angular/tsconfig.json b/apps/angular/tsconfig.json index 77111840..c9db678c 100644 --- a/apps/angular/tsconfig.json +++ b/apps/angular/tsconfig.json @@ -18,10 +18,12 @@ "@proxy/*": [ "src/app/proxy/*" ], - "catalog": [ - "dist/catalog/catalog", - "dist/catalog" - ] + "@catalog/config": [ + "projects/catalog/config/src/public-api.ts" + ], + "@catalog": [ + "projects/catalog/src/public-api.ts", + ], } }, "angularCompilerOptions": {