diff --git a/CHANGELOG.md b/CHANGELOG.md index d8d63de05..26502a243 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,9 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Added + +- Added support for a copy-to-clipboard action in the alert dialog component + ### Changed - Set the change detection strategy to `OnPush` in the _FIRE_ page +- Improved the language localization for French (`fr`) - Improved the language localization for German (`de`) ## 3.21.0 - 2026-07-05 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 b2c9b11a3..7374fb05c 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 @@ -90,7 +90,12 @@ export class GfAdminOverviewComponent implements OnInit { protected activitiesCount: number; protected couponDuration: StringValue = '14 days'; protected readonly couponsDataSource = new MatTableDataSource(); - protected readonly couponsDisplayedColumns = ['code', 'duration', 'actions']; + protected readonly couponsDisplayedColumns = [ + 'code', + 'duration', + 'createdAt', + 'actions' + ]; protected hasPermissionForSubscription: boolean; protected hasPermissionForSystemMessage: boolean; protected hasPermissionToSyncDemoUserAccount: boolean; @@ -201,6 +206,7 @@ export class GfAdminOverviewComponent implements OnInit { protected onAddCoupon() { const newCoupon: Coupon = { code: `${ghostfolioPrefix}${this.generateCouponCode(14)}`, + createdAt: new Date().toISOString(), duration: this.couponDuration }; diff --git a/apps/client/src/app/components/admin-overview/admin-overview.html b/apps/client/src/app/components/admin-overview/admin-overview.html index bccedd251..2fde94083 100644 --- a/apps/client/src/app/components/admin-overview/admin-overview.html +++ b/apps/client/src/app/components/admin-overview/admin-overview.html @@ -180,6 +180,28 @@ + + + Creation + + + @if (element.createdAt) { + + } @else { + - + } + + + { this.notificationService.alert({ + copyValue: apiKey, discardLabel: $localize`Okay`, - message: - $localize`Set this API key in your self-hosted environment:` + - '
' + - apiKey, + message: $localize`Set this API key in your self-hosted environment:`, title: $localize`Ghostfolio Premium Data Provider API Key` }); }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/interfaces/interfaces.ts b/apps/client/src/app/pages/resources/personal-finance-tools/interfaces/interfaces.ts new file mode 100644 index 000000000..738719f0a --- /dev/null +++ b/apps/client/src/app/pages/resources/personal-finance-tools/interfaces/interfaces.ts @@ -0,0 +1,6 @@ +import type { Product } from '@ghostfolio/common/interfaces'; + +export type ResolvedProduct = Omit & { + categories?: string[]; + platforms?: string[]; +}; diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts index b030521db..d33ec17d6 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts @@ -1,5 +1,4 @@ import { getCountryName } from '@ghostfolio/common/helper'; -import { Product } from '@ghostfolio/common/interfaces'; import { personalFinanceTools } from '@ghostfolio/common/personal-finance-tools'; import { publicRoutes } from '@ghostfolio/common/routes/routes'; import { translate } from '@ghostfolio/ui/i18n'; @@ -14,6 +13,8 @@ import { import { MatButtonModule } from '@angular/material/button'; import { ActivatedRoute, RouterModule } from '@angular/router'; +import { ResolvedProduct } from './interfaces/interfaces'; + @Component({ changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'page' }, @@ -28,8 +29,12 @@ export class GfProductPageComponent { return subscriptionOffer?.price; }); - protected readonly product1 = computed(() => ({ - categories: ['FINANCIAL_PLANNING', 'NET_WORTH_TRACKING', 'STOCK_TRACKING'], + protected readonly product1 = computed(() => ({ + categories: this.getSortedTranslations([ + 'FINANCIAL_PLANNING', + 'NET_WORTH_TRACKING', + 'STOCK_TRACKING' + ]), founded: 2021, hasFreePlan: true, hasSelfHostingAbility: true, @@ -50,21 +55,23 @@ export class GfProductPageComponent { ], name: 'Ghostfolio', origin: getCountryName({ code: 'CH' }), - platforms: ['ANDROID', 'WEB'], + platforms: this.getSortedTranslations(['ANDROID', 'WEB']), regions: [$localize`Global`], slogan: 'Open Source Wealth Management', useAnonymously: true })); - protected readonly product2 = computed(() => { + protected readonly product2 = computed(() => { const product = personalFinanceTools.find(({ key }) => { return key === this.route.snapshot.data['key']; }); - const mappedProduct = { + const mappedProduct: ResolvedProduct = { key: product?.key ?? '', name: product?.name ?? '', - ...product + ...product, + categories: this.getSortedTranslations(product?.categories), + platforms: this.getSortedTranslations(product?.platforms) }; if (mappedProduct.origin) { @@ -97,9 +104,8 @@ export class GfProductPageComponent { ...[product1, product2].flatMap( ({ categories, name, origin, platforms }) => { return [ - ...[...(categories ?? []), ...(platforms ?? [])].map((key) => { - return translate(key); - }), + ...(categories ?? []), + ...(platforms ?? []), name, origin ]; @@ -130,8 +136,16 @@ export class GfProductPageComponent { }); }); - protected readonly translate = translate; - private readonly dataService = inject(DataService); private readonly route = inject(ActivatedRoute); + + private getSortedTranslations(values?: string[]) { + return values + ?.map((value) => { + return translate(value); + }) + .sort((a, b) => { + return a.localeCompare(b, undefined, { sensitivity: 'base' }); + }); + } } diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/product-page.html b/apps/client/src/app/pages/resources/personal-finance-tools/product-page.html index 9a89c941f..192b3cadb 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/product-page.html +++ b/apps/client/src/app/pages/resources/personal-finance-tools/product-page.html @@ -81,7 +81,7 @@ track category; let isLast = $last ) { - {{ translate(category) }}{{ isLast ? '' : ', ' }} + {{ category }}{{ isLast ? '' : ', ' }} } @@ -90,7 +90,7 @@ track category; let isLast = $last ) { - {{ translate(category) }}{{ isLast ? '' : ', ' }} + {{ category }}{{ isLast ? '' : ', ' }} } @@ -135,7 +135,7 @@ track platform; let isLast = $last ) { - {{ translate(platform) }}{{ isLast ? '' : ', ' }} + {{ platform }}{{ isLast ? '' : ', ' }} } @@ -144,7 +144,7 @@ track platform; let isLast = $last ) { - {{ translate(platform) }}{{ isLast ? '' : ', ' }} + {{ platform }}{{ isLast ? '' : ', ' }} } diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 05ecd4c4f..2272f3005 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -83,7 +83,7 @@ with - with + avec apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 87 @@ -507,7 +507,7 @@ Find an account... - Find an account... + Rechercher un compte... libs/ui/src/lib/assistant/assistant.component.ts 447 @@ -535,7 +535,7 @@ Watch the Ghostfol.io Trailer on YouTube - Watch the Ghostfol.io Trailer on YouTube + Regarder la bande-annonce de Ghostfol.io sur YouTube apps/client/src/app/pages/landing/landing-page.html 19 @@ -587,7 +587,7 @@ Data Gathering Frequency - Data Gathering Frequency + Fréquence de collecte des données apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 454 @@ -623,7 +623,7 @@ Apply current market price - Apply current market price + Appliquer le prix actuel du marché apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 238 @@ -631,7 +631,7 @@ Subscription History - Subscription History + Historique de l’abonnement apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html 136 @@ -915,7 +915,7 @@ No auto-renewal on membership. - No auto-renewal on membership. + Pas de renouvellement automatique de l’abonnement. apps/client/src/app/components/user-account-membership/user-account-membership.html 74 @@ -943,7 +943,7 @@ Could not validate form - Could not validate form + Le formulaire n’a pas pu être validé apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 621 @@ -1119,7 +1119,7 @@ Code - Code + Code apps/client/src/app/components/admin-overview/admin-overview.html 159 @@ -1215,7 +1215,7 @@ Energy - Energy + Énergie libs/ui/src/lib/i18n.ts 94 @@ -1399,7 +1399,7 @@ Ghostfolio in Numbers: Monthly Active Users (MAU) - Ghostfolio in Numbers: Monthly Active Users (MAU) + Ghostfolio en chiffres : utilisateurs actifs mensuels (MAU) apps/client/src/app/pages/landing/landing-page.html 63 @@ -1419,7 +1419,7 @@ Performance with currency effect - Performance with currency effect + Performance avec effet de change apps/client/src/app/pages/portfolio/analysis/analysis-page.html 134 @@ -1571,7 +1571,7 @@ Consumer Defensive - Consumer Defensive + Consommation de Base libs/ui/src/lib/i18n.ts 93 @@ -1639,7 +1639,7 @@ Utilities - Utilities + Services aux Collectivités libs/ui/src/lib/i18n.ts 101 @@ -1707,7 +1707,7 @@ Contributors to Ghostfolio - Contributors to Ghostfolio + Contributeurs de Ghostfolio apps/client/src/app/pages/about/overview/about-overview-page.html 54 @@ -1867,7 +1867,7 @@ Financial Planning - Financial Planning + Planification Financière libs/ui/src/lib/i18n.ts 108 @@ -2035,7 +2035,7 @@ Duration - Duration + Durée apps/client/src/app/components/admin-overview/admin-overview.html 172 @@ -2111,7 +2111,7 @@ just now - just now + à l’instant apps/client/src/app/components/admin-users/admin-users.component.ts 211 @@ -2239,7 +2239,7 @@ Current week - Current week + Semaine en cours apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 220 @@ -2291,7 +2291,7 @@ Consumer Cyclical - Consumer Cyclical + Consommation Discrétionnaire libs/ui/src/lib/i18n.ts 92 @@ -2327,7 +2327,7 @@ or start a discussion at - or start a discussion at + ou lancez une discussion sur apps/client/src/app/pages/about/overview/about-overview-page.html 98 @@ -2363,7 +2363,7 @@ Price - Price + Prix apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html 171 @@ -2479,7 +2479,7 @@ Trial - Trial + Essai apps/client/src/app/components/user-detail-dialog/user-detail-dialog.component.ts 126 @@ -2487,7 +2487,7 @@ Exclude from Analysis - Exclude from Analysis + Exclure de l’analyse apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html 99 @@ -2511,7 +2511,7 @@ Latest activities - Latest activities + Dernières activités apps/client/src/app/pages/public/public-page.html 210 @@ -2555,7 +2555,7 @@ Looking for a student discount? - Looking for a student discount? + Vous cherchez une réduction étudiant ? apps/client/src/app/pages/pricing/pricing-page.html 342 @@ -2595,7 +2595,7 @@ annual interest rate - annual interest rate + taux d’intérêt annuel apps/client/src/app/pages/portfolio/fire/fire-page.html 186 @@ -2723,7 +2723,7 @@ Sustainable retirement income - Sustainable retirement income + Revenu de retraite durable apps/client/src/app/pages/portfolio/fire/fire-page.html 42 @@ -2771,7 +2771,7 @@ Creation - Creation + Création apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html 145 @@ -3011,7 +3011,7 @@ {VAR_PLURAL, plural, =1 {Profile} other {Profiles}} - {VAR_PLURAL, plural, =1 {Profile} other {Profiles}} + {VAR_PLURAL, plural, =1 {Profil} other {Profils}} apps/client/src/app/components/admin-market-data/admin-market-data.html 249 @@ -3303,7 +3303,7 @@ Authentication - Authentication + Authentification apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html 60 @@ -3383,7 +3383,7 @@ Communication Services - Communication Services + Services de Communication libs/ui/src/lib/i18n.ts 91 @@ -3407,7 +3407,7 @@ If you retire today, you would be able to withdraw - If you retire today, you would be able to withdraw + Si vous partez à la retraite aujourd’hui, vous pourriez retirer apps/client/src/app/pages/portfolio/fire/fire-page.html 69 @@ -3555,7 +3555,7 @@ No Activities - No Activities + Aucune Activité apps/client/src/app/components/admin-market-data/admin-market-data.component.ts 150 @@ -3571,7 +3571,7 @@ Everything in Basic, plus - Everything in Basic, plus + Tout ce qui est inclus dans Basic, plus apps/client/src/app/pages/pricing/pricing-page.html 199 @@ -3739,7 +3739,7 @@ Hourly - Hourly + Toutes les heures apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 214 @@ -3831,7 +3831,7 @@ Expiration - Expiration + Expiration apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html 204 @@ -3847,7 +3847,7 @@ Could not save asset profile - Could not save asset profile + Le profil d’actif n’a pas pu être enregistré apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 655 @@ -3951,7 +3951,7 @@ Loan - Loan + Prêt libs/ui/src/lib/i18n.ts 64 @@ -4051,7 +4051,7 @@ Explore - Explore + Explorer apps/client/src/app/pages/resources/overview/resources-overview.component.html 11 @@ -4075,7 +4075,7 @@ Current year - Current year + Année en cours apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 228 @@ -4111,7 +4111,7 @@ Asset profile has been saved - Asset profile has been saved + Le profil d’actif a été enregistré apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 645 @@ -4303,7 +4303,7 @@ View Details - View Details + Voir les Détails apps/client/src/app/components/admin-users/admin-users.html 220 @@ -4439,7 +4439,7 @@ per week - per week + par semaine apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 130 @@ -4463,7 +4463,7 @@ Technology - Technology + Technologie libs/ui/src/lib/i18n.ts 100 @@ -4471,7 +4471,7 @@ and we share aggregated key metrics of the platform’s performance - and we share aggregated key metrics of the platform’s performance + et nous partageons des indicateurs clés agrégés de la performance de la plateforme apps/client/src/app/pages/about/overview/about-overview-page.html 33 @@ -4479,7 +4479,7 @@ Total - Total + Total apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html 155 @@ -4523,7 +4523,7 @@ Website of Thomas Kaul - Website of Thomas Kaul + Site web de Thomas Kaul apps/client/src/app/pages/about/overview/about-overview-page.html 45 @@ -4599,7 +4599,7 @@ Upgrade to Ghostfolio Premium - Upgrade to Ghostfolio Premium + Passer à Ghostfolio Premium libs/ui/src/lib/premium-indicator/premium-indicator.component.html 4 @@ -4675,7 +4675,7 @@ Web - Web + Web libs/ui/src/lib/i18n.ts 120 @@ -4719,7 +4719,7 @@ Sign in with OpenID Connect - Sign in with OpenID Connect + Se connecter avec OpenID Connect apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html 57 @@ -4747,7 +4747,7 @@ Category - Category + Catégorie apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 77 @@ -4779,7 +4779,7 @@ Ghostfolio in Numbers: Pulls on Docker Hub - Ghostfolio in Numbers: Pulls on Docker Hub + Ghostfolio en chiffres : téléchargements sur Docker Hub apps/client/src/app/pages/landing/landing-page.html 101 @@ -4891,7 +4891,7 @@ this is projected to increase to - this is projected to increase to + cela devrait augmenter jusqu’à apps/client/src/app/pages/portfolio/fire/fire-page.html 148 @@ -4943,7 +4943,7 @@ Job ID - Job ID + ID de Tâche apps/client/src/app/components/admin-jobs/admin-jobs.html 34 @@ -5027,7 +5027,7 @@ for - for + pour apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 128 @@ -5051,7 +5051,7 @@ Could not parse scraper configuration - Could not parse scraper configuration + La configuration du scraper n’a pas pu être analysée apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 569 @@ -5095,7 +5095,7 @@ Edit access - Edit access + Modifier l’accès apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html 11 @@ -5151,7 +5151,7 @@ Basic Materials - Basic Materials + Matériaux de Base libs/ui/src/lib/i18n.ts 90 @@ -5367,7 +5367,7 @@ less than - less than + moins de apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 129 @@ -5609,7 +5609,7 @@ Stock Tracking - Stock Tracking + Suivi des Actions libs/ui/src/lib/i18n.ts 111 @@ -5653,7 +5653,7 @@ Ghostfolio Status - Ghostfolio Status + Statut de Ghostfolio apps/client/src/app/pages/about/overview/about-overview-page.html 64 @@ -5661,7 +5661,7 @@ with your university e-mail address - with your university e-mail address + avec votre adresse e-mail universitaire apps/client/src/app/pages/pricing/pricing-page.html 348 @@ -5681,7 +5681,7 @@ and a safe withdrawal rate (SWR) of - and a safe withdrawal rate (SWR) of + et un taux de retrait sûr (SWR) de apps/client/src/app/pages/portfolio/fire/fire-page.html 109 @@ -5689,7 +5689,7 @@ Available on - Available on + Disponible sur apps/client/src/app/pages/resources/personal-finance-tools/product-page.html 130 @@ -5853,7 +5853,7 @@ Request it - Request it + Faites-en la demande apps/client/src/app/pages/pricing/pricing-page.html 344 @@ -5897,7 +5897,7 @@ Industrials - Industrials + Industrie libs/ui/src/lib/i18n.ts 97 @@ -5921,7 +5921,7 @@ , - , + , apps/client/src/app/pages/portfolio/fire/fire-page.html 146 @@ -5937,7 +5937,7 @@ per month - per month + par mois apps/client/src/app/pages/portfolio/fire/fire-page.html 95 @@ -6013,7 +6013,7 @@ Healthcare - Healthcare + Santé libs/ui/src/lib/i18n.ts 96 @@ -6029,7 +6029,7 @@ Portfolio Filters - Portfolio Filters + Filtres du Portefeuille apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html 63 @@ -6197,7 +6197,7 @@ here - here + ici apps/client/src/app/pages/pricing/pricing-page.html 347 @@ -6205,7 +6205,7 @@ Close Holding - Close Holding + Clôturer la Position apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html 451 @@ -6285,7 +6285,7 @@ Expires () - Expires () + Expire () apps/client/src/app/components/admin-users/admin-users.html 34 @@ -6313,7 +6313,7 @@ Fetch market price - Fetch market price + Récupérer le prix du marché libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html 40 @@ -6389,7 +6389,7 @@ Find a holding... - Find a holding... + Rechercher une position... libs/ui/src/lib/assistant/assistant.component.ts 448 @@ -6442,7 +6442,7 @@ Daily - Daily + Tous les jours apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 210 @@ -6570,7 +6570,7 @@ Jump to a page... - Jump to a page... + Aller à une page... libs/ui/src/lib/assistant/assistant.component.ts 449 @@ -6618,7 +6618,7 @@ Include in - Include in + Inclure dans apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 386 @@ -6854,7 +6854,7 @@ View Holding - View Holding + Voir la Position libs/ui/src/lib/activities-table/activities-table.component.html 475 @@ -6862,7 +6862,7 @@ Do you really want to delete these asset profiles? - Do you really want to delete these asset profiles? + Voulez-vous vraiment supprimer ces profils d’actifs ? apps/client/src/app/components/admin-market-data/admin-market-data.service.ts 67 @@ -6902,7 +6902,7 @@ , based on your total assets of - , based on your total assets of + , basé sur le total de vos actifs de apps/client/src/app/pages/portfolio/fire/fire-page.html 97 @@ -7022,7 +7022,7 @@ Role - Role + Rôle apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html 39 @@ -7046,7 +7046,7 @@ Tax Reporting - Tax Reporting + Déclaration Fiscale libs/ui/src/lib/i18n.ts 112 @@ -7070,7 +7070,7 @@ If you plan to open an account at - If you plan to open an account at + Si vous prévoyez d’ouvrir un compte chez apps/client/src/app/pages/pricing/pricing-page.html 312 @@ -7102,7 +7102,7 @@ send an e-mail to - send an e-mail to + envoyez un e-mail à apps/client/src/app/pages/about/overview/about-overview-page.html 91 @@ -7126,7 +7126,7 @@ has been copied to the clipboard - has been copied to the clipboard + a été copié dans le presse-papiers apps/client/src/app/components/admin-overview/admin-overview.component.ts 382 @@ -7146,7 +7146,7 @@ Compare Ghostfolio to - - Compare Ghostfolio to - + Comparer Ghostfolio à - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html 32 @@ -7194,7 +7194,7 @@ , assuming a - , assuming a + , en supposant un apps/client/src/app/pages/portfolio/fire/fire-page.html 175 @@ -7202,7 +7202,7 @@ Financial Services - Financial Services + Services Financiers libs/ui/src/lib/i18n.ts 95 @@ -7230,7 +7230,7 @@ Delete - Delete + Supprimer apps/client/src/app/components/admin-market-data/admin-market-data.html 244 @@ -7286,7 +7286,7 @@ Dividend Tracking - Dividend Tracking + Suivi des Dividendes libs/ui/src/lib/i18n.ts 105 @@ -7306,7 +7306,7 @@ Ghostfolio is a lightweight wealth management application for individuals to keep track of stocks, ETFs or cryptocurrencies and make solid, data-driven investment decisions. - Ghostfolio is a lightweight wealth management application for individuals to keep track of stocks, ETFs or cryptocurrencies and make solid, data-driven investment decisions. + Ghostfolio est une application légère de gestion de patrimoine permettant de suivre des actions, ETF ou cryptomonnaies et de prendre des décisions d’investissement solides et basées sur les données. apps/client/src/app/pages/about/overview/about-overview-page.html 10 @@ -7346,7 +7346,7 @@ Investment Research - Investment Research + Recherche d’Investissement libs/ui/src/lib/i18n.ts 109 @@ -7620,7 +7620,7 @@ Check the system status at - Check the system status at + Vérifiez le statut du système sur apps/client/src/app/pages/about/overview/about-overview-page.html 59 @@ -7628,7 +7628,7 @@ Net Worth Tracking - Net Worth Tracking + Suivi du Patrimoine Net libs/ui/src/lib/i18n.ts 110 @@ -7760,7 +7760,7 @@ Ghostfolio in Numbers: Stars on GitHub - Ghostfolio in Numbers: Stars on GitHub + Ghostfolio en chiffres : étoiles sur GitHub apps/client/src/app/pages/landing/landing-page.html 82 @@ -7796,7 +7796,7 @@ The project has been initiated by - The project has been initiated by + Le projet a été initié par apps/client/src/app/pages/about/overview/about-overview-page.html 41 @@ -7820,7 +7820,7 @@ Total amount - Total amount + Montant Total apps/client/src/app/pages/portfolio/analysis/analysis-page.html 94 @@ -8082,7 +8082,7 @@ ETF Tracking - ETF Tracking + Suivi des ETF libs/ui/src/lib/i18n.ts 106 @@ -8106,7 +8106,7 @@ Set up - Fonds d’urgence : Mise en place + Mise en place apps/client/src/app/pages/i18n/i18n-page.html 145 @@ -8130,7 +8130,7 @@ Fee Ratio - Fee Ratio + Ratio de Frais apps/client/src/app/pages/i18n/i18n-page.html 152 @@ -8138,7 +8138,7 @@ The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) - The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) + Les frais dépassent ${thresholdMax}% de votre volume d’investissement total (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 154 @@ -8146,7 +8146,7 @@ The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) - The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) + Les frais ne dépassent pas ${thresholdMax}% de votre volume d’investissement total (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 158 @@ -8312,7 +8312,7 @@ Current month - Current month + Mois en cours apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 224 @@ -8320,7 +8320,7 @@ new - new + nouveau apps/client/src/app/components/admin-settings/admin-settings.component.html 79 @@ -8328,7 +8328,7 @@ Investment - Investment + Investissement apps/client/src/app/pages/i18n/i18n-page.html 15 @@ -8336,7 +8336,7 @@ Over ${thresholdMax}% of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) - Over ${thresholdMax}% of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) + Plus de ${thresholdMax}% de votre investissement actuel est chez ${maxAccountName} (${maxInvestmentRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 17 @@ -8344,7 +8344,7 @@ The major part of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) and does not exceed ${thresholdMax}% - The major part of your current investment is at ${maxAccountName} (${maxInvestmentRatio}%) and does not exceed ${thresholdMax}% + La majeure partie de votre investissement actuel est chez ${maxAccountName} (${maxInvestmentRatio}%) et n’excède pas ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html 24 @@ -8384,7 +8384,7 @@ Fixed Income - Fixed Income + Revenu Fixe apps/client/src/app/pages/i18n/i18n-page.html 55 @@ -8392,7 +8392,7 @@ The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% - The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) exceeds ${thresholdMax}% + La part en revenu fixe de votre investissement actuel (${fixedIncomeValueRatio}%) dépasse ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html 57 @@ -8400,7 +8400,7 @@ The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% - The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is below ${thresholdMin}% + La part en revenu fixe de votre investissement actuel (${fixedIncomeValueRatio}%) est inférieure à ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html 61 @@ -8408,7 +8408,7 @@ The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - The fixed income contribution of your current investment (${fixedIncomeValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + La part en revenu fixe de votre investissement actuel (${fixedIncomeValueRatio}%) se situe entre ${thresholdMin}% et ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html 66 @@ -8416,7 +8416,7 @@ Investment: Base Currency - Investment: Base Currency + Investissement : Devise de Base apps/client/src/app/pages/i18n/i18n-page.html 85 @@ -8424,7 +8424,7 @@ The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) - The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + La majeure partie de votre investissement actuel n’est pas dans votre devise de base (${baseCurrencyValueRatio}% en ${baseCurrency}) apps/client/src/app/pages/i18n/i18n-page.html 88 @@ -8432,7 +8432,7 @@ The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) - The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency}) + La majeure partie de votre investissement actuel est dans votre devise de base (${baseCurrencyValueRatio}% en ${baseCurrency}) apps/client/src/app/pages/i18n/i18n-page.html 92 @@ -8549,7 +8549,7 @@ Average Unit Price - Average Unit Price + Prix Unitaire Moyen apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts 136 @@ -8561,7 +8561,7 @@ Account Cluster Risks - Account Cluster Risks + Risques de Concentration par Compte apps/client/src/app/pages/i18n/i18n-page.html 14 @@ -8569,7 +8569,7 @@ Asset Class Cluster Risks - Asset Class Cluster Risks + Risques de Concentration par Classe d’Actifs apps/client/src/app/pages/i18n/i18n-page.html 39 @@ -8577,7 +8577,7 @@ Currency Cluster Risks - Currency Cluster Risks + Risques de Concentration par Devise apps/client/src/app/pages/i18n/i18n-page.html 83 @@ -8585,7 +8585,7 @@ Economic Market Cluster Risks - Economic Market Cluster Risks + Risques de Concentration par Marché Économique apps/client/src/app/pages/i18n/i18n-page.html 106 @@ -8593,7 +8593,7 @@ Emergency Fund - Emergency Fund + Fonds d’Urgence apps/client/src/app/pages/i18n/i18n-page.html 144 @@ -8601,7 +8601,7 @@ Fees - Fees + Frais apps/client/src/app/pages/i18n/i18n-page.html 161 @@ -8609,7 +8609,7 @@ Liquidity - Liquidity + Liquidités apps/client/src/app/pages/i18n/i18n-page.html 70 @@ -8617,7 +8617,7 @@ Buying Power - Buying Power + Pouvoir d’Achat apps/client/src/app/pages/i18n/i18n-page.html 71 @@ -8625,7 +8625,7 @@ Your buying power is below ${thresholdMin} ${baseCurrency} - Your buying power is below ${thresholdMin} ${baseCurrency} + Votre pouvoir d’achat est inférieur à ${thresholdMin} ${baseCurrency} apps/client/src/app/pages/i18n/i18n-page.html 73 @@ -8633,7 +8633,7 @@ Your buying power is 0 ${baseCurrency} - Your buying power is 0 ${baseCurrency} + Votre pouvoir d’achat est de 0 ${baseCurrency} apps/client/src/app/pages/i18n/i18n-page.html 77 @@ -8641,7 +8641,7 @@ Your buying power exceeds ${thresholdMin} ${baseCurrency} - Your buying power exceeds ${thresholdMin} ${baseCurrency} + Votre pouvoir d’achat dépasse ${thresholdMin} ${baseCurrency} apps/client/src/app/pages/i18n/i18n-page.html 80 @@ -8649,7 +8649,7 @@ Regional Market Cluster Risks - Regional Market Cluster Risks + Risques de Concentration par Marché Régional apps/client/src/app/pages/i18n/i18n-page.html 163 @@ -8657,7 +8657,7 @@ No results found... - No results found... + Aucun résultat trouvé... libs/ui/src/lib/assistant/assistant.html 51 @@ -8665,7 +8665,7 @@ Developed Markets - Developed Markets + Marchés développés apps/client/src/app/pages/i18n/i18n-page.html 109 @@ -8673,7 +8673,7 @@ The developed markets contribution of your current investment (${developedMarketsValueRatio}%) exceeds ${thresholdMax}% - The developed markets contribution of your current investment (${developedMarketsValueRatio}%) exceeds ${thresholdMax}% + La part des marchés développés de votre investissement actuel (${developedMarketsValueRatio}%) dépasse ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html 112 @@ -8681,7 +8681,7 @@ The developed markets contribution of your current investment (${developedMarketsValueRatio}%) is below ${thresholdMin}% - The developed markets contribution of your current investment (${developedMarketsValueRatio}%) is below ${thresholdMin}% + La part des marchés développés de votre investissement actuel (${developedMarketsValueRatio}%) est inférieure à ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html 117 @@ -8689,7 +8689,7 @@ The developed markets contribution of your current investment (${developedMarketsValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - The developed markets contribution of your current investment (${developedMarketsValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + La part des marchés développés de votre investissement actuel (${developedMarketsValueRatio}%) se situe entre ${thresholdMin}% et ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html 122 @@ -8697,7 +8697,7 @@ Emerging Markets - Emerging Markets + Marchés émergents apps/client/src/app/pages/i18n/i18n-page.html 127 @@ -8705,7 +8705,7 @@ The emerging markets contribution of your current investment (${emergingMarketsValueRatio}%) exceeds ${thresholdMax}% - The emerging markets contribution of your current investment (${emergingMarketsValueRatio}%) exceeds ${thresholdMax}% + La part des marchés émergents de votre investissement actuel (${emergingMarketsValueRatio}%) dépasse ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html 130 @@ -8713,7 +8713,7 @@ The emerging markets contribution of your current investment (${emergingMarketsValueRatio}%) is below ${thresholdMin}% - The emerging markets contribution of your current investment (${emergingMarketsValueRatio}%) is below ${thresholdMin}% + La part des marchés émergents de votre investissement actuel (${emergingMarketsValueRatio}%) est inférieure à ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html 135 @@ -8721,7 +8721,7 @@ The emerging markets contribution of your current investment (${emergingMarketsValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - The emerging markets contribution of your current investment (${emergingMarketsValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + La part des marchés émergents de votre investissement actuel (${emergingMarketsValueRatio}%) se situe entre ${thresholdMin}% et ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html 140 @@ -8729,7 +8729,7 @@ No accounts have been set up - No accounts have been set up + Aucun compte n’a été configuré apps/client/src/app/pages/i18n/i18n-page.html 21 @@ -8737,7 +8737,7 @@ Your net worth is managed by 0 accounts - Your net worth is managed by 0 accounts + Votre patrimoine est géré par 0 compte apps/client/src/app/pages/i18n/i18n-page.html 33 @@ -8745,7 +8745,7 @@ Asia-Pacific - Asia-Pacific + Asie-Pacifique apps/client/src/app/pages/i18n/i18n-page.html 165 @@ -8753,7 +8753,7 @@ The Asia-Pacific market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% - The Asia-Pacific market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% + La part du marché Asie-Pacifique de votre investissement actuel (${valueRatio}%) dépasse ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html 167 @@ -8761,7 +8761,7 @@ The Asia-Pacific market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% - The Asia-Pacific market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% + La part du marché Asie-Pacifique de votre investissement actuel (${valueRatio}%) est inférieure à ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html 171 @@ -8769,7 +8769,7 @@ The Asia-Pacific market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - The Asia-Pacific market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + La part du marché Asie-Pacifique de votre investissement actuel (${valueRatio}%) se situe entre ${thresholdMin}% et ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html 175 @@ -8777,7 +8777,7 @@ Emerging Markets - Emerging Markets + Marchés émergents apps/client/src/app/pages/i18n/i18n-page.html 180 @@ -8809,7 +8809,7 @@ Europe - Europe + Europe apps/client/src/app/pages/i18n/i18n-page.html 195 @@ -8817,7 +8817,7 @@ The Europe market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% - The Europe market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% + La part du marché européen de votre investissement actuel (${valueRatio}%) dépasse ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html 197 @@ -8825,7 +8825,7 @@ The Europe market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% - The Europe market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% + La part du marché européen de votre investissement actuel (${valueRatio}%) est inférieure à ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html 201 @@ -8833,7 +8833,7 @@ The Europe market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - The Europe market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + La part du marché européen de votre investissement actuel (${valueRatio}%) se situe entre ${thresholdMin}% et ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html 205 @@ -8841,7 +8841,7 @@ Japan - Japan + Japon apps/client/src/app/pages/i18n/i18n-page.html 209 @@ -8849,7 +8849,7 @@ The Japan market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% - The Japan market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% + La part du marché japonais de votre investissement actuel (${valueRatio}%) dépasse ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html 211 @@ -8857,7 +8857,7 @@ The Japan market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% - The Japan market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% + La part du marché japonais de votre investissement actuel (${valueRatio}%) est inférieure à ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html 215 @@ -8865,7 +8865,7 @@ The Japan market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - The Japan market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + La part du marché japonais de votre investissement actuel (${valueRatio}%) se situe entre ${thresholdMin}% et ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html 219 @@ -8873,7 +8873,7 @@ North America - North America + Amérique du Nord apps/client/src/app/pages/i18n/i18n-page.html 223 @@ -8881,7 +8881,7 @@ The North America market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% - The North America market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% + La part du marché nord-américain de votre investissement actuel (${valueRatio}%) dépasse ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html 225 @@ -8889,7 +8889,7 @@ The North America market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% - The North America market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% + La part du marché nord-américain de votre investissement actuel (${valueRatio}%) est inférieure à ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html 229 @@ -8897,7 +8897,7 @@ The North America market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% - The North America market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% + La part du marché nord-américain de votre investissement actuel (${valueRatio}%) se situe entre ${thresholdMin}% et ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html 233 @@ -8905,7 +8905,7 @@ Find Ghostfolio on GitHub - Find Ghostfolio on GitHub + Trouver Ghostfolio sur GitHub apps/client/src/app/pages/about/overview/about-overview-page.html 20 @@ -8925,7 +8925,7 @@ Join the Ghostfolio Slack community - Join the Ghostfolio Slack community + Rejoindre la communauté Ghostfolio sur Slack apps/client/src/app/pages/about/overview/about-overview-page.html 78 @@ -8937,7 +8937,7 @@ Follow Ghostfolio on X (formerly Twitter) - Follow Ghostfolio on X (formerly Twitter) + Suivre Ghostfolio sur X (anciennement Twitter) apps/client/src/app/pages/about/overview/about-overview-page.html 122 @@ -8945,7 +8945,7 @@ Send an e-mail - Send an e-mail + Envoyer un e-mail apps/client/src/app/pages/about/overview/about-overview-page.html 93 @@ -8957,7 +8957,7 @@ Registration Date - Registration Date + Date d’Inscription apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html 51 @@ -8965,7 +8965,7 @@ Follow Ghostfolio on LinkedIn - Follow Ghostfolio on LinkedIn + Suivre Ghostfolio sur LinkedIn apps/client/src/app/pages/about/overview/about-overview-page.html 151 @@ -8973,7 +8973,7 @@ Ghostfolio is an independent & bootstrapped business - Ghostfolio is an independent & bootstrapped business + Ghostfolio est une entreprise indépendante & autofinancée apps/client/src/app/pages/about/overview/about-overview-page.html 161 @@ -8981,7 +8981,7 @@ Support Ghostfolio - Support Ghostfolio + Soutenir Ghostfolio apps/client/src/app/pages/about/overview/about-overview-page.html 170 diff --git a/libs/common/src/lib/interfaces/coupon.interface.ts b/libs/common/src/lib/interfaces/coupon.interface.ts index cbf8525a2..0ee1ddb24 100644 --- a/libs/common/src/lib/interfaces/coupon.interface.ts +++ b/libs/common/src/lib/interfaces/coupon.interface.ts @@ -2,5 +2,6 @@ import { StringValue } from 'ms'; export interface Coupon { code: string; - duration?: StringValue; + createdAt: string; + duration: StringValue; } diff --git a/libs/ui/src/lib/notifications/alert-dialog/alert-dialog.component.ts b/libs/ui/src/lib/notifications/alert-dialog/alert-dialog.component.ts index 3dbe70387..16fb4b47b 100644 --- a/libs/ui/src/lib/notifications/alert-dialog/alert-dialog.component.ts +++ b/libs/ui/src/lib/notifications/alert-dialog/alert-dialog.component.ts @@ -1,6 +1,9 @@ +import { Clipboard } from '@angular/cdk/clipboard'; import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatDialogModule, MatDialogRef } from '@angular/material/dialog'; +import { MatSnackBar } from '@angular/material/snack-bar'; +import ms from 'ms'; import { AlertDialogParams } from './interfaces/interfaces'; @@ -12,6 +15,7 @@ import { AlertDialogParams } from './interfaces/interfaces'; templateUrl: './alert-dialog.html' }) export class GfAlertDialogComponent { + public copyValue?: string; public discardLabel: string; public message?: string; public title: string; @@ -19,9 +23,32 @@ export class GfAlertDialogComponent { protected readonly dialogRef = inject>(MatDialogRef); - public initialize({ discardLabel, message, title }: AlertDialogParams) { + private readonly clipboard = inject(Clipboard); + private readonly snackBar = inject(MatSnackBar); + + public initialize({ + copyValue, + discardLabel, + message, + title + }: AlertDialogParams) { + this.copyValue = copyValue; this.discardLabel = discardLabel; this.message = message; this.title = title; } + + public onCopyToClipboard() { + if (this.copyValue) { + this.clipboard.copy(this.copyValue); + + this.snackBar.open( + '✅ ' + $localize`The value has been copied to the clipboard`, + undefined, + { + duration: ms('3 seconds') + } + ); + } + } } diff --git a/libs/ui/src/lib/notifications/alert-dialog/alert-dialog.html b/libs/ui/src/lib/notifications/alert-dialog/alert-dialog.html index 6602078d3..f690a8e5d 100644 --- a/libs/ui/src/lib/notifications/alert-dialog/alert-dialog.html +++ b/libs/ui/src/lib/notifications/alert-dialog/alert-dialog.html @@ -2,10 +2,22 @@
} -@if (message) { -
+@if (message || copyValue) { +
+ @if (message) { +
+ } + @if (copyValue) { +
{{ copyValue }}
+ } +
}
+ @if (copyValue) { + + }
diff --git a/libs/ui/src/lib/notifications/alert-dialog/interfaces/interfaces.ts b/libs/ui/src/lib/notifications/alert-dialog/interfaces/interfaces.ts index fa330c463..7b2c16e52 100644 --- a/libs/ui/src/lib/notifications/alert-dialog/interfaces/interfaces.ts +++ b/libs/ui/src/lib/notifications/alert-dialog/interfaces/interfaces.ts @@ -1,4 +1,5 @@ export interface AlertDialogParams { + copyValue?: string; discardLabel: string; message?: string; title: string; diff --git a/libs/ui/src/lib/notifications/interfaces/interfaces.ts b/libs/ui/src/lib/notifications/interfaces/interfaces.ts index 071597691..dcea7d53c 100644 --- a/libs/ui/src/lib/notifications/interfaces/interfaces.ts +++ b/libs/ui/src/lib/notifications/interfaces/interfaces.ts @@ -1,6 +1,7 @@ import { ConfirmationDialogType } from '@ghostfolio/common/enums'; export interface AlertParams { + copyValue?: string; discardFn?: () => void; discardLabel?: string; message?: string; diff --git a/libs/ui/src/lib/notifications/notification.service.ts b/libs/ui/src/lib/notifications/notification.service.ts index b9a2562f7..389f52180 100644 --- a/libs/ui/src/lib/notifications/notification.service.ts +++ b/libs/ui/src/lib/notifications/notification.service.ts @@ -31,6 +31,7 @@ export class NotificationService { }); dialog.componentInstance.initialize({ + copyValue: aParams.copyValue, discardLabel: aParams.discardLabel, message: aParams.message, title: aParams.title