1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-10 05:13:29 +00:00

[PM-1512] Upgrade prettier (#5028)

* Upgrade prettier

* Lock prettier version
This commit is contained in:
Oscar Hinton
2023-03-21 11:28:15 +01:00
committed by GitHub
parent 9c60b2b54a
commit ff4293b7bd
107 changed files with 294 additions and 223 deletions

View File

@@ -2,7 +2,7 @@ import { clearClipboardAlarmName } from "../autofill/clipboard";
import { BrowserApi } from "../browser/browserApi"; import { BrowserApi } from "../browser/browserApi";
export const alarmKeys = [clearClipboardAlarmName] as const; export const alarmKeys = [clearClipboardAlarmName] as const;
export type AlarmKeys = typeof alarmKeys[number]; export type AlarmKeys = (typeof alarmKeys)[number];
type AlarmState = { [T in AlarmKeys]: number | undefined }; type AlarmState = { [T in AlarmKeys]: number | undefined };

View File

@@ -10,7 +10,7 @@
<input id="email" type="email" formControlName="email" appInputVerbatim="false" /> <input id="email" type="email" formControlName="email" appInputVerbatim="false" />
</div> </div>
<div class="box-footer no-margin" *ngIf="selfHostedDomain"> <div class="box-footer no-margin" *ngIf="selfHostedDomain">
{{ "loggingInTo" | i18n: selfHostedDomain }} {{ "loggingInTo" | i18n : selfHostedDomain }}
</div> </div>
<div class="remember-email-check"> <div class="remember-email-check">
<input <input

View File

@@ -57,7 +57,7 @@
</div> </div>
<div id="masterPasswordHelp" class="box-footer"> <div id="masterPasswordHelp" class="box-footer">
<p>{{ "yourVaultIsLocked" | i18n }}</p> <p>{{ "yourVaultIsLocked" | i18n }}</p>
{{ "loggedInAsOn" | i18n: email:webVaultHostname }} {{ "loggedInAsOn" | i18n : email : webVaultHostname }}
</div> </div>
</div> </div>
<div class="box" *ngIf="biometricLock"> <div class="box" *ngIf="biometricLock">

View File

@@ -10,7 +10,7 @@
<div class="box"> <div class="box">
<div class="box-content"> <div class="box-content">
<div class="box-content-row" appBoxRow> <div class="box-content-row" appBoxRow>
<p>{{ "convertOrganizationEncryptionDesc" | i18n: organization.name }}</p> <p>{{ "convertOrganizationEncryptionDesc" | i18n : organization.name }}</p>
</div> </div>
<div class="box-content-row"> <div class="box-content-row">
<button <button

View File

@@ -34,7 +34,7 @@
{{ "enterVerificationCodeApp" | i18n }} {{ "enterVerificationCodeApp" | i18n }}
</span> </span>
<span *ngIf="selectedProviderType === providerType.Email"> <span *ngIf="selectedProviderType === providerType.Email">
{{ "enterVerificationCodeEmail" | i18n: twoFactorEmail }} {{ "enterVerificationCodeEmail" | i18n : twoFactorEmail }}
</span> </span>
</div> </div>
<div class="box first"> <div class="box first">

View File

@@ -57,7 +57,7 @@
<span class="sr-only">{{ "pendingDeletion" | i18n }}</span> <span class="sr-only">{{ "pendingDeletion" | i18n }}</span>
</ng-container> </ng-container>
</span> </span>
<span class="detail">{{ s.deletionDate | date: "medium" }}</span> <span class="detail">{{ s.deletionDate | date : "medium" }}</span>
</div> </div>
</button> </button>
<div class="action-buttons"> <div class="action-buttons">

View File

@@ -14,7 +14,7 @@
<p class="text-center" *ngIf="isCloud"> <p class="text-center" *ngIf="isCloud">
{{ "serverVersion" | i18n }}: {{ this.serverConfig?.version }} {{ "serverVersion" | i18n }}: {{ this.serverConfig?.version }}
<span *ngIf="!serverConfig.isValid()"> <span *ngIf="!serverConfig.isValid()">
({{ "lastSeenOn" | i18n: (serverConfig.utcDate | date: "mediumDate") }}) ({{ "lastSeenOn" | i18n : (serverConfig.utcDate | date : "mediumDate") }})
</span> </span>
</p> </p>
@@ -24,11 +24,11 @@
{{ "serverVersion" | i18n }} <small>({{ "thirdParty" | i18n }})</small>: {{ "serverVersion" | i18n }} <small>({{ "thirdParty" | i18n }})</small>:
{{ this.serverConfig?.version }} {{ this.serverConfig?.version }}
<span *ngIf="!serverConfig.isValid()"> <span *ngIf="!serverConfig.isValid()">
({{ "lastSeenOn" | i18n: (serverConfig.utcDate | date: "mediumDate") }}) ({{ "lastSeenOn" | i18n : (serverConfig.utcDate | date : "mediumDate") }})
</span> </span>
</p> </p>
<div class="text-center"> <div class="text-center">
<small>{{ "thirdPartyServerMessage" | i18n: serverConfig.server?.name }}</small> <small>{{ "thirdPartyServerMessage" | i18n : serverConfig.server?.name }}</small>
</div> </div>
</ng-container> </ng-container>
@@ -36,7 +36,7 @@
{{ "serverVersion" | i18n }} <small>({{ "selfHosted" | i18n }})</small>: {{ "serverVersion" | i18n }} <small>({{ "selfHosted" | i18n }})</small>:
{{ this.serverConfig?.version }} {{ this.serverConfig?.version }}
<span *ngIf="!serverConfig.isValid()"> <span *ngIf="!serverConfig.isValid()">
({{ "lastSeenOn" | i18n: (serverConfig.utcDate | date: "mediumDate") }}) ({{ "lastSeenOn" | i18n : (serverConfig.utcDate | date : "mediumDate") }})
</span> </span>
</p> </p>
</ng-container> </ng-container>

View File

@@ -31,7 +31,7 @@
<i class="bwi bwi-minus-circle bwi-lg" aria-hidden="true"></i> <i class="bwi bwi-minus-circle bwi-lg" aria-hidden="true"></i>
</button> </button>
<div class="row-main"> <div class="row-main">
<label for="excludedDomain{{ i }}">{{ "uriPosition" | i18n: i + 1 }}</label> <label for="excludedDomain{{ i }}">{{ "uriPosition" | i18n : i + 1 }}</label>
<input <input
id="excludedDomain{{ i }}" id="excludedDomain{{ i }}"
name="excludedDomain{{ i }}" name="excludedDomain{{ i }}"

View File

@@ -1,5 +1,5 @@
<app-callout type="info" *ngIf="vaultTimeoutPolicy"> <app-callout type="info" *ngIf="vaultTimeoutPolicy">
{{ "vaultTimeoutPolicyInEffect" | i18n: vaultTimeoutPolicyHours:vaultTimeoutPolicyMinutes }} {{ "vaultTimeoutPolicyInEffect" | i18n : vaultTimeoutPolicyHours : vaultTimeoutPolicyMinutes }}
</app-callout> </app-callout>
<div [formGroup]="form"> <div [formGroup]="form">

View File

@@ -25,7 +25,7 @@
appSelectCopy appSelectCopy
[innerHTML]="h.password | colorPassword" [innerHTML]="h.password | colorPassword"
></div> ></div>
<span class="detail">{{ h.date | date: "medium" }}</span> <span class="detail">{{ h.date | date : "medium" }}</span>
</div> </div>
</div> </div>
<div class="action-buttons"> <div class="action-buttons">

View File

@@ -228,7 +228,7 @@
type="text" type="text"
name="Card.ExpYear" name="Card.ExpYear"
[(ngModel)]="cipher.card.expYear" [(ngModel)]="cipher.card.expYear"
placeholder="{{ 'ex' | i18n }} {{ currentDate | date: 'yyyy' }}" placeholder="{{ 'ex' | i18n }} {{ currentDate | date : 'yyyy' }}"
[readonly]="!cipher.edit && editMode" [readonly]="!cipher.edit && editMode"
/> />
</div> </div>
@@ -470,7 +470,7 @@
class="box-content-row box-content-row-multi" class="box-content-row box-content-row-multi"
appBoxRow appBoxRow
*ngFor="let u of cipher.login.uris; let i = index; trackBy: trackByFunction" *ngFor="let u of cipher.login.uris; let i = index; trackBy: trackByFunction"
attr.aria-label="{{ 'uriPosition' | i18n: i + 1 }}" attr.aria-label="{{ 'uriPosition' | i18n : i + 1 }}"
> >
<button <button
type="button" type="button"
@@ -481,7 +481,7 @@
<i class="bwi bwi-minus-circle bwi-lg" aria-hidden="true"></i> <i class="bwi bwi-minus-circle bwi-lg" aria-hidden="true"></i>
</button> </button>
<div class="row-main"> <div class="row-main">
<label for="loginUri{{ i }}">{{ "uriPosition" | i18n: i + 1 }}</label> <label for="loginUri{{ i }}">{{ "uriPosition" | i18n : i + 1 }}</label>
<input <input
id="loginUri{{ i }}" id="loginUri{{ i }}"
type="text" type="text"

View File

@@ -17,7 +17,7 @@
class="text monospaced no-ellipsis" class="text monospaced no-ellipsis"
[innerHTML]="h.password | colorPassword" [innerHTML]="h.password | colorPassword"
></span> ></span>
<span class="detail">{{ h.lastUsedDate | date: "medium" }}</span> <span class="detail">{{ h.lastUsedDate | date : "medium" }}</span>
</div> </div>
</div> </div>
<div class="action-buttons"> <div class="action-buttons">

View File

@@ -224,10 +224,10 @@
>{{ "number" | i18n }}</span >{{ "number" | i18n }}</span
> >
<span [hidden]="showCardNumber" class="monospaced">{{ <span [hidden]="showCardNumber" class="monospaced">{{
cipher.card.maskedNumber | creditCardNumber: cipher.card.brand cipher.card.maskedNumber | creditCardNumber : cipher.card.brand
}}</span> }}</span>
<span [hidden]="!showCardNumber" class="monospaced">{{ <span [hidden]="!showCardNumber" class="monospaced">{{
cipher.card.number | creditCardNumber: cipher.card.brand cipher.card.number | creditCardNumber : cipher.card.brand
}}</span> }}</span>
</div> </div>
<div class="action-buttons"> <div class="action-buttons">
@@ -642,15 +642,15 @@
<div class="box-footer"> <div class="box-footer">
<div> <div>
<b class="font-weight-semibold">{{ "dateUpdated" | i18n }}:</b> <b class="font-weight-semibold">{{ "dateUpdated" | i18n }}:</b>
{{ cipher.revisionDate | date: "medium" }} {{ cipher.revisionDate | date : "medium" }}
</div> </div>
<div *ngIf="cipher.creationDate"> <div *ngIf="cipher.creationDate">
<b class="font-weight-semibold">{{ "dateCreated" | i18n }}:</b> <b class="font-weight-semibold">{{ "dateCreated" | i18n }}:</b>
{{ cipher.creationDate | date: "medium" }} {{ cipher.creationDate | date : "medium" }}
</div> </div>
<div *ngIf="cipher.passwordRevisionDisplayDate"> <div *ngIf="cipher.passwordRevisionDisplayDate">
<b class="font-weight-semibold">{{ "datePasswordUpdated" | i18n }}:</b> <b class="font-weight-semibold">{{ "datePasswordUpdated" | i18n }}:</b>
{{ cipher.passwordRevisionDisplayDate | date: "medium" }} {{ cipher.passwordRevisionDisplayDate | date : "medium" }}
</div> </div>
<div *ngIf="cipher.hasPasswordHistory"> <div *ngIf="cipher.hasPasswordHistory">
<b class="font-weight-semibold">{{ "passwordHistory" | i18n }}:</b> <b class="font-weight-semibold">{{ "passwordHistory" | i18n }}:</b>

View File

@@ -20,7 +20,7 @@ const validShells = ["zsh"];
export class CompletionCommand { export class CompletionCommand {
async run(options: program.OptionValues) { async run(options: program.OptionValues) {
const shell: typeof validShells[number] = options.shell; const shell: (typeof validShells)[number] = options.shell;
if (!shell) { if (!shell) {
return Response.badRequest("`shell` option was not provided."); return Response.badRequest("`shell` option was not provided.");

View File

@@ -4,7 +4,7 @@
<div class="modal-body form"> <div class="modal-body form">
<div class="box"> <div class="box">
<h1 class="box-header" id="settingsTitle"> <h1 class="box-header" id="settingsTitle">
{{ "settingsTitle" | i18n: currentUserEmail }} {{ "settingsTitle" | i18n : currentUserEmail }}
</h1> </h1>
<div class="box-content box-content-padded"> <div class="box-content box-content-padded">
<h2> <h2>

View File

@@ -1,5 +1,5 @@
<app-callout type="info" *ngIf="vaultTimeoutPolicy"> <app-callout type="info" *ngIf="vaultTimeoutPolicy">
{{ "vaultTimeoutPolicyInEffect" | i18n: vaultTimeoutPolicyHours:vaultTimeoutPolicyMinutes }} {{ "vaultTimeoutPolicyInEffect" | i18n : vaultTimeoutPolicyHours : vaultTimeoutPolicyMinutes }}
</app-callout> </app-callout>
<div [formGroup]="form"> <div [formGroup]="form">

View File

@@ -58,7 +58,7 @@
*ngFor="let a of accounts | keyvalue" *ngFor="let a of accounts | keyvalue"
class="account" class="account"
(click)="switch(a.key)" (click)="switch(a.key)"
appA11yTitle="{{ 'loggedInAsOn' | i18n: a.value.profile.email:a.value.serverUrl }}" appA11yTitle="{{ 'loggedInAsOn' | i18n : a.value.profile.email : a.value.serverUrl }}"
attr.aria-label="{{ 'switchAccount' | i18n }}" attr.aria-label="{{ 'switchAccount' | i18n }}"
> >
<app-avatar <app-avatar

View File

@@ -14,7 +14,7 @@
appSelectCopy appSelectCopy
[innerHTML]="h.password | colorPassword" [innerHTML]="h.password | colorPassword"
></div> ></div>
<span class="detail">{{ h.date | date: "medium" }}</span> <span class="detail">{{ h.date | date : "medium" }}</span>
</div> </div>
<div class="action-buttons"> <div class="action-buttons">
<button <button

View File

@@ -49,7 +49,7 @@
</div> </div>
</div> </div>
<div id="masterPasswordHelp" class="box-footer"> <div id="masterPasswordHelp" class="box-footer">
{{ "loggedInAsOn" | i18n: email:webVaultHostname }} {{ "loggedInAsOn" | i18n : email : webVaultHostname }}
</div> </div>
</div> </div>
<div class="buttons with-rows"> <div class="buttons with-rows">

View File

@@ -6,7 +6,7 @@
</div> </div>
<div class="content"> <div class="content">
<div class="section"> <div class="section">
<h4>{{ "logInAttemptBy" | i18n: email }}</h4> <h4>{{ "logInAttemptBy" | i18n : email }}</h4>
</div> </div>
<div class="section"> <div class="section">

View File

@@ -38,7 +38,7 @@
</div> </div>
</div> </div>
<div class="box-footer" *ngIf="selfHostedDomain"> <div class="box-footer" *ngIf="selfHostedDomain">
{{ "loggingInTo" | i18n: selfHostedDomain }} {{ "loggingInTo" | i18n : selfHostedDomain }}
</div> </div>
</div> </div>
<div class="checkbox remember-email"> <div class="checkbox remember-email">

View File

@@ -1,7 +1,7 @@
<div id="remove-password-page" *ngIf="!loading"> <div id="remove-password-page" *ngIf="!loading">
<div class="content"> <div class="content">
<h1>{{ "removeMasterPassword" | i18n }}</h1> <h1>{{ "removeMasterPassword" | i18n }}</h1>
<p>{{ "convertOrganizationEncryptionDesc" | i18n: organization.name }}</p> <p>{{ "convertOrganizationEncryptionDesc" | i18n : organization.name }}</p>
<div class="buttons"> <div class="buttons">
<button <button
type="submit" type="submit"

View File

@@ -11,7 +11,7 @@
{{ "enterVerificationCodeApp" | i18n }} {{ "enterVerificationCodeApp" | i18n }}
</p> </p>
<p *ngIf="selectedProviderType === providerType.Email"> <p *ngIf="selectedProviderType === providerType.Email">
{{ "enterVerificationCodeEmail" | i18n: twoFactorEmail }} {{ "enterVerificationCodeEmail" | i18n : twoFactorEmail }}
</p> </p>
<div <div
class="box last" class="box last"

View File

@@ -37,7 +37,7 @@
</li> </li>
</ul> </ul>
<p class="text-center lead no-margin"> <p class="text-center lead no-margin">
{{ "premiumPrice" | i18n: (price | currency: "$") }} {{ "premiumPrice" | i18n : (price | currency : "$") }}
</p> </p>
</div> </div>
<div *ngIf="isPremium"> <div *ngIf="isPremium">

View File

@@ -215,7 +215,7 @@
type="text" type="text"
name="Card.ExpYear" name="Card.ExpYear"
[(ngModel)]="cipher.card.expYear" [(ngModel)]="cipher.card.expYear"
placeholder="{{ 'ex' | i18n }} {{ currentDate | date: 'yyyy' }}" placeholder="{{ 'ex' | i18n }} {{ currentDate | date : 'yyyy' }}"
[readonly]="!cipher.edit && editMode" [readonly]="!cipher.edit && editMode"
/> />
</div> </div>
@@ -457,7 +457,7 @@
class="box-content-row box-content-row-multi" class="box-content-row box-content-row-multi"
appBoxRow appBoxRow
*ngFor="let u of cipher.login.uris; let i = index; trackBy: trackByFunction" *ngFor="let u of cipher.login.uris; let i = index; trackBy: trackByFunction"
attr.aria-label="{{ 'uriPosition' | i18n: i + 1 }}" attr.aria-label="{{ 'uriPosition' | i18n : i + 1 }}"
> >
<button <button
type="button" type="button"
@@ -469,7 +469,7 @@
<i class="bwi bwi-minus-circle bwi-lg" aria-hidden="true"></i> <i class="bwi bwi-minus-circle bwi-lg" aria-hidden="true"></i>
</button> </button>
<div class="row-main"> <div class="row-main">
<label for="loginUri{{ i }}">{{ "uriPosition" | i18n: i + 1 }}</label> <label for="loginUri{{ i }}">{{ "uriPosition" | i18n : i + 1 }}</label>
<input <input
id="loginUri{{ i }}" id="loginUri{{ i }}"
type="text" type="text"

View File

@@ -10,7 +10,7 @@
<div class="box-content-row box-content-row-flex" *ngFor="let h of history"> <div class="box-content-row box-content-row-flex" *ngFor="let h of history">
<div class="row-main"> <div class="row-main">
<span class="text monospaced" [innerHTML]="h.password | colorPassword"></span> <span class="text monospaced" [innerHTML]="h.password | colorPassword"></span>
<span class="detail">{{ h.lastUsedDate | date: "medium" }}</span> <span class="detail">{{ h.lastUsedDate | date : "medium" }}</span>
</div> </div>
<div class="action-buttons"> <div class="action-buttons">
<button <button

View File

@@ -199,10 +199,10 @@
>{{ "number" | i18n }}</span >{{ "number" | i18n }}</span
> >
<span *ngIf="!showCardNumber" class="monospaced">{{ <span *ngIf="!showCardNumber" class="monospaced">{{
cipher.card.maskedNumber | creditCardNumber: cipher.card.brand cipher.card.maskedNumber | creditCardNumber : cipher.card.brand
}}</span> }}</span>
<span *ngIf="showCardNumber" class="monospaced">{{ <span *ngIf="showCardNumber" class="monospaced">{{
cipher.card.number | creditCardNumber: cipher.card.brand cipher.card.number | creditCardNumber : cipher.card.brand
}}</span> }}</span>
</div> </div>
<div class="action-buttons"> <div class="action-buttons">
@@ -505,15 +505,15 @@
<div class="box-footer"> <div class="box-footer">
<div> <div>
<b class="font-weight-semibold">{{ "dateUpdated" | i18n }}:</b> <b class="font-weight-semibold">{{ "dateUpdated" | i18n }}:</b>
{{ cipher.revisionDate | date: "medium" }} {{ cipher.revisionDate | date : "medium" }}
</div> </div>
<div *ngIf="cipher.creationDate"> <div *ngIf="cipher.creationDate">
<b class="font-weight-semibold">{{ "dateCreated" | i18n }}:</b> <b class="font-weight-semibold">{{ "dateCreated" | i18n }}:</b>
{{ cipher.creationDate | date: "medium" }} {{ cipher.creationDate | date : "medium" }}
</div> </div>
<div *ngIf="cipher.passwordRevisionDisplayDate"> <div *ngIf="cipher.passwordRevisionDisplayDate">
<b class="font-weight-semibold">{{ "datePasswordUpdated" | i18n }}:</b> <b class="font-weight-semibold">{{ "datePasswordUpdated" | i18n }}:</b>
{{ cipher.passwordRevisionDisplayDate | date: "medium" }} {{ cipher.passwordRevisionDisplayDate | date : "medium" }}
</div> </div>
<div *ngIf="cipher.hasPasswordHistory"> <div *ngIf="cipher.hasPasswordHistory">
<b class="font-weight-semibold">{{ "passwordHistory" | i18n }}:</b> <b class="font-weight-semibold">{{ "passwordHistory" | i18n }}:</b>

View File

@@ -17,7 +17,7 @@
{{ "annual" | i18n }} - {{ "annual" | i18n }} -
{{ {{
(selectablePlan.basePrice === 0 ? selectablePlan.seatPrice : selectablePlan.basePrice) (selectablePlan.basePrice === 0 ? selectablePlan.seatPrice : selectablePlan.basePrice)
| currency: "$" | currency : "$"
}} }}
/{{ "yr" | i18n }} /{{ "yr" | i18n }}
</ng-container> </ng-container>
@@ -25,7 +25,7 @@
{{ "monthly" | i18n }} - {{ "monthly" | i18n }} -
{{ {{
(selectablePlan.basePrice === 0 ? selectablePlan.seatPrice : selectablePlan.basePrice) (selectablePlan.basePrice === 0 ? selectablePlan.seatPrice : selectablePlan.basePrice)
| currency: "$" | currency : "$"
}} }}
/{{ "monthAbbr" | i18n }} /{{ "monthAbbr" | i18n }}
</ng-container> </ng-container>

View File

@@ -1,5 +1,5 @@
<div class="tw-pl-6 tw-pb-6"> <div class="tw-pl-6 tw-pb-6">
<p class="tw-text-xl">{{ "trialThankYou" | i18n: orgLabel }}</p> <p class="tw-text-xl">{{ "trialThankYou" | i18n : orgLabel }}</p>
<ul class="tw-list-disc"> <ul class="tw-list-disc">
<li> <li>
<p> <p>
@@ -10,7 +10,7 @@
</li> </li>
<li> <li>
<p> <p>
{{ "trialPaidInfoMessage" | i18n: orgLabel }} {{ "trialPaidInfoMessage" | i18n : orgLabel }}
</p> </p>
</li> </li>
</ul> </ul>

View File

@@ -33,7 +33,7 @@
> >
<div class="tw-py-2 tw-px-5"> <div class="tw-py-2 tw-px-5">
<i class="bwi bwi-exclamation-triangle" aria-hidden="true"></i> <i class="bwi bwi-exclamation-triangle" aria-hidden="true"></i>
{{ "accessingUsingProvider" | i18n: activeOrganization.providerName }} {{ "accessingUsingProvider" | i18n : activeOrganization.providerName }}
</div> </div>
</div> </div>
</div> </div>

View File

@@ -3,7 +3,7 @@
<div class="col">&copy; {{ year }} Bitwarden Inc.</div> <div class="col">&copy; {{ year }} Bitwarden Inc.</div>
<div class="col text-center"></div> <div class="col text-center"></div>
<div class="col text-right"> <div class="col text-right">
{{ "versionNumber" | i18n: version }} {{ "versionNumber" | i18n : version }}
</div> </div>
</div> </div>
</div> </div>

View File

@@ -1,5 +1,5 @@
<router-outlet></router-outlet> <router-outlet></router-outlet>
<div class="container my-5 text-muted text-center"> <div class="container my-5 text-muted text-center">
&copy; {{ year }} Bitwarden Inc. <br /> &copy; {{ year }} Bitwarden Inc. <br />
{{ "versionNumber" | i18n: version }} {{ "versionNumber" | i18n : version }}
</div> </div>

View File

@@ -2,7 +2,7 @@
<!-- eslint-disable @angular-eslint/template/button-has-type --> <!-- eslint-disable @angular-eslint/template/button-has-type -->
<nav class="navbar navbar-expand navbar-dark" [ngClass]="{ 'nav-background-alt': selfHosted }"> <nav class="navbar navbar-expand navbar-dark" [ngClass]="{ 'nav-background-alt': selfHosted }">
<div class="container"> <div class="container">
<a class="navbar-brand" routerLink="/" appA11yTitle="{{ 'pageTitle' | i18n: 'Bitwarden' }}"> <a class="navbar-brand" routerLink="/" appA11yTitle="{{ 'pageTitle' | i18n : 'Bitwarden' }}">
<i class="bwi bwi-shield" aria-hidden="true"></i> <i class="bwi bwi-shield" aria-hidden="true"></i>
</a> </a>
<div class="collapse navbar-collapse"> <div class="collapse navbar-collapse">

View File

@@ -15,7 +15,7 @@
/> />
<small class="d-block text-muted mb-4"> <small class="d-block text-muted mb-4">
<strong>{{ "total" | i18n }}:</strong> {{ newSeatCount || 0 }} &times; <strong>{{ "total" | i18n }}:</strong> {{ newSeatCount || 0 }} &times;
{{ seatPrice | currency: "$" }} = {{ adjustedSeatTotal | currency: "$" }} / {{ seatPrice | currency : "$" }} = {{ adjustedSeatTotal | currency : "$" }} /
{{ interval | i18n }} {{ interval | i18n }}
</small> </small>
</div> </div>
@@ -51,7 +51,7 @@
/> />
<small class="d-block text-muted"> <small class="d-block text-muted">
<strong>{{ "maxSeatCost" | i18n }}:</strong> {{ newMaxSeats || 0 }} &times; <strong>{{ "maxSeatCost" | i18n }}:</strong> {{ newMaxSeats || 0 }} &times;
{{ seatPrice | currency: "$" }} = {{ maxSeatTotal | currency: "$" }} / {{ seatPrice | currency : "$" }} = {{ maxSeatTotal | currency : "$" }} /
{{ interval | i18n }} {{ interval | i18n }}
</small> </small>
</div> </div>

View File

@@ -60,13 +60,13 @@
</div> </div>
<div class="small text-muted mt-2" *ngIf="showLastSyncText"> <div class="small text-muted mt-2" *ngIf="showLastSyncText">
<b class="font-weight-semibold">{{ "lastSync" | i18n }}:</b> <b class="font-weight-semibold">{{ "lastSync" | i18n }}:</b>
{{ lastSyncDate | date: "medium" }} {{ lastSyncDate | date : "medium" }}
</div> </div>
<div class="small text-danger mt-2" *ngIf="showAwaitingSyncText"> <div class="small text-danger mt-2" *ngIf="showAwaitingSyncText">
<i class="bwi bwi-error"></i> <i class="bwi bwi-error"></i>
{{ {{
(daysBetween === 1 ? "awaitingSyncSingular" : "awaitingSyncPlural") (daysBetween === 1 ? "awaitingSyncSingular" : "awaitingSyncPlural")
| i18n: daysBetween | i18n : daysBetween
}} }}
</div> </div>
</div> </div>

View File

@@ -59,9 +59,9 @@
<dd> <dd>
{{ {{
nextInvoice nextInvoice
? (nextInvoice.date | date: "mediumDate") + ? (nextInvoice.date | date : "mediumDate") +
", " + ", " +
(nextInvoice.amount | currency: "$") (nextInvoice.amount | currency : "$")
: "-" : "-"
}} }}
</dd> </dd>
@@ -75,9 +75,9 @@
<tr *ngFor="let i of subscription.items"> <tr *ngFor="let i of subscription.items">
<td> <td>
{{ i.name }} {{ i.quantity > 1 ? "&times;" + i.quantity : "" }} @ {{ i.name }} {{ i.quantity > 1 ? "&times;" + i.quantity : "" }} @
{{ i.amount | currency: "$" }} {{ i.amount | currency : "$" }}
</td> </td>
<td>{{ i.quantity * i.amount | currency: "$" }} /{{ i.interval | i18n }}</td> <td>{{ i.quantity * i.amount | currency : "$" }} /{{ i.interval | i18n }}</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@@ -86,7 +86,7 @@
<div class="col-sm"> <div class="col-sm">
<dl> <dl>
<dt>{{ "provider" | i18n }}</dt> <dt>{{ "provider" | i18n }}</dt>
<dd>{{ "yourProviderIs" | i18n: userOrg.providerName }}</dd> <dd>{{ "yourProviderIs" | i18n : userOrg.providerName }}</dd>
</dl> </dl>
</div> </div>
</ng-container> </ng-container>
@@ -144,7 +144,7 @@
{{ "removeSponsorship" | i18n }} {{ "removeSponsorship" | i18n }}
</button> </button>
<h2 class="spaced-header">{{ "storage" | i18n }}</h2> <h2 class="spaced-header">{{ "storage" | i18n }}</h2>
<p>{{ "subscriptionStorage" | i18n: sub.maxStorageGb || 0:sub.storageName || "0 MB" }}</p> <p>{{ "subscriptionStorage" | i18n : sub.maxStorageGb || 0 : sub.storageName || "0 MB" }}</p>
<div class="progress"> <div class="progress">
<div <div
class="progress-bar bg-success" class="progress-bar bg-success"

View File

@@ -28,7 +28,7 @@
<dd>{{ sub.plan.name }}</dd> <dd>{{ sub.plan.name }}</dd>
<dt>{{ "expiration" | i18n }}</dt> <dt>{{ "expiration" | i18n }}</dt>
<dd *ngIf="sub.expiration"> <dd *ngIf="sub.expiration">
{{ sub.expiration | date: "mediumDate" }} {{ sub.expiration | date : "mediumDate" }}
<span *ngIf="isExpired" class="text-danger ml-2"> <span *ngIf="isExpired" class="text-danger ml-2">
<i class="bwi bwi-exclamation-triangle" aria-hidden="true"></i> <i class="bwi bwi-exclamation-triangle" aria-hidden="true"></i>
{{ "licenseIsExpired" | i18n }} {{ "licenseIsExpired" | i18n }}
@@ -38,7 +38,7 @@
<ng-container *ngIf="billingSyncSetUp"> <ng-container *ngIf="billingSyncSetUp">
<dt>{{ "lastLicenseSync" | i18n }}</dt> <dt>{{ "lastLicenseSync" | i18n }}</dt>
<dd> <dd>
{{ lastLicenseSync != null ? (lastLicenseSync | date: "medium") : ("never" | i18n) }} {{ lastLicenseSync != null ? (lastLicenseSync | date : "medium") : ("never" | i18n) }}
</dd> </dd>
</ng-container> </ng-container>
</dl> </dl>

View File

@@ -29,7 +29,7 @@ const SubscriptionHiddenIcon = svgIcon`
selector: "app-org-subscription-hidden", selector: "app-org-subscription-hidden",
template: `<div class="tw-flex tw-flex-col tw-items-center tw-text-info"> template: `<div class="tw-flex tw-flex-col tw-items-center tw-text-info">
<bit-icon [icon]="subscriptionHiddenIcon"></bit-icon> <bit-icon [icon]="subscriptionHiddenIcon"></bit-icon>
<p class="tw-font-bold">{{ "billingManagedByProvider" | i18n: providerName }}</p> <p class="tw-font-bold">{{ "billingManagedByProvider" | i18n : providerName }}</p>
<p>{{ "billingContactProviderForAssistance" | i18n }}</p> <p>{{ "billingContactProviderForAssistance" | i18n }}</p>
</div>`, </div>`,
}) })

View File

@@ -35,7 +35,7 @@
!loading && !loading &&
(isPaging() (isPaging()
? pagedCollections ? pagedCollections
: (collections | search: searchText:'name':'id')) as searchedCollections : (collections | search : searchText : 'name' : 'id')) as searchedCollections
" "
> >
<p *ngIf="!searchedCollections.length">{{ "noCollectionsInList" | i18n }}</p> <p *ngIf="!searchedCollections.length">{{ "noCollectionsInList" | i18n }}</p>

View File

@@ -79,7 +79,7 @@
</thead> </thead>
<tbody> <tbody>
<tr *ngFor="let e of events"> <tr *ngFor="let e of events">
<td>{{ e.date | date: "medium" }}</td> <td>{{ e.date | date : "medium" }}</td>
<td> <td>
<i <i
class="text-muted bwi bwi-lg {{ e.appIcon }}" class="text-muted bwi bwi-lg {{ e.appIcon }}"

View File

@@ -77,7 +77,7 @@
</ng-container> </ng-container>
<ng-template body> <ng-template body>
<tr bitRow *ngFor="let e of events" alignContent="top"> <tr bitRow *ngFor="let e of events" alignContent="top">
<td bitCell class="tw-whitespace-nowrap">{{ e.date | date: "medium" }}</td> <td bitCell class="tw-whitespace-nowrap">{{ e.date | date : "medium" }}</td>
<td bitCell> <td bitCell>
<span title="{{ e.appName }}, {{ e.ip }}">{{ e.appName }}</span> <span title="{{ e.appName }}, {{ e.ip }}">{{ e.appName }}</span>
</td> </td>

View File

@@ -21,7 +21,7 @@
<bit-form-field> <bit-form-field>
<bit-label>{{ "name" | i18n }}</bit-label> <bit-label>{{ "name" | i18n }}</bit-label>
<input bitInput appAutofocus type="text" formControlName="name" /> <input bitInput appAutofocus type="text" formControlName="name" />
<bit-hint>{{ "characterMaximum" | i18n: 100 }}</bit-hint> <bit-hint>{{ "characterMaximum" | i18n : 100 }}</bit-hint>
</bit-form-field> </bit-form-field>
<bit-form-field> <bit-form-field>
<bit-label>{{ "externalId" | i18n }}</bit-label> <bit-label>{{ "externalId" | i18n }}</bit-label>

View File

@@ -23,7 +23,7 @@
<bit-form-field> <bit-form-field>
<bit-label>{{ "email" | i18n }}</bit-label> <bit-label>{{ "email" | i18n }}</bit-label>
<input id="emails" type="text" appAutoFocus bitInput formControlName="emails" /> <input id="emails" type="text" appAutoFocus bitInput formControlName="emails" />
<bit-hint>{{ "inviteMultipleEmailDesc" | i18n: "20" }}</bit-hint> <bit-hint>{{ "inviteMultipleEmailDesc" | i18n : "20" }}</bit-hint>
</bit-form-field> </bit-form-field>
</ng-container> </ng-container>
<fieldset role="radiogroup" aria-labelledby="roleGroupLabel" class="tw-mb-6"> <fieldset role="radiogroup" aria-labelledby="roleGroupLabel" class="tw-mb-6">

View File

@@ -17,7 +17,7 @@
</div> </div>
<div class="modal-body"> <div class="modal-body">
<app-callout type="warning" <app-callout type="warning"
>{{ "resetPasswordLoggedOutWarning" | i18n: loggedOutWarningName }} >{{ "resetPasswordLoggedOutWarning" | i18n : loggedOutWarningName }}
</app-callout> </app-callout>
<app-callout <app-callout
type="info" type="info"

View File

@@ -53,7 +53,9 @@
<ng-container <ng-container
*ngIf=" *ngIf="
!loading && !loading &&
(isPaging() ? pagedUsers : (users | search: searchText:'name':'email':'id')) as searchedUsers (isPaging()
? pagedUsers
: (users | search : searchText : 'name' : 'email' : 'id')) as searchedUsers
" "
> >
<p *ngIf="!searchedUsers.length">{{ "noMembersInList" | i18n }}</p> <p *ngIf="!searchedUsers.length">{{ "noMembersInList" | i18n }}</p>

View File

@@ -21,7 +21,7 @@
</div> </div>
<div class="modal-body"> <div class="modal-body">
<app-callout type="warning">{{ <app-callout type="warning">{{
"deletingOrganizationIsPermanentWarning" | i18n: organizationName "deletingOrganizationIsPermanentWarning" | i18n : organizationName
}}</app-callout> }}</app-callout>
<p id="organizationDeleteDescription"> <p id="organizationDeleteDescription">
<ng-container <ng-container
@@ -34,7 +34,7 @@
</ng-container> </ng-container>
<ng-template #regularDelete> <ng-template #regularDelete>
<ng-container *ngIf="organizationContentSummary.totalItemCount > 0"> <ng-container *ngIf="organizationContentSummary.totalItemCount > 0">
{{ "deletingOrganizationContentWarning" | i18n: organizationName }} {{ "deletingOrganizationContentWarning" | i18n : organizationName }}
<ul> <ul>
<li *ngFor="let type of organizationContentSummary.itemCountByType"> <li *ngFor="let type of organizationContentSummary.itemCountByType">
{{ type.count }} {{ type.localizationKey | i18n }} {{ type.count }} {{ type.localizationKey | i18n }}

View File

@@ -130,7 +130,7 @@
</td> </td>
<td bitCell *ngIf="showMemberRoles"> <td bitCell *ngIf="showMemberRoles">
{{ $any(item).role | userType: "-" }} {{ $any(item).role | userType : "-" }}
</td> </td>
<td bitCell *ngIf="showGroupColumn"> <td bitCell *ngIf="showGroupColumn">

View File

@@ -25,10 +25,10 @@
<p *ngIf="error">{{ "reportError" | i18n }}...</p> <p *ngIf="error">{{ "reportError" | i18n }}...</p>
<ng-container *ngIf="!error"> <ng-container *ngIf="!error">
<app-callout type="success" title="{{ 'goodNews' | i18n }}" *ngIf="!breachedAccounts.length"> <app-callout type="success" title="{{ 'goodNews' | i18n }}" *ngIf="!breachedAccounts.length">
{{ "breachUsernameNotFound" | i18n: checkedUsername }} {{ "breachUsernameNotFound" | i18n : checkedUsername }}
</app-callout> </app-callout>
<app-callout type="danger" title="{{ 'breachFound' | i18n }}" *ngIf="breachedAccounts.length"> <app-callout type="danger" title="{{ 'breachFound' | i18n }}" *ngIf="breachedAccounts.length">
{{ "breachUsernameFound" | i18n: checkedUsername:breachedAccounts.length }} {{ "breachUsernameFound" | i18n : checkedUsername : breachedAccounts.length }}
</app-callout> </app-callout>
<ul class="list-group list-group-breach" *ngIf="breachedAccounts.length"> <ul class="list-group list-group-breach" *ngIf="breachedAccounts.length">
<li *ngFor="let a of breachedAccounts" class="list-group-item min-height-fix"> <li *ngFor="let a of breachedAccounts" class="list-group-item min-height-fix">
@@ -51,9 +51,9 @@
<dt>{{ "affectedUsers" | i18n }}</dt> <dt>{{ "affectedUsers" | i18n }}</dt>
<dd>{{ a.pwnCount | number }}</dd> <dd>{{ a.pwnCount | number }}</dd>
<dt>{{ "breachOccurred" | i18n }}</dt> <dt>{{ "breachOccurred" | i18n }}</dt>
<dd>{{ a.breachDate | date: "mediumDate" }}</dd> <dd>{{ a.breachDate | date : "mediumDate" }}</dd>
<dt>{{ "breachReported" | i18n }}</dt> <dt>{{ "breachReported" | i18n }}</dt>
<dd>{{ a.addedDate | date: "mediumDate" }}</dd> <dd>{{ a.addedDate | date : "mediumDate" }}</dd>
</dl> </dl>
</div> </div>
</div> </div>

View File

@@ -11,7 +11,7 @@
</app-callout> </app-callout>
<ng-container *ngIf="ciphers.length"> <ng-container *ngIf="ciphers.length">
<app-callout type="danger" title="{{ 'exposedPasswordsFound' | i18n }}" [useAlertRole]="true"> <app-callout type="danger" title="{{ 'exposedPasswordsFound' | i18n }}" [useAlertRole]="true">
{{ "exposedPasswordsFoundDesc" | i18n: (ciphers.length | number) }} {{ "exposedPasswordsFoundDesc" | i18n : (ciphers.length | number) }}
</app-callout> </app-callout>
<table class="table table-hover table-list table-ciphers"> <table class="table table-hover table-list table-ciphers">
<tbody> <tbody>
@@ -51,7 +51,7 @@
</td> </td>
<td class="text-right"> <td class="text-right">
<span bitBadge badgeType="warning"> <span bitBadge badgeType="warning">
{{ "exposedXTimes" | i18n: (exposedPasswordMap.get(c.id) | number) }} {{ "exposedXTimes" | i18n : (exposedPasswordMap.get(c.id) | number) }}
</span> </span>
</td> </td>
</tr> </tr>

View File

@@ -26,7 +26,7 @@
</app-callout> </app-callout>
<ng-container *ngIf="ciphers.length"> <ng-container *ngIf="ciphers.length">
<app-callout type="danger" title="{{ 'inactive2faFound' | i18n }}"> <app-callout type="danger" title="{{ 'inactive2faFound' | i18n }}">
{{ "inactive2faFoundDesc" | i18n: (ciphers.length | number) }} {{ "inactive2faFoundDesc" | i18n : (ciphers.length | number) }}
</app-callout> </app-callout>
<table class="table table-hover table-list table-ciphers"> <table class="table table-hover table-list table-ciphers">
<tbody> <tbody>

View File

@@ -26,7 +26,7 @@
</app-callout> </app-callout>
<ng-container *ngIf="ciphers.length"> <ng-container *ngIf="ciphers.length">
<app-callout type="danger" title="{{ 'reusedPasswordsFound' | i18n }}"> <app-callout type="danger" title="{{ 'reusedPasswordsFound' | i18n }}">
{{ "reusedPasswordsFoundDesc" | i18n: (ciphers.length | number) }} {{ "reusedPasswordsFoundDesc" | i18n : (ciphers.length | number) }}
</app-callout> </app-callout>
<table class="table table-hover table-list table-ciphers"> <table class="table table-hover table-list table-ciphers">
<tbody> <tbody>
@@ -66,7 +66,7 @@
</td> </td>
<td class="text-right"> <td class="text-right">
<span bitBadge badgeType="warning"> <span bitBadge badgeType="warning">
{{ "reusedXTimes" | i18n: passwordUseMap.get(c.login.password) }} {{ "reusedXTimes" | i18n : passwordUseMap.get(c.login.password) }}
</span> </span>
</td> </td>
</tr> </tr>

View File

@@ -26,7 +26,7 @@
</app-callout> </app-callout>
<ng-container *ngIf="ciphers.length"> <ng-container *ngIf="ciphers.length">
<app-callout type="danger" title="{{ 'unsecuredWebsitesFound' | i18n }}"> <app-callout type="danger" title="{{ 'unsecuredWebsitesFound' | i18n }}">
{{ "unsecuredWebsitesFoundDesc" | i18n: (ciphers.length | number) }} {{ "unsecuredWebsitesFoundDesc" | i18n : (ciphers.length | number) }}
</app-callout> </app-callout>
<table class="table table-hover table-list table-ciphers"> <table class="table table-hover table-list table-ciphers">
<tbody> <tbody>

View File

@@ -26,7 +26,7 @@
</app-callout> </app-callout>
<ng-container *ngIf="ciphers.length"> <ng-container *ngIf="ciphers.length">
<app-callout type="danger" title="{{ 'weakPasswordsFound' | i18n }}"> <app-callout type="danger" title="{{ 'weakPasswordsFound' | i18n }}">
{{ "weakPasswordsFoundDesc" | i18n: (ciphers.length | number) }} {{ "weakPasswordsFoundDesc" | i18n : (ciphers.length | number) }}
</app-callout> </app-callout>
<table class="table table-hover table-list table-ciphers"> <table class="table table-hover table-list table-ciphers">
<tbody> <tbody>

View File

@@ -4,7 +4,7 @@
<h1 class="lead text-center mb-4">Bitwarden Send</h1> <h1 class="lead text-center mb-4">Bitwarden Send</h1>
</div> </div>
<div class="col-12 text-center" *ngIf="creatorIdentifier != null"> <div class="col-12 text-center" *ngIf="creatorIdentifier != null">
<p>{{ "sendCreatorIdentifier" | i18n: creatorIdentifier }}</p> <p>{{ "sendCreatorIdentifier" | i18n : creatorIdentifier }}</p>
</div> </div>
<div class="col-8" *ngIf="hideEmail"> <div class="col-8" *ngIf="hideEmail">
<app-callout type="warning" title="{{ 'warning' | i18n }}"> <app-callout type="warning" title="{{ 'warning' | i18n }}">
@@ -129,7 +129,7 @@
</button> </button>
</ng-container> </ng-container>
<p *ngIf="expirationDate" class="text-center text-muted"> <p *ngIf="expirationDate" class="text-center text-muted">
Expires: {{ expirationDate | date: "medium" }} Expires: {{ expirationDate | date : "medium" }}
</p> </p>
</div> </div>
</div> </div>

View File

@@ -140,7 +140,7 @@
<span class="sr-only">{{ "pendingDeletion" | i18n }}</span> <span class="sr-only">{{ "pendingDeletion" | i18n }}</span>
</ng-container> </ng-container>
<br /> <br />
<small appStopProp>{{ s.deletionDate | date: "medium" }}</small> <small appStopProp>{{ s.deletionDate | date : "medium" }}</small>
</td> </td>
<td class="table-list-options"> <td class="table-list-options">
<button <button

View File

@@ -24,7 +24,7 @@
</div> </div>
<div *ngIf="add" class="mb-3"> <div *ngIf="add" class="mb-3">
<strong>{{ "total" | i18n }}:</strong> {{ storageAdjustment || 0 }} GB &times; <strong>{{ "total" | i18n }}:</strong> {{ storageAdjustment || 0 }} GB &times;
{{ storageGbPrice | currency: "$" }} = {{ adjustedStorageTotal | currency: "$" }} /{{ {{ storageGbPrice | currency : "$" }} = {{ adjustedStorageTotal | currency : "$" }} /{{
interval | i18n interval | i18n
}} }}
</div> </div>

View File

@@ -3,7 +3,7 @@
<table class="table mb-2" *ngIf="invoices && invoices.length"> <table class="table mb-2" *ngIf="invoices && invoices.length">
<tbody> <tbody>
<tr *ngFor="let i of invoices"> <tr *ngFor="let i of invoices">
<td>{{ i.date | date: "mediumDate" }}</td> <td>{{ i.date | date : "mediumDate" }}</td>
<td> <td>
<a <a
href="{{ i.pdfUrl }}" href="{{ i.pdfUrl }}"
@@ -15,10 +15,10 @@
<i class="bwi bwi-file-pdf" aria-hidden="true"></i <i class="bwi bwi-file-pdf" aria-hidden="true"></i
></a> ></a>
<a href="{{ i.url }}" target="_blank" rel="noopener" title="{{ 'viewInvoice' | i18n }}"> <a href="{{ i.url }}" target="_blank" rel="noopener" title="{{ 'viewInvoice' | i18n }}">
{{ "invoiceNumber" | i18n: i.number }}</a {{ "invoiceNumber" | i18n : i.number }}</a
> >
</td> </td>
<td>{{ i.amount | currency: "$" }}</td> <td>{{ i.amount | currency : "$" }}</td>
<td> <td>
<span *ngIf="i.paid"> <span *ngIf="i.paid">
<i class="bwi bwi-check text-success" aria-hidden="true"></i> <i class="bwi bwi-check text-success" aria-hidden="true"></i>
@@ -37,7 +37,7 @@
<table class="table mb-2" *ngIf="transactions && transactions.length"> <table class="table mb-2" *ngIf="transactions && transactions.length">
<tbody> <tbody>
<tr *ngFor="let t of transactions"> <tr *ngFor="let t of transactions">
<td>{{ t.createdDate | date: "mediumDate" }}</td> <td>{{ t.createdDate | date : "mediumDate" }}</td>
<td> <td>
<span *ngIf="t.type === transactionType.Charge || t.type === transactionType.Credit"> <span *ngIf="t.type === transactionType.Charge || t.type === transactionType.Credit">
{{ "chargeNoun" | i18n }} {{ "chargeNoun" | i18n }}
@@ -57,9 +57,9 @@
[ngClass]="{ 'text-strike': t.refunded }" [ngClass]="{ 'text-strike': t.refunded }"
title="{{ (t.refunded ? 'refunded' : '') | i18n }}" title="{{ (t.refunded ? 'refunded' : '') | i18n }}"
> >
{{ t.amount | currency: "$" }} {{ t.amount | currency : "$" }}
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<small class="text-muted">* {{ "chargesStatement" | i18n: "BITWARDEN" }}</small> <small class="text-muted">* {{ "chargesStatement" | i18n : "BITWARDEN" }}</small>

View File

@@ -35,7 +35,7 @@
</div> </div>
<ng-container *ngIf="tokenSent"> <ng-container *ngIf="tokenSent">
<hr /> <hr />
<p>{{ "changeEmailDesc" | i18n: newEmail }}</p> <p>{{ "changeEmailDesc" | i18n : newEmail }}</p>
<app-callout type="warning">{{ "loggedOutWarning" | i18n }}</app-callout> <app-callout type="warning">{{ "loggedOutWarning" | i18n }}</app-callout>
<div class="row"> <div class="row">
<div class="col-6"> <div class="col-6">

View File

@@ -94,10 +94,10 @@
<div class="col-12"> <div class="col-12">
<ng-container *ngIf="kdf == kdfType.PBKDF2_SHA256"> <ng-container *ngIf="kdf == kdfType.PBKDF2_SHA256">
<p class="small form-text text-muted"> <p class="small form-text text-muted">
{{ "kdfIterationsDesc" | i18n: (recommendedPbkdf2Iterations | number) }} {{ "kdfIterationsDesc" | i18n : (recommendedPbkdf2Iterations | number) }}
</p> </p>
<bit-callout type="warning"> <bit-callout type="warning">
{{ "kdfIterationsWarning" | i18n: (100000 | number) }} {{ "kdfIterationsWarning" | i18n : (100000 | number) }}
</bit-callout> </bit-callout>
</ng-container> </ng-container>
<ng-container *ngIf="kdf == kdfType.Argon2id"> <ng-container *ngIf="kdf == kdfType.Argon2id">

View File

@@ -16,7 +16,7 @@
<div class="form-group d-flex" *ngFor="let d of custom; let i = index; trackBy: indexTrackBy"> <div class="form-group d-flex" *ngFor="let d of custom; let i = index; trackBy: indexTrackBy">
<div class="flex-fill"> <div class="flex-fill">
<label for="customDomain_{{ i }}" class="sr-only">{{ <label for="customDomain_{{ i }}" class="sr-only">{{
"customDomainX" | i18n: i + 1 "customDomainX" | i18n : i + 1
}}</label> }}</label>
<textarea <textarea
class="form-control" class="form-control"

View File

@@ -13,7 +13,7 @@
<label for="file">{{ "licenseFile" | i18n }}</label> <label for="file">{{ "licenseFile" | i18n }}</label>
<input type="file" id="file" class="form-control-file" name="file" required /> <input type="file" id="file" class="form-control-file" name="file" required />
<small class="form-text text-muted">{{ <small class="form-text text-muted">{{
"licenseFileDesc" | i18n: "bitwarden_organization_license.json" "licenseFileDesc" | i18n : "bitwarden_organization_license.json"
}}</small> }}</small>
</div> </div>
<button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading"> <button type="submit" class="btn btn-primary btn-submit" [disabled]="form.loading">
@@ -51,7 +51,7 @@
/> />
<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 <ng-container
*ngIf="selectableProduct.product === productTypes.Enterprise; else fullFeatureList" *ngIf="selectableProduct.product === productTypes.Enterprise; else fullFeatureList"
> >
@@ -63,28 +63,28 @@
> >
<small *ngIf="selectableProduct.trialPeriodDays && createOrganization" <small *ngIf="selectableProduct.trialPeriodDays && createOrganization"
> >
{{ "xDayFreeTrial" | i18n: selectableProduct.trialPeriodDays }} {{ "xDayFreeTrial" | i18n : selectableProduct.trialPeriodDays }}
</small> </small>
</ng-container> </ng-container>
<ng-template #fullFeatureList> <ng-template #fullFeatureList>
<small *ngIf="selectableProduct.product == productTypes.Free" <small *ngIf="selectableProduct.product == productTypes.Free"
>• {{ "limitedUsers" | i18n: selectableProduct.maxUsers }}</small >• {{ "limitedUsers" | i18n : selectableProduct.maxUsers }}</small
> >
<small *ngIf="selectableProduct.product != productTypes.Free && selectableProduct.maxUsers" <small *ngIf="selectableProduct.product != productTypes.Free && selectableProduct.maxUsers"
>• {{ "addShareLimitedUsers" | i18n: selectableProduct.maxUsers }}</small >• {{ "addShareLimitedUsers" | i18n : selectableProduct.maxUsers }}</small
> >
<small *ngIf="!selectableProduct.maxUsers">• {{ "addShareUnlimitedUsers" | i18n }}</small> <small *ngIf="!selectableProduct.maxUsers">• {{ "addShareUnlimitedUsers" | i18n }}</small>
<small *ngIf="selectableProduct.maxCollections" <small *ngIf="selectableProduct.maxCollections"
>• {{ "limitedCollections" | i18n: selectableProduct.maxCollections }}</small >• {{ "limitedCollections" | i18n : selectableProduct.maxCollections }}</small
> >
<small *ngIf="selectableProduct.maxAdditionalSeats" <small *ngIf="selectableProduct.maxAdditionalSeats"
>• {{ "addShareLimitedUsers" | i18n: selectableProduct.maxAdditionalSeats }}</small >• {{ "addShareLimitedUsers" | i18n : selectableProduct.maxAdditionalSeats }}</small
> >
<small *ngIf="!selectableProduct.maxCollections" <small *ngIf="!selectableProduct.maxCollections"
>• {{ "createUnlimitedCollections" | i18n }}</small >• {{ "createUnlimitedCollections" | i18n }}</small
> >
<small *ngIf="selectableProduct.baseStorageGb" <small *ngIf="selectableProduct.baseStorageGb"
>• {{ "gbEncryptedFileStorage" | i18n: selectableProduct.baseStorageGb + "GB" }}</small >• {{ "gbEncryptedFileStorage" | i18n : selectableProduct.baseStorageGb + "GB" }}</small
> >
<small *ngIf="selectableProduct.hasGroups">• {{ "controlAccessWithGroups" | i18n }}</small> <small *ngIf="selectableProduct.hasGroups">• {{ "controlAccessWithGroups" | i18n }}</small>
<small *ngIf="selectableProduct.hasApi">• {{ "trackAuditLogs" | i18n }}</small> <small *ngIf="selectableProduct.hasApi">• {{ "trackAuditLogs" | i18n }}</small>
@@ -98,21 +98,21 @@
> >
<small *ngIf="selectableProduct.trialPeriodDays && createOrganization" <small *ngIf="selectableProduct.trialPeriodDays && createOrganization"
> >
{{ "xDayFreeTrial" | i18n: selectableProduct.trialPeriodDays }} {{ "xDayFreeTrial" | i18n : selectableProduct.trialPeriodDays }}
</small> </small>
</ng-template> </ng-template>
<span *ngIf="selectableProduct.product != productTypes.Free"> <span *ngIf="selectableProduct.product != productTypes.Free">
<ng-container *ngIf="selectableProduct.basePrice && !acceptingSponsorship"> <ng-container *ngIf="selectableProduct.basePrice && !acceptingSponsorship">
{{ selectableProduct.basePrice / 12 | currency: "$" }} /{{ "month" | i18n }}, {{ selectableProduct.basePrice / 12 | currency : "$" }} /{{ "month" | i18n }},
{{ "includesXUsers" | i18n: selectableProduct.baseSeats }} {{ "includesXUsers" | i18n : selectableProduct.baseSeats }}
<ng-container *ngIf="selectableProduct.hasAdditionalSeatsOption"> <ng-container *ngIf="selectableProduct.hasAdditionalSeatsOption">
{{ ("additionalUsers" | i18n).toLowerCase() }} {{ ("additionalUsers" | i18n).toLowerCase() }}
{{ selectableProduct.seatPrice / 12 | currency: "$" }} /{{ "month" | i18n }} {{ selectableProduct.seatPrice / 12 | currency : "$" }} /{{ "month" | i18n }}
</ng-container> </ng-container>
</ng-container> </ng-container>
</span> </span>
<span *ngIf="!selectableProduct.basePrice && selectableProduct.hasAdditionalSeatsOption"> <span *ngIf="!selectableProduct.basePrice && selectableProduct.hasAdditionalSeatsOption">
{{ "costPerUser" | i18n: (selectableProduct.seatPrice / 12 | currency: "$") }} /{{ {{ "costPerUser" | i18n : (selectableProduct.seatPrice / 12 | currency : "$") }} /{{
"month" | i18n "month" | i18n
}} }}
</span> </span>
@@ -152,7 +152,7 @@
/> />
<small class="text-muted form-text">{{ <small class="text-muted form-text">{{
"userSeatsAdditionalDesc" "userSeatsAdditionalDesc"
| i18n: selectedPlan.baseSeats:(seatPriceMonthly(selectedPlan) | currency: "$") | i18n : selectedPlan.baseSeats : (seatPriceMonthly(selectedPlan) | currency : "$")
}}</small> }}</small>
</div> </div>
</div> </div>
@@ -172,7 +172,7 @@
"additionalStorageIntervalDesc" "additionalStorageIntervalDesc"
| i18n | i18n
: "1 GB" : "1 GB"
: (additionalStoragePriceMonthly(selectedPlan) | currency: "$") : (additionalStoragePriceMonthly(selectedPlan) | currency : "$")
: ("month" | i18n) : ("month" | i18n)
}}</small> }}</small>
</div> </div>
@@ -192,7 +192,7 @@
}}</label> }}</label>
</div> </div>
<small class="text-muted form-text">{{ <small class="text-muted form-text">{{
"premiumAccessDesc" | i18n: (3.33 | currency: "$"):("month" | i18n) "premiumAccessDesc" | i18n : (3.33 | currency : "$") : ("month" | i18n)
}}</small> }}</small>
</div> </div>
</div> </div>
@@ -210,17 +210,18 @@
<ng-container *ngIf="selectablePlan.isAnnual"> <ng-container *ngIf="selectablePlan.isAnnual">
{{ "annually" | i18n }} {{ "annually" | i18n }}
<small *ngIf="selectablePlan.basePrice"> <small *ngIf="selectablePlan.basePrice">
{{ "basePrice" | i18n }}: {{ selectablePlan.basePrice / 12 | currency: "$" }} &times; 12 {{ "basePrice" | i18n }}: {{ selectablePlan.basePrice / 12 | currency : "$" }} &times;
12
{{ "monthAbbr" | i18n }} {{ "monthAbbr" | i18n }}
= =
<ng-container *ngIf="acceptingSponsorship; else notAcceptingSponsorship"> <ng-container *ngIf="acceptingSponsorship; else notAcceptingSponsorship">
<span style="text-decoration: line-through">{{ <span style="text-decoration: line-through">{{
selectablePlan.basePrice | currency: "$" selectablePlan.basePrice | currency : "$"
}}</span> }}</span>
{{ "freeWithSponsorship" | i18n }} {{ "freeWithSponsorship" | i18n }}
</ng-container> </ng-container>
<ng-template #notAcceptingSponsorship> <ng-template #notAcceptingSponsorship>
{{ selectablePlan.basePrice | currency: "$" }} {{ selectablePlan.basePrice | currency : "$" }}
/{{ "year" | i18n }} /{{ "year" | i18n }}
</ng-template> </ng-template>
</small> </small>
@@ -228,41 +229,41 @@
<span *ngIf="selectablePlan.baseSeats">{{ "additionalUsers" | i18n }}:</span> <span *ngIf="selectablePlan.baseSeats">{{ "additionalUsers" | i18n }}:</span>
<span *ngIf="!selectablePlan.baseSeats">{{ "users" | i18n }}:</span> <span *ngIf="!selectablePlan.baseSeats">{{ "users" | i18n }}:</span>
{{ formGroup.controls["additionalSeats"].value || 0 }} &times; {{ formGroup.controls["additionalSeats"].value || 0 }} &times;
{{ selectablePlan.seatPrice / 12 | currency: "$" }} &times; 12 {{ selectablePlan.seatPrice / 12 | currency : "$" }} &times; 12
{{ "monthAbbr" | i18n }} = {{ seatTotal(selectablePlan) | currency: "$" }} /{{ {{ "monthAbbr" | i18n }} = {{ seatTotal(selectablePlan) | currency : "$" }} /{{
"year" | i18n "year" | i18n
}} }}
</small> </small>
<small *ngIf="selectablePlan.hasAdditionalStorageOption"> <small *ngIf="selectablePlan.hasAdditionalStorageOption">
{{ "additionalStorageGb" | i18n }}: {{ "additionalStorageGb" | i18n }}:
{{ formGroup.controls["additionalStorage"].value || 0 }} &times; {{ formGroup.controls["additionalStorage"].value || 0 }} &times;
{{ selectablePlan.additionalStoragePricePerGb / 12 | currency: "$" }} &times; 12 {{ selectablePlan.additionalStoragePricePerGb / 12 | currency : "$" }} &times; 12
{{ "monthAbbr" | i18n }} = {{ "monthAbbr" | i18n }} =
{{ additionalStorageTotal(selectablePlan) | currency: "$" }} /{{ "year" | i18n }} {{ additionalStorageTotal(selectablePlan) | currency : "$" }} /{{ "year" | i18n }}
</small> </small>
</ng-container> </ng-container>
<ng-container *ngIf="!selectablePlan.isAnnual"> <ng-container *ngIf="!selectablePlan.isAnnual">
{{ "monthly" | i18n }} {{ "monthly" | i18n }}
<small *ngIf="selectablePlan.basePrice"> <small *ngIf="selectablePlan.basePrice">
{{ "basePrice" | i18n }}: {{ selectablePlan.basePrice | currency: "$" }} {{ "basePrice" | i18n }}: {{ selectablePlan.basePrice | currency : "$" }}
{{ "monthAbbr" | i18n }} {{ "monthAbbr" | i18n }}
= =
{{ selectablePlan.basePrice | currency: "$" }} {{ selectablePlan.basePrice | currency : "$" }}
/{{ "month" | i18n }} /{{ "month" | i18n }}
</small> </small>
<small *ngIf="selectablePlan.hasAdditionalSeatsOption"> <small *ngIf="selectablePlan.hasAdditionalSeatsOption">
<span *ngIf="selectablePlan.baseSeats">{{ "additionalUsers" | i18n }}:</span> <span *ngIf="selectablePlan.baseSeats">{{ "additionalUsers" | i18n }}:</span>
<span *ngIf="!selectablePlan.baseSeats">{{ "users" | i18n }}:</span> <span *ngIf="!selectablePlan.baseSeats">{{ "users" | i18n }}:</span>
{{ formGroup.controls["additionalSeats"].value || 0 }} &times; {{ formGroup.controls["additionalSeats"].value || 0 }} &times;
{{ selectablePlan.seatPrice | currency: "$" }} {{ "monthAbbr" | i18n }} = {{ selectablePlan.seatPrice | currency : "$" }} {{ "monthAbbr" | i18n }} =
{{ seatTotal(selectablePlan) | currency: "$" }} /{{ "month" | i18n }} {{ seatTotal(selectablePlan) | currency : "$" }} /{{ "month" | i18n }}
</small> </small>
<small *ngIf="selectablePlan.hasAdditionalStorageOption"> <small *ngIf="selectablePlan.hasAdditionalStorageOption">
{{ "additionalStorageGb" | i18n }}: {{ "additionalStorageGb" | i18n }}:
{{ formGroup.controls["additionalStorage"].value || 0 }} &times; {{ formGroup.controls["additionalStorage"].value || 0 }} &times;
{{ selectablePlan.additionalStoragePricePerGb | currency: "$" }} {{ selectablePlan.additionalStoragePricePerGb | currency : "$" }}
{{ "monthAbbr" | i18n }} = {{ "monthAbbr" | i18n }} =
{{ additionalStorageTotal(selectablePlan) | currency: "$" }} /{{ "month" | i18n }} {{ additionalStorageTotal(selectablePlan) | currency : "$" }} /{{ "month" | i18n }}
</small> </small>
</ng-container> </ng-container>
</label> </label>
@@ -278,15 +279,15 @@
<app-tax-info (onCountryChanged)="changedCountry()"></app-tax-info> <app-tax-info (onCountryChanged)="changedCountry()"></app-tax-info>
<div id="price" class="my-4"> <div id="price" class="my-4">
<div class="text-muted text-sm"> <div class="text-muted text-sm">
{{ "planPrice" | i18n }}: {{ subtotal | currency: "USD $" }} {{ "planPrice" | i18n }}: {{ subtotal | currency : "USD $" }}
<br /> <br />
<ng-container> <ng-container>
{{ "estimatedTax" | i18n }}: {{ taxCharges | currency: "USD $" }} {{ "estimatedTax" | i18n }}: {{ taxCharges | currency : "USD $" }}
</ng-container> </ng-container>
</div> </div>
<hr class="my-1 col-3 ml-0" /> <hr class="my-1 col-3 ml-0" />
<p class="text-lg"> <p class="text-lg">
<strong>{{ "total" | i18n }}:</strong> {{ total | currency: "USD $" }}/{{ <strong>{{ "total" | i18n }}:</strong> {{ total | currency : "USD $" }}/{{
selectedPlanInterval | i18n selectedPlanInterval | i18n
}} }}
</p> </p>

View File

@@ -27,7 +27,7 @@
<ng-container *ngIf="billing"> <ng-container *ngIf="billing">
<h2>{{ (isCreditBalance ? "accountCredit" : "accountBalance") | i18n }}</h2> <h2>{{ (isCreditBalance ? "accountCredit" : "accountBalance") | i18n }}</h2>
<p class="text-lg"> <p class="text-lg">
<strong>{{ creditOrBalance | currency: "$" }}</strong> <strong>{{ creditOrBalance | currency : "$" }}</strong>
</p> </p>
<p>{{ "creditAppliedDesc" | i18n }}</p> <p>{{ "creditAppliedDesc" | i18n }}</p>
<button bitButton buttonType="secondary" (click)="addCredit()" *ngIf="!showAddCredit"> <button bitButton buttonType="secondary" (click)="addCredit()" *ngIf="!showAddCredit">
@@ -62,12 +62,12 @@
ngNativeValidate ngNativeValidate
> >
<bit-form-field class="tw-mr-2 tw-w-40"> <bit-form-field class="tw-mr-2 tw-w-40">
<bit-label>{{ "amountX" | i18n: "1" }}</bit-label> <bit-label>{{ "amountX" | i18n : "1" }}</bit-label>
<input bitInput type="number" step="1" placeholder="xx" formControlName="amount1" /> <input bitInput type="number" step="1" placeholder="xx" formControlName="amount1" />
<span bitPrefix>$0.</span> <span bitPrefix>$0.</span>
</bit-form-field> </bit-form-field>
<bit-form-field class="tw-mr-2 tw-w-40"> <bit-form-field class="tw-mr-2 tw-w-40">
<bit-label>{{ "amountX" | i18n: "2" }}</bit-label> <bit-label>{{ "amountX" | i18n : "2" }}</bit-label>
<input bitInput type="number" step="1" placeholder="xx" formControlName="amount2" /> <input bitInput type="number" step="1" placeholder="xx" formControlName="amount2" />
<span bitPrefix>$0.</span> <span bitPrefix>$0.</span>
</bit-form-field> </bit-form-field>

View File

@@ -45,7 +45,9 @@
</li> </li>
</ul> </ul>
<p class="text-lg" [ngClass]="{ 'mb-0': !selfHosted }"> <p class="text-lg" [ngClass]="{ 'mb-0': !selfHosted }">
{{ "premiumPriceWithFamilyPlan" | i18n: (premiumPrice | currency: "$"):familyPlanMaxUserCount }} {{
"premiumPriceWithFamilyPlan" | i18n : (premiumPrice | currency : "$") : familyPlanMaxUserCount
}}
<a routerLink="/create-organization" [queryParams]="{ plan: 'families' }">{{ <a routerLink="/create-organization" [queryParams]="{ plan: 'families' }">{{
"bitwardenFamiliesPlan" | i18n "bitwardenFamiliesPlan" | i18n
}}</a> }}</a>
@@ -68,7 +70,7 @@
<label for="file">{{ "licenseFile" | i18n }}</label> <label for="file">{{ "licenseFile" | i18n }}</label>
<input type="file" id="file" class="form-control-file" name="file" required /> <input type="file" id="file" class="form-control-file" name="file" required />
<small class="form-text text-muted">{{ <small class="form-text text-muted">{{
"licenseFileDesc" | i18n: "bitwarden_premium_license.json" "licenseFileDesc" | i18n : "bitwarden_premium_license.json"
}}</small> }}</small>
</div> </div>
<button type="submit" buttonType="primary" bitButton [loading]="form.loading"> <button type="submit" buttonType="primary" bitButton [loading]="form.loading">
@@ -94,30 +96,30 @@
/> />
<small class="text-muted form-text">{{ <small class="text-muted form-text">{{
"additionalStorageIntervalDesc" "additionalStorageIntervalDesc"
| i18n: "1 GB":(storageGbPrice | currency: "$"):("year" | i18n) | i18n : "1 GB" : (storageGbPrice | currency : "$") : ("year" | i18n)
}}</small> }}</small>
</div> </div>
</div> </div>
<h2 class="spaced-header">{{ "summary" | i18n }}</h2> <h2 class="spaced-header">{{ "summary" | i18n }}</h2>
{{ "premiumMembership" | i18n }}: {{ premiumPrice | currency: "$" }} <br /> {{ "premiumMembership" | i18n }}: {{ premiumPrice | currency : "$" }} <br />
{{ "additionalStorageGb" | i18n }}: {{ additionalStorage || 0 }} GB &times; {{ "additionalStorageGb" | i18n }}: {{ additionalStorage || 0 }} GB &times;
{{ storageGbPrice | currency: "$" }} = {{ storageGbPrice | currency : "$" }} =
{{ additionalStorageTotal | currency: "$" }} {{ additionalStorageTotal | currency : "$" }}
<hr class="my-3" /> <hr class="my-3" />
<h2 class="spaced-header mb-4">{{ "paymentInformation" | i18n }}</h2> <h2 class="spaced-header mb-4">{{ "paymentInformation" | i18n }}</h2>
<app-payment [hideBank]="true"></app-payment> <app-payment [hideBank]="true"></app-payment>
<app-tax-info></app-tax-info> <app-tax-info></app-tax-info>
<div id="price" class="my-4"> <div id="price" class="my-4">
<div class="text-muted text-sm"> <div class="text-muted text-sm">
{{ "planPrice" | i18n }}: {{ subtotal | currency: "USD $" }} {{ "planPrice" | i18n }}: {{ subtotal | currency : "USD $" }}
<br /> <br />
<ng-container> <ng-container>
{{ "estimatedTax" | i18n }}: {{ taxCharges | currency: "USD $" }} {{ "estimatedTax" | i18n }}: {{ taxCharges | currency : "USD $" }}
</ng-container> </ng-container>
</div> </div>
<hr class="my-1 col-3 ml-0" /> <hr class="my-1 col-3 ml-0" />
<p class="text-lg"> <p class="text-lg">
<strong>{{ "total" | i18n }}:</strong> {{ total | currency: "USD $" }}/{{ "year" | i18n }} <strong>{{ "total" | i18n }}:</strong> {{ total | currency : "USD $" }}/{{ "year" | i18n }}
</p> </p>
</div> </div>
<small class="text-muted font-italic">{{ "paymentChargedAnnually" | i18n }}</small> <small class="text-muted font-italic">{{ "paymentChargedAnnually" | i18n }}</small>

View File

@@ -29,7 +29,7 @@
class="dropdown-item btn-submit" class="dropdown-item btn-submit"
[disabled]="$any(resendEmailBtn).loading" [disabled]="$any(resendEmailBtn).loading"
(click)="resendEmail()" (click)="resendEmail()"
[attr.aria-label]="'resendEmailLabel' | i18n: sponsoringOrg.familySponsorshipFriendlyName" [attr.aria-label]="'resendEmailLabel' | i18n : sponsoringOrg.familySponsorshipFriendlyName"
> >
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i> <i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
<span>{{ "resendEmail" | i18n }}</span> <span>{{ "resendEmail" | i18n }}</span>
@@ -40,7 +40,7 @@
class="dropdown-item text-danger btn-submit" class="dropdown-item text-danger btn-submit"
[disabled]="$any(revokeSponsorshipBtn).loading" [disabled]="$any(revokeSponsorshipBtn).loading"
(click)="revokeSponsorship()" (click)="revokeSponsorship()"
[attr.aria-label]="'revokeAccount' | i18n: sponsoringOrg.familySponsorshipFriendlyName" [attr.aria-label]="'revokeAccount' | i18n : sponsoringOrg.familySponsorshipFriendlyName"
> >
<i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i> <i class="bwi bwi-spinner bwi-spin" title="{{ 'loading' | i18n }}" aria-hidden="true"></i>
<span>{{ "remove" | i18n }}</span> <span>{{ "remove" | i18n }}</span>

View File

@@ -54,7 +54,7 @@
</bit-callout> </bit-callout>
<dl *ngIf="selfHosted"> <dl *ngIf="selfHosted">
<dt>{{ "expiration" | i18n }}</dt> <dt>{{ "expiration" | i18n }}</dt>
<dd *ngIf="sub.expiration">{{ sub.expiration | date: "mediumDate" }}</dd> <dd *ngIf="sub.expiration">{{ sub.expiration | date : "mediumDate" }}</dd>
<dd *ngIf="!sub.expiration">{{ "neverExpires" | i18n }}</dd> <dd *ngIf="!sub.expiration">{{ "neverExpires" | i18n }}</dd>
</dl> </dl>
<div class="row" *ngIf="!selfHosted"> <div class="row" *ngIf="!selfHosted">
@@ -71,9 +71,9 @@
<dd> <dd>
{{ {{
nextInvoice nextInvoice
? (nextInvoice.date | date: "mediumDate") + ? (nextInvoice.date | date : "mediumDate") +
", " + ", " +
(nextInvoice.amount | currency: "$") (nextInvoice.amount | currency : "$")
: "-" : "-"
}} }}
</dd> </dd>
@@ -86,9 +86,9 @@
<tr *ngFor="let i of subscription.items"> <tr *ngFor="let i of subscription.items">
<td> <td>
{{ i.name }} {{ i.quantity > 1 ? "&times;" + i.quantity : "" }} @ {{ i.name }} {{ i.quantity > 1 ? "&times;" + i.quantity : "" }} @
{{ i.amount | currency: "$" }} {{ i.amount | currency : "$" }}
</td> </td>
<td>{{ i.quantity * i.amount | currency: "$" }} /{{ i.interval | i18n }}</td> <td>{{ i.quantity * i.amount | currency : "$" }} /{{ i.interval | i18n }}</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@@ -155,7 +155,7 @@
</button> </button>
</div> </div>
<h2 class="spaced-header">{{ "storage" | i18n }}</h2> <h2 class="spaced-header">{{ "storage" | i18n }}</h2>
<p>{{ "subscriptionStorage" | i18n: sub.maxStorageGb || 0:sub.storageName || "0 MB" }}</p> <p>{{ "subscriptionStorage" | i18n : sub.maxStorageGb || 0 : sub.storageName || "0 MB" }}</p>
<div class="progress"> <div class="progress">
<div <div
class="progress-bar bg-success" class="progress-bar bg-success"

View File

@@ -1,5 +1,5 @@
<app-callout type="info" *ngIf="vaultTimeoutPolicy"> <app-callout type="info" *ngIf="vaultTimeoutPolicy">
{{ "vaultTimeoutPolicyInEffect" | i18n: vaultTimeoutPolicyHours:vaultTimeoutPolicyMinutes }} {{ "vaultTimeoutPolicyInEffect" | i18n : vaultTimeoutPolicyHours : vaultTimeoutPolicyMinutes }}
</app-callout> </app-callout>
<div [formGroup]="form"> <div [formGroup]="form">

View File

@@ -23,7 +23,7 @@
class="tw-block tw-font-mono" class="tw-block tw-font-mono"
appSelectCopy appSelectCopy
></bit-color-password> ></bit-color-password>
<small class="text-muted">{{ h.date | date: "medium" }}</small> <small class="text-muted">{{ h.date | date : "medium" }}</small>
</div> </div>
<div class="ml-auto"> <div class="ml-auto">
<button <button

View File

@@ -302,10 +302,10 @@
role="group" role="group"
class="row" class="row"
*ngFor="let u of cipher.login.uris; let i = index; trackBy: trackByFunction" *ngFor="let u of cipher.login.uris; let i = index; trackBy: trackByFunction"
attr.aria-label="{{ 'uriPosition' | i18n: i + 1 }}" attr.aria-label="{{ 'uriPosition' | i18n : i + 1 }}"
> >
<div class="col-7 form-group"> <div class="col-7 form-group">
<label for="loginUri{{ i }}">{{ "uriPosition" | i18n: i + 1 }}</label> <label for="loginUri{{ i }}">{{ "uriPosition" | i18n : i + 1 }}</label>
<div class="input-group"> <div class="input-group">
<input <input
class="form-control" class="form-control"
@@ -873,15 +873,15 @@
<div class="small text-muted mt-4"> <div class="small text-muted mt-4">
<div> <div>
<b class="font-weight-semibold">{{ "dateUpdated" | i18n }}:</b> <b class="font-weight-semibold">{{ "dateUpdated" | i18n }}:</b>
{{ cipher.revisionDate | date: "medium" }} {{ cipher.revisionDate | date : "medium" }}
</div> </div>
<div *ngIf="cipher.creationDate"> <div *ngIf="cipher.creationDate">
<b class="font-weight-semibold">{{ "dateCreated" | i18n }}:</b> <b class="font-weight-semibold">{{ "dateCreated" | i18n }}:</b>
{{ cipher.creationDate | date: "medium" }} {{ cipher.creationDate | date : "medium" }}
</div> </div>
<div *ngIf="showRevisionDate"> <div *ngIf="showRevisionDate">
<b class="font-weight-semibold">{{ "datePasswordUpdated" | i18n }}:</b> <b class="font-weight-semibold">{{ "datePasswordUpdated" | i18n }}:</b>
{{ cipher.passwordRevisionDisplayDate | date: "medium" }} {{ cipher.passwordRevisionDisplayDate | date : "medium" }}
</div> </div>
<div *ngIf="hasPasswordHistory"> <div *ngIf="hasPasswordHistory">
<b class="font-weight-semibold">{{ "passwordHistory" | i18n }}:</b> <b class="font-weight-semibold">{{ "passwordHistory" | i18n }}:</b>
@@ -891,7 +891,7 @@
</div> </div>
<div class="ml-3" *ngIf="viewingPasswordHistory"> <div class="ml-3" *ngIf="viewingPasswordHistory">
<div *ngFor="let ph of cipher.passwordHistory"> <div *ngFor="let ph of cipher.passwordHistory">
{{ ph.lastUsedDate | date: "short" }} - {{ ph.lastUsedDate | date : "short" }} -
<bit-color-password [password]="ph.password"></bit-color-password> <bit-color-password [password]="ph.password"></bit-color-password>
</div> </div>
</div> </div>

View File

@@ -5,15 +5,15 @@
<span bitDialogContent> <span bitDialogContent>
<ng-container *ngIf="!permanent"> <ng-container *ngIf="!permanent">
<span *ngIf="cipherIds?.length"> <span *ngIf="cipherIds?.length">
{{ "deleteSelectedItemsDesc" | i18n: cipherIds.length }} {{ "deleteSelectedItemsDesc" | i18n : cipherIds.length }}
</span> </span>
<span *ngIf="collectionIds?.length"> <span *ngIf="collectionIds?.length">
{{ "deleteSelectedCollectionsDesc" | i18n: collectionIds.length }} {{ "deleteSelectedCollectionsDesc" | i18n : collectionIds.length }}
</span> </span>
{{ "deleteSelectedConfirmation" | i18n }} {{ "deleteSelectedConfirmation" | i18n }}
</ng-container> </ng-container>
<ng-container *ngIf="permanent"> <ng-container *ngIf="permanent">
{{ "permanentlyDeleteSelectedItemsDesc" | i18n: cipherIds.length }} {{ "permanentlyDeleteSelectedItemsDesc" | i18n : cipherIds.length }}
</ng-container> </ng-container>
</span> </span>
<div bitDialogFooter class="tw-flex tw-flex-row tw-gap-2"> <div bitDialogFooter class="tw-flex tw-flex-row tw-gap-2">

View File

@@ -4,7 +4,7 @@
{{ "moveSelected" | i18n }} {{ "moveSelected" | i18n }}
</span> </span>
<span bitDialogContent> <span bitDialogContent>
<p>{{ "moveSelectedItemsDesc" | i18n: cipherIds.length }}</p> <p>{{ "moveSelectedItemsDesc" | i18n : cipherIds.length }}</p>
<bit-form-field> <bit-form-field>
<bit-label for="folder">{{ "folder" | i18n }}</bit-label> <bit-label for="folder">{{ "folder" | i18n }}</bit-label>
<select bitInput formControlName="folderId"> <select bitInput formControlName="folderId">

View File

@@ -3,7 +3,7 @@
{{ "restoreSelected" | i18n }} {{ "restoreSelected" | i18n }}
</span> </span>
<span bitDialogContent> <span bitDialogContent>
{{ "restoreSelectedItemsDesc" | i18n: cipherIds.length }} {{ "restoreSelectedItemsDesc" | i18n : cipherIds.length }}
</span> </span>
<div bitDialogFooter class="tw-flex tw-flex-row tw-gap-2"> <div bitDialogFooter class="tw-flex tw-flex-row tw-gap-2">
<button bitButton type="submit" buttonType="primary" [bitAction]="submit"> <button bitButton type="submit" buttonType="primary" [bitAction]="submit">

View File

@@ -7,7 +7,7 @@
<p> <p>
{{ {{
"moveSelectedItemsCountDesc" "moveSelectedItemsCountDesc"
| i18n: this.ciphers.length:shareableCiphers.length:nonShareableCount | i18n : this.ciphers.length : shareableCiphers.length : nonShareableCount
}} }}
</p> </p>
<bit-form-field> <bit-form-field>

View File

@@ -7,5 +7,5 @@
appA11yTitle="{{ organizationName }}" appA11yTitle="{{ organizationName }}"
(click)="emitOnOrganizationClicked()" (click)="emitOnOrganizationClicked()"
> >
{{ organizationName | ellipsis: 13 }} {{ organizationName | ellipsis : 13 }}
</button> </button>

View File

@@ -5,7 +5,7 @@ export const All = "all";
// TODO: Remove `All` when moving to vertical navigation. // TODO: Remove `All` when moving to vertical navigation.
const itemTypes = ["favorites", "login", "card", "identity", "note", "trash", All] as const; const itemTypes = ["favorites", "login", "card", "identity", "note", "trash", All] as const;
export type RoutedVaultFilterItemType = typeof itemTypes[number]; export type RoutedVaultFilterItemType = (typeof itemTypes)[number];
export function isRoutedVaultFilterItemType(value: unknown): value is RoutedVaultFilterItemType { export function isRoutedVaultFilterItemType(value: unknown): value is RoutedVaultFilterItemType {
return itemTypes.includes(value as any); return itemTypes.includes(value as any);

View File

@@ -8,7 +8,7 @@
> >
<!-- First node in the tree is the "Org Name Vault" item. The rest come from user input. --> <!-- First node in the tree is the "Org Name Vault" item. The rest come from user input. -->
<ng-container *ngIf="first"> <ng-container *ngIf="first">
{{ activeOrganizationId | orgNameFromId: (organizations$ | async) }} {{ activeOrganizationId | orgNameFromId : (organizations$ | async) }}
{{ "vault" | i18n | lowercase }} {{ "vault" | i18n | lowercase }}
</ng-container> </ng-container>
<ng-container *ngIf="!first">{{ collection.node.name }}</ng-container> <ng-container *ngIf="!first">{{ collection.node.name }}</ng-container>

View File

@@ -113,7 +113,7 @@
<td bitCell> <td bitCell>
<ng-container *ngIf="!organization"> <ng-container *ngIf="!organization">
<app-org-badge <app-org-badge
organizationName="{{ col.node.organizationId | orgNameFromId: organizations }}" organizationName="{{ col.node.organizationId | orgNameFromId : organizations }}"
[profileName]="profileName" [profileName]="profileName"
(onOrganizationClicked)="onOrganizationClicked(col.node.organizationId)" (onOrganizationClicked)="onOrganizationClicked(col.node.organizationId)"
appStopProp appStopProp
@@ -224,7 +224,7 @@
<td bitCell> <td bitCell>
<ng-container *ngIf="!organization"> <ng-container *ngIf="!organization">
<app-org-badge <app-org-badge
organizationName="{{ c.organizationId | orgNameFromId: organizations }}" organizationName="{{ c.organizationId | orgNameFromId : organizations }}"
profileName="{{ profileName }}" profileName="{{ profileName }}"
(onOrganizationClicked)="onOrganizationClicked(c.organizationId)" (onOrganizationClicked)="onOrganizationClicked(c.organizationId)"
appStopProp appStopProp

View File

@@ -1,5 +1,5 @@
<ng-container *ngFor="let c of shownCollections"> <ng-container *ngFor="let c of shownCollections">
<span bitBadge badgeType="secondary">{{ c | collectionNameFromId: collections }}</span> <span bitBadge badgeType="secondary">{{ c | collectionNameFromId : collections }}</span>
</ng-container> </ng-container>
<ng-container *ngIf="showXMore"> <ng-container *ngIf="showXMore">
<span bitBadge badgeType="secondary">+ {{ xMoreCount }} more</span> <span bitBadge badgeType="secondary">+ {{ xMoreCount }} more</span>

View File

@@ -8,7 +8,7 @@
> >
<!-- First node in the tree is the "Org Name Vault" item. The rest come from user input. --> <!-- First node in the tree is the "Org Name Vault" item. The rest come from user input. -->
<ng-container *ngIf="first"> <ng-container *ngIf="first">
{{ activeOrganizationId | orgNameFromId: (organizations$ | async) }} {{ activeOrganizationId | orgNameFromId : (organizations$ | async) }}
{{ "vault" | i18n | lowercase }} {{ "vault" | i18n | lowercase }}
</ng-container> </ng-container>
<ng-container *ngIf="!first">{{ collection.node.name }}</ng-container> <ng-container *ngIf="!first">{{ collection.node.name }}</ng-container>

View File

@@ -34,7 +34,7 @@
</button> </button>
</div> </div>
<small class="text-muted form-text"> <small class="text-muted form-text">
{{ "loggedInAsEmailOn" | i18n: email:webVaultHostname }} {{ "loggedInAsEmailOn" | i18n : email : webVaultHostname }}
</small> </small>
</div> </div>
<hr /> <hr />

View File

@@ -18,7 +18,7 @@
<hr /> <hr />
<div class="card d-block"> <div class="card d-block">
<div class="card-body"> <div class="card-body">
<p>{{ "convertOrganizationEncryptionDesc" | i18n: organization.name }}</p> <p>{{ "convertOrganizationEncryptionDesc" | i18n : organization.name }}</p>
<button <button
type="button" type="button"

View File

@@ -71,7 +71,7 @@
<span>{{ "sendEmail" | i18n }}</span> <span>{{ "sendEmail" | i18n }}</span>
</button> </button>
<span class="text-success ml-3" *ngIf="sentEmail"> <span class="text-success ml-3" *ngIf="sentEmail">
{{ "verificationCodeEmailSent" | i18n: sentEmail }} {{ "verificationCodeEmailSent" | i18n : sentEmail }}
</span> </span>
</div> </div>
<div class="form-group"> <div class="form-group">

View File

@@ -52,7 +52,7 @@
[appApiAction]="k.removePromise" [appApiAction]="k.removePromise"
> >
<i class="bwi bwi-li bwi-key"></i> <i class="bwi bwi-li bwi-key"></i>
<strong *ngIf="!k.configured || !k.name">{{ "webAuthnkeyX" | i18n: i + 1 }}</strong> <strong *ngIf="!k.configured || !k.name">{{ "webAuthnkeyX" | i18n : i + 1 }}</strong>
<strong *ngIf="k.configured && k.name">{{ k.name }}</strong> <strong *ngIf="k.configured && k.name">{{ k.name }}</strong>
<ng-container *ngIf="k.configured && !$any(removeKeyBtn).loading"> <ng-container *ngIf="k.configured && !$any(removeKeyBtn).loading">
<ng-container *ngIf="k.migrated"> <ng-container *ngIf="k.migrated">

View File

@@ -57,7 +57,7 @@
<hr /> <hr />
<div class="row"> <div class="row">
<div class="form-group col-6" *ngFor="let k of keys; let i = index"> <div class="form-group col-6" *ngFor="let k of keys; let i = index">
<label for="key{{ i + 1 }}">{{ "yubikeyX" | i18n: i + 1 }}</label> <label for="key{{ i + 1 }}">{{ "yubikeyX" | i18n : i + 1 }}</label>
<input <input
id="key{{ i + 1 }}" id="key{{ i + 1 }}"
type="password" type="password"

View File

@@ -28,7 +28,7 @@
{{ "enterVerificationCodeApp" | i18n }} {{ "enterVerificationCodeApp" | i18n }}
</p> </p>
<p *ngIf="selectedProviderType === providerType.Email"> <p *ngIf="selectedProviderType === providerType.Email">
{{ "enterVerificationCodeEmail" | i18n: twoFactorEmail }} {{ "enterVerificationCodeEmail" | i18n : twoFactorEmail }}
</p> </p>
<div class="form-group"> <div class="form-group">
<label for="code" class="sr-only">{{ "verificationCode" | i18n }}</label> <label for="code" class="sr-only">{{ "verificationCode" | i18n }}</label>

View File

@@ -350,4 +350,4 @@ $themes: (
@function themed($key) { @function themed($key) {
@return map-get($theme-map, $key); @return map-get($theme-map, $key);
} ; }

View File

@@ -49,7 +49,7 @@
}}</span> }}</span>
</td> </td>
<td bitCell class="tw-text-muted"> <td bitCell class="tw-text-muted">
{{ orgDomain.lastCheckedDate | date: "medium" }} {{ orgDomain.lastCheckedDate | date : "medium" }}
</td> </td>
<td bitCell class="table-list-options tw-text-right"> <td bitCell class="table-list-options tw-text-right">

View File

@@ -39,7 +39,7 @@
</ng-container> </ng-container>
<ng-container <ng-container
*ngIf="!loading && (clients | search: searchText:'organizationName':'id') as searchedClients" *ngIf="!loading && (clients | search : searchText : 'organizationName' : 'id') as searchedClients"
> >
<p *ngIf="!searchedClients.length">{{ "noClientsInList" | i18n }}</p> <p *ngIf="!searchedClients.length">{{ "noClientsInList" | i18n }}</p>
<ng-container *ngIf="searchedClients.length"> <ng-container *ngIf="searchedClients.length">

View File

@@ -76,7 +76,7 @@
</thead> </thead>
<tbody> <tbody>
<tr *ngFor="let e of events"> <tr *ngFor="let e of events">
<td>{{ e.date | date: "medium" }}</td> <td>{{ e.date | date : "medium" }}</td>
<td> <td>
<i <i
class="text-muted bwi bwi-lg {{ e.appIcon }}" class="text-muted bwi bwi-lg {{ e.appIcon }}"

View File

@@ -100,7 +100,9 @@
<ng-container <ng-container
*ngIf=" *ngIf="
!loading && !loading &&
(isPaging() ? pagedUsers : (users | search: searchText:'name':'email':'id')) as searchedUsers (isPaging()
? pagedUsers
: (users | search : searchText : 'name' : 'email' : 'id')) as searchedUsers
" "
> >
<p *ngIf="!searchedUsers.length">{{ "noUsersInList" | i18n }}</p> <p *ngIf="!searchedUsers.length">{{ "noUsersInList" | i18n }}</p>

View File

@@ -43,7 +43,7 @@
required required
appAutoFocus appAutoFocus
/> />
<small class="text-muted">{{ "inviteMultipleEmailDesc" | i18n: "20" }}</small> <small class="text-muted">{{ "inviteMultipleEmailDesc" | i18n : "20" }}</small>
</div> </div>
</ng-container> </ng-container>
<h3> <h3>

View File

@@ -5,7 +5,7 @@
<div class="tw-text-lg">{{ title }}</div> <div class="tw-text-lg">{{ title }}</div>
<bit-progress class="tw-flex-1" [showText]="false" [barWidth]="barWidth"></bit-progress> <bit-progress class="tw-flex-1" [showText]="false" [barWidth]="barWidth"></bit-progress>
<span *ngIf="tasks.length > 0; else spinner"> <span *ngIf="tasks.length > 0; else spinner">
{{ "complete" | i18n: amountCompleted:tasks.length }} {{ "complete" | i18n : amountCompleted : tasks.length }}
</span> </span>
<i <i
class="bwi tw-my-auto" class="bwi tw-my-auto"

View File

@@ -50,7 +50,7 @@
[projects]="view.latestProjects" [projects]="view.latestProjects"
></sm-projects-list> ></sm-projects-list>
<div *ngIf="view.allProjects.length > 0" class="tw-ml-auto tw-mt-4 tw-max-w-max"> <div *ngIf="view.allProjects.length > 0" class="tw-ml-auto tw-mt-4 tw-max-w-max">
{{ "showingPortionOfTotal" | i18n: view.latestProjects.length:view.allProjects.length }} {{ "showingPortionOfTotal" | i18n : view.latestProjects.length : view.allProjects.length }}
<a bitLink routerLink="projects" class="tw-ml-2">{{ "viewAll" | i18n }}</a> <a bitLink routerLink="projects" class="tw-ml-2">{{ "viewAll" | i18n }}</a>
</div> </div>
</sm-section> </sm-section>
@@ -66,7 +66,7 @@
[secrets]="view.latestSecrets" [secrets]="view.latestSecrets"
></sm-secrets-list> ></sm-secrets-list>
<div *ngIf="view.allSecrets.length > 0" class="tw-ml-auto tw-mt-4 tw-max-w-max"> <div *ngIf="view.allSecrets.length > 0" class="tw-ml-auto tw-mt-4 tw-max-w-max">
{{ "showingPortionOfTotal" | i18n: view.latestSecrets.length:view.allSecrets.length }} {{ "showingPortionOfTotal" | i18n : view.latestSecrets.length : view.allSecrets.length }}
<a bitLink routerLink="secrets" class="tw-ml-2">{{ "viewAll" | i18n }}</a> <a bitLink routerLink="secrets" class="tw-ml-2">{{ "viewAll" | i18n }}</a>
</div> </div>
</sm-section> </sm-section>

View File

@@ -59,9 +59,9 @@
<td bitCell>{{ token.name }}</td> <td bitCell>{{ token.name }}</td>
<td bitCell>{{ permission(token) | i18n }}</td> <td bitCell>{{ permission(token) | i18n }}</td>
<td bitCell> <td bitCell>
{{ token.expireAt === null ? ("never" | i18n) : (token.expireAt | date: "medium") }} {{ token.expireAt === null ? ("never" | i18n) : (token.expireAt | date : "medium") }}
</td> </td>
<td bitCell>{{ token.revisionDate | date: "medium" }}</td> <td bitCell>{{ token.revisionDate | date : "medium" }}</td>
<td bitCell> <td bitCell>
<button <button
type="button" type="button"

View File

@@ -10,7 +10,9 @@
<bit-callout type="info" [title]="'accessTokenCallOutTitle' | i18n"> <bit-callout type="info" [title]="'accessTokenCallOutTitle' | i18n">
{{ "downloadAccessToken" | i18n }}<br /> {{ "downloadAccessToken" | i18n }}<br />
{{ "expiresOnAccessToken" | i18n }} {{ "expiresOnAccessToken" | i18n }}
{{ data.expirationDate === null ? ("never" | i18n) : (data.expirationDate | date: "medium") }} {{
data.expirationDate === null ? ("never" | i18n) : (data.expirationDate | date : "medium")
}}
</bit-callout> </bit-callout>
<bit-form-field class="tw-mb-0"> <bit-form-field class="tw-mb-0">
@@ -18,7 +20,7 @@
<textarea bitInput disabled rows="4">{{ data.accessToken }}</textarea> <textarea bitInput disabled rows="4">{{ data.accessToken }}</textarea>
</bit-form-field> </bit-form-field>
{{ "expiresOnAccessToken" | i18n }} {{ "expiresOnAccessToken" | i18n }}
{{ data.expirationDate === null ? ("never" | i18n) : (data.expirationDate | date: "medium") }} {{ data.expirationDate === null ? ("never" | i18n) : (data.expirationDate | date : "medium") }}
</div> </div>
<div bitDialogFooter class="tw-flex tw-gap-2"> <div bitDialogFooter class="tw-flex tw-gap-2">

View File

@@ -4,7 +4,7 @@
<select bitInput formControlName="expires"> <select bitInput formControlName="expires">
<option ngValue="never">{{ "never" | i18n }}</option> <option ngValue="never">{{ "never" | i18n }}</option>
<option *ngFor="let day of expirationDayOptions" [ngValue]="day"> <option *ngFor="let day of expirationDayOptions" [ngValue]="day">
{{ "days" | i18n: day }} {{ "days" | i18n : day }}
</option> </option>
<option ngValue="custom">{{ "custom" | i18n }}</option> <option ngValue="custom">{{ "custom" | i18n }}</option>
</select> </select>
@@ -14,7 +14,7 @@
<input <input
bitInput bitInput
type="datetime-local" type="datetime-local"
[min]="currentDate | date: 'YYYY-MM-ddThh:mm'" [min]="currentDate | date : 'YYYY-MM-ddThh:mm'"
formControlName="expireDateTime" formControlName="expireDateTime"
/> />
</bit-form-field> </bit-form-field>

View File

@@ -67,7 +67,7 @@
<!-- TODO add number of secrets once mapping is implemented--> <!-- TODO add number of secrets once mapping is implemented-->
<span> 0 </span> <span> 0 </span>
</td> </td>
<td bitCell>{{ serviceAccount.revisionDate | date: "medium" }}</td> <td bitCell>{{ serviceAccount.revisionDate | date : "medium" }}</td>
<td bitCell> <td bitCell>
<button <button
type="button" type="button"

View File

@@ -3,7 +3,7 @@
<form [formGroup]="formGroup" [bitSubmit]="submit"> <form [formGroup]="formGroup" [bitSubmit]="submit">
<div class="tw-my-4 tw-max-w-xl"> <div class="tw-my-4 tw-max-w-xl">
<app-callout type="info" title="{{ 'exportingOrganizationSecretDataTitle' | i18n }}"> <app-callout type="info" title="{{ 'exportingOrganizationSecretDataTitle' | i18n }}">
{{ "exportingOrganizationSecretDataDescription" | i18n: orgName }} {{ "exportingOrganizationSecretDataDescription" | i18n : orgName }}
</app-callout> </app-callout>
</div> </div>

View File

@@ -62,7 +62,7 @@
}}</a> }}</a>
</div> </div>
</td> </td>
<td bitCell class="tw-whitespace-nowrap">{{ project.revisionDate | date: "medium" }}</td> <td bitCell class="tw-whitespace-nowrap">{{ project.revisionDate | date : "medium" }}</td>
<td bitCell> <td bitCell>
<button <button
type="button" type="button"

View File

@@ -78,14 +78,14 @@
class="tw-ml-1" class="tw-ml-1"
[title]="project.name" [title]="project.name"
> >
{{ project.name | ellipsis: 32 }} {{ project.name | ellipsis : 32 }}
</span> </span>
<span *ngIf="secret.projects.length === 0" bitBadge badgeType="warning" class="tw-ml-1" <span *ngIf="secret.projects.length === 0" bitBadge badgeType="warning" class="tw-ml-1"
><i class="bwi bwi-fw bwi-exclamation-triangle tw-mr-1" aria-hidden="true"></i ><i class="bwi bwi-fw bwi-exclamation-triangle tw-mr-1" aria-hidden="true"></i
>{{ "unassigned" | i18n }}</span >{{ "unassigned" | i18n }}</span
> >
</td> </td>
<td bitCell class="tw-whitespace-nowrap">{{ secret.revisionDate | date: "medium" }}</td> <td bitCell class="tw-whitespace-nowrap">{{ secret.revisionDate | date : "medium" }}</td>
<td bitCell> <td bitCell>
<button <button
type="button" type="button"

View File

@@ -12,10 +12,10 @@
{{ enforcedPolicyMessage }} {{ enforcedPolicyMessage }}
<ul> <ul>
<li *ngIf="enforcedPolicyOptions?.minComplexity > 0"> <li *ngIf="enforcedPolicyOptions?.minComplexity > 0">
{{ "policyInEffectMinComplexity" | i18n: getPasswordScoreAlertDisplay() }} {{ "policyInEffectMinComplexity" | i18n : getPasswordScoreAlertDisplay() }}
</li> </li>
<li *ngIf="enforcedPolicyOptions?.minLength > 0"> <li *ngIf="enforcedPolicyOptions?.minLength > 0">
{{ "policyInEffectMinLength" | i18n: enforcedPolicyOptions?.minLength.toString() }} {{ "policyInEffectMinLength" | i18n : enforcedPolicyOptions?.minLength.toString() }}
</li> </li>
<li *ngIf="enforcedPolicyOptions?.requireUpper"> <li *ngIf="enforcedPolicyOptions?.requireUpper">
{{ "policyInEffectUppercase" | i18n }} {{ "policyInEffectUppercase" | i18n }}
@@ -27,7 +27,7 @@
{{ "policyInEffectNumbers" | i18n }} {{ "policyInEffectNumbers" | i18n }}
</li> </li>
<li *ngIf="enforcedPolicyOptions?.requireSpecial"> <li *ngIf="enforcedPolicyOptions?.requireSpecial">
{{ "policyInEffectSpecial" | i18n: "!@#$%^&*" }} {{ "policyInEffectSpecial" | i18n : "!@#$%^&*" }}
</li> </li>
</ul> </ul>
</div> </div>

Some files were not shown because too many files have changed in this diff Show More