diff --git a/projects/aca-shared/src/lib/components/tool-bar/toolbar-menu-item/toolbar-menu-item.component.ts b/projects/aca-shared/src/lib/components/tool-bar/toolbar-menu-item/toolbar-menu-item.component.ts index 328684c033..70a4af30af 100644 --- a/projects/aca-shared/src/lib/components/tool-bar/toolbar-menu-item/toolbar-menu-item.component.ts +++ b/projects/aca-shared/src/lib/components/tool-bar/toolbar-menu-item/toolbar-menu-item.component.ts @@ -23,9 +23,10 @@ * along with Alfresco. If not, see . */ -import { Component, Input, ViewEncapsulation } from '@angular/core'; +import { Component, Input, ViewChild, ViewEncapsulation } from '@angular/core'; import { ContentActionRef } from '@alfresco/adf-extensions'; import { AppExtensionService } from '../../../services/app.extension.service'; +import { MatMenuItem } from '@angular/material/menu'; @Component({ selector: 'app-toolbar-menu-item', @@ -44,6 +45,9 @@ export class ToolbarMenuItemComponent { @Input() actionRef: ContentActionRef; + @ViewChild(MatMenuItem) + menuItem: MatMenuItem; + constructor(private extensions: AppExtensionService) {} runAction() { diff --git a/projects/aca-shared/src/lib/components/tool-bar/toolbar-menu/toolbar-menu.component.ts b/projects/aca-shared/src/lib/components/tool-bar/toolbar-menu/toolbar-menu.component.ts index b9496ce6aa..518cb7201d 100644 --- a/projects/aca-shared/src/lib/components/tool-bar/toolbar-menu/toolbar-menu.component.ts +++ b/projects/aca-shared/src/lib/components/tool-bar/toolbar-menu/toolbar-menu.component.ts @@ -23,10 +23,11 @@ * along with Alfresco. If not, see . */ -import { Component, Input, ViewEncapsulation, HostListener, ViewChild } from '@angular/core'; +import { Component, Input, ViewEncapsulation, HostListener, ViewChild, ViewChildren, QueryList, AfterViewInit } from '@angular/core'; import { ContentActionRef } from '@alfresco/adf-extensions'; -import { MatMenuTrigger } from '@angular/material/menu'; +import { MatMenu, MatMenuItem, MatMenuTrigger } from '@angular/material/menu'; import { ThemePalette } from '@angular/material/core'; +import { ToolbarMenuItemComponent } from '../toolbar-menu-item/toolbar-menu-item.component'; @Component({ selector: 'app-toolbar-menu', @@ -34,7 +35,7 @@ import { ThemePalette } from '@angular/material/core'; encapsulation: ViewEncapsulation.None, host: { class: 'app-toolbar-menu' } }) -export class ToolbarMenuComponent { +export class ToolbarMenuComponent implements AfterViewInit { @Input() actionRef: ContentActionRef; @@ -44,11 +45,30 @@ export class ToolbarMenuComponent { @ViewChild('matTrigger') matTrigger: MatMenuTrigger; + @ViewChild(MatMenu) + menu: MatMenu; + + @ViewChildren(ToolbarMenuItemComponent) + toolbarMenuItems: QueryList; + @HostListener('document:keydown.Escape') handleKeydownEscape() { this.matTrigger.closeMenu(); } + ngAfterViewInit(): void { + const menuItems: MatMenuItem[] = []; + this.toolbarMenuItems.forEach((toolbarMenuItem: ToolbarMenuItemComponent) => { + if (toolbarMenuItem.menuItem !== undefined) { + menuItems.push(toolbarMenuItem.menuItem); + } + }); + const menuItemsQueryList: QueryList = new QueryList(); + menuItemsQueryList.reset(menuItems); + this.menu._allItems = menuItemsQueryList; + this.menu.ngAfterContentInit(); + } + trackByActionId(_: number, obj: ContentActionRef): string { return obj.id; }