mirror of
https://github.com/bitwarden/browser.git
synced 2024-11-26 12:25:20 +01:00
Show upgrade plan button for free orgs. (#1269)
* Show upgrade plan button for free orgs. * Add families plan callout for subscription upgrade
This commit is contained in:
parent
2700caf2a8
commit
bb0b5f2d87
@ -70,6 +70,15 @@
|
|||||||
</div>
|
</div>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
</div>
|
</div>
|
||||||
|
<ng-container>
|
||||||
|
<div class="d-flex">
|
||||||
|
<button type="button" class="btn btn-outline-secondary" (click)="changePlan()" *ngIf="showChangePlanButton">
|
||||||
|
{{'changeBillingPlan' | i18n}}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<app-change-plan [organizationId]="organizationId" (onChanged)="closeChangePlan(true)"
|
||||||
|
(onCanceled)="closeChangePlan(false)" *ngIf="showChangePlan"></app-change-plan>
|
||||||
|
</ng-container>
|
||||||
<h2 class="spaced-header">{{'manageSubscription' | i18n}}</h2>
|
<h2 class="spaced-header">{{'manageSubscription' | i18n}}</h2>
|
||||||
<p class="mb-4">{{subscriptionDesc}}</p>
|
<p class="mb-4">{{subscriptionDesc}}</p>
|
||||||
<ng-container *ngIf="subscription && canAdjustSeats && !subscription.cancelled && !subscriptionMarkedForCancel">
|
<ng-container *ngIf="subscription && canAdjustSeats && !subscription.cancelled && !subscriptionMarkedForCancel">
|
||||||
@ -118,8 +127,6 @@
|
|||||||
<span>{{'cancelSubscription' | i18n}}</span>
|
<span>{{'cancelSubscription' | i18n}}</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<app-change-plan [organizationId]="organizationId" (onChanged)="closeChangePlan(true)"
|
|
||||||
(onCanceled)="closeChangePlan(false)" *ngIf="showChangePlan"></app-change-plan>
|
|
||||||
<div class="mt-3" *ngIf="showDownloadLicense">
|
<div class="mt-3" *ngIf="showDownloadLicense">
|
||||||
<app-download-license [organizationId]="organizationId" (onDownloaded)="closeDownloadLicense()"
|
<app-download-license [organizationId]="organizationId" (onDownloaded)="closeDownloadLicense()"
|
||||||
(onCanceled)="closeDownloadLicense()"></app-download-license>
|
(onCanceled)="closeDownloadLicense()"></app-download-license>
|
||||||
|
@ -110,15 +110,7 @@ export class OrganizationSubscriptionComponent implements OnInit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async changePlan() {
|
async changePlan() {
|
||||||
if (this.subscription == null && this.sub.planType === PlanType.Free) {
|
this.showChangePlan = !this.showChangePlan;
|
||||||
this.showChangePlan = !this.showChangePlan;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const contactSupport = await this.platformUtilsService.showDialog(this.i18nService.t('changeBillingPlanDesc'),
|
|
||||||
this.i18nService.t('changeBillingPlan'), this.i18nService.t('contactSupport'), this.i18nService.t('close'));
|
|
||||||
if (contactSupport) {
|
|
||||||
this.platformUtilsService.launchUri('https://bitwarden.com/contact');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
closeChangePlan(changed: boolean) {
|
closeChangePlan(changed: boolean) {
|
||||||
@ -221,7 +213,11 @@ export class OrganizationSubscriptionComponent implements OnInit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
get subscriptionDesc() {
|
get subscriptionDesc() {
|
||||||
if (this.sub.maxAutoscaleSeats === this.sub.seats && this.sub.seats != null) {
|
if (this.sub.planType === PlanType.Free) {
|
||||||
|
return this.i18nService.t('subscriptionFreePlan', this.sub.seats.toString());
|
||||||
|
} else if (this.sub.planType === PlanType.FamiliesAnnually || this.sub.planType === PlanType.FamiliesAnnually2019) {
|
||||||
|
return this.i18nService.t('subscriptionFamiliesPlan', this.sub.seats.toString());
|
||||||
|
} else if (this.sub.maxAutoscaleSeats === this.sub.seats && this.sub.seats != null) {
|
||||||
return this.i18nService.t('subscriptionMaxReached', this.sub.seats.toString());
|
return this.i18nService.t('subscriptionMaxReached', this.sub.seats.toString());
|
||||||
} else if (this.sub.maxAutoscaleSeats == null) {
|
} else if (this.sub.maxAutoscaleSeats == null) {
|
||||||
return this.i18nService.t('subscriptionUserSeatsUnlimitedAutoscale');
|
return this.i18nService.t('subscriptionUserSeatsUnlimitedAutoscale');
|
||||||
@ -229,4 +225,8 @@ export class OrganizationSubscriptionComponent implements OnInit {
|
|||||||
return this.i18nService.t('subscriptionUserSeatsLimitedAutoscale', this.sub.maxAutoscaleSeats.toString());
|
return this.i18nService.t('subscriptionUserSeatsLimitedAutoscale', this.sub.maxAutoscaleSeats.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get showChangePlanButton() {
|
||||||
|
return this.subscription == null && this.sub.planType === PlanType.Free && !this.showChangePlan;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -2804,17 +2804,13 @@
|
|||||||
"description": "A billing plan/package. For example: families, teams, enterprise, etc."
|
"description": "A billing plan/package. For example: families, teams, enterprise, etc."
|
||||||
},
|
},
|
||||||
"changeBillingPlan": {
|
"changeBillingPlan": {
|
||||||
"message": "Change Plan",
|
"message": "Upgrade Plan",
|
||||||
"description": "A billing plan/package. For example: families, teams, enterprise, etc."
|
"description": "A billing plan/package. For example: families, teams, enterprise, etc."
|
||||||
},
|
},
|
||||||
"changeBillingPlanUpgrade": {
|
"changeBillingPlanUpgrade": {
|
||||||
"message": "Upgrade your account to another plan by providing the information below. Please ensure that you have an active payment method added to the account.",
|
"message": "Upgrade your account to another plan by providing the information below. Please ensure that you have an active payment method added to the account.",
|
||||||
"description": "A billing plan/package. For example: families, teams, enterprise, etc."
|
"description": "A billing plan/package. For example: families, teams, enterprise, etc."
|
||||||
},
|
},
|
||||||
"changeBillingPlanDesc": {
|
|
||||||
"message": "Contact customer support if you would like to change your plan. Please ensure that you have an active payment method added to the account.",
|
|
||||||
"description": "A billing plan/package. For example: families, teams, enterprise, etc."
|
|
||||||
},
|
|
||||||
"invoiceNumber": {
|
"invoiceNumber": {
|
||||||
"message": "Invoice #$NUMBER$",
|
"message": "Invoice #$NUMBER$",
|
||||||
"description": "ex. Invoice #79C66F0-0001",
|
"description": "ex. Invoice #79C66F0-0001",
|
||||||
@ -2938,6 +2934,24 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"subscriptionFreePlan": {
|
||||||
|
"message": "You cannot invite more than $COUNT$ users without upgrading your plan.",
|
||||||
|
"placeholders": {
|
||||||
|
"count": {
|
||||||
|
"content": "$1",
|
||||||
|
"example": "2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"subscriptionFamiliesPlan": {
|
||||||
|
"message": "You cannot invite more than $COUNT$ users without upgrading your plan. Please contact Customer Support to upgrade.",
|
||||||
|
"placeholders": {
|
||||||
|
"count": {
|
||||||
|
"content": "$1",
|
||||||
|
"example": "6"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"subscriptionMaxReached": {
|
"subscriptionMaxReached": {
|
||||||
"message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.",
|
"message": "Adjustments to your subscription will result in prorated changes to your billing totals. You cannot invite more than $COUNT$ users without increasing your subscription seats.",
|
||||||
"placeholders": {
|
"placeholders": {
|
||||||
|
Loading…
Reference in New Issue
Block a user