| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 |
- /**
- * @fileoverview added by tsickle
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
- */
- import * as tslib_1 from "tslib";
- import { ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, Inject, Input, Optional, Output, QueryList, ViewChild, ViewEncapsulation, } from '@angular/core';
- import { Subscription } from 'rxjs';
- import { first } from 'rxjs/operators';
- import { ContextMenuItemDirective } from './contextMenu.item.directive';
- import { ContextMenuService } from './contextMenu.service';
- import { CONTEXT_MENU_OPTIONS } from './contextMenu.tokens';
- /**
- * @record
- */
- export function ILinkConfig() { }
- if (false) {
- /** @type {?} */
- ILinkConfig.prototype.click;
- /** @type {?|undefined} */
- ILinkConfig.prototype.enabled;
- /** @type {?} */
- ILinkConfig.prototype.html;
- }
- /**
- * @record
- */
- export function MouseLocation() { }
- if (false) {
- /** @type {?|undefined} */
- MouseLocation.prototype.left;
- /** @type {?|undefined} */
- MouseLocation.prototype.marginLeft;
- /** @type {?|undefined} */
- MouseLocation.prototype.marginTop;
- /** @type {?|undefined} */
- MouseLocation.prototype.top;
- }
- var ContextMenuComponent = /** @class */ (function () {
- function ContextMenuComponent(_contextMenuService, changeDetector, elementRef, options) {
- var _this = this;
- this._contextMenuService = _contextMenuService;
- this.changeDetector = changeDetector;
- this.elementRef = elementRef;
- this.options = options;
- this.menuClass = "";
- this.autoFocus = false;
- this.useBootstrap4 = false;
- this.disabled = false;
- this.close = new EventEmitter();
- this.open = new EventEmitter();
- this.visibleMenuItems = [];
- this.links = [];
- this.subscription = new Subscription();
- if (options) {
- this.autoFocus = options.autoFocus;
- this.useBootstrap4 = options.useBootstrap4;
- }
- this.subscription.add(_contextMenuService.show.subscribe((/**
- * @param {?} menuEvent
- * @return {?}
- */
- function (menuEvent) {
- _this.onMenuEvent(menuEvent);
- })));
- }
- /**
- * @return {?}
- */
- ContextMenuComponent.prototype.ngOnDestroy = /**
- * @return {?}
- */
- function () {
- this.subscription.unsubscribe();
- };
- /**
- * @param {?} menuEvent
- * @return {?}
- */
- ContextMenuComponent.prototype.onMenuEvent = /**
- * @param {?} menuEvent
- * @return {?}
- */
- function (menuEvent) {
- var _this = this;
- if (this.disabled) {
- return;
- }
- var contextMenu = menuEvent.contextMenu, event = menuEvent.event, item = menuEvent.item;
- if (contextMenu && contextMenu !== this) {
- return;
- }
- this.event = event;
- this.item = item;
- this.setVisibleMenuItems();
- this._contextMenuService.openContextMenu(tslib_1.__assign({}, menuEvent, { menuItems: this.visibleMenuItems, menuClass: this.menuClass }));
- this._contextMenuService.close.asObservable().pipe(first()).subscribe((/**
- * @param {?} closeEvent
- * @return {?}
- */
- function (closeEvent) { return _this.close.emit(closeEvent); }));
- this.open.next(menuEvent);
- };
- /**
- * @param {?} menuItem
- * @return {?}
- */
- ContextMenuComponent.prototype.isMenuItemVisible = /**
- * @param {?} menuItem
- * @return {?}
- */
- function (menuItem) {
- return this.evaluateIfFunction(menuItem.visible);
- };
- /**
- * @return {?}
- */
- ContextMenuComponent.prototype.setVisibleMenuItems = /**
- * @return {?}
- */
- function () {
- var _this = this;
- this.visibleMenuItems = this.menuItems.filter((/**
- * @param {?} menuItem
- * @return {?}
- */
- function (menuItem) { return _this.isMenuItemVisible(menuItem); }));
- };
- /**
- * @param {?} value
- * @return {?}
- */
- ContextMenuComponent.prototype.evaluateIfFunction = /**
- * @param {?} value
- * @return {?}
- */
- function (value) {
- if (value instanceof Function) {
- return value(this.item);
- }
- return value;
- };
- ContextMenuComponent.decorators = [
- { type: Component, args: [{
- encapsulation: ViewEncapsulation.None,
- selector: 'context-menu',
- template: " ",
- styles: ["\n .cdk-overlay-container {\n position: fixed;\n z-index: 1000;\n pointer-events: none;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n }\n .ngx-contextmenu.cdk-overlay-pane {\n position: absolute;\n pointer-events: auto;\n box-sizing: border-box;\n }\n "]
- }] }
- ];
- /** @nocollapse */
- ContextMenuComponent.ctorParameters = function () { return [
- { type: ContextMenuService },
- { type: ChangeDetectorRef },
- { type: ElementRef },
- { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [CONTEXT_MENU_OPTIONS,] }] }
- ]; };
- ContextMenuComponent.propDecorators = {
- menuClass: [{ type: Input }],
- autoFocus: [{ type: Input }],
- useBootstrap4: [{ type: Input }],
- disabled: [{ type: Input }],
- close: [{ type: Output }],
- open: [{ type: Output }],
- menuItems: [{ type: ContentChildren, args: [ContextMenuItemDirective,] }],
- menuElement: [{ type: ViewChild, args: ['menu', { static: false },] }]
- };
- return ContextMenuComponent;
- }());
- export { ContextMenuComponent };
- if (false) {
- /** @type {?} */
- ContextMenuComponent.prototype.menuClass;
- /** @type {?} */
- ContextMenuComponent.prototype.autoFocus;
- /** @type {?} */
- ContextMenuComponent.prototype.useBootstrap4;
- /** @type {?} */
- ContextMenuComponent.prototype.disabled;
- /** @type {?} */
- ContextMenuComponent.prototype.close;
- /** @type {?} */
- ContextMenuComponent.prototype.open;
- /** @type {?} */
- ContextMenuComponent.prototype.menuItems;
- /** @type {?} */
- ContextMenuComponent.prototype.menuElement;
- /** @type {?} */
- ContextMenuComponent.prototype.visibleMenuItems;
- /** @type {?} */
- ContextMenuComponent.prototype.links;
- /** @type {?} */
- ContextMenuComponent.prototype.item;
- /** @type {?} */
- ContextMenuComponent.prototype.event;
- /**
- * @type {?}
- * @private
- */
- ContextMenuComponent.prototype.subscription;
- /**
- * @type {?}
- * @private
- */
- ContextMenuComponent.prototype._contextMenuService;
- /**
- * @type {?}
- * @private
- */
- ContextMenuComponent.prototype.changeDetector;
- /**
- * @type {?}
- * @private
- */
- ContextMenuComponent.prototype.elementRef;
- /**
- * @type {?}
- * @private
- */
- ContextMenuComponent.prototype.options;
- }
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dE1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWNvbnRleHRtZW51LyIsInNvdXJjZXMiOlsibGliL2NvbnRleHRNZW51LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUVaLE1BQU0sRUFDTixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUNULGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUV4RSxPQUFPLEVBQUUsa0JBQWtCLEVBQWlELE1BQU0sdUJBQXVCLENBQUM7QUFDMUcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7QUFFNUQsaUNBSUM7OztJQUhDLDRCQUFnRDs7SUFDaEQsOEJBQWlDOztJQUNqQywyQkFBNEI7Ozs7O0FBRTlCLG1DQUtDOzs7SUFKQyw2QkFBYzs7SUFDZCxtQ0FBb0I7O0lBQ3BCLGtDQUFtQjs7SUFDbkIsNEJBQWE7O0FBR2Y7SUFxQ0UsOEJBQ1UsbUJBQXVDLEVBQ3ZDLGNBQWlDLEVBQ2pDLFVBQXNCLEVBRVEsT0FBNEI7UUFMcEUsaUJBY0M7UUFiUyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO1FBQ3ZDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBRVEsWUFBTyxHQUFQLE9BQU8sQ0FBcUI7UUFwQnBELGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGtC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QVU7Z0RBeUVULFFBQVEsWUFDUixNQUFNLFNBQUMsb0JBQW9COzs7NEJBcEI3QixLQUFLOzRCQUNMLEtBQUs7Z0NBQ0wsS0FBSzsyQkFDTCxLQUFLO3dCQUNMLE1BQU07dUJBQ04sTUFBTTs0QkFDTixlQUFlLFNBQUMsd0JBQXdCOzhCQUN4QyxTQUFTLFNBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs7SUEwRHRDLDJCQUFDO0NBQUEsQUF2RkQsSUF1RkM7U0FsRVksb0JBQW9COzs7SUFDL0IseUNBQStCOztJQUMvQix5Q0FBa0M7O0lBQ2xDLDZDQUFzQzs7SUFDdEMsd0NBQWlDOztJQUNqQyxxQ0FBaUY7O0lBQ2pGLG9DQUFpRjs7SUFDakYseUNBQWlHOztJQUNqRywyQ0FBcUU7O0lBQ3JFLGdEQUF5RDs7SUFFekQscUNBQWlDOztJQUNqQyxvQ0FBaUI7O0lBQ2pCLHFDQUF5Qzs7Ozs7SUFDekMsNENBQXdEOzs7OztJQUd0RCxtREFBK0M7Ozs7O0lBQy9DLDhDQUF5Qzs7Ozs7SUFDekMsMENBQThCOzs7OztJQUM5Qix1Q0FDa0UiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQ29udGV4dE1lbnVJdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi9jb250ZXh0TWVudS5pdGVtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJQ29udGV4dE1lbnVPcHRpb25zIH0gZnJvbSAnLi9jb250ZXh0TWVudS5vcHRpb25zJztcbmltcG9ydCB7IENvbnRleHRNZW51U2VydmljZSwgSUNvbnRleHRNZW51Q2xpY2tFdmVudCwgQ2xvc2VDb250ZXh0TWVudUV2ZW50IH0gZnJvbSAnLi9jb250ZXh0TWVudS5zZXJ2aWNlJztcbmltcG9ydCB7IENPTlRFWFRfTUVOVV9PUFRJT05TIH0gZnJvbSAnLi9jb250ZXh0TWVudS50b2tlbnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElMaW5rQ29uZmlnIHtcbiAgY2xpY2s6IChpdGVtOiBhbnksICRldmVudD86IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gIGVuYWJsZWQ/OiAoaXRlbTogYW55KSA9PiBib29sZWFuO1xuICBodG1sOiAoaXRlbTogYW55KSA9PiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIE1vdXNlTG9jYXRpb24ge1xuICBsZWZ0Pzogc3RyaW5nO1xuICBtYXJnaW5MZWZ0Pzogc3RyaW5nO1xuICBtYXJnaW5Ub3A/OiBzdHJpbmc7XG4gIHRvcD86IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHNlbGVjdG9yOiAnY29udGV4dC1tZW51JyxcbiAgc3R5bGVzOiBbYFxuICAgIC5jZGstb3ZlcmxheS1jb250YWluZXIge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgei1pbmRleDogMTAwMDtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogMDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIH1cbiAgICAubmd4LWNvbnRleHRtZW51LmNkay1vdmVybGF5LXBhbmUge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87XG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIH1cbiAgYF0sXG4gIHRlbXBsYXRlOiBgIGAsXG59KVxuZXhwb3J0IGNsYXNzIENvbnRleHRNZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcHVibGljIG1lbnVDbGFzcyA9IFwiXCI7XG4gIEBJbnB1dCgpIHB1YmxpYyBhdXRvRm9jdXMgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIHVzZUJvb3RzdHJhcDQgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBwdWJsaWMgY2xvc2U6IEV2ZW50RW1pdHRlcjxDbG9zZUNvbnRleHRNZW51RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcHVibGljIG9wZW46IEV2ZW50RW1pdHRlcjxJQ29udGV4dE1lbnVDbGlja0V2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQENvbnRlbnRDaGlsZHJlbihDb250ZXh0TWVudUl0ZW1EaXJlY3RpdmUpIHB1YmxpYyBtZW51SXRlbXM6IFF1ZXJ5TGlzdDxDb250ZXh0TWVudUl0ZW1EaXJlY3RpdmU+O1xuICBAVmlld0NoaWxkKCdtZW51JywgeyBzdGF0aWM6IGZhbHNlIH0pIHB1YmxpYyBtZW51RWxlbWVudDogRWxlbWVudFJlZjtcbiAgcHVibGljIHZpc2libGVNZW51SXRlbXM6IENvbnRleHRNZW51SXRlbURpcmVjdGl2ZVtdID0gW107XG5cbiAgcHVibGljIGxpbmtzOiBJTGlua0NvbmZpZ1tdID0gW107XG4gIHB1YmxpYyBpdGVtOiBhbnk7XG4gIHB1YmxpYyBldmVudDogTW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQ7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfY29udGV4dE1lbnVTZXJ2aWNlOiBDb250ZXh0TWVudVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChDT05URVhUX01FTlVfT1BUSU9OUykgcHJpdmF0ZSBvcHRpb25zOiBJQ29udGV4dE1lbnVPcHRpb25zLFxuICApIHtcbiAgICBpZiAob3B0aW9ucykge1xuICAgICAgdGhpcy5hdXRvRm9jdXMgPSBvcHRpb25zLmF1dG9Gb2N1cztcbiAgICAgIHRoaXMudXNlQm9vdHN0cmFwNCA9IG9wdGlvbnMudXNlQm9vdHN0cmFwNDtcbiAgICB9XG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKF9jb250ZXh0TWVudVNlcnZpY2Uuc2hvdy5zdWJzY3JpYmUobWVudUV2ZW50ID0+IHtcbiAgICAgIHRoaXMub25NZW51RXZlbnQobWVudUV2ZW50KTtcbiAgICB9KSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbk1lbnVFdmVudChtZW51RXZlbnQ6IElDb250ZXh0TWVudUNsaWNrRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB7IGNvbnRleHRNZW51LCBldmVudCwgaXRlbSB9ID0gbWVudUV2ZW50O1xuICAgIGlmIChjb250ZXh0TWVudSAmJiBjb250ZXh0TWVudSAhPT0gdGhpcykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmV2ZW50ID0gZXZlbnQ7XG4gICAgdGhpcy5pdGVtID0gaXRlbTtcbiAgICB0aGlzLnNldFZpc2libGVNZW51SXRlbXMoKTtcbiAgICB0aGlzLl9jb250ZXh0TWVudVNlcnZpY2Uub3BlbkNvbnRleHRNZW51KHsgLi4ubWVudUV2ZW50LCBtZW51SXRlbXM6IHRoaXMudmlzaWJsZU1lbnVJdGVtcywgbWVudUNsYXNzOiB0aGlzLm1lbnVDbGFzcyB9KTtcbiAgICB0aGlzLl9jb250ZXh0TWVudVNlcnZpY2UuY2xvc2UuYXNPYnNlcnZhYmxlKCkucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoY2xvc2VFdmVudCA9PiB0aGlzLmNsb3NlLmVtaXQoY2xvc2VFdmVudCkpO1xuICAgIHRoaXMub3Blbi5uZXh0KG1lbnVFdmVudCk7XG4gIH1cblxuICBwdWJsaWMgaXNNZW51SXRlbVZpc2libGUobWVudUl0ZW06IENvbnRleHRNZW51SXRlbURpcmVjdGl2ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmV2YWx1YXRlSWZGdW5jdGlvbihtZW51SXRlbS52aXNpYmxlKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRWaXNpYmxlTWVudUl0ZW1zKCk6IHZvaWQge1xuICAgIHRoaXMudmlzaWJsZU1lbnVJdGVtcyA9IHRoaXMubWVudUl0ZW1zLmZpbHRlcihtZW51SXRlbSA9PiB0aGlzLmlzTWVudUl0ZW1WaXNpYmxlKG1lbnVJdGVtKSk7XG4gIH1cblxuICBwdWJsaWMgZXZhbHVhdGVJZkZ1bmN0aW9uKHZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICByZXR1cm4gdmFsdWUodGhpcy5pdGVtKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59XG4iXX0=
|