Skip to content

Commit 3e68c57

Browse files
fix(ui5-menu): fix menu item type fix (#11129)
Before: When used in SideNavigation, the item doesn't have "ui5-menu-item" attribute, because it's a subclass of MenuItem and the navigation checks are failing. After: We check with a getter done in the MenuItem class, so even if the class is extended, we will have the correct results in these checks. fixes: #10933
1 parent 410f4d2 commit 3e68c57

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

packages/main/src/Menu.ts

+7-3
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ class Menu extends UI5Element {
302302
// respect mouseover only on desktop
303303
const item = e.target as MenuItem;
304304

305-
if (item.hasAttribute("ui5-menu-item")) {
305+
if (this._isInstanceOfMenuItem(item)) {
306306
item.focus();
307307

308308
// Opens submenu with 300ms delay
@@ -359,9 +359,9 @@ class Menu extends UI5Element {
359359
const parentElement = item.parentElement as MenuItem;
360360
const shouldItemNavigation = isUp(e) || isDown(e);
361361
const shouldOpenMenu = this.isRtl ? isLeft(e) : isRight(e);
362-
const shouldCloseMenu = !shouldItemNavigation && !shouldOpenMenu && parentElement.hasAttribute("ui5-menu-item");
362+
const shouldCloseMenu = !shouldItemNavigation && !shouldOpenMenu && this._isInstanceOfMenuItem(parentElement);
363363

364-
if (item.hasAttribute("ui5-menu-item")) {
364+
if (this._isInstanceOfMenuItem(item)) {
365365
if (isEnter(e) || isTabNextPrevious) {
366366
e.preventDefault();
367367
}
@@ -420,6 +420,10 @@ class Menu extends UI5Element {
420420
this.open = false;
421421
this.fireDecoratorEvent("close");
422422
}
423+
424+
_isInstanceOfMenuItem(object: any): object is MenuItem {
425+
return "isMenuItem" in object;
426+
}
423427
}
424428

425429
Menu.define();

packages/main/src/MenuItem.ts

+4
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,10 @@ class MenuItem extends ListItem implements IMenuItem {
430430
_afterPopoverClose() {
431431
this.fireDecoratorEvent("close");
432432
}
433+
434+
get isMenuItem(): boolean {
435+
return true;
436+
}
433437
}
434438

435439
MenuItem.define();

0 commit comments

Comments
 (0)