diff --git a/packages/fiori/src/SideNavigationGroupTemplate.tsx b/packages/fiori/src/SideNavigationGroupTemplate.tsx
index c99faed43c5b..8374de6fcc47 100644
--- a/packages/fiori/src/SideNavigationGroupTemplate.tsx
+++ b/packages/fiori/src/SideNavigationGroupTemplate.tsx
@@ -22,23 +22,24 @@ function TreeItemTemplate(this: SideNavigationGroup) {
role="none"
>
-
{this.text}
{!!this.items.length &&
}
diff --git a/packages/fiori/src/SideNavigationItem.ts b/packages/fiori/src/SideNavigationItem.ts
index babd880d89e6..78bc732e3b9c 100644
--- a/packages/fiori/src/SideNavigationItem.ts
+++ b/packages/fiori/src/SideNavigationItem.ts
@@ -145,11 +145,15 @@ class SideNavigationItem extends SideNavigationSelectableItemBase {
return "tree";
}
+ if (this.accessibilityAttributes?.hasPopup) {
+ return this.accessibilityAttributes.hasPopup;
+ }
+
return undefined;
}
get _ariaChecked() {
- if (this.isOverflow || this.unselectable) {
+ if (this.isOverflow || this.unselectable || !this.sideNavCollapsed) {
return undefined;
}
@@ -157,7 +161,7 @@ class SideNavigationItem extends SideNavigationSelectableItemBase {
}
get _groupId() {
- if (!this.items.length) {
+ if (!this.items.length || this.sideNavCollapsed) {
return undefined;
}
@@ -165,7 +169,7 @@ class SideNavigationItem extends SideNavigationSelectableItemBase {
}
get _expanded() {
- if (!this.items.length) {
+ if (!this.items.length || this.sideNavCollapsed) {
return undefined;
}
@@ -313,15 +317,15 @@ class SideNavigationItem extends SideNavigationSelectableItemBase {
this.getDomRef()!.classList.add("ui5-sn-item-no-hover-effect");
}
- get isSideNavigationItem() {
- return true;
- }
-
_toggle() {
if (this.items.length && !this.effectiveDisabled) {
this.expanded = !this.expanded;
}
}
+
+ get isSideNavigationItem() {
+ return true;
+ }
}
SideNavigationItem.define();
diff --git a/packages/fiori/src/SideNavigationItemBase.ts b/packages/fiori/src/SideNavigationItemBase.ts
index 2457513f1925..c0c925e2c533 100644
--- a/packages/fiori/src/SideNavigationItemBase.ts
+++ b/packages/fiori/src/SideNavigationItemBase.ts
@@ -115,7 +115,7 @@ class SideNavigationItemBase extends UI5Element implements ITabbable {
}
get effectiveTabIndex() {
- return this.forcedTabIndex || undefined;
+ return this.forcedTabIndex !== undefined ? parseInt(this.forcedTabIndex) : undefined;
}
get sideNavigation() {
diff --git a/packages/fiori/src/SideNavigationItemTemplate.tsx b/packages/fiori/src/SideNavigationItemTemplate.tsx
index e58b84787ae6..1403a76db6c7 100644
--- a/packages/fiori/src/SideNavigationItemTemplate.tsx
+++ b/packages/fiori/src/SideNavigationItemTemplate.tsx
@@ -6,154 +6,72 @@ import type SideNavigationItem from "./SideNavigationItem.js";
export default function SideNavigationItemTemplate(this: SideNavigationItem) {
if (this.sideNavCollapsed) {
- return MenuItemTemplate.call(this);
+ return ItemTemplate.call(this);
}
- return TreeItemTemplate.call(this);
+
+ return (
+
+ {ItemTemplate.call(this)}
+
+ );
}
-function MenuItemTemplate(this: SideNavigationItem) {
- return (<>
- {this._href ?
-
+
-
+ {this.sideNavCollapsed ?
+
+ :
+ this.icon &&
+ }
{this.text}
- {!!this.items.length &&
+ {this.sideNavCollapsed ?
+ !!this.items.length &&
- }
- {this.isExternalLink &&
-
- }
-
- :
-
-
- {this.text}
- {!!this.items.length &&
+ :
+ !!this.items.length &&
}
{this.isExternalLink &&
}
-
- }
- >);
-}
-
-function TreeItemTemplate(this: SideNavigationItem) {
- return (
-
- {this._href ?
-
- {this.icon &&
-
- }
- {this.text}
- {this.isExternalLink &&
-
- }
- {!!this.items.length &&
-
- }
-
- :
-
- {this.icon &&
-
- }
- {this.text}
- {this.isExternalLink &&
-
- }
- {!!this.items.length &&
-
- }
-
- }
- {!!this.items.length &&
+
+ {!this.sideNavCollapsed && !!this.items.length &&
}
-
+ >
);
}
diff --git a/packages/fiori/src/SideNavigationPopoverTemplate.tsx b/packages/fiori/src/SideNavigationPopoverTemplate.tsx
index 7b0a39a983c2..3517f9525cf6 100644
--- a/packages/fiori/src/SideNavigationPopoverTemplate.tsx
+++ b/packages/fiori/src/SideNavigationPopoverTemplate.tsx
@@ -6,6 +6,23 @@ import SideNavigationItem from "./SideNavigationItem.js";
import SideNavigationSubItem from "./SideNavigationSubItem.js";
export default function SideNavigationTemplate(this: SideNavigation) {
+ const renderMenuItem = (item: SideNavigationItem | SideNavigationSubItem) => (
+
+ {(item as any).items?.map(renderMenuItem)}
+
+ );
+
return (<>
- {this._href ?
-
- {this.icon &&
-
- }
- {this.text}
- {this.isExternalLink &&
-
- }
-
- :
-
- {this.icon &&
-
- }
- {this.text}
- {this.isExternalLink &&
-
- }
-
- }
+
+ {this.icon &&
+
+ }
+ {this.text}
+ {this.isExternalLink &&
+
+ }
+
);
}