mirror of
https://github.com/bitwarden/browser
synced 2025-12-15 15:53:27 +00:00
Feature/SG-959 Update "Go premium" copy verbiage (#4396)
* SG-959 - Replacing premium callout copy with new message + link to create org screen with families plan selected * SG-959 - Replacing pure inputs for plan & product type with getters & setters so I can provide a form control setValue byproduct when a parent component (create-organization.component in this case) passes in a product / plan type. Query params for plan type were not being respected until this fix. Chose setters & getters over ngOnChanges as it doesn't allow for devs to manually set product or plan to other values without the form reflecting it.
This commit is contained in:
@@ -52,8 +52,25 @@ export class OrganizationPlansComponent implements OnInit, OnDestroy {
|
|||||||
@Input() showFree = true;
|
@Input() showFree = true;
|
||||||
@Input() showCancel = false;
|
@Input() showCancel = false;
|
||||||
@Input() acceptingSponsorship = false;
|
@Input() acceptingSponsorship = false;
|
||||||
@Input() product: ProductType = ProductType.Free;
|
@Input()
|
||||||
@Input() plan: PlanType = PlanType.Free;
|
get product(): ProductType {
|
||||||
|
return this._product;
|
||||||
|
}
|
||||||
|
set product(product: ProductType) {
|
||||||
|
this._product = product;
|
||||||
|
this.formGroup?.controls?.product?.setValue(product);
|
||||||
|
}
|
||||||
|
private _product = ProductType.Free;
|
||||||
|
|
||||||
|
@Input()
|
||||||
|
get plan(): PlanType {
|
||||||
|
return this._plan;
|
||||||
|
}
|
||||||
|
set plan(plan: PlanType) {
|
||||||
|
this._plan = plan;
|
||||||
|
this.formGroup?.controls?.plan?.setValue(plan);
|
||||||
|
}
|
||||||
|
private _plan = PlanType.Free;
|
||||||
@Input() providerId: string;
|
@Input() providerId: string;
|
||||||
@Output() onSuccess = new EventEmitter<OnSuccessArgs>();
|
@Output() onSuccess = new EventEmitter<OnSuccessArgs>();
|
||||||
@Output() onCanceled = new EventEmitter<void>();
|
@Output() onCanceled = new EventEmitter<void>();
|
||||||
|
|||||||
@@ -45,7 +45,10 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p class="text-lg" [ngClass]="{ 'mb-0': !selfHosted }">
|
<p class="text-lg" [ngClass]="{ 'mb-0': !selfHosted }">
|
||||||
{{ "premiumPrice" | i18n: (premiumPrice | currency: "$") }}
|
{{ "premiumPriceWithFamilyPlan" | i18n: (premiumPrice | currency: "$"):familyPlanMaxUserCount }}
|
||||||
|
<a routerLink="/create-organization" [queryParams]="{ plan: 'families' }">{{
|
||||||
|
"bitwardenFamiliesPlan" | i18n
|
||||||
|
}}</a>
|
||||||
</p>
|
</p>
|
||||||
<a
|
<a
|
||||||
bitButton
|
bitButton
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ export class PremiumComponent implements OnInit {
|
|||||||
canAccessPremium = false;
|
canAccessPremium = false;
|
||||||
selfHosted = false;
|
selfHosted = false;
|
||||||
premiumPrice = 10;
|
premiumPrice = 10;
|
||||||
|
familyPlanMaxUserCount = 6;
|
||||||
storageGbPrice = 4;
|
storageGbPrice = 4;
|
||||||
additionalStorage = 0;
|
additionalStorage = 0;
|
||||||
|
|
||||||
|
|||||||
@@ -1822,6 +1822,22 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"premiumPriceWithFamilyPlan": {
|
||||||
|
"message": "Go premium for just $PRICE$ /year, or get premium accounts for $FAMILYPLANUSERCOUNT$ users and unlimited family sharing with a ",
|
||||||
|
"placeholders": {
|
||||||
|
"price": {
|
||||||
|
"content": "$1",
|
||||||
|
"example": "$10"
|
||||||
|
},
|
||||||
|
"familyplanusercount": {
|
||||||
|
"content": "$2",
|
||||||
|
"example": "6"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"bitwardenFamiliesPlan": {
|
||||||
|
"message": "Bitwarden Families plan."
|
||||||
|
},
|
||||||
"addons": {
|
"addons": {
|
||||||
"message": "Addons"
|
"message": "Addons"
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user