UNPKG

@true-directive/grid

Version:

Angular Data Grid from Yopsilon.

114 lines 11.6 kB
import * as tslib_1 from "tslib"; /** * Copyright (c) 2018-2019 Aleksey Melnikov, True Directive Company. * @link https://truedirective.com/ * @license MIT */ import { Component, Input, Output, EventEmitter, ContentChildren, QueryList, ViewChild } from '@angular/core'; import { MenuItemComponent } from './menu-item.component'; let MenuComponent = class MenuComponent { constructor() { this.closed = new EventEmitter(); this.show = new EventEmitter(); this.position = 'RELATIVE'; this._parentMenu = null; } popupClosed(e) { this.closeSubMenus(null); this.closed.emit(); } popupShow(e) { this.show.emit(); } get visible() { return this.popup.visible; } showByXY(x, y) { this.popup.showByXY(x, y); } showByTarget(target = null, direction = '', parentMenu = null) { this._parentMenu = parentMenu; this.popup.showByTarget(target, direction); } togglePopup(target = null, direction = '', parentMenu = null) { if (!this.visible) { this._parentMenu = parentMenu; this.popup.showByTarget(target, direction); } else this.popup.closePopup(target, direction); } closeSubMenus(sender) { this.items.forEach(item => { if (item !== sender) item.closeSubMenu(); }); } closePopup(withParent = true) { if (this._parentMenu !== null && withParent) this._parentMenu.closePopup(true); this.popup.closePopup(); } addSubscription(s) { if (!this._subscription) { this._subscription = s; } else { this._subscription.add(s); } } ngAfterContentInit() { if (this._subscription) { this._subscription.unsubscribe(); } this.items.forEach(item => { item.parentMenu = this; const sbme = item.onMouseEnter.subscribe(e => this.closeSubMenus(e)); this.addSubscription(sbme); const sbc = item.onClick.subscribe(e => this.closePopup(true)); this.addSubscription(sbc); }); } ngOnDestroy() { if (this._subscription) { this._subscription.unsubscribe(); } } }; tslib_1.__decorate([ ViewChild('popup', { static: true }), tslib_1.__metadata("design:type", Object) ], MenuComponent.prototype, "popup", void 0); tslib_1.__decorate([ Output('closed'), tslib_1.__metadata("design:type", EventEmitter) ], MenuComponent.prototype, "closed", void 0); tslib_1.__decorate([ Output('show'), tslib_1.__metadata("design:type", EventEmitter) ], MenuComponent.prototype, "show", void 0); tslib_1.__decorate([ Input(), tslib_1.__metadata("design:type", String) ], MenuComponent.prototype, "position", void 0); tslib_1.__decorate([ ContentChildren(MenuItemComponent), tslib_1.__metadata("design:type", QueryList) ], MenuComponent.prototype, "items", void 0); MenuComponent = tslib_1.__decorate([ Component({ selector: 'true-menu', template: ` <true-popup #popup [position]="position" (closed)="popupClosed($event)" (show)="popupShow($event)"> <div class="true-menu"> <ng-content></ng-content> </div> </true-popup> ` }) ], MenuComponent); export { MenuComponent }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdHJ1ZS1kaXJlY3RpdmUvZ3JpZC8iLCJzb3VyY2VzIjpbInNyYy9jb250cm9scy9tZW51LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7RUFJRTtBQUNGLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWUsZUFBZSxFQUFFLFNBQVMsRUFFakUsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBR25FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBYzFELElBQWEsYUFBYSxHQUExQixNQUFhLGFBQWE7SUFaMUI7UUFrQkUsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBR3BELFNBQUksR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUdsRCxhQUFRLEdBQVcsVUFBVSxDQUFDO1FBSTlCLGdCQUFXLEdBQWtCLElBQUksQ0FBQztJQTBFcEMsQ0FBQztJQXhFQyxXQUFXLENBQUMsQ0FBTTtRQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFNBQVMsQ0FBQyxDQUFNO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUM1QixDQUFDO0lBRU0sUUFBUSxDQUFDLENBQVMsRUFBRSxDQUFTO1FBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRU0sWUFBWSxDQUFDLFNBQWMsSUFBSSxFQUFFLFlBQW9CLEVBQUUsRUFBRSxhQUE0QixJQUFJO1FB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RUFBRTs7Ozs7Ozs7O0dBU1Q7S0FBQyxDQUFDO0dBQ1EsYUFBYSxDQTBGekI7U0ExRlksYUFBYSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAxOSBBbGVrc2V5IE1lbG5pa292LCBUcnVlIERpcmVjdGl2ZSBDb21wYW55LlxyXG4gKiBAbGluayBodHRwczovL3RydWVkaXJlY3RpdmUuY29tL1xyXG4gKiBAbGljZW5zZSBNSVRcclxuKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBDb250ZW50Q2hpbGRyZW4sIFF1ZXJ5TGlzdCxcclxuICAgICAgICAgQWZ0ZXJDb250ZW50SW5pdCxcclxuICAgICAgICAgVmlld0NoaWxkcmVuLCBWaWV3Q2hpbGQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IE1lbnVJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9tZW51LWl0ZW0uY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHJ1ZS1tZW51JyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPHRydWUtcG9wdXAgI3BvcHVwXHJcbiAgICAgIFtwb3NpdGlvbl09XCJwb3NpdGlvblwiXHJcbiAgICAgIChjbG9zZWQpPVwicG9wdXBDbG9zZWQoJGV2ZW50KVwiXHJcbiAgICAgIChzaG93KT1cInBvcHVwU2hvdygkZXZlbnQpXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0cnVlLW1lbnVcIj5cclxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC90cnVlLXBvcHVwPlxyXG4gIGB9KVxyXG5leHBvcnQgY2xhc3MgTWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgQWZ0ZXJDb250ZW50SW5pdCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3BvcHVwJywge3N0YXRpYzogdHJ1ZX0pXHJcbiAgcG9wdXA6IGFueTtcclxuXHJcbiAgQE91dHB1dCgnY2xvc2VkJylcclxuICBjbG9zZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoJ3Nob3cnKVxyXG4gIHNob3c6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcG9zaXRpb246IHN0cmluZyA9ICdSRUxBVElWRSc7XHJcblxyXG4gIEBDb250ZW50Q2hpbGRyZW4oTWVudUl0ZW1Db21wb25lbnQpIGl0ZW1zOiBRdWVyeUxpc3Q8TWVudUl0ZW1Db21wb25lbnQ+O1xyXG5cclxuICBfcGFyZW50TWVudTogTWVudUNvbXBvbmVudCA9IG51bGw7XHJcblxyXG4gIHBvcHVwQ2xvc2VkKGU6IGFueSkge1xyXG4gICAgdGhpcy5jbG9zZVN1Yk1lbnVzKG51bGwpO1xyXG4gICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcG9wdXBTaG93KGU6IGFueSkge1xyXG4gICAgdGhpcy5zaG93LmVtaXQoKTtcclxuICB9XHJcblxyXG4gIGdldCB2aXNpYmxlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucG9wdXAudmlzaWJsZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93QnlYWSh4OiBudW1iZXIsIHk6IG51bWJlcikge1xyXG4gICAgdGhpcy5wb3B1cC5zaG93QnlYWSh4LCB5KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93QnlUYXJnZXQodGFyZ2V0OiBhbnkgPSBudWxsLCBkaXJlY3Rpb246IHN0cmluZyA9ICcnLCBwYXJlbnRNZW51OiBNZW51Q29tcG9uZW50ID0gbnVsbCkge1xyXG4gICAgdGhpcy5fcGFyZW50TWVudSA9IHBhcmVudE1lbnU7XHJcbiAgICB0aGlzLnBvcHVwLnNob3dCeVRhcmdldCh0YXJnZXQsIGRpcmVjdGlvbik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdG9nZ2xlUG9wdXAodGFyZ2V0OiBhbnkgPSBudWxsLCBkaXJlY3Rpb246IHN0cmluZyA9ICcnLCBwYXJlbnRNZW51OiBNZW51Q29tcG9uZW50ID0gbnVsbCkge1xyXG4gICAgaWYgKCF0aGlzLnZpc2libGUpIHtcclxuICAgICAgdGhpcy5fcGFyZW50TWVudSA9IHBhcmVudE1lbnU7XHJcbiAgICAgIHRoaXMucG9wdXAuc2hvd0J5VGFyZ2V0KHRhcmdldCwgZGlyZWN0aW9uKTtcclxuICAgIH0gZWxzZVxyXG4gICAgICB0aGlzLnBvcHVwLmNsb3NlUG9wdXAodGFyZ2V0LCBkaXJlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsb3NlU3ViTWVudXMoc2VuZGVyOiBhbnkpIHtcclxuICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgaWYgKGl0ZW0gIT09IHNlbmRlcilcclxuICAgICAgICBpdGVtLmNsb3NlU3ViTWVudSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xvc2VQb3B1cCh3aXRoUGFyZW50OiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgaWYgKHRoaXMuX3BhcmVudE1lbnUgIT09IG51bGwgJiYgd2l0aFBhcmVudClcclxuICAgICAgdGhpcy5fcGFyZW50TWVudS5jbG9zZVBvcHVwKHRydWUpO1xyXG4gICAgdGhpcy5wb3B1cC5jbG9zZVBvcHVwKCk7XHJcbiAgfVxyXG5cclxuICBfc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gIHByaXZhdGUgYWRkU3Vic2NyaXB0aW9uKHM6IFN1YnNjcmlwdGlvbikge1xyXG4gICAgaWYgKCF0aGlzLl9zdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uID0gcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQocyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICBpZiAodGhpcy5fc3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgaXRlbS5wYXJlbnRNZW51ID0gdGhpcztcclxuICAgICAgY29uc3Qgc2JtZSA9IGl0ZW0ub25Nb3VzZUVudGVyLnN1YnNjcmliZShlID0+IHRoaXMuY2xvc2VTdWJNZW51cyhlKSk7XHJcbiAgICAgIHRoaXMuYWRkU3Vic2NyaXB0aW9uKHNibWUpO1xyXG4gICAgICBjb25zdCBzYmMgPSBpdGVtLm9uQ2xpY2suc3Vic2NyaWJlKGUgPT4gdGhpcy5jbG9zZVBvcHVwKHRydWUpKTtcclxuICAgICAgdGhpcy5hZGRTdWJzY3JpcHRpb24oc2JjKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICBpZiAodGhpcy5fc3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=