ngb-context-menu
Version:
A simple context menu library, based on ng-bootstrap library
37 lines • 5.52 kB
JavaScript
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=