From c8f1db96824f863b4ed0563d81aeaa3d10cd0475 Mon Sep 17 00:00:00 2001 From: Bryan Cunningham Date: Fri, 9 Jan 2026 13:16:01 -0500 Subject: [PATCH] reduce amount of menuitem type casting --- libs/components/src/menu/menu.component.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/libs/components/src/menu/menu.component.ts b/libs/components/src/menu/menu.component.ts index ee3ce53f6e1..69b15e8d41e 100644 --- a/libs/components/src/menu/menu.component.ts +++ b/libs/components/src/menu/menu.component.ts @@ -1,4 +1,4 @@ -import { FocusKeyManager, CdkTrapFocus, FocusableOption } from "@angular/cdk/a11y"; +import { FocusKeyManager, CdkTrapFocus } from "@angular/cdk/a11y"; import { Component, Output, @@ -34,11 +34,12 @@ export class MenuComponent implements AfterContentInit { ngAfterContentInit() { if (this.ariaRole() === "menu") { - this.keyManager = new FocusKeyManager( - this.menuItems() as unknown as (FocusableOption & MenuItemComponent)[], - ) + // Type cast is necessary because MenuItemComponent.disabled is a ModelSignal + // to satisfy ButtonLikeAbstraction, but FocusKeyManager expects disabled?: boolean. + // The skipPredicate correctly calls disabled() to read the signal value. + this.keyManager = new FocusKeyManager(this.menuItems() as any) .withWrap() - .skipPredicate((item) => !!(item as MenuItemComponent).disabled()); + .skipPredicate((item: MenuItemComponent) => !!item.disabled()); } } }