UNPKG

@dotglitch/ngx-ctx-menu

Version:

Angular context menu that works with templates

90 lines (89 loc) 2.65 kB
import { TemplateRef, Type } from '@angular/core'; export type BaseCtx<T = any> = { /** * Label for the menu-item */ label?: string; /** * Custom angular template to use for the label * Alternatively accepts a lambda function */ labelTemplate?: TemplateRef<any> | ((data: T) => string); /** * Callback method that is called when a user activates * a context-menu item. * Use the `contextMenuData` decorator for passing data. */ action?: (data: T) => any; /** * Instead of an action, this item can be a hyperlink pointing to this URL * www.example.com/foo/bar.zip */ link?: string; /** * When having a configured `link` property, this specifies the `target` * attribute applied to the link */ linkTarget?: "_blank" | "_self" | "_parent" | "_top"; /** * Custom template function for resolving a link when the context menu * is opened */ linkTemplate?: ((data: T) => string); /** * Callback method that is called upon a context menu activation * that when it returns true, will show the item as disabled. */ isDisabled?: (data: T) => boolean; /** * Callback method that is called upon a context menu activation * that when returning false, will hide the menu item. */ isVisible?: (data: T) => boolean; /** * If a shortcut is set, the text-label. */ shortcutLabel?: string; /** * Keyboard shortcut to activate this item. */ /** * Icon to render on the left side of the item. * Can be a URL/URI (must include extension) * Or can be a material icon identifier. */ icon?: string; /** * Optional child menu */ children?: ContextMenuItem<T>[]; /** * Optional resolver that dynamically loads the contents * for the menu item. * Can be used to dynamically determine the submenu contents */ childrenResolver?: (data: T) => Promise<ContextMenuItem<T>[]>; /** * If `childrenResolver` is provided, disable caching of * the resolved children. */ cacheResolvedChildren?: boolean; /** * Instead of an array of children, render a template */ childTemplate?: TemplateRef<T> | Type<any>; /** * Width of child component */ childWidth?: number; /** * Height of child component */ childHeight?: number; /** * This item is a separator. * Can be used with label to make a label separator. */ separator?: boolean; }; export type ContextMenuItem<T = any> = BaseCtx<T> | "separator";