From 5c216cb5f1cc38282e073ff1597ef399ab8d0517 Mon Sep 17 00:00:00 2001 From: Kenrick Tandrian <60643640+KenTandrian@users.noreply.github.com> Date: Sat, 19 Jul 2025 13:47:51 +0700 Subject: [PATCH] Feature/migrate resources page components to standalone (#5197) * Migrate resources page components to standalone * Update changelog --- CHANGELOG.md | 1 + apps/client/src/app/app-routing.module.ts | 4 +-- .../glossary/resources-glossary.component.ts | 5 +-- .../glossary/resources-glossary.module.ts | 12 ------- ...module.ts => resources-glossary.routes.ts} | 11 ++----- .../guides/resources-guides.component.ts | 5 +-- .../guides/resources-guides.module.ts | 12 ------- ...g.module.ts => resources-guides.routes.ts} | 11 ++----- .../markets/resources-markets.component.ts | 3 +- .../markets/resources-markets.module.ts | 11 ------- ....module.ts => resources-markets.routes.ts} | 11 ++----- .../resources-overview-routing.module.ts | 17 ---------- .../overview/resources-overview.component.ts | 5 +-- .../overview/resources-overview.module.ts | 12 ------- .../overview/resources-overview.routes.ts | 10 ++++++ .../personal-finance-tools-page.component.ts | 7 +++-- .../personal-finance-tools-page.module.ts | 19 ------------ ... => personal-finance-tools-page.routes.ts} | 11 ++----- .../resources/resources-page.component.ts | 7 +++-- .../pages/resources/resources-page.module.ts | 21 ------------- ...ing.module.ts => resources-page.routes.ts} | 31 +++++-------------- 21 files changed, 48 insertions(+), 178 deletions(-) delete mode 100644 apps/client/src/app/pages/resources/glossary/resources-glossary.module.ts rename apps/client/src/app/pages/resources/glossary/{resources-glossary-routing.module.ts => resources-glossary.routes.ts} (52%) delete mode 100644 apps/client/src/app/pages/resources/guides/resources-guides.module.ts rename apps/client/src/app/pages/resources/guides/{resources-guides-routing.module.ts => resources-guides.routes.ts} (50%) delete mode 100644 apps/client/src/app/pages/resources/markets/resources-markets.module.ts rename apps/client/src/app/pages/resources/markets/{resources-markets-routing.module.ts => resources-markets.routes.ts} (51%) delete mode 100644 apps/client/src/app/pages/resources/overview/resources-overview-routing.module.ts delete mode 100644 apps/client/src/app/pages/resources/overview/resources-overview.module.ts create mode 100644 apps/client/src/app/pages/resources/overview/resources-overview.routes.ts delete mode 100644 apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.module.ts rename apps/client/src/app/pages/resources/personal-finance-tools/{personal-finance-tools-page-routing.module.ts => personal-finance-tools-page.routes.ts} (79%) delete mode 100644 apps/client/src/app/pages/resources/resources-page.module.ts rename apps/client/src/app/pages/resources/{resources-page-routing.module.ts => resources-page.routes.ts} (54%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2ccfea63b..285d21550 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the platform icon in the create or update platform dialog of the admin control - Localized the durations of the coupon system +- Refactored the resources pages to standalone - Improved the language localization for Catalan (`ca`) - Improved the language localization for Dutch (`nl`) - Improved the language localization for Italian (`it`) diff --git a/apps/client/src/app/app-routing.module.ts b/apps/client/src/app/app-routing.module.ts index 4abd93b83..eeb843e0c 100644 --- a/apps/client/src/app/app-routing.module.ts +++ b/apps/client/src/app/app-routing.module.ts @@ -127,9 +127,7 @@ const routes: Routes = [ { path: publicRoutes.resources.path, loadChildren: () => - import('./pages/resources/resources-page.module').then( - (m) => m.ResourcesPageModule - ) + import('./pages/resources/resources-page.routes').then((m) => m.routes) }, { path: publicRoutes.start.path, diff --git a/apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts b/apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts index 81ae00fe1..96958dd70 100644 --- a/apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts +++ b/apps/client/src/app/pages/resources/glossary/resources-glossary.component.ts @@ -4,12 +4,13 @@ import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { publicRoutes } from '@ghostfolio/common/routes/routes'; import { Component, OnInit } from '@angular/core'; +import { RouterModule } from '@angular/router'; @Component({ + imports: [RouterModule], selector: 'gf-resources-glossary', styleUrls: ['./resources-glossary.component.scss'], - templateUrl: './resources-glossary.component.html', - standalone: false + templateUrl: './resources-glossary.component.html' }) export class ResourcesGlossaryPageComponent implements OnInit { public hasPermissionForSubscription: boolean; diff --git a/apps/client/src/app/pages/resources/glossary/resources-glossary.module.ts b/apps/client/src/app/pages/resources/glossary/resources-glossary.module.ts deleted file mode 100644 index ee01909e9..000000000 --- a/apps/client/src/app/pages/resources/glossary/resources-glossary.module.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; - -import { ResourcesGlossaryRoutingModule } from './resources-glossary-routing.module'; -import { ResourcesGlossaryPageComponent } from './resources-glossary.component'; - -@NgModule({ - declarations: [ResourcesGlossaryPageComponent], - imports: [CommonModule, ResourcesGlossaryRoutingModule, RouterModule] -}) -export class ResourcesGlossaryPageModule {} diff --git a/apps/client/src/app/pages/resources/glossary/resources-glossary-routing.module.ts b/apps/client/src/app/pages/resources/glossary/resources-glossary.routes.ts similarity index 52% rename from apps/client/src/app/pages/resources/glossary/resources-glossary-routing.module.ts rename to apps/client/src/app/pages/resources/glossary/resources-glossary.routes.ts index c65afcfbb..2f864155a 100644 --- a/apps/client/src/app/pages/resources/glossary/resources-glossary-routing.module.ts +++ b/apps/client/src/app/pages/resources/glossary/resources-glossary.routes.ts @@ -1,20 +1,13 @@ import { publicRoutes } from '@ghostfolio/common/routes/routes'; -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; +import { Routes } from '@angular/router'; import { ResourcesGlossaryPageComponent } from './resources-glossary.component'; -const routes: Routes = [ +export const routes: Routes = [ { component: ResourcesGlossaryPageComponent, path: '', title: publicRoutes.resources.subRoutes.glossary.title } ]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class ResourcesGlossaryRoutingModule {} diff --git a/apps/client/src/app/pages/resources/guides/resources-guides.component.ts b/apps/client/src/app/pages/resources/guides/resources-guides.component.ts index ddba58e69..52c317cea 100644 --- a/apps/client/src/app/pages/resources/guides/resources-guides.component.ts +++ b/apps/client/src/app/pages/resources/guides/resources-guides.component.ts @@ -1,9 +1,10 @@ import { Component } from '@angular/core'; +import { RouterModule } from '@angular/router'; @Component({ + imports: [RouterModule], selector: 'gf-resources-guides', styleUrls: ['./resources-guides.component.scss'], - templateUrl: './resources-guides.component.html', - standalone: false + templateUrl: './resources-guides.component.html' }) export class ResourcesGuidesComponent {} diff --git a/apps/client/src/app/pages/resources/guides/resources-guides.module.ts b/apps/client/src/app/pages/resources/guides/resources-guides.module.ts deleted file mode 100644 index ed6ce1b2d..000000000 --- a/apps/client/src/app/pages/resources/guides/resources-guides.module.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; - -import { ResourcesGuidesRoutingModule } from './resources-guides-routing.module'; -import { ResourcesGuidesComponent } from './resources-guides.component'; - -@NgModule({ - declarations: [ResourcesGuidesComponent], - imports: [CommonModule, ResourcesGuidesRoutingModule, RouterModule] -}) -export class ResourcesGuidesModule {} diff --git a/apps/client/src/app/pages/resources/guides/resources-guides-routing.module.ts b/apps/client/src/app/pages/resources/guides/resources-guides.routes.ts similarity index 50% rename from apps/client/src/app/pages/resources/guides/resources-guides-routing.module.ts rename to apps/client/src/app/pages/resources/guides/resources-guides.routes.ts index ba731b7c9..f9f65f44a 100644 --- a/apps/client/src/app/pages/resources/guides/resources-guides-routing.module.ts +++ b/apps/client/src/app/pages/resources/guides/resources-guides.routes.ts @@ -1,20 +1,13 @@ import { publicRoutes } from '@ghostfolio/common/routes/routes'; -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; +import { Routes } from '@angular/router'; import { ResourcesGuidesComponent } from './resources-guides.component'; -const routes: Routes = [ +export const routes: Routes = [ { component: ResourcesGuidesComponent, path: '', title: publicRoutes.resources.subRoutes.guides.title } ]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class ResourcesGuidesRoutingModule {} diff --git a/apps/client/src/app/pages/resources/markets/resources-markets.component.ts b/apps/client/src/app/pages/resources/markets/resources-markets.component.ts index a188e3a94..79c185959 100644 --- a/apps/client/src/app/pages/resources/markets/resources-markets.component.ts +++ b/apps/client/src/app/pages/resources/markets/resources-markets.component.ts @@ -3,7 +3,6 @@ import { Component } from '@angular/core'; @Component({ selector: 'gf-resources-markets', styleUrls: ['./resources-markets.component.scss'], - templateUrl: './resources-markets.component.html', - standalone: false + templateUrl: './resources-markets.component.html' }) export class ResourcesMarketsComponent {} diff --git a/apps/client/src/app/pages/resources/markets/resources-markets.module.ts b/apps/client/src/app/pages/resources/markets/resources-markets.module.ts deleted file mode 100644 index 3ec93bb3b..000000000 --- a/apps/client/src/app/pages/resources/markets/resources-markets.module.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; - -import { ResourcesMarketsRoutingModule } from './resources-markets-routing.module'; -import { ResourcesMarketsComponent } from './resources-markets.component'; - -@NgModule({ - declarations: [ResourcesMarketsComponent], - imports: [CommonModule, ResourcesMarketsRoutingModule] -}) -export class ResourcesMarketsModule {} diff --git a/apps/client/src/app/pages/resources/markets/resources-markets-routing.module.ts b/apps/client/src/app/pages/resources/markets/resources-markets.routes.ts similarity index 51% rename from apps/client/src/app/pages/resources/markets/resources-markets-routing.module.ts rename to apps/client/src/app/pages/resources/markets/resources-markets.routes.ts index a3304fffb..4bcb66789 100644 --- a/apps/client/src/app/pages/resources/markets/resources-markets-routing.module.ts +++ b/apps/client/src/app/pages/resources/markets/resources-markets.routes.ts @@ -1,20 +1,13 @@ import { publicRoutes } from '@ghostfolio/common/routes/routes'; -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; +import { Routes } from '@angular/router'; import { ResourcesMarketsComponent } from './resources-markets.component'; -const routes: Routes = [ +export const routes: Routes = [ { component: ResourcesMarketsComponent, path: '', title: publicRoutes.resources.subRoutes.markets.title } ]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class ResourcesMarketsRoutingModule {} diff --git a/apps/client/src/app/pages/resources/overview/resources-overview-routing.module.ts b/apps/client/src/app/pages/resources/overview/resources-overview-routing.module.ts deleted file mode 100644 index 3fada1fc3..000000000 --- a/apps/client/src/app/pages/resources/overview/resources-overview-routing.module.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; - -import { ResourcesOverviewComponent } from './resources-overview.component'; - -const routes: Routes = [ - { - component: ResourcesOverviewComponent, - path: '' - } -]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class ResourcesOverviewRoutingModule {} diff --git a/apps/client/src/app/pages/resources/overview/resources-overview.component.ts b/apps/client/src/app/pages/resources/overview/resources-overview.component.ts index 5cd7f09b5..81338200f 100644 --- a/apps/client/src/app/pages/resources/overview/resources-overview.component.ts +++ b/apps/client/src/app/pages/resources/overview/resources-overview.component.ts @@ -1,12 +1,13 @@ import { publicRoutes } from '@ghostfolio/common/routes/routes'; import { Component } from '@angular/core'; +import { RouterModule } from '@angular/router'; @Component({ + imports: [RouterModule], selector: 'gf-resources-overview', styleUrls: ['./resources-overview.component.scss'], - templateUrl: './resources-overview.component.html', - standalone: false + templateUrl: './resources-overview.component.html' }) export class ResourcesOverviewComponent { public overviewItems = [ diff --git a/apps/client/src/app/pages/resources/overview/resources-overview.module.ts b/apps/client/src/app/pages/resources/overview/resources-overview.module.ts deleted file mode 100644 index 8057e7d2f..000000000 --- a/apps/client/src/app/pages/resources/overview/resources-overview.module.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; - -import { ResourcesOverviewRoutingModule } from './resources-overview-routing.module'; -import { ResourcesOverviewComponent } from './resources-overview.component'; - -@NgModule({ - declarations: [ResourcesOverviewComponent], - imports: [CommonModule, ResourcesOverviewRoutingModule, RouterModule] -}) -export class ResourcesOverviewModule {} diff --git a/apps/client/src/app/pages/resources/overview/resources-overview.routes.ts b/apps/client/src/app/pages/resources/overview/resources-overview.routes.ts new file mode 100644 index 000000000..a6ddbf995 --- /dev/null +++ b/apps/client/src/app/pages/resources/overview/resources-overview.routes.ts @@ -0,0 +1,10 @@ +import { Routes } from '@angular/router'; + +import { ResourcesOverviewComponent } from './resources-overview.component'; + +export const routes: Routes = [ + { + component: ResourcesOverviewComponent, + path: '' + } +]; diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts index cafea79ca..c4cfd184e 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts @@ -2,16 +2,19 @@ import { personalFinanceTools } from '@ghostfolio/common/personal-finance-tools' import { publicRoutes } from '@ghostfolio/common/routes/routes'; import { Component, OnDestroy } from '@angular/core'; +import { MatCardModule } from '@angular/material/card'; +import { RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; import { addIcons } from 'ionicons'; import { chevronForwardOutline } from 'ionicons/icons'; import { Subject } from 'rxjs'; @Component({ host: { class: 'page' }, + imports: [IonIcon, MatCardModule, RouterModule], selector: 'gf-personal-finance-tools-page', styleUrls: ['./personal-finance-tools-page.scss'], - templateUrl: './personal-finance-tools-page.html', - standalone: false + templateUrl: './personal-finance-tools-page.html' }) export class PersonalFinanceToolsPageComponent implements OnDestroy { public pathAlternativeTo = diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.module.ts b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.module.ts deleted file mode 100644 index 9dc7bc1e4..000000000 --- a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.module.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { MatCardModule } from '@angular/material/card'; -import { IonIcon } from '@ionic/angular/standalone'; - -import { PersonalFinanceToolsPageRoutingModule } from './personal-finance-tools-page-routing.module'; -import { PersonalFinanceToolsPageComponent } from './personal-finance-tools-page.component'; - -@NgModule({ - declarations: [PersonalFinanceToolsPageComponent], - imports: [ - CommonModule, - IonIcon, - MatCardModule, - PersonalFinanceToolsPageRoutingModule - ], - schemas: [CUSTOM_ELEMENTS_SCHEMA] -}) -export class PersonalFinanceToolsPageModule {} diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.routes.ts similarity index 79% rename from apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts rename to apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.routes.ts index 13b6cfbaf..9081f6b28 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.routes.ts @@ -2,12 +2,11 @@ import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; import { personalFinanceTools } from '@ghostfolio/common/personal-finance-tools'; import { publicRoutes } from '@ghostfolio/common/routes/routes'; -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; +import { Routes } from '@angular/router'; import { PersonalFinanceToolsPageComponent } from './personal-finance-tools-page.component'; -const routes: Routes = [ +export const routes: Routes = [ { canActivate: [AuthGuard], component: PersonalFinanceToolsPageComponent, @@ -29,9 +28,3 @@ const routes: Routes = [ }; }) ]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class PersonalFinanceToolsPageRoutingModule {} diff --git a/apps/client/src/app/pages/resources/resources-page.component.ts b/apps/client/src/app/pages/resources/resources-page.component.ts index 89000b506..9db996f57 100644 --- a/apps/client/src/app/pages/resources/resources-page.component.ts +++ b/apps/client/src/app/pages/resources/resources-page.component.ts @@ -2,6 +2,9 @@ import { TabConfiguration } from '@ghostfolio/common/interfaces'; import { publicRoutes } from '@ghostfolio/common/routes/routes'; import { Component, OnInit } from '@angular/core'; +import { MatTabsModule } from '@angular/material/tabs'; +import { RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; import { addIcons } from 'ionicons'; import { bookOutline, @@ -14,10 +17,10 @@ import { Subject } from 'rxjs'; @Component({ host: { class: 'page has-tabs' }, + imports: [IonIcon, MatTabsModule, RouterModule], selector: 'gf-resources-page', styleUrls: ['./resources-page.scss'], - templateUrl: './resources-page.html', - standalone: false + templateUrl: './resources-page.html' }) export class ResourcesPageComponent implements OnInit { public deviceType: string; diff --git a/apps/client/src/app/pages/resources/resources-page.module.ts b/apps/client/src/app/pages/resources/resources-page.module.ts deleted file mode 100644 index b5345f2f1..000000000 --- a/apps/client/src/app/pages/resources/resources-page.module.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { CommonModule } from '@angular/common'; -import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { MatTabsModule } from '@angular/material/tabs'; -import { RouterModule } from '@angular/router'; -import { IonIcon } from '@ionic/angular/standalone'; - -import { ResourcesPageRoutingModule } from './resources-page-routing.module'; -import { ResourcesPageComponent } from './resources-page.component'; - -@NgModule({ - declarations: [ResourcesPageComponent], - imports: [ - CommonModule, - IonIcon, - MatTabsModule, - ResourcesPageRoutingModule, - RouterModule - ], - schemas: [CUSTOM_ELEMENTS_SCHEMA] -}) -export class ResourcesPageModule {} diff --git a/apps/client/src/app/pages/resources/resources-page-routing.module.ts b/apps/client/src/app/pages/resources/resources-page.routes.ts similarity index 54% rename from apps/client/src/app/pages/resources/resources-page-routing.module.ts rename to apps/client/src/app/pages/resources/resources-page.routes.ts index 51d9e2c73..58cdad4d3 100644 --- a/apps/client/src/app/pages/resources/resources-page-routing.module.ts +++ b/apps/client/src/app/pages/resources/resources-page.routes.ts @@ -1,12 +1,11 @@ import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; import { publicRoutes } from '@ghostfolio/common/routes/routes'; -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; +import { Routes } from '@angular/router'; import { ResourcesPageComponent } from './resources-page.component'; -const routes: Routes = [ +export const routes: Routes = [ { canActivate: [AuthGuard], component: ResourcesPageComponent, @@ -14,46 +13,32 @@ const routes: Routes = [ { path: '', loadChildren: () => - import('./overview/resources-overview.module').then( - (m) => m.ResourcesOverviewModule - ) + import('./overview/resources-overview.routes').then((m) => m.routes) }, { path: publicRoutes.resources.subRoutes.glossary.path, loadChildren: () => - import('./glossary/resources-glossary.module').then( - (m) => m.ResourcesGlossaryPageModule - ) + import('./glossary/resources-glossary.routes').then((m) => m.routes) }, { path: publicRoutes.resources.subRoutes.guides.path, loadChildren: () => - import('./guides/resources-guides.module').then( - (m) => m.ResourcesGuidesModule - ) + import('./guides/resources-guides.routes').then((m) => m.routes) }, { path: publicRoutes.resources.subRoutes.markets.path, loadChildren: () => - import('./markets/resources-markets.module').then( - (m) => m.ResourcesMarketsModule - ) + import('./markets/resources-markets.routes').then((m) => m.routes) }, { path: publicRoutes.resources.subRoutes.personalFinanceTools.path, loadChildren: () => import( - './personal-finance-tools/personal-finance-tools-page.module' - ).then((m) => m.PersonalFinanceToolsPageModule) + './personal-finance-tools/personal-finance-tools-page.routes' + ).then((m) => m.routes) } ], path: '', title: publicRoutes.resources.title } ]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class ResourcesPageRoutingModule {}