UNPKG

ng2-right-click-menu

Version:
133 lines 8.58 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ 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; } export class ShAttachMenuDirective { /** * @param {?} ctxService * @param {?} elm */ constructor(ctxService, elm) { this.ctxService = ctxService; this.elm = elm; this.open = new EventEmitter(); } /** * @return {?} */ ngOnInit() { this.setupEvents(); } /** * @private * @return {?} */ setupEvents() { /** @type {?} */ const observables = []; if (!this.triggers) { observables.push(fromEvent(this.elm.nativeElement, 'contextmenu')); } else { this.triggers.forEach((/** * @param {?} t * @return {?} */ t => { observables.push(fromEvent(this.elm.nativeElement, t)); })); } this.sub = merge(...observables).subscribe(this.openMenu.bind(this)); } /** * @param {?} event * @return {?} */ openMenu(event) { event.preventDefault(); event.stopPropagation(); /** @type {?} */ let preventOpen = false; this.open.emit({ data: this.data, mouseEvent: event, preventOpen: (/** * @return {?} */ () => { preventOpen = true; }) }); if (preventOpen) return; this.ctxService.openMenu({ menu: this.menu, mouseEvent: event, targetElement: this.elm, data: this.data }); } /** * @return {?} */ ngOnDestroy() { if (this.sub) { this.sub.unsubscribe(); } } } ShAttachMenuDirective.decorators = [ { type: Directive, args: [{ selector: '[shAttachMenu]' },] } ]; /** @nocollapse */ ShAttachMenuDirective.ctorParameters = () => [ { type: ShContextMenuService }, { type: ElementRef } ]; ShAttachMenuDirective.propDecorators = { menu: [{ type: Input, args: ['shAttachMenu',] }], triggers: [{ type: Input, args: ['shMenuTriggers',] }], data: [{ type: Input, args: ['shMenuData',] }], open: [{ type: Output }] }; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2gtYXR0YWNoLW1lbnUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmcyLXJpZ2h0LWNsaWNrLW1lbnUvIiwic291cmNlcyI6WyJsaWIvc2gtYXR0YWNoLW1lbnUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQ04sU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBZ0IsTUFBTSxNQUFNLENBQUM7Ozs7QUFFdEQsc0NBSUM7OztJQUhBLGdDQUFVOztJQUNWLHVDQUF3Qjs7SUFDeEIsc0NBQXVCOztBQU14QixNQUFNLE9BQU8scUJBQXFCOzs7OztJQU9qQyxZQUNTLFVBQWdDLEVBQ2hDLEdBQWU7UUFEZixlQUFVLEdBQVYsVUFBVSxDQUFzQjtRQUNoQyxRQUFHLEdBQUgsR0FBRyxDQUFZO1FBTGQsU0FBSSxHQUFHLElBQUksWUFBWSxFQUFvQixDQUFDO0lBTW5ELENBQUM7Ozs7SUFFSixRQUFRO1FBQ1AsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3BCLENBQUM7Ozs7O0lBRU8sV0FBVzs7Y0FDWixXQUFXLEdBQUcsRUFBRTtRQUV0QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNuQixXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDO1NBQ25FO2FBQU07WUFDTixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU87Ozs7WUFBQyxDQUFDLENBQUMsRUFBRTtnQkFDekIsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4RCxDQUFDLEVBQUMsQ0FBQztTQUNIO1FBRUQsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDOzs7OztJQUVELFFBQVEsQ0FBQyxLQUFpQjtRQUN6QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDOztZQUVwQixXQUFXLEdBQUcsS0FBSztRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUNkLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFdBQVc7OztZQUFFLEdBQUcsRUFBRTtnQkFDakIsV0FBVyxHQUFHLElBQUksQ0FBQztZQUNwQixDQUFDLENBQUE7U0FDRCxDQUFDLENBQUM7UUFFSCxJQUFJLFdBQVc7WUFBRSxPQUFPO1FBRXhCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO1lBQ3hCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLGFBQWEsRUFBRSxJQUFJLENBQUMsR0FBRztZQUN2QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDZixDQUFDLENBQUM7SUFDSixDQUFDOzs7O0lBRUQsV0FBVztRQUNWLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNiLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdkI7SUFDRixDQUFDOzs7WUE1REQsU0FBUyxTQUFDO2dCQUNWLFFBQVEsRUFBRSxnQkFBZ0I7YUFDMUI7Ozs7WUFaUSxvQkFBb0I7WUFQNUIsVUFBVTs7O21CQXFCVCxLQUFLLFNBQUMsY0FBYzt1QkFDcEIsS0FBSyxTQUFDLGdCQUFnQjttQkFDdEIsS0FBSyxTQUFDLFlBQVk7bUJBQ2xCLE1BQU07Ozs7SUFIUCxxQ0FBb0Q7O0lBQ3BELHlDQUE0Qzs7SUFDNUMscUNBQStCOztJQUMvQixxQ0FBc0Q7O0lBQ3RELG9DQUFrQjs7Ozs7SUFHakIsMkNBQXdDOzs7OztJQUN4QyxvQ0FBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHREaXJlY3RpdmUsXG5cdEVsZW1lbnRSZWYsXG5cdEV2ZW50RW1pdHRlcixcblx0SW5wdXQsXG5cdE9uRGVzdHJveSxcblx0T25Jbml0LFxuXHRPdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTaENvbnRleHRNZW51U2VydmljZSB9IGZyb20gJy4vc2gtY29udGV4dC1tZW51LnNlcnZpY2UnO1xuaW1wb3J0IHsgU2hDb250ZXh0TWVudUNvbXBvbmVudCB9IGZyb20gJy4vc2gtY29udGV4dC1tZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIG1lcmdlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGludGVyZmFjZSBDb250ZXh0T3BlbkV2ZW50IHtcblx0ZGF0YTogYW55O1xuXHRwcmV2ZW50T3BlbjogKCkgPT4gdm9pZDtcblx0bW91c2VFdmVudDogTW91c2VFdmVudDtcbn1cblxuQERpcmVjdGl2ZSh7XG5cdHNlbGVjdG9yOiAnW3NoQXR0YWNoTWVudV0nXG59KVxuZXhwb3J0IGNsYXNzIFNoQXR0YWNoTWVudURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcblx0QElucHV0KCdzaEF0dGFjaE1lbnUnKSBtZW51OiBTaENvbnRleHRNZW51Q29tcG9uZW50O1xuXHRASW5wdXQoJ3NoTWVudVRyaWdnZXJzJykgdHJpZ2dlcnM6IHN0cmluZ1tdO1xuXHRASW5wdXQoJ3NoTWVudURhdGEnKSBkYXRhOiBhbnk7XG5cdEBPdXRwdXQoKSBvcGVuID0gbmV3IEV2ZW50RW1pdHRlcjxDb250ZXh0T3BlbkV2ZW50PigpO1xuXHRzdWI6IFN1YnNjcmlwdGlvbjtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIGN0eFNlcnZpY2U6IFNoQ29udGV4dE1lbnVTZXJ2aWNlLFxuXHRcdHByaXZhdGUgZWxtOiBFbGVtZW50UmVmXG5cdCkge31cblxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcblx0XHR0aGlzLnNldHVwRXZlbnRzKCk7XG5cdH1cblxuXHRwcml2YXRlIHNldHVwRXZlbnRzKCkge1xuXHRcdGNvbnN0IG9ic2VydmFibGVzID0gW107XG5cblx0XHRpZiAoIXRoaXMudHJpZ2dlcnMpIHtcblx0XHRcdG9ic2VydmFibGVzLnB1c2goZnJvbUV2ZW50KHRoaXMuZWxtLm5hdGl2ZUVsZW1lbnQsICdjb250ZXh0bWVudScpKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy50cmlnZ2Vycy5mb3JFYWNoKHQgPT4ge1xuXHRcdFx0XHRvYnNlcnZhYmxlcy5wdXNoKGZyb21FdmVudCh0aGlzLmVsbS5uYXRpdmVFbGVtZW50LCB0KSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHR0aGlzLnN1YiA9IG1lcmdlKC4uLm9ic2VydmFibGVzKS5zdWJzY3JpYmUodGhpcy5vcGVuTWVudS5iaW5kKHRoaXMpKTtcblx0fVxuXG5cdG9wZW5NZW51KGV2ZW50OiBNb3VzZUV2ZW50KSB7XG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuXHRcdGxldCBwcmV2ZW50T3BlbiA9IGZhbHNlO1xuXHRcdHRoaXMub3Blbi5lbWl0KHtcblx0XHRcdGRhdGE6IHRoaXMuZGF0YSxcblx0XHRcdG1vdXNlRXZlbnQ6IGV2ZW50LFxuXHRcdFx0cHJldmVudE9wZW46ICgpID0+IHtcblx0XHRcdFx0cHJldmVudE9wZW4gPSB0cnVlO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0aWYgKHByZXZlbnRPcGVuKSByZXR1cm47XG5cblx0XHR0aGlzLmN0eFNlcnZpY2Uub3Blbk1lbnUoe1xuXHRcdFx0bWVudTogdGhpcy5tZW51LFxuXHRcdFx0bW91c2VFdmVudDogZXZlbnQsXG5cdFx0XHR0YXJnZXRFbGVtZW50OiB0aGlzLmVsbSxcblx0XHRcdGRhdGE6IHRoaXMuZGF0YVxuXHRcdH0pO1xuXHR9XG5cblx0bmdPbkRlc3Ryb3koKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuc3ViKSB7XG5cdFx0XHR0aGlzLnN1Yi51bnN1YnNjcmliZSgpO1xuXHRcdH1cblx0fVxufVxuIl19