Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
ca75998
test(multiple): more strict initialization failures in CDK tests
crisbeto Dec 16, 2025
327677d
refactor(material/autocomplete): fix strict property initialization e…
crisbeto Dec 16, 2025
8a3278f
refactor(material/badge): fix strict property initialization errors
crisbeto Dec 16, 2025
7213fa5
refactor(material/bottom-sheet): fix strict property initialization e…
crisbeto Dec 16, 2025
f41e3ff
refactor(material/button): fix strict property initialization errors
crisbeto Dec 16, 2025
92bd693
refactor(material/button-toggle): fix strict property initialization …
crisbeto Dec 16, 2025
bb215e6
refactor(material/checkbox): fix strict property initialization errors
crisbeto Dec 16, 2025
4983a86
refactor(material/chips): fix strict property initialization errors
crisbeto Dec 16, 2025
c523a7a
refactor(material/core): fix strict property initialization errors
crisbeto Dec 16, 2025
14aef1d
refactor(material/datepicker): fix strict property initialization errors
crisbeto Dec 16, 2025
a4cee89
refactor(material/dialog): fix strict property initialization errors
crisbeto Dec 16, 2025
ea1a414
refactor(material/divider): fix strict property initialization errors
crisbeto Dec 16, 2025
7913155
refactor(material/expansion): fix strict property initialization errors
crisbeto Dec 16, 2025
fe3030f
refactor(material/form-field): fix strict property initialization errors
crisbeto Dec 16, 2025
a4790ea
refactor(material/grid-list): fix strict property initialization errors
crisbeto Dec 16, 2025
9168c55
refactor(material/icon): fix strict property initialization errors
crisbeto Dec 16, 2025
a6544ee
refactor(material/input): fix strict property initialization errors
crisbeto Dec 16, 2025
40180ec
refactor(material/list): fix strict property initialization errors
crisbeto Dec 16, 2025
7a7e186
refactor(material/menu): fix strict property initialization errors
crisbeto Dec 16, 2025
f5c1028
refactor(material/paginator): fix strict property initialization errors
crisbeto Dec 16, 2025
4655f6c
refactor(material/progress-spinner): fix strict property initializati…
crisbeto Dec 16, 2025
92b1cc2
refactor(material/radio): fix strict property initialization errors
crisbeto Dec 16, 2025
0976b20
refactor(material/select): fix strict property initialization errors
crisbeto Dec 16, 2025
a2a8511
refactor(material/sidenav): fix strict property initialization errors
crisbeto Dec 16, 2025
d9f3855
refactor(material/slide-toggle): fix strict property initialization e…
crisbeto Dec 16, 2025
2ca6c84
refactor(material/slider): fix strict property initialization errors
crisbeto Dec 16, 2025
29f110c
refactor(material/snack-bar): fix strict property initialization errors
crisbeto Dec 16, 2025
cbf56c5
refactor(material/sort): fix strict property initialization errors
crisbeto Dec 16, 2025
aad26eb
refactor(material/stepper): fix strict property initialization errors
crisbeto Dec 16, 2025
6a9b0a6
refactor(material/table): fix strict property initialization errors
crisbeto Dec 16, 2025
e5ffea4
refactor(material/tabs): fix strict property initialization errors
crisbeto Dec 16, 2025
ad0cb89
refactor(material/timepicker): fix strict property initialization errors
crisbeto Dec 16, 2025
35b3a4a
refactor(material/toolbar): fix strict property initialization errors
crisbeto Dec 16, 2025
dbea671
refactor(material/tooltip): fix strict property initialization errors
crisbeto Dec 16, 2025
56c5874
refactor(material/tree): fix strict property initialization errors
crisbeto Dec 16, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions src/cdk/a11y/aria-describer/aria-describer.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -400,22 +400,22 @@ function expectMessage(el: Element, message: string) {
class TestApp {
ariaDescriber = inject(AriaDescriber);

@ViewChild('element1') _element1: ElementRef<HTMLElement>;
@ViewChild('element1') _element1!: ElementRef<HTMLElement>;
get element1(): Element {
return this._element1.nativeElement;
}

@ViewChild('element2') _element2: ElementRef<HTMLElement>;
@ViewChild('element2') _element2!: ElementRef<HTMLElement>;
get element2(): Element {
return this._element2.nativeElement;
}

@ViewChild('element3') _element3: ElementRef<HTMLElement>;
@ViewChild('element3') _element3!: ElementRef<HTMLElement>;
get element3(): Element {
return this._element3.nativeElement;
}

@ViewChild('element4') _element4: ElementRef<HTMLElement>;
@ViewChild('element4') _element4!: ElementRef<HTMLElement>;
get element4(): Element {
return this._element4.nativeElement;
}
Expand Down
2 changes: 1 addition & 1 deletion src/cdk/a11y/focus-monitor/focus-monitor.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -920,5 +920,5 @@ class CheckboxWithLabel {}
imports: [A11yModule],
})
class ExportedFocusMonitor {
@ViewChild('exportedDir') exportedDirRef: CdkMonitorFocus;
@ViewChild('exportedDir') exportedDirRef!: CdkMonitorFocus;
}
18 changes: 9 additions & 9 deletions src/cdk/a11y/focus-trap/focus-trap.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -325,7 +325,7 @@ function getActiveElement() {
imports: [A11yModule, PortalModule],
})
class SimpleFocusTrap {
@ViewChild(CdkTrapFocus) focusTrapDirective: CdkTrapFocus;
@ViewChild(CdkTrapFocus) focusTrapDirective!: CdkTrapFocus;
}

const AUTO_FOCUS_TEMPLATE = `
Expand All @@ -343,7 +343,7 @@ const AUTO_FOCUS_TEMPLATE = `
imports: [A11yModule, PortalModule],
})
class FocusTrapWithAutoCapture {
@ViewChild(CdkTrapFocus) focusTrapDirective: CdkTrapFocus;
@ViewChild(CdkTrapFocus) focusTrapDirective!: CdkTrapFocus;
showTrappedRegion = false;
autoCaptureEnabled = true;
}
Expand All @@ -367,7 +367,7 @@ class FocusTrapWithAutoCaptureInShadowDom extends FocusTrapWithAutoCapture {}
imports: [A11yModule, PortalModule],
})
class FocusTrapWithBindings {
@ViewChild(CdkTrapFocus) focusTrapDirective: CdkTrapFocus;
@ViewChild(CdkTrapFocus) focusTrapDirective!: CdkTrapFocus;
renderFocusTrap = true;
_isFocusTrapEnabled = true;
}
Expand All @@ -387,7 +387,7 @@ class FocusTrapWithBindings {
imports: [A11yModule, PortalModule],
})
class FocusTrapTargets {
@ViewChild(CdkTrapFocus) focusTrapDirective: CdkTrapFocus;
@ViewChild(CdkTrapFocus) focusTrapDirective!: CdkTrapFocus;
}

@Component({
Expand All @@ -399,7 +399,7 @@ class FocusTrapTargets {
imports: [A11yModule, PortalModule],
})
class FocusTrapUnfocusableTarget {
@ViewChild(CdkTrapFocus) focusTrapDirective: CdkTrapFocus;
@ViewChild(CdkTrapFocus) focusTrapDirective!: CdkTrapFocus;
}

@Component({
Expand All @@ -413,7 +413,7 @@ class FocusTrapUnfocusableTarget {
imports: [A11yModule, PortalModule],
})
class FocusTrapWithSvg {
@ViewChild(CdkTrapFocus) focusTrapDirective: CdkTrapFocus;
@ViewChild(CdkTrapFocus) focusTrapDirective!: CdkTrapFocus;
}

@Component({
Expand All @@ -425,7 +425,7 @@ class FocusTrapWithSvg {
imports: [A11yModule, PortalModule],
})
class FocusTrapWithoutFocusableElements {
@ViewChild(CdkTrapFocus) focusTrapDirective: CdkTrapFocus;
@ViewChild(CdkTrapFocus) focusTrapDirective!: CdkTrapFocus;
}

@Component({
Expand All @@ -445,6 +445,6 @@ class FocusTrapWithoutFocusableElements {
class FocusTrapInsidePortal {
viewContainerRef = inject(ViewContainerRef);

@ViewChild('template') template: TemplateRef<any>;
@ViewChild(CdkPortalOutlet) portalOutlet: CdkPortalOutlet;
@ViewChild('template') template!: TemplateRef<any>;
@ViewChild(CdkPortalOutlet) portalOutlet!: CdkPortalOutlet;
}
8 changes: 4 additions & 4 deletions src/cdk/accordion/accordion.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -111,8 +111,8 @@ describe('CdkAccordion', () => {
imports: [CdkAccordionModule],
})
class SetOfItems {
@ViewChild(CdkAccordion) accordion: CdkAccordion;
@ViewChildren(CdkAccordionItem) items: QueryList<CdkAccordionItem>;
@ViewChild(CdkAccordion) accordion!: CdkAccordion;
@ViewChildren(CdkAccordionItem) items!: QueryList<CdkAccordionItem>;
multi: boolean = false;
}

Expand All @@ -126,6 +126,6 @@ class SetOfItems {
imports: [CdkAccordionModule],
})
class NestedItems {
@ViewChild('outerItem') outerItem: CdkAccordionItem;
@ViewChild('innerItem') innerItem: CdkAccordionItem;
@ViewChild('outerItem') outerItem!: CdkAccordionItem;
@ViewChild('innerItem') innerItem!: CdkAccordionItem;
}
12 changes: 6 additions & 6 deletions src/cdk/dialog/dialog.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1414,7 +1414,7 @@ class ComponentWithOnPushViewContainer {
imports: [DirectiveWithViewContainer],
})
class ComponentWithChildViewContainer {
@ViewChild(DirectiveWithViewContainer) childWithViewContainer: DirectiveWithViewContainer;
@ViewChild(DirectiveWithViewContainer) childWithViewContainer!: DirectiveWithViewContainer;

get childViewContainer() {
return this.childWithViewContainer.viewContainerRef;
Expand All @@ -1428,10 +1428,10 @@ class ComponentWithChildViewContainer {
imports: [DialogModule],
})
class ComponentWithTemplateRef {
localValue: string;
dialogRef: DialogRef<any>;
localValue = '';
dialogRef: DialogRef<any> | undefined;

@ViewChild(TemplateRef) templateRef: TemplateRef<any>;
@ViewChild(TemplateRef) templateRef!: TemplateRef<any>;

setDialogRef(dialogRef: DialogRef<any>): string {
this.dialogRef = dialogRef;
Expand Down Expand Up @@ -1461,7 +1461,7 @@ class PizzaMsg {
},
})
class ContentElementDialog {
closeButtonAriaLabel: string;
closeButtonAriaLabel = '';
}

@Component({
Expand Down Expand Up @@ -1521,6 +1521,6 @@ class TemplateInjectorInnerDirective {
imports: [TemplateInjectorInnerDirective],
})
class TemplateInjectorParentComponent {
@ViewChild(TemplateRef) templateRef: TemplateRef<any>;
@ViewChild(TemplateRef) templateRef!: TemplateRef<any>;
innerComponentValue = '';
}
2 changes: 1 addition & 1 deletion src/cdk/menu/menu-group.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -142,5 +142,5 @@ class CheckboxMenu {
imports: [CdkMenuModule],
})
class MenuWithMultipleRadioGroups {
@ViewChild(CdkMenuItem) readonly trigger: CdkMenuItem;
@ViewChild(CdkMenuItem) readonly trigger!: CdkMenuItem;
}
2 changes: 1 addition & 1 deletion src/cdk/overlay/fullscreen-overlay-container.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -111,5 +111,5 @@ describe('FullscreenOverlayContainer', () => {
class TestComponentWithTemplatePortals {
viewContainerRef = inject(ViewContainerRef);

@ViewChild(CdkPortal) templatePortal: CdkPortal;
@ViewChild(CdkPortal) templatePortal!: CdkPortal;
}
2 changes: 1 addition & 1 deletion src/cdk/overlay/overlay-container.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -87,5 +87,5 @@ describe('OverlayContainer', () => {
class TestComponentWithTemplatePortals {
viewContainerRef = inject(ViewContainerRef);

@ViewChild(CdkPortal) templatePortal: CdkPortal;
@ViewChild(CdkPortal) templatePortal!: CdkPortal;
}
48 changes: 24 additions & 24 deletions src/cdk/overlay/overlay-directives.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -791,38 +791,38 @@ describe('Overlay directives', () => {
imports: [OverlayModule],
})
class ConnectedOverlayDirectiveTest {
@ViewChild(CdkConnectedOverlay) connectedOverlayDirective: CdkConnectedOverlay;
@ViewChild('trigger') trigger: CdkOverlayOrigin;
@ViewChild('otherTrigger') otherTrigger: CdkOverlayOrigin;
@ViewChild('nonDirectiveTrigger') nonDirectiveTrigger: ElementRef<HTMLElement>;
@ViewChild(CdkConnectedOverlay) connectedOverlayDirective!: CdkConnectedOverlay;
@ViewChild('trigger') trigger!: CdkOverlayOrigin;
@ViewChild('otherTrigger') otherTrigger!: CdkOverlayOrigin;
@ViewChild('nonDirectiveTrigger') nonDirectiveTrigger!: ElementRef<HTMLElement>;

isOpen = false;
width: number | string;
height: number | string;
minWidth: number | string;
positionStrategy: FlexibleConnectedPositionStrategy;
minHeight: number | string;
offsetX: number;
offsetY: number;
triggerOverride: CdkOverlayOrigin | FlexibleConnectedPositionStrategyOrigin;
hasBackdrop: boolean;
disableClose: boolean;
viewportMargin: number;
flexibleDimensions: boolean;
growAfterOpen: boolean;
push: boolean;
scrollStrategy: ScrollStrategy;
width!: number | string;
height!: number | string;
minWidth!: number | string;
positionStrategy!: FlexibleConnectedPositionStrategy;
minHeight!: number | string;
offsetX!: number;
offsetY!: number;
triggerOverride!: CdkOverlayOrigin | FlexibleConnectedPositionStrategyOrigin;
hasBackdrop!: boolean;
disableClose!: boolean;
viewportMargin!: number;
flexibleDimensions!: boolean;
growAfterOpen!: boolean;
push!: boolean;
scrollStrategy!: ScrollStrategy;
backdropClickHandler = jasmine.createSpy('backdropClick handler');
positionChangeHandler = jasmine.createSpy('positionChange handler');
keydownHandler = jasmine.createSpy('keydown handler');
positionOverrides: ConnectionPositionPair[];
positionOverrides!: ConnectionPositionPair[];
attachHandler = jasmine.createSpy('attachHandler').and.callFake(() => {
const overlayElement = this.connectedOverlayDirective.overlayRef.overlayElement;
this.attachResult = overlayElement.querySelector('p') as HTMLElement;
});
detachHandler = jasmine.createSpy('detachHandler');
attachResult: HTMLElement;
transformOriginSelector: string;
attachResult!: HTMLElement;
transformOriginSelector!: string;
matchWidth = false;
}

Expand All @@ -834,6 +834,6 @@ class ConnectedOverlayDirectiveTest {
imports: [OverlayModule],
})
class ConnectedOverlayPropertyInitOrder {
@ViewChild(CdkConnectedOverlay) connectedOverlayDirective: CdkConnectedOverlay;
@ViewChild('trigger') trigger: CdkOverlayOrigin;
@ViewChild(CdkConnectedOverlay) connectedOverlayDirective!: CdkConnectedOverlay;
@ViewChild('trigger') trigger!: CdkOverlayOrigin;
}
44 changes: 22 additions & 22 deletions src/cdk/overlay/overlay-directives.zone.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -77,36 +77,36 @@ describe('Overlay directives Zone.js integration', () => {
imports: [OverlayModule],
})
class ConnectedOverlayDirectiveTest {
@ViewChild(CdkConnectedOverlay) connectedOverlayDirective: CdkConnectedOverlay;
@ViewChild('trigger') trigger: CdkOverlayOrigin;
@ViewChild('otherTrigger') otherTrigger: CdkOverlayOrigin;
@ViewChild('nonDirectiveTrigger') nonDirectiveTrigger: ElementRef<HTMLElement>;
@ViewChild(CdkConnectedOverlay) connectedOverlayDirective!: CdkConnectedOverlay;
@ViewChild('trigger') trigger!: CdkOverlayOrigin;
@ViewChild('otherTrigger') otherTrigger!: CdkOverlayOrigin;
@ViewChild('nonDirectiveTrigger') nonDirectiveTrigger!: ElementRef<HTMLElement>;

isOpen = false;
width: number | string;
height: number | string;
minWidth: number | string;
positionStrategy: FlexibleConnectedPositionStrategy;
minHeight: number | string;
offsetX: number;
offsetY: number;
triggerOverride: CdkOverlayOrigin | FlexibleConnectedPositionStrategyOrigin;
hasBackdrop: boolean;
disableClose: boolean;
viewportMargin: number;
flexibleDimensions: boolean;
growAfterOpen: boolean;
push: boolean;
scrollStrategy: ScrollStrategy;
width!: number | string;
height!: number | string;
minWidth!: number | string;
positionStrategy!: FlexibleConnectedPositionStrategy;
minHeight!: number | string;
offsetX!: number;
offsetY!: number;
triggerOverride!: CdkOverlayOrigin | FlexibleConnectedPositionStrategyOrigin;
hasBackdrop!: boolean;
disableClose!: boolean;
viewportMargin!: number;
flexibleDimensions!: boolean;
growAfterOpen!: boolean;
push!: boolean;
scrollStrategy!: ScrollStrategy;
backdropClickHandler = jasmine.createSpy('backdropClick handler');
positionChangeHandler = jasmine.createSpy('positionChange handler');
keydownHandler = jasmine.createSpy('keydown handler');
positionOverrides: ConnectionPositionPair[];
positionOverrides!: ConnectionPositionPair[];
attachHandler = jasmine.createSpy('attachHandler').and.callFake(() => {
const overlayElement = this.connectedOverlayDirective.overlayRef.overlayElement;
this.attachResult = overlayElement.querySelector('p') as HTMLElement;
});
detachHandler = jasmine.createSpy('detachHandler');
attachResult: HTMLElement;
transformOriginSelector: string;
attachResult!: HTMLElement;
transformOriginSelector!: string;
}
2 changes: 1 addition & 1 deletion src/cdk/overlay/overlay.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1131,7 +1131,7 @@ class PizzaMsg {}
class TestComponentWithTemplatePortals {
viewContainerRef = inject(ViewContainerRef);

@ViewChild(CdkPortal) templatePortal: CdkPortal;
@ViewChild(CdkPortal) templatePortal!: CdkPortal;
}

class FakePositionStrategy implements PositionStrategy {
Expand Down
16 changes: 8 additions & 8 deletions src/cdk/portal/portal.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -779,8 +779,8 @@ class ArbitraryViewContainerRefComponent {
viewContainerRef = inject(ViewContainerRef);
injector = inject(Injector);

@ViewChild('template') template: TemplateRef<any>;
@ViewChild(SaveParentNodeOnInit) saveParentNodeOnInit: SaveParentNodeOnInit;
@ViewChild('template') template!: TemplateRef<any>;
@ViewChild(SaveParentNodeOnInit) saveParentNodeOnInit!: SaveParentNodeOnInit;
}

/** Test-bed component that contains a portal outlet and a couple of template portals. */
Expand Down Expand Up @@ -820,12 +820,12 @@ class PortalTestApp {
viewContainerRef = inject(ViewContainerRef);
injector = inject(Injector);

@ViewChildren(CdkPortal) portals: QueryList<CdkPortal>;
@ViewChild(CdkPortalOutlet) portalOutlet: CdkPortalOutlet;
@ViewChild('templateRef', {read: TemplateRef}) templateRef: TemplateRef<any>;
@ViewChild('domPortalContent') domPortalContent: ElementRef<HTMLElement>;
@ViewChildren(CdkPortal) portals!: QueryList<CdkPortal>;
@ViewChild(CdkPortalOutlet) portalOutlet!: CdkPortalOutlet;
@ViewChild('templateRef', {read: TemplateRef}) templateRef!: TemplateRef<any>;
@ViewChild('domPortalContent') domPortalContent!: ElementRef<HTMLElement>;
@ViewChild('alternateContainer', {read: ViewContainerRef})
alternateContainer: ViewContainerRef;
alternateContainer!: ViewContainerRef;

selectedPortal: Portal<any> | undefined;
fruit: string = 'Banana';
Expand Down Expand Up @@ -859,5 +859,5 @@ class PortalTestApp {
imports: [CdkPortalOutlet],
})
class UnboundPortalTestApp {
@ViewChild(CdkPortalOutlet) portalOutlet: CdkPortalOutlet;
@ViewChild(CdkPortalOutlet) portalOutlet!: CdkPortalOutlet;
}
6 changes: 3 additions & 3 deletions src/cdk/scrolling/scroll-dispatcher.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -261,8 +261,8 @@ describe('ScrollDispatcher', () => {
imports: [ScrollingModule],
})
class ScrollingComponent {
@ViewChild(CdkScrollable) scrollable: CdkScrollable;
@ViewChild('scrollingElement') scrollingElement: ElementRef<HTMLElement>;
@ViewChild(CdkScrollable) scrollable!: CdkScrollable;
@ViewChild('scrollingElement') scrollingElement!: ElementRef<HTMLElement>;
}

/** Component containing nested scrollables. */
Expand All @@ -279,5 +279,5 @@ class ScrollingComponent {
imports: [ScrollingModule],
})
class NestedScrollingComponent {
@ViewChild('interestingElement') interestingElement: ElementRef<HTMLElement>;
@ViewChild('interestingElement') interestingElement!: ElementRef<HTMLElement>;
}
4 changes: 2 additions & 2 deletions src/cdk/scrolling/scroll-dispatcher.zone.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,6 @@ describe('ScrollDispatcher Zone.js integration', () => {
imports: [ScrollingModule],
})
class ScrollingComponent {
@ViewChild(CdkScrollable) scrollable: CdkScrollable;
@ViewChild('scrollingElement') scrollingElement: ElementRef<HTMLElement>;
@ViewChild(CdkScrollable) scrollable!: CdkScrollable;
@ViewChild('scrollingElement') scrollingElement!: ElementRef<HTMLElement>;
}
Loading
Loading