Feature/upgrade to nx 20.3 (#4152)

* Upgrade to Nx 20.3

* Update changelog
pull/4155/head
Karel De Smet 4 days ago committed by GitHub
parent 615278a887
commit 46cbbd3bc4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -15,7 +15,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Improved support for automatic deletion of unused asset profiles when deleting activities
- Improved the language localization for German (`de`)
- Upgraded the _Stripe_ dependencies
- Upgraded `angular` from version `18.2.8` to `19.0.5`
- Upgraded `husky` from version `9.1.6` to `9.1.7`
- Upgraded `marked` from version `12.0.2` to `15.0.4`
- Upgraded `ng-extract-i18n-merge` from version `2.12.0` to `2.13.1`
- Upgraded `ngx-device-detector` from version `8.0.0` to `9.0.0`
- Upgraded `ngx-markdown` from version `18.0.0` to `19.0.0`
- Upgraded `Nx` from version `20.1.2` to `20.3.0`
- Upgraded `zone.js` from version `0.14.10` to `0.15.0`
## 2.131.0 - 2024-12-25

@ -16,6 +16,12 @@
{
"files": ["*.js", "*.jsx"],
"rules": {}
},
{
"files": ["*.ts"],
"rules": {
"@angular-eslint/prefer-standalone": "off"
}
}
],
"plugins": ["@angular-eslint/eslint-plugin", "@typescript-eslint"],

@ -38,7 +38,8 @@ import { UserService } from './services/user/user.service';
selector: 'gf-root',
changeDetection: ChangeDetectionStrategy.OnPush,
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
styleUrls: ['./app.component.scss'],
standalone: false
})
export class AppComponent implements OnDestroy, OnInit {
@HostBinding('class.has-info-message') get getHasMessage() {

@ -18,7 +18,8 @@ import { MatTableDataSource } from '@angular/material/table';
selector: 'gf-access-table',
changeDetection: ChangeDetectionStrategy.OnPush,
templateUrl: './access-table.component.html',
styleUrls: ['./access-table.component.scss']
styleUrls: ['./access-table.component.scss'],
standalone: false
})
export class AccessTableComponent implements OnChanges {
@Input() accesses: Access[];

@ -37,7 +37,8 @@ import { AccountDetailDialogParams } from './interfaces/interfaces';
selector: 'gf-account-detail-dialog',
changeDetection: ChangeDetectionStrategy.OnPush,
templateUrl: 'account-detail-dialog.html',
styleUrls: ['./account-detail-dialog.component.scss']
styleUrls: ['./account-detail-dialog.component.scss'],
standalone: false
})
export class AccountDetailDialog implements OnDestroy, OnInit {
public accountBalances: AccountBalancesResponse['balances'];

@ -23,7 +23,8 @@ import { Subject, Subscription } from 'rxjs';
selector: 'gf-accounts-table',
changeDetection: ChangeDetectionStrategy.OnPush,
templateUrl: './accounts-table.component.html',
styleUrls: ['./accounts-table.component.scss']
styleUrls: ['./accounts-table.component.scss'],
standalone: false
})
export class AccountsTableComponent implements OnChanges, OnDestroy {
@Input() accounts: AccountModel[];

@ -27,7 +27,8 @@ import { takeUntil } from 'rxjs/operators';
changeDetection: ChangeDetectionStrategy.OnPush,
selector: 'gf-admin-jobs',
styleUrls: ['./admin-jobs.scss'],
templateUrl: './admin-jobs.html'
templateUrl: './admin-jobs.html',
standalone: false
})
export class AdminJobsComponent implements OnDestroy, OnInit {
public DATA_GATHERING_QUEUE_PRIORITY_LOW = DATA_GATHERING_QUEUE_PRIORITY_LOW;

@ -48,7 +48,8 @@ import { CreateAssetProfileDialogParams } from './create-asset-profile-dialog/in
host: { class: 'has-fab' },
selector: 'gf-admin-market-data',
styleUrls: ['./admin-market-data.scss'],
templateUrl: './admin-market-data.html'
templateUrl: './admin-market-data.html',
standalone: false
})
export class AdminMarketDataComponent
implements AfterViewInit, OnDestroy, OnInit

@ -42,7 +42,8 @@ import { AssetProfileDialogParams } from './interfaces/interfaces';
selector: 'gf-asset-profile-dialog',
changeDetection: ChangeDetectionStrategy.OnPush,
templateUrl: 'asset-profile-dialog.html',
styleUrls: ['./asset-profile-dialog.component.scss']
styleUrls: ['./asset-profile-dialog.component.scss'],
standalone: false
})
export class AssetProfileDialog implements OnDestroy, OnInit {
public assetProfileClass: string;

@ -28,7 +28,8 @@ import { CreateAssetProfileDialogMode } from './interfaces/interfaces';
host: { class: 'h-100' },
selector: 'gf-create-asset-profile-dialog',
styleUrls: ['./create-asset-profile-dialog.component.scss'],
templateUrl: 'create-asset-profile-dialog.html'
templateUrl: 'create-asset-profile-dialog.html',
standalone: false
})
export class CreateAssetProfileDialog implements OnInit, OnDestroy {
public createAssetProfileForm: FormGroup;

@ -36,7 +36,8 @@ import { takeUntil } from 'rxjs/operators';
@Component({
selector: 'gf-admin-overview',
styleUrls: ['./admin-overview.scss'],
templateUrl: './admin-overview.html'
templateUrl: './admin-overview.html',
standalone: false
})
export class AdminOverviewComponent implements OnDestroy, OnInit {
public couponDuration: StringValue = '14 days';

@ -29,7 +29,8 @@ import { CreateOrUpdatePlatformDialog } from './create-or-update-platform-dialog
changeDetection: ChangeDetectionStrategy.OnPush,
selector: 'gf-admin-platform',
styleUrls: ['./admin-platform.component.scss'],
templateUrl: './admin-platform.component.html'
templateUrl: './admin-platform.component.html',
standalone: false
})
export class AdminPlatformComponent implements OnInit, OnDestroy {
@ViewChild(MatSort) sort: MatSort;

@ -19,7 +19,8 @@ import { CreateOrUpdatePlatformDialogParams } from './interfaces/interfaces';
host: { class: 'h-100' },
selector: 'gf-create-or-update-platform-dialog',
styleUrls: ['./create-or-update-platform-dialog.scss'],
templateUrl: 'create-or-update-platform-dialog.html'
templateUrl: 'create-or-update-platform-dialog.html',
standalone: false
})
export class CreateOrUpdatePlatformDialog implements OnDestroy {
public platformForm: FormGroup;

@ -30,7 +30,8 @@ import { GfGhostfolioPremiumApiDialogComponent } from './ghostfolio-premium-api-
changeDetection: ChangeDetectionStrategy.OnPush,
selector: 'gf-admin-settings',
styleUrls: ['./admin-settings.component.scss'],
templateUrl: './admin-settings.component.html'
templateUrl: './admin-settings.component.html',
standalone: false
})
export class AdminSettingsComponent implements OnDestroy, OnInit {
public defaultDateFormat: string;

@ -25,7 +25,6 @@ import { GhostfolioPremiumApiDialogParams } from './interfaces/interfaces';
MatDialogModule
],
selector: 'gf-ghostfolio-premium-api-dialog',
standalone: true,
styleUrls: ['./ghostfolio-premium-api-dialog.scss'],
templateUrl: './ghostfolio-premium-api-dialog.html'
})

@ -29,7 +29,8 @@ import { CreateOrUpdateTagDialog } from './create-or-update-tag-dialog/create-or
changeDetection: ChangeDetectionStrategy.OnPush,
selector: 'gf-admin-tag',
styleUrls: ['./admin-tag.component.scss'],
templateUrl: './admin-tag.component.html'
templateUrl: './admin-tag.component.html',
standalone: false
})
export class AdminTagComponent implements OnInit, OnDestroy {
@ViewChild(MatSort) sort: MatSort;

@ -19,7 +19,8 @@ import { CreateOrUpdateTagDialogParams } from './interfaces/interfaces';
host: { class: 'h-100' },
selector: 'gf-create-or-update-tag-dialog',
styleUrls: ['./create-or-update-tag-dialog.scss'],
templateUrl: 'create-or-update-tag-dialog.html'
templateUrl: 'create-or-update-tag-dialog.html',
standalone: false
})
export class CreateOrUpdateTagDialog implements OnDestroy {
public tagForm: FormGroup;

@ -29,7 +29,8 @@ import { takeUntil } from 'rxjs/operators';
@Component({
selector: 'gf-admin-users',
styleUrls: ['./admin-users.scss'],
templateUrl: './admin-users.html'
templateUrl: './admin-users.html',
standalone: false
})
export class AdminUsersComponent implements OnDestroy, OnInit {
@ViewChild(MatPaginator) paginator: MatPaginator;

@ -13,7 +13,6 @@ import { DataSource } from '@prisma/client';
imports: [CommonModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
selector: 'gf-asset-profile-icon',
standalone: true,
styleUrls: ['./asset-profile-icon.component.scss'],
templateUrl: './asset-profile-icon.component.html'
})

@ -44,7 +44,8 @@ import annotationPlugin from 'chartjs-plugin-annotation';
selector: 'gf-benchmark-comparator',
changeDetection: ChangeDetectionStrategy.OnPush,
templateUrl: './benchmark-comparator.component.html',
styleUrls: ['./benchmark-comparator.component.scss']
styleUrls: ['./benchmark-comparator.component.scss'],
standalone: false
})
export class BenchmarkComparatorComponent implements OnChanges, OnDestroy {
@Input() benchmark: Partial<SymbolProfile>;

@ -11,7 +11,8 @@ import {
selector: 'gf-dialog-footer',
changeDetection: ChangeDetectionStrategy.OnPush,
templateUrl: './dialog-footer.component.html',
styleUrls: ['./dialog-footer.component.scss']
styleUrls: ['./dialog-footer.component.scss'],
standalone: false
})
export class DialogFooterComponent {
@Input() deviceType: string;

@ -11,7 +11,8 @@ import {
selector: 'gf-dialog-header',
changeDetection: ChangeDetectionStrategy.OnPush,
templateUrl: './dialog-header.component.html',
styleUrls: ['./dialog-header.component.scss']
styleUrls: ['./dialog-header.component.scss'],
standalone: false
})
export class DialogHeaderComponent {
@Input() deviceType: string;

@ -12,7 +12,8 @@ import {
selector: 'gf-fear-and-greed-index',
changeDetection: ChangeDetectionStrategy.OnPush,
templateUrl: './fear-and-greed-index.component.html',
styleUrls: ['./fear-and-greed-index.component.scss']
styleUrls: ['./fear-and-greed-index.component.scss'],
standalone: false
})
export class FearAndGreedIndexComponent implements OnChanges {
@Input() fearAndGreedIndex: number;

@ -35,7 +35,8 @@ import { catchError, takeUntil } from 'rxjs/operators';
selector: 'gf-header',
changeDetection: ChangeDetectionStrategy.OnPush,
templateUrl: './header.component.html',
styleUrls: ['./header.component.scss']
styleUrls: ['./header.component.scss'],
standalone: false
})
export class HeaderComponent implements OnChanges {
@HostListener('window:keydown', ['$event'])

@ -81,7 +81,6 @@ import { HoldingDetailDialogParams } from './interfaces/interfaces';
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
selector: 'gf-holding-detail-dialog',
standalone: true,
styleUrls: ['./holding-detail-dialog.component.scss'],
templateUrl: 'holding-detail-dialog.html'
})

@ -20,7 +20,8 @@ import { takeUntil } from 'rxjs/operators';
@Component({
selector: 'gf-home-holdings',
styleUrls: ['./home-holdings.scss'],
templateUrl: './home-holdings.html'
templateUrl: './home-holdings.html',
standalone: false
})
export class HomeHoldingsComponent implements OnDestroy, OnInit {
public static DEFAULT_HOLDINGS_VIEW_MODE: HoldingsViewMode = 'TABLE';

@ -18,7 +18,8 @@ import { takeUntil } from 'rxjs/operators';
@Component({
selector: 'gf-home-market',
styleUrls: ['./home-market.scss'],
templateUrl: './home-market.html'
templateUrl: './home-market.html',
standalone: false
})
export class HomeMarketComponent implements OnDestroy, OnInit {
public benchmarks: Benchmark[];

@ -20,7 +20,8 @@ import { takeUntil } from 'rxjs/operators';
@Component({
selector: 'gf-home-overview',
styleUrls: ['./home-overview.scss'],
templateUrl: './home-overview.html'
templateUrl: './home-overview.html',
standalone: false
})
export class HomeOverviewComponent implements OnDestroy, OnInit {
public dateRangeOptions = ToggleComponent.DEFAULT_DATE_RANGE_OPTIONS;

@ -16,7 +16,8 @@ import { takeUntil } from 'rxjs/operators';
@Component({
selector: 'gf-home-summary',
styleUrls: ['./home-summary.scss'],
templateUrl: './home-summary.html'
templateUrl: './home-summary.html',
standalone: false
})
export class HomeSummaryComponent implements OnDestroy, OnInit {
public hasImpersonationId: boolean;

@ -45,7 +45,8 @@ import { isAfter } from 'date-fns';
selector: 'gf-investment-chart',
changeDetection: ChangeDetectionStrategy.OnPush,
templateUrl: './investment-chart.component.html',
styleUrls: ['./investment-chart.component.scss']
styleUrls: ['./investment-chart.component.scss'],
standalone: false
})
export class InvestmentChartComponent implements OnChanges, OnDestroy {
@Input() benchmarkDataItems: InvestmentItem[] = [];

@ -14,7 +14,8 @@ import { Router } from '@angular/router';
selector: 'gf-login-with-access-token-dialog',
changeDetection: ChangeDetectionStrategy.OnPush,
styleUrls: ['./login-with-access-token-dialog.scss'],
templateUrl: 'login-with-access-token-dialog.html'
templateUrl: 'login-with-access-token-dialog.html',
standalone: false
})
export class LoginWithAccessTokenDialog {
public isAccessTokenHidden = true;

@ -24,7 +24,8 @@ import { isNumber } from 'lodash';
selector: 'gf-portfolio-performance',
changeDetection: ChangeDetectionStrategy.OnPush,
templateUrl: './portfolio-performance.component.html',
styleUrls: ['./portfolio-performance.component.scss']
styleUrls: ['./portfolio-performance.component.scss'],
standalone: false
})
export class PortfolioPerformanceComponent implements OnChanges {
@Input() deviceType: string;

@ -17,7 +17,8 @@ import { formatDistanceToNow } from 'date-fns';
selector: 'gf-portfolio-summary',
changeDetection: ChangeDetectionStrategy.OnPush,
templateUrl: './portfolio-summary.component.html',
styleUrls: ['./portfolio-summary.component.scss']
styleUrls: ['./portfolio-summary.component.scss'],
standalone: false
})
export class PortfolioSummaryComponent implements OnChanges {
@Input() baseCurrency: string;

@ -22,7 +22,6 @@ import { IRuleSettingsDialogParams } from './interfaces/interfaces';
MatSliderModule
],
selector: 'gf-rule-settings-dialog',
standalone: true,
styleUrls: ['./rule-settings-dialog.scss'],
templateUrl: './rule-settings-dialog.html'
})

@ -24,7 +24,8 @@ import { GfRuleSettingsDialogComponent } from './rule-settings-dialog/rule-setti
selector: 'gf-rule',
changeDetection: ChangeDetectionStrategy.OnPush,
templateUrl: './rule.component.html',
styleUrls: ['./rule.component.scss']
styleUrls: ['./rule.component.scss'],
standalone: false
})
export class RuleComponent implements OnInit {
@Input() hasPermissionToUpdateUserSettings: boolean;

@ -16,7 +16,8 @@ import {
selector: 'gf-rules',
changeDetection: ChangeDetectionStrategy.OnPush,
templateUrl: './rules.component.html',
styleUrls: ['./rules.component.scss']
styleUrls: ['./rules.component.scss'],
standalone: false
})
export class RulesComponent {
@Input() hasPermissionToUpdateUserSettings: boolean;

@ -8,7 +8,8 @@ import { SubscriptionInterstitialDialogParams } from './interfaces/interfaces';
host: { class: 'd-flex flex-column flex-grow-1 h-100' },
selector: 'gf-subscription-interstitial-dialog',
styleUrls: ['./subscription-interstitial-dialog.scss'],
templateUrl: 'subscription-interstitial-dialog.html'
templateUrl: 'subscription-interstitial-dialog.html',
standalone: false
})
export class SubscriptionInterstitialDialog {
private readonly VARIANTS_COUNT = 2;

@ -14,7 +14,8 @@ import { FormControl } from '@angular/forms';
selector: 'gf-toggle',
changeDetection: ChangeDetectionStrategy.OnPush,
templateUrl: './toggle.component.html',
styleUrls: ['./toggle.component.scss']
styleUrls: ['./toggle.component.scss'],
standalone: false
})
export class ToggleComponent implements OnChanges {
public static DEFAULT_DATE_RANGE_OPTIONS: ToggleOption[] = [

@ -22,7 +22,8 @@ import { CreateOrUpdateAccessDialogParams } from './interfaces/interfaces';
host: { class: 'h-100' },
selector: 'gf-create-or-update-access-dialog',
styleUrls: ['./create-or-update-access-dialog.scss'],
templateUrl: 'create-or-update-access-dialog.html'
templateUrl: 'create-or-update-access-dialog.html',
standalone: false
})
export class CreateOrUpdateAccessDialog implements OnDestroy {
public accessForm: FormGroup;

@ -24,7 +24,8 @@ import { CreateOrUpdateAccessDialog } from './create-or-update-access-dialog/cre
host: { class: 'has-fab' },
selector: 'gf-user-account-access',
styleUrls: ['./user-account-access.scss'],
templateUrl: './user-account-access.html'
templateUrl: './user-account-access.html',
standalone: false
})
export class UserAccountAccessComponent implements OnDestroy, OnInit {
public accessesGet: Access[];

@ -26,7 +26,8 @@ import { catchError, switchMap, takeUntil } from 'rxjs/operators';
changeDetection: ChangeDetectionStrategy.OnPush,
selector: 'gf-user-account-membership',
styleUrls: ['./user-account-membership.scss'],
templateUrl: './user-account-membership.html'
templateUrl: './user-account-membership.html',
standalone: false
})
export class UserAccountMembershipComponent implements OnDestroy {
public baseCurrency: string;

@ -32,7 +32,8 @@ import { catchError, takeUntil } from 'rxjs/operators';
changeDetection: ChangeDetectionStrategy.OnPush,
selector: 'gf-user-account-settings',
styleUrls: ['./user-account-settings.scss'],
templateUrl: './user-account-settings.html'
templateUrl: './user-account-settings.html',
standalone: false
})
export class UserAccountSettingsComponent implements OnDestroy, OnInit {
public appearancePlaceholder = $localize`Auto`;

@ -14,7 +14,8 @@ import svgMap from 'svgmap';
selector: 'gf-world-map-chart',
changeDetection: ChangeDetectionStrategy.OnPush,
templateUrl: './world-map-chart.component.html',
styleUrls: ['./world-map-chart.component.scss']
styleUrls: ['./world-map-chart.component.scss'],
standalone: false
})
export class WorldMapChartComponent implements OnChanges, OnDestroy {
@Input() countries: { [code: string]: { name?: string; value: number } };

@ -8,7 +8,6 @@ import { IAlertDialogParams } from './interfaces/interfaces';
@Component({
imports: [CommonModule, MatButtonModule, MatDialogModule],
selector: 'gf-alert-dialog',
standalone: true,
styleUrls: ['./alert-dialog.scss'],
templateUrl: './alert-dialog.html'
})

@ -9,7 +9,6 @@ import { IConfirmDialogParams } from './interfaces/interfaces';
@Component({
imports: [CommonModule, MatButtonModule, MatDialogModule],
selector: 'gf-confirmation-dialog',
standalone: true,
styleUrls: ['./confirmation-dialog.scss'],
templateUrl: './confirmation-dialog.html'
})

@ -16,7 +16,6 @@ import { MatInputModule } from '@angular/material/input';
MatInputModule
],
selector: 'gf-prompt-dialog',
standalone: true,
templateUrl: './prompt-dialog.html'
})
export class GfPromptDialogComponent {

@ -1,7 +1,8 @@
import { Directive, EventEmitter, HostListener, Output } from '@angular/core';
@Directive({
selector: '[gfFileDrop]'
selector: '[gfFileDrop]',
standalone: false
})
export class FileDropDirective {
@Output() filesDropped = new EventEmitter<FileList>();

@ -12,7 +12,8 @@ import { takeUntil } from 'rxjs/operators';
host: { class: 'page has-tabs' },
selector: 'gf-about-page',
styleUrls: ['./about-page.scss'],
templateUrl: './about-page.html'
templateUrl: './about-page.html',
standalone: false
})
export class AboutPageComponent implements OnDestroy, OnInit {
public deviceType: string;

@ -4,7 +4,8 @@ import { Subject } from 'rxjs';
@Component({
selector: 'gf-changelog-page',
styleUrls: ['./changelog-page.scss'],
templateUrl: './changelog-page.html'
templateUrl: './changelog-page.html',
standalone: false
})
export class ChangelogPageComponent implements OnDestroy {
private unsubscribeSubject = new Subject<void>();

@ -4,7 +4,8 @@ import { Subject } from 'rxjs';
@Component({
selector: 'gf-license-page',
styleUrls: ['./license-page.scss'],
templateUrl: './license-page.html'
templateUrl: './license-page.html',
standalone: false
})
export class LicensePageComponent implements OnDestroy {
private unsubscribeSubject = new Subject<void>();

@ -6,7 +6,8 @@ const ossFriends = require('../../../../assets/oss-friends.json');
@Component({
selector: 'gf-oss-friends-page',
styleUrls: ['./oss-friends-page.scss'],
templateUrl: './oss-friends-page.html'
templateUrl: './oss-friends-page.html',
standalone: false
})
export class OpenSourceSoftwareFriendsPageComponent implements OnDestroy {
public ossFriends = ossFriends.data;

@ -10,7 +10,8 @@ import { takeUntil } from 'rxjs/operators';
@Component({
selector: 'gf-about-overview-page',
styleUrls: ['./about-overview-page.scss'],
templateUrl: './about-overview-page.html'
templateUrl: './about-overview-page.html',
standalone: false
})
export class AboutOverviewPageComponent implements OnDestroy, OnInit {
public hasPermissionForStatistics: boolean;

@ -4,7 +4,8 @@ import { Subject } from 'rxjs';
@Component({
selector: 'gf-privacy-policy-page',
styleUrls: ['./privacy-policy-page.scss'],
templateUrl: './privacy-policy-page.html'
templateUrl: './privacy-policy-page.html',
standalone: false
})
export class PrivacyPolicyPageComponent implements OnDestroy {
private unsubscribeSubject = new Subject<void>();

@ -25,7 +25,8 @@ import { TransferBalanceDialog } from './transfer-balance/transfer-balance-dialo
host: { class: 'has-fab page' },
selector: 'gf-accounts-page',
styleUrls: ['./accounts-page.scss'],
templateUrl: './accounts-page.html'
templateUrl: './accounts-page.html',
standalone: false
})
export class AccountsPageComponent implements OnDestroy, OnInit {
public accounts: AccountModel[];

@ -28,7 +28,8 @@ import { CreateOrUpdateAccountDialogParams } from './interfaces/interfaces';
selector: 'gf-create-or-update-account-dialog',
changeDetection: ChangeDetectionStrategy.OnPush,
styleUrls: ['./create-or-update-account-dialog.scss'],
templateUrl: 'create-or-update-account-dialog.html'
templateUrl: 'create-or-update-account-dialog.html',
standalone: false
})
export class CreateOrUpdateAccountDialog implements OnDestroy {
public accountForm: FormGroup;

@ -24,7 +24,8 @@ import { TransferBalanceDialogParams } from './interfaces/interfaces';
selector: 'gf-transfer-balance-dialog',
changeDetection: ChangeDetectionStrategy.OnPush,
styleUrls: ['./transfer-balance-dialog.scss'],
templateUrl: 'transfer-balance-dialog.html'
templateUrl: 'transfer-balance-dialog.html',
standalone: false
})
export class TransferBalanceDialog implements OnDestroy {
public accounts: Account[] = [];

@ -8,7 +8,8 @@ import { Subject } from 'rxjs';
host: { class: 'page has-tabs' },
selector: 'gf-admin-page',
styleUrls: ['./admin-page.scss'],
templateUrl: './admin-page.html'
templateUrl: './admin-page.html',
standalone: false
})
export class AdminPageComponent implements OnDestroy, OnInit {
public deviceType: string;

@ -21,7 +21,6 @@ import { map, Observable, Subject, takeUntil } from 'rxjs';
host: { class: 'page' },
imports: [CommonModule],
selector: 'gf-api-page',
standalone: true,
styleUrls: ['./api-page.scss'],
templateUrl: './api-page.html'
})

@ -12,7 +12,8 @@ import { takeUntil } from 'rxjs/operators';
@Component({
selector: 'gf-auth-page',
templateUrl: './auth-page.html',
styleUrls: ['./auth-page.scss']
styleUrls: ['./auth-page.scss'],
standalone: false
})
export class AuthPageComponent implements OnDestroy, OnInit {
private unsubscribeSubject = new Subject<void>();

@ -6,7 +6,6 @@ import { RouterModule } from '@angular/router';
host: { class: 'page' },
imports: [MatButtonModule, RouterModule],
selector: 'gf-hallo-ghostfolio-page',
standalone: true,
templateUrl: './hallo-ghostfolio-page.html'
})
export class HalloGhostfolioPageComponent {

@ -6,7 +6,6 @@ import { RouterModule } from '@angular/router';
host: { class: 'page' },
imports: [MatButtonModule, RouterModule],
selector: 'gf-hello-ghostfolio-page',
standalone: true,
templateUrl: './hello-ghostfolio-page.html'
})
export class HelloGhostfolioPageComponent {

@ -6,7 +6,6 @@ import { RouterModule } from '@angular/router';
host: { class: 'page' },
imports: [MatButtonModule, RouterModule],
selector: 'gf-first-months-in-open-source-page',
standalone: true,
templateUrl: './first-months-in-open-source-page.html'
})
export class FirstMonthsInOpenSourcePageComponent {

@ -6,7 +6,6 @@ import { RouterModule } from '@angular/router';
host: { class: 'page' },
imports: [MatButtonModule, RouterModule],
selector: 'gf-ghostfolio-meets-internet-identity-page',
standalone: true,
templateUrl: './ghostfolio-meets-internet-identity-page.html'
})
export class GhostfolioMeetsInternetIdentityPageComponent {}

@ -6,7 +6,6 @@ import { RouterModule } from '@angular/router';
host: { class: 'page' },
imports: [MatButtonModule, RouterModule],
selector: 'gf-how-do-i-get-my-finances-in-order-page',
standalone: true,
templateUrl: './how-do-i-get-my-finances-in-order-page.html'
})
export class HowDoIGetMyFinancesInOrderPageComponent {

@ -6,7 +6,6 @@ import { RouterModule } from '@angular/router';
host: { class: 'page' },
imports: [MatButtonModule, RouterModule],
selector: 'gf-500-stars-on-github-page',
standalone: true,
templateUrl: './500-stars-on-github-page.html'
})
export class FiveHundredStarsOnGitHubPageComponent {

@ -6,7 +6,6 @@ import { RouterModule } from '@angular/router';
host: { class: 'page' },
imports: [MatButtonModule, RouterModule],
selector: 'gf-hacktoberfest-2022-page',
standalone: true,
templateUrl: './hacktoberfest-2022-page.html'
})
export class Hacktoberfest2022PageComponent {}

@ -8,7 +8,6 @@ import { RouterModule } from '@angular/router';
host: { class: 'page' },
imports: [GfPremiumIndicatorComponent, MatButtonModule, RouterModule],
selector: 'gf-black-friday-2022-page',
standalone: true,
templateUrl: './black-friday-2022-page.html'
})
export class BlackFriday2022PageComponent {

@ -6,7 +6,6 @@ import { RouterModule } from '@angular/router';
host: { class: 'page' },
imports: [MatButtonModule, RouterModule],
selector: 'gf-the-importance-of-tracking-your-personal-finances-page',
standalone: true,
templateUrl: './the-importance-of-tracking-your-personal-finances-page.html'
})
export class TheImportanceOfTrackingYourPersonalFinancesPageComponent {}

@ -6,7 +6,6 @@ import { RouterModule } from '@angular/router';
host: { class: 'page' },
imports: [MatButtonModule, RouterModule],
selector: 'gf-ghostfolio-auf-sackgeld-vorgestellt-page',
standalone: true,
templateUrl: './ghostfolio-auf-sackgeld-vorgestellt-page.html'
})
export class GhostfolioAufSackgeldVorgestelltPageComponent {}

@ -6,7 +6,6 @@ import { RouterModule } from '@angular/router';
host: { class: 'page' },
imports: [MatButtonModule, RouterModule],
selector: 'gf-ghostfolio-meets-umbrel-page',
standalone: true,
templateUrl: './ghostfolio-meets-umbrel-page.html'
})
export class GhostfolioMeetsUmbrelPageComponent {}

@ -6,7 +6,6 @@ import { RouterModule } from '@angular/router';
host: { class: 'page' },
imports: [MatButtonModule, RouterModule],
selector: 'gf-1000-stars-on-github-page',
standalone: true,
templateUrl: './1000-stars-on-github-page.html'
})
export class ThousandStarsOnGitHubPageComponent {

@ -6,7 +6,6 @@ import { RouterModule } from '@angular/router';
host: { class: 'page' },
imports: [MatButtonModule, RouterModule],
selector: 'gf-unlock-your-financial-potential-with-ghostfolio-page',
standalone: true,
templateUrl: './unlock-your-financial-potential-with-ghostfolio-page.html'
})
export class UnlockYourFinancialPotentialWithGhostfolioPageComponent {

@ -6,7 +6,6 @@ import { RouterModule } from '@angular/router';
host: { class: 'page' },
imports: [MatButtonModule, RouterModule],
selector: 'gf-exploring-the-path-to-fire-page-page',
standalone: true,
templateUrl: './exploring-the-path-to-fire-page.html'
})
export class ExploringThePathToFirePageComponent {

@ -6,7 +6,6 @@ import { RouterModule } from '@angular/router';
host: { class: 'page' },
imports: [MatButtonModule, RouterModule],
selector: 'gf-ghostfolio-joins-oss-friends-page',
standalone: true,
templateUrl: './ghostfolio-joins-oss-friends-page.html'
})
export class GhostfolioJoinsOssFriendsPageComponent {

@ -6,7 +6,6 @@ import { RouterModule } from '@angular/router';
host: { class: 'page' },
imports: [MatButtonModule, RouterModule],
selector: 'gf-ghostfolio-2-page',
standalone: true,
templateUrl: './ghostfolio-2-page.html'
})
export class Ghostfolio2PageComponent {

@ -6,7 +6,6 @@ import { RouterModule } from '@angular/router';
host: { class: 'page' },
imports: [MatButtonModule, RouterModule],
selector: 'gf-hacktoberfest-2023-page',
standalone: true,
templateUrl: './hacktoberfest-2023-page.html'
})
export class Hacktoberfest2023PageComponent {

@ -8,7 +8,6 @@ import { RouterModule } from '@angular/router';
host: { class: 'page' },
imports: [GfPremiumIndicatorComponent, MatButtonModule, RouterModule],
selector: 'gf-black-week-2023-page',
standalone: true,
templateUrl: './black-week-2023-page.html'
})
export class BlackWeek2023PageComponent {

@ -6,7 +6,6 @@ import { RouterModule } from '@angular/router';
host: { class: 'page' },
imports: [MatButtonModule, RouterModule],
selector: 'gf-hacktoberfest-2023-debriefing-page',
standalone: true,
templateUrl: './hacktoberfest-2023-debriefing-page.html'
})
export class Hacktoberfest2023DebriefingPageComponent {

@ -6,7 +6,6 @@ import { RouterModule } from '@angular/router';
host: { class: 'page' },
imports: [MatButtonModule, RouterModule],
selector: 'gf-hacktoberfest-2024-page',
standalone: true,
templateUrl: './hacktoberfest-2024-page.html'
})
export class Hacktoberfest2024PageComponent {

@ -8,7 +8,6 @@ import { RouterModule } from '@angular/router';
host: { class: 'page' },
imports: [GfPremiumIndicatorComponent, MatButtonModule, RouterModule],
selector: 'gf-black-weeks-2024-page',
standalone: true,
templateUrl: './black-weeks-2024-page.html'
})
export class BlackWeeks2024PageComponent {

@ -8,7 +8,8 @@ import { Subject } from 'rxjs';
host: { class: 'page' },
selector: 'gf-blog-page',
styleUrls: ['./blog-page.scss'],
templateUrl: './blog-page.html'
templateUrl: './blog-page.html',
standalone: false
})
export class BlogPageComponent implements OnDestroy {
public hasPermissionForSubscription: boolean;

@ -10,7 +10,8 @@ import { Subject } from 'rxjs';
host: { class: 'page has-tabs' },
selector: 'gf-faq-page',
styleUrls: ['./faq-page.scss'],
templateUrl: './faq-page.html'
templateUrl: './faq-page.html',
standalone: false
})
export class FaqPageComponent implements OnDestroy, OnInit {
public deviceType: string;

@ -8,7 +8,8 @@ import { Subject, takeUntil } from 'rxjs';
host: { class: 'page' },
selector: 'gf-faq-overview-page',
styleUrls: ['./faq-overview-page.scss'],
templateUrl: './faq-overview-page.html'
templateUrl: './faq-overview-page.html',
standalone: false
})
export class FaqOverviewPageComponent implements OnDestroy {
public routerLinkFeatures = ['/' + $localize`:snake-case:features`];

@ -8,7 +8,8 @@ import { Subject, takeUntil } from 'rxjs';
host: { class: 'page' },
selector: 'gf-saas-page',
styleUrls: ['./saas-page.scss'],
templateUrl: './saas-page.html'
templateUrl: './saas-page.html',
standalone: false
})
export class SaasPageComponent implements OnDestroy {
public routerLinkMarkets = ['/' + $localize`:snake-case:markets`];

@ -5,7 +5,8 @@ import { Subject } from 'rxjs';
host: { class: 'page' },
selector: 'gf-self-hosting-page',
styleUrls: ['./self-hosting-page.scss'],
templateUrl: './self-hosting-page.html'
templateUrl: './self-hosting-page.html',
standalone: false
})
export class SelfHostingPageComponent implements OnDestroy {
private unsubscribeSubject = new Subject<void>();

@ -19,7 +19,6 @@ import { Subject, takeUntil } from 'rxjs';
RouterModule
],
selector: 'gf-features-page',
standalone: true,
styleUrls: ['./features-page.scss'],
templateUrl: './features-page.html'
})

@ -11,7 +11,8 @@ import { takeUntil } from 'rxjs/operators';
host: { class: 'page has-tabs' },
selector: 'gf-home-page',
styleUrls: ['./home-page.scss'],
templateUrl: './home-page.html'
templateUrl: './home-page.html',
standalone: false
})
export class HomePageComponent implements OnDestroy, OnInit {
public deviceType: string;

@ -11,7 +11,8 @@ import { Subject } from 'rxjs';
host: { class: 'page' },
selector: 'gf-landing-page',
styleUrls: ['./landing-page.scss'],
templateUrl: './landing-page.html'
templateUrl: './landing-page.html',
standalone: false
})
export class LandingPageComponent implements OnDestroy, OnInit {
public countriesOfSubscribersMap: {

@ -5,7 +5,8 @@ import { Subject } from 'rxjs';
host: { class: 'page' },
selector: 'gf-markets-page',
styleUrls: ['./markets-page.scss'],
templateUrl: './markets-page.html'
templateUrl: './markets-page.html',
standalone: false
})
export class MarketsPageComponent implements OnDestroy {
private unsubscribeSubject = new Subject<void>();

@ -9,7 +9,8 @@ import { Subject, takeUntil } from 'rxjs';
host: { class: 'page' },
selector: 'gf-open-page',
styleUrls: ['./open-page.scss'],
templateUrl: './open-page.html'
templateUrl: './open-page.html',
standalone: false
})
export class OpenPageComponent implements OnDestroy, OnInit {
public statistics: Statistics;

@ -29,7 +29,8 @@ import { ImportActivitiesDialogParams } from './import-activities-dialog/interfa
host: { class: 'has-fab' },
selector: 'gf-activities-page',
styleUrls: ['./activities-page.scss'],
templateUrl: './activities-page.html'
templateUrl: './activities-page.html',
standalone: false
})
export class ActivitiesPageComponent implements OnDestroy, OnInit {
public dataSource: MatTableDataSource<Activity>;

@ -31,7 +31,8 @@ import { CreateOrUpdateActivityDialogParams } from './interfaces/interfaces';
selector: 'gf-create-or-update-activity-dialog',
changeDetection: ChangeDetectionStrategy.OnPush,
styleUrls: ['./create-or-update-activity-dialog.scss'],
templateUrl: 'create-or-update-activity-dialog.html'
templateUrl: 'create-or-update-activity-dialog.html',
standalone: false
})
export class CreateOrUpdateActivityDialog implements OnDestroy {
@ViewChild('symbolAutocomplete') symbolAutocomplete;
@ -215,12 +216,12 @@ export class CreateOrUpdateActivityDialog implements OnDestroy {
this.total =
this.activityForm.get('quantity').value *
this.activityForm.get('unitPrice').value +
this.activityForm.get('fee').value ?? 0;
(this.activityForm.get('fee').value ?? 0);
} else {
this.total =
this.activityForm.get('quantity').value *
this.activityForm.get('unitPrice').value -
this.activityForm.get('fee').value ?? 0;
(this.activityForm.get('fee').value ?? 0);
}
this.changeDetectorRef.markForCheck();

@ -33,7 +33,8 @@ import { ImportActivitiesDialogParams } from './interfaces/interfaces';
changeDetection: ChangeDetectionStrategy.OnPush,
selector: 'gf-import-activities-dialog',
styleUrls: ['./import-activities-dialog.scss'],
templateUrl: 'import-activities-dialog.html'
templateUrl: 'import-activities-dialog.html',
standalone: false
})
export class ImportActivitiesDialog implements OnDestroy {
public accounts: CreateAccountDto[] = [];

@ -28,7 +28,8 @@ import { takeUntil } from 'rxjs/operators';
@Component({
selector: 'gf-allocations-page',
styleUrls: ['./allocations-page.scss'],
templateUrl: './allocations-page.html'
templateUrl: './allocations-page.html',
standalone: false
})
export class AllocationsPageComponent implements OnDestroy, OnInit {
public accounts: {

@ -24,7 +24,8 @@ import { takeUntil } from 'rxjs/operators';
@Component({
selector: 'gf-analysis-page',
styleUrls: ['./analysis-page.scss'],
templateUrl: './analysis-page.html'
templateUrl: './analysis-page.html',
standalone: false
})
export class AnalysisPageComponent implements OnDestroy, OnInit {
public benchmark: Partial<SymbolProfile>;

@ -13,7 +13,8 @@ import { takeUntil } from 'rxjs/operators';
@Component({
selector: 'gf-fire-page',
styleUrls: ['./fire-page.scss'],
templateUrl: './fire-page.html'
templateUrl: './fire-page.html',
standalone: false
})
export class FirePageComponent implements OnDestroy, OnInit {
public deviceType: string;

@ -10,7 +10,8 @@ import { takeUntil } from 'rxjs/operators';
host: { class: 'page has-tabs' },
selector: 'gf-portfolio-page',
styleUrls: ['./portfolio-page.scss'],
templateUrl: './portfolio-page.html'
templateUrl: './portfolio-page.html',
standalone: false
})
export class PortfolioPageComponent implements OnDestroy, OnInit {
public deviceType: string;

@ -15,7 +15,8 @@ import { Subject, takeUntil } from 'rxjs';
@Component({
selector: 'gf-x-ray-page',
styleUrl: './x-ray-page.component.scss',
templateUrl: './x-ray-page.component.html'
templateUrl: './x-ray-page.component.html',
standalone: false
})
export class XRayPageComponent {
public accountClusterRiskRules: PortfolioReportRule[];

@ -15,7 +15,8 @@ import { catchError, switchMap, takeUntil } from 'rxjs/operators';
host: { class: 'page' },
selector: 'gf-pricing-page',
styleUrls: ['./pricing-page.scss'],
templateUrl: './pricing-page.html'
templateUrl: './pricing-page.html',
standalone: false
})
export class PricingPageComponent implements OnDestroy, OnInit {
public baseCurrency: string;

@ -20,7 +20,8 @@ import { catchError, takeUntil } from 'rxjs/operators';
host: { class: 'page' },
selector: 'gf-public-page',
styleUrls: ['./public-page.scss'],
templateUrl: './public-page.html'
templateUrl: './public-page.html',
standalone: false
})
export class PublicPageComponent implements OnInit {
public continents: {

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save