ng2-right-click-menu
Version:
Right click context menu for Angular
147 lines • 9.23 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Directive, ElementRef, EventEmitter, Input, Output } from '@angular/core';
import { ShContextMenuService } from './sh-context-menu.service';
import { ShContextMenuComponent } from './sh-context-menu.component';
import { fromEvent, merge } from 'rxjs';
/**
* @record
*/
export function ContextOpenEvent() { }
if (false) {
/** @type {?} */
ContextOpenEvent.prototype.data;
/** @type {?} */
ContextOpenEvent.prototype.preventOpen;
/** @type {?} */
ContextOpenEvent.prototype.mouseEvent;
}
var ShAttachMenuDirective = /** @class */ (function () {
function ShAttachMenuDirective(ctxService, elm) {
this.ctxService = ctxService;
this.elm = elm;
this.open = new EventEmitter();
}
/**
* @return {?}
*/
ShAttachMenuDirective.prototype.ngOnInit = /**
* @return {?}
*/
function () {
this.setupEvents();
};
/**
* @private
* @return {?}
*/
ShAttachMenuDirective.prototype.setupEvents = /**
* @private
* @return {?}
*/
function () {
var _this = this;
/** @type {?} */
var observables = [];
if (!this.triggers) {
observables.push(fromEvent(this.elm.nativeElement, 'contextmenu'));
}
else {
this.triggers.forEach((/**
* @param {?} t
* @return {?}
*/
function (t) {
observables.push(fromEvent(_this.elm.nativeElement, t));
}));
}
this.sub = merge.apply(void 0, tslib_1.__spread(observables)).subscribe(this.openMenu.bind(this));
};
/**
* @param {?} event
* @return {?}
*/
ShAttachMenuDirective.prototype.openMenu = /**
* @param {?} event
* @return {?}
*/
function (event) {
event.preventDefault();
event.stopPropagation();
/** @type {?} */
var preventOpen = false;
this.open.emit({
data: this.data,
mouseEvent: event,
preventOpen: (/**
* @return {?}
*/
function () {
preventOpen = true;
})
});
if (preventOpen)
return;
this.ctxService.openMenu({
menu: this.menu,
mouseEvent: event,
targetElement: this.elm,
data: this.data
});
};
/**
* @return {?}
*/
ShAttachMenuDirective.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
if (this.sub) {
this.sub.unsubscribe();
}
};
ShAttachMenuDirective.decorators = [
{ type: Directive, args: [{
selector: '[shAttachMenu]'
},] }
];
/** @nocollapse */
ShAttachMenuDirective.ctorParameters = function () { return [
{ type: ShContextMenuService },
{ type: ElementRef }
]; };
ShAttachMenuDirective.propDecorators = {
menu: [{ type: Input, args: ['shAttachMenu',] }],
triggers: [{ type: Input, args: ['shMenuTriggers',] }],
data: [{ type: Input, args: ['shMenuData',] }],
open: [{ type: Output }]
};
return ShAttachMenuDirective;
}());
export { ShAttachMenuDirective };
if (false) {
/** @type {?} */
ShAttachMenuDirective.prototype.menu;
/** @type {?} */
ShAttachMenuDirective.prototype.triggers;
/** @type {?} */
ShAttachMenuDirective.prototype.data;
/** @type {?} */
ShAttachMenuDirective.prototype.open;
/** @type {?} */
ShAttachMenuDirective.prototype.sub;
/**
* @type {?}
* @private
*/
ShAttachMenuDirective.prototype.ctxService;
/**
* @type {?}
* @private
*/
ShAttachMenuDirective.prototype.elm;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2gtYXR0YWNoLW1lbnUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmcyLXJpZ2h0LWNsaWNrLW1lbnUvIiwic291cmNlcyI6WyJsaWIvc2gtYXR0YWNoLW1lbnUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNOLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWdCLE1BQU0sTUFBTSxDQUFDOzs7O0FBRXRELHNDQUlDOzs7SUFIQSxnQ0FBVTs7SUFDVix1Q0FBd0I7O0lBQ3hCLHNDQUF1Qjs7QUFHeEI7SUFVQywrQkFDUyxVQUFnQyxFQUNoQyxHQUFlO1FBRGYsZUFBVSxHQUFWLFVBQVUsQ0FBc0I7UUFDaEMsUUFBRyxHQUFILEdBQUcsQ0FBWTtRQUxkLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztJQU1uRCxDQUFDOzs7O0lBRUosd0NBQVE7OztJQUFSO1FBQ0MsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3BCLENBQUM7Ozs7O0lBRU8sMkNBQVc7Ozs7SUFBbkI7UUFBQSxpQkFZQzs7WUFYTSxXQUFXLEdBQUcsRUFBRTtRQUV0QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNuQixXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDO1NBQ25FO2FBQU07WUFDTixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU87Ozs7WUFBQyxVQUFBLENBQUM7Z0JBQ3RCLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEQsQ0FBQyxFQUFDLENBQUM7U0FDSDtRQUVELElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxnQ0FBSSxXQUFXLEdBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQzs7Ozs7SUFFRCx3Q0FBUTs7OztJQUFSLFVBQVMsS0FBaUI7UUFDekIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQzs7WUFFcEIsV0FBVyxHQUFHLEtBQUs7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDZCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixVQUFVLEVBQUUsS0FBSztZQUNqQixXQUFXOzs7WUFBRTtnQkFDWixXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLENBQUMsQ0FBQTtTQUNELENBQUMsQ0FBQztRQUVILElBQUksV0FBVztZQUFFLE9BQU87UUFFeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDeEIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsVUFBVSxFQUFFLEtBQUs7WUFDakIsYUFBYSxFQUFFLElBQUksQ0FBQyxHQUFHO1lBQ3ZCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNmLENBQUMsQ0FBQztJQUNKLENBQUM7Ozs7SUFFRCwyQ0FBVzs7O0lBQVg7UUFDQyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDYixJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3ZCO0lBQ0YsQ0FBQzs7Z0JBNURELFNBQVMsU0FBQztvQkFDVixRQUFRLEVBQUUsZ0JBQWdCO2lCQUMxQjs7OztnQkFaUSxvQkFBb0I7Z0JBUDVCLFVBQVU7Ozt1QkFxQlQsS0FBSyxTQUFDLGNBQWM7MkJBQ3BCLEtBQUssU0FBQyxnQkFBZ0I7dUJBQ3RCLEtBQUssU0FBQyxZQUFZO3VCQUNsQixNQUFNOztJQXNEUiw0QkFBQztDQUFBLEFBN0RELElBNkRDO1NBMURZLHFCQUFxQjs7O0lBQ2pDLHFDQUFvRDs7SUFDcEQseUNBQTRDOztJQUM1QyxxQ0FBK0I7O0lBQy9CLHFDQUFzRDs7SUFDdEQsb0NBQWtCOzs7OztJQUdqQiwyQ0FBd0M7Ozs7O0lBQ3hDLG9DQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdERpcmVjdGl2ZSxcblx0RWxlbWVudFJlZixcblx0RXZlbnRFbWl0dGVyLFxuXHRJbnB1dCxcblx0T25EZXN0cm95LFxuXHRPbkluaXQsXG5cdE91dHB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNoQ29udGV4dE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi9zaC1jb250ZXh0LW1lbnUuc2VydmljZSc7XG5pbXBvcnQgeyBTaENvbnRleHRNZW51Q29tcG9uZW50IH0gZnJvbSAnLi9zaC1jb250ZXh0LW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IGZyb21FdmVudCwgbWVyZ2UsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHRPcGVuRXZlbnQge1xuXHRkYXRhOiBhbnk7XG5cdHByZXZlbnRPcGVuOiAoKSA9PiB2b2lkO1xuXHRtb3VzZUV2ZW50OiBNb3VzZUV2ZW50O1xufVxuXG5ARGlyZWN0aXZlKHtcblx0c2VsZWN0b3I6ICdbc2hBdHRhY2hNZW51XSdcbn0pXG5leHBvcnQgY2xhc3MgU2hBdHRhY2hNZW51RGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xuXHRASW5wdXQoJ3NoQXR0YWNoTWVudScpIG1lbnU6IFNoQ29udGV4dE1lbnVDb21wb25lbnQ7XG5cdEBJbnB1dCgnc2hNZW51VHJpZ2dlcnMnKSB0cmlnZ2Vyczogc3RyaW5nW107XG5cdEBJbnB1dCgnc2hNZW51RGF0YScpIGRhdGE6IGFueTtcblx0QE91dHB1dCgpIG9wZW4gPSBuZXcgRXZlbnRFbWl0dGVyPENvbnRleHRPcGVuRXZlbnQ+KCk7XG5cdHN1YjogU3Vic2NyaXB0aW9uO1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByaXZhdGUgY3R4U2VydmljZTogU2hDb250ZXh0TWVudVNlcnZpY2UsXG5cdFx0cHJpdmF0ZSBlbG06IEVsZW1lbnRSZWZcblx0KSB7fVxuXG5cdG5nT25Jbml0KCk6IHZvaWQge1xuXHRcdHRoaXMuc2V0dXBFdmVudHMoKTtcblx0fVxuXG5cdHByaXZhdGUgc2V0dXBFdmVudHMoKSB7XG5cdFx0Y29uc3Qgb2JzZXJ2YWJsZXMgPSBbXTtcblxuXHRcdGlmICghdGhpcy50cmlnZ2Vycykge1xuXHRcdFx0b2JzZXJ2YWJsZXMucHVzaChmcm9tRXZlbnQodGhpcy5lbG0ubmF0aXZlRWxlbWVudCwgJ2NvbnRleHRtZW51JykpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnRyaWdnZXJzLmZvckVhY2godCA9PiB7XG5cdFx0XHRcdG9ic2VydmFibGVzLnB1c2goZnJvbUV2ZW50KHRoaXMuZWxtLm5hdGl2ZUVsZW1lbnQsIHQpKTtcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdHRoaXMuc3ViID0gbWVyZ2UoLi4ub2JzZXJ2YWJsZXMpLnN1YnNjcmliZSh0aGlzLm9wZW5NZW51LmJpbmQodGhpcykpO1xuXHR9XG5cblx0b3Blbk1lbnUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG5cdFx0bGV0IHByZXZlbnRPcGVuID0gZmFsc2U7XG5cdFx0dGhpcy5vcGVuLmVtaXQoe1xuXHRcdFx0ZGF0YTogdGhpcy5kYXRhLFxuXHRcdFx0bW91c2VFdmVudDogZXZlbnQsXG5cdFx0XHRwcmV2ZW50T3BlbjogKCkgPT4ge1xuXHRcdFx0XHRwcmV2ZW50T3BlbiA9IHRydWU7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRpZiAocHJldmVudE9wZW4pIHJldHVybjtcblxuXHRcdHRoaXMuY3R4U2VydmljZS5vcGVuTWVudSh7XG5cdFx0XHRtZW51OiB0aGlzLm1lbnUsXG5cdFx0XHRtb3VzZUV2ZW50OiBldmVudCxcblx0XHRcdHRhcmdldEVsZW1lbnQ6IHRoaXMuZWxtLFxuXHRcdFx0ZGF0YTogdGhpcy5kYXRhXG5cdFx0fSk7XG5cdH1cblxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5zdWIpIHtcblx0XHRcdHRoaXMuc3ViLnVuc3Vic2NyaWJlKCk7XG5cdFx0fVxuXHR9XG59XG4iXX0=