@avdbrink/ngx-contextmenu
Version:
An Angular component to show a context menu on an arbitrary component
121 lines (120 loc) • 7.33 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import { Directive, ElementRef, EventEmitter, Input, Output, TemplateRef } from '@angular/core';
export class ContextMenuItemDirective {
/**
* @param {?} template
* @param {?} elementRef
*/
constructor(template, elementRef) {
this.template = template;
this.elementRef = elementRef;
this.divider = false;
this.enabled = true;
this.passive = false;
this.visible = true;
this.execute = new EventEmitter();
this.isActive = false;
this.isActiveParent = false;
}
/**
* @return {?}
*/
get disabled() {
return this.passive ||
this.divider ||
!this.evaluateIfFunction(this.enabled, this.currentItem);
}
/**
* @param {?} value
* @param {?} item
* @return {?}
*/
evaluateIfFunction(value, item) {
if (value instanceof Function) {
return value(item);
}
return value;
}
/**
* @return {?}
*/
setActiveStyles() {
this.isActive = true;
}
/**
* @return {?}
*/
setInactiveStyles() {
this.isActive = false;
}
/**
* @return {?}
*/
setActiveParentStyles() {
this.isActiveParent = true;
}
/**
* @return {?}
*/
setInActiveParentStyles() {
this.isActiveParent = false;
}
/**
* @param {?} item
* @param {?=} $event
* @return {?}
*/
triggerExecute(item, $event) {
if (!this.evaluateIfFunction(this.enabled, item)) {
return;
}
this.execute.emit({ event: $event, item });
}
}
ContextMenuItemDirective.decorators = [
{ type: Directive, args: [{
/* tslint:disable:directive-selector-type */
selector: '[contextMenuItem]',
},] },
];
/** @nocollapse */
ContextMenuItemDirective.ctorParameters = () => [
{ type: TemplateRef },
{ type: ElementRef }
];
ContextMenuItemDirective.propDecorators = {
subMenu: [{ type: Input }],
divider: [{ type: Input }],
enabled: [{ type: Input }],
passive: [{ type: Input }],
visible: [{ type: Input }],
execute: [{ type: Output }]
};
function ContextMenuItemDirective_tsickle_Closure_declarations() {
/** @type {?} */
ContextMenuItemDirective.prototype.subMenu;
/** @type {?} */
ContextMenuItemDirective.prototype.divider;
/** @type {?} */
ContextMenuItemDirective.prototype.enabled;
/** @type {?} */
ContextMenuItemDirective.prototype.passive;
/** @type {?} */
ContextMenuItemDirective.prototype.visible;
/** @type {?} */
ContextMenuItemDirective.prototype.execute;
/** @type {?} */
ContextMenuItemDirective.prototype.currentItem;
/** @type {?} */
ContextMenuItemDirective.prototype.isActive;
/** @type {?} */
ContextMenuItemDirective.prototype.isActiveParent;
/** @type {?} */
ContextMenuItemDirective.prototype.template;
/** @type {?} */
ContextMenuItemDirective.prototype.elementRef;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dE1lbnUuaXRlbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYXZkYnJpbmsvbmd4LWNvbnRleHRtZW51LyIsInNvdXJjZXMiOlsibGliL2NvbnRleHRNZW51Lml0ZW0uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFPaEcsTUFBTTs7Ozs7SUFpQkosWUFBbUIsUUFBb0MsRUFBUyxVQUFzQjtRQUFuRSxhQUFRLEdBQVIsUUFBUSxDQUE0QjtRQUFTLGVBQVUsR0FBVixVQUFVLENBQVk7dUJBZjVELEtBQUs7dUJBQytCLElBQUk7dUJBQ3hDLEtBQUs7dUJBQytCLElBQUk7dUJBQ0ksSUFBSSxZQUFZLEVBQUU7d0JBR3RFLEtBQUs7OEJBQ0MsS0FBSztLQU84RDs7OztRQU5oRixRQUFRO1FBQ2pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTztZQUNqQixJQUFJLENBQUMsT0FBTztZQUNaLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDOzs7Ozs7O0lBS3RELGtCQUFrQixDQUFDLEtBQVUsRUFBRSxJQUFTO1FBQzdDLEVBQUUsQ0FBQyxDQUFDLEtBQUssWUFBWSxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDcEI7UUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDOzs7OztJQUdSLGVBQWU7UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7Ozs7O0lBRWhCLGlCQUFpQjtRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQzs7Ozs7SUFHakIscUJBQXFCO1FBQzFCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDOzs7OztJQUV0Qix1QkFBdUI7UUFDNUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7Ozs7Ozs7SUFHdkIsY0FBYyxDQUFDLElBQVMsRUFBRSxNQUFtQztRQUNsRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRCxNQUFNLENBQUM7U0FDUjtRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDOzs7O1lBakQ5QyxTQUFTLFNBQUM7O2dCQUVULFFBQVEsRUFBRSxtQkFBbUI7YUFFOUI7Ozs7WUFONEQsV0FBVztZQUFwRCxVQUFVOzs7c0JBUTNCLEtBQUs7c0JBQ0wsS0FBSztzQkFDTCxLQUFLO3NCQUNMLEtBQUs7c0JBQ0wsS0FBSztzQkFDTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGlnaGxpZ2h0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgLyogdHNsaW50OmRpc2FibGU6ZGlyZWN0aXZlLXNlbGVjdG9yLXR5cGUgKi9cbiAgc2VsZWN0b3I6ICdbY29udGV4dE1lbnVJdGVtXScsXG4gIC8qIHRzbGludDplbmFibGU6ZGlyZWN0aXZlLXNlbGVjdG9yLXR5cGUgKi9cbn0pXG5leHBvcnQgY2xhc3MgQ29udGV4dE1lbnVJdGVtRGlyZWN0aXZlIGltcGxlbWVudHMgSGlnaGxpZ2h0YWJsZSB7XG4gIEBJbnB1dCgpIHB1YmxpYyBzdWJNZW51OiBhbnk7XG4gIEBJbnB1dCgpIHB1YmxpYyBkaXZpZGVyID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBlbmFibGVkOiBib29sZWFuIHwgKChpdGVtOiBhbnkpID0+IGJvb2xlYW4pID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIHBhc3NpdmUgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIHZpc2libGU6IGJvb2xlYW4gfCAoKGl0ZW06IGFueSkgPT4gYm9vbGVhbikgPSB0cnVlO1xuICBAT3V0cHV0KCkgcHVibGljIGV4ZWN1dGU6IEV2ZW50RW1pdHRlcjx7IGV2ZW50OiBFdmVudCwgaXRlbTogYW55IH0+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyBjdXJyZW50SXRlbTogYW55O1xuICBwdWJsaWMgaXNBY3RpdmUgPSBmYWxzZTtcbiAgcHVibGljIGlzQWN0aXZlUGFyZW50ID0gZmFsc2U7XG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFzc2l2ZSB8fFxuICAgICAgdGhpcy5kaXZpZGVyIHx8XG4gICAgICAhdGhpcy5ldmFsdWF0ZUlmRnVuY3Rpb24odGhpcy5lbmFibGVkLCB0aGlzLmN1cnJlbnRJdGVtKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8eyBpdGVtOiBhbnkgfT4sIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7IH1cblxuICBwdWJsaWMgZXZhbHVhdGVJZkZ1bmN0aW9uKHZhbHVlOiBhbnksIGl0ZW06IGFueSk6IGFueSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgIHJldHVybiB2YWx1ZShpdGVtKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHVibGljIHNldEFjdGl2ZVN0eWxlcygpOiB2b2lkIHtcbiAgICB0aGlzLmlzQWN0aXZlID0gdHJ1ZTtcbiAgfVxuICBwdWJsaWMgc2V0SW5hY3RpdmVTdHlsZXMoKTogdm9pZCB7XG4gICAgdGhpcy5pc0FjdGl2ZSA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHNldEFjdGl2ZVBhcmVudFN0eWxlcygpOiB2b2lkIHtcbiAgICB0aGlzLmlzQWN0aXZlUGFyZW50ID0gdHJ1ZTtcbiAgfVxuICBwdWJsaWMgc2V0SW5BY3RpdmVQYXJlbnRTdHlsZXMoKTogdm9pZCB7XG4gICAgdGhpcy5pc0FjdGl2ZVBhcmVudCA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHRyaWdnZXJFeGVjdXRlKGl0ZW06IGFueSwgJGV2ZW50PzogTW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZXZhbHVhdGVJZkZ1bmN0aW9uKHRoaXMuZW5hYmxlZCwgaXRlbSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5leGVjdXRlLmVtaXQoeyBldmVudDogJGV2ZW50LCBpdGVtIH0pO1xuICB9XG59XG4iXX0=