diff --git a/src/vs/base/browser/ui/menu/menu.ts b/src/vs/base/browser/ui/menu/menu.ts index cda0d9db4068d..10eec4315850e 100644 --- a/src/vs/base/browser/ui/menu/menu.ts +++ b/src/vs/base/browser/ui/menu/menu.ts @@ -657,7 +657,7 @@ class SubmenuMenuActionViewItem extends BaseMenuActionViewItem { if (this.item) { addClass(this.item, 'monaco-submenu-item'); this.item.setAttribute('aria-haspopup', 'true'); - + this.updateAriaExpanded('false'); this.submenuIndicator = append(this.item, $('span.submenu-indicator')); this.submenuIndicator.setAttribute('aria-hidden', 'true'); } @@ -722,7 +722,7 @@ class SubmenuMenuActionViewItem extends BaseMenuActionViewItem { if (this.parentData.submenu && (force || (this.parentData.submenu !== this.mysubmenu))) { this.parentData.submenu.dispose(); this.parentData.submenu = undefined; - + this.updateAriaExpanded('false'); if (this.submenuContainer) { this.submenuDisposables.clear(); this.submenuContainer = undefined; @@ -736,6 +736,7 @@ class SubmenuMenuActionViewItem extends BaseMenuActionViewItem { } if (!this.parentData.submenu) { + this.updateAriaExpanded('true'); this.submenuContainer = append(this.element, $('div.monaco-submenu')); addClasses(this.submenuContainer, 'menubar-menu-items-holder', 'context-view'); @@ -774,13 +775,7 @@ class SubmenuMenuActionViewItem extends BaseMenuActionViewItem { this.parentData.parent.focus(); - if (this.parentData.submenu) { - this.parentData.submenu.dispose(); - this.parentData.submenu = undefined; - } - - this.submenuDisposables.clear(); - this.submenuContainer = undefined; + this.cleanupExistingSubmenu(true); } })); @@ -795,13 +790,7 @@ class SubmenuMenuActionViewItem extends BaseMenuActionViewItem { this.submenuDisposables.add(this.parentData.submenu.onDidCancel(() => { this.parentData.parent.focus(); - if (this.parentData.submenu) { - this.parentData.submenu.dispose(); - this.parentData.submenu = undefined; - } - - this.submenuDisposables.clear(); - this.submenuContainer = undefined; + this.cleanupExistingSubmenu(true); })); this.parentData.submenu.focus(selectFirstItem); @@ -812,6 +801,12 @@ class SubmenuMenuActionViewItem extends BaseMenuActionViewItem { } } + private updateAriaExpanded(value: string): void { + if (this.item) { + this.item?.setAttribute('aria-expanded', value); + } + } + protected applyStyle(): void { super.applyStyle();