mirror of
https://github.com/bitwarden/browser.git
synced 2024-11-21 11:35:34 +01:00
[PM-4716] [PM-4717] [AC-1799] UI Bugs around Paid Plans (#6810)
* [PM-4717] Fixed teams starter typo in trial initiation * [PM-4716] Fixed duplicated information in enterprise plan details * [AC-1799] Resolved unresponsive "invite members" button when adding users to org
This commit is contained in:
parent
ac1ab0bdcc
commit
e6a09082c4
@ -431,14 +431,14 @@ export class PeopleComponent
|
|||||||
// Click on user email: Edit Flow
|
// Click on user email: Edit Flow
|
||||||
|
|
||||||
// User attempting to invite new users in a free org with max users
|
// User attempting to invite new users in a free org with max users
|
||||||
if (!user && this.allUsers.length === this.organization.seats) {
|
if (
|
||||||
|
!user &&
|
||||||
|
this.allUsers.length === this.organization.seats &&
|
||||||
|
(this.organization.planProductType === ProductType.Free ||
|
||||||
|
this.organization.planProductType === ProductType.TeamsStarter)
|
||||||
|
) {
|
||||||
// Show org upgrade modal
|
// Show org upgrade modal
|
||||||
if (
|
await this.showSeatLimitReachedDialog();
|
||||||
this.organization.planProductType === ProductType.Free ||
|
|
||||||
this.organization.planProductType === ProductType.TeamsStarter
|
|
||||||
) {
|
|
||||||
await this.showSeatLimitReachedDialog();
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -139,7 +139,7 @@ export class TrialInitiationComponent implements OnInit, OnDestroy {
|
|||||||
|
|
||||||
if (this.trialFlowOrgs.includes(qParams.org)) {
|
if (this.trialFlowOrgs.includes(qParams.org)) {
|
||||||
this.org = qParams.org;
|
this.org = qParams.org;
|
||||||
this.orgLabel = this.titleCasePipe.transform(this.org);
|
this.orgLabel = this.titleCasePipe.transform(this.orgDisplayName);
|
||||||
this.useTrialStepper = true;
|
this.useTrialStepper = true;
|
||||||
this.referenceData.flow = qParams.org;
|
this.referenceData.flow = qParams.org;
|
||||||
|
|
||||||
|
@ -52,7 +52,9 @@
|
|||||||
<label class="form-check-label" for="product{{ selectableProduct.product }}">
|
<label class="form-check-label" for="product{{ selectableProduct.product }}">
|
||||||
{{ selectableProduct.nameLocalizationKey | i18n }}
|
{{ selectableProduct.nameLocalizationKey | i18n }}
|
||||||
<small class="mb-1">{{ selectableProduct.descriptionLocalizationKey | i18n : "1" }}</small>
|
<small class="mb-1">{{ selectableProduct.descriptionLocalizationKey | i18n : "1" }}</small>
|
||||||
<ng-container *ngIf="selectableProduct.product === productTypes.Enterprise">
|
<ng-container
|
||||||
|
*ngIf="selectableProduct.product === productTypes.Enterprise; else nonEnterprisePlans"
|
||||||
|
>
|
||||||
<small>• {{ "includeAllTeamsFeatures" | i18n }}</small>
|
<small>• {{ "includeAllTeamsFeatures" | i18n }}</small>
|
||||||
<small *ngIf="selectableProduct.hasSelfHost">• {{ "onPremHostingOptional" | i18n }}</small>
|
<small *ngIf="selectableProduct.hasSelfHost">• {{ "onPremHostingOptional" | i18n }}</small>
|
||||||
<small *ngIf="selectableProduct.hasSso">• {{ "includeSsoAuthentication" | i18n }}</small>
|
<small *ngIf="selectableProduct.hasSso">• {{ "includeSsoAuthentication" | i18n }}</small>
|
||||||
@ -64,69 +66,78 @@
|
|||||||
{{ "xDayFreeTrial" | i18n : selectableProduct.trialPeriodDays }}
|
{{ "xDayFreeTrial" | i18n : selectableProduct.trialPeriodDays }}
|
||||||
</small>
|
</small>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
<ng-container
|
<ng-template #nonEnterprisePlans>
|
||||||
*ngIf="
|
<ng-container
|
||||||
teamsStarterPlanFeatureFlagIsEnabled && selectableProduct.product === productTypes.Teams;
|
|
||||||
else fullFeatureList
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<small>• {{ "includeAllTeamsStarterFeatures" | i18n }}</small>
|
|
||||||
<small>• {{ "chooseMonthlyOrAnnualBilling" | i18n }}</small>
|
|
||||||
<small>• {{ "abilityToAddMoreThanNMembers" | i18n : 10 }}</small>
|
|
||||||
<small *ngIf="selectableProduct.trialPeriodDays && createOrganization">
|
|
||||||
• {{ "xDayFreeTrial" | i18n : selectableProduct.trialPeriodDays }}
|
|
||||||
</small>
|
|
||||||
</ng-container>
|
|
||||||
<ng-template #fullFeatureList>
|
|
||||||
<small *ngIf="selectableProduct.product == productTypes.Free"
|
|
||||||
>• {{ "limitedUsers" | i18n : selectableProduct.PasswordManager.maxSeats }}</small
|
|
||||||
>
|
|
||||||
<small
|
|
||||||
*ngIf="
|
*ngIf="
|
||||||
selectableProduct.product != productTypes.Free &&
|
teamsStarterPlanFeatureFlagIsEnabled &&
|
||||||
selectableProduct.product != productTypes.TeamsStarter &&
|
selectableProduct.product === productTypes.Teams;
|
||||||
selectableProduct.PasswordManager.maxSeats
|
else fullFeatureList
|
||||||
"
|
"
|
||||||
>• {{ "addShareLimitedUsers" | i18n : selectableProduct.PasswordManager.maxSeats }}</small
|
|
||||||
>
|
>
|
||||||
<small *ngIf="!selectableProduct.PasswordManager.maxSeats"
|
<small>• {{ "includeAllTeamsStarterFeatures" | i18n }}</small>
|
||||||
>• {{ "addShareUnlimitedUsers" | i18n }}</small
|
<small>• {{ "chooseMonthlyOrAnnualBilling" | i18n }}</small>
|
||||||
>
|
<small>• {{ "abilityToAddMoreThanNMembers" | i18n : 10 }}</small>
|
||||||
<small *ngIf="selectableProduct.PasswordManager.maxCollections"
|
<small *ngIf="selectableProduct.trialPeriodDays && createOrganization">
|
||||||
>•
|
• {{ "xDayFreeTrial" | i18n : selectableProduct.trialPeriodDays }}
|
||||||
{{
|
</small>
|
||||||
"limitedCollections" | i18n : selectableProduct.PasswordManager.maxCollections
|
</ng-container>
|
||||||
}}</small
|
<ng-template #fullFeatureList>
|
||||||
>
|
<small *ngIf="selectableProduct.product == productTypes.Free"
|
||||||
<small *ngIf="selectableProduct.PasswordManager.maxAdditionalSeats"
|
>• {{ "limitedUsers" | i18n : selectableProduct.PasswordManager.maxSeats }}</small
|
||||||
>•
|
>
|
||||||
{{
|
<small
|
||||||
"addShareLimitedUsers" | i18n : selectableProduct.PasswordManager.maxAdditionalSeats
|
*ngIf="
|
||||||
}}</small
|
selectableProduct.product != productTypes.Free &&
|
||||||
>
|
selectableProduct.product != productTypes.TeamsStarter &&
|
||||||
<small *ngIf="!selectableProduct.PasswordManager.maxCollections"
|
selectableProduct.PasswordManager.maxSeats
|
||||||
>• {{ "createUnlimitedCollections" | i18n }}</small
|
"
|
||||||
>
|
>•
|
||||||
<small *ngIf="selectableProduct.PasswordManager.baseStorageGb"
|
{{ "addShareLimitedUsers" | i18n : selectableProduct.PasswordManager.maxSeats }}</small
|
||||||
>•
|
>
|
||||||
{{
|
<small *ngIf="!selectableProduct.PasswordManager.maxSeats"
|
||||||
"gbEncryptedFileStorage" | i18n : selectableProduct.PasswordManager.baseStorageGb + "GB"
|
>• {{ "addShareUnlimitedUsers" | i18n }}</small
|
||||||
}}</small
|
>
|
||||||
>
|
<small *ngIf="selectableProduct.PasswordManager.maxCollections"
|
||||||
<small *ngIf="selectableProduct.hasGroups">• {{ "controlAccessWithGroups" | i18n }}</small>
|
>•
|
||||||
<small *ngIf="selectableProduct.hasApi">• {{ "trackAuditLogs" | i18n }}</small>
|
{{
|
||||||
<small *ngIf="selectableProduct.hasDirectory"
|
"limitedCollections" | i18n : selectableProduct.PasswordManager.maxCollections
|
||||||
>• {{ "syncUsersFromDirectory" | i18n }}</small
|
}}</small
|
||||||
>
|
>
|
||||||
<small *ngIf="selectableProduct.hasSelfHost">• {{ "onPremHostingOptional" | i18n }}</small>
|
<small *ngIf="selectableProduct.PasswordManager.maxAdditionalSeats"
|
||||||
<small *ngIf="selectableProduct.usersGetPremium">• {{ "usersGetPremium" | i18n }}</small>
|
>•
|
||||||
<small *ngIf="selectableProduct.product != productTypes.Free"
|
{{
|
||||||
>• {{ "priorityCustomerSupport" | i18n }}</small
|
"addShareLimitedUsers" | i18n : selectableProduct.PasswordManager.maxAdditionalSeats
|
||||||
>
|
}}</small
|
||||||
<small *ngIf="selectableProduct.trialPeriodDays && createOrganization"
|
>
|
||||||
>•
|
<small *ngIf="!selectableProduct.PasswordManager.maxCollections"
|
||||||
{{ "xDayFreeTrial" | i18n : selectableProduct.trialPeriodDays }}
|
>• {{ "createUnlimitedCollections" | i18n }}</small
|
||||||
</small>
|
>
|
||||||
|
<small *ngIf="selectableProduct.PasswordManager.baseStorageGb"
|
||||||
|
>•
|
||||||
|
{{
|
||||||
|
"gbEncryptedFileStorage"
|
||||||
|
| i18n : selectableProduct.PasswordManager.baseStorageGb + "GB"
|
||||||
|
}}</small
|
||||||
|
>
|
||||||
|
<small *ngIf="selectableProduct.hasGroups"
|
||||||
|
>• {{ "controlAccessWithGroups" | i18n }}</small
|
||||||
|
>
|
||||||
|
<small *ngIf="selectableProduct.hasApi">• {{ "trackAuditLogs" | i18n }}</small>
|
||||||
|
<small *ngIf="selectableProduct.hasDirectory"
|
||||||
|
>• {{ "syncUsersFromDirectory" | i18n }}</small
|
||||||
|
>
|
||||||
|
<small *ngIf="selectableProduct.hasSelfHost"
|
||||||
|
>• {{ "onPremHostingOptional" | i18n }}</small
|
||||||
|
>
|
||||||
|
<small *ngIf="selectableProduct.usersGetPremium">• {{ "usersGetPremium" | i18n }}</small>
|
||||||
|
<small *ngIf="selectableProduct.product != productTypes.Free"
|
||||||
|
>• {{ "priorityCustomerSupport" | i18n }}</small
|
||||||
|
>
|
||||||
|
<small *ngIf="selectableProduct.trialPeriodDays && createOrganization"
|
||||||
|
>•
|
||||||
|
{{ "xDayFreeTrial" | i18n : selectableProduct.trialPeriodDays }}
|
||||||
|
</small>
|
||||||
|
</ng-template>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
<span *ngIf="selectableProduct.product != productTypes.Free">
|
<span *ngIf="selectableProduct.product != productTypes.Free">
|
||||||
<ng-container *ngIf="selectableProduct.PasswordManager.basePrice && !acceptingSponsorship">
|
<ng-container *ngIf="selectableProduct.PasswordManager.basePrice && !acceptingSponsorship">
|
||||||
|
Loading…
Reference in New Issue
Block a user