mirror of https://github.com/ghostfolio/ghostfolio
committed by
GitHub
17 changed files with 298 additions and 66 deletions
@ -0,0 +1 @@ |
|||||
|
export interface SubscriptionInterstitialDialogParams {} |
@ -0,0 +1,22 @@ |
|||||
|
import { ChangeDetectionStrategy, Component, Inject } from '@angular/core'; |
||||
|
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; |
||||
|
|
||||
|
import { SubscriptionInterstitialDialogParams } from './interfaces/interfaces'; |
||||
|
|
||||
|
@Component({ |
||||
|
changeDetection: ChangeDetectionStrategy.OnPush, |
||||
|
host: { class: 'd-flex flex-column flex-grow-1 h-100' }, |
||||
|
selector: 'gf-subscription-interstitial-dialog', |
||||
|
styleUrls: ['./subscription-interstitial-dialog.scss'], |
||||
|
templateUrl: 'subscription-interstitial-dialog.html' |
||||
|
}) |
||||
|
export class SubscriptionInterstitialDialog { |
||||
|
public constructor( |
||||
|
@Inject(MAT_DIALOG_DATA) public data: SubscriptionInterstitialDialogParams, |
||||
|
public dialogRef: MatDialogRef<SubscriptionInterstitialDialog> |
||||
|
) {} |
||||
|
|
||||
|
public onCancel() { |
||||
|
this.dialogRef.close({}); |
||||
|
} |
||||
|
} |
@ -0,0 +1,42 @@ |
|||||
|
<h1 class="align-items-center d-flex" mat-dialog-title> |
||||
|
<span>Ghostfolio Premium</span> |
||||
|
<gf-premium-indicator class="ml-1"></gf-premium-indicator> |
||||
|
</h1> |
||||
|
<div class="flex-grow-1" mat-dialog-content> |
||||
|
<p class="h5" i18n> |
||||
|
Are you an ambitious investor who needs the full picture? |
||||
|
</p> |
||||
|
<p i18n> |
||||
|
By upgrading to Ghostfolio Premium, you will get these additional features: |
||||
|
</p> |
||||
|
<ul class="list-unstyled mb-3"> |
||||
|
<li class="align-items-center d-flex mb-1"> |
||||
|
<ion-icon class="mr-1" name="checkmark-circle-outline"></ion-icon> |
||||
|
<span i18n>Portfolio Summary</span> |
||||
|
</li> |
||||
|
<li class="align-items-center d-flex mb-1"> |
||||
|
<ion-icon class="mr-1" name="checkmark-circle-outline"></ion-icon> |
||||
|
<span i18n>Performance Benchmarks</span> |
||||
|
</li> |
||||
|
<li class="align-items-center d-flex mb-1"> |
||||
|
<ion-icon class="mr-1" name="checkmark-circle-outline"></ion-icon> |
||||
|
<span i18n>Allocations</span> |
||||
|
</li> |
||||
|
<li class="align-items-center d-flex mb-1"> |
||||
|
<ion-icon class="mr-1" name="checkmark-circle-outline"></ion-icon> |
||||
|
<span i18n>FIRE Calculator</span> |
||||
|
</li> |
||||
|
<li class="align-items-center d-flex mb-1"> |
||||
|
<ion-icon class="mr-1" name="checkmark-circle-outline"></ion-icon> |
||||
|
<a i18n [routerLink]="['/features']">and more Features...</a> |
||||
|
</li> |
||||
|
</ul> |
||||
|
<p>Refine your personal investment strategy now.</p> |
||||
|
</div> |
||||
|
<div class="justify-content-end" mat-dialog-actions> |
||||
|
<button i18n mat-button (click)="onCancel()">Skip</button> |
||||
|
<a color="primary" mat-flat-button [routerLink]="['/pricing']"> |
||||
|
<span i18n>Upgrade Plan</span> |
||||
|
<ion-icon class="ml-1" name="arrow-forward-outline"></ion-icon> |
||||
|
</a> |
||||
|
</div> |
@ -0,0 +1,21 @@ |
|||||
|
import { CommonModule } from '@angular/common'; |
||||
|
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 { GfPremiumIndicatorModule } from '@ghostfolio/ui/premium-indicator'; |
||||
|
|
||||
|
import { SubscriptionInterstitialDialog } from './subscription-interstitial-dialog.component'; |
||||
|
|
||||
|
@NgModule({ |
||||
|
declarations: [SubscriptionInterstitialDialog], |
||||
|
imports: [ |
||||
|
CommonModule, |
||||
|
GfPremiumIndicatorModule, |
||||
|
MatButtonModule, |
||||
|
MatDialogModule, |
||||
|
RouterModule |
||||
|
], |
||||
|
schemas: [CUSTOM_ELEMENTS_SCHEMA] |
||||
|
}) |
||||
|
export class GfSubscriptionInterstitialDialogModule {} |
@ -0,0 +1,11 @@ |
|||||
|
:host { |
||||
|
display: block; |
||||
|
|
||||
|
.mat-dialog-content { |
||||
|
max-height: unset; |
||||
|
|
||||
|
ion-icon[name='checkmark-circle-outline'] { |
||||
|
color: rgba(var(--palette-accent-500), 1); |
||||
|
} |
||||
|
} |
||||
|
} |
Loading…
Reference in new issue