From c2c4934d712a0e41a3f13ac85765911e1384cc66 Mon Sep 17 00:00:00 2001 From: csehatt741 <77381875+csehatt741@users.noreply.github.com> Date: Sun, 6 Jul 2025 10:36:01 +0200 Subject: [PATCH] Feature/upgrade ionicons to version 8 (#5090) * Upgrade ionicons to version 8 * Update changelog --- CHANGELOG.md | 1 + apps/client/project.json | 12 -- apps/client/proxy.conf.json | 4 - apps/client/src/app/app.component.ts | 4 + apps/client/src/app/app.module.ts | 4 + .../access-table/access-table.component.ts | 16 +- .../access-table/access-table.module.ts | 2 + .../account-detail-dialog.component.ts | 8 + .../account-detail-dialog.module.ts | 2 + .../accounts-table.component.ts | 20 ++- .../accounts-table/accounts-table.module.ts | 2 + .../admin-jobs/admin-jobs.component.ts | 28 +++ .../admin-jobs/admin-jobs.module.ts | 2 + .../admin-market-data.component.ts | 20 +++ .../admin-market-data.module.ts | 2 + .../asset-profile-dialog.component.ts | 6 +- .../asset-profile-dialog.module.ts | 2 + .../admin-overview.component.ts | 16 ++ .../admin-overview/admin-overview.module.ts | 2 + .../admin-platform.component.ts | 8 + .../admin-platform/admin-platform.module.ts | 2 + .../admin-settings.component.ts | 6 +- .../admin-settings/admin-settings.module.ts | 2 + .../admin-tag/admin-tag.component.ts | 8 + .../components/admin-tag/admin-tag.module.ts | 2 + .../admin-users/admin-users.component.ts | 9 + .../admin-users/admin-users.module.ts | 2 + .../benchmark-comparator.component.ts | 4 + .../benchmark-comparator.module.ts | 2 + .../dialog-footer/dialog-footer.component.ts | 6 + .../dialog-footer/dialog-footer.module.ts | 3 +- .../dialog-header/dialog-header.component.ts | 6 + .../dialog-header/dialog-header.module.ts | 3 +- .../app/components/header/header.component.ts | 20 +++ .../app/components/header/header.module.ts | 2 + .../holding-detail-dialog.component.ts | 20 ++- .../home-holdings/home-holdings.component.ts | 6 +- .../home-holdings/home-holdings.module.ts | 2 + .../home-watchlist.component.ts | 6 + ...ogin-with-access-token-dialog.component.ts | 6 +- .../login-with-access-token-dialog.module.ts | 2 + .../portfolio-performance.component.ts | 6 +- .../portfolio-performance.module.ts | 3 +- .../portfolio-summary.component.ts | 9 +- .../src/app/components/rule/rule.component.ts | 16 +- .../src/app/components/rule/rule.module.ts | 2 + ...scription-interstitial-dialog.component.ts | 4 + ...subscription-interstitial-dialog.module.ts | 2 + .../user-account-access.component.ts | 4 + .../user-account-access.module.ts | 2 + .../user-account-settings.component.ts | 4 + .../user-account-settings.module.ts | 2 + .../app/pages/about/about-page.component.ts | 21 ++- .../oss-friends/oss-friends-page.component.ts | 9 +- .../overview/about-overview-page.component.ts | 13 +- .../pages/accounts/accounts-page.component.ts | 4 + .../pages/accounts/accounts-page.module.ts | 2 + .../app/pages/admin/admin-page.component.ts | 18 +- .../src/app/pages/admin/admin-page.module.ts | 2 + .../src/app/pages/blog/blog-page.component.ts | 4 + .../src/app/pages/blog/blog-page.module.ts | 3 +- .../src/app/pages/faq/faq-page.component.ts | 4 + .../src/app/pages/faq/faq-page.module.ts | 9 +- .../src/app/pages/home/home-page.component.ts | 16 ++ .../src/app/pages/home/home-page.module.ts | 2 + .../activities/activities-page.component.ts | 4 + .../activities/activities-page.module.ts | 2 + ...ate-or-update-activity-dialog.component.ts | 6 +- ...create-or-update-activity-dialog.module.ts | 2 + .../import-activities-dialog.component.ts | 6 +- .../import-activities-dialog.module.ts | 2 + .../analysis/analysis-page.component.ts | 4 + .../analysis/analysis-page.module.ts | 2 + .../portfolio/portfolio-page.component.ts | 16 ++ .../pages/portfolio/portfolio-page.module.ts | 2 + .../portfolio/x-ray/x-ray-page.component.ts | 10 +- .../portfolio/x-ray/x-ray-page.module.ts | 2 + .../pages/pricing/pricing-page.component.ts | 6 +- .../app/pages/pricing/pricing-page.module.ts | 2 + .../pages/register/register-page.module.ts | 2 + .../show-access-token-dialog.component.ts | 10 +- .../personal-finance-tools-page.component.ts | 6 + .../personal-finance-tools-page.module.ts | 8 +- .../resources/resources-page.component.ts | 11 +- .../pages/resources/resources-page.module.ts | 2 + .../user-account-page.component.ts | 4 + .../user-account/user-account-page.module.ts | 2 + .../src/app/pages/zen/zen-page.component.ts | 4 + .../src/app/pages/zen/zen-page.module.ts | 2 + apps/client/src/index.html | 3 - .../account-balances.component.ts | 12 +- .../activities-filter.component.ts | 6 + .../activities-table.component.ts | 32 +++- .../activity-type/activity-type.component.ts | 23 ++- .../src/lib/assistant/assistant.component.ts | 12 +- .../src/lib/benchmark/benchmark.component.ts | 6 + .../ui/src/lib/carousel/carousel.component.ts | 7 +- ...cal-market-data-editor-dialog.component.ts | 8 +- .../membership-card.component.ts | 15 +- .../premium-indicator.component.ts | 9 +- .../tags-selector/tags-selector.component.ts | 6 + .../trend-indicator.component.ts | 21 ++- libs/ui/src/lib/value/value.component.ts | 3 +- package-lock.json | 165 +++++++++++++++++- package.json | 3 +- 105 files changed, 824 insertions(+), 65 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eda1e2f83..13ac4771d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Renamed `Settings` to `settings` in the `User` database schema - Improved the language localization for Dutch (`nl`) - Improved the language localization for EspaƱol (`es`) +- Upgraded `ionicons` from version `7.4.0` to `8.0.10` ## 2.178.0 - 2025-07-05 diff --git a/apps/client/project.json b/apps/client/project.json index 215c5dae1..0b0dc0a63 100644 --- a/apps/client/project.json +++ b/apps/client/project.json @@ -179,9 +179,6 @@ { "command": "shx mkdir -p dist/apps/client/assets" }, - { - "command": "shx mkdir -p dist/apps/client/ionicons" - }, { "command": "shx cp -r apps/client/src/assets/* dist/apps/client/assets" }, @@ -197,15 +194,6 @@ { "command": "shx cp apps/client/src/assets/robots.txt dist/apps/client" }, - { - "command": "shx cp node_modules/ionicons/dist/index.js dist/apps/client" - }, - { - "command": "shx cp node_modules/ionicons/dist/ionicons.js dist/apps/client" - }, - { - "command": "shx cp -r node_modules/ionicons/dist/ionicons/* dist/apps/client/ionicons" - }, { "command": "shx cp CHANGELOG.md dist/apps/client/assets" }, diff --git a/apps/client/proxy.conf.json b/apps/client/proxy.conf.json index 94a448238..a31371d9f 100644 --- a/apps/client/proxy.conf.json +++ b/apps/client/proxy.conf.json @@ -6,9 +6,5 @@ "/assets": { "target": "http://0.0.0.0:3333", "secure": false - }, - "/ionicons": { - "target": "http://0.0.0.0:3333", - "secure": false } } diff --git a/apps/client/src/app/app.component.ts b/apps/client/src/app/app.component.ts index fb39028fc..4751c3dc7 100644 --- a/apps/client/src/app/app.component.ts +++ b/apps/client/src/app/app.component.ts @@ -25,6 +25,8 @@ import { Router } from '@angular/router'; import { DataSource } from '@prisma/client'; +import { addIcons } from 'ionicons'; +import { openOutline } from 'ionicons/icons'; import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject } from 'rxjs'; import { filter, takeUntil } from 'rxjs/operators'; @@ -116,6 +118,8 @@ export class AppComponent implements OnDestroy, OnInit { }); } }); + + addIcons({ openOutline }); } public ngOnInit() { diff --git a/apps/client/src/app/app.module.ts b/apps/client/src/app/app.module.ts index d7758cbb4..ebc03e3ca 100644 --- a/apps/client/src/app/app.module.ts +++ b/apps/client/src/app/app.module.ts @@ -19,6 +19,8 @@ import { MatTooltipModule } from '@angular/material/tooltip'; import { BrowserModule } from '@angular/platform-browser'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { ServiceWorkerModule } from '@angular/service-worker'; +import { provideIonicAngular } from '@ionic/angular/standalone'; +import { IonIcon } from '@ionic/angular/standalone'; import { provideMarkdown } from 'ngx-markdown'; import { provideNgxSkeletonLoader } from 'ngx-skeleton-loader'; import { NgxStripeModule, STRIPE_PUBLISHABLE_KEY } from 'ngx-stripe'; @@ -50,6 +52,7 @@ export function NgxStripeFactory(): string { GfLogoComponent, GfNotificationModule, GfSubscriptionInterstitialDialogModule, + IonIcon, MatAutocompleteModule, MatChipsModule, MatNativeDateModule, @@ -66,6 +69,7 @@ export function NgxStripeFactory(): string { httpResponseInterceptorProviders, LanguageService, provideHttpClient(withInterceptorsFromDi()), + provideIonicAngular(), provideMarkdown(), provideNgxSkeletonLoader(), { diff --git a/apps/client/src/app/components/access-table/access-table.component.ts b/apps/client/src/app/components/access-table/access-table.component.ts index 641156f5b..67d36a0d8 100644 --- a/apps/client/src/app/components/access-table/access-table.component.ts +++ b/apps/client/src/app/components/access-table/access-table.component.ts @@ -14,6 +14,13 @@ import { } from '@angular/core'; import { MatSnackBar } from '@angular/material/snack-bar'; import { MatTableDataSource } from '@angular/material/table'; +import { addIcons } from 'ionicons'; +import { + ellipsisHorizontal, + linkOutline, + lockClosedOutline, + lockOpenOutline +} from 'ionicons/icons'; import ms from 'ms'; @Component({ @@ -38,7 +45,14 @@ export class AccessTableComponent implements OnChanges { private clipboard: Clipboard, private notificationService: NotificationService, private snackBar: MatSnackBar - ) {} + ) { + addIcons({ + ellipsisHorizontal, + linkOutline, + lockClosedOutline, + lockOpenOutline + }); + } public ngOnChanges() { this.displayedColumns = ['alias', 'grantee', 'type', 'details']; diff --git a/apps/client/src/app/components/access-table/access-table.module.ts b/apps/client/src/app/components/access-table/access-table.module.ts index 4cbc7b580..f3846e15d 100644 --- a/apps/client/src/app/components/access-table/access-table.module.ts +++ b/apps/client/src/app/components/access-table/access-table.module.ts @@ -5,6 +5,7 @@ import { MatButtonModule } from '@angular/material/button'; import { MatMenuModule } from '@angular/material/menu'; import { MatTableModule } from '@angular/material/table'; import { RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; import { AccessTableComponent } from './access-table.component'; @@ -14,6 +15,7 @@ import { AccessTableComponent } from './access-table.component'; imports: [ ClipboardModule, CommonModule, + IonIcon, MatButtonModule, MatMenuModule, MatTableModule, diff --git a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts index 209b4a28f..16cd468e8 100644 --- a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts +++ b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts @@ -27,6 +27,12 @@ import { MatTableDataSource } from '@angular/material/table'; import { Router } from '@angular/router'; import { Big } from 'big.js'; import { format, parseISO } from 'date-fns'; +import { addIcons } from 'ionicons'; +import { + cashOutline, + swapVerticalOutline, + walletOutline +} from 'ionicons/icons'; import { isNumber } from 'lodash'; import { forkJoin, Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @@ -86,6 +92,8 @@ export class AccountDetailDialog implements OnDestroy, OnInit { this.changeDetectorRef.markForCheck(); } }); + + addIcons({ cashOutline, swapVerticalOutline, walletOutline }); } public ngOnInit() { diff --git a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.module.ts b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.module.ts index e404aaad1..46c4cb40f 100644 --- a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.module.ts +++ b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.module.ts @@ -11,6 +11,7 @@ import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatDialogModule } from '@angular/material/dialog'; import { MatTabsModule } from '@angular/material/tabs'; +import { IonIcon } from '@ionic/angular/standalone'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; import { AccountDetailDialog } from './account-detail-dialog.component'; @@ -26,6 +27,7 @@ import { AccountDetailDialog } from './account-detail-dialog.component'; GfHoldingsTableComponent, GfInvestmentChartModule, GfValueComponent, + IonIcon, MatButtonModule, MatDialogModule, MatTabsModule, diff --git a/apps/client/src/app/components/accounts-table/accounts-table.component.ts b/apps/client/src/app/components/accounts-table/accounts-table.component.ts index a130e7a27..f11c06271 100644 --- a/apps/client/src/app/components/accounts-table/accounts-table.component.ts +++ b/apps/client/src/app/components/accounts-table/accounts-table.component.ts @@ -16,6 +16,15 @@ import { MatSort } from '@angular/material/sort'; import { MatTableDataSource } from '@angular/material/table'; import { Router } from '@angular/router'; import { Account as AccountModel } from '@prisma/client'; +import { addIcons } from 'ionicons'; +import { + arrowRedoOutline, + createOutline, + documentTextOutline, + ellipsisHorizontalOutline, + eyeOffOutline, + trashOutline +} from 'ionicons/icons'; import { get } from 'lodash'; import { Subject, Subscription } from 'rxjs'; @@ -58,7 +67,16 @@ export class AccountsTableComponent implements OnChanges, OnDestroy { public constructor( private notificationService: NotificationService, private router: Router - ) {} + ) { + addIcons({ + arrowRedoOutline, + createOutline, + documentTextOutline, + ellipsisHorizontalOutline, + eyeOffOutline, + trashOutline + }); + } public ngOnChanges() { this.displayedColumns = ['status', 'account', 'platform']; diff --git a/apps/client/src/app/components/accounts-table/accounts-table.module.ts b/apps/client/src/app/components/accounts-table/accounts-table.module.ts index d7c6bf9fe..f4658f990 100644 --- a/apps/client/src/app/components/accounts-table/accounts-table.module.ts +++ b/apps/client/src/app/components/accounts-table/accounts-table.module.ts @@ -8,6 +8,7 @@ import { MatMenuModule } from '@angular/material/menu'; import { MatSortModule } from '@angular/material/sort'; import { MatTableModule } from '@angular/material/table'; import { RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; import { AccountsTableComponent } from './accounts-table.component'; @@ -19,6 +20,7 @@ import { AccountsTableComponent } from './accounts-table.component'; CommonModule, GfEntityLogoComponent, GfValueComponent, + IonIcon, MatButtonModule, MatMenuModule, MatSortModule, diff --git a/apps/client/src/app/components/admin-jobs/admin-jobs.component.ts b/apps/client/src/app/components/admin-jobs/admin-jobs.component.ts index 17b7f54da..14848a95b 100644 --- a/apps/client/src/app/components/admin-jobs/admin-jobs.component.ts +++ b/apps/client/src/app/components/admin-jobs/admin-jobs.component.ts @@ -20,6 +20,20 @@ import { import { FormBuilder, FormGroup } from '@angular/forms'; import { MatTableDataSource } from '@angular/material/table'; import { JobStatus } from 'bull'; +import { addIcons } from 'ionicons'; +import { + alertCircleOutline, + cafeOutline, + checkmarkCircleOutline, + chevronDownCircleOutline, + chevronUpCircleOutline, + ellipsisHorizontal, + ellipsisVertical, + pauseOutline, + playOutline, + removeCircleOutline, + timeOutline +} from 'ionicons/icons'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @@ -76,6 +90,20 @@ export class AdminJobsComponent implements OnDestroy, OnInit { ); } }); + + addIcons({ + alertCircleOutline, + cafeOutline, + checkmarkCircleOutline, + chevronDownCircleOutline, + chevronUpCircleOutline, + ellipsisHorizontal, + ellipsisVertical, + pauseOutline, + playOutline, + removeCircleOutline, + timeOutline + }); } public ngOnInit() { diff --git a/apps/client/src/app/components/admin-jobs/admin-jobs.module.ts b/apps/client/src/app/components/admin-jobs/admin-jobs.module.ts index cca66a04a..d3362a41c 100644 --- a/apps/client/src/app/components/admin-jobs/admin-jobs.module.ts +++ b/apps/client/src/app/components/admin-jobs/admin-jobs.module.ts @@ -5,6 +5,7 @@ import { MatButtonModule } from '@angular/material/button'; import { MatMenuModule } from '@angular/material/menu'; import { MatSelectModule } from '@angular/material/select'; import { MatTableModule } from '@angular/material/table'; +import { IonIcon } from '@ionic/angular/standalone'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; import { AdminJobsComponent } from './admin-jobs.component'; @@ -14,6 +15,7 @@ import { AdminJobsComponent } from './admin-jobs.component'; imports: [ CommonModule, FormsModule, + IonIcon, MatButtonModule, MatMenuModule, MatSelectModule, diff --git a/apps/client/src/app/components/admin-market-data/admin-market-data.component.ts b/apps/client/src/app/components/admin-market-data/admin-market-data.component.ts index dcd9ff72c..e50d2545f 100644 --- a/apps/client/src/app/components/admin-market-data/admin-market-data.component.ts +++ b/apps/client/src/app/components/admin-market-data/admin-market-data.component.ts @@ -33,6 +33,16 @@ import { MatTableDataSource } from '@angular/material/table'; import { ActivatedRoute, Router } from '@angular/router'; import { AssetSubClass, DataSource, SymbolProfile } from '@prisma/client'; import { isUUID } from 'class-validator'; +import { addIcons } from 'ionicons'; +import { + addOutline, + banOutline, + createOutline, + documentTextOutline, + ellipsisHorizontal, + ellipsisVertical, + trashOutline +} from 'ionicons/icons'; import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject } from 'rxjs'; import { distinctUntilChanged, switchMap, takeUntil } from 'rxjs/operators'; @@ -194,6 +204,16 @@ export class AdminMarketDataComponent this.loadData(); }); + + addIcons({ + addOutline, + banOutline, + createOutline, + documentTextOutline, + ellipsisHorizontal, + ellipsisVertical, + trashOutline + }); } public ngAfterViewInit() { diff --git a/apps/client/src/app/components/admin-market-data/admin-market-data.module.ts b/apps/client/src/app/components/admin-market-data/admin-market-data.module.ts index 161847f99..3787138da 100644 --- a/apps/client/src/app/components/admin-market-data/admin-market-data.module.ts +++ b/apps/client/src/app/components/admin-market-data/admin-market-data.module.ts @@ -12,6 +12,7 @@ import { MatPaginatorModule } from '@angular/material/paginator'; import { MatSortModule } from '@angular/material/sort'; import { MatTableModule } from '@angular/material/table'; import { RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; import { AdminMarketDataComponent } from './admin-market-data.component'; @@ -29,6 +30,7 @@ import { GfCreateAssetProfileDialogModule } from './create-asset-profile-dialog/ GfPremiumIndicatorComponent, GfSymbolModule, GfValueComponent, + IonIcon, MatButtonModule, MatCheckboxModule, MatMenuModule, diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts index c52d9137d..958679fcd 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts @@ -47,6 +47,8 @@ import { } from '@prisma/client'; import { format } from 'date-fns'; import { StatusCodes } from 'http-status-codes'; +import { addIcons } from 'ionicons'; +import { createOutline, ellipsisVertical } from 'ionicons/icons'; import ms from 'ms'; import { EMPTY, Subject } from 'rxjs'; import { catchError, takeUntil } from 'rxjs/operators'; @@ -166,7 +168,9 @@ export class AssetProfileDialog implements OnDestroy, OnInit { private notificationService: NotificationService, private snackBar: MatSnackBar, private userService: UserService - ) {} + ) { + addIcons({ createOutline, ellipsisVertical }); + } public get canEditAssetProfileIdentifier() { return ( diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.module.ts b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.module.ts index 78c4de0bf..7174a60e0 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.module.ts +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.module.ts @@ -19,6 +19,7 @@ import { MatInputModule } from '@angular/material/input'; import { MatMenuModule } from '@angular/material/menu'; import { MatSelectModule } from '@angular/material/select'; import { MatSnackBarModule } from '@angular/material/snack-bar'; +import { IonIcon } from '@ionic/angular/standalone'; import { AssetProfileDialog } from './asset-profile-dialog.component'; @@ -34,6 +35,7 @@ import { AssetProfileDialog } from './asset-profile-dialog.component'; GfPortfolioProportionChartComponent, GfSymbolAutocompleteComponent, GfValueComponent, + IonIcon, MatButtonModule, MatCheckboxModule, MatDialogModule, diff --git a/apps/client/src/app/components/admin-overview/admin-overview.component.ts b/apps/client/src/app/components/admin-overview/admin-overview.component.ts index 23578cff1..377dd5f20 100644 --- a/apps/client/src/app/components/admin-overview/admin-overview.component.ts +++ b/apps/client/src/app/components/admin-overview/admin-overview.component.ts @@ -28,6 +28,14 @@ import { formatDistanceToNowStrict, parseISO } from 'date-fns'; +import { addIcons } from 'ionicons'; +import { + closeCircleOutline, + ellipsisHorizontal, + informationCircleOutline, + syncOutline, + trashOutline +} from 'ionicons/icons'; import ms, { StringValue } from 'ms'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @@ -94,6 +102,14 @@ export class AdminOverviewComponent implements OnDestroy, OnInit { ); } }); + + addIcons({ + closeCircleOutline, + ellipsisHorizontal, + informationCircleOutline, + syncOutline, + trashOutline + }); } public ngOnInit() { diff --git a/apps/client/src/app/components/admin-overview/admin-overview.module.ts b/apps/client/src/app/components/admin-overview/admin-overview.module.ts index 1c5fba202..a55a65427 100644 --- a/apps/client/src/app/components/admin-overview/admin-overview.module.ts +++ b/apps/client/src/app/components/admin-overview/admin-overview.module.ts @@ -11,6 +11,7 @@ import { MatSelectModule } from '@angular/material/select'; import { MatSlideToggleModule } from '@angular/material/slide-toggle'; import { MatSnackBarModule } from '@angular/material/snack-bar'; import { RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; import { AdminOverviewComponent } from './admin-overview.component'; @@ -21,6 +22,7 @@ import { AdminOverviewComponent } from './admin-overview.component'; CommonModule, FormsModule, GfValueComponent, + IonIcon, MatButtonModule, MatCardModule, MatMenuModule, diff --git a/apps/client/src/app/components/admin-platform/admin-platform.component.ts b/apps/client/src/app/components/admin-platform/admin-platform.component.ts index 1f84c2b8c..a37ba9a6c 100644 --- a/apps/client/src/app/components/admin-platform/admin-platform.component.ts +++ b/apps/client/src/app/components/admin-platform/admin-platform.component.ts @@ -19,6 +19,12 @@ import { MatSort } from '@angular/material/sort'; import { MatTableDataSource } from '@angular/material/table'; import { ActivatedRoute, Router } from '@angular/router'; import { Platform } from '@prisma/client'; +import { addIcons } from 'ionicons'; +import { + createOutline, + ellipsisHorizontal, + trashOutline +} from 'ionicons/icons'; import { get } from 'lodash'; import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject, takeUntil } from 'rxjs'; @@ -70,6 +76,8 @@ export class AdminPlatformComponent implements OnInit, OnDestroy { } } }); + + addIcons({ createOutline, ellipsisHorizontal, trashOutline }); } public ngOnInit() { diff --git a/apps/client/src/app/components/admin-platform/admin-platform.module.ts b/apps/client/src/app/components/admin-platform/admin-platform.module.ts index beb3923f7..ab1382226 100644 --- a/apps/client/src/app/components/admin-platform/admin-platform.module.ts +++ b/apps/client/src/app/components/admin-platform/admin-platform.module.ts @@ -7,6 +7,7 @@ import { MatMenuModule } from '@angular/material/menu'; import { MatSortModule } from '@angular/material/sort'; import { MatTableModule } from '@angular/material/table'; import { RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; import { AdminPlatformComponent } from './admin-platform.component'; import { GfCreateOrUpdatePlatformDialogModule } from './create-or-update-platform-dialog/create-or-update-platform-dialog.module'; @@ -18,6 +19,7 @@ import { GfCreateOrUpdatePlatformDialogModule } from './create-or-update-platfor CommonModule, GfCreateOrUpdatePlatformDialogModule, GfEntityLogoComponent, + IonIcon, MatButtonModule, MatMenuModule, MatSortModule, diff --git a/apps/client/src/app/components/admin-settings/admin-settings.component.ts b/apps/client/src/app/components/admin-settings/admin-settings.component.ts index 42cd13a0b..9acbad388 100644 --- a/apps/client/src/app/components/admin-settings/admin-settings.component.ts +++ b/apps/client/src/app/components/admin-settings/admin-settings.component.ts @@ -20,6 +20,8 @@ import { OnInit } from '@angular/core'; import { MatTableDataSource } from '@angular/material/table'; +import { addIcons } from 'ionicons'; +import { ellipsisHorizontal, trashOutline } from 'ionicons/icons'; import { catchError, filter, of, Subject, takeUntil } from 'rxjs'; @Component({ @@ -53,7 +55,9 @@ export class AdminSettingsComponent implements OnDestroy, OnInit { private dataService: DataService, private notificationService: NotificationService, private userService: UserService - ) {} + ) { + addIcons({ ellipsisHorizontal, trashOutline }); + } public ngOnInit() { this.userService.stateChanged diff --git a/apps/client/src/app/components/admin-settings/admin-settings.module.ts b/apps/client/src/app/components/admin-settings/admin-settings.module.ts index e6bef6f7b..10b932379 100644 --- a/apps/client/src/app/components/admin-settings/admin-settings.module.ts +++ b/apps/client/src/app/components/admin-settings/admin-settings.module.ts @@ -13,6 +13,7 @@ import { MatMenuModule } from '@angular/material/menu'; import { MatProgressBarModule } from '@angular/material/progress-bar'; import { MatTableModule } from '@angular/material/table'; import { RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; import { AdminSettingsComponent } from './admin-settings.component'; @@ -27,6 +28,7 @@ import { AdminSettingsComponent } from './admin-settings.component'; GfEntityLogoComponent, GfPremiumIndicatorComponent, GfValueComponent, + IonIcon, MatButtonModule, MatCardModule, MatMenuModule, diff --git a/apps/client/src/app/components/admin-tag/admin-tag.component.ts b/apps/client/src/app/components/admin-tag/admin-tag.component.ts index bd7432b33..879ba9bbb 100644 --- a/apps/client/src/app/components/admin-tag/admin-tag.component.ts +++ b/apps/client/src/app/components/admin-tag/admin-tag.component.ts @@ -18,6 +18,12 @@ import { MatSort } from '@angular/material/sort'; import { MatTableDataSource } from '@angular/material/table'; import { ActivatedRoute, Router } from '@angular/router'; import { Tag } from '@prisma/client'; +import { addIcons } from 'ionicons'; +import { + createOutline, + ellipsisHorizontal, + trashOutline +} from 'ionicons/icons'; import { get } from 'lodash'; import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject, takeUntil } from 'rxjs'; @@ -68,6 +74,8 @@ export class AdminTagComponent implements OnInit, OnDestroy { } } }); + + addIcons({ createOutline, ellipsisHorizontal, trashOutline }); } public ngOnInit() { diff --git a/apps/client/src/app/components/admin-tag/admin-tag.module.ts b/apps/client/src/app/components/admin-tag/admin-tag.module.ts index aec5ac5a6..abb5b9c7b 100644 --- a/apps/client/src/app/components/admin-tag/admin-tag.module.ts +++ b/apps/client/src/app/components/admin-tag/admin-tag.module.ts @@ -5,6 +5,7 @@ import { MatMenuModule } from '@angular/material/menu'; import { MatSortModule } from '@angular/material/sort'; import { MatTableModule } from '@angular/material/table'; import { RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; import { AdminTagComponent } from './admin-tag.component'; import { GfCreateOrUpdateTagDialogModule } from './create-or-update-tag-dialog/create-or-update-tag-dialog.module'; @@ -15,6 +16,7 @@ import { GfCreateOrUpdateTagDialogModule } from './create-or-update-tag-dialog/c imports: [ CommonModule, GfCreateOrUpdateTagDialogModule, + IonIcon, MatButtonModule, MatMenuModule, MatSortModule, diff --git a/apps/client/src/app/components/admin-users/admin-users.component.ts b/apps/client/src/app/components/admin-users/admin-users.component.ts index 6f1202476..962c0ffe1 100644 --- a/apps/client/src/app/components/admin-users/admin-users.component.ts +++ b/apps/client/src/app/components/admin-users/admin-users.component.ts @@ -18,6 +18,13 @@ import { formatDistanceToNowStrict, parseISO } from 'date-fns'; +import { addIcons } from 'ionicons'; +import { + contractOutline, + ellipsisHorizontal, + keyOutline, + trashOutline +} from 'ionicons/icons'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @@ -107,6 +114,8 @@ export class AdminUsersComponent implements OnDestroy, OnInit { ); } }); + + addIcons({ contractOutline, ellipsisHorizontal, keyOutline, trashOutline }); } public ngOnInit() { diff --git a/apps/client/src/app/components/admin-users/admin-users.module.ts b/apps/client/src/app/components/admin-users/admin-users.module.ts index ca3131797..295849a13 100644 --- a/apps/client/src/app/components/admin-users/admin-users.module.ts +++ b/apps/client/src/app/components/admin-users/admin-users.module.ts @@ -7,6 +7,7 @@ import { MatButtonModule } from '@angular/material/button'; import { MatMenuModule } from '@angular/material/menu'; import { MatPaginatorModule } from '@angular/material/paginator'; import { MatTableModule } from '@angular/material/table'; +import { IonIcon } from '@ionic/angular/standalone'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; import { AdminUsersComponent } from './admin-users.component'; @@ -18,6 +19,7 @@ import { AdminUsersComponent } from './admin-users.component'; CommonModule, GfPremiumIndicatorComponent, GfValueComponent, + IonIcon, MatButtonModule, MatMenuModule, MatPaginatorModule, diff --git a/apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts b/apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts index d6589eda5..d557ae88a 100644 --- a/apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts +++ b/apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts @@ -40,6 +40,8 @@ import { } from 'chart.js'; import 'chartjs-adapter-date-fns'; import annotationPlugin from 'chartjs-plugin-annotation'; +import { addIcons } from 'ionicons'; +import { arrowForwardOutline } from 'ionicons/icons'; @Component({ selector: 'gf-benchmark-comparator', @@ -80,6 +82,8 @@ export class BenchmarkComparatorComponent implements OnChanges, OnDestroy { Tooltip.positioners['top'] = (_elements, position: TooltipPosition) => getTooltipPositionerMapTop(this.chart, position); + + addIcons({ arrowForwardOutline }); } public ngOnChanges() { diff --git a/apps/client/src/app/components/benchmark-comparator/benchmark-comparator.module.ts b/apps/client/src/app/components/benchmark-comparator/benchmark-comparator.module.ts index 1bd4b0792..c2df436a4 100644 --- a/apps/client/src/app/components/benchmark-comparator/benchmark-comparator.module.ts +++ b/apps/client/src/app/components/benchmark-comparator/benchmark-comparator.module.ts @@ -5,6 +5,7 @@ import { NgModule } from '@angular/core'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatSelectModule } from '@angular/material/select'; import { RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; import { BenchmarkComparatorComponent } from './benchmark-comparator.component'; @@ -16,6 +17,7 @@ import { BenchmarkComparatorComponent } from './benchmark-comparator.component'; CommonModule, FormsModule, GfPremiumIndicatorComponent, + IonIcon, MatSelectModule, NgxSkeletonLoaderModule, ReactiveFormsModule, diff --git a/apps/client/src/app/components/dialog-footer/dialog-footer.component.ts b/apps/client/src/app/components/dialog-footer/dialog-footer.component.ts index 1f27f9b27..923b153b3 100644 --- a/apps/client/src/app/components/dialog-footer/dialog-footer.component.ts +++ b/apps/client/src/app/components/dialog-footer/dialog-footer.component.ts @@ -5,6 +5,8 @@ import { Input, Output } from '@angular/core'; +import { addIcons } from 'ionicons'; +import { close } from 'ionicons/icons'; @Component({ host: { class: 'justify-content-center' }, @@ -19,6 +21,10 @@ export class DialogFooterComponent { @Output() closeButtonClicked = new EventEmitter(); + public constructor() { + addIcons({ close }); + } + public onClickCloseButton() { this.closeButtonClicked.emit(); } diff --git a/apps/client/src/app/components/dialog-footer/dialog-footer.module.ts b/apps/client/src/app/components/dialog-footer/dialog-footer.module.ts index b9965d47d..486068f72 100644 --- a/apps/client/src/app/components/dialog-footer/dialog-footer.module.ts +++ b/apps/client/src/app/components/dialog-footer/dialog-footer.module.ts @@ -1,13 +1,14 @@ import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; +import { IonIcon } from '@ionic/angular/standalone'; import { DialogFooterComponent } from './dialog-footer.component'; @NgModule({ declarations: [DialogFooterComponent], exports: [DialogFooterComponent], - imports: [CommonModule, MatButtonModule], + imports: [CommonModule, IonIcon, MatButtonModule], schemas: [CUSTOM_ELEMENTS_SCHEMA] }) export class GfDialogFooterModule {} diff --git a/apps/client/src/app/components/dialog-header/dialog-header.component.ts b/apps/client/src/app/components/dialog-header/dialog-header.component.ts index 0ff9d1560..03a5357b5 100644 --- a/apps/client/src/app/components/dialog-header/dialog-header.component.ts +++ b/apps/client/src/app/components/dialog-header/dialog-header.component.ts @@ -5,6 +5,8 @@ import { Input, Output } from '@angular/core'; +import { addIcons } from 'ionicons'; +import { close } from 'ionicons/icons'; @Component({ host: { class: 'justify-content-center' }, @@ -21,6 +23,10 @@ export class DialogHeaderComponent { @Output() closeButtonClicked = new EventEmitter(); + public constructor() { + addIcons({ close }); + } + public onClickCloseButton() { this.closeButtonClicked.emit(); } diff --git a/apps/client/src/app/components/dialog-header/dialog-header.module.ts b/apps/client/src/app/components/dialog-header/dialog-header.module.ts index 554e3f5e5..da5c2ec28 100644 --- a/apps/client/src/app/components/dialog-header/dialog-header.module.ts +++ b/apps/client/src/app/components/dialog-header/dialog-header.module.ts @@ -1,13 +1,14 @@ import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; +import { IonIcon } from '@ionic/angular/standalone'; import { DialogHeaderComponent } from './dialog-header.component'; @NgModule({ declarations: [DialogHeaderComponent], exports: [DialogHeaderComponent], - imports: [CommonModule, MatButtonModule], + imports: [CommonModule, IonIcon, MatButtonModule], schemas: [CUSTOM_ELEMENTS_SCHEMA] }) export class GfDialogHeaderModule {} diff --git a/apps/client/src/app/components/header/header.component.ts b/apps/client/src/app/components/header/header.component.ts index 4168fc1ef..2933cf93d 100644 --- a/apps/client/src/app/components/header/header.component.ts +++ b/apps/client/src/app/components/header/header.component.ts @@ -29,6 +29,16 @@ import { import { MatDialog } from '@angular/material/dialog'; import { MatMenuTrigger } from '@angular/material/menu'; import { Router } from '@angular/router'; +import { addIcons } from 'ionicons'; +import { + closeOutline, + logoGithub, + menuOutline, + optionsOutline, + personCircleOutline, + radioButtonOffOutline, + radioButtonOnOutline +} from 'ionicons/icons'; import { EMPTY, Subject } from 'rxjs'; import { catchError, takeUntil } from 'rxjs/operators'; @@ -116,6 +126,16 @@ export class HeaderComponent implements OnChanges { .subscribe((impersonationId) => { this.impersonationId = impersonationId; }); + + addIcons({ + closeOutline, + logoGithub, + menuOutline, + optionsOutline, + personCircleOutline, + radioButtonOffOutline, + radioButtonOnOutline + }); } public ngOnChanges() { diff --git a/apps/client/src/app/components/header/header.module.ts b/apps/client/src/app/components/header/header.module.ts index 402960b74..847a4ef4d 100644 --- a/apps/client/src/app/components/header/header.module.ts +++ b/apps/client/src/app/components/header/header.module.ts @@ -10,6 +10,7 @@ import { MatButtonModule } from '@angular/material/button'; import { MatMenuModule } from '@angular/material/menu'; import { MatToolbarModule } from '@angular/material/toolbar'; import { RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; import { HeaderComponent } from './header.component'; @@ -21,6 +22,7 @@ import { HeaderComponent } from './header.component'; GfAssistantComponent, GfLogoComponent, GfPremiumIndicatorComponent, + IonIcon, LoginWithAccessTokenDialogModule, MatBadgeModule, MatButtonModule, diff --git a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts index a90c36c3d..bf489013a 100644 --- a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts +++ b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts @@ -47,8 +47,17 @@ import { SortDirection } from '@angular/material/sort'; import { MatTableDataSource } from '@angular/material/table'; import { MatTabsModule } from '@angular/material/tabs'; import { Router } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; import { Account, MarketData, Tag } from '@prisma/client'; import { format, isSameMonth, isToday, parseISO } from 'date-fns'; +import { addIcons } from 'ionicons'; +import { + flagOutline, + readerOutline, + serverOutline, + swapVerticalOutline, + walletOutline +} from 'ionicons/icons'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; import { Subject } from 'rxjs'; import { switchMap, takeUntil } from 'rxjs/operators'; @@ -70,6 +79,7 @@ import { HoldingDetailDialogParams } from './interfaces/interfaces'; GfPortfolioProportionChartComponent, GfTagsSelectorComponent, GfValueComponent, + IonIcon, MatButtonModule, MatChipsModule, MatDialogModule, @@ -140,7 +150,15 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { private formBuilder: FormBuilder, private router: Router, private userService: UserService - ) {} + ) { + addIcons({ + flagOutline, + readerOutline, + serverOutline, + swapVerticalOutline, + walletOutline + }); + } public ngOnInit() { this.activityForm = this.formBuilder.group({ diff --git a/apps/client/src/app/components/home-holdings/home-holdings.component.ts b/apps/client/src/app/components/home-holdings/home-holdings.component.ts index 735365353..192b09b9e 100644 --- a/apps/client/src/app/components/home-holdings/home-holdings.component.ts +++ b/apps/client/src/app/components/home-holdings/home-holdings.component.ts @@ -14,6 +14,8 @@ import { HoldingType, HoldingsViewMode } from '@ghostfolio/common/types'; import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; import { FormControl } from '@angular/forms'; import { Router } from '@angular/router'; +import { addIcons } from 'ionicons'; +import { gridOutline, reorderFourOutline } from 'ionicons/icons'; import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @@ -53,7 +55,9 @@ export class HomeHoldingsComponent implements OnDestroy, OnInit { private impersonationStorageService: ImpersonationStorageService, private router: Router, private userService: UserService - ) {} + ) { + addIcons({ gridOutline, reorderFourOutline }); + } public ngOnInit() { this.deviceType = this.deviceService.getDeviceInfo().deviceType; diff --git a/apps/client/src/app/components/home-holdings/home-holdings.module.ts b/apps/client/src/app/components/home-holdings/home-holdings.module.ts index df951c1a8..b0b3b111e 100644 --- a/apps/client/src/app/components/home-holdings/home-holdings.module.ts +++ b/apps/client/src/app/components/home-holdings/home-holdings.module.ts @@ -8,6 +8,7 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; import { MatButtonToggleModule } from '@angular/material/button-toggle'; import { RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; import { HomeHoldingsComponent } from './home-holdings.component'; @@ -19,6 +20,7 @@ import { HomeHoldingsComponent } from './home-holdings.component'; GfHoldingsTableComponent, GfToggleModule, GfTreemapChartComponent, + IonIcon, MatButtonModule, MatButtonToggleModule, ReactiveFormsModule, diff --git a/apps/client/src/app/components/home-watchlist/home-watchlist.component.ts b/apps/client/src/app/components/home-watchlist/home-watchlist.component.ts index 5c0b3fa50..7f7cfb054 100644 --- a/apps/client/src/app/components/home-watchlist/home-watchlist.component.ts +++ b/apps/client/src/app/components/home-watchlist/home-watchlist.component.ts @@ -23,6 +23,9 @@ import { import { MatButtonModule } from '@angular/material/button'; import { MatDialog } from '@angular/material/dialog'; import { ActivatedRoute, Router, RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; +import { addIcons } from 'ionicons'; +import { addOutline } from 'ionicons/icons'; import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @@ -36,6 +39,7 @@ import { CreateWatchlistItemDialogParams } from './create-watchlist-item-dialog/ CommonModule, GfBenchmarkComponent, GfPremiumIndicatorComponent, + IonIcon, MatButtonModule, RouterModule ], @@ -103,6 +107,8 @@ export class HomeWatchlistComponent implements OnDestroy, OnInit { this.changeDetectorRef.markForCheck(); } }); + + addIcons({ addOutline }); } public ngOnInit() { diff --git a/apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.component.ts b/apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.component.ts index 8ee6f59d8..9ee0adcdc 100644 --- a/apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.component.ts +++ b/apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.component.ts @@ -9,6 +9,8 @@ import { ChangeDetectionStrategy, Component, Inject } from '@angular/core'; import { MatCheckboxChange } from '@angular/material/checkbox'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { Router } from '@angular/router'; +import { addIcons } from 'ionicons'; +import { eyeOffOutline, eyeOutline } from 'ionicons/icons'; @Component({ selector: 'gf-login-with-access-token-dialog', @@ -27,7 +29,9 @@ export class LoginWithAccessTokenDialog { private router: Router, private settingsStorageService: SettingsStorageService, private tokenStorageService: TokenStorageService - ) {} + ) { + addIcons({ eyeOffOutline, eyeOutline }); + } public onChangeStaySignedIn(aValue: MatCheckboxChange) { this.settingsStorageService.setSetting( diff --git a/apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.module.ts b/apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.module.ts index b0f2e75c6..d6035ae52 100644 --- a/apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.module.ts +++ b/apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.module.ts @@ -7,6 +7,7 @@ import { MatCheckboxModule } from '@angular/material/checkbox'; import { MatDialogModule } from '@angular/material/dialog'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatInputModule } from '@angular/material/input'; +import { IonIcon } from '@ionic/angular/standalone'; import { GfDialogHeaderModule } from '../dialog-header/dialog-header.module'; import { LoginWithAccessTokenDialog } from './login-with-access-token-dialog.component'; @@ -17,6 +18,7 @@ import { LoginWithAccessTokenDialog } from './login-with-access-token-dialog.com CommonModule, FormsModule, GfDialogHeaderModule, + IonIcon, MatButtonModule, MatCheckboxModule, MatDialogModule, diff --git a/apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts b/apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts index 0c575d985..caef1082f 100644 --- a/apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts +++ b/apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts @@ -18,6 +18,8 @@ import { ViewChild } from '@angular/core'; import { CountUp } from 'countup.js'; +import { addIcons } from 'ionicons'; +import { timeOutline } from 'ionicons/icons'; import { isNumber } from 'lodash'; @Component({ @@ -41,7 +43,9 @@ export class PortfolioPerformanceComponent implements OnChanges { @ViewChild('value') value: ElementRef; - public constructor(private notificationService: NotificationService) {} + public constructor(private notificationService: NotificationService) { + addIcons({ timeOutline }); + } public ngOnChanges() { this.precision = this.precision >= 0 ? this.precision : 2; diff --git a/apps/client/src/app/components/portfolio-performance/portfolio-performance.module.ts b/apps/client/src/app/components/portfolio-performance/portfolio-performance.module.ts index 5c62cca87..e5b606255 100644 --- a/apps/client/src/app/components/portfolio-performance/portfolio-performance.module.ts +++ b/apps/client/src/app/components/portfolio-performance/portfolio-performance.module.ts @@ -2,6 +2,7 @@ import { GfValueComponent } from '@ghostfolio/ui/value'; import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; +import { IonIcon } from '@ionic/angular/standalone'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; import { PortfolioPerformanceComponent } from './portfolio-performance.component'; @@ -9,7 +10,7 @@ import { PortfolioPerformanceComponent } from './portfolio-performance.component @NgModule({ declarations: [PortfolioPerformanceComponent], exports: [PortfolioPerformanceComponent], - imports: [CommonModule, GfValueComponent, NgxSkeletonLoaderModule], + imports: [CommonModule, GfValueComponent, IonIcon, NgxSkeletonLoaderModule], schemas: [CUSTOM_ELEMENTS_SCHEMA] }) export class GfPortfolioPerformanceModule {} diff --git a/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts b/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts index a44eacc93..9bc8ed773 100644 --- a/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts +++ b/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts @@ -12,6 +12,11 @@ import { Output } from '@angular/core'; import { formatDistanceToNow } from 'date-fns'; +import { addIcons } from 'ionicons'; +import { + ellipsisHorizontalCircleOutline, + informationCircleOutline +} from 'ionicons/icons'; @Component({ selector: 'gf-portfolio-summary', @@ -36,7 +41,9 @@ export class PortfolioSummaryComponent implements OnChanges { ); public timeInMarket: string; - public constructor(private notificationService: NotificationService) {} + public constructor(private notificationService: NotificationService) { + addIcons({ ellipsisHorizontalCircleOutline, informationCircleOutline }); + } public ngOnChanges() { if (this.summary) { diff --git a/apps/client/src/app/components/rule/rule.component.ts b/apps/client/src/app/components/rule/rule.component.ts index 7c358e1cb..4ea7d0ec6 100644 --- a/apps/client/src/app/components/rule/rule.component.ts +++ b/apps/client/src/app/components/rule/rule.component.ts @@ -14,6 +14,13 @@ import { Output } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; +import { addIcons } from 'ionicons'; +import { + checkmarkCircleOutline, + ellipsisHorizontal, + removeCircleOutline, + warningOutline +} from 'ionicons/icons'; import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject, takeUntil } from 'rxjs'; @@ -41,7 +48,14 @@ export class RuleComponent implements OnInit { public constructor( private deviceService: DeviceDetectorService, private dialog: MatDialog - ) {} + ) { + addIcons({ + checkmarkCircleOutline, + ellipsisHorizontal, + removeCircleOutline, + warningOutline + }); + } public ngOnInit() { this.deviceType = this.deviceService.getDeviceInfo().deviceType; diff --git a/apps/client/src/app/components/rule/rule.module.ts b/apps/client/src/app/components/rule/rule.module.ts index d2cba5b25..43c22e55c 100644 --- a/apps/client/src/app/components/rule/rule.module.ts +++ b/apps/client/src/app/components/rule/rule.module.ts @@ -2,6 +2,7 @@ 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 { IonIcon } from '@ionic/angular/standalone'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; import { RuleComponent } from './rule.component'; @@ -11,6 +12,7 @@ import { RuleComponent } from './rule.component'; exports: [RuleComponent], imports: [ CommonModule, + IonIcon, MatButtonModule, MatMenuModule, NgxSkeletonLoaderModule diff --git a/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts b/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts index 5d2df3797..48f17b886 100644 --- a/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts +++ b/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts @@ -8,6 +8,8 @@ import { OnInit } from '@angular/core'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { addIcons } from 'ionicons'; +import { arrowForwardOutline, checkmarkCircleOutline } from 'ionicons/icons'; import ms from 'ms'; import { interval, Subject } from 'rxjs'; import { take, takeUntil, tap } from 'rxjs/operators'; @@ -41,6 +43,8 @@ export class SubscriptionInterstitialDialog implements OnInit { this.variantIndex = Math.floor( Math.random() * SubscriptionInterstitialDialog.VARIANTS_COUNT ); + + addIcons({ arrowForwardOutline, checkmarkCircleOutline }); } public ngOnInit() { diff --git a/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.module.ts b/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.module.ts index bdb2614b5..2f52f1b3c 100644 --- a/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.module.ts +++ b/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.module.ts @@ -6,6 +6,7 @@ import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatDialogModule } from '@angular/material/dialog'; import { RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; import { SubscriptionInterstitialDialog } from './subscription-interstitial-dialog.component'; @@ -15,6 +16,7 @@ import { SubscriptionInterstitialDialog } from './subscription-interstitial-dial CommonModule, GfMembershipCardComponent, GfPremiumIndicatorComponent, + IonIcon, MatButtonModule, MatDialogModule, RouterModule diff --git a/apps/client/src/app/components/user-account-access/user-account-access.component.ts b/apps/client/src/app/components/user-account-access/user-account-access.component.ts index 285f7a603..11a3f57a4 100644 --- a/apps/client/src/app/components/user-account-access/user-account-access.component.ts +++ b/apps/client/src/app/components/user-account-access/user-account-access.component.ts @@ -17,6 +17,8 @@ import { import { FormBuilder, Validators } from '@angular/forms'; import { MatDialog } from '@angular/material/dialog'; import { ActivatedRoute, Router } from '@angular/router'; +import { addIcons } from 'ionicons'; +import { addOutline, eyeOffOutline, eyeOutline } from 'ionicons/icons'; import { DeviceDetectorService } from 'ngx-device-detector'; import { EMPTY, Subject } from 'rxjs'; import { catchError, takeUntil } from 'rxjs/operators'; @@ -97,6 +99,8 @@ export class UserAccountAccessComponent implements OnDestroy, OnInit { this.openCreateAccessDialog(); } }); + + addIcons({ addOutline, eyeOffOutline, eyeOutline }); } public ngOnInit() { diff --git a/apps/client/src/app/components/user-account-access/user-account-access.module.ts b/apps/client/src/app/components/user-account-access/user-account-access.module.ts index 18bc77a08..d38a4665e 100644 --- a/apps/client/src/app/components/user-account-access/user-account-access.module.ts +++ b/apps/client/src/app/components/user-account-access/user-account-access.module.ts @@ -9,6 +9,7 @@ import { MatDialogModule } from '@angular/material/dialog'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatInputModule } from '@angular/material/input'; import { RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; import { GfCreateOrUpdateAccessDialogModule } from './create-or-update-access-dialog/create-or-update-access-dialog.module'; import { UserAccountAccessComponent } from './user-account-access.component'; @@ -21,6 +22,7 @@ import { UserAccountAccessComponent } from './user-account-access.component'; GfCreateOrUpdateAccessDialogModule, GfPortfolioAccessTableModule, GfPremiumIndicatorComponent, + IonIcon, MatButtonModule, MatDialogModule, MatFormFieldModule, diff --git a/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts b/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts index 1ee23ff8a..d4683421d 100644 --- a/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts +++ b/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -24,6 +24,8 @@ import { FormBuilder, Validators } from '@angular/forms'; import { MatSlideToggleChange } from '@angular/material/slide-toggle'; import { MatSnackBar } from '@angular/material/snack-bar'; import { format, parseISO } from 'date-fns'; +import { addIcons } from 'ionicons'; +import { eyeOffOutline, eyeOutline } from 'ionicons/icons'; import ms from 'ms'; import { EMPTY, Subject, throwError } from 'rxjs'; import { catchError, takeUntil } from 'rxjs/operators'; @@ -112,6 +114,8 @@ export class UserAccountSettingsComponent implements OnDestroy, OnInit { this.changeDetectorRef.markForCheck(); } }); + + addIcons({ eyeOffOutline, eyeOutline }); } public ngOnInit() { diff --git a/apps/client/src/app/components/user-account-settings/user-account-settings.module.ts b/apps/client/src/app/components/user-account-settings/user-account-settings.module.ts index e0fe2e1e2..3b82dff51 100644 --- a/apps/client/src/app/components/user-account-settings/user-account-settings.module.ts +++ b/apps/client/src/app/components/user-account-settings/user-account-settings.module.ts @@ -10,6 +10,7 @@ import { MatInputModule } from '@angular/material/input'; import { MatSelectModule } from '@angular/material/select'; import { MatSlideToggleModule } from '@angular/material/slide-toggle'; import { RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; import { UserAccountSettingsComponent } from './user-account-settings.component'; @@ -20,6 +21,7 @@ import { UserAccountSettingsComponent } from './user-account-settings.component' CommonModule, FormsModule, GfValueComponent, + IonIcon, MatButtonModule, MatCardModule, MatFormFieldModule, diff --git a/apps/client/src/app/pages/about/about-page.component.ts b/apps/client/src/app/pages/about/about-page.component.ts index 7a71d42f7..4fe6a57e3 100644 --- a/apps/client/src/app/pages/about/about-page.component.ts +++ b/apps/client/src/app/pages/about/about-page.component.ts @@ -13,13 +13,23 @@ import { } from '@angular/core'; import { MatTabsModule } from '@angular/material/tabs'; import { RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; +import { addIcons } from 'ionicons'; +import { + documentTextOutline, + happyOutline, + informationCircleOutline, + ribbonOutline, + shieldCheckmarkOutline, + sparklesOutline +} from 'ionicons/icons'; import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @Component({ host: { class: 'page has-tabs' }, - imports: [MatTabsModule, RouterModule], + imports: [IonIcon, MatTabsModule, RouterModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], selector: 'gf-about-page', styleUrls: ['./about-page.scss'], @@ -94,6 +104,15 @@ export class AboutPageComponent implements OnDestroy, OnInit { routerLink: publicRoutes.about.subRoutes.ossFriends.routerLink }); }); + + addIcons({ + documentTextOutline, + happyOutline, + informationCircleOutline, + ribbonOutline, + shieldCheckmarkOutline, + sparklesOutline + }); } public ngOnInit() { diff --git a/apps/client/src/app/pages/about/oss-friends/oss-friends-page.component.ts b/apps/client/src/app/pages/about/oss-friends/oss-friends-page.component.ts index 04e77bef0..c34a4073e 100644 --- a/apps/client/src/app/pages/about/oss-friends/oss-friends-page.component.ts +++ b/apps/client/src/app/pages/about/oss-friends/oss-friends-page.component.ts @@ -1,12 +1,15 @@ import { Component, OnDestroy } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatCardModule } from '@angular/material/card'; +import { IonIcon } from '@ionic/angular/standalone'; +import { addIcons } from 'ionicons'; +import { arrowForwardOutline } from 'ionicons/icons'; import { Subject } from 'rxjs'; const ossFriends = require('../../../../assets/oss-friends.json'); @Component({ - imports: [MatButtonModule, MatCardModule], + imports: [IonIcon, MatButtonModule, MatCardModule], selector: 'gf-oss-friends-page', styleUrls: ['./oss-friends-page.scss'], templateUrl: './oss-friends-page.html' @@ -16,6 +19,10 @@ export class OpenSourceSoftwareFriendsPageComponent implements OnDestroy { private unsubscribeSubject = new Subject(); + public constructor() { + addIcons({ arrowForwardOutline }); + } + public ngOnDestroy() { this.unsubscribeSubject.next(); this.unsubscribeSubject.complete(); diff --git a/apps/client/src/app/pages/about/overview/about-overview-page.component.ts b/apps/client/src/app/pages/about/overview/about-overview-page.component.ts index 1f01cd58a..707b97e89 100644 --- a/apps/client/src/app/pages/about/overview/about-overview-page.component.ts +++ b/apps/client/src/app/pages/about/overview/about-overview-page.component.ts @@ -14,11 +14,20 @@ import { } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; +import { addIcons } from 'ionicons'; +import { + logoGithub, + logoLinkedin, + logoSlack, + logoX, + mail +} from 'ionicons/icons'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @Component({ - imports: [CommonModule, MatButtonModule, RouterModule], + imports: [CommonModule, IonIcon, MatButtonModule, RouterModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], selector: 'gf-about-overview-page', styleUrls: ['./about-overview-page.scss'], @@ -52,6 +61,8 @@ export class AboutOverviewPageComponent implements OnDestroy, OnInit { globalPermissions, permissions.enableSubscription ); + + addIcons({ logoGithub, logoLinkedin, logoSlack, logoX, mail }); } public ngOnInit() { diff --git a/apps/client/src/app/pages/accounts/accounts-page.component.ts b/apps/client/src/app/pages/accounts/accounts-page.component.ts index 70dfa028e..8d1db08b5 100644 --- a/apps/client/src/app/pages/accounts/accounts-page.component.ts +++ b/apps/client/src/app/pages/accounts/accounts-page.component.ts @@ -14,6 +14,8 @@ import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; import { ActivatedRoute, Router } from '@angular/router'; import { Account as AccountModel } from '@prisma/client'; +import { addIcons } from 'ionicons'; +import { addOutline } from 'ionicons/icons'; import { DeviceDetectorService } from 'ngx-device-detector'; import { EMPTY, Subject, Subscription } from 'rxjs'; import { catchError, takeUntil } from 'rxjs/operators'; @@ -77,6 +79,8 @@ export class AccountsPageComponent implements OnDestroy, OnInit { this.openTransferBalanceDialog(); } }); + + addIcons({ addOutline }); } public ngOnInit() { diff --git a/apps/client/src/app/pages/accounts/accounts-page.module.ts b/apps/client/src/app/pages/accounts/accounts-page.module.ts index 118aff532..5315ddbf8 100644 --- a/apps/client/src/app/pages/accounts/accounts-page.module.ts +++ b/apps/client/src/app/pages/accounts/accounts-page.module.ts @@ -5,6 +5,7 @@ import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; import { AccountsPageRoutingModule } from './accounts-page-routing.module'; import { AccountsPageComponent } from './accounts-page.component'; @@ -20,6 +21,7 @@ import { GfTransferBalanceDialogModule } from './transfer-balance/transfer-balan GfAccountsTableModule, GfCreateOrUpdateAccountDialogModule, GfTransferBalanceDialogModule, + IonIcon, MatButtonModule, RouterModule ], diff --git a/apps/client/src/app/pages/admin/admin-page.component.ts b/apps/client/src/app/pages/admin/admin-page.component.ts index f47771a31..02eea91f4 100644 --- a/apps/client/src/app/pages/admin/admin-page.component.ts +++ b/apps/client/src/app/pages/admin/admin-page.component.ts @@ -2,6 +2,14 @@ import { TabConfiguration } from '@ghostfolio/common/interfaces'; import { internalRoutes } from '@ghostfolio/common/routes/routes'; import { Component, OnDestroy, OnInit } from '@angular/core'; +import { addIcons } from 'ionicons'; +import { + flashOutline, + peopleOutline, + readerOutline, + serverOutline, + settingsOutline +} from 'ionicons/icons'; import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject } from 'rxjs'; @@ -18,7 +26,15 @@ export class AdminPageComponent implements OnDestroy, OnInit { private unsubscribeSubject = new Subject(); - public constructor(private deviceService: DeviceDetectorService) {} + public constructor(private deviceService: DeviceDetectorService) { + addIcons({ + flashOutline, + peopleOutline, + readerOutline, + serverOutline, + settingsOutline + }); + } public ngOnInit() { this.deviceType = this.deviceService.getDeviceInfo().deviceType; diff --git a/apps/client/src/app/pages/admin/admin-page.module.ts b/apps/client/src/app/pages/admin/admin-page.module.ts index 2b986aa6c..6acc05275 100644 --- a/apps/client/src/app/pages/admin/admin-page.module.ts +++ b/apps/client/src/app/pages/admin/admin-page.module.ts @@ -8,6 +8,7 @@ import { CacheService } from '@ghostfolio/client/services/cache.service'; import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { MatTabsModule } from '@angular/material/tabs'; +import { IonIcon } from '@ionic/angular/standalone'; import { AdminPageRoutingModule } from './admin-page-routing.module'; import { AdminPageComponent } from './admin-page.component'; @@ -23,6 +24,7 @@ import { AdminPageComponent } from './admin-page.component'; GfAdminOverviewModule, GfAdminSettingsModule, GfAdminUsersModule, + IonIcon, MatTabsModule ], providers: [CacheService], diff --git a/apps/client/src/app/pages/blog/blog-page.component.ts b/apps/client/src/app/pages/blog/blog-page.component.ts index 3545409c3..65a867f65 100644 --- a/apps/client/src/app/pages/blog/blog-page.component.ts +++ b/apps/client/src/app/pages/blog/blog-page.component.ts @@ -2,6 +2,8 @@ import { DataService } from '@ghostfolio/client/services/data.service'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { Component, OnDestroy } from '@angular/core'; +import { addIcons } from 'ionicons'; +import { chevronForwardOutline } from 'ionicons/icons'; import { Subject } from 'rxjs'; @Component({ @@ -23,6 +25,8 @@ export class BlogPageComponent implements OnDestroy { info?.globalPermissions, permissions.enableSubscription ); + + addIcons({ chevronForwardOutline }); } public ngOnDestroy() { diff --git a/apps/client/src/app/pages/blog/blog-page.module.ts b/apps/client/src/app/pages/blog/blog-page.module.ts index d210c1aad..37925e494 100644 --- a/apps/client/src/app/pages/blog/blog-page.module.ts +++ b/apps/client/src/app/pages/blog/blog-page.module.ts @@ -1,13 +1,14 @@ import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { MatCardModule } from '@angular/material/card'; +import { IonIcon } from '@ionic/angular/standalone'; import { BlogPageRoutingModule } from './blog-page-routing.module'; import { BlogPageComponent } from './blog-page.component'; @NgModule({ declarations: [BlogPageComponent], - imports: [BlogPageRoutingModule, CommonModule, MatCardModule], + imports: [BlogPageRoutingModule, CommonModule, IonIcon, MatCardModule], schemas: [CUSTOM_ELEMENTS_SCHEMA] }) export class BlogPageModule {} diff --git a/apps/client/src/app/pages/faq/faq-page.component.ts b/apps/client/src/app/pages/faq/faq-page.component.ts index 1d0888298..30b4d43c5 100644 --- a/apps/client/src/app/pages/faq/faq-page.component.ts +++ b/apps/client/src/app/pages/faq/faq-page.component.ts @@ -4,6 +4,8 @@ import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { publicRoutes } from '@ghostfolio/common/routes/routes'; import { Component, OnDestroy, OnInit } from '@angular/core'; +import { addIcons } from 'ionicons'; +import { cloudyOutline, readerOutline, serverOutline } from 'ionicons/icons'; import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject } from 'rxjs'; @@ -50,6 +52,8 @@ export class FaqPageComponent implements OnDestroy, OnInit { routerLink: publicRoutes.faq.subRoutes.selfHosting.routerLink } ]; + + addIcons({ cloudyOutline, readerOutline, serverOutline }); } public ngOnInit() { diff --git a/apps/client/src/app/pages/faq/faq-page.module.ts b/apps/client/src/app/pages/faq/faq-page.module.ts index 026fe9e71..4bb7977bd 100644 --- a/apps/client/src/app/pages/faq/faq-page.module.ts +++ b/apps/client/src/app/pages/faq/faq-page.module.ts @@ -2,13 +2,20 @@ import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { MatTabsModule } from '@angular/material/tabs'; import { RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; import { FaqPageRoutingModule } from './faq-page-routing.module'; import { FaqPageComponent } from './faq-page.component'; @NgModule({ declarations: [FaqPageComponent], - imports: [CommonModule, FaqPageRoutingModule, MatTabsModule, RouterModule], + imports: [ + CommonModule, + FaqPageRoutingModule, + IonIcon, + MatTabsModule, + RouterModule + ], schemas: [CUSTOM_ELEMENTS_SCHEMA] }) export class FaqPageModule {} diff --git a/apps/client/src/app/pages/home/home-page.component.ts b/apps/client/src/app/pages/home/home-page.component.ts index 18e5e9759..456e67a2e 100644 --- a/apps/client/src/app/pages/home/home-page.component.ts +++ b/apps/client/src/app/pages/home/home-page.component.ts @@ -5,6 +5,14 @@ import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { internalRoutes } from '@ghostfolio/common/routes/routes'; import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; +import { addIcons } from 'ionicons'; +import { + analyticsOutline, + bookmarkOutline, + newspaperOutline, + readerOutline, + walletOutline +} from 'ionicons/icons'; import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @@ -77,6 +85,14 @@ export class HomePageComponent implements OnDestroy, OnInit { this.changeDetectorRef.markForCheck(); } }); + + addIcons({ + analyticsOutline, + bookmarkOutline, + newspaperOutline, + readerOutline, + walletOutline + }); } public ngOnInit() { diff --git a/apps/client/src/app/pages/home/home-page.module.ts b/apps/client/src/app/pages/home/home-page.module.ts index 32f031e4e..848a63f71 100644 --- a/apps/client/src/app/pages/home/home-page.module.ts +++ b/apps/client/src/app/pages/home/home-page.module.ts @@ -8,6 +8,7 @@ import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { MatTabsModule } from '@angular/material/tabs'; import { RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; import { HomePageRoutingModule } from './home-page-routing.module'; import { HomePageComponent } from './home-page.component'; @@ -20,6 +21,7 @@ import { HomePageComponent } from './home-page.component'; GfHomeMarketModule, GfHomeOverviewModule, GfHomeSummaryModule, + IonIcon, HomePageRoutingModule, HomeWatchlistComponent, MatTabsModule, diff --git a/apps/client/src/app/pages/portfolio/activities/activities-page.component.ts b/apps/client/src/app/pages/portfolio/activities/activities-page.component.ts index 5f5f7cea9..967255aa8 100644 --- a/apps/client/src/app/pages/portfolio/activities/activities-page.component.ts +++ b/apps/client/src/app/pages/portfolio/activities/activities-page.component.ts @@ -17,6 +17,8 @@ import { Sort, SortDirection } from '@angular/material/sort'; import { MatTableDataSource } from '@angular/material/table'; import { ActivatedRoute, Router } from '@angular/router'; import { format, parseISO } from 'date-fns'; +import { addIcons } from 'ionicons'; +import { addOutline } from 'ionicons/icons'; import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject, Subscription } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @@ -86,6 +88,8 @@ export class ActivitiesPageComponent implements OnDestroy, OnInit { } } }); + + addIcons({ addOutline }); } public ngOnInit() { diff --git a/apps/client/src/app/pages/portfolio/activities/activities-page.module.ts b/apps/client/src/app/pages/portfolio/activities/activities-page.module.ts index c964022be..d69178c32 100644 --- a/apps/client/src/app/pages/portfolio/activities/activities-page.module.ts +++ b/apps/client/src/app/pages/portfolio/activities/activities-page.module.ts @@ -6,6 +6,7 @@ import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatSnackBarModule } from '@angular/material/snack-bar'; import { RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; import { ActivitiesPageRoutingModule } from './activities-page-routing.module'; import { ActivitiesPageComponent } from './activities-page.component'; @@ -20,6 +21,7 @@ import { GfImportActivitiesDialogModule } from './import-activities-dialog/impor GfActivitiesTableComponent, GfCreateOrUpdateActivityDialogModule, GfImportActivitiesDialogModule, + IonIcon, MatButtonModule, MatSnackBarModule, RouterModule diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts index 2aa0c40ef..7db8e16e6 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts @@ -18,6 +18,8 @@ import { DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { AssetClass, AssetSubClass, Tag, Type } from '@prisma/client'; import { isAfter, isToday } from 'date-fns'; +import { addIcons } from 'ionicons'; +import { calendarClearOutline, refreshOutline } from 'ionicons/icons'; import { EMPTY, Subject } from 'rxjs'; import { catchError, delay, takeUntil } from 'rxjs/operators'; @@ -67,7 +69,9 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { private formBuilder: FormBuilder, @Inject(MAT_DATE_LOCALE) private locale: string, private userService: UserService - ) {} + ) { + addIcons({ calendarClearOutline, refreshOutline }); + } public ngOnInit() { this.currencyOfAssetProfile = this.data.activity?.SymbolProfile?.currency; diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.module.ts b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.module.ts index 5f6fce28d..4a2b9b1c9 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.module.ts +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.module.ts @@ -13,6 +13,7 @@ import { MatDialogModule } from '@angular/material/dialog'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatInputModule } from '@angular/material/input'; import { MatSelectModule } from '@angular/material/select'; +import { IonIcon } from '@ionic/angular/standalone'; import { CreateOrUpdateActivityDialog } from './create-or-update-activity-dialog.component'; @@ -25,6 +26,7 @@ import { CreateOrUpdateActivityDialog } from './create-or-update-activity-dialog GfSymbolAutocompleteComponent, GfTagsSelectorComponent, GfValueComponent, + IonIcon, MatButtonModule, MatCheckboxModule, MatDatepickerModule, diff --git a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts index 3abf3a042..ed99ee4fd 100644 --- a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts +++ b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -22,6 +22,8 @@ import { SortDirection } from '@angular/material/sort'; import { MatStepper } from '@angular/material/stepper'; import { MatTableDataSource } from '@angular/material/table'; import { AssetClass } from '@prisma/client'; +import { addIcons } from 'ionicons'; +import { cloudUploadOutline, warningOutline } from 'ionicons/icons'; import { isArray, sortBy } from 'lodash'; import ms from 'ms'; import { DeviceDetectorService } from 'ngx-device-detector'; @@ -68,7 +70,9 @@ export class ImportActivitiesDialog implements OnDestroy { public dialogRef: MatDialogRef, private importActivitiesService: ImportActivitiesService, private snackBar: MatSnackBar - ) {} + ) { + addIcons({ cloudUploadOutline, warningOutline }); + } public ngOnInit() { this.deviceType = this.deviceService.getDeviceInfo().deviceType; diff --git a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.module.ts b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.module.ts index 664054a54..24b83a7e8 100644 --- a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.module.ts +++ b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.module.ts @@ -14,6 +14,7 @@ import { MatFormFieldModule } from '@angular/material/form-field'; import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; import { MatSelectModule } from '@angular/material/select'; import { MatStepperModule } from '@angular/material/stepper'; +import { IonIcon } from '@ionic/angular/standalone'; import { ImportActivitiesDialog } from './import-activities-dialog.component'; @@ -27,6 +28,7 @@ import { ImportActivitiesDialog } from './import-activities-dialog.component'; GfDialogHeaderModule, GfFileDropModule, GfSymbolModule, + IonIcon, MatButtonModule, MatDialogModule, MatExpansionModule, diff --git a/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts b/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts index 2bd3096d4..192ba152a 100644 --- a/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts +++ b/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -26,6 +26,8 @@ import { import { MatMenuTrigger } from '@angular/material/menu'; import { MatSnackBar } from '@angular/material/snack-bar'; import { SymbolProfile } from '@prisma/client'; +import { addIcons } from 'ionicons'; +import { copyOutline, ellipsisVertical } from 'ionicons/icons'; import { isNumber, sortBy } from 'lodash'; import ms from 'ms'; import { DeviceDetectorService } from 'ngx-device-detector'; @@ -89,6 +91,8 @@ export class AnalysisPageComponent implements OnDestroy, OnInit { ) { const { benchmarks } = this.dataService.fetchInfo(); this.benchmarks = benchmarks; + + addIcons({ copyOutline, ellipsisVertical }); } get savingsRate() { diff --git a/apps/client/src/app/pages/portfolio/analysis/analysis-page.module.ts b/apps/client/src/app/pages/portfolio/analysis/analysis-page.module.ts index e02e15ec8..7aad72b1f 100644 --- a/apps/client/src/app/pages/portfolio/analysis/analysis-page.module.ts +++ b/apps/client/src/app/pages/portfolio/analysis/analysis-page.module.ts @@ -11,6 +11,7 @@ import { MatButtonModule } from '@angular/material/button'; import { MatCardModule } from '@angular/material/card'; import { MatMenuModule } from '@angular/material/menu'; import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; +import { IonIcon } from '@ionic/angular/standalone'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; import { AnalysisPageRoutingModule } from './analysis-page-routing.module'; @@ -27,6 +28,7 @@ import { AnalysisPageComponent } from './analysis-page.component'; GfPremiumIndicatorComponent, GfToggleModule, GfValueComponent, + IonIcon, MatButtonModule, MatCardModule, MatMenuModule, diff --git a/apps/client/src/app/pages/portfolio/portfolio-page.component.ts b/apps/client/src/app/pages/portfolio/portfolio-page.component.ts index 6c1fb205b..e8e072890 100644 --- a/apps/client/src/app/pages/portfolio/portfolio-page.component.ts +++ b/apps/client/src/app/pages/portfolio/portfolio-page.component.ts @@ -3,6 +3,14 @@ import { TabConfiguration, User } from '@ghostfolio/common/interfaces'; import { internalRoutes } from '@ghostfolio/common/routes/routes'; import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; +import { addIcons } from 'ionicons'; +import { + analyticsOutline, + calculatorOutline, + pieChartOutline, + scanOutline, + swapVerticalOutline +} from 'ionicons/icons'; import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @@ -64,6 +72,14 @@ export class PortfolioPageComponent implements OnDestroy, OnInit { this.changeDetectorRef.markForCheck(); } }); + + addIcons({ + analyticsOutline, + calculatorOutline, + pieChartOutline, + scanOutline, + swapVerticalOutline + }); } public ngOnInit() { diff --git a/apps/client/src/app/pages/portfolio/portfolio-page.module.ts b/apps/client/src/app/pages/portfolio/portfolio-page.module.ts index 0291179eb..4a26c57b4 100644 --- a/apps/client/src/app/pages/portfolio/portfolio-page.module.ts +++ b/apps/client/src/app/pages/portfolio/portfolio-page.module.ts @@ -2,6 +2,7 @@ import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { MatTabsModule } from '@angular/material/tabs'; import { RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; import { PortfolioPageRoutingModule } from './portfolio-page-routing.module'; import { PortfolioPageComponent } from './portfolio-page.component'; @@ -10,6 +11,7 @@ import { PortfolioPageComponent } from './portfolio-page.component'; declarations: [PortfolioPageComponent], imports: [ CommonModule, + IonIcon, MatTabsModule, PortfolioPageRoutingModule, RouterModule diff --git a/apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.ts b/apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.ts index 877d0377d..393bf0ed1 100644 --- a/apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.ts +++ b/apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.ts @@ -10,6 +10,12 @@ import { User } from '@ghostfolio/common/interfaces/user.interface'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { ChangeDetectorRef, Component } from '@angular/core'; +import { addIcons } from 'ionicons'; +import { + checkmarkCircleOutline, + removeCircleOutline, + warningOutline +} from 'ionicons/icons'; import { Subject, takeUntil } from 'rxjs'; @Component({ @@ -40,7 +46,9 @@ export class XRayPageComponent { private dataService: DataService, private impersonationStorageService: ImpersonationStorageService, private userService: UserService - ) {} + ) { + addIcons({ checkmarkCircleOutline, removeCircleOutline, warningOutline }); + } public ngOnInit() { this.impersonationStorageService diff --git a/apps/client/src/app/pages/portfolio/x-ray/x-ray-page.module.ts b/apps/client/src/app/pages/portfolio/x-ray/x-ray-page.module.ts index bff4f4dc9..5d16ca103 100644 --- a/apps/client/src/app/pages/portfolio/x-ray/x-ray-page.module.ts +++ b/apps/client/src/app/pages/portfolio/x-ray/x-ray-page.module.ts @@ -3,6 +3,7 @@ import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator'; import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; +import { IonIcon } from '@ionic/angular/standalone'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; import { XRayPageRoutingModule } from './x-ray-page-routing.module'; @@ -14,6 +15,7 @@ import { XRayPageComponent } from './x-ray-page.component'; CommonModule, GfPremiumIndicatorComponent, GfRulesModule, + IonIcon, NgxSkeletonLoaderModule, XRayPageRoutingModule ], diff --git a/apps/client/src/app/pages/pricing/pricing-page.component.ts b/apps/client/src/app/pages/pricing/pricing-page.component.ts index 18f4946d0..5186aaadf 100644 --- a/apps/client/src/app/pages/pricing/pricing-page.component.ts +++ b/apps/client/src/app/pages/pricing/pricing-page.component.ts @@ -7,6 +7,8 @@ import { publicRoutes } from '@ghostfolio/common/routes/routes'; import { translate } from '@ghostfolio/ui/i18n'; import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; +import { addIcons } from 'ionicons'; +import { checkmarkCircleOutline, checkmarkOutline } from 'ionicons/icons'; import { StringValue } from 'ms'; import { StripeService } from 'ngx-stripe'; import { Subject } from 'rxjs'; @@ -53,7 +55,9 @@ export class PricingPageComponent implements OnDestroy, OnInit { private notificationService: NotificationService, private stripeService: StripeService, private userService: UserService - ) {} + ) { + addIcons({ checkmarkCircleOutline, checkmarkOutline }); + } public ngOnInit() { const { baseCurrency, subscriptionOffer } = this.dataService.fetchInfo(); diff --git a/apps/client/src/app/pages/pricing/pricing-page.module.ts b/apps/client/src/app/pages/pricing/pricing-page.module.ts index cb3766f13..3cfa09ade 100644 --- a/apps/client/src/app/pages/pricing/pricing-page.module.ts +++ b/apps/client/src/app/pages/pricing/pricing-page.module.ts @@ -6,6 +6,7 @@ import { MatButtonModule } from '@angular/material/button'; import { MatCardModule } from '@angular/material/card'; import { MatTooltipModule } from '@angular/material/tooltip'; import { RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; import { PricingPageRoutingModule } from './pricing-page-routing.module'; import { PricingPageComponent } from './pricing-page.component'; @@ -15,6 +16,7 @@ import { PricingPageComponent } from './pricing-page.component'; imports: [ CommonModule, GfPremiumIndicatorComponent, + IonIcon, MatButtonModule, MatCardModule, MatTooltipModule, diff --git a/apps/client/src/app/pages/register/register-page.module.ts b/apps/client/src/app/pages/register/register-page.module.ts index b6e917e6d..5ce8e3ed9 100644 --- a/apps/client/src/app/pages/register/register-page.module.ts +++ b/apps/client/src/app/pages/register/register-page.module.ts @@ -4,6 +4,7 @@ import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; import { RegisterPageRoutingModule } from './register-page-routing.module'; import { RegisterPageComponent } from './register-page.component'; @@ -14,6 +15,7 @@ import { ShowAccessTokenDialogModule } from './show-access-token-dialog/show-acc imports: [ CommonModule, GfLogoComponent, + IonIcon, MatButtonModule, RegisterPageRoutingModule, RouterModule, diff --git a/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts b/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts index d02bccef4..f154851df 100644 --- a/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts +++ b/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.component.ts @@ -10,6 +10,12 @@ import { } from '@angular/core'; import { MAT_DIALOG_DATA } from '@angular/material/dialog'; import { MatStepper } from '@angular/material/stepper'; +import { addIcons } from 'ionicons'; +import { + arrowForwardOutline, + checkmarkOutline, + copyOutline +} from 'ionicons/icons'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @@ -39,7 +45,9 @@ export class ShowAccessTokenDialog { private changeDetectorRef: ChangeDetectorRef, @Inject(MAT_DIALOG_DATA) public data: ShowAccessTokenDialogParams, private dataService: DataService - ) {} + ) { + addIcons({ arrowForwardOutline, checkmarkOutline, copyOutline }); + } public createAccount() { this.dataService diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts index e450aa65e..cafea79ca 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts @@ -2,6 +2,8 @@ import { personalFinanceTools } from '@ghostfolio/common/personal-finance-tools' import { publicRoutes } from '@ghostfolio/common/routes/routes'; import { Component, OnDestroy } from '@angular/core'; +import { addIcons } from 'ionicons'; +import { chevronForwardOutline } from 'ionicons/icons'; import { Subject } from 'rxjs'; @Component({ @@ -25,6 +27,10 @@ export class PersonalFinanceToolsPageComponent implements OnDestroy { private unsubscribeSubject = new Subject(); + public constructor() { + addIcons({ chevronForwardOutline }); + } + public ngOnDestroy() { this.unsubscribeSubject.next(); this.unsubscribeSubject.complete(); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.module.ts b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.module.ts index b8d6c947d..9dc7bc1e4 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.module.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.module.ts @@ -1,13 +1,19 @@ import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { MatCardModule } from '@angular/material/card'; +import { IonIcon } from '@ionic/angular/standalone'; import { PersonalFinanceToolsPageRoutingModule } from './personal-finance-tools-page-routing.module'; import { PersonalFinanceToolsPageComponent } from './personal-finance-tools-page.component'; @NgModule({ declarations: [PersonalFinanceToolsPageComponent], - imports: [CommonModule, MatCardModule, PersonalFinanceToolsPageRoutingModule], + imports: [ + CommonModule, + IonIcon, + MatCardModule, + PersonalFinanceToolsPageRoutingModule + ], schemas: [CUSTOM_ELEMENTS_SCHEMA] }) export class PersonalFinanceToolsPageModule {} diff --git a/apps/client/src/app/pages/resources/resources-page.component.ts b/apps/client/src/app/pages/resources/resources-page.component.ts index 22c8f0ec6..89000b506 100644 --- a/apps/client/src/app/pages/resources/resources-page.component.ts +++ b/apps/client/src/app/pages/resources/resources-page.component.ts @@ -2,6 +2,13 @@ import { TabConfiguration } from '@ghostfolio/common/interfaces'; import { publicRoutes } from '@ghostfolio/common/routes/routes'; import { Component, OnInit } from '@angular/core'; +import { addIcons } from 'ionicons'; +import { + bookOutline, + libraryOutline, + newspaperOutline, + readerOutline +} from 'ionicons/icons'; import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject } from 'rxjs'; @@ -39,7 +46,9 @@ export class ResourcesPageComponent implements OnInit { private unsubscribeSubject = new Subject(); - public constructor(private deviceService: DeviceDetectorService) {} + public constructor(private deviceService: DeviceDetectorService) { + addIcons({ bookOutline, libraryOutline, newspaperOutline, readerOutline }); + } public ngOnInit() { this.deviceType = this.deviceService.getDeviceInfo().deviceType; diff --git a/apps/client/src/app/pages/resources/resources-page.module.ts b/apps/client/src/app/pages/resources/resources-page.module.ts index de14a67ba..b5345f2f1 100644 --- a/apps/client/src/app/pages/resources/resources-page.module.ts +++ b/apps/client/src/app/pages/resources/resources-page.module.ts @@ -2,6 +2,7 @@ import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { MatTabsModule } from '@angular/material/tabs'; import { RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; import { ResourcesPageRoutingModule } from './resources-page-routing.module'; import { ResourcesPageComponent } from './resources-page.component'; @@ -10,6 +11,7 @@ import { ResourcesPageComponent } from './resources-page.component'; declarations: [ResourcesPageComponent], imports: [ CommonModule, + IonIcon, MatTabsModule, ResourcesPageRoutingModule, RouterModule diff --git a/apps/client/src/app/pages/user-account/user-account-page.component.ts b/apps/client/src/app/pages/user-account/user-account-page.component.ts index 78783f400..5fc9efeae 100644 --- a/apps/client/src/app/pages/user-account/user-account-page.component.ts +++ b/apps/client/src/app/pages/user-account/user-account-page.component.ts @@ -3,6 +3,8 @@ import { TabConfiguration, User } from '@ghostfolio/common/interfaces'; import { internalRoutes } from '@ghostfolio/common/routes/routes'; import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; +import { addIcons } from 'ionicons'; +import { diamondOutline, keyOutline, settingsOutline } from 'ionicons/icons'; import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject, takeUntil } from 'rxjs'; @@ -54,6 +56,8 @@ export class UserAccountPageComponent implements OnDestroy, OnInit { this.changeDetectorRef.markForCheck(); } }); + + addIcons({ diamondOutline, keyOutline, settingsOutline }); } public ngOnInit() { diff --git a/apps/client/src/app/pages/user-account/user-account-page.module.ts b/apps/client/src/app/pages/user-account/user-account-page.module.ts index 395480c0b..553591bbe 100644 --- a/apps/client/src/app/pages/user-account/user-account-page.module.ts +++ b/apps/client/src/app/pages/user-account/user-account-page.module.ts @@ -5,6 +5,7 @@ import { GfUserAccountSettingsModule } from '@ghostfolio/client/components/user- import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { MatTabsModule } from '@angular/material/tabs'; +import { IonIcon } from '@ionic/angular/standalone'; import { UserAccountPageRoutingModule } from './user-account-page-routing.module'; import { UserAccountPageComponent } from './user-account-page.component'; @@ -16,6 +17,7 @@ import { UserAccountPageComponent } from './user-account-page.component'; GfUserAccountAccessModule, GfUserAccountMembershipModule, GfUserAccountSettingsModule, + IonIcon, MatTabsModule, UserAccountPageRoutingModule ], diff --git a/apps/client/src/app/pages/zen/zen-page.component.ts b/apps/client/src/app/pages/zen/zen-page.component.ts index 9cdf5e692..397a2eb47 100644 --- a/apps/client/src/app/pages/zen/zen-page.component.ts +++ b/apps/client/src/app/pages/zen/zen-page.component.ts @@ -3,6 +3,8 @@ import { TabConfiguration, User } from '@ghostfolio/common/interfaces'; import { internalRoutes } from '@ghostfolio/common/routes/routes'; import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; +import { addIcons } from 'ionicons'; +import { analyticsOutline, walletOutline } from 'ionicons/icons'; import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @@ -47,6 +49,8 @@ export class ZenPageComponent implements OnDestroy, OnInit { this.changeDetectorRef.markForCheck(); } }); + + addIcons({ analyticsOutline, walletOutline }); } public ngOnInit() { diff --git a/apps/client/src/app/pages/zen/zen-page.module.ts b/apps/client/src/app/pages/zen/zen-page.module.ts index ebee36eeb..0e35c4630 100644 --- a/apps/client/src/app/pages/zen/zen-page.module.ts +++ b/apps/client/src/app/pages/zen/zen-page.module.ts @@ -5,6 +5,7 @@ import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { MatTabsModule } from '@angular/material/tabs'; import { RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; import { ZenPageRoutingModule } from './zen-page-routing.module'; import { ZenPageComponent } from './zen-page.component'; @@ -15,6 +16,7 @@ import { ZenPageComponent } from './zen-page.component'; CommonModule, GfHomeHoldingsModule, GfHomeOverviewModule, + IonIcon, MatTabsModule, RouterModule, ZenPageRoutingModule diff --git a/apps/client/src/index.html b/apps/client/src/index.html index e11bd1575..8b1dc2f92 100644 --- a/apps/client/src/index.html +++ b/apps/client/src/index.html @@ -53,9 +53,6 @@ - - - diff --git a/libs/ui/src/lib/account-balances/account-balances.component.ts b/libs/ui/src/lib/account-balances/account-balances.component.ts index 706e079e0..caeaebc64 100644 --- a/libs/ui/src/lib/account-balances/account-balances.component.ts +++ b/libs/ui/src/lib/account-balances/account-balances.component.ts @@ -31,7 +31,14 @@ import { MatInputModule } from '@angular/material/input'; import { MatMenuModule } from '@angular/material/menu'; import { MatSort, MatSortModule } from '@angular/material/sort'; import { MatTableDataSource, MatTableModule } from '@angular/material/table'; +import { IonIcon } from '@ionic/angular/standalone'; import { format } from 'date-fns'; +import { addIcons } from 'ionicons'; +import { + calendarClearOutline, + ellipsisHorizontal, + trashOutline +} from 'ionicons/icons'; import { get } from 'lodash'; import { Subject } from 'rxjs'; @@ -41,6 +48,7 @@ import { GfValueComponent } from '../value'; changeDetection: ChangeDetectionStrategy.OnPush, imports: [ GfValueComponent, + IonIcon, MatButtonModule, MatDatepickerModule, MatFormFieldModule, @@ -86,7 +94,9 @@ export class GfAccountBalancesComponent public constructor( private dateAdapter: DateAdapter, private notificationService: NotificationService - ) {} + ) { + addIcons({ calendarClearOutline, ellipsisHorizontal, trashOutline }); + } public ngOnInit() { this.dateAdapter.setLocale(this.locale); diff --git a/libs/ui/src/lib/activities-filter/activities-filter.component.ts b/libs/ui/src/lib/activities-filter/activities-filter.component.ts index 4356ba5ac..3f851e2ec 100644 --- a/libs/ui/src/lib/activities-filter/activities-filter.component.ts +++ b/libs/ui/src/lib/activities-filter/activities-filter.component.ts @@ -27,6 +27,9 @@ 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 { IonIcon } from '@ionic/angular/standalone'; +import { addIcons } from 'ionicons'; +import { closeOutline, searchOutline } from 'ionicons/icons'; import { groupBy } from 'lodash'; import { BehaviorSubject, Observable, Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @@ -36,6 +39,7 @@ import { takeUntil } from 'rxjs/operators'; imports: [ CommonModule, GfSymbolModule, + IonIcon, MatAutocompleteModule, MatButtonModule, MatChipsModule, @@ -82,6 +86,8 @@ export class GfActivitiesFilterComponent implements OnChanges, OnDestroy { this.filterGroups$.next(this.getGroupedFilters()); } }); + + addIcons({ closeOutline, searchOutline }); } public ngOnChanges(changes: SimpleChanges) { diff --git a/libs/ui/src/lib/activities-table/activities-table.component.ts b/libs/ui/src/lib/activities-table/activities-table.component.ts index 140dd9e4e..b116ba706 100644 --- a/libs/ui/src/lib/activities-table/activities-table.component.ts +++ b/libs/ui/src/lib/activities-table/activities-table.component.ts @@ -42,8 +42,23 @@ import { } from '@angular/material/sort'; import { MatTableDataSource, MatTableModule } from '@angular/material/table'; import { MatTooltipModule } from '@angular/material/tooltip'; +import { IonIcon } from '@ionic/angular/standalone'; import { isUUID } from 'class-validator'; import { endOfToday, isAfter } from 'date-fns'; +import { addIcons } from 'ionicons'; +import { + alertCircleOutline, + calendarClearOutline, + cloudDownloadOutline, + cloudUploadOutline, + colorWandOutline, + copyOutline, + createOutline, + documentTextOutline, + ellipsisHorizontal, + ellipsisVertical, + trashOutline +} from 'ionicons/icons'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; import { Subject, Subscription, takeUntil } from 'rxjs'; @@ -56,6 +71,7 @@ import { Subject, Subscription, takeUntil } from 'rxjs'; GfNoTransactionsInfoComponent, GfSymbolModule, GfValueComponent, + IonIcon, MatButtonModule, MatCheckboxModule, MatMenuModule, @@ -121,7 +137,21 @@ export class GfActivitiesTableComponent private unsubscribeSubject = new Subject(); - public constructor(private notificationService: NotificationService) {} + public constructor(private notificationService: NotificationService) { + addIcons({ + alertCircleOutline, + calendarClearOutline, + cloudDownloadOutline, + cloudUploadOutline, + colorWandOutline, + copyOutline, + createOutline, + documentTextOutline, + ellipsisHorizontal, + ellipsisVertical, + trashOutline + }); + } public ngOnInit() { if (this.showCheckbox) { diff --git a/libs/ui/src/lib/activity-type/activity-type.component.ts b/libs/ui/src/lib/activity-type/activity-type.component.ts index 27434e015..795665065 100644 --- a/libs/ui/src/lib/activity-type/activity-type.component.ts +++ b/libs/ui/src/lib/activity-type/activity-type.component.ts @@ -8,11 +8,21 @@ import { Input, OnChanges } from '@angular/core'; +import { IonIcon } from '@ionic/angular/standalone'; import { Type as ActivityType } from '@prisma/client'; +import { addIcons } from 'ionicons'; +import { + addCircleOutline, + arrowDownCircleOutline, + arrowUpCircleOutline, + cubeOutline, + flameOutline, + hammerOutline +} from 'ionicons/icons'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, - imports: [CommonModule], + imports: [CommonModule, IonIcon], schemas: [CUSTOM_ELEMENTS_SCHEMA], selector: 'gf-activity-type', styleUrls: ['./activity-type.component.scss'], @@ -23,6 +33,17 @@ export class GfActivityTypeComponent implements OnChanges { public activityTypeLabel: string; + public constructor() { + addIcons({ + addCircleOutline, + arrowDownCircleOutline, + arrowUpCircleOutline, + cubeOutline, + flameOutline, + hammerOutline + }); + } + public ngOnChanges() { this.activityTypeLabel = translate(this.activityType); } diff --git a/libs/ui/src/lib/assistant/assistant.component.ts b/libs/ui/src/lib/assistant/assistant.component.ts index de1733cf2..0bed65916 100644 --- a/libs/ui/src/lib/assistant/assistant.component.ts +++ b/libs/ui/src/lib/assistant/assistant.component.ts @@ -39,9 +39,16 @@ import { MatFormFieldModule } from '@angular/material/form-field'; import { MatMenuTrigger } from '@angular/material/menu'; import { MatSelectModule } from '@angular/material/select'; import { RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; import { Account, AssetClass, DataSource } from '@prisma/client'; import { differenceInYears } from 'date-fns'; import Fuse from 'fuse.js'; +import { addIcons } from 'ionicons'; +import { + closeCircleOutline, + closeOutline, + searchOutline +} from 'ionicons/icons'; import { isFunction } from 'lodash'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; import { EMPTY, Observable, Subject, merge, of } from 'rxjs'; @@ -72,6 +79,7 @@ import { GfAssistantListItemComponent, GfEntityLogoComponent, GfSymbolModule, + IonIcon, MatButtonModule, MatFormFieldModule, MatSelectModule, @@ -176,7 +184,9 @@ export class GfAssistantComponent implements OnChanges, OnDestroy, OnInit { private changeDetectorRef: ChangeDetectorRef, private dataService: DataService, private formBuilder: FormBuilder - ) {} + ) { + addIcons({ closeCircleOutline, closeOutline, searchOutline }); + } public ngOnInit() { this.assetClasses = Object.keys(AssetClass).map((assetClass) => { diff --git a/libs/ui/src/lib/benchmark/benchmark.component.ts b/libs/ui/src/lib/benchmark/benchmark.component.ts index 7269bb70c..6edb706ff 100644 --- a/libs/ui/src/lib/benchmark/benchmark.component.ts +++ b/libs/ui/src/lib/benchmark/benchmark.component.ts @@ -28,6 +28,9 @@ import { MatMenuModule } from '@angular/material/menu'; import { MatSort, MatSortModule } from '@angular/material/sort'; import { MatTableDataSource, MatTableModule } from '@angular/material/table'; import { ActivatedRoute, Router, RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; +import { addIcons } from 'ionicons'; +import { ellipsisHorizontal, trashOutline } from 'ionicons/icons'; import { get, isNumber } from 'lodash'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; import { Subject, takeUntil } from 'rxjs'; @@ -41,6 +44,7 @@ import { BenchmarkDetailDialogParams } from './benchmark-detail-dialog/interface CommonModule, GfTrendIndicatorComponent, GfValueComponent, + IonIcon, MatButtonModule, MatMenuModule, MatSortModule, @@ -99,6 +103,8 @@ export class GfBenchmarkComponent implements OnChanges, OnDestroy { }); } }); + + addIcons({ ellipsisHorizontal, trashOutline }); } public ngOnChanges() { diff --git a/libs/ui/src/lib/carousel/carousel.component.ts b/libs/ui/src/lib/carousel/carousel.component.ts index 2c3cc3ec0..4ecd12c79 100644 --- a/libs/ui/src/lib/carousel/carousel.component.ts +++ b/libs/ui/src/lib/carousel/carousel.component.ts @@ -12,10 +12,13 @@ import { } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations'; +import { IonIcon } from '@ionic/angular/standalone'; +import { addIcons } from 'ionicons'; +import { chevronBackOutline, chevronForwardOutline } from 'ionicons/icons'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, - imports: [MatButtonModule], + imports: [IonIcon, MatButtonModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], selector: 'gf-carousel', styleUrls: ['./carousel.component.scss'], @@ -40,6 +43,8 @@ export class GfCarouselComponent { @Optional() @Inject(ANIMATION_MODULE_TYPE) animationsModule?: string ) { this.animationsDisabled = animationsModule === 'NoopAnimations'; + + addIcons({ chevronBackOutline, chevronForwardOutline }); } public next() { diff --git a/libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.component.ts b/libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.component.ts index c75b6f3ae..d2d53f7ca 100644 --- a/libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.component.ts +++ b/libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.component.ts @@ -21,6 +21,9 @@ import { } from '@angular/material/dialog'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatInputModule } from '@angular/material/input'; +import { IonIcon } from '@ionic/angular/standalone'; +import { addIcons } from 'ionicons'; +import { calendarClearOutline, refreshOutline } from 'ionicons/icons'; import { Subject, takeUntil } from 'rxjs'; import { HistoricalMarketDataEditorDialogParams } from './interfaces/interfaces'; @@ -30,6 +33,7 @@ import { HistoricalMarketDataEditorDialogParams } from './interfaces/interfaces' host: { class: 'h-100' }, imports: [ FormsModule, + IonIcon, MatButtonModule, MatDatepickerModule, MatDialogModule, @@ -56,7 +60,9 @@ export class GfHistoricalMarketDataEditorDialogComponent private dateAdapter: DateAdapter, public dialogRef: MatDialogRef, @Inject(MAT_DATE_LOCALE) private locale: string - ) {} + ) { + addIcons({ calendarClearOutline, refreshOutline }); + } public ngOnInit() { this.locale = this.data.user?.settings?.locale; diff --git a/libs/ui/src/lib/membership-card/membership-card.component.ts b/libs/ui/src/lib/membership-card/membership-card.component.ts index 483c19d41..175a94f42 100644 --- a/libs/ui/src/lib/membership-card/membership-card.component.ts +++ b/libs/ui/src/lib/membership-card/membership-card.component.ts @@ -11,12 +11,21 @@ import { } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; +import { addIcons } from 'ionicons'; +import { refreshOutline } from 'ionicons/icons'; import { GfLogoComponent } from '../logo'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, - imports: [CommonModule, GfLogoComponent, MatButtonModule, RouterModule], + imports: [ + CommonModule, + GfLogoComponent, + IonIcon, + MatButtonModule, + RouterModule + ], schemas: [CUSTOM_ELEMENTS_SCHEMA], selector: 'gf-membership-card', styleUrls: ['./membership-card.component.scss'], @@ -31,6 +40,10 @@ export class GfMembershipCardComponent { public routerLinkPricing = publicRoutes.pricing.routerLink; + public constructor() { + addIcons({ refreshOutline }); + } + public onGenerateApiKey(event: MouseEvent) { event.preventDefault(); event.stopPropagation(); diff --git a/libs/ui/src/lib/premium-indicator/premium-indicator.component.ts b/libs/ui/src/lib/premium-indicator/premium-indicator.component.ts index 7c97be921..b3ccfd88f 100644 --- a/libs/ui/src/lib/premium-indicator/premium-indicator.component.ts +++ b/libs/ui/src/lib/premium-indicator/premium-indicator.component.ts @@ -8,10 +8,13 @@ import { Input } from '@angular/core'; import { RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; +import { addIcons } from 'ionicons'; +import { diamondOutline } from 'ionicons/icons'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, - imports: [CommonModule, RouterModule], + imports: [CommonModule, IonIcon, RouterModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], selector: 'gf-premium-indicator', styleUrls: ['./premium-indicator.component.scss'], @@ -21,4 +24,8 @@ export class GfPremiumIndicatorComponent { @Input() enableLink = true; public routerLinkPricing = publicRoutes.pricing.routerLink; + + public constructor() { + addIcons({ diamondOutline }); + } } diff --git a/libs/ui/src/lib/tags-selector/tags-selector.component.ts b/libs/ui/src/lib/tags-selector/tags-selector.component.ts index 02b3a0a95..50faab651 100644 --- a/libs/ui/src/lib/tags-selector/tags-selector.component.ts +++ b/libs/ui/src/lib/tags-selector/tags-selector.component.ts @@ -22,7 +22,10 @@ import { import { MatChipsModule } from '@angular/material/chips'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatInputModule } from '@angular/material/input'; +import { IonIcon } from '@ionic/angular/standalone'; import { Tag } from '@prisma/client'; +import { addIcons } from 'ionicons'; +import { addCircleOutline, closeOutline } from 'ionicons/icons'; import { BehaviorSubject, Subject, takeUntil } from 'rxjs'; @Component({ @@ -30,6 +33,7 @@ import { BehaviorSubject, Subject, takeUntil } from 'rxjs'; imports: [ CommonModule, FormsModule, + IonIcon, MatAutocompleteModule, MatChipsModule, MatFormFieldModule, @@ -64,6 +68,8 @@ export class GfTagsSelectorComponent implements OnInit, OnChanges, OnDestroy { .subscribe((value) => { this.filteredOptions.next(this.filterTags(value)); }); + + addIcons({ addCircleOutline, closeOutline }); } public ngOnInit() { diff --git a/libs/ui/src/lib/trend-indicator/trend-indicator.component.ts b/libs/ui/src/lib/trend-indicator/trend-indicator.component.ts index efb48c981..1e49b4a6c 100644 --- a/libs/ui/src/lib/trend-indicator/trend-indicator.component.ts +++ b/libs/ui/src/lib/trend-indicator/trend-indicator.component.ts @@ -6,11 +6,20 @@ import { Component, Input } from '@angular/core'; +import { IonIcon } from '@ionic/angular/standalone'; +import { addIcons } from 'ionicons'; +import { + arrowDownCircleOutline, + arrowForwardCircleOutline, + arrowUpCircleOutline, + pauseCircleOutline, + timeOutline +} from 'ionicons/icons'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, - imports: [NgxSkeletonLoaderModule], + imports: [IonIcon, NgxSkeletonLoaderModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], selector: 'gf-trend-indicator', styleUrls: ['./trend-indicator.component.scss'], @@ -22,4 +31,14 @@ export class GfTrendIndicatorComponent { @Input() marketState: MarketState = 'open'; @Input() size: 'large' | 'medium' | 'small' = 'small'; @Input() value = 0; + + public constructor() { + addIcons({ + arrowDownCircleOutline, + arrowForwardCircleOutline, + arrowUpCircleOutline, + pauseCircleOutline, + timeOutline + }); + } } diff --git a/libs/ui/src/lib/value/value.component.ts b/libs/ui/src/lib/value/value.component.ts index d93c5fbcb..cc6f974d1 100644 --- a/libs/ui/src/lib/value/value.component.ts +++ b/libs/ui/src/lib/value/value.component.ts @@ -8,12 +8,13 @@ import { Input, OnChanges } from '@angular/core'; +import { IonIcon } from '@ionic/angular/standalone'; import { isNumber } from 'lodash'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, - imports: [CommonModule, NgxSkeletonLoaderModule], + imports: [CommonModule, IonIcon, NgxSkeletonLoaderModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], selector: 'gf-value', styleUrls: ['./value.component.scss'], diff --git a/package-lock.json b/package-lock.json index 69b966afb..b806edd9c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,6 +30,7 @@ "@dfinity/principal": "0.15.7", "@dinero.js/currencies": "2.0.0-alpha.8", "@internationalized/number": "3.6.3", + "@ionic/angular": "8.6.3", "@keyv/redis": "4.4.0", "@nestjs/bull": "11.0.2", "@nestjs/cache-manager": "3.0.1", @@ -70,7 +71,7 @@ "google-spreadsheet": "3.2.0", "helmet": "7.0.0", "http-status-codes": "2.3.0", - "ionicons": "7.4.0", + "ionicons": "8.0.10", "jsonpath": "1.1.1", "lodash": "4.17.21", "marked": "15.0.4", @@ -4349,6 +4350,54 @@ "@swc/helpers": "^0.5.0" } }, + "node_modules/@ionic/angular": { + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-8.6.3.tgz", + "integrity": "sha512-Uw8eAcvqVw8mtGqX8kvUGNywSXjXZ3gdERuWC4hUSc63bS1Q+yo/319JLu+yENxOObtAu2dS5FYiqUZ07T8Brg==", + "license": "MIT", + "dependencies": { + "@ionic/core": "8.6.3", + "ionicons": "^7.0.0", + "jsonc-parser": "^3.0.0", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/core": ">=16.0.0", + "@angular/forms": ">=16.0.0", + "@angular/router": ">=16.0.0", + "rxjs": ">=7.5.0", + "zone.js": ">=0.13.0" + } + }, + "node_modules/@ionic/angular/node_modules/ionicons": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-7.4.0.tgz", + "integrity": "sha512-ZK94MMqgzMCPPMhmk8Ouu6goyVHFIlw/ACP6oe3FrikcI0N7CX0xcwVaEbUc0G/v3W0shI93vo+9ve/KpvcNhQ==", + "license": "MIT", + "dependencies": { + "@stencil/core": "^4.0.3" + } + }, + "node_modules/@ionic/core": { + "version": "8.6.3", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.6.3.tgz", + "integrity": "sha512-N/mkw+sPecLEoO1lrnKDS0uZgl6PWSyFprCkkqoK1nHlfBkgFiHm5M9rvWlnGaFC/5xrhNGHdUtYHDFM+F8gRw==", + "license": "MIT", + "dependencies": { + "@stencil/core": "4.33.1", + "ionicons": "^7.2.2", + "tslib": "^2.1.0" + } + }, + "node_modules/@ionic/core/node_modules/ionicons": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-7.4.0.tgz", + "integrity": "sha512-ZK94MMqgzMCPPMhmk8Ouu6goyVHFIlw/ACP6oe3FrikcI0N7CX0xcwVaEbUc0G/v3W0shI93vo+9ve/KpvcNhQ==", + "license": "MIT", + "dependencies": { + "@stencil/core": "^4.0.3" + } + }, "node_modules/@ioredis/commands": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz", @@ -10814,9 +10863,9 @@ } }, "node_modules/@stencil/core": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.28.0.tgz", - "integrity": "sha512-E7FwEoBQa3Mn39c2lZJVLcXnvGOJ+Sy1kJY/5LE30IO+MLqhCoAPxCIVbcOSN9OnvAMC+4ZveXGQp8bD2n6VFw==", + "version": "4.33.1", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.33.1.tgz", + "integrity": "sha512-12k9xhAJBkpg598it+NRmaYIdEe6TSnsL/v6/KRXDcUyTK11VYwZQej2eHnMWtqot+znJ+GNTqb5YbiXi+5Low==", "license": "MIT", "bin": { "stencil": "bin/stencil" @@ -10826,9 +10875,107 @@ "npm": ">=7.10.0" }, "optionalDependencies": { - "@rollup/rollup-linux-x64-gnu": "4.34.9" + "@rollup/rollup-darwin-arm64": "4.34.9", + "@rollup/rollup-darwin-x64": "4.34.9", + "@rollup/rollup-linux-arm64-gnu": "4.34.9", + "@rollup/rollup-linux-arm64-musl": "4.34.9", + "@rollup/rollup-linux-x64-gnu": "4.34.9", + "@rollup/rollup-linux-x64-musl": "4.34.9", + "@rollup/rollup-win32-arm64-msvc": "4.34.9", + "@rollup/rollup-win32-x64-msvc": "4.34.9" } }, + "node_modules/@stencil/core/node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.9.tgz", + "integrity": "sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@stencil/core/node_modules/@rollup/rollup-darwin-x64": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.9.tgz", + "integrity": "sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@stencil/core/node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.9.tgz", + "integrity": "sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@stencil/core/node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.9.tgz", + "integrity": "sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@stencil/core/node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.9.tgz", + "integrity": "sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@stencil/core/node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.9.tgz", + "integrity": "sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@stencil/core/node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.34.9", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.9.tgz", + "integrity": "sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@storybook/addon-actions": { "version": "8.6.12", "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.6.12.tgz", @@ -22148,12 +22295,12 @@ } }, "node_modules/ionicons": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-7.4.0.tgz", - "integrity": "sha512-ZK94MMqgzMCPPMhmk8Ouu6goyVHFIlw/ACP6oe3FrikcI0N7CX0xcwVaEbUc0G/v3W0shI93vo+9ve/KpvcNhQ==", + "version": "8.0.10", + "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-8.0.10.tgz", + "integrity": "sha512-w+6VmjcRwlAtryXzM+BOlIHKyJYlrfbIIYWW4cU0BM8OECoTn/KF8ecOE5j4401z5/FcmHf/yXol1xinKuPM8g==", "license": "MIT", "dependencies": { - "@stencil/core": "^4.0.3" + "@stencil/core": "^4.30.0" } }, "node_modules/ioredis": { diff --git a/package.json b/package.json index 015332f1e..60863424d 100644 --- a/package.json +++ b/package.json @@ -76,6 +76,7 @@ "@dfinity/principal": "0.15.7", "@dinero.js/currencies": "2.0.0-alpha.8", "@internationalized/number": "3.6.3", + "@ionic/angular": "8.6.3", "@keyv/redis": "4.4.0", "@nestjs/bull": "11.0.2", "@nestjs/cache-manager": "3.0.1", @@ -116,7 +117,7 @@ "google-spreadsheet": "3.2.0", "helmet": "7.0.0", "http-status-codes": "2.3.0", - "ionicons": "7.4.0", + "ionicons": "8.0.10", "jsonpath": "1.1.1", "lodash": "4.17.21", "marked": "15.0.4",