Migrate UI components to standalone (#3302)
This commit is contained in:
parent
b6ad362850
commit
bed9ae916c
@ -1,4 +1,4 @@
|
|||||||
import { GfLogoModule } from '@ghostfolio/ui/logo';
|
import { GfLogoComponent } from '@ghostfolio/ui/logo';
|
||||||
|
|
||||||
import { Platform } from '@angular/cdk/platform';
|
import { Platform } from '@angular/cdk/platform';
|
||||||
import { HttpClientModule } from '@angular/common/http';
|
import { HttpClientModule } from '@angular/common/http';
|
||||||
@ -43,7 +43,7 @@ export function NgxStripeFactory(): string {
|
|||||||
BrowserAnimationsModule,
|
BrowserAnimationsModule,
|
||||||
BrowserModule,
|
BrowserModule,
|
||||||
GfHeaderModule,
|
GfHeaderModule,
|
||||||
GfLogoModule,
|
GfLogoComponent,
|
||||||
GfSubscriptionInterstitialDialogModule,
|
GfSubscriptionInterstitialDialogModule,
|
||||||
HttpClientModule,
|
HttpClientModule,
|
||||||
MarkdownModule.forRoot(),
|
MarkdownModule.forRoot(),
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { GfDialogFooterModule } from '@ghostfolio/client/components/dialog-footer/dialog-footer.module';
|
import { GfDialogFooterModule } from '@ghostfolio/client/components/dialog-footer/dialog-footer.module';
|
||||||
import { GfDialogHeaderModule } from '@ghostfolio/client/components/dialog-header/dialog-header.module';
|
import { GfDialogHeaderModule } from '@ghostfolio/client/components/dialog-header/dialog-header.module';
|
||||||
import { GfInvestmentChartModule } from '@ghostfolio/client/components/investment-chart/investment-chart.module';
|
import { GfInvestmentChartModule } from '@ghostfolio/client/components/investment-chart/investment-chart.module';
|
||||||
import { GfAccountBalancesModule } from '@ghostfolio/ui/account-balances';
|
import { GfAccountBalancesComponent } from '@ghostfolio/ui/account-balances';
|
||||||
import { GfActivitiesTableComponent } from '@ghostfolio/ui/activities-table';
|
import { GfActivitiesTableComponent } from '@ghostfolio/ui/activities-table';
|
||||||
import { GfHoldingsTableComponent } from '@ghostfolio/ui/holdings-table';
|
import { GfHoldingsTableComponent } from '@ghostfolio/ui/holdings-table';
|
||||||
import { GfValueComponent } from '@ghostfolio/ui/value';
|
import { GfValueComponent } from '@ghostfolio/ui/value';
|
||||||
@ -19,7 +19,7 @@ import { AccountDetailDialog } from './account-detail-dialog.component';
|
|||||||
declarations: [AccountDetailDialog],
|
declarations: [AccountDetailDialog],
|
||||||
imports: [
|
imports: [
|
||||||
CommonModule,
|
CommonModule,
|
||||||
GfAccountBalancesModule,
|
GfAccountBalancesComponent,
|
||||||
GfActivitiesTableComponent,
|
GfActivitiesTableComponent,
|
||||||
GfDialogFooterModule,
|
GfDialogFooterModule,
|
||||||
GfDialogHeaderModule,
|
GfDialogHeaderModule,
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { GfLineChartModule } from '@ghostfolio/ui/line-chart';
|
import { GfLineChartComponent } from '@ghostfolio/ui/line-chart';
|
||||||
|
|
||||||
import { CommonModule } from '@angular/common';
|
import { CommonModule } from '@angular/common';
|
||||||
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
||||||
@ -9,7 +9,7 @@ import { GfMarketDataDetailDialogModule } from './market-data-detail-dialog/mark
|
|||||||
@NgModule({
|
@NgModule({
|
||||||
declarations: [AdminMarketDataDetailComponent],
|
declarations: [AdminMarketDataDetailComponent],
|
||||||
exports: [AdminMarketDataDetailComponent],
|
exports: [AdminMarketDataDetailComponent],
|
||||||
imports: [CommonModule, GfLineChartModule, GfMarketDataDetailDialogModule],
|
imports: [CommonModule, GfLineChartComponent, GfMarketDataDetailDialogModule],
|
||||||
schemas: [CUSTOM_ELEMENTS_SCHEMA]
|
schemas: [CUSTOM_ELEMENTS_SCHEMA]
|
||||||
})
|
})
|
||||||
export class GfAdminMarketDataDetailModule {}
|
export class GfAdminMarketDataDetailModule {}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module';
|
import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module';
|
||||||
import { GfActivitiesFilterModule } from '@ghostfolio/ui/activities-filter';
|
import { GfActivitiesFilterComponent } from '@ghostfolio/ui/activities-filter';
|
||||||
|
|
||||||
import { CommonModule } from '@angular/common';
|
import { CommonModule } from '@angular/common';
|
||||||
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
||||||
@ -20,7 +20,7 @@ import { GfCreateAssetProfileDialogModule } from './create-asset-profile-dialog/
|
|||||||
declarations: [AdminMarketDataComponent],
|
declarations: [AdminMarketDataComponent],
|
||||||
imports: [
|
imports: [
|
||||||
CommonModule,
|
CommonModule,
|
||||||
GfActivitiesFilterModule,
|
GfActivitiesFilterComponent,
|
||||||
GfAssetProfileDialogModule,
|
GfAssetProfileDialogModule,
|
||||||
GfCreateAssetProfileDialogModule,
|
GfCreateAssetProfileDialogModule,
|
||||||
GfSymbolModule,
|
GfSymbolModule,
|
||||||
|
@ -2,7 +2,7 @@ import { GfAdminMarketDataDetailModule } from '@ghostfolio/client/components/adm
|
|||||||
import { AdminMarketDataService } from '@ghostfolio/client/components/admin-market-data/admin-market-data.service';
|
import { AdminMarketDataService } from '@ghostfolio/client/components/admin-market-data/admin-market-data.service';
|
||||||
import { GfAssetProfileIconComponent } from '@ghostfolio/client/components/asset-profile-icon/asset-profile-icon.component';
|
import { GfAssetProfileIconComponent } from '@ghostfolio/client/components/asset-profile-icon/asset-profile-icon.component';
|
||||||
import { GfCurrencySelectorComponent } from '@ghostfolio/ui/currency-selector';
|
import { GfCurrencySelectorComponent } from '@ghostfolio/ui/currency-selector';
|
||||||
import { GfPortfolioProportionChartModule } from '@ghostfolio/ui/portfolio-proportion-chart';
|
import { GfPortfolioProportionChartComponent } from '@ghostfolio/ui/portfolio-proportion-chart';
|
||||||
import { GfValueComponent } from '@ghostfolio/ui/value';
|
import { GfValueComponent } from '@ghostfolio/ui/value';
|
||||||
|
|
||||||
import { TextFieldModule } from '@angular/cdk/text-field';
|
import { TextFieldModule } from '@angular/cdk/text-field';
|
||||||
@ -27,7 +27,7 @@ import { AssetProfileDialog } from './asset-profile-dialog.component';
|
|||||||
GfAdminMarketDataDetailModule,
|
GfAdminMarketDataDetailModule,
|
||||||
GfAssetProfileIconComponent,
|
GfAssetProfileIconComponent,
|
||||||
GfCurrencySelectorComponent,
|
GfCurrencySelectorComponent,
|
||||||
GfPortfolioProportionChartModule,
|
GfPortfolioProportionChartComponent,
|
||||||
GfValueComponent,
|
GfValueComponent,
|
||||||
MatButtonModule,
|
MatButtonModule,
|
||||||
MatCheckboxModule,
|
MatCheckboxModule,
|
||||||
|
@ -12,7 +12,7 @@ import { UserService } from '@ghostfolio/client/services/user/user.service';
|
|||||||
import { Filter, InfoItem, User } from '@ghostfolio/common/interfaces';
|
import { Filter, InfoItem, User } from '@ghostfolio/common/interfaces';
|
||||||
import { hasPermission, permissions } from '@ghostfolio/common/permissions';
|
import { hasPermission, permissions } from '@ghostfolio/common/permissions';
|
||||||
import { DateRange } from '@ghostfolio/common/types';
|
import { DateRange } from '@ghostfolio/common/types';
|
||||||
import { AssistantComponent } from '@ghostfolio/ui/assistant/assistant.component';
|
import { GfAssistantComponent } from '@ghostfolio/ui/assistant/assistant.component';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
ChangeDetectionStrategy,
|
ChangeDetectionStrategy,
|
||||||
@ -62,7 +62,7 @@ export class HeaderComponent implements OnChanges {
|
|||||||
|
|
||||||
@Output() signOut = new EventEmitter<void>();
|
@Output() signOut = new EventEmitter<void>();
|
||||||
|
|
||||||
@ViewChild('assistant') assistantElement: AssistantComponent;
|
@ViewChild('assistant') assistantElement: GfAssistantComponent;
|
||||||
@ViewChild('assistantTrigger') assistentMenuTriggerElement: MatMenuTrigger;
|
@ViewChild('assistantTrigger') assistentMenuTriggerElement: MatMenuTrigger;
|
||||||
|
|
||||||
public hasPermissionForSocialLogin: boolean;
|
public hasPermissionForSocialLogin: boolean;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { LoginWithAccessTokenDialogModule } from '@ghostfolio/client/components/login-with-access-token-dialog/login-with-access-token-dialog.module';
|
import { LoginWithAccessTokenDialogModule } from '@ghostfolio/client/components/login-with-access-token-dialog/login-with-access-token-dialog.module';
|
||||||
import { GfAssistantModule } from '@ghostfolio/ui/assistant';
|
import { GfAssistantComponent } from '@ghostfolio/ui/assistant';
|
||||||
import { GfLogoModule } from '@ghostfolio/ui/logo';
|
import { GfLogoComponent } from '@ghostfolio/ui/logo';
|
||||||
import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator';
|
import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator';
|
||||||
|
|
||||||
import { CommonModule } from '@angular/common';
|
import { CommonModule } from '@angular/common';
|
||||||
@ -17,8 +17,8 @@ import { HeaderComponent } from './header.component';
|
|||||||
exports: [HeaderComponent],
|
exports: [HeaderComponent],
|
||||||
imports: [
|
imports: [
|
||||||
CommonModule,
|
CommonModule,
|
||||||
GfAssistantModule,
|
GfAssistantComponent,
|
||||||
GfLogoModule,
|
GfLogoComponent,
|
||||||
GfPremiumIndicatorComponent,
|
GfPremiumIndicatorComponent,
|
||||||
LoginWithAccessTokenDialogModule,
|
LoginWithAccessTokenDialogModule,
|
||||||
MatButtonModule,
|
MatButtonModule,
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { GfFearAndGreedIndexModule } from '@ghostfolio/client/components/fear-and-greed-index/fear-and-greed-index.module';
|
import { GfFearAndGreedIndexModule } from '@ghostfolio/client/components/fear-and-greed-index/fear-and-greed-index.module';
|
||||||
import { GfBenchmarkModule } from '@ghostfolio/ui/benchmark/benchmark.module';
|
import { GfBenchmarkComponent } from '@ghostfolio/ui/benchmark';
|
||||||
import { GfLineChartModule } from '@ghostfolio/ui/line-chart';
|
import { GfLineChartComponent } from '@ghostfolio/ui/line-chart';
|
||||||
|
|
||||||
import { CommonModule } from '@angular/common';
|
import { CommonModule } from '@angular/common';
|
||||||
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
||||||
@ -13,9 +13,9 @@ import { HomeMarketComponent } from './home-market.component';
|
|||||||
exports: [HomeMarketComponent],
|
exports: [HomeMarketComponent],
|
||||||
imports: [
|
imports: [
|
||||||
CommonModule,
|
CommonModule,
|
||||||
GfBenchmarkModule,
|
GfBenchmarkComponent,
|
||||||
GfFearAndGreedIndexModule,
|
GfFearAndGreedIndexModule,
|
||||||
GfLineChartModule,
|
GfLineChartComponent,
|
||||||
NgxSkeletonLoaderModule
|
NgxSkeletonLoaderModule
|
||||||
],
|
],
|
||||||
schemas: [CUSTOM_ELEMENTS_SCHEMA]
|
schemas: [CUSTOM_ELEMENTS_SCHEMA]
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { GfPortfolioPerformanceModule } from '@ghostfolio/client/components/portfolio-performance/portfolio-performance.module';
|
import { GfPortfolioPerformanceModule } from '@ghostfolio/client/components/portfolio-performance/portfolio-performance.module';
|
||||||
import { GfLineChartModule } from '@ghostfolio/ui/line-chart';
|
import { GfLineChartComponent } from '@ghostfolio/ui/line-chart';
|
||||||
import { GfNoTransactionsInfoComponent } from '@ghostfolio/ui/no-transactions-info';
|
import { GfNoTransactionsInfoComponent } from '@ghostfolio/ui/no-transactions-info';
|
||||||
|
|
||||||
import { CommonModule } from '@angular/common';
|
import { CommonModule } from '@angular/common';
|
||||||
@ -13,7 +13,7 @@ import { HomeOverviewComponent } from './home-overview.component';
|
|||||||
declarations: [HomeOverviewComponent],
|
declarations: [HomeOverviewComponent],
|
||||||
imports: [
|
imports: [
|
||||||
CommonModule,
|
CommonModule,
|
||||||
GfLineChartModule,
|
GfLineChartComponent,
|
||||||
GfNoTransactionsInfoComponent,
|
GfNoTransactionsInfoComponent,
|
||||||
GfPortfolioPerformanceModule,
|
GfPortfolioPerformanceModule,
|
||||||
MatButtonModule,
|
MatButtonModule,
|
||||||
|
@ -2,9 +2,9 @@ import { GfAccountsTableModule } from '@ghostfolio/client/components/accounts-ta
|
|||||||
import { GfDialogFooterModule } from '@ghostfolio/client/components/dialog-footer/dialog-footer.module';
|
import { GfDialogFooterModule } from '@ghostfolio/client/components/dialog-footer/dialog-footer.module';
|
||||||
import { GfDialogHeaderModule } from '@ghostfolio/client/components/dialog-header/dialog-header.module';
|
import { GfDialogHeaderModule } from '@ghostfolio/client/components/dialog-header/dialog-header.module';
|
||||||
import { GfActivitiesTableComponent } from '@ghostfolio/ui/activities-table';
|
import { GfActivitiesTableComponent } from '@ghostfolio/ui/activities-table';
|
||||||
import { GfDataProviderCreditsModule } from '@ghostfolio/ui/data-provider-credits/data-provider-credits.module';
|
import { GfDataProviderCreditsComponent } from '@ghostfolio/ui/data-provider-credits';
|
||||||
import { GfLineChartModule } from '@ghostfolio/ui/line-chart';
|
import { GfLineChartComponent } from '@ghostfolio/ui/line-chart';
|
||||||
import { GfPortfolioProportionChartModule } from '@ghostfolio/ui/portfolio-proportion-chart';
|
import { GfPortfolioProportionChartComponent } from '@ghostfolio/ui/portfolio-proportion-chart';
|
||||||
import { GfValueComponent } from '@ghostfolio/ui/value';
|
import { GfValueComponent } from '@ghostfolio/ui/value';
|
||||||
|
|
||||||
import { CommonModule } from '@angular/common';
|
import { CommonModule } from '@angular/common';
|
||||||
@ -23,11 +23,11 @@ import { PositionDetailDialog } from './position-detail-dialog.component';
|
|||||||
CommonModule,
|
CommonModule,
|
||||||
GfAccountsTableModule,
|
GfAccountsTableModule,
|
||||||
GfActivitiesTableComponent,
|
GfActivitiesTableComponent,
|
||||||
GfDataProviderCreditsModule,
|
GfDataProviderCreditsComponent,
|
||||||
GfDialogFooterModule,
|
GfDialogFooterModule,
|
||||||
GfDialogHeaderModule,
|
GfDialogHeaderModule,
|
||||||
GfLineChartModule,
|
GfLineChartComponent,
|
||||||
GfPortfolioProportionChartModule,
|
GfPortfolioProportionChartComponent,
|
||||||
GfValueComponent,
|
GfValueComponent,
|
||||||
MatButtonModule,
|
MatButtonModule,
|
||||||
MatChipsModule,
|
MatChipsModule,
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { GfMembershipCardModule } from '@ghostfolio/ui/membership-card';
|
import { GfMembershipCardComponent } from '@ghostfolio/ui/membership-card';
|
||||||
import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator';
|
import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator';
|
||||||
import { GfValueComponent } from '@ghostfolio/ui/value';
|
import { GfValueComponent } from '@ghostfolio/ui/value';
|
||||||
|
|
||||||
@ -15,7 +15,7 @@ import { UserAccountMembershipComponent } from './user-account-membership.compon
|
|||||||
exports: [UserAccountMembershipComponent],
|
exports: [UserAccountMembershipComponent],
|
||||||
imports: [
|
imports: [
|
||||||
CommonModule,
|
CommonModule,
|
||||||
GfMembershipCardModule,
|
GfMembershipCardComponent,
|
||||||
GfPremiumIndicatorComponent,
|
GfPremiumIndicatorComponent,
|
||||||
GfValueComponent,
|
GfValueComponent,
|
||||||
MatButtonModule,
|
MatButtonModule,
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { GfWorldMapChartModule } from '@ghostfolio/client/components/world-map-chart/world-map-chart.module';
|
import { GfWorldMapChartModule } from '@ghostfolio/client/components/world-map-chart/world-map-chart.module';
|
||||||
import { GfCarouselModule } from '@ghostfolio/ui/carousel';
|
import { GfCarouselComponent } from '@ghostfolio/ui/carousel';
|
||||||
import { GfLogoModule } from '@ghostfolio/ui/logo';
|
import { GfLogoComponent } from '@ghostfolio/ui/logo';
|
||||||
import { GfValueComponent } from '@ghostfolio/ui/value';
|
import { GfValueComponent } from '@ghostfolio/ui/value';
|
||||||
|
|
||||||
import { CommonModule } from '@angular/common';
|
import { CommonModule } from '@angular/common';
|
||||||
@ -16,8 +16,8 @@ import { LandingPageComponent } from './landing-page.component';
|
|||||||
declarations: [LandingPageComponent],
|
declarations: [LandingPageComponent],
|
||||||
imports: [
|
imports: [
|
||||||
CommonModule,
|
CommonModule,
|
||||||
GfCarouselModule,
|
GfCarouselComponent,
|
||||||
GfLogoModule,
|
GfLogoComponent,
|
||||||
GfValueComponent,
|
GfValueComponent,
|
||||||
GfWorldMapChartModule,
|
GfWorldMapChartModule,
|
||||||
LandingPageRoutingModule,
|
LandingPageRoutingModule,
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { GfWorldMapChartModule } from '@ghostfolio/client/components/world-map-chart/world-map-chart.module';
|
import { GfWorldMapChartModule } from '@ghostfolio/client/components/world-map-chart/world-map-chart.module';
|
||||||
import { GfPortfolioProportionChartModule } from '@ghostfolio/ui/portfolio-proportion-chart';
|
import { GfPortfolioProportionChartComponent } from '@ghostfolio/ui/portfolio-proportion-chart';
|
||||||
import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator';
|
import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator';
|
||||||
import { GfValueComponent } from '@ghostfolio/ui/value';
|
import { GfValueComponent } from '@ghostfolio/ui/value';
|
||||||
|
|
||||||
@ -17,7 +17,7 @@ import { AllocationsPageComponent } from './allocations-page.component';
|
|||||||
imports: [
|
imports: [
|
||||||
AllocationsPageRoutingModule,
|
AllocationsPageRoutingModule,
|
||||||
CommonModule,
|
CommonModule,
|
||||||
GfPortfolioProportionChartModule,
|
GfPortfolioProportionChartComponent,
|
||||||
GfPremiumIndicatorComponent,
|
GfPremiumIndicatorComponent,
|
||||||
GfWorldMapChartModule,
|
GfWorldMapChartModule,
|
||||||
GfValueComponent,
|
GfValueComponent,
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { GfBenchmarkComparatorModule } from '@ghostfolio/client/components/benchmark-comparator/benchmark-comparator.module';
|
import { GfBenchmarkComparatorModule } from '@ghostfolio/client/components/benchmark-comparator/benchmark-comparator.module';
|
||||||
import { GfInvestmentChartModule } from '@ghostfolio/client/components/investment-chart/investment-chart.module';
|
import { GfInvestmentChartModule } from '@ghostfolio/client/components/investment-chart/investment-chart.module';
|
||||||
import { GfToggleModule } from '@ghostfolio/client/components/toggle/toggle.module';
|
import { GfToggleModule } from '@ghostfolio/client/components/toggle/toggle.module';
|
||||||
import { GfActivitiesFilterModule } from '@ghostfolio/ui/activities-filter';
|
import { GfActivitiesFilterComponent } from '@ghostfolio/ui/activities-filter';
|
||||||
import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator';
|
import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator';
|
||||||
import { GfValueComponent } from '@ghostfolio/ui/value';
|
import { GfValueComponent } from '@ghostfolio/ui/value';
|
||||||
|
|
||||||
@ -18,7 +18,7 @@ import { AnalysisPageComponent } from './analysis-page.component';
|
|||||||
imports: [
|
imports: [
|
||||||
AnalysisPageRoutingModule,
|
AnalysisPageRoutingModule,
|
||||||
CommonModule,
|
CommonModule,
|
||||||
GfActivitiesFilterModule,
|
GfActivitiesFilterComponent,
|
||||||
GfBenchmarkComparatorModule,
|
GfBenchmarkComparatorModule,
|
||||||
GfInvestmentChartModule,
|
GfInvestmentChartModule,
|
||||||
GfPremiumIndicatorComponent,
|
GfPremiumIndicatorComponent,
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { GfWorldMapChartModule } from '@ghostfolio/client/components/world-map-chart/world-map-chart.module';
|
import { GfWorldMapChartModule } from '@ghostfolio/client/components/world-map-chart/world-map-chart.module';
|
||||||
import { GfHoldingsTableComponent } from '@ghostfolio/ui/holdings-table';
|
import { GfHoldingsTableComponent } from '@ghostfolio/ui/holdings-table';
|
||||||
import { GfPortfolioProportionChartModule } from '@ghostfolio/ui/portfolio-proportion-chart';
|
import { GfPortfolioProportionChartComponent } from '@ghostfolio/ui/portfolio-proportion-chart';
|
||||||
import { GfValueComponent } from '@ghostfolio/ui/value';
|
import { GfValueComponent } from '@ghostfolio/ui/value';
|
||||||
|
|
||||||
import { CommonModule } from '@angular/common';
|
import { CommonModule } from '@angular/common';
|
||||||
@ -16,7 +16,7 @@ import { PublicPageComponent } from './public-page.component';
|
|||||||
imports: [
|
imports: [
|
||||||
CommonModule,
|
CommonModule,
|
||||||
GfHoldingsTableComponent,
|
GfHoldingsTableComponent,
|
||||||
GfPortfolioProportionChartModule,
|
GfPortfolioProportionChartComponent,
|
||||||
GfValueComponent,
|
GfValueComponent,
|
||||||
GfWorldMapChartModule,
|
GfWorldMapChartModule,
|
||||||
MatButtonModule,
|
MatButtonModule,
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { GfLogoModule } from '@ghostfolio/ui/logo';
|
import { GfLogoComponent } from '@ghostfolio/ui/logo';
|
||||||
|
|
||||||
import { CommonModule } from '@angular/common';
|
import { CommonModule } from '@angular/common';
|
||||||
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
||||||
@ -13,7 +13,7 @@ import { ShowAccessTokenDialogModule } from './show-access-token-dialog/show-acc
|
|||||||
declarations: [RegisterPageComponent],
|
declarations: [RegisterPageComponent],
|
||||||
imports: [
|
imports: [
|
||||||
CommonModule,
|
CommonModule,
|
||||||
GfLogoModule,
|
GfLogoComponent,
|
||||||
MatButtonModule,
|
MatButtonModule,
|
||||||
RegisterPageRoutingModule,
|
RegisterPageRoutingModule,
|
||||||
RouterModule,
|
RouterModule,
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { WebauthnPageComponent } from '@ghostfolio/client/pages/webauthn/webauthn-page.component';
|
import { WebauthnPageComponent } from '@ghostfolio/client/pages/webauthn/webauthn-page.component';
|
||||||
import { GfLogoModule } from '@ghostfolio/ui/logo';
|
import { GfLogoComponent } from '@ghostfolio/ui/logo';
|
||||||
|
|
||||||
import { CommonModule } from '@angular/common';
|
import { CommonModule } from '@angular/common';
|
||||||
import { NgModule } from '@angular/core';
|
import { NgModule } from '@angular/core';
|
||||||
@ -12,7 +12,7 @@ import { WebauthnPageRoutingModule } from './webauthn-page-routing.module';
|
|||||||
declarations: [WebauthnPageComponent],
|
declarations: [WebauthnPageComponent],
|
||||||
imports: [
|
imports: [
|
||||||
CommonModule,
|
CommonModule,
|
||||||
GfLogoModule,
|
GfLogoComponent,
|
||||||
MatButtonModule,
|
MatButtonModule,
|
||||||
MatProgressSpinnerModule,
|
MatProgressSpinnerModule,
|
||||||
WebauthnPageRoutingModule
|
WebauthnPageRoutingModule
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
import { getLocale } from '@ghostfolio/common/helper';
|
import { getLocale } from '@ghostfolio/common/helper';
|
||||||
import { AccountBalancesResponse } from '@ghostfolio/common/interfaces';
|
import { AccountBalancesResponse } from '@ghostfolio/common/interfaces';
|
||||||
|
|
||||||
|
import { CommonModule } from '@angular/common';
|
||||||
import {
|
import {
|
||||||
|
CUSTOM_ELEMENTS_SCHEMA,
|
||||||
ChangeDetectionStrategy,
|
ChangeDetectionStrategy,
|
||||||
Component,
|
Component,
|
||||||
EventEmitter,
|
EventEmitter,
|
||||||
@ -12,18 +14,34 @@ import {
|
|||||||
Output,
|
Output,
|
||||||
ViewChild
|
ViewChild
|
||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
import { MatSort } from '@angular/material/sort';
|
import { MatButtonModule } from '@angular/material/button';
|
||||||
import { MatTableDataSource } from '@angular/material/table';
|
import { MatMenuModule } from '@angular/material/menu';
|
||||||
|
import { MatSort, MatSortModule } from '@angular/material/sort';
|
||||||
|
import { MatTableDataSource, MatTableModule } from '@angular/material/table';
|
||||||
import { get } from 'lodash';
|
import { get } from 'lodash';
|
||||||
import { Subject } from 'rxjs';
|
import { Subject } from 'rxjs';
|
||||||
|
|
||||||
|
import { GfValueComponent } from '../value';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
|
imports: [
|
||||||
|
CommonModule,
|
||||||
|
GfValueComponent,
|
||||||
|
MatButtonModule,
|
||||||
|
MatMenuModule,
|
||||||
|
MatSortModule,
|
||||||
|
MatTableModule
|
||||||
|
],
|
||||||
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||||
selector: 'gf-account-balances',
|
selector: 'gf-account-balances',
|
||||||
|
standalone: true,
|
||||||
styleUrls: ['./account-balances.component.scss'],
|
styleUrls: ['./account-balances.component.scss'],
|
||||||
templateUrl: './account-balances.component.html'
|
templateUrl: './account-balances.component.html'
|
||||||
})
|
})
|
||||||
export class AccountBalancesComponent implements OnChanges, OnDestroy, OnInit {
|
export class GfAccountBalancesComponent
|
||||||
|
implements OnChanges, OnDestroy, OnInit
|
||||||
|
{
|
||||||
@Input() accountBalances: AccountBalancesResponse['balances'];
|
@Input() accountBalances: AccountBalancesResponse['balances'];
|
||||||
@Input() accountId: string;
|
@Input() accountId: string;
|
||||||
@Input() locale = getLocale();
|
@Input() locale = getLocale();
|
||||||
|
@ -1,25 +0,0 @@
|
|||||||
import { GfValueComponent } from '@ghostfolio/ui/value';
|
|
||||||
|
|
||||||
import { CommonModule } from '@angular/common';
|
|
||||||
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
|
||||||
import { MatButtonModule } from '@angular/material/button';
|
|
||||||
import { MatMenuModule } from '@angular/material/menu';
|
|
||||||
import { MatSortModule } from '@angular/material/sort';
|
|
||||||
import { MatTableModule } from '@angular/material/table';
|
|
||||||
|
|
||||||
import { AccountBalancesComponent } from './account-balances.component';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
declarations: [AccountBalancesComponent],
|
|
||||||
exports: [AccountBalancesComponent],
|
|
||||||
imports: [
|
|
||||||
CommonModule,
|
|
||||||
GfValueComponent,
|
|
||||||
MatButtonModule,
|
|
||||||
MatMenuModule,
|
|
||||||
MatSortModule,
|
|
||||||
MatTableModule
|
|
||||||
],
|
|
||||||
schemas: [CUSTOM_ELEMENTS_SCHEMA]
|
|
||||||
})
|
|
||||||
export class GfAccountBalancesModule {}
|
|
@ -1 +1 @@
|
|||||||
export * from './account-balances.module';
|
export * from './account-balances.component';
|
||||||
|
@ -1,8 +1,11 @@
|
|||||||
|
import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module';
|
||||||
import { Filter, FilterGroup } from '@ghostfolio/common/interfaces';
|
import { Filter, FilterGroup } from '@ghostfolio/common/interfaces';
|
||||||
import { translate } from '@ghostfolio/ui/i18n';
|
import { translate } from '@ghostfolio/ui/i18n';
|
||||||
|
|
||||||
import { COMMA, ENTER } from '@angular/cdk/keycodes';
|
import { COMMA, ENTER } from '@angular/cdk/keycodes';
|
||||||
|
import { CommonModule } from '@angular/common';
|
||||||
import {
|
import {
|
||||||
|
CUSTOM_ELEMENTS_SCHEMA,
|
||||||
ChangeDetectionStrategy,
|
ChangeDetectionStrategy,
|
||||||
Component,
|
Component,
|
||||||
ElementRef,
|
ElementRef,
|
||||||
@ -14,23 +17,39 @@ import {
|
|||||||
SimpleChanges,
|
SimpleChanges,
|
||||||
ViewChild
|
ViewChild
|
||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
import { FormControl } from '@angular/forms';
|
import { FormControl, ReactiveFormsModule } from '@angular/forms';
|
||||||
import {
|
import {
|
||||||
MatAutocomplete,
|
MatAutocomplete,
|
||||||
|
MatAutocompleteModule,
|
||||||
MatAutocompleteSelectedEvent
|
MatAutocompleteSelectedEvent
|
||||||
} from '@angular/material/autocomplete';
|
} from '@angular/material/autocomplete';
|
||||||
import { MatChipInputEvent } from '@angular/material/chips';
|
import { MatButtonModule } from '@angular/material/button';
|
||||||
|
import { MatChipInputEvent, MatChipsModule } from '@angular/material/chips';
|
||||||
|
import { MatInputModule } from '@angular/material/input';
|
||||||
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
||||||
import { groupBy } from 'lodash';
|
import { groupBy } from 'lodash';
|
||||||
import { BehaviorSubject, Observable, Subject } from 'rxjs';
|
import { BehaviorSubject, Observable, Subject } from 'rxjs';
|
||||||
import { takeUntil } from 'rxjs/operators';
|
import { takeUntil } from 'rxjs/operators';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
|
imports: [
|
||||||
|
CommonModule,
|
||||||
|
GfSymbolModule,
|
||||||
|
MatAutocompleteModule,
|
||||||
|
MatButtonModule,
|
||||||
|
MatChipsModule,
|
||||||
|
MatInputModule,
|
||||||
|
MatProgressSpinnerModule,
|
||||||
|
ReactiveFormsModule
|
||||||
|
],
|
||||||
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||||
selector: 'gf-activities-filter',
|
selector: 'gf-activities-filter',
|
||||||
|
standalone: true,
|
||||||
styleUrls: ['./activities-filter.component.scss'],
|
styleUrls: ['./activities-filter.component.scss'],
|
||||||
templateUrl: './activities-filter.component.html'
|
templateUrl: './activities-filter.component.html'
|
||||||
})
|
})
|
||||||
export class ActivitiesFilterComponent implements OnChanges, OnDestroy {
|
export class GfActivitiesFilterComponent implements OnChanges, OnDestroy {
|
||||||
@Input() allFilters: Filter[];
|
@Input() allFilters: Filter[];
|
||||||
@Input() isLoading: boolean;
|
@Input() isLoading: boolean;
|
||||||
@Input() placeholder: string;
|
@Input() placeholder: string;
|
||||||
|
@ -1,29 +0,0 @@
|
|||||||
import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module';
|
|
||||||
|
|
||||||
import { CommonModule } from '@angular/common';
|
|
||||||
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
|
||||||
import { ReactiveFormsModule } from '@angular/forms';
|
|
||||||
import { MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
||||||
import { MatButtonModule } from '@angular/material/button';
|
|
||||||
import { MatChipsModule } from '@angular/material/chips';
|
|
||||||
import { MatInputModule } from '@angular/material/input';
|
|
||||||
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
||||||
|
|
||||||
import { ActivitiesFilterComponent } from './activities-filter.component';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
declarations: [ActivitiesFilterComponent],
|
|
||||||
exports: [ActivitiesFilterComponent],
|
|
||||||
imports: [
|
|
||||||
CommonModule,
|
|
||||||
GfSymbolModule,
|
|
||||||
MatAutocompleteModule,
|
|
||||||
MatButtonModule,
|
|
||||||
MatChipsModule,
|
|
||||||
MatInputModule,
|
|
||||||
MatProgressSpinnerModule,
|
|
||||||
ReactiveFormsModule
|
|
||||||
],
|
|
||||||
schemas: [CUSTOM_ELEMENTS_SCHEMA]
|
|
||||||
})
|
|
||||||
export class GfActivitiesFilterModule {}
|
|
@ -1 +1 @@
|
|||||||
export * from './activities-filter.module';
|
export * from './activities-filter.component';
|
||||||
|
@ -5,7 +5,7 @@ import { DEFAULT_PAGE_SIZE } from '@ghostfolio/common/config';
|
|||||||
import { getDateFormatString, getLocale } from '@ghostfolio/common/helper';
|
import { getDateFormatString, getLocale } from '@ghostfolio/common/helper';
|
||||||
import { UniqueAsset } from '@ghostfolio/common/interfaces';
|
import { UniqueAsset } from '@ghostfolio/common/interfaces';
|
||||||
import { OrderWithAccount } from '@ghostfolio/common/types';
|
import { OrderWithAccount } from '@ghostfolio/common/types';
|
||||||
import { GfActivityTypeModule } from '@ghostfolio/ui/activity-type';
|
import { GfActivityTypeComponent } from '@ghostfolio/ui/activity-type';
|
||||||
import { GfNoTransactionsInfoComponent } from '@ghostfolio/ui/no-transactions-info';
|
import { GfNoTransactionsInfoComponent } from '@ghostfolio/ui/no-transactions-info';
|
||||||
import { GfValueComponent } from '@ghostfolio/ui/value';
|
import { GfValueComponent } from '@ghostfolio/ui/value';
|
||||||
|
|
||||||
@ -50,7 +50,7 @@ import { Subject, Subscription, takeUntil } from 'rxjs';
|
|||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
imports: [
|
imports: [
|
||||||
CommonModule,
|
CommonModule,
|
||||||
GfActivityTypeModule,
|
GfActivityTypeComponent,
|
||||||
GfAssetProfileIconComponent,
|
GfAssetProfileIconComponent,
|
||||||
GfNoTransactionsInfoComponent,
|
GfNoTransactionsInfoComponent,
|
||||||
GfSymbolModule,
|
GfSymbolModule,
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
import { translate } from '@ghostfolio/ui/i18n';
|
import { translate } from '@ghostfolio/ui/i18n';
|
||||||
|
|
||||||
|
import { CommonModule } from '@angular/common';
|
||||||
import {
|
import {
|
||||||
|
CUSTOM_ELEMENTS_SCHEMA,
|
||||||
ChangeDetectionStrategy,
|
ChangeDetectionStrategy,
|
||||||
Component,
|
Component,
|
||||||
Input,
|
Input,
|
||||||
@ -10,11 +12,14 @@ import { Type as ActivityType } from '@prisma/client';
|
|||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
|
imports: [CommonModule],
|
||||||
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||||
selector: 'gf-activity-type',
|
selector: 'gf-activity-type',
|
||||||
|
standalone: true,
|
||||||
styleUrls: ['./activity-type.component.scss'],
|
styleUrls: ['./activity-type.component.scss'],
|
||||||
templateUrl: './activity-type.component.html'
|
templateUrl: './activity-type.component.html'
|
||||||
})
|
})
|
||||||
export class ActivityTypeComponent implements OnChanges {
|
export class GfActivityTypeComponent implements OnChanges {
|
||||||
@Input() activityType: ActivityType;
|
@Input() activityType: ActivityType;
|
||||||
|
|
||||||
public activityTypeLabel: string;
|
public activityTypeLabel: string;
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
import { CommonModule } from '@angular/common';
|
|
||||||
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
|
||||||
|
|
||||||
import { ActivityTypeComponent } from './activity-type.component';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
declarations: [ActivityTypeComponent],
|
|
||||||
exports: [ActivityTypeComponent],
|
|
||||||
imports: [CommonModule],
|
|
||||||
schemas: [CUSTOM_ELEMENTS_SCHEMA]
|
|
||||||
})
|
|
||||||
export class GfActivityTypeModule {}
|
|
@ -1 +1 @@
|
|||||||
export * from './activity-type.module';
|
export * from './activity-type.component';
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
|
import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module';
|
||||||
import { ISearchResultItem } from '@ghostfolio/ui/assistant/interfaces/interfaces';
|
import { ISearchResultItem } from '@ghostfolio/ui/assistant/interfaces/interfaces';
|
||||||
|
|
||||||
import { FocusableOption } from '@angular/cdk/a11y';
|
import { FocusableOption } from '@angular/cdk/a11y';
|
||||||
|
import { CommonModule } from '@angular/common';
|
||||||
import {
|
import {
|
||||||
ChangeDetectionStrategy,
|
ChangeDetectionStrategy,
|
||||||
ChangeDetectorRef,
|
ChangeDetectorRef,
|
||||||
@ -13,15 +15,19 @@ import {
|
|||||||
Output,
|
Output,
|
||||||
ViewChild
|
ViewChild
|
||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
import { Params } from '@angular/router';
|
import { Params, RouterModule } from '@angular/router';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
|
imports: [CommonModule, GfSymbolModule, RouterModule],
|
||||||
selector: 'gf-assistant-list-item',
|
selector: 'gf-assistant-list-item',
|
||||||
templateUrl: './assistant-list-item.html',
|
standalone: true,
|
||||||
styleUrls: ['./assistant-list-item.scss']
|
styleUrls: ['./assistant-list-item.scss'],
|
||||||
|
templateUrl: './assistant-list-item.html'
|
||||||
})
|
})
|
||||||
export class AssistantListItemComponent implements FocusableOption, OnChanges {
|
export class GfAssistantListItemComponent
|
||||||
|
implements FocusableOption, OnChanges
|
||||||
|
{
|
||||||
@HostBinding('attr.tabindex') tabindex = -1;
|
@HostBinding('attr.tabindex') tabindex = -1;
|
||||||
@HostBinding('class.has-focus') get getHasFocus() {
|
@HostBinding('class.has-focus') get getHasFocus() {
|
||||||
return this.hasFocus;
|
return this.hasFocus;
|
||||||
|
@ -1,14 +0,0 @@
|
|||||||
import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module';
|
|
||||||
|
|
||||||
import { CommonModule } from '@angular/common';
|
|
||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { RouterModule } from '@angular/router';
|
|
||||||
|
|
||||||
import { AssistantListItemComponent } from './assistant-list-item.component';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
declarations: [AssistantListItemComponent],
|
|
||||||
exports: [AssistantListItemComponent],
|
|
||||||
imports: [CommonModule, GfSymbolModule, RouterModule]
|
|
||||||
})
|
|
||||||
export class GfAssistantListItemModule {}
|
|
@ -1,3 +1,4 @@
|
|||||||
|
import { GfAssetProfileIconComponent } from '@ghostfolio/client/components/asset-profile-icon/asset-profile-icon.component';
|
||||||
import { AdminService } from '@ghostfolio/client/services/admin.service';
|
import { AdminService } from '@ghostfolio/client/services/admin.service';
|
||||||
import { DataService } from '@ghostfolio/client/services/data.service';
|
import { DataService } from '@ghostfolio/client/services/data.service';
|
||||||
import { Filter, User } from '@ghostfolio/common/interfaces';
|
import { Filter, User } from '@ghostfolio/common/interfaces';
|
||||||
@ -5,7 +6,9 @@ import { DateRange } from '@ghostfolio/common/types';
|
|||||||
import { translate } from '@ghostfolio/ui/i18n';
|
import { translate } from '@ghostfolio/ui/i18n';
|
||||||
|
|
||||||
import { FocusKeyManager } from '@angular/cdk/a11y';
|
import { FocusKeyManager } from '@angular/cdk/a11y';
|
||||||
|
import { CommonModule } from '@angular/common';
|
||||||
import {
|
import {
|
||||||
|
CUSTOM_ELEMENTS_SCHEMA,
|
||||||
ChangeDetectionStrategy,
|
ChangeDetectionStrategy,
|
||||||
ChangeDetectorRef,
|
ChangeDetectorRef,
|
||||||
Component,
|
Component,
|
||||||
@ -21,10 +24,20 @@ import {
|
|||||||
ViewChild,
|
ViewChild,
|
||||||
ViewChildren
|
ViewChildren
|
||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
import { FormBuilder, FormControl } from '@angular/forms';
|
import {
|
||||||
|
FormBuilder,
|
||||||
|
FormControl,
|
||||||
|
FormsModule,
|
||||||
|
ReactiveFormsModule
|
||||||
|
} from '@angular/forms';
|
||||||
|
import { MatButtonModule } from '@angular/material/button';
|
||||||
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
||||||
import { MatMenuTrigger } from '@angular/material/menu';
|
import { MatMenuTrigger } from '@angular/material/menu';
|
||||||
|
import { MatSelectModule } from '@angular/material/select';
|
||||||
|
import { RouterModule } from '@angular/router';
|
||||||
import { Account, AssetClass } from '@prisma/client';
|
import { Account, AssetClass } from '@prisma/client';
|
||||||
import { eachYearOfInterval, format } from 'date-fns';
|
import { eachYearOfInterval, format } from 'date-fns';
|
||||||
|
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
|
||||||
import { EMPTY, Observable, Subject, lastValueFrom } from 'rxjs';
|
import { EMPTY, Observable, Subject, lastValueFrom } from 'rxjs';
|
||||||
import {
|
import {
|
||||||
catchError,
|
catchError,
|
||||||
@ -35,7 +48,7 @@ import {
|
|||||||
takeUntil
|
takeUntil
|
||||||
} from 'rxjs/operators';
|
} from 'rxjs/operators';
|
||||||
|
|
||||||
import { AssistantListItemComponent } from './assistant-list-item/assistant-list-item.component';
|
import { GfAssistantListItemComponent } from './assistant-list-item/assistant-list-item.component';
|
||||||
import {
|
import {
|
||||||
IDateRangeOption,
|
IDateRangeOption,
|
||||||
ISearchResultItem,
|
ISearchResultItem,
|
||||||
@ -44,11 +57,25 @@ import {
|
|||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
|
imports: [
|
||||||
|
CommonModule,
|
||||||
|
FormsModule,
|
||||||
|
GfAssetProfileIconComponent,
|
||||||
|
GfAssistantListItemComponent,
|
||||||
|
MatButtonModule,
|
||||||
|
MatFormFieldModule,
|
||||||
|
MatSelectModule,
|
||||||
|
NgxSkeletonLoaderModule,
|
||||||
|
ReactiveFormsModule,
|
||||||
|
RouterModule
|
||||||
|
],
|
||||||
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||||
selector: 'gf-assistant',
|
selector: 'gf-assistant',
|
||||||
|
standalone: true,
|
||||||
styleUrls: ['./assistant.scss'],
|
styleUrls: ['./assistant.scss'],
|
||||||
templateUrl: './assistant.html'
|
templateUrl: './assistant.html'
|
||||||
})
|
})
|
||||||
export class AssistantComponent implements OnChanges, OnDestroy, OnInit {
|
export class GfAssistantComponent implements OnChanges, OnDestroy, OnInit {
|
||||||
@HostListener('document:keydown', ['$event']) onKeydown(
|
@HostListener('document:keydown', ['$event']) onKeydown(
|
||||||
event: KeyboardEvent
|
event: KeyboardEvent
|
||||||
) {
|
) {
|
||||||
@ -92,8 +119,8 @@ export class AssistantComponent implements OnChanges, OnDestroy, OnInit {
|
|||||||
@ViewChild('menuTrigger') menuTriggerElement: MatMenuTrigger;
|
@ViewChild('menuTrigger') menuTriggerElement: MatMenuTrigger;
|
||||||
@ViewChild('search', { static: true }) searchElement: ElementRef;
|
@ViewChild('search', { static: true }) searchElement: ElementRef;
|
||||||
|
|
||||||
@ViewChildren(AssistantListItemComponent)
|
@ViewChildren(GfAssistantListItemComponent)
|
||||||
assistantListItems: QueryList<AssistantListItemComponent>;
|
assistantListItems: QueryList<GfAssistantListItemComponent>;
|
||||||
|
|
||||||
public static readonly SEARCH_RESULTS_DEFAULT_LIMIT = 5;
|
public static readonly SEARCH_RESULTS_DEFAULT_LIMIT = 5;
|
||||||
|
|
||||||
@ -117,7 +144,7 @@ export class AssistantComponent implements OnChanges, OnDestroy, OnInit {
|
|||||||
public tags: Filter[] = [];
|
public tags: Filter[] = [];
|
||||||
|
|
||||||
private filterTypes: Filter['type'][] = ['ACCOUNT', 'ASSET_CLASS', 'TAG'];
|
private filterTypes: Filter['type'][] = ['ACCOUNT', 'ASSET_CLASS', 'TAG'];
|
||||||
private keyManager: FocusKeyManager<AssistantListItemComponent>;
|
private keyManager: FocusKeyManager<GfAssistantListItemComponent>;
|
||||||
private unsubscribeSubject = new Subject<void>();
|
private unsubscribeSubject = new Subject<void>();
|
||||||
|
|
||||||
public constructor(
|
public constructor(
|
||||||
@ -334,7 +361,7 @@ export class AssistantComponent implements OnChanges, OnDestroy, OnInit {
|
|||||||
);
|
);
|
||||||
assetProfiles = assetProfiles.slice(
|
assetProfiles = assetProfiles.slice(
|
||||||
0,
|
0,
|
||||||
AssistantComponent.SEARCH_RESULTS_DEFAULT_LIMIT
|
GfAssistantComponent.SEARCH_RESULTS_DEFAULT_LIMIT
|
||||||
);
|
);
|
||||||
} catch {}
|
} catch {}
|
||||||
}
|
}
|
||||||
@ -343,7 +370,7 @@ export class AssistantComponent implements OnChanges, OnDestroy, OnInit {
|
|||||||
holdings = await lastValueFrom(this.searchHoldings(aSearchTerm));
|
holdings = await lastValueFrom(this.searchHoldings(aSearchTerm));
|
||||||
holdings = holdings.slice(
|
holdings = holdings.slice(
|
||||||
0,
|
0,
|
||||||
AssistantComponent.SEARCH_RESULTS_DEFAULT_LIMIT
|
GfAssistantComponent.SEARCH_RESULTS_DEFAULT_LIMIT
|
||||||
);
|
);
|
||||||
} catch {}
|
} catch {}
|
||||||
|
|
||||||
@ -364,7 +391,7 @@ export class AssistantComponent implements OnChanges, OnDestroy, OnInit {
|
|||||||
type: 'SEARCH_QUERY'
|
type: 'SEARCH_QUERY'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
take: AssistantComponent.SEARCH_RESULTS_DEFAULT_LIMIT
|
take: GfAssistantComponent.SEARCH_RESULTS_DEFAULT_LIMIT
|
||||||
})
|
})
|
||||||
.pipe(
|
.pipe(
|
||||||
catchError(() => {
|
catchError(() => {
|
||||||
|
@ -1,32 +0,0 @@
|
|||||||
import { GfAssetProfileIconComponent } from '@ghostfolio/client/components/asset-profile-icon/asset-profile-icon.component';
|
|
||||||
|
|
||||||
import { CommonModule } from '@angular/common';
|
|
||||||
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
|
||||||
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
||||||
import { MatButtonModule } from '@angular/material/button';
|
|
||||||
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
||||||
import { MatSelectModule } from '@angular/material/select';
|
|
||||||
import { RouterModule } from '@angular/router';
|
|
||||||
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
|
|
||||||
|
|
||||||
import { GfAssistantListItemModule } from './assistant-list-item/assistant-list-item.module';
|
|
||||||
import { AssistantComponent } from './assistant.component';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
declarations: [AssistantComponent],
|
|
||||||
exports: [AssistantComponent],
|
|
||||||
imports: [
|
|
||||||
CommonModule,
|
|
||||||
FormsModule,
|
|
||||||
GfAssetProfileIconComponent,
|
|
||||||
GfAssistantListItemModule,
|
|
||||||
MatButtonModule,
|
|
||||||
MatFormFieldModule,
|
|
||||||
MatSelectModule,
|
|
||||||
NgxSkeletonLoaderModule,
|
|
||||||
ReactiveFormsModule,
|
|
||||||
RouterModule
|
|
||||||
],
|
|
||||||
schemas: [CUSTOM_ELEMENTS_SCHEMA]
|
|
||||||
})
|
|
||||||
export class GfAssistantModule {}
|
|
@ -1 +1 @@
|
|||||||
export * from './assistant.module';
|
export * from './assistant.component';
|
||||||
|
@ -2,20 +2,36 @@ import { getLocale, resolveMarketCondition } from '@ghostfolio/common/helper';
|
|||||||
import { Benchmark, User } from '@ghostfolio/common/interfaces';
|
import { Benchmark, User } from '@ghostfolio/common/interfaces';
|
||||||
import { translate } from '@ghostfolio/ui/i18n';
|
import { translate } from '@ghostfolio/ui/i18n';
|
||||||
|
|
||||||
|
import { CommonModule } from '@angular/common';
|
||||||
import {
|
import {
|
||||||
|
CUSTOM_ELEMENTS_SCHEMA,
|
||||||
ChangeDetectionStrategy,
|
ChangeDetectionStrategy,
|
||||||
Component,
|
Component,
|
||||||
Input,
|
Input,
|
||||||
OnChanges
|
OnChanges
|
||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
|
import { MatTableModule } from '@angular/material/table';
|
||||||
|
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
|
||||||
|
|
||||||
|
import { GfTrendIndicatorComponent } from '../trend-indicator';
|
||||||
|
import { GfValueComponent } from '../value';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'gf-benchmark',
|
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
templateUrl: './benchmark.component.html',
|
imports: [
|
||||||
styleUrls: ['./benchmark.component.scss']
|
CommonModule,
|
||||||
|
GfTrendIndicatorComponent,
|
||||||
|
GfValueComponent,
|
||||||
|
MatTableModule,
|
||||||
|
NgxSkeletonLoaderModule
|
||||||
|
],
|
||||||
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||||
|
selector: 'gf-benchmark',
|
||||||
|
standalone: true,
|
||||||
|
styleUrls: ['./benchmark.component.scss'],
|
||||||
|
templateUrl: './benchmark.component.html'
|
||||||
})
|
})
|
||||||
export class BenchmarkComponent implements OnChanges {
|
export class GfBenchmarkComponent implements OnChanges {
|
||||||
@Input() benchmarks: Benchmark[];
|
@Input() benchmarks: Benchmark[];
|
||||||
@Input() locale = getLocale();
|
@Input() locale = getLocale();
|
||||||
@Input() user: User;
|
@Input() user: User;
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
import { CommonModule } from '@angular/common';
|
|
||||||
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
|
||||||
import { MatTableModule } from '@angular/material/table';
|
|
||||||
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
|
|
||||||
|
|
||||||
import { GfTrendIndicatorComponent } from '../trend-indicator';
|
|
||||||
import { GfValueComponent } from '../value';
|
|
||||||
import { BenchmarkComponent } from './benchmark.component';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
declarations: [BenchmarkComponent],
|
|
||||||
exports: [BenchmarkComponent],
|
|
||||||
imports: [
|
|
||||||
CommonModule,
|
|
||||||
GfTrendIndicatorComponent,
|
|
||||||
GfValueComponent,
|
|
||||||
MatTableModule,
|
|
||||||
NgxSkeletonLoaderModule
|
|
||||||
],
|
|
||||||
schemas: [CUSTOM_ELEMENTS_SCHEMA]
|
|
||||||
})
|
|
||||||
export class GfBenchmarkModule {}
|
|
@ -1 +1 @@
|
|||||||
export * from './benchmark.module';
|
export * from './benchmark.component';
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
import { FocusKeyManager } from '@angular/cdk/a11y';
|
import { FocusKeyManager } from '@angular/cdk/a11y';
|
||||||
import { LEFT_ARROW, RIGHT_ARROW, TAB } from '@angular/cdk/keycodes';
|
import { LEFT_ARROW, RIGHT_ARROW, TAB } from '@angular/cdk/keycodes';
|
||||||
|
import { CommonModule } from '@angular/common';
|
||||||
import {
|
import {
|
||||||
AfterContentInit,
|
AfterContentInit,
|
||||||
|
CUSTOM_ELEMENTS_SCHEMA,
|
||||||
ChangeDetectionStrategy,
|
ChangeDetectionStrategy,
|
||||||
Component,
|
Component,
|
||||||
ContentChildren,
|
ContentChildren,
|
||||||
@ -13,17 +15,21 @@ import {
|
|||||||
QueryList,
|
QueryList,
|
||||||
ViewChild
|
ViewChild
|
||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
|
import { MatButtonModule } from '@angular/material/button';
|
||||||
import { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';
|
import { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';
|
||||||
|
|
||||||
import { CarouselItem } from './carousel-item.directive';
|
import { CarouselItem } from './carousel-item.directive';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
|
imports: [CommonModule, MatButtonModule],
|
||||||
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||||
selector: 'gf-carousel',
|
selector: 'gf-carousel',
|
||||||
|
standalone: true,
|
||||||
styleUrls: ['./carousel.component.scss'],
|
styleUrls: ['./carousel.component.scss'],
|
||||||
templateUrl: './carousel.component.html'
|
templateUrl: './carousel.component.html'
|
||||||
})
|
})
|
||||||
export class CarouselComponent implements AfterContentInit {
|
export class GfCarouselComponent implements AfterContentInit {
|
||||||
@ContentChildren(CarouselItem) public items!: QueryList<CarouselItem>;
|
@ContentChildren(CarouselItem) public items!: QueryList<CarouselItem>;
|
||||||
|
|
||||||
@HostBinding('class.animations-disabled')
|
@HostBinding('class.animations-disabled')
|
||||||
|
@ -1,14 +0,0 @@
|
|||||||
import { CommonModule } from '@angular/common';
|
|
||||||
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
|
||||||
import { MatButtonModule } from '@angular/material/button';
|
|
||||||
|
|
||||||
import { CarouselItem } from './carousel-item.directive';
|
|
||||||
import { CarouselComponent } from './carousel.component';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
declarations: [CarouselComponent, CarouselItem],
|
|
||||||
exports: [CarouselComponent, CarouselItem],
|
|
||||||
imports: [CommonModule, MatButtonModule],
|
|
||||||
schemas: [CUSTOM_ELEMENTS_SCHEMA]
|
|
||||||
})
|
|
||||||
export class GfCarouselModule {}
|
|
@ -1 +1 @@
|
|||||||
export * from './carousel.module';
|
export * from './carousel.component';
|
||||||
|
@ -1,14 +1,23 @@
|
|||||||
import { DataProviderInfo } from '@ghostfolio/common/interfaces';
|
import { DataProviderInfo } from '@ghostfolio/common/interfaces';
|
||||||
|
|
||||||
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
import { CommonModule } from '@angular/common';
|
||||||
|
import {
|
||||||
|
CUSTOM_ELEMENTS_SCHEMA,
|
||||||
|
ChangeDetectionStrategy,
|
||||||
|
Component,
|
||||||
|
Input
|
||||||
|
} from '@angular/core';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
|
imports: [CommonModule],
|
||||||
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||||
selector: 'gf-data-provider-credits',
|
selector: 'gf-data-provider-credits',
|
||||||
|
standalone: true,
|
||||||
styleUrls: ['./data-provider-credits.component.scss'],
|
styleUrls: ['./data-provider-credits.component.scss'],
|
||||||
templateUrl: './data-provider-credits.component.html'
|
templateUrl: './data-provider-credits.component.html'
|
||||||
})
|
})
|
||||||
export class DataProviderCreditsComponent {
|
export class GfDataProviderCreditsComponent {
|
||||||
@Input() dataProviderInfos: DataProviderInfo[];
|
@Input() dataProviderInfos: DataProviderInfo[];
|
||||||
|
|
||||||
public constructor() {}
|
public constructor() {}
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
import { CommonModule } from '@angular/common';
|
|
||||||
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
|
||||||
|
|
||||||
import { DataProviderCreditsComponent } from './data-provider-credits.component';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
declarations: [DataProviderCreditsComponent],
|
|
||||||
exports: [DataProviderCreditsComponent],
|
|
||||||
imports: [CommonModule],
|
|
||||||
schemas: [CUSTOM_ELEMENTS_SCHEMA]
|
|
||||||
})
|
|
||||||
export class GfDataProviderCreditsModule {}
|
|
@ -1 +1 @@
|
|||||||
export * from './data-provider-credits.module';
|
export * from './data-provider-credits.component';
|
||||||
|
@ -1 +1 @@
|
|||||||
export * from './line-chart.module';
|
export * from './line-chart.component';
|
||||||
|
@ -13,6 +13,7 @@ import {
|
|||||||
import { LineChartItem } from '@ghostfolio/common/interfaces';
|
import { LineChartItem } from '@ghostfolio/common/interfaces';
|
||||||
import { ColorScheme } from '@ghostfolio/common/types';
|
import { ColorScheme } from '@ghostfolio/common/types';
|
||||||
|
|
||||||
|
import { CommonModule } from '@angular/common';
|
||||||
import {
|
import {
|
||||||
AfterViewInit,
|
AfterViewInit,
|
||||||
ChangeDetectionStrategy,
|
ChangeDetectionStrategy,
|
||||||
@ -34,14 +35,19 @@ import {
|
|||||||
Tooltip
|
Tooltip
|
||||||
} from 'chart.js';
|
} from 'chart.js';
|
||||||
import 'chartjs-adapter-date-fns';
|
import 'chartjs-adapter-date-fns';
|
||||||
|
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'gf-line-chart',
|
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
templateUrl: './line-chart.component.html',
|
imports: [CommonModule, NgxSkeletonLoaderModule],
|
||||||
styleUrls: ['./line-chart.component.scss']
|
selector: 'gf-line-chart',
|
||||||
|
standalone: true,
|
||||||
|
styleUrls: ['./line-chart.component.scss'],
|
||||||
|
templateUrl: './line-chart.component.html'
|
||||||
})
|
})
|
||||||
export class LineChartComponent implements AfterViewInit, OnChanges, OnDestroy {
|
export class GfLineChartComponent
|
||||||
|
implements AfterViewInit, OnChanges, OnDestroy
|
||||||
|
{
|
||||||
@Input() benchmarkDataItems: LineChartItem[] = [];
|
@Input() benchmarkDataItems: LineChartItem[] = [];
|
||||||
@Input() benchmarkLabel = '';
|
@Input() benchmarkLabel = '';
|
||||||
@Input() colorScheme: ColorScheme;
|
@Input() colorScheme: ColorScheme;
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
import { CommonModule } from '@angular/common';
|
|
||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
|
|
||||||
|
|
||||||
import { LineChartComponent } from './line-chart.component';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
declarations: [LineChartComponent],
|
|
||||||
exports: [LineChartComponent],
|
|
||||||
imports: [CommonModule, NgxSkeletonLoaderModule]
|
|
||||||
})
|
|
||||||
export class GfLineChartModule {}
|
|
@ -1 +1 @@
|
|||||||
export * from './logo.module';
|
export * from './logo.component';
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
|
import { CommonModule } from '@angular/common';
|
||||||
import {
|
import {
|
||||||
|
CUSTOM_ELEMENTS_SCHEMA,
|
||||||
ChangeDetectionStrategy,
|
ChangeDetectionStrategy,
|
||||||
Component,
|
Component,
|
||||||
HostBinding,
|
HostBinding,
|
||||||
@ -6,12 +8,15 @@ import {
|
|||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'gf-logo',
|
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
templateUrl: './logo.component.html',
|
imports: [CommonModule],
|
||||||
styleUrls: ['./logo.component.scss']
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||||
|
selector: 'gf-logo',
|
||||||
|
standalone: true,
|
||||||
|
styleUrls: ['./logo.component.scss'],
|
||||||
|
templateUrl: './logo.component.html'
|
||||||
})
|
})
|
||||||
export class LogoComponent {
|
export class GfLogoComponent {
|
||||||
@HostBinding('class') @Input() size: 'large' | 'medium' = 'medium';
|
@HostBinding('class') @Input() size: 'large' | 'medium' = 'medium';
|
||||||
@Input() label: string;
|
@Input() label: string;
|
||||||
@Input() showLabel = true;
|
@Input() showLabel = true;
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
import { CommonModule } from '@angular/common';
|
|
||||||
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
|
||||||
|
|
||||||
import { LogoComponent } from './logo.component';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
declarations: [LogoComponent],
|
|
||||||
exports: [LogoComponent],
|
|
||||||
imports: [CommonModule],
|
|
||||||
schemas: [CUSTOM_ELEMENTS_SCHEMA]
|
|
||||||
})
|
|
||||||
export class GfLogoModule {}
|
|
@ -1 +1 @@
|
|||||||
export * from './membership-card.module';
|
export * from './membership-card.component';
|
||||||
|
@ -1,12 +1,24 @@
|
|||||||
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
import { CommonModule } from '@angular/common';
|
||||||
|
import {
|
||||||
|
CUSTOM_ELEMENTS_SCHEMA,
|
||||||
|
ChangeDetectionStrategy,
|
||||||
|
Component,
|
||||||
|
Input
|
||||||
|
} from '@angular/core';
|
||||||
|
import { RouterModule } from '@angular/router';
|
||||||
|
|
||||||
|
import { GfLogoComponent } from '../logo';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
|
imports: [CommonModule, GfLogoComponent, RouterModule],
|
||||||
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||||
selector: 'gf-membership-card',
|
selector: 'gf-membership-card',
|
||||||
|
standalone: true,
|
||||||
styleUrls: ['./membership-card.component.scss'],
|
styleUrls: ['./membership-card.component.scss'],
|
||||||
templateUrl: './membership-card.component.html'
|
templateUrl: './membership-card.component.html'
|
||||||
})
|
})
|
||||||
export class MembershipCardComponent {
|
export class GfMembershipCardComponent {
|
||||||
@Input() public expiresAt: string;
|
@Input() public expiresAt: string;
|
||||||
@Input() public name: string;
|
@Input() public name: string;
|
||||||
|
|
||||||
|
@ -1,15 +0,0 @@
|
|||||||
import { GfLogoModule } from '@ghostfolio/ui/logo';
|
|
||||||
|
|
||||||
import { CommonModule } from '@angular/common';
|
|
||||||
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
|
||||||
import { RouterModule } from '@angular/router';
|
|
||||||
|
|
||||||
import { MembershipCardComponent } from './membership-card.component';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
declarations: [MembershipCardComponent],
|
|
||||||
exports: [MembershipCardComponent],
|
|
||||||
imports: [CommonModule, GfLogoModule, RouterModule],
|
|
||||||
schemas: [CUSTOM_ELEMENTS_SCHEMA]
|
|
||||||
})
|
|
||||||
export class GfMembershipCardModule {}
|
|
@ -9,11 +9,11 @@ import {
|
|||||||
import { MatButtonModule } from '@angular/material/button';
|
import { MatButtonModule } from '@angular/material/button';
|
||||||
import { RouterModule } from '@angular/router';
|
import { RouterModule } from '@angular/router';
|
||||||
|
|
||||||
import { GfLogoModule } from '../logo';
|
import { GfLogoComponent } from '../logo';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
imports: [CommonModule, GfLogoModule, MatButtonModule, RouterModule],
|
imports: [CommonModule, GfLogoComponent, MatButtonModule, RouterModule],
|
||||||
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||||
selector: 'gf-no-transactions-info-indicator',
|
selector: 'gf-no-transactions-info-indicator',
|
||||||
standalone: true,
|
standalone: true,
|
||||||
|
@ -1 +1 @@
|
|||||||
export * from './portfolio-proportion-chart.module';
|
export * from './portfolio-proportion-chart.component';
|
||||||
|
@ -5,6 +5,7 @@ import { PortfolioPosition, UniqueAsset } from '@ghostfolio/common/interfaces';
|
|||||||
import { ColorScheme } from '@ghostfolio/common/types';
|
import { ColorScheme } from '@ghostfolio/common/types';
|
||||||
import { translate } from '@ghostfolio/ui/i18n';
|
import { translate } from '@ghostfolio/ui/i18n';
|
||||||
|
|
||||||
|
import { CommonModule } from '@angular/common';
|
||||||
import {
|
import {
|
||||||
AfterViewInit,
|
AfterViewInit,
|
||||||
ChangeDetectionStrategy,
|
ChangeDetectionStrategy,
|
||||||
@ -26,14 +27,17 @@ import { DoughnutController } from 'chart.js';
|
|||||||
import { Chart } from 'chart.js';
|
import { Chart } from 'chart.js';
|
||||||
import ChartDataLabels from 'chartjs-plugin-datalabels';
|
import ChartDataLabels from 'chartjs-plugin-datalabels';
|
||||||
import * as Color from 'color';
|
import * as Color from 'color';
|
||||||
|
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'gf-portfolio-proportion-chart',
|
|
||||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
templateUrl: './portfolio-proportion-chart.component.html',
|
imports: [CommonModule, NgxSkeletonLoaderModule],
|
||||||
styleUrls: ['./portfolio-proportion-chart.component.scss']
|
selector: 'gf-portfolio-proportion-chart',
|
||||||
|
standalone: true,
|
||||||
|
styleUrls: ['./portfolio-proportion-chart.component.scss'],
|
||||||
|
templateUrl: './portfolio-proportion-chart.component.html'
|
||||||
})
|
})
|
||||||
export class PortfolioProportionChartComponent
|
export class GfPortfolioProportionChartComponent
|
||||||
implements AfterViewInit, OnChanges, OnDestroy
|
implements AfterViewInit, OnChanges, OnDestroy
|
||||||
{
|
{
|
||||||
@Input() baseCurrency: string;
|
@Input() baseCurrency: string;
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
import { CommonModule } from '@angular/common';
|
|
||||||
import { NgModule } from '@angular/core';
|
|
||||||
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
|
|
||||||
|
|
||||||
import { PortfolioProportionChartComponent } from './portfolio-proportion-chart.component';
|
|
||||||
|
|
||||||
@NgModule({
|
|
||||||
declarations: [PortfolioProportionChartComponent],
|
|
||||||
exports: [PortfolioProportionChartComponent],
|
|
||||||
imports: [CommonModule, NgxSkeletonLoaderModule]
|
|
||||||
})
|
|
||||||
export class GfPortfolioProportionChartModule {}
|
|
Loading…
x
Reference in New Issue
Block a user