-
diff --git a/apps/desktop/src/app/vault/folder-add-edit.component.html b/apps/desktop/src/app/vault/folder-add-edit.component.html
index ea7303dceb..4e9adec817 100644
--- a/apps/desktop/src/app/vault/folder-add-edit.component.html
+++ b/apps/desktop/src/app/vault/folder-add-edit.component.html
@@ -47,17 +47,17 @@
class="danger"
appA11yTitle="{{ 'delete' | i18n }}"
*ngIf="editMode"
- [disabled]="deleteBtn.loading"
+ [disabled]="$any(deleteBtn).loading"
[appApiAction]="deletePromise"
>
diff --git a/apps/desktop/src/app/vault/generator.component.html b/apps/desktop/src/app/vault/generator.component.html
index 6111bcc3c6..bddaa7d343 100644
--- a/apps/desktop/src/app/vault/generator.component.html
+++ b/apps/desktop/src/app/vault/generator.component.html
@@ -52,11 +52,11 @@
appStopClick
appA11yTitle="{{ 'regenerateUsername' | i18n }}"
(click)="regenerate()"
- [disabled]="form.loading"
+ [disabled]="$any(form).loading"
>
diff --git a/apps/desktop/src/app/vault/vault-filter/filters/organization-filter.component.html b/apps/desktop/src/app/vault/vault-filter/filters/organization-filter.component.html
index 3663b69fc4..dbba1353c9 100644
--- a/apps/desktop/src/app/vault/vault-filter/filters/organization-filter.component.html
+++ b/apps/desktop/src/app/vault/vault-filter/filters/organization-filter.component.html
@@ -112,7 +112,6 @@
diff --git a/apps/desktop/src/app/vault/view.component.html b/apps/desktop/src/app/vault/view.component.html
index 8b1b044574..5b3896f68e 100644
--- a/apps/desktop/src/app/vault/view.component.html
+++ b/apps/desktop/src/app/vault/view.component.html
@@ -64,16 +64,16 @@
appA11yTitle="{{ 'checkPassword' | i18n }}"
(click)="checkPassword()"
[appApiAction]="checkPasswordPromise"
- [disabled]="checkPasswordBtn.loading"
+ [disabled]="$any(checkPasswordBtn).loading"
>
@@ -472,12 +472,12 @@
{{ attachment.sizeName }}
diff --git a/apps/desktop/tsconfig.json b/apps/desktop/tsconfig.json
index f2f28c7306..74b0670b3e 100644
--- a/apps/desktop/tsconfig.json
+++ b/apps/desktop/tsconfig.json
@@ -16,6 +16,7 @@
}
},
"angularCompilerOptions": {
+ "strictTemplates": true,
"preserveWhitespaces": true
},
"include": ["src", "../../libs/common/src/services/**/*.worker.ts"]
diff --git a/apps/web/src/app/accounts/register.component.html b/apps/web/src/app/accounts/register.component.html
index ed492a6bb8..8a68d32b03 100644
--- a/apps/web/src/app/accounts/register.component.html
+++ b/apps/web/src/app/accounts/register.component.html
@@ -55,7 +55,7 @@
- Start Your Teams
Teams
Enterprise Free Trial Now
diff --git a/apps/web/src/app/accounts/trial-initiation/vertical-stepper/vertical-stepper.component.ts b/apps/web/src/app/accounts/trial-initiation/vertical-stepper/vertical-stepper.component.ts
index 2c66dae7be..745bb5767f 100644
--- a/apps/web/src/app/accounts/trial-initiation/vertical-stepper/vertical-stepper.component.ts
+++ b/apps/web/src/app/accounts/trial-initiation/vertical-stepper/vertical-stepper.component.ts
@@ -1,5 +1,7 @@
import { CdkStepper } from "@angular/cdk/stepper";
-import { Component, Input } from "@angular/core";
+import { Component, Input, QueryList } from "@angular/core";
+
+import { VerticalStep } from "./vertical-step.component";
@Component({
selector: "app-vertical-stepper",
@@ -7,6 +9,8 @@ import { Component, Input } from "@angular/core";
providers: [{ provide: CdkStepper, useExisting: VerticalStepperComponent }],
})
export class VerticalStepperComponent extends CdkStepper {
+ readonly steps: QueryList;
+
@Input()
activeClass = "active";
diff --git a/apps/web/src/app/accounts/two-factor.component.html b/apps/web/src/app/accounts/two-factor.component.html
index 835fd12e78..94066d684b 100644
--- a/apps/web/src/app/accounts/two-factor.component.html
+++ b/apps/web/src/app/accounts/two-factor.component.html
@@ -80,7 +80,7 @@
-
+
{{ "reinstateSubscription" | i18n }}
@@ -113,8 +113,8 @@
@@ -143,7 +143,7 @@
class="btn btn-outline-danger btn-submit"
(click)="removeSponsorship()"
[appApiAction]="removeSponsorshipPromise"
- [disabled]="removeSponsorshipBtn.loading"
+ [disabled]="$any(removeSponsorshipBtn).loading"
*ngIf="isSponsoredSubscription"
>
@@ -230,7 +230,7 @@
class="btn btn-outline-danger btn-submit ml-1"
(click)="cancel()"
[appApiAction]="cancelPromise"
- [disabled]="cancelBtn.loading"
+ [disabled]="$any(cancelBtn).loading"
*ngIf="subscription && !subscription.cancelled && !subscriptionMarkedForCancel"
>
diff --git a/apps/web/src/app/organizations/components/access-selector/access-selector.component.html b/apps/web/src/app/organizations/components/access-selector/access-selector.component.html
index 10390b3e05..cc4d1d7fa7 100644
--- a/apps/web/src/app/organizations/components/access-selector/access-selector.component.html
+++ b/apps/web/src/app/organizations/components/access-selector/access-selector.component.html
@@ -53,11 +53,13 @@
{{ item.labelName }}
-
+
{{ "invited" | i18n }}
-
{{ item.email }}
+
+ {{ $any(item).email }}
+
@@ -110,11 +112,11 @@
- {{ item.role | userType: "-" }}
+ {{ $any(item).role | userType: "-" }}
|
- {{ item.viaGroupName ?? "-" }}
+ {{ $any(item).viaGroupName ?? "-" }}
|
diff --git a/apps/web/src/app/organizations/manage/collection-add-edit.component.html b/apps/web/src/app/organizations/manage/collection-add-edit.component.html
index 97c973a419..41368d589a 100644
--- a/apps/web/src/app/organizations/manage/collection-add-edit.component.html
+++ b/apps/web/src/app/organizations/manage/collection-add-edit.component.html
@@ -81,7 +81,7 @@
|
|
|
@@ -140,17 +140,17 @@
class="btn btn-outline-danger"
appA11yTitle="{{ 'delete' | i18n }}"
*ngIf="editMode"
- [disabled]="deleteBtn.loading"
+ [disabled]="$any(deleteBtn).loading"
[appApiAction]="deletePromise"
>
diff --git a/apps/web/src/app/organizations/manage/entity-events.component.html b/apps/web/src/app/organizations/manage/entity-events.component.html
index 122d0b8188..b41e6f3ba1 100644
--- a/apps/web/src/app/organizations/manage/entity-events.component.html
+++ b/apps/web/src/app/organizations/manage/entity-events.component.html
@@ -52,11 +52,11 @@
type="button"
class="btn btn-sm btn-outline-primary ml-3"
(click)="loadEvents(true)"
- [disabled]="loaded && refreshBtn.loading"
+ [disabled]="loaded && $any(refreshBtn).loading"
>
{{ "refresh" | i18n }}
@@ -101,7 +101,7 @@
type="button"
class="btn btn-block btn-link btn-submit"
(click)="loadEvents(false)"
- [disabled]="loaded && moreBtn.loading"
+ [disabled]="loaded && $any(moreBtn).loading"
*ngIf="continuationToken"
>
diff --git a/apps/web/src/app/organizations/manage/events.component.html b/apps/web/src/app/organizations/manage/events.component.html
index a7468bcf37..e2c03f0dde 100644
--- a/apps/web/src/app/organizations/manage/events.component.html
+++ b/apps/web/src/app/organizations/manage/events.component.html
@@ -95,7 +95,7 @@
bitButton
buttonType="primary"
(click)="loadEvents(false)"
- [disabled]="loaded && moreBtn.loading"
+ [disabled]="loaded && $any(moreBtn).loading"
*ngIf="continuationToken"
>
@@ -132,7 +132,7 @@
type="checkbox"
[(ngModel)]="c.hidePasswords"
name="Collection[{{ i }}].HidePasswords"
- [disabled]="!c.checked"
+ [disabled]="!$any(c).checked"
/>
@@ -140,7 +140,7 @@
type="checkbox"
[(ngModel)]="c.readOnly"
name="Collection[{{ i }}].ReadOnly"
- [disabled]="!c.checked"
+ [disabled]="!$any(c).checked"
/>
|
@@ -164,17 +164,17 @@
class="btn btn-outline-danger"
appA11yTitle="{{ 'delete' | i18n }}"
*ngIf="editMode"
- [disabled]="deleteBtn.loading"
+ [disabled]="$any(deleteBtn).loading"
[appApiAction]="deletePromise"
>
diff --git a/apps/web/src/app/organizations/manage/user-add-edit.component.html b/apps/web/src/app/organizations/manage/user-add-edit.component.html
index 7d15eaa22f..458d1d0bab 100644
--- a/apps/web/src/app/organizations/manage/user-add-edit.component.html
+++ b/apps/web/src/app/organizations/manage/user-add-edit.component.html
@@ -341,7 +341,7 @@
@@ -354,7 +354,7 @@
type="checkbox"
[(ngModel)]="c.hidePasswords"
name="Collection[{{ i }}].HidePasswords"
- [disabled]="!c.checked"
+ [disabled]="!$any(c).checked"
/>
|
@@ -362,7 +362,7 @@
type="checkbox"
[(ngModel)]="c.readOnly"
name="Collection[{{ i }}].ReadOnly"
- [disabled]="!c.checked"
+ [disabled]="!$any(c).checked"
/>
|
@@ -416,17 +416,17 @@
class="btn btn-outline-danger"
appA11yTitle="{{ 'delete' | i18n }}"
*ngIf="editMode"
- [disabled]="deleteBtn.loading"
+ [disabled]="$any(deleteBtn).loading"
[appApiAction]="deletePromise"
>
diff --git a/apps/web/src/app/organizations/manage/user-groups.component.html b/apps/web/src/app/organizations/manage/user-groups.component.html
index 347125e982..217af6ea44 100644
--- a/apps/web/src/app/organizations/manage/user-groups.component.html
+++ b/apps/web/src/app/organizations/manage/user-groups.component.html
@@ -34,7 +34,7 @@
diff --git a/apps/web/src/app/organizations/policies/policies.component.ts b/apps/web/src/app/organizations/policies/policies.component.ts
index 0a316f5597..717e35ac96 100644
--- a/apps/web/src/app/organizations/policies/policies.component.ts
+++ b/apps/web/src/app/organizations/policies/policies.component.ts
@@ -29,7 +29,7 @@ export class PoliciesComponent implements OnInit {
organization: Organization;
private orgPolicies: PolicyResponse[];
- private policiesEnabledMap: Map = new Map();
+ protected policiesEnabledMap: Map = new Map();
constructor(
private route: ActivatedRoute,
diff --git a/apps/web/src/app/organizations/settings/organization-billing.component.ts b/apps/web/src/app/organizations/settings/organization-billing.component.ts
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/apps/web/src/app/organizations/vault/add-edit.component.ts b/apps/web/src/app/organizations/vault/add-edit.component.ts
index e8138b1abc..27a2b9a11d 100644
--- a/apps/web/src/app/organizations/vault/add-edit.component.ts
+++ b/apps/web/src/app/organizations/vault/add-edit.component.ts
@@ -18,7 +18,6 @@ import { StateService } from "@bitwarden/common/abstractions/state.service";
import { TotpService } from "@bitwarden/common/abstractions/totp.service";
import { CipherData } from "@bitwarden/common/models/data/cipher.data";
import { Cipher } from "@bitwarden/common/models/domain/cipher";
-import { Organization } from "@bitwarden/common/models/domain/organization";
import { CipherCreateRequest } from "@bitwarden/common/models/request/cipher-create.request";
import { CipherRequest } from "@bitwarden/common/models/request/cipher.request";
@@ -29,7 +28,6 @@ import { AddEditComponent as BaseAddEditComponent } from "../../vault/add-edit.c
templateUrl: "../../vault/add-edit.component.html",
})
export class AddEditComponent extends BaseAddEditComponent {
- organization: Organization;
originalCipher: Cipher = null;
constructor(
diff --git a/apps/web/src/app/organizations/vault/vault-items.component.ts b/apps/web/src/app/organizations/vault/vault-items.component.ts
index 670217a724..044b3d6d75 100644
--- a/apps/web/src/app/organizations/vault/vault-items.component.ts
+++ b/apps/web/src/app/organizations/vault/vault-items.component.ts
@@ -12,7 +12,6 @@ import { SearchService } from "@bitwarden/common/abstractions/search.service";
import { StateService } from "@bitwarden/common/abstractions/state.service";
import { TokenService } from "@bitwarden/common/abstractions/token.service";
import { TotpService } from "@bitwarden/common/abstractions/totp.service";
-import { Organization } from "@bitwarden/common/models/domain/organization";
import { CipherView } from "@bitwarden/common/models/view/cipher.view";
import { VaultItemsComponent as BaseVaultItemsComponent } from "../../vault/vault-items.component";
@@ -24,9 +23,6 @@ import { VaultItemsComponent as BaseVaultItemsComponent } from "../../vault/vaul
export class VaultItemsComponent extends BaseVaultItemsComponent {
@Output() onEventsClicked = new EventEmitter();
- organization: Organization;
- accessEvents = false;
-
protected allCiphers: CipherView[] = [];
constructor(
@@ -86,6 +82,7 @@ export class VaultItemsComponent extends BaseVaultItemsComponent {
async search(timeout: number = null) {
await super.search(timeout, this.allCiphers);
}
+
events(c: CipherView) {
this.onEventsClicked.emit(c);
}
diff --git a/apps/web/src/app/organizations/vault/vault.component.html b/apps/web/src/app/organizations/vault/vault.component.html
index dcc20913b9..7a75ce01c4 100644
--- a/apps/web/src/app/organizations/vault/vault.component.html
+++ b/apps/web/src/app/organizations/vault/vault.component.html
@@ -19,7 +19,7 @@
{{ "vaultItems" | i18n }}
-
+
();
+ passwordStrengthMap = new Map();
private passwordStrengthCache = new Map();
@@ -110,7 +111,7 @@ export class WeakPasswordsReportComponent extends CipherReportComponent implemen
return true;
}
- private scoreKey(score: number): [string, string] {
+ private scoreKey(score: number): [string, BadgeTypes] {
switch (score) {
case 4:
return ["strong", "success"];
diff --git a/apps/web/src/app/reports/shared/report-card/report-card.component.ts b/apps/web/src/app/reports/shared/report-card/report-card.component.ts
index 063d52bc68..13a2a04e0d 100644
--- a/apps/web/src/app/reports/shared/report-card/report-card.component.ts
+++ b/apps/web/src/app/reports/shared/report-card/report-card.component.ts
@@ -1,5 +1,7 @@
import { Component, Input } from "@angular/core";
+import { Icon } from "@bitwarden/components";
+
import { ReportVariant } from "../models/report-variant";
@Component({
@@ -10,7 +12,7 @@ export class ReportCardComponent {
@Input() title: string;
@Input() description: string;
@Input() route: string;
- @Input() icon: string;
+ @Input() icon: Icon;
@Input() variant: ReportVariant;
protected get disabled() {
diff --git a/apps/web/src/app/send/access.component.html b/apps/web/src/app/send/access.component.html
index b581861020..91ae288d3c 100644
--- a/apps/web/src/app/send/access.component.html
+++ b/apps/web/src/app/send/access.component.html
@@ -81,7 +81,7 @@
id="text"
rows="8"
name="Text"
- [(ngModel)]="sendText"
+ [ngModel]="sendText"
class="form-control"
readonly
>
diff --git a/apps/web/src/app/send/add-edit.component.html b/apps/web/src/app/send/add-edit.component.html
index dcc60a3c7a..dd9f61c6c5 100644
--- a/apps/web/src/app/send/add-edit.component.html
+++ b/apps/web/src/app/send/add-edit.component.html
@@ -55,7 +55,7 @@
name="Type_{{ o.value }}"
id="type_{{ o.value }}"
[value]="o.value"
- (change)="typeChanged(o)"
+ (change)="typeChanged()"
[checked]="send.type === o.value"
/>
@@ -120,14 +120,7 @@
{{ "share" | i18n }}
{{ "sendLinkLabel" | i18n }}
-
+
diff --git a/apps/web/src/app/settings/sponsoring-org-row.component.html b/apps/web/src/app/settings/sponsoring-org-row.component.html
index 30abad4475..bbff339959 100644
--- a/apps/web/src/app/settings/sponsoring-org-row.component.html
+++ b/apps/web/src/app/settings/sponsoring-org-row.component.html
@@ -25,7 +25,7 @@
*ngIf="!isSelfHosted && !sponsoringOrg.familySponsorshipValidUntil"
[appApiAction]="resendEmailPromise"
class="dropdown-item btn-submit"
- [disabled]="resendEmailBtn.loading"
+ [disabled]="$any(resendEmailBtn).loading"
(click)="resendEmail()"
[attr.aria-label]="'resendEmailLabel' | i18n: sponsoringOrg.familySponsorshipFriendlyName"
>
@@ -36,7 +36,7 @@
#revokeSponsorshipBtn
[appApiAction]="revokeSponsorshipPromise"
class="dropdown-item text-danger btn-submit"
- [disabled]="revokeSponsorshipBtn.loading"
+ [disabled]="$any(revokeSponsorshipBtn).loading"
(click)="revokeSponsorship()"
[attr.aria-label]="'revokeAccount' | i18n: sponsoringOrg.familySponsorshipFriendlyName"
>
diff --git a/apps/web/src/app/settings/two-factor-authenticator.component.html b/apps/web/src/app/settings/two-factor-authenticator.component.html
index 3ed1b2e573..748c6e0bd6 100644
--- a/apps/web/src/app/settings/two-factor-authenticator.component.html
+++ b/apps/web/src/app/settings/two-factor-authenticator.component.html
@@ -18,7 +18,7 @@
diff --git a/apps/web/src/app/settings/two-factor-duo.component.html b/apps/web/src/app/settings/two-factor-duo.component.html
index 02e3e9c595..fa76cf362c 100644
--- a/apps/web/src/app/settings/two-factor-duo.component.html
+++ b/apps/web/src/app/settings/two-factor-duo.component.html
@@ -18,7 +18,7 @@
diff --git a/apps/web/src/app/settings/two-factor-email.component.html b/apps/web/src/app/settings/two-factor-email.component.html
index 5f98fb0d93..a885aa9624 100644
--- a/apps/web/src/app/settings/two-factor-email.component.html
+++ b/apps/web/src/app/settings/two-factor-email.component.html
@@ -18,7 +18,7 @@
@@ -61,7 +61,7 @@
class="btn btn-outline-primary btn-sm btn-submit align-self-start"
(click)="sendEmail()"
[appApiAction]="emailPromise"
- [disabled]="sendBtn.loading"
+ [disabled]="$any(sendBtn).loading"
>
×
-
+
diff --git a/apps/web/src/app/settings/two-factor-webauthn.component.html b/apps/web/src/app/settings/two-factor-webauthn.component.html
index 1a5676afd8..72f9d66c2c 100644
--- a/apps/web/src/app/settings/two-factor-webauthn.component.html
+++ b/apps/web/src/app/settings/two-factor-webauthn.component.html
@@ -18,7 +18,7 @@
@@ -54,7 +54,7 @@
{{ "webAuthnkeyX" | i18n: i + 1 }}
{{ k.name }}
-
+
{{ "webAuthnMigrated" | i18n }}
@@ -63,7 +63,7 @@
-
@@ -96,16 +96,16 @@
type="button"
(click)="readKey()"
class="btn btn-outline-secondary mr-2"
- [disabled]="readKeyBtn.loading || webAuthnListening || !keyIdAvailable"
+ [disabled]="$any(readKeyBtn).loading || webAuthnListening || !keyIdAvailable"
#readKeyBtn
[appApiAction]="challengePromise"
>
{{ "readKey" | i18n }}
-
+
-
+
{{ "twoFactorU2fWaiting" | i18n }}...
@@ -138,8 +138,7 @@
#disableBtn
type="button"
class="btn btn-outline-secondary btn-submit"
- [appApiAction]="disablePromise"
- [disabled]="disableBtn.loading"
+ [disabled]="$any(disableBtn).loading"
(click)="disable()"
*ngIf="enabled"
>
diff --git a/apps/web/src/app/settings/two-factor-yubikey.component.html b/apps/web/src/app/settings/two-factor-yubikey.component.html
index ad26df871d..d377b303ef 100644
--- a/apps/web/src/app/settings/two-factor-yubikey.component.html
+++ b/apps/web/src/app/settings/two-factor-yubikey.component.html
@@ -18,7 +18,7 @@
@@ -104,7 +104,7 @@
type="button"
class="btn btn-outline-secondary btn-submit"
[appApiAction]="disablePromise"
- [disabled]="disableBtn.loading"
+ [disabled]="$any(disableBtn).loading"
(click)="disable()"
*ngIf="enabled"
>
diff --git a/apps/web/src/app/settings/user-subscription.component.html b/apps/web/src/app/settings/user-subscription.component.html
index 64d6f93602..cb645d95a4 100644
--- a/apps/web/src/app/settings/user-subscription.component.html
+++ b/apps/web/src/app/settings/user-subscription.component.html
@@ -46,7 +46,7 @@
class="btn-submit"
(click)="reinstate()"
[appApiAction]="reinstatePromise"
- [disabled]="reinstateBtn.loading"
+ [disabled]="$any(reinstateBtn).loading"
>
{{ "reinstateSubscription" | i18n }}
@@ -147,7 +147,7 @@
class="btn-submit tw-ml-auto"
(click)="cancel()"
[appApiAction]="cancelPromise"
- [disabled]="cancelBtn.loading"
+ [disabled]="$any(cancelBtn).loading"
*ngIf="subscription && !subscription.cancelled && !subscriptionMarkedForCancel"
>
diff --git a/apps/web/src/app/settings/verify-email.component.html b/apps/web/src/app/settings/verify-email.component.html
index c599fdad4c..d1ec7aed2f 100644
--- a/apps/web/src/app/settings/verify-email.component.html
+++ b/apps/web/src/app/settings/verify-email.component.html
@@ -9,7 +9,7 @@
class="btn btn-block btn-outline-secondary btn-submit"
#sendBtn
[appApiAction]="actionPromise"
- [disabled]="sendBtn.loading"
+ [disabled]="$any(sendBtn).loading"
(click)="send()"
>
diff --git a/apps/web/src/app/shared/loose-components.module.ts b/apps/web/src/app/shared/loose-components.module.ts
index 1dfbc8da6b..cd9992bd79 100644
--- a/apps/web/src/app/shared/loose-components.module.ts
+++ b/apps/web/src/app/shared/loose-components.module.ts
@@ -1,7 +1,5 @@
import { NgModule } from "@angular/core";
-import { UserVerificationComponent } from "@bitwarden/angular/components/user-verification.component";
-
import { AcceptEmergencyComponent } from "../accounts/accept-emergency.component";
import { AcceptOrganizationComponent } from "../accounts/accept-organization.component";
import { HintComponent } from "../accounts/hint.component";
@@ -24,6 +22,7 @@ import { OrganizationSwitcherComponent } from "../components/organization-switch
import { PasswordRepromptComponent } from "../components/password-reprompt.component";
import { PremiumBadgeComponent } from "../components/premium-badge.component";
import { UserVerificationPromptComponent } from "../components/user-verification-prompt.component";
+import { UserVerificationComponent } from "../components/user-verification.component";
import { FooterComponent } from "../layouts/footer.component";
import { FrontendLayoutComponent } from "../layouts/frontend-layout.component";
import { NavbarComponent } from "../layouts/navbar.component";
@@ -124,7 +123,6 @@ import { BulkRestoreComponent } from "../vault/bulk-restore.component";
import { BulkShareComponent } from "../vault/bulk-share.component";
import { CollectionsComponent } from "../vault/collections.component";
import { FolderAddEditComponent } from "../vault/folder-add-edit.component";
-import { OrganizationBadgeModule } from "../vault/organization-badge/organization-badge.module";
import { ShareComponent } from "../vault/share.component";
import { VaultFilterModule } from "../vault/vault-filter/vault-filter.module";
@@ -133,13 +131,7 @@ import { SharedModule } from ".";
// Please do not add to this list of declarations - we should refactor these into modules when doing so makes sense until there are none left.
// If you are building new functionality, please create or extend a feature module instead.
@NgModule({
- imports: [
- SharedModule,
- VaultFilterModule,
- OrganizationBadgeModule,
- OrganizationCreateModule,
- RegisterFormModule,
- ],
+ imports: [SharedModule, VaultFilterModule, OrganizationCreateModule, RegisterFormModule],
declarations: [
PremiumBadgeComponent,
AcceptEmergencyComponent,
diff --git a/apps/web/src/app/tools/generator.component.html b/apps/web/src/app/tools/generator.component.html
index 0801941706..52717b509d 100644
--- a/apps/web/src/app/tools/generator.component.html
+++ b/apps/web/src/app/tools/generator.component.html
@@ -408,7 +408,7 @@
type="button"
class="btn btn-submit btn-primary"
(click)="regenerate()"
- [disabled]="form.loading"
+ [disabled]="$any(form).loading"
>
{{ "regenerateUsername" | i18n }}
diff --git a/apps/web/src/app/tools/import-export/export.component.html b/apps/web/src/app/tools/import-export/export.component.html
index 4e27fc70f7..252e30665f 100644
--- a/apps/web/src/app/tools/import-export/export.component.html
+++ b/apps/web/src/app/tools/import-export/export.component.html
@@ -157,7 +157,8 @@
{{ "confirmFormat" | i18n }}
diff --git a/apps/web/src/app/tools/import-export/import.component.html b/apps/web/src/app/tools/import-export/import.component.html
index 92441600cb..1224bc4691 100644
--- a/apps/web/src/app/tools/import-export/import.component.html
+++ b/apps/web/src/app/tools/import-export/import.component.html
@@ -80,11 +80,13 @@
right) and select "Settings". Go to "Export" and find the "Export to .csv File" option. Click
"Export" to save the CSV file.
+
diff --git a/apps/web/src/app/vault/add-edit-custom-fields.component.html b/apps/web/src/app/vault/add-edit-custom-fields.component.html
index c524f34641..e01360562f 100644
--- a/apps/web/src/app/vault/add-edit-custom-fields.component.html
+++ b/apps/web/src/app/vault/add-edit-custom-fields.component.html
@@ -122,8 +122,8 @@
[(ngModel)]="f.value"
*ngIf="f.type === fieldType.Boolean"
appTrueFalseValue
- trueValue="true"
- falseValue="false"
+ [trueValue]="true"
+ [falseValue]="false"
[disabled]="cipher.isDeleted || viewOnly"
attr.aria-describedby="fieldName{{ i }}"
/>
diff --git a/apps/web/src/app/vault/add-edit.component.html b/apps/web/src/app/vault/add-edit.component.html
index 0f5730b70a..8f4ec12d03 100644
--- a/apps/web/src/app/vault/add-edit.component.html
+++ b/apps/web/src/app/vault/add-edit.component.html
@@ -118,13 +118,13 @@
>
@@ -838,7 +838,7 @@
diff --git a/apps/web/src/app/vault/attachments.component.html b/apps/web/src/app/vault/attachments.component.html
index 0940f0fa89..074ac41c85 100644
--- a/apps/web/src/app/vault/attachments.component.html
+++ b/apps/web/src/app/vault/attachments.component.html
@@ -26,10 +26,14 @@
-
+
|
@@ -55,7 +59,7 @@
(click)="reupload(a)"
#reuploadBtn
[appApiAction]="reuploadPromises[a.id]"
- [disabled]="reuploadBtn.loading"
+ [disabled]="$any(reuploadBtn).loading"
>
{{ "fix" | i18n }}
@@ -72,16 +76,16 @@
(click)="delete(a)"
#deleteBtn
[appApiAction]="deletePromises[a.id]"
- [disabled]="deleteBtn.loading"
+ [disabled]="$any(deleteBtn).loading"
>
diff --git a/apps/web/src/app/vault/bulk-share.component.html b/apps/web/src/app/vault/bulk-share.component.html
index 7b4ffe7a0a..fa84eb3f54 100644
--- a/apps/web/src/app/vault/bulk-share.component.html
+++ b/apps/web/src/app/vault/bulk-share.component.html
@@ -54,7 +54,7 @@
diff --git a/apps/web/src/app/vault/collections.component.html b/apps/web/src/app/vault/collections.component.html
index f7c8dd7b89..603e899c11 100644
--- a/apps/web/src/app/vault/collections.component.html
+++ b/apps/web/src/app/vault/collections.component.html
@@ -37,7 +37,7 @@
|
diff --git a/apps/web/src/app/vault/folder-add-edit.component.html b/apps/web/src/app/vault/folder-add-edit.component.html
index ea660594fd..1718f654d2 100644
--- a/apps/web/src/app/vault/folder-add-edit.component.html
+++ b/apps/web/src/app/vault/folder-add-edit.component.html
@@ -46,17 +46,17 @@
class="btn btn-outline-danger"
appA11yTitle="{{ 'delete' | i18n }}"
*ngIf="editMode"
- [disabled]="deleteBtn.loading"
+ [disabled]="$any(deleteBtn).loading"
[appApiAction]="deletePromise"
>
diff --git a/apps/web/src/app/vault/vault-filter/organization-filter/organization-filter.component.html b/apps/web/src/app/vault/vault-filter/organization-filter/organization-filter.component.html
index 9d5d8b45a7..81924ba643 100644
--- a/apps/web/src/app/vault/vault-filter/organization-filter/organization-filter.component.html
+++ b/apps/web/src/app/vault/vault-filter/organization-filter/organization-filter.component.html
@@ -167,7 +167,6 @@
diff --git a/apps/web/src/app/vault/vault-filter/shared/vault-filter-shared.module.ts b/apps/web/src/app/vault/vault-filter/shared/vault-filter-shared.module.ts
index b099655d66..d69181f570 100644
--- a/apps/web/src/app/vault/vault-filter/shared/vault-filter-shared.module.ts
+++ b/apps/web/src/app/vault/vault-filter/shared/vault-filter-shared.module.ts
@@ -1,6 +1,9 @@
import { NgModule } from "@angular/core";
import { SharedModule } from "../../../shared";
+import { LinkSsoComponent } from "../organization-filter/link-sso.component";
+import { OrganizationFilterComponent } from "../organization-filter/organization-filter.component";
+import { OrganizationOptionsComponent } from "../organization-filter/organization-options.component";
import { CollectionFilterComponent } from "./collection-filter/collection-filter.component";
import { FolderFilterComponent } from "./folder-filter/folder-filter.component";
@@ -15,6 +18,9 @@ import { VaultFilterService } from "./vault-filter.service";
FolderFilterComponent,
StatusFilterComponent,
TypeFilterComponent,
+ OrganizationFilterComponent,
+ OrganizationOptionsComponent,
+ LinkSsoComponent,
],
exports: [
SharedModule,
@@ -22,6 +28,9 @@ import { VaultFilterService } from "./vault-filter.service";
FolderFilterComponent,
StatusFilterComponent,
TypeFilterComponent,
+ OrganizationFilterComponent,
+ OrganizationOptionsComponent,
+ LinkSsoComponent,
],
providers: [VaultFilterService],
})
diff --git a/apps/web/src/app/vault/vault-filter/vault-filter.module.ts b/apps/web/src/app/vault/vault-filter/vault-filter.module.ts
index f325392094..8499b2580a 100644
--- a/apps/web/src/app/vault/vault-filter/vault-filter.module.ts
+++ b/apps/web/src/app/vault/vault-filter/vault-filter.module.ts
@@ -1,19 +1,11 @@
import { NgModule } from "@angular/core";
-import { LinkSsoComponent } from "./organization-filter/link-sso.component";
-import { OrganizationFilterComponent } from "./organization-filter/organization-filter.component";
-import { OrganizationOptionsComponent } from "./organization-filter/organization-options.component";
import { VaultFilterSharedModule } from "./shared/vault-filter-shared.module";
import { VaultFilterComponent } from "./vault-filter.component";
@NgModule({
imports: [VaultFilterSharedModule],
- declarations: [
- VaultFilterComponent,
- OrganizationFilterComponent,
- OrganizationOptionsComponent,
- LinkSsoComponent,
- ],
+ declarations: [VaultFilterComponent],
exports: [VaultFilterComponent],
})
export class VaultFilterModule {}
diff --git a/apps/web/src/app/vault/vault-items.component.html b/apps/web/src/app/vault/vault-items.component.html
index 1c24a96d2f..c46423833e 100644
--- a/apps/web/src/app/vault/vault-items.component.html
+++ b/apps/web/src/app/vault/vault-items.component.html
@@ -10,7 +10,7 @@
-
+
|
diff --git a/apps/web/src/app/vault/vault-items.component.ts b/apps/web/src/app/vault/vault-items.component.ts
index 4de11e2ead..9027c53d8c 100644
--- a/apps/web/src/app/vault/vault-items.component.ts
+++ b/apps/web/src/app/vault/vault-items.component.ts
@@ -289,6 +289,10 @@ export class VaultItemsComponent extends BaseVaultItemsComponent implements OnDe
this.onOrganzationBadgeClicked.emit(organizationId);
}
+ events(c: CipherView) {
+ // TODO: This should be removed but is needed since we reuse the same template
+ }
+
protected deleteCipher(id: string, permanent: boolean) {
return permanent
? this.cipherService.deleteWithServer(id)
diff --git a/apps/web/src/app/vault/vault.component.html b/apps/web/src/app/vault/vault.component.html
index fb4afb8386..73a9b981f7 100644
--- a/apps/web/src/app/vault/vault.component.html
+++ b/apps/web/src/app/vault/vault.component.html
@@ -21,7 +21,7 @@
{{ "vaultItems" | i18n }}
-
+
diff --git a/bitwarden_license/bit-web/src/app/organizations/manage/sso.component.ts b/bitwarden_license/bit-web/src/app/organizations/manage/sso.component.ts
index a268cbccf6..a03afe5d24 100644
--- a/bitwarden_license/bit-web/src/app/organizations/manage/sso.component.ts
+++ b/bitwarden_license/bit-web/src/app/organizations/manage/sso.component.ts
@@ -97,13 +97,13 @@ export class SsoComponent implements OnInit, OnDestroy {
spMetadataUrl: string;
spAcsUrl: string;
- private enabled = this.formBuilder.control(false);
+ protected enabled = this.formBuilder.control(false);
- private ssoIdentifier = this.formBuilder.control("", {
+ protected ssoIdentifier = this.formBuilder.control("", {
validators: [Validators.maxLength(50), Validators.required],
});
- private openIdForm = this.formBuilder.group>(
+ protected openIdForm = this.formBuilder.group>(
{
authority: new FormControl("", Validators.required),
clientId: new FormControl("", Validators.required),
@@ -126,7 +126,7 @@ export class SsoComponent implements OnInit, OnDestroy {
}
);
- private samlForm = this.formBuilder.group>(
+ protected samlForm = this.formBuilder.group>(
{
spNameIdFormat: new FormControl(Saml2NameIdFormat.NotConfigured),
spOutboundSigningAlgorithm: new FormControl(defaultSigningAlgorithm),
@@ -150,7 +150,7 @@ export class SsoComponent implements OnInit, OnDestroy {
}
);
- private ssoConfigForm = this.formBuilder.group>({
+ protected ssoConfigForm = this.formBuilder.group>({
configType: new FormControl(SsoType.None),
keyConnectorEnabled: new FormControl(false),
keyConnectorUrl: new FormControl(""),
diff --git a/bitwarden_license/bit-web/src/app/providers/manage/events.component.html b/bitwarden_license/bit-web/src/app/providers/manage/events.component.html
index d27b53e8d9..c64a572258 100644
--- a/bitwarden_license/bit-web/src/app/providers/manage/events.component.html
+++ b/bitwarden_license/bit-web/src/app/providers/manage/events.component.html
@@ -98,7 +98,7 @@
type="button"
class="btn btn-block btn-link btn-submit"
(click)="loadEvents(false)"
- [disabled]="loaded && moreBtn.loading"
+ [disabled]="loaded && $any(moreBtn).loading"
*ngIf="continuationToken"
>
diff --git a/bitwarden_license/bit-web/src/app/providers/manage/people.component.html b/bitwarden_license/bit-web/src/app/providers/manage/people.component.html
index 5eaa94303c..f76356bd36 100644
--- a/bitwarden_license/bit-web/src/app/providers/manage/people.component.html
+++ b/bitwarden_license/bit-web/src/app/providers/manage/people.component.html
@@ -149,7 +149,6 @@
{{ "providerAdmin" | i18n }}
{{ "serviceUser" | i18n }}
- {{ "custom" | i18n }}
|
diff --git a/libs/angular/src/components/add-edit.component.ts b/libs/angular/src/components/add-edit.component.ts
index 371cc8d575..7194b88295 100644
--- a/libs/angular/src/components/add-edit.component.ts
+++ b/libs/angular/src/components/add-edit.component.ts
@@ -23,6 +23,7 @@ import { SecureNoteType } from "@bitwarden/common/enums/secureNoteType";
import { UriMatchType } from "@bitwarden/common/enums/uriMatchType";
import { Utils } from "@bitwarden/common/misc/utils";
import { Cipher } from "@bitwarden/common/models/domain/cipher";
+import { Organization } from "@bitwarden/common/models/domain/organization";
import { CardView } from "@bitwarden/common/models/view/card.view";
import { CipherView } from "@bitwarden/common/models/view/cipher.view";
import { CollectionView } from "@bitwarden/common/models/view/collection.view";
@@ -74,6 +75,7 @@ export class AddEditComponent implements OnInit, OnDestroy {
allowPersonal = true;
reprompt = false;
canUseReprompt = true;
+ organization: Organization;
protected destroy$ = new Subject();
protected writeableCollections: CollectionView[];
diff --git a/libs/angular/src/components/attachments.component.ts b/libs/angular/src/components/attachments.component.ts
index 819ab43661..a484661be3 100644
--- a/libs/angular/src/components/attachments.component.ts
+++ b/libs/angular/src/components/attachments.component.ts
@@ -292,4 +292,8 @@ export class AttachmentsComponent implements OnInit {
protected deleteCipherAttachment(attachmentId: string) {
return this.cipherService.deleteAttachmentWithServer(this.cipher.id, attachmentId);
}
+
+ protected async reupload(attachment: AttachmentView) {
+ // TODO: This should be removed but is needed since we re-use the same template
+ }
}
diff --git a/libs/angular/src/components/user-verification.component.ts b/libs/angular/src/components/user-verification.component.ts
index 198a214c49..3234d353c1 100644
--- a/libs/angular/src/components/user-verification.component.ts
+++ b/libs/angular/src/components/user-verification.component.ts
@@ -1,6 +1,5 @@
-import { animate, style, transition, trigger } from "@angular/animations";
-import { Component, OnInit } from "@angular/core";
-import { ControlValueAccessor, NG_VALUE_ACCESSOR, FormControl } from "@angular/forms";
+import { Directive, OnInit } from "@angular/core";
+import { ControlValueAccessor, FormControl } from "@angular/forms";
import { KeyConnectorService } from "@bitwarden/common/abstractions/keyConnector.service";
import { UserVerificationService } from "@bitwarden/common/abstractions/userVerification/userVerification.service.abstraction";
@@ -14,21 +13,8 @@ import { Verification } from "@bitwarden/common/types/verification";
* This is exposed to the parent component via the ControlValueAccessor interface (e.g. bind it to a FormControl).
* Use UserVerificationService to verify the user's input.
*/
-@Component({
+@Directive({
selector: "app-user-verification",
- templateUrl: "user-verification.component.html",
- providers: [
- {
- provide: NG_VALUE_ACCESSOR,
- multi: true,
- useExisting: UserVerificationComponent,
- },
- ],
- animations: [
- trigger("sent", [
- transition(":enter", [style({ opacity: 0 }), animate("100ms", style({ opacity: 1 }))]),
- ]),
- ],
})
// eslint-disable-next-line rxjs-angular/prefer-takeuntil
export class UserVerificationComponent implements ControlValueAccessor, OnInit {
diff --git a/libs/angular/src/components/vault-items.component.ts b/libs/angular/src/components/vault-items.component.ts
index b0d51777cb..28df06890a 100644
--- a/libs/angular/src/components/vault-items.component.ts
+++ b/libs/angular/src/components/vault-items.component.ts
@@ -1,6 +1,7 @@
import { Directive, EventEmitter, Input, Output } from "@angular/core";
import { SearchService } from "@bitwarden/common/abstractions/search.service";
+import { Organization } from "@bitwarden/common/models/domain/organization";
import { CipherView } from "@bitwarden/common/models/view/cipher.view";
@Directive()
@@ -17,6 +18,8 @@ export class VaultItemsComponent {
searchPlaceholder: string = null;
filter: (cipher: CipherView) => boolean = null;
deleted = false;
+ organization: Organization;
+ accessEvents = false;
protected searchPending = false;
diff --git a/libs/angular/src/pipes/i18n.pipe.ts b/libs/angular/src/pipes/i18n.pipe.ts
index 730f439b46..afab9b8d02 100644
--- a/libs/angular/src/pipes/i18n.pipe.ts
+++ b/libs/angular/src/pipes/i18n.pipe.ts
@@ -8,7 +8,7 @@ import { I18nService } from "@bitwarden/common/abstractions/i18n.service";
export class I18nPipe implements PipeTransform {
constructor(private i18nService: I18nService) {}
- transform(id: string, p1?: string, p2?: string, p3?: string): string {
+ transform(id: string, p1?: string | number, p2?: string | number, p3?: string | number): string {
return this.i18nService.t(id, p1, p2, p3);
}
}
diff --git a/libs/common/src/abstractions/i18n.service.ts b/libs/common/src/abstractions/i18n.service.ts
index 23f2d4fd23..f4a9b8ceef 100644
--- a/libs/common/src/abstractions/i18n.service.ts
+++ b/libs/common/src/abstractions/i18n.service.ts
@@ -6,6 +6,6 @@ export abstract class I18nService {
translationLocale: string;
collator: Intl.Collator;
localeNames: Map;
- t: (id: string, p1?: string, p2?: string, p3?: string) => string;
+ t: (id: string, p1?: string | number, p2?: string | number, p3?: string | number) => string;
translate: (id: string, p1?: string, p2?: string, p3?: string) => string;
}
diff --git a/libs/common/src/services/i18n.service.ts b/libs/common/src/services/i18n.service.ts
index 5076e1dbdf..9fd39b092a 100644
--- a/libs/common/src/services/i18n.service.ts
+++ b/libs/common/src/services/i18n.service.ts
@@ -122,7 +122,7 @@ export class I18nService implements I18nServiceAbstraction {
return this.translate(id, p1, p2, p3);
}
- translate(id: string, p1?: string, p2?: string, p3?: string): string {
+ translate(id: string, p1?: string | number, p2?: string | number, p3?: string | number): string {
let result: string;
// eslint-disable-next-line
if (this.localeMessages.hasOwnProperty(id) && this.localeMessages[id]) {
@@ -136,13 +136,13 @@ export class I18nService implements I18nServiceAbstraction {
if (result !== "") {
if (p1 != null) {
- result = result.split("__$1__").join(p1);
+ result = result.split("__$1__").join(p1.toString());
}
if (p2 != null) {
- result = result.split("__$2__").join(p2);
+ result = result.split("__$2__").join(p2.toString());
}
if (p3 != null) {
- result = result.split("__$3__").join(p3);
+ result = result.split("__$3__").join(p3.toString());
}
}
diff --git a/libs/components/src/badge/badge.directive.ts b/libs/components/src/badge/badge.directive.ts
index 352da9c41f..c5482423e5 100644
--- a/libs/components/src/badge/badge.directive.ts
+++ b/libs/components/src/badge/badge.directive.ts
@@ -1,6 +1,6 @@
import { Directive, ElementRef, HostBinding, Input } from "@angular/core";
-type BadgeTypes = "primary" | "secondary" | "success" | "danger" | "warning" | "info";
+export type BadgeTypes = "primary" | "secondary" | "success" | "danger" | "warning" | "info";
const styles: Record = {
primary: ["tw-bg-primary-500"],
| | | |