UNPKG

ngx-right-click-menu

Version:

ngx-right-click-menu is right click context menu for Angular 2+.

117 lines 9.1 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /* tslint:disable:member-ordering */ import { Directive, HostListener, Input, ComponentFactoryResolver, ViewContainerRef } from '@angular/core'; import { NgxRightClickMenuComponent } from './ngx-right-click-menu.component'; import { NgxRightClickMenuBackDropComponent } from './ngx-right-click-menu-backdrop.component'; export class NgxRightClickMenuDirective { /** * @param {?} _componentResolver * @param {?} _viewContainerRef * @param {?} _backdropRef */ constructor(_componentResolver, _viewContainerRef, _backdropRef) { this._componentResolver = _componentResolver; this._viewContainerRef = _viewContainerRef; this._backdropRef = _backdropRef; this.menuContext = (/** * @param {?} event * @return {?} */ (event) => this.openMenu(event)); this.items = []; } /** * @param {?} data * @return {?} */ set ngxContextMenu(data) { this.title = data.title; this.items = data.items; } /** * @private * @param {?} event * @return {?} */ openMenu(event) { event.preventDefault(); event.stopPropagation(); this._viewContainerRef.clear(); /** @type {?} */ const backdropFactory = this._componentResolver.resolveComponentFactory(NgxRightClickMenuBackDropComponent); /** @type {?} */ const backdropRef = this._viewContainerRef.createComponent(backdropFactory); /** @type {?} */ const componentFactory = this._componentResolver.resolveComponentFactory(NgxRightClickMenuComponent); /** @type {?} */ const componentRef = this._viewContainerRef.createComponent(componentFactory); this._contextMenu = componentRef.instance; this._contextMenu.top = event.clientY; this._contextMenu.left = event.clientX; this._contextMenu.position(); this._contextMenu.title = this.title; this._contextMenu.items = this.items; backdropRef.instance['backDropClick'].subscribe((/** * @return {?} */ () => { this._viewContainerRef.clear(); })); this._contextMenu['itemClicked'].subscribe((/** * @return {?} */ () => { this._viewContainerRef.clear(); })); } } NgxRightClickMenuDirective.decorators = [ { type: Directive, args: [{ selector: '[ngxContextMenu]' },] } ]; /** @nocollapse */ NgxRightClickMenuDirective.ctorParameters = () => [ { type: ComponentFactoryResolver }, { type: ViewContainerRef }, { type: ViewContainerRef } ]; NgxRightClickMenuDirective.propDecorators = { ngxContextMenu: [{ type: Input }], menuContext: [{ type: HostListener, args: ['contextmenu', ['$event'],] }] }; if (false) { /** @type {?} */ NgxRightClickMenuDirective.prototype.menuContext; /** * @type {?} * @private */ NgxRightClickMenuDirective.prototype.title; /** * @type {?} * @private */ NgxRightClickMenuDirective.prototype.items; /** @type {?} */ NgxRightClickMenuDirective.prototype._contextMenu; /** * @type {?} * @private */ NgxRightClickMenuDirective.prototype._componentResolver; /** * @type {?} * @private */ NgxRightClickMenuDirective.prototype._viewContainerRef; /** * @type {?} * @private */ NgxRightClickMenuDirective.prototype._backdropRef; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXJpZ2h0LWNsaWNrLW1lbnUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LXJpZ2h0LWNsaWNrLW1lbnUvIiwic291cmNlcyI6WyJsaWIvbmd4LXJpZ2h0LWNsaWNrLW1lbnUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsT0FBTyxFQUNMLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixFQUFFLGdCQUFnQixFQUMzRSxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQU8vRixNQUFNLE9BQU8sMEJBQTBCOzs7Ozs7SUFhckMsWUFDVSxrQkFBNEMsRUFDNUMsaUJBQW1DLEVBQ25DLFlBQThCO1FBRjlCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBMEI7UUFDNUMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUNuQyxpQkFBWSxHQUFaLFlBQVksQ0FBa0I7UUFUakMsZ0JBQVc7Ozs7UUFBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUM7UUFHekQsVUFBSyxHQUFlLEVBQUUsQ0FBQztJQU8zQixDQUFDOzs7OztJQWhCTCxJQUFhLGNBQWMsQ0FBQyxJQUFVO1FBQ3BDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDMUIsQ0FBQzs7Ozs7O0lBZU8sUUFBUSxDQUFDLEtBQWlCO1FBQ2hDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFeEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxDQUFDOztjQUV6QixlQUFlLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHVCQUF1QixDQUFDLGtDQUFrQyxDQUFDOztjQUNyRyxXQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUM7O2NBRXJFLGdCQUFnQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyx1QkFBdUIsQ0FBQywwQkFBMEIsQ0FBQzs7Y0FDOUYsWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUM7UUFFN0UsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDO1FBQzFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUN2QyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRTdCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDckMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUVyQyxXQUFXLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFNBQVM7OztRQUFDLEdBQUcsRUFBRTtZQUNuRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakMsQ0FBQyxFQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFNBQVM7OztRQUFDLEdBQUcsRUFBRTtZQUM5QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakMsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDOzs7WUFqREYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxrQkFBa0I7YUFDN0I7Ozs7WUFSaUMsd0JBQXdCO1lBQUUsZ0JBQWdCO1lBQWhCLGdCQUFnQjs7OzZCQVd6RSxLQUFLOzBCQUtMLFlBQVksU0FBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7Ozs7SUFBdkMsaURBQ2lFOzs7OztJQUVqRSwyQ0FBc0I7Ozs7O0lBQ3RCLDJDQUErQjs7SUFDL0Isa0RBQWdEOzs7OztJQUc5Qyx3REFBb0Q7Ozs7O0lBQ3BELHVEQUEyQzs7Ozs7SUFDM0Msa0RBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiLyogdHNsaW50OmRpc2FibGU6bWVtYmVyLW9yZGVyaW5nICovXG5pbXBvcnQge1xuICBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5neFJpZ2h0Q2xpY2tNZW51Q29tcG9uZW50IH0gZnJvbSAnLi9uZ3gtcmlnaHQtY2xpY2stbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmd4UmlnaHRDbGlja01lbnVCYWNrRHJvcENvbXBvbmVudCB9IGZyb20gJy4vbmd4LXJpZ2h0LWNsaWNrLW1lbnUtYmFja2Ryb3AuY29tcG9uZW50JztcbmltcG9ydCB7IE1lbnUsIE1lbnVJdGVtIH0gZnJvbSAnLi9uZ3gtcmlnaHQtY2xpY2stbWVudS5tb2RlbCc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tuZ3hDb250ZXh0TWVudV0nXG59KVxuXG5leHBvcnQgY2xhc3MgTmd4UmlnaHRDbGlja01lbnVEaXJlY3RpdmUge1xuICBASW5wdXQoKSBzZXQgbmd4Q29udGV4dE1lbnUoZGF0YTogTWVudSkge1xuICAgIHRoaXMudGl0bGUgPSBkYXRhLnRpdGxlO1xuICAgIHRoaXMuaXRlbXMgPSBkYXRhLml0ZW1zO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY29udGV4dG1lbnUnLCBbJyRldmVudCddKVxuICBwdWJsaWMgbWVudUNvbnRleHQgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHRoaXMub3Blbk1lbnUoZXZlbnQpO1xuXG4gIHByaXZhdGUgdGl0bGU6IHN0cmluZztcbiAgcHJpdmF0ZSBpdGVtczogTWVudUl0ZW1bXSA9IFtdO1xuICBwdWJsaWMgX2NvbnRleHRNZW51OiBOZ3hSaWdodENsaWNrTWVudUNvbXBvbmVudDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9jb21wb25lbnRSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICAgIHByaXZhdGUgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBfYmFja2Ryb3BSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICkgeyB9XG5cbiAgcHJpdmF0ZSBvcGVuTWVudShldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG5cbiAgICBjb25zdCBiYWNrZHJvcEZhY3RvcnkgPSB0aGlzLl9jb21wb25lbnRSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShOZ3hSaWdodENsaWNrTWVudUJhY2tEcm9wQ29tcG9uZW50KTtcbiAgICBjb25zdCBiYWNrZHJvcFJlZiA9IHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KGJhY2tkcm9wRmFjdG9yeSk7XG5cbiAgICBjb25zdCBjb21wb25lbnRGYWN0b3J5ID0gdGhpcy5fY29tcG9uZW50UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoTmd4UmlnaHRDbGlja01lbnVDb21wb25lbnQpO1xuICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudEZhY3RvcnkpO1xuXG4gICAgdGhpcy5fY29udGV4dE1lbnUgPSBjb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICAgdGhpcy5fY29udGV4dE1lbnUudG9wID0gZXZlbnQuY2xpZW50WTtcbiAgICB0aGlzLl9jb250ZXh0TWVudS5sZWZ0ID0gZXZlbnQuY2xpZW50WDtcbiAgICB0aGlzLl9jb250ZXh0TWVudS5wb3NpdGlvbigpO1xuXG4gICAgdGhpcy5fY29udGV4dE1lbnUudGl0bGUgPSB0aGlzLnRpdGxlO1xuICAgIHRoaXMuX2NvbnRleHRNZW51Lml0ZW1zID0gdGhpcy5pdGVtcztcblxuICAgIGJhY2tkcm9wUmVmLmluc3RhbmNlWydiYWNrRHJvcENsaWNrJ10uc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWYuY2xlYXIoKTtcbiAgICB9KTtcbiAgICB0aGlzLl9jb250ZXh0TWVudVsnaXRlbUNsaWNrZWQnXS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAgIH0pO1xuICB9XG5cbn1cbiJdfQ==