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._menuPopoverItems.map(item => - - {item.items.map(subItem => - - )} - - )} + {this._menuPopoverItems.map(renderMenuItem)} - {this._href ? - - {this.icon && - - } -
    {this.text}
    - {this.isExternalLink && - - } -
    - : -
    - {this.icon && - - } -
    {this.text}
    - {this.isExternalLink && - - } -
    - } + + {this.icon && + + } +
    {this.text}
    + {this.isExternalLink && + + } +
    ); }