@true-directive/grid
Version:
Angular Data Grid from Yopsilon.
114 lines • 11.6 kB
JavaScript
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=