mirror of
https://github.com/bitwarden/browser
synced 2025-12-25 20:53:22 +00:00
[PM-15847] libs/components strict migration (#15738)
This PR migrates `libs/components` to use strict TypeScript. - Remove `@ts-strict-ignore` from each file in `libs/components` and resolved any new compilation errors - Converted ViewChild and ContentChild decorators to use the new signal-based queries using the [Angular signal queries migration](https://angular.dev/reference/migrations/signal-queries) - Made view/content children `required` where appropriate, eliminating the need for additional null checking. This helped simplify the strict migration. --- Co-authored-by: Vicki League <vleague@bitwarden.com>
This commit is contained in:
@@ -1,8 +1,6 @@
|
||||
import { Directive, Optional } from "@angular/core";
|
||||
import { Directive, inject, model } from "@angular/core";
|
||||
|
||||
import { LogService } from "@bitwarden/common/platform/abstractions/log.service";
|
||||
import { ValidationService } from "@bitwarden/common/platform/abstractions/validation.service";
|
||||
import { BitActionDirective, ButtonLikeAbstraction } from "@bitwarden/components";
|
||||
import { BitActionDirective, FunctionReturningAwaitable } from "@bitwarden/components";
|
||||
|
||||
import { PopupRouterCacheService } from "../view-cache/popup-router-cache.service";
|
||||
|
||||
@@ -11,15 +9,10 @@ import { PopupRouterCacheService } from "../view-cache/popup-router-cache.servic
|
||||
selector: "[popupBackAction]",
|
||||
})
|
||||
export class PopupBackBrowserDirective extends BitActionDirective {
|
||||
constructor(
|
||||
buttonComponent: ButtonLikeAbstraction,
|
||||
private router: PopupRouterCacheService,
|
||||
@Optional() validationService?: ValidationService,
|
||||
@Optional() logService?: LogService,
|
||||
) {
|
||||
super(buttonComponent, validationService, logService);
|
||||
|
||||
// override `bitAction` input; the parent handles the rest
|
||||
this.handler.set(() => this.router.back());
|
||||
}
|
||||
private routerCacheService = inject(PopupRouterCacheService);
|
||||
// Override the required input to make it optional since we set it automatically
|
||||
override readonly handler = model<FunctionReturningAwaitable>(
|
||||
() => this.routerCacheService.back(),
|
||||
{ alias: "popupBackAction" },
|
||||
);
|
||||
}
|
||||
|
||||
@@ -343,7 +343,7 @@ export default {
|
||||
generator: "Generator",
|
||||
send: "Send",
|
||||
settings: "Settings",
|
||||
labelWithNotification: (label: string) => `${label}: New Notification`,
|
||||
labelWithNotification: (label: string | undefined) => `${label}: New Notification`,
|
||||
});
|
||||
},
|
||||
},
|
||||
|
||||
@@ -179,7 +179,7 @@ type Story = StoryObj<
|
||||
const Template: Story = {
|
||||
render: (args) => ({
|
||||
props: args,
|
||||
template: `
|
||||
template: /*html*/ `
|
||||
<router-outlet [mockOrgs]="mockOrgs" [mockProviders]="mockProviders"></router-outlet>
|
||||
<div class="tw-flex tw-gap-[200px]">
|
||||
<div>
|
||||
@@ -191,7 +191,7 @@ const Template: Story = {
|
||||
<product-switcher-content #content></product-switcher-content>
|
||||
<div class="tw-h-40">
|
||||
<div class="cdk-overlay-pane bit-menu-panel">
|
||||
<ng-container *ngTemplateOutlet="content?.menu?.templateRef"></ng-container>
|
||||
<ng-container *ngTemplateOutlet="content?.menu?.templateRef()"></ng-container>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user