From 84f085394b02d6ac92dff43cf62fc32ebef82e4a Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Sun, 26 Jul 2026 19:11:52 +0200 Subject: [PATCH] fix(multiple): avoid instanceof checks in aria directives We were using `instanceof HTMLElement` in a few Aria directives. This excludes SVG elements and can be problematic for SSR. Fixes #33586. --- src/aria/private/listbox/listbox.ts | 4 ++-- src/aria/private/tabs/tabs.ts | 4 ++-- src/aria/private/tree/tree.ts | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/aria/private/listbox/listbox.ts b/src/aria/private/listbox/listbox.ts index c6079f78fbf0..12562c9a02a6 100644 --- a/src/aria/private/listbox/listbox.ts +++ b/src/aria/private/listbox/listbox.ts @@ -292,11 +292,11 @@ export class ListboxPattern { } protected _getItem(e: PointerEvent) { - if (!(e.target instanceof HTMLElement)) { + if (!e.target) { return; } - const element = e.target.closest('[role="option"]'); + const element = (e.target as Element).closest('[role="option"]'); return this.inputs.items().find(i => i.element() === element); } } diff --git a/src/aria/private/tabs/tabs.ts b/src/aria/private/tabs/tabs.ts index 91e009e53621..028c07efc098 100644 --- a/src/aria/private/tabs/tabs.ts +++ b/src/aria/private/tabs/tabs.ts @@ -296,11 +296,11 @@ export class TabListPattern { /** Returns the tab item associated with the given pointer event. */ private _getItem(e: PointerEvent) { - if (!(e.target instanceof HTMLElement)) { + if (!e.target) { return; } - const element = e.target.closest('[role="tab"]'); + const element = (e.target as Element).closest('[role="tab"]'); return this.inputs.items().find(i => i.element() === element); } } diff --git a/src/aria/private/tree/tree.ts b/src/aria/private/tree/tree.ts index d97782f7b50b..f235040eaecd 100644 --- a/src/aria/private/tree/tree.ts +++ b/src/aria/private/tree/tree.ts @@ -479,10 +479,10 @@ export class TreePattern implements TreeInputs { /** Retrieves the TreeItemPattern associated with a DOM event, if any. */ protected _getItem(event: Event): TreeItemPattern | undefined { - if (!(event.target instanceof HTMLElement)) { + if (!event.target) { return; } - const element = event.target.closest('[role="treeitem"]'); + const element = (event.target as Element).closest('[role="treeitem"]'); return this.inputs.items().find(i => i.element() === element); } }