UNPKG

ngb-context-menu

Version:

A simple context menu library, based on ng-bootstrap library

37 lines 5.52 kB
import { Directive, EventEmitter, HostListener, Input, Output } from '@angular/core'; import { NgbDropdown } from '@ng-bootstrap/ng-bootstrap'; import { ContextMenuComponent } from "../components/context-menu/context-menu.component"; import * as i0 from "@angular/core"; export class ContextMenuDirective { constructor(viewContainerRef) { this.viewContainerRef = viewContainerRef; this.menuItems = []; this.selectedMenuItem = new EventEmitter(); } onRightClick(event) { event.preventDefault(); this.contextMenuComponentRef.instance.onContextMenu(event); } ngOnInit() { this.contextMenuComponentRef = this.viewContainerRef.createComponent(ContextMenuComponent); this.contextMenuComponentRef.instance.menuItems = this.menuItems; this.contextMenuComponentRef.instance.selectedMenuItem?.subscribe((selectedId) => this.selectedMenuItem.emit(selectedId)); } } ContextMenuDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ContextMenuDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); ContextMenuDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.7", type: ContextMenuDirective, selector: "[ngbContextMenu]", inputs: { menuItems: "menuItems" }, outputs: { selectedMenuItem: "selectedMenuItem" }, host: { listeners: { "contextmenu": "onRightClick($event)" } }, providers: [NgbDropdown], ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: ContextMenuDirective, decorators: [{ type: Directive, args: [{ selector: '[ngbContextMenu]', providers: [NgbDropdown], }] }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { menuItems: [{ type: Input }], selectedMenuItem: [{ type: Output }], onRightClick: [{ type: HostListener, args: ['contextmenu', ['$event']] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tZW51LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nYi1jb250ZXh0LW1lbnUvc3JjL2xpYi9kaXJlY3RpdmVzL2NvbnRleHQtbWVudS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUM3SCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFekQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sbURBQW1ELENBQUM7O0FBTXZGLE1BQU0sT0FBTyxvQkFBb0I7SUFTL0IsWUFBbUIsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFQckQsY0FBUyxHQUF5QixFQUFFLENBQUM7UUFHckMscUJBQWdCLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7SUFJWixDQUFDO0lBR3pELFlBQVksQ0FBQyxLQUFpQjtRQUM1QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzNGLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDakUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLENBQUMsQ0FBQyxVQUFrQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDcEksQ0FBQzs7aUhBckJVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLGtNQUZwQixDQUFDLFdBQVcsQ0FBQzsyRkFFYixvQkFBb0I7a0JBSmhDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDO2lCQUN6Qjt1R0FHQyxTQUFTO3NCQURSLEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLE1BQU07Z0JBUVAsWUFBWTtzQkFEWCxZQUFZO3VCQUFDLGFBQWEsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFJlZiwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ2JEcm9wZG93biB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7TmdiQ29udGV4dE1lbnVJdGVtfSBmcm9tIFwiLi4vbW9kZWxzL2NvbnRleHQtbWVudS5tb2RlbFwiO1xuaW1wb3J0IHtDb250ZXh0TWVudUNvbXBvbmVudH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvY29udGV4dC1tZW51L2NvbnRleHQtbWVudS5jb21wb25lbnRcIjtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW25nYkNvbnRleHRNZW51XScsXG4gIHByb3ZpZGVyczogW05nYkRyb3Bkb3duXSxcbn0pXG5leHBvcnQgY2xhc3MgQ29udGV4dE1lbnVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKVxuICBtZW51SXRlbXM6IE5nYkNvbnRleHRNZW51SXRlbVtdID0gW107XG5cbiAgQE91dHB1dCgpXG4gIHNlbGVjdGVkTWVudUl0ZW06IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgY29udGV4dE1lbnVDb21wb25lbnRSZWYhOiBDb21wb25lbnRSZWY8Q29udGV4dE1lbnVDb21wb25lbnQ+O1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7fVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NvbnRleHRtZW51JywgWyckZXZlbnQnXSlcbiAgb25SaWdodENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLmNvbnRleHRNZW51Q29tcG9uZW50UmVmLmluc3RhbmNlLm9uQ29udGV4dE1lbnUoZXZlbnQpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb250ZXh0TWVudUNvbXBvbmVudFJlZiA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoQ29udGV4dE1lbnVDb21wb25lbnQpO1xuICAgIHRoaXMuY29udGV4dE1lbnVDb21wb25lbnRSZWYuaW5zdGFuY2UubWVudUl0ZW1zID0gdGhpcy5tZW51SXRlbXM7XG4gICAgdGhpcy5jb250ZXh0TWVudUNvbXBvbmVudFJlZi5pbnN0YW5jZS5zZWxlY3RlZE1lbnVJdGVtPy5zdWJzY3JpYmUoKHNlbGVjdGVkSWQ6IG51bWJlcikgPT4gdGhpcy5zZWxlY3RlZE1lbnVJdGVtLmVtaXQoc2VsZWN0ZWRJZCkpO1xuICB9XG59XG4iXX0=