1
0
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:
Conner Turnbull 2023-11-06 14:42:08 -05:00 committed by GitHub
parent ac1ab0bdcc
commit e6a09082c4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 80 additions and 69 deletions

View File

@ -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;
} }

View File

@ -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;

View File

@ -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">