@perfectmemory/ngx-contextmenu
Version:
A context menu component for Angular
132 lines (131 loc) • 4.24 kB
TypeScript
import { FocusKeyManager } from '@angular/cdk/a11y';
import { AfterViewInit, ElementRef, EventEmitter, OnDestroy, QueryList } from '@angular/core';
import { ContextMenuContentItemDirective } from '../../directives/context-menu-content-item/context-menu-content-item.directive';
import type { ContextMenuItemDirective } from '../../directives/context-menu-item/context-menu-item.directive';
import { ContextMenuOverlaysService } from '../../services/context-menu-overlays/context-menu-overlays.service';
import type { ContextMenuComponent } from '../context-menu/context-menu.component';
import * as i0 from "@angular/core";
/**
* For testing purpose only
*/
export declare const TESTING_WRAPPER: {
FocusKeyManager: typeof FocusKeyManager;
};
export declare class ContextMenuContentComponent<T> implements OnDestroy, AfterViewInit {
private elementRef;
document: Document;
private contextMenuOverlaysService;
/**
* The list of `IContextMenuItemDirective` that represent each menu items
*/
menuDirectives: ContextMenuItemDirective<T>[];
/**
* The item on which the menu act
*/
value?: T;
/**
* The orientation of the component
* @see https://developer.mozilla.org/fr/docs/Web/HTML/Global_attributes/dir
*/
dir: 'ltr' | 'rtl' | undefined;
/**
* The parent menu of the instance
*/
parentContextMenu: ContextMenuContentComponent<T>;
/**
* A CSS class to apply a theme to the the menu
*/
menuClass: string;
/**
* Emit when a menu item is selected
*/
execute: EventEmitter<{
event: MouseEvent | KeyboardEvent;
value?: T;
menuDirective: ContextMenuItemDirective<T>;
}>;
/**
* Emit when all menus is closed
*/
close: EventEmitter<void>;
/**
* @internal
*/
contextMenuContentItems: QueryList<ContextMenuContentItemDirective<T>>;
/**
* Accessibility
*
* @internal
*/
role: string;
/**
* Accessibility
*
* @internal
*/
ariaOrientation: string;
private focusKeyManager?;
private subscription;
private activeElement?;
constructor(elementRef: ElementRef<HTMLElement>, document: Document, contextMenuOverlaysService: ContextMenuOverlaysService);
/**
* @internal
*/
ngAfterViewInit(): void;
/**
* @internal
*/
ngOnDestroy(): void;
/**
* @internal
*/
onKeyArrowDownOrUp(event: KeyboardEvent): void;
/**
* @internal
*/
onKeyArrowRight(event: KeyboardEvent): void;
/**
* @internal
*/
onKeyArrowLeft(event: KeyboardEvent): void;
/**
* @internal
*/
onKeyEnterOrSpace(event: KeyboardEvent): void;
/**
* @internal
*/
onClickOrRightClick(event: MouseEvent): void;
/**
* @internal
*/
hideSubMenus(): void;
/**
* @internal
*/
stopEvent(event: MouseEvent): void;
/**
* @internal
*/
isMenuItemDisabled(menuItem: ContextMenuItemDirective<T>): boolean;
/**
* @internal
*/
isMenuItemVisible(menuItem: ContextMenuContentItemDirective<T>): boolean;
/**
* @internal
*/
openSubMenu(subMenu: ContextMenuComponent<T> | undefined, event: MouseEvent | KeyboardEvent): void;
/**
* @internal
*/
onMenuItemSelect(menuContentItem: ContextMenuContentItemDirective<T>, event: MouseEvent | KeyboardEvent): void;
private triggerExecute;
private setupDirectives;
private openCloseActiveItemSubMenu;
private openActiveItemSubMenu;
private closeActiveItemSubMenu;
private cancelEvent;
static ɵfac: i0.ɵɵFactoryDeclaration<ContextMenuContentComponent<any>, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<ContextMenuContentComponent<any>, "context-menu-content", never, { "menuDirectives": { "alias": "menuDirectives"; "required": false; }; "value": { "alias": "value"; "required": false; }; "dir": { "alias": "dir"; "required": false; }; "parentContextMenu": { "alias": "parentContextMenu"; "required": false; }; "menuClass": { "alias": "menuClass"; "required": false; }; }, { "execute": "execute"; "close": "close"; }, never, never, false, never>;
}