mirror of
https://github.com/bitwarden/browser
synced 2025-12-15 07:43:35 +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,5 +1,3 @@
|
||||
// FIXME: Update this file to be type safe and remove this and next line
|
||||
// @ts-strict-ignore
|
||||
import {
|
||||
AfterContentChecked,
|
||||
booleanAttribute,
|
||||
@@ -73,11 +71,13 @@ export class AutofocusDirective implements AfterContentChecked {
|
||||
private focus() {
|
||||
const el = this.getElement();
|
||||
|
||||
el.focus();
|
||||
this.focused = el === document.activeElement;
|
||||
if (el) {
|
||||
el.focus();
|
||||
this.focused = el === document.activeElement;
|
||||
}
|
||||
}
|
||||
|
||||
private getElement() {
|
||||
private getElement(): HTMLElement | undefined {
|
||||
if (this.focusableElement) {
|
||||
return this.focusableElement.getFocusTarget();
|
||||
}
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
// FIXME: Update this file to be type safe and remove this and next line
|
||||
// @ts-strict-ignore
|
||||
import {
|
||||
Directive,
|
||||
ElementRef,
|
||||
@@ -63,7 +61,7 @@ export class BitInputDirective implements BitFormFieldControl {
|
||||
|
||||
readonly id = input(`bit-input-${nextId++}`);
|
||||
|
||||
@HostBinding("attr.aria-describedby") ariaDescribedBy: string;
|
||||
@HostBinding("attr.aria-describedby") ariaDescribedBy?: string;
|
||||
|
||||
@HostBinding("attr.aria-invalid") get ariaInvalid() {
|
||||
return this.hasError ? true : undefined;
|
||||
@@ -83,7 +81,7 @@ export class BitInputDirective implements BitFormFieldControl {
|
||||
set required(value: any) {
|
||||
this._required = value != null && value !== false;
|
||||
}
|
||||
private _required: boolean;
|
||||
private _required?: boolean;
|
||||
|
||||
readonly hasPrefix = input(false);
|
||||
readonly hasSuffix = input(false);
|
||||
@@ -101,19 +99,20 @@ export class BitInputDirective implements BitFormFieldControl {
|
||||
|
||||
get hasError() {
|
||||
if (this.showErrorsWhenDisabled()) {
|
||||
return (
|
||||
return !!(
|
||||
(this.ngControl?.status === "INVALID" || this.ngControl?.status === "DISABLED") &&
|
||||
this.ngControl?.touched &&
|
||||
this.ngControl?.errors != null
|
||||
);
|
||||
} else {
|
||||
return this.ngControl?.status === "INVALID" && this.ngControl?.touched;
|
||||
return !!(this.ngControl?.status === "INVALID" && this.ngControl?.touched);
|
||||
}
|
||||
}
|
||||
|
||||
get error(): [string, any] {
|
||||
const key = Object.keys(this.ngControl.errors)[0];
|
||||
return [key, this.ngControl.errors[key]];
|
||||
const errors = this.ngControl.errors ?? {};
|
||||
const key = Object.keys(errors)[0];
|
||||
return [key, errors[key]];
|
||||
}
|
||||
|
||||
constructor(
|
||||
|
||||
Reference in New Issue
Block a user