Browse Source

Feature/migrate FAQ page components to standalone (#5200)

* Migrate FAQ page components to standalone

* Update changelog
pull/5202/head^2
Kenrick Tandrian 3 days ago
committed by GitHub
parent
commit
d8223f40e5
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 1
      CHANGELOG.md
  2. 2
      apps/client/src/app/app-routing.module.ts
  3. 43
      apps/client/src/app/pages/faq/faq-page-routing.module.ts
  4. 17
      apps/client/src/app/pages/faq/faq-page.component.ts
  5. 21
      apps/client/src/app/pages/faq/faq-page.module.ts
  6. 34
      apps/client/src/app/pages/faq/faq-page.routes.ts
  7. 21
      apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts
  8. 17
      apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts
  9. 20
      apps/client/src/app/pages/faq/overview/faq-overview-page.module.ts
  10. 14
      apps/client/src/app/pages/faq/overview/faq-overview-page.routes.ts
  11. 22
      apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts
  12. 17
      apps/client/src/app/pages/faq/saas/saas-page.component.ts
  13. 20
      apps/client/src/app/pages/faq/saas/saas-page.module.ts
  14. 15
      apps/client/src/app/pages/faq/saas/saas-page.routes.ts
  15. 22
      apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts
  16. 12
      apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts
  17. 20
      apps/client/src/app/pages/faq/self-hosting/self-hosting-page.module.ts
  18. 15
      apps/client/src/app/pages/faq/self-hosting/self-hosting-page.routes.ts

1
CHANGELOG.md

@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Extended the export functionality by custom asset profiles
- Improved the platform icon in the create or update platform dialog of the admin control
- Localized the durations of the coupon system
- Refactored the Frequently Asked Questions (FAQ) pages to standalone
- Refactored the resources pages to standalone
- Improved the language localization for Catalan (`ca`)
- Improved the language localization for Dutch (`nl`)

2
apps/client/src/app/app-routing.module.ts

@ -61,7 +61,7 @@ const routes: Routes = [
{
path: publicRoutes.faq.path,
loadChildren: () =>
import('./pages/faq/faq-page.module').then((m) => m.FaqPageModule)
import('./pages/faq/faq-page.routes').then((m) => m.routes)
},
{
canActivate: [AuthGuard],

43
apps/client/src/app/pages/faq/faq-page-routing.module.ts

@ -1,43 +0,0 @@
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 { FaqPageComponent } from './faq-page.component';
const routes: Routes = [
{
canActivate: [AuthGuard],
children: [
{
path: '',
loadChildren: () =>
import('./overview/faq-overview-page.module').then(
(m) => m.FaqOverviewPageModule
)
},
{
path: publicRoutes.faq.subRoutes.saas.path,
loadChildren: () =>
import('./saas/saas-page.module').then((m) => m.SaasPageModule)
},
{
path: publicRoutes.faq.subRoutes.selfHosting.path,
loadChildren: () =>
import('./self-hosting/self-hosting-page.module').then(
(m) => m.SelfHostingPageModule
)
}
],
component: FaqPageComponent,
path: '',
title: publicRoutes.faq.title
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class FaqPageRoutingModule {}

17
apps/client/src/app/pages/faq/faq-page.component.ts

@ -3,7 +3,15 @@ import { TabConfiguration } from '@ghostfolio/common/interfaces';
import { hasPermission, permissions } from '@ghostfolio/common/permissions';
import { publicRoutes } from '@ghostfolio/common/routes/routes';
import { Component, OnDestroy, OnInit } from '@angular/core';
import {
CUSTOM_ELEMENTS_SCHEMA,
Component,
OnDestroy,
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 { cloudyOutline, readerOutline, serverOutline } from 'ionicons/icons';
import { DeviceDetectorService } from 'ngx-device-detector';
@ -11,12 +19,13 @@ import { Subject } from 'rxjs';
@Component({
host: { class: 'page has-tabs' },
imports: [IonIcon, MatTabsModule, RouterModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
selector: 'gf-faq-page',
styleUrls: ['./faq-page.scss'],
templateUrl: './faq-page.html',
standalone: false
templateUrl: './faq-page.html'
})
export class FaqPageComponent implements OnDestroy, OnInit {
export class GfFaqPageComponent implements OnDestroy, OnInit {
public deviceType: string;
public hasPermissionForSubscription: boolean;
public tabs: TabConfiguration[] = [];

21
apps/client/src/app/pages/faq/faq-page.module.ts

@ -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 { FaqPageRoutingModule } from './faq-page-routing.module';
import { FaqPageComponent } from './faq-page.component';
@NgModule({
declarations: [FaqPageComponent],
imports: [
CommonModule,
FaqPageRoutingModule,
IonIcon,
MatTabsModule,
RouterModule
],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
export class FaqPageModule {}

34
apps/client/src/app/pages/faq/faq-page.routes.ts

@ -0,0 +1,34 @@
import { AuthGuard } from '@ghostfolio/client/core/auth.guard';
import { publicRoutes } from '@ghostfolio/common/routes/routes';
import { Routes } from '@angular/router';
import { GfFaqPageComponent } from './faq-page.component';
export const routes: Routes = [
{
canActivate: [AuthGuard],
children: [
{
path: '',
loadChildren: () =>
import('./overview/faq-overview-page.routes').then((m) => m.routes)
},
{
path: publicRoutes.faq.subRoutes.saas.path,
loadChildren: () =>
import('./saas/saas-page.routes').then((m) => m.routes)
},
{
path: publicRoutes.faq.subRoutes.selfHosting.path,
loadChildren: () =>
import('./self-hosting/self-hosting-page.routes').then(
(m) => m.routes
)
}
],
component: GfFaqPageComponent,
path: '',
title: publicRoutes.faq.title
}
];

21
apps/client/src/app/pages/faq/overview/faq-overview-page-routing.module.ts

@ -1,21 +0,0 @@
import { AuthGuard } from '@ghostfolio/client/core/auth.guard';
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { FaqOverviewPageComponent } from './faq-overview-page.component';
const routes: Routes = [
{
canActivate: [AuthGuard],
component: FaqOverviewPageComponent,
path: '',
title: $localize`Frequently Asked Questions (FAQ)`
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class FaqOverviewPageRoutingModule {}

17
apps/client/src/app/pages/faq/overview/faq-overview-page.component.ts

@ -1,18 +1,27 @@
import { UserService } from '@ghostfolio/client/services/user/user.service';
import { User } from '@ghostfolio/common/interfaces';
import { publicRoutes } from '@ghostfolio/common/routes/routes';
import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator';
import { ChangeDetectorRef, Component, OnDestroy } from '@angular/core';
import {
ChangeDetectorRef,
Component,
CUSTOM_ELEMENTS_SCHEMA,
OnDestroy
} from '@angular/core';
import { MatCardModule } from '@angular/material/card';
import { RouterModule } from '@angular/router';
import { Subject, takeUntil } from 'rxjs';
@Component({
host: { class: 'page' },
imports: [GfPremiumIndicatorComponent, MatCardModule, RouterModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
selector: 'gf-faq-overview-page',
styleUrls: ['./faq-overview-page.scss'],
templateUrl: './faq-overview-page.html',
standalone: false
templateUrl: './faq-overview-page.html'
})
export class FaqOverviewPageComponent implements OnDestroy {
export class GfFaqOverviewPageComponent implements OnDestroy {
public pricingUrl = `https://ghostfol.io/${document.documentElement.lang}/${publicRoutes.pricing.path}`;
public routerLinkFeatures = publicRoutes.features.routerLink;
public user: User;

20
apps/client/src/app/pages/faq/overview/faq-overview-page.module.ts

@ -1,20 +0,0 @@
import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator';
import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { MatCardModule } from '@angular/material/card';
import { FaqOverviewPageRoutingModule } from './faq-overview-page-routing.module';
import { FaqOverviewPageComponent } from './faq-overview-page.component';
@NgModule({
declarations: [FaqOverviewPageComponent],
imports: [
CommonModule,
FaqOverviewPageRoutingModule,
GfPremiumIndicatorComponent,
MatCardModule
],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
export class FaqOverviewPageModule {}

14
apps/client/src/app/pages/faq/overview/faq-overview-page.routes.ts

@ -0,0 +1,14 @@
import { AuthGuard } from '@ghostfolio/client/core/auth.guard';
import { Routes } from '@angular/router';
import { GfFaqOverviewPageComponent } from './faq-overview-page.component';
export const routes: Routes = [
{
canActivate: [AuthGuard],
component: GfFaqOverviewPageComponent,
path: '',
title: $localize`Frequently Asked Questions (FAQ)`
}
];

22
apps/client/src/app/pages/faq/saas/saas-page-routing.module.ts

@ -1,22 +0,0 @@
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 { SaasPageComponent } from './saas-page.component';
const routes: Routes = [
{
canActivate: [AuthGuard],
component: SaasPageComponent,
path: '',
title: `${publicRoutes.faq.subRoutes.saas.title} - ${publicRoutes.faq.title}`
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class SaasPageRoutingModule {}

17
apps/client/src/app/pages/faq/saas/saas-page.component.ts

@ -1,18 +1,27 @@
import { UserService } from '@ghostfolio/client/services/user/user.service';
import { User } from '@ghostfolio/common/interfaces';
import { internalRoutes, publicRoutes } from '@ghostfolio/common/routes/routes';
import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator';
import { ChangeDetectorRef, Component, OnDestroy } from '@angular/core';
import {
ChangeDetectorRef,
Component,
CUSTOM_ELEMENTS_SCHEMA,
OnDestroy
} from '@angular/core';
import { MatCardModule } from '@angular/material/card';
import { RouterModule } from '@angular/router';
import { Subject, takeUntil } from 'rxjs';
@Component({
host: { class: 'page' },
imports: [GfPremiumIndicatorComponent, MatCardModule, RouterModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
selector: 'gf-saas-page',
styleUrls: ['./saas-page.scss'],
templateUrl: './saas-page.html',
standalone: false
templateUrl: './saas-page.html'
})
export class SaasPageComponent implements OnDestroy {
export class GfSaasPageComponent implements OnDestroy {
public pricingUrl = `https://ghostfol.io/${document.documentElement.lang}/${publicRoutes.pricing.path}`;
public routerLinkAccount = internalRoutes.account.routerLink;
public routerLinkAccountMembership =

20
apps/client/src/app/pages/faq/saas/saas-page.module.ts

@ -1,20 +0,0 @@
import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator';
import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { MatCardModule } from '@angular/material/card';
import { SaasPageRoutingModule } from './saas-page-routing.module';
import { SaasPageComponent } from './saas-page.component';
@NgModule({
declarations: [SaasPageComponent],
imports: [
CommonModule,
GfPremiumIndicatorComponent,
MatCardModule,
SaasPageRoutingModule
],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
export class SaasPageModule {}

15
apps/client/src/app/pages/faq/saas/saas-page.routes.ts

@ -0,0 +1,15 @@
import { AuthGuard } from '@ghostfolio/client/core/auth.guard';
import { publicRoutes } from '@ghostfolio/common/routes/routes';
import { Routes } from '@angular/router';
import { GfSaasPageComponent } from './saas-page.component';
export const routes: Routes = [
{
canActivate: [AuthGuard],
component: GfSaasPageComponent,
path: '',
title: `${publicRoutes.faq.subRoutes.saas.title} - ${publicRoutes.faq.title}`
}
];

22
apps/client/src/app/pages/faq/self-hosting/self-hosting-page-routing.module.ts

@ -1,22 +0,0 @@
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 { SelfHostingPageComponent } from './self-hosting-page.component';
const routes: Routes = [
{
canActivate: [AuthGuard],
component: SelfHostingPageComponent,
path: '',
title: `${publicRoutes.faq.subRoutes.selfHosting.title} - ${publicRoutes.faq.title}`
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class SelfHostingPageRoutingModule {}

12
apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts

@ -1,16 +1,20 @@
import { publicRoutes } from '@ghostfolio/common/routes/routes';
import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator';
import { Component, OnDestroy } from '@angular/core';
import { CUSTOM_ELEMENTS_SCHEMA, Component, OnDestroy } from '@angular/core';
import { MatCardModule } from '@angular/material/card';
import { RouterModule } from '@angular/router';
import { Subject } from 'rxjs';
@Component({
host: { class: 'page' },
imports: [GfPremiumIndicatorComponent, MatCardModule, RouterModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
selector: 'gf-self-hosting-page',
styleUrls: ['./self-hosting-page.scss'],
templateUrl: './self-hosting-page.html',
standalone: false
templateUrl: './self-hosting-page.html'
})
export class SelfHostingPageComponent implements OnDestroy {
export class GfSelfHostingPageComponent implements OnDestroy {
public pricingUrl = `https://ghostfol.io/${document.documentElement.lang}/${publicRoutes.pricing.path}`;
private unsubscribeSubject = new Subject<void>();

20
apps/client/src/app/pages/faq/self-hosting/self-hosting-page.module.ts

@ -1,20 +0,0 @@
import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator';
import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { MatCardModule } from '@angular/material/card';
import { SelfHostingPageRoutingModule } from './self-hosting-page-routing.module';
import { SelfHostingPageComponent } from './self-hosting-page.component';
@NgModule({
declarations: [SelfHostingPageComponent],
imports: [
CommonModule,
GfPremiumIndicatorComponent,
MatCardModule,
SelfHostingPageRoutingModule
],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
export class SelfHostingPageModule {}

15
apps/client/src/app/pages/faq/self-hosting/self-hosting-page.routes.ts

@ -0,0 +1,15 @@
import { AuthGuard } from '@ghostfolio/client/core/auth.guard';
import { publicRoutes } from '@ghostfolio/common/routes/routes';
import { Routes } from '@angular/router';
import { GfSelfHostingPageComponent } from './self-hosting-page.component';
export const routes: Routes = [
{
canActivate: [AuthGuard],
component: GfSelfHostingPageComponent,
path: '',
title: `${publicRoutes.faq.subRoutes.selfHosting.title} - ${publicRoutes.faq.title}`
}
];
Loading…
Cancel
Save