@true-directive/grid
Version:
Angular Data Grid from Yopsilon.
118 lines • 13 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';
var MenuComponent = /** @class */ (function () {
function MenuComponent() {
this.closed = new EventEmitter();
this.show = new EventEmitter();
this.position = 'RELATIVE';
this._parentMenu = null;
}
MenuComponent.prototype.popupClosed = function (e) {
this.closeSubMenus(null);
this.closed.emit();
};
MenuComponent.prototype.popupShow = function (e) {
this.show.emit();
};
Object.defineProperty(MenuComponent.prototype, "visible", {
get: function () {
return this.popup.visible;
},
enumerable: true,
configurable: true
});
MenuComponent.prototype.showByXY = function (x, y) {
this.popup.showByXY(x, y);
};
MenuComponent.prototype.showByTarget = function (target, direction, parentMenu) {
if (target === void 0) { target = null; }
if (direction === void 0) { direction = ''; }
if (parentMenu === void 0) { parentMenu = null; }
this._parentMenu = parentMenu;
this.popup.showByTarget(target, direction);
};
MenuComponent.prototype.togglePopup = function (target, direction, parentMenu) {
if (target === void 0) { target = null; }
if (direction === void 0) { direction = ''; }
if (parentMenu === void 0) { parentMenu = null; }
if (!this.visible) {
this._parentMenu = parentMenu;
this.popup.showByTarget(target, direction);
}
else
this.popup.closePopup(target, direction);
};
MenuComponent.prototype.closeSubMenus = function (sender) {
this.items.forEach(function (item) {
if (item !== sender)
item.closeSubMenu();
});
};
MenuComponent.prototype.closePopup = function (withParent) {
if (withParent === void 0) { withParent = true; }
if (this._parentMenu !== null && withParent)
this._parentMenu.closePopup(true);
this.popup.closePopup();
};
MenuComponent.prototype.addSubscription = function (s) {
if (!this._subscription) {
this._subscription = s;
}
else {
this._subscription.add(s);
}
};
MenuComponent.prototype.ngAfterContentInit = function () {
var _this = this;
if (this._subscription) {
this._subscription.unsubscribe();
}
this.items.forEach(function (item) {
item.parentMenu = _this;
var sbme = item.onMouseEnter.subscribe(function (e) { return _this.closeSubMenus(e); });
_this.addSubscription(sbme);
var sbc = item.onClick.subscribe(function (e) { return _this.closePopup(true); });
_this.addSubscription(sbc);
});
};
MenuComponent.prototype.ngOnDestroy = function () {
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: "\n <true-popup #popup\n [position]=\"position\"\n (closed)=\"popupClosed($event)\"\n (show)=\"popupShow($event)\">\n <div class=\"true-menu\">\n <ng-content></ng-content>\n </div>\n </true-popup>\n "
})
], MenuComponent);
return MenuComponent;
}());
export { MenuComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdHJ1ZS1kaXJlY3RpdmUvZ3JpZC8iLCJzb3VyY2VzIjpbInNyYy9jb250cm9scy9tZW51LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7RUFJRTtBQUNGLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWUsZUFBZSxFQUFFLFNBQVMsRUFFakUsU0FBUyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBR25FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBYzFEO0lBWkE7UUFrQkUsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBR3BELFNBQUksR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUdsRCxhQUFRLEdBQVcsVUFBVSxDQUFDO1FBSTlCLGdCQUFXLEdBQWtCLElBQUksQ0FBQztJQTBFcEMsQ0FBQztJQXhFQyxtQ0FBVyxHQUFYLFVBQVksQ0FBTTtRQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlDQUFTLEdBQVQsVUFBVSxDQUFNO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsc0JBQUksa0NBQU87YUFBWDtZQUNFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDNUIsQ0FBQzs7O09BQUE7SUFFTSxnQ0FBUSxHQUFmLFVBQWdCLENBQVMsRUFBRSxDQUFTO1FBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRU0sb0NBQVksR0FBbkIsVUFBb0IsTUFBa0IsRUFBRSxTQUFzQixFQUFFLFVBQWdDO1FB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WUFBWTtpREFBZ0M7SUFHcEQ7UUFEQyxNQUFNLENBQUMsTUFBTSxDQUFDOzBDQUNULFlBQVk7K0NBQWdDO0lBR2xEO1FBREMsS0FBSyxFQUFFOzttREFDc0I7SUFFTTtRQUFuQyxlQUFlLENBQUMsaUJBQWlCLENBQUM7MENBQVEsU0FBUztnREFBb0I7SUFkN0QsYUFBYTtRQVp6QixTQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsV0FBVztZQUNyQixRQUFRLEVBQUUsK09BU1Q7U0FBQyxDQUFDO09BQ1EsYUFBYSxDQTBGekI7SUFBRCxvQkFBQztDQUFBLEFBMUZELElBMEZDO1NBMUZZLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMTkgQWxla3NleSBNZWxuaWtvdiwgVHJ1ZSBEaXJlY3RpdmUgQ29tcGFueS5cclxuICogQGxpbmsgaHR0cHM6Ly90cnVlZGlyZWN0aXZlLmNvbS9cclxuICogQGxpY2Vuc2UgTUlUXHJcbiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgQ29udGVudENoaWxkcmVuLCBRdWVyeUxpc3QsXHJcbiAgICAgICAgIEFmdGVyQ29udGVudEluaXQsXHJcbiAgICAgICAgIFZpZXdDaGlsZHJlbiwgVmlld0NoaWxkLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBNZW51SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vbWVudS1pdGVtLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RydWUtbWVudScsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDx0cnVlLXBvcHVwICNwb3B1cFxyXG4gICAgICBbcG9zaXRpb25dPVwicG9zaXRpb25cIlxyXG4gICAgICAoY2xvc2VkKT1cInBvcHVwQ2xvc2VkKCRldmVudClcIlxyXG4gICAgICAoc2hvdyk9XCJwb3B1cFNob3coJGV2ZW50KVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidHJ1ZS1tZW51XCI+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvdHJ1ZS1wb3B1cD5cclxuICBgfSlcclxuZXhwb3J0IGNsYXNzIE1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyQ29udGVudEluaXQge1xyXG5cclxuICBAVmlld0NoaWxkKCdwb3B1cCcsIHtzdGF0aWM6IHRydWV9KVxyXG4gIHBvcHVwOiBhbnk7XHJcblxyXG4gIEBPdXRwdXQoJ2Nsb3NlZCcpXHJcbiAgY2xvc2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KCdzaG93JylcclxuICBzaG93OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHBvc2l0aW9uOiBzdHJpbmcgPSAnUkVMQVRJVkUnO1xyXG5cclxuICBAQ29udGVudENoaWxkcmVuKE1lbnVJdGVtQ29tcG9uZW50KSBpdGVtczogUXVlcnlMaXN0PE1lbnVJdGVtQ29tcG9uZW50PjtcclxuXHJcbiAgX3BhcmVudE1lbnU6IE1lbnVDb21wb25lbnQgPSBudWxsO1xyXG5cclxuICBwb3B1cENsb3NlZChlOiBhbnkpIHtcclxuICAgIHRoaXMuY2xvc2VTdWJNZW51cyhudWxsKTtcclxuICAgIHRoaXMuY2xvc2VkLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHBvcHVwU2hvdyhlOiBhbnkpIHtcclxuICAgIHRoaXMuc2hvdy5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBnZXQgdmlzaWJsZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnBvcHVwLnZpc2libGU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd0J5WFkoeDogbnVtYmVyLCB5OiBudW1iZXIpIHtcclxuICAgIHRoaXMucG9wdXAuc2hvd0J5WFkoeCwgeSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd0J5VGFyZ2V0KHRhcmdldDogYW55ID0gbnVsbCwgZGlyZWN0aW9uOiBzdHJpbmcgPSAnJywgcGFyZW50TWVudTogTWVudUNvbXBvbmVudCA9IG51bGwpIHtcclxuICAgIHRoaXMuX3BhcmVudE1lbnUgPSBwYXJlbnRNZW51O1xyXG4gICAgdGhpcy5wb3B1cC5zaG93QnlUYXJnZXQodGFyZ2V0LCBkaXJlY3Rpb24pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRvZ2dsZVBvcHVwKHRhcmdldDogYW55ID0gbnVsbCwgZGlyZWN0aW9uOiBzdHJpbmcgPSAnJywgcGFyZW50TWVudTogTWVudUNvbXBvbmVudCA9IG51bGwpIHtcclxuICAgIGlmICghdGhpcy52aXNpYmxlKSB7XHJcbiAgICAgIHRoaXMuX3BhcmVudE1lbnUgPSBwYXJlbnRNZW51O1xyXG4gICAgICB0aGlzLnBvcHVwLnNob3dCeVRhcmdldCh0YXJnZXQsIGRpcmVjdGlvbik7XHJcbiAgICB9IGVsc2VcclxuICAgICAgdGhpcy5wb3B1cC5jbG9zZVBvcHVwKHRhcmdldCwgZGlyZWN0aW9uKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbG9zZVN1Yk1lbnVzKHNlbmRlcjogYW55KSB7XHJcbiAgICB0aGlzLml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIGlmIChpdGVtICE9PSBzZW5kZXIpXHJcbiAgICAgICAgaXRlbS5jbG9zZVN1Yk1lbnUoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsb3NlUG9wdXAod2l0aFBhcmVudDogYm9vbGVhbiA9IHRydWUpIHtcclxuICAgIGlmICh0aGlzLl9wYXJlbnRNZW51ICE9PSBudWxsICYmIHdpdGhQYXJlbnQpXHJcbiAgICAgIHRoaXMuX3BhcmVudE1lbnUuY2xvc2VQb3B1cCh0cnVlKTtcclxuICAgIHRoaXMucG9wdXAuY2xvc2VQb3B1cCgpO1xyXG4gIH1cclxuXHJcbiAgX3N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG5cclxuICBwcml2YXRlIGFkZFN1YnNjcmlwdGlvbihzOiBTdWJzY3JpcHRpb24pIHtcclxuICAgIGlmICghdGhpcy5fc3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbiA9IHM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xyXG4gICAgaWYgKHRoaXMuX3N1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIGl0ZW0ucGFyZW50TWVudSA9IHRoaXM7XHJcbiAgICAgIGNvbnN0IHNibWUgPSBpdGVtLm9uTW91c2VFbnRlci5zdWJzY3JpYmUoZSA9PiB0aGlzLmNsb3NlU3ViTWVudXMoZSkpO1xyXG4gICAgICB0aGlzLmFkZFN1YnNjcmlwdGlvbihzYm1lKTtcclxuICAgICAgY29uc3Qgc2JjID0gaXRlbS5vbkNsaWNrLnN1YnNjcmliZShlID0+IHRoaXMuY2xvc2VQb3B1cCh0cnVlKSk7XHJcbiAgICAgIHRoaXMuYWRkU3Vic2NyaXB0aW9uKHNiYyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuX3N1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19