From 269629be0ae27143f8f229d40a8606ca7f2ae864 Mon Sep 17 00:00:00 2001 From: Thomas <4159106+dtslvr@users.noreply.github.com> Date: Thu, 28 Sep 2023 20:53:58 +0200 Subject: [PATCH] Add tabs --- .../user-account-access.html | 32 +- .../user-account-membership.component.ts | 1 + .../user-account-membership.html | 133 +++---- .../user-account-settings.html | 362 ++++++++---------- .../user-account-page-routing.module.ts | 20 + .../user-account-page.component.ts | 40 +- .../pages/user-account/user-account-page.html | 39 +- .../user-account/user-account-page.module.ts | 8 +- .../pages/user-account/user-account-page.scss | 4 + 9 files changed, 336 insertions(+), 303 deletions(-) diff --git a/apps/client/src/app/components/user-account-access/user-account-access.html b/apps/client/src/app/components/user-account-access/user-account-access.html index 64667fe93..c3aa485cd 100644 --- a/apps/client/src/app/components/user-account-access/user-account-access.html +++ b/apps/client/src/app/components/user-account-access/user-account-access.html @@ -1,19 +1,17 @@
-
-
-

- Granted Access - -

- -
-
+

+ Granted Access + +

+
diff --git a/apps/client/src/app/components/user-account-membership/user-account-membership.component.ts b/apps/client/src/app/components/user-account-membership/user-account-membership.component.ts index 4428a3514..13d7495a9 100644 --- a/apps/client/src/app/components/user-account-membership/user-account-membership.component.ts +++ b/apps/client/src/app/components/user-account-membership/user-account-membership.component.ts @@ -34,6 +34,7 @@ export class UserAccountMembershipComponent implements OnDestroy, OnInit { public hasPermissionToUpdateUserSettings: boolean; public price: number; public priceId: string; + public routerLinkPricing = ['/' + $localize`pricing`]; public snackBarRef: MatSnackBarRef; public trySubscriptionMail = 'mailto:hi@ghostfol.io?Subject=Ghostfolio Premium Trial&body=Hello%0D%0DI am interested in Ghostfolio Premium. Can you please send me a coupon code to try it for some time?%0D%0DKind regards'; diff --git a/apps/client/src/app/components/user-account-membership/user-account-membership.html b/apps/client/src/app/components/user-account-membership/user-account-membership.html index 808b793aa..1681e3e16 100644 --- a/apps/client/src/app/components/user-account-membership/user-account-membership.html +++ b/apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -1,86 +1,69 @@
+

Membership

-

Membership

-
-
-
-
- - -
-
Membership
-
-
- {{ user?.subscription?.type }} +
+ +
+ Valid until {{ + user?.subscription?.expiresAt | date: defaultDateFormat }} +
+
+ +
-
- Valid until {{ - user?.subscription?.expiresAt | date: defaultDateFormat }} -
-
- Renew - -
- {{ baseCurrency }} {{ price }} {{ baseCurrency }} {{ price - coupon - }} - {{ baseCurrency }} {{ price }} per year -
- - Try Premium - - Redeem Coupon +
+ {{ baseCurrency }} {{ price }} {{ baseCurrency }} {{ price - coupon + }} + {{ baseCurrency }} {{ price }} per year
-
+ + Try Premium + + Redeem Coupon
- - +
+
diff --git a/apps/client/src/app/components/user-account-settings/user-account-settings.html b/apps/client/src/app/components/user-account-settings/user-account-settings.html index 2bf365bd4..12f3da458 100644 --- a/apps/client/src/app/components/user-account-settings/user-account-settings.html +++ b/apps/client/src/app/components/user-account-settings/user-account-settings.html @@ -1,221 +1,197 @@
+

Settings

-

Settings

-
-
-
-
- - -
-
-
Presenter View
-
- Protection for sensitive information like absolute performances - and quantity values -
+
+
+
Presenter View
+
+ Protection for sensitive information like absolute performances and + quantity values +
+
+
+ +
+
+
+
+
+
+ Base Currency
- + + + {{ currency }} + +
-
- -
-
- Base Currency -
-
- +
+
Language
+
+
+ + + + Deutsch + English + Español (Community) - - {{ currency }} - - -
-
-
-
-
Language
-
-
- Français (Community) - - - Deutsch - English - Español (Community) - Français (Community) - Italiano (Community) - Nederlands (Community) - Português (Community) - Türkçe (Community) - - -
-
-
-
-
Locale
-
- Date and number format -
-
-
- Italiano (Community) - - - {{ locale }} - - -
-
-
-
- Appearance -
-
- Nederlands (Community) - - Auto - Light - Dark - - -
-
- -
-
-
-
Zen Mode
-
- Distraction-free experience for turbulent times -
-
-
- + Português (Community) + Türkçe (Community) + +
-
+
-
Biometric Authentication
-
- Sign in with fingerprint +
Locale
+
+ Date and number format
- + + + + {{ locale }} + +
-
-
-
Experimental Features
-
- Sneak peek at upcoming functionality -
+
+
+ Appearance
- + + + Auto + Light + Dark + +
-
-
User ID
-
{{ user?.id }}
+ +
+
+
+
Zen Mode
+
+ Distraction-free experience for turbulent times
-
-
-
- -
+
+
+ +
+
+
+
+
Biometric Authentication
+
Sign in with fingerprint
+
+
+ +
+
+
+
+
Experimental Features
+
+ Sneak peek at upcoming functionality
- - +
+
+ +
+
+
+
User ID
+
{{ user?.id }}
+
+
+
+
+ +
+
diff --git a/apps/client/src/app/pages/user-account/user-account-page-routing.module.ts b/apps/client/src/app/pages/user-account/user-account-page-routing.module.ts index f52591d21..568095009 100644 --- a/apps/client/src/app/pages/user-account/user-account-page-routing.module.ts +++ b/apps/client/src/app/pages/user-account/user-account-page-routing.module.ts @@ -1,5 +1,8 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; +import { UserAccountAccessComponent } from '@ghostfolio/client/components/user-account-access/user-account-access.component'; +import { UserAccountMembershipComponent } from '@ghostfolio/client/components/user-account-membership/user-account-membership.component'; +import { UserAccountSettingsComponent } from '@ghostfolio/client/components/user-account-settings/user-account-settings.component'; import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; import { UserAccountPageComponent } from './user-account-page.component'; @@ -7,6 +10,23 @@ import { UserAccountPageComponent } from './user-account-page.component'; const routes: Routes = [ { canActivate: [AuthGuard], + children: [ + { + path: '', + component: UserAccountSettingsComponent, + title: $localize`Settings` + }, + { + path: 'membership', + component: UserAccountMembershipComponent, + title: $localize`Membership` + }, + { + path: 'access', + component: UserAccountAccessComponent, + title: $localize`Access` + } + ], component: UserAccountPageComponent, path: '', title: $localize`My Ghostfolio` diff --git a/apps/client/src/app/pages/user-account/user-account-page.component.ts b/apps/client/src/app/pages/user-account/user-account-page.component.ts index 25c2e60d7..970dadd6a 100644 --- a/apps/client/src/app/pages/user-account/user-account-page.component.ts +++ b/apps/client/src/app/pages/user-account/user-account-page.component.ts @@ -1,30 +1,60 @@ -import { Component, OnDestroy, OnInit } from '@angular/core'; +import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; import { UserService } from '@ghostfolio/client/services/user/user.service'; -import { User } from '@ghostfolio/common/interfaces'; +import { TabConfiguration, User } from '@ghostfolio/common/interfaces'; +import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject, takeUntil } from 'rxjs'; @Component({ - host: { class: 'page' }, + host: { class: 'page has-tabs' }, selector: 'gf-user-account-page', styleUrls: ['./user-account-page.scss'], templateUrl: './user-account-page.html' }) export class UserAccountPageComponent implements OnDestroy, OnInit { + public deviceType: string; + public tabs: TabConfiguration[] = []; public user: User; private unsubscribeSubject = new Subject(); - public constructor(private userService: UserService) { + public constructor( + private changeDetectorRef: ChangeDetectorRef, + private deviceService: DeviceDetectorService, + private userService: UserService + ) { this.userService.stateChanged .pipe(takeUntil(this.unsubscribeSubject)) .subscribe((state) => { if (state?.user) { this.user = state.user; + + this.tabs = [ + { + iconName: 'cog-outline', + label: $localize`Settings`, + path: ['/account'] + }, + { + iconName: 'diamond-outline', + label: $localize`Membership`, + path: ['/account/membership'], + showCondition: !!this.user?.subscription + }, + { + iconName: 'share-social-outline', + label: $localize`Access`, + path: ['/account', 'access'] + } + ]; + + this.changeDetectorRef.markForCheck(); } }); } - public ngOnInit() {} + public ngOnInit() { + this.deviceType = this.deviceService.getDeviceInfo().deviceType; + } public ngOnDestroy() { this.unsubscribeSubject.next(); diff --git a/apps/client/src/app/pages/user-account/user-account-page.html b/apps/client/src/app/pages/user-account/user-account-page.html index d1195f690..d3fbca534 100644 --- a/apps/client/src/app/pages/user-account/user-account-page.html +++ b/apps/client/src/app/pages/user-account/user-account-page.html @@ -1,10 +1,29 @@ -
-
-
-

Account

- - - -
-
-
+ + + + + diff --git a/apps/client/src/app/pages/user-account/user-account-page.module.ts b/apps/client/src/app/pages/user-account/user-account-page.module.ts index 97cc82003..3c6670af4 100644 --- a/apps/client/src/app/pages/user-account/user-account-page.module.ts +++ b/apps/client/src/app/pages/user-account/user-account-page.module.ts @@ -1,11 +1,12 @@ import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; +import { MatTabsModule } from '@angular/material/tabs'; +import { GfUserAccountAccessModule } from '@ghostfolio/client/components/user-account-access/user-account-access.module'; +import { GfUserAccountMembershipModule } from '@ghostfolio/client/components/user-account-membership/user-account-membership.module'; +import { GfUserAccountSettingsModule } from '@ghostfolio/client/components/user-account-settings/user-account-settings.module'; import { UserAccountPageRoutingModule } from './user-account-page-routing.module'; import { UserAccountPageComponent } from './user-account-page.component'; -import { GfUserAccountSettingsModule } from '@ghostfolio/client/components/user-account-settings/user-account-settings.module'; -import { GfUserAccountAccessModule } from '@ghostfolio/client/components/user-account-access/user-account-access.module'; -import { GfUserAccountMembershipModule } from '@ghostfolio/client/components/user-account-membership/user-account-membership.module'; @NgModule({ declarations: [UserAccountPageComponent], @@ -14,6 +15,7 @@ import { GfUserAccountMembershipModule } from '@ghostfolio/client/components/use GfUserAccountAccessModule, GfUserAccountMembershipModule, GfUserAccountSettingsModule, + MatTabsModule, UserAccountPageRoutingModule ] }) diff --git a/apps/client/src/app/pages/user-account/user-account-page.scss b/apps/client/src/app/pages/user-account/user-account-page.scss index 705139659..6a0b74854 100644 --- a/apps/client/src/app/pages/user-account/user-account-page.scss +++ b/apps/client/src/app/pages/user-account/user-account-page.scss @@ -1,5 +1,9 @@ +@import 'apps/client/src/styles/ghostfolio-style'; + :host { + color: rgb(var(--dark-primary-text)); } :host-context(.is-dark-theme) { + color: rgb(var(--light-primary-text)); }