From a5af85fa18ccd02bb451fc3c7bec26a4b4db1f5d Mon Sep 17 00:00:00 2001 From: ilhan007 Date: Mon, 18 Dec 2023 17:37:48 +0200 Subject: [PATCH] fix(ui5-menu): fix runtime js error on `getElementById` call - adds a check to guarantee getElementById is called only if existing --- packages/main/src/Menu.ts | 10 +++- packages/main/test/pages/Menu.html | 73 +++++++++--------------- packages/main/test/pages/styles/Menu.css | 8 +++ 3 files changed, 42 insertions(+), 49 deletions(-) diff --git a/packages/main/src/Menu.ts b/packages/main/src/Menu.ts index 373d4fd4f197..ad1584ad7f17 100644 --- a/packages/main/src/Menu.ts +++ b/packages/main/src/Menu.ts @@ -384,10 +384,9 @@ class Menu extends UI5Element { if (!this.opener) { return; } - if (this.open) { - const rootNode = this.getRootNode() as Document; - const opener = this.opener instanceof HTMLElement ? this.opener : rootNode && rootNode.getElementById(this.opener); + if (this.open) { + const opener = this.getOpener(); if (opener) { this.showAt(opener); } @@ -444,6 +443,11 @@ class Menu extends UI5Element { return this._popover; } + getOpener() { + const rootNode = this.getRootNode() as Document; + return this.opener instanceof HTMLElement ? this.opener : (rootNode && rootNode.getElementById && rootNode.getElementById(this.opener)); + } + _navigateBack() { const parentMenuItem = this._parentItemsStack.pop(); diff --git a/packages/main/test/pages/Menu.html b/packages/main/test/pages/Menu.html index 7f87585f3ab9..7578a0d8bb41 100644 --- a/packages/main/test/pages/Menu.html +++ b/packages/main/test/pages/Menu.html @@ -12,7 +12,7 @@ - + Open Menu
@@ -39,51 +39,32 @@ -
-

Clicked menu item text

-
- -
- -
- -
-

Text Direction

-
-
- -
- -
-

Prevent "before-open" event

-
-
- -
- -
-

Prevent "before-close" event

-
-
- -
- -
-

open/opener

-
-
- Add opener - Remove opener - Toggle open
- -
- -
-

Event logger

-
-
- -
+ Clicked menu item text + + + Text Direction + + + Prevent "before-open" event + + + Prevent "before-close" event + + + open/opener + Add opener + Remove opener + Toggle open
+ + + Event logger + + + Test menu and opener removal + Opens menu and removes it after 100ms + + +