Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
0a3a8e7
menu pattern implementation
lzeiml May 28, 2026
41557c5
fix
lzeiml May 28, 2026
a33c80f
build
lzeiml Jun 1, 2026
47e4262
restructure
lzeiml Jun 2, 2026
5e06b44
ux changes
lzeiml Jun 9, 2026
7e582f5
remove menu outline
lzeiml Jun 10, 2026
fa15bfe
add overflow keyboard scrolling
lzeiml Jun 11, 2026
fe83e02
fix
lzeiml Jun 11, 2026
aa301a0
a11y fixes
lzeiml Jun 11, 2026
60c1be1
a11y violation fixes
lzeiml Jun 11, 2026
e248e05
remove useless padding
lzeiml Jun 11, 2026
bc0144c
fixes
lzeiml Jun 11, 2026
d55e217
fixes
lzeiml Jun 11, 2026
b4bbe35
Merge branch 'main' into feat/4304-menu-a11y
lzeiml Jun 11, 2026
575e9ae
fix
lzeiml Jun 12, 2026
1eef12b
Merge branch 'main' into feat/4304-menu-a11y
lzeiml Jun 12, 2026
b3c7f9b
Merge branch 'feat/4304-menu-a11y' of https://github.com/siemens/ix iโ€ฆ
lzeiml Jun 12, 2026
7cdff0b
Enhance ix-menu accessibility with W3C pattern
lzeiml Jun 12, 2026
ee252ec
fixes
lzeiml Jun 12, 2026
e87e87a
fix
lzeiml Jun 12, 2026
06068ec
a11y improvements
lzeiml Jun 25, 2026
b0def67
a11y improvement
lzeiml Jun 25, 2026
58cbcc2
a11y improvements
lzeiml Jun 25, 2026
b4a95eb
fix build
lzeiml Jun 29, 2026
18d23df
fix test
lzeiml Jun 29, 2026
a0b37f7
actually fix test
lzeiml Jun 29, 2026
b2e1958
fix aria-posinset, aria-setsize for menu-category
lzeiml Jun 30, 2026
5fff0ee
fix
lzeiml Jun 30, 2026
afd7a2d
label fix
lzeiml Jun 30, 2026
7b21efa
restore focus to menu when closing overlay
lzeiml Jun 30, 2026
ddc1994
overlay close focus restore test
lzeiml Jun 30, 2026
2b6a0d7
add since tags
lzeiml Jun 30, 2026
3838043
remove unused state variable
lzeiml Jun 30, 2026
f7aef2e
Merge branch 'main' into feat/4304-menu-a11y
lzeiml Jun 30, 2026
0f2746b
build
lzeiml Jun 30, 2026
a80ba83
Merge branch 'main' into feat/4304-menu-a11y
lzeiml Jul 1, 2026
e604bfc
regression test
lzeiml Jul 1, 2026
4092abc
restore link wrapping
lzeiml Jul 1, 2026
ea1157b
fix edge case when menu-category is already expanded
lzeiml Jul 1, 2026
08099e8
fix changeset
lzeiml Jul 1, 2026
2557a18
fix unit
lzeiml Jul 1, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .changeset/fair-falcons-search.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'@siemens/ix': minor
---

Improved **ix-menu** accessibility by implementing the W3C menubar pattern, adding better keyboard navigation and screenreader suppport.
Added properties `i18nAriaLabelMenu` and `i18nNavigationHint` for screenreader translations.
4 changes: 2 additions & 2 deletions packages/angular/src/components.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1558,15 +1558,15 @@ export declare interface IxLinkButton extends Components.IxLinkButton {}


@ProxyCmp({
inputs: ['applicationDescription', 'applicationName', 'enableToggleTheme', 'expand', 'i18nCollapse', 'i18nExpand', 'i18nLegal', 'i18nSettings', 'i18nToggleTheme', 'pinned', 'showAbout', 'showSettings', 'startExpanded'],
inputs: ['applicationDescription', 'applicationName', 'enableToggleTheme', 'expand', 'i18nAriaLabelMenu', 'i18nCollapse', 'i18nExpand', 'i18nLegal', 'i18nNavigationHint', 'i18nSettings', 'i18nToggleTheme', 'pinned', 'showAbout', 'showSettings', 'startExpanded'],
methods: ['toggleMapExpand', 'toggleMenu', 'toggleSettings', 'toggleAbout']
})
@Component({
selector: 'ix-menu',
changeDetection: ChangeDetectionStrategy.OnPush,
template: '<ng-content></ng-content>',
// eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
inputs: ['applicationDescription', 'applicationName', 'enableToggleTheme', 'expand', 'i18nCollapse', 'i18nExpand', 'i18nLegal', 'i18nSettings', 'i18nToggleTheme', 'pinned', 'showAbout', 'showSettings', 'startExpanded'],
inputs: ['applicationDescription', 'applicationName', 'enableToggleTheme', 'expand', 'i18nAriaLabelMenu', 'i18nCollapse', 'i18nExpand', 'i18nLegal', 'i18nNavigationHint', 'i18nSettings', 'i18nToggleTheme', 'pinned', 'showAbout', 'showSettings', 'startExpanded'],
Comment thread
lzeiml marked this conversation as resolved.
outputs: ['expandChange', 'mapExpandChange', 'openAppSwitch', 'openSettings', 'openAbout'],
standalone: false
})
Expand Down
4 changes: 2 additions & 2 deletions packages/angular/standalone/src/components.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1663,15 +1663,15 @@ export declare interface IxLinkButton extends Components.IxLinkButton {}

@ProxyCmp({
defineCustomElementFn: defineIxMenu,
inputs: ['applicationDescription', 'applicationName', 'enableToggleTheme', 'expand', 'i18nCollapse', 'i18nExpand', 'i18nLegal', 'i18nSettings', 'i18nToggleTheme', 'pinned', 'showAbout', 'showSettings', 'startExpanded'],
inputs: ['applicationDescription', 'applicationName', 'enableToggleTheme', 'expand', 'i18nAriaLabelMenu', 'i18nCollapse', 'i18nExpand', 'i18nLegal', 'i18nNavigationHint', 'i18nSettings', 'i18nToggleTheme', 'pinned', 'showAbout', 'showSettings', 'startExpanded'],
methods: ['toggleMapExpand', 'toggleMenu', 'toggleSettings', 'toggleAbout']
})
@Component({
selector: 'ix-menu',
changeDetection: ChangeDetectionStrategy.OnPush,
template: '<ng-content></ng-content>',
// eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
inputs: ['applicationDescription', 'applicationName', 'enableToggleTheme', 'expand', 'i18nCollapse', 'i18nExpand', 'i18nLegal', 'i18nSettings', 'i18nToggleTheme', 'pinned', 'showAbout', 'showSettings', 'startExpanded'],
inputs: ['applicationDescription', 'applicationName', 'enableToggleTheme', 'expand', 'i18nAriaLabelMenu', 'i18nCollapse', 'i18nExpand', 'i18nLegal', 'i18nNavigationHint', 'i18nSettings', 'i18nToggleTheme', 'pinned', 'showAbout', 'showSettings', 'startExpanded'],
outputs: ['expandChange', 'mapExpandChange', 'openAppSwitch', 'openSettings', 'openAbout'],
})
export class IxMenu {
Expand Down
31 changes: 31 additions & 0 deletions packages/core/src/components.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2400,6 +2400,12 @@ export namespace Components {
* @default false
*/
"expand": boolean;
/**
* i18n aria-label for menu. Gets read out by screen readers when first focusing the menu
* @since 5.1.0
* @default 'Application Navigation'
*/
"i18nAriaLabelMenu": string;
/**
* i18n label for 'Collapse' button
* @default 'Collapse'
Expand All @@ -2415,6 +2421,12 @@ export namespace Components {
* @default 'About & legal information'
*/
"i18nLegal": string;
/**
* i18n description for menu keyboard navigation hint, read by screen readers when focusing the menu
* @since 5.1.0
* @default 'Use Up and Down arrow keys to navigate between menu items'
*/
"i18nNavigationHint": string;
/**
* i18n label for 'Settings' button
* @default 'Settings'
Expand Down Expand Up @@ -2605,6 +2617,7 @@ export namespace Components {
* Show notification count on the category
*/
"notifications"?: number;
"setTabIndex": (value: number) => Promise<void>;
/**
* Will be shown as tooltip text, if not provided menu text content will be used.
* @since 4.0.0
Expand Down Expand Up @@ -2675,6 +2688,7 @@ export namespace Components {
* Label of the menu item. Will also be used as tooltip text
*/
"label"?: string;
"menuCategoryLabel"?: string;
/**
* Show notification count on tab
*/
Expand All @@ -2684,6 +2698,7 @@ export namespace Components {
* @since 4.0.0
*/
"rel"?: string;
"setTabIndex": (value: number) => Promise<void>;
/**
* Specifies where to open the linked document when href is provided.
* @since 4.0.0
Expand Down Expand Up @@ -9048,6 +9063,12 @@ declare namespace LocalJSX {
* @default false
*/
"expand"?: boolean;
/**
* i18n aria-label for menu. Gets read out by screen readers when first focusing the menu
* @since 5.1.0
* @default 'Application Navigation'
*/
"i18nAriaLabelMenu"?: string;
/**
* i18n label for 'Collapse' button
* @default 'Collapse'
Expand All @@ -9063,6 +9084,12 @@ declare namespace LocalJSX {
* @default 'About & legal information'
*/
"i18nLegal"?: string;
/**
* i18n description for menu keyboard navigation hint, read by screen readers when focusing the menu
* @since 5.1.0
* @default 'Use Up and Down arrow keys to navigate between menu items'
*/
"i18nNavigationHint"?: string;
/**
* i18n label for 'Settings' button
* @default 'Settings'
Expand Down Expand Up @@ -9355,6 +9382,7 @@ declare namespace LocalJSX {
* Label of the menu item. Will also be used as tooltip text
*/
"label"?: string;
"menuCategoryLabel"?: string;
/**
* Show notification count on tab
*/
Expand Down Expand Up @@ -12038,6 +12066,8 @@ declare namespace LocalJSX {
"expand": boolean;
"startExpanded": boolean;
"pinned": boolean;
"i18nAriaLabelMenu": string;
"i18nNavigationHint": string;
"i18nLegal": string;
"i18nSettings": string;
"i18nToggleTheme": string;
Expand Down Expand Up @@ -12104,6 +12134,7 @@ declare namespace LocalJSX {
"target": AnchorTarget;
"rel": string;
"isCategory": boolean;
"menuCategoryLabel": string;
}
interface IxMenuSettingsAttributes {
"suppressLegacyTabs": boolean;
Expand Down
Loading
Loading