ngx-right-click-menu
Version:
ngx-right-click-menu is right click context menu for Angular 2+.
117 lines • 9.1 kB
JavaScript
/**
* @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==