@true-directive/grid
Version:
Angular Data Grid from Yopsilon.
120 lines (117 loc) • 10.9 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, ViewChild, EventEmitter } from "@angular/core";
import { Subject } from "rxjs";
let MenuItemComponent = class MenuItemComponent {
constructor() {
this._onClick = new Subject();
this.onClick = this._onClick.asObservable();
this._onMouseEnter = new Subject();
this.onMouseEnter = this._onMouseEnter.asObservable();
this._divide = false;
this.disabled = false;
this.onItemClick = new EventEmitter();
this.onItemMouseEnter = new EventEmitter();
this.onNeedClose = new EventEmitter();
this._parentMenu = null;
}
set divide(v) {
this._divide = v;
}
get divide() {
return this._divide;
}
set parentMenu(v) {
this._parentMenu = v;
}
click(e) {
this.onItemClick.emit({ originalEvent: e, target: this.button.nativeElement });
// Если есть сабменю, то родительское меню не должно закрываться при клике
if (!this.hasSubmenu()) {
this._onClick.next(e);
}
}
mouseEnter(e) {
this._onMouseEnter.next(this);
this.onItemMouseEnter.emit({ target: this.button.nativeElement, parent: this._parentMenu });
}
hasSubmenu() {
return this.submenu !== undefined;
}
closeSubMenu() {
this.onNeedClose.emit(null);
}
};
tslib_1.__decorate([
Input("true-menu-show"),
tslib_1.__metadata("design:type", Object)
], MenuItemComponent.prototype, "submenu", void 0);
tslib_1.__decorate([
Input("true-divide"),
tslib_1.__metadata("design:type", Boolean),
tslib_1.__metadata("design:paramtypes", [Boolean])
], MenuItemComponent.prototype, "divide", null);
tslib_1.__decorate([
Input("disabled"),
tslib_1.__metadata("design:type", Boolean)
], MenuItemComponent.prototype, "disabled", void 0);
tslib_1.__decorate([
Output("itemClick"),
tslib_1.__metadata("design:type", EventEmitter)
], MenuItemComponent.prototype, "onItemClick", void 0);
tslib_1.__decorate([
Output("itemMouseEnter"),
tslib_1.__metadata("design:type", EventEmitter)
], MenuItemComponent.prototype, "onItemMouseEnter", void 0);
tslib_1.__decorate([
Output("needClose"),
tslib_1.__metadata("design:type", EventEmitter)
], MenuItemComponent.prototype, "onNeedClose", void 0);
tslib_1.__decorate([
ViewChild("button", { static: true }),
tslib_1.__metadata("design:type", Object)
], MenuItemComponent.prototype, "button", void 0);
MenuItemComponent = tslib_1.__decorate([
Component({
selector: "true-menu-item",
template: `
<button #button
[disabled]="disabled"
[class.true-menu-item_divide]="divide"
(click)="click($event)"
(mouseenter)="mouseEnter($event)">
<div><div><ng-content></ng-content></div><span *ngIf="hasSubmenu()" class="true-submenu true-icon-right-dir"></span></div>
</button>
`,
host: {
'[class.true-menu-item_divide]': 'divide',
'class': 'true-menu-item'
},
styles: [`
button {
background: none;
border: none;
width: 100%;
text-align: left;
}
button > div {
width: 100%;
display: flex;
flex-direction: row;
align-items: baseline;
flex-wrap: nowrap;
justify-content: space-between;
text-align: left;
}
.true-submenu {
flex-grow: 0;
}
`]
})
], MenuItemComponent);
export { MenuItemComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0cnVlLWRpcmVjdGl2ZS9ncmlkLyIsInNvdXJjZXMiOlsic3JjL2NvbnRyb2xzL21lbnUtaXRlbS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0VBSUU7QUFDRixPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRyxNQUFNLEVBRVgsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV0RSxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBeUMzQyxJQUFhLGlCQUFpQixHQUE5QixNQUFhLGlCQUFpQjtJQXZDOUI7UUF5Q1UsYUFBUSxHQUFpQixJQUFJLE9BQU8sRUFBTyxDQUFDO1FBQ3BDLFlBQU8sR0FBb0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUVoRSxrQkFBYSxHQUFpQixJQUFJLE9BQU8sRUFBTyxDQUFDO1FBQ3pDLGlCQUFZLEdBQW9CLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7UUFLbEYsWUFBTyxHQUFZLEtBQUssQ0FBQztRQVl6QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBR2pCLGdCQUFXLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFHekQscUJBQWdCLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFHOUQsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUtsRSxnQkFBVyxHQUFRLElBQUksQ0FBQztJQTBCMUIsQ0FBQztJQWpEQyxJQUFJLE1BQU0sQ0FBQyxDQUFVO1FBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQWtCRCxJQUFXLFVBQVUsQ0FBQyxDQUFNO1FBQzFCLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxLQUFLLENBQUMsQ0FBTTtRQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUMsYUFBYSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBRTlFLDBFQUEwRTtRQUMxRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZCO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxDQUFNO1FBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztDQUNGLENBQUE7QUF0REM7SUFEQyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7O2tEQUNYO0FBS2I7SUFEQyxLQUFLLENBQUMsYUFBYSxDQUFDOzs7K0NBR3BCO0FBT0Q7SUFEQyxLQUFLLENBQUMsVUFBVSxDQUFDOzttREFDUTtBQUcxQjtJQURDLE1BQU0sQ0FBQyxXQUFXLENBQUM7c0NBQ0UsWUFBWTtzREFBZ0M7QUFHbEU7SUFEQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7c0NBQ0UsWUFBWTsyREFBZ0M7QUFHdkU7SUFEQyxNQUFNLENBQUMsV0FBVyxDQUFDO3NDQUNFLFlBQVk7c0RBQWdDO0FBR2xFO0lBREMsU0FBUyxDQUFDLFFBQVEsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMsQ0FBQzs7aURBQ3hCO0FBbkNELGlCQUFpQjtJQXZDN0IsU0FBUyxDQUFDO1FBQ1QsUUFBUSxFQUFFLGdCQUFnQjtRQUMxQixRQUFRLEVBQUU7Ozs7Ozs7O0dBUVQ7UUF3QkQsSUFBSSxFQUFFO1lBQ0osK0JBQStCLEVBQUUsUUFBUTtZQUN6QyxPQUFPLEVBQUUsZ0JBQWdCO1NBQ3hCO2lCQTFCTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCUjtLQUtBLENBQUM7R0FDUyxpQkFBaUIsQ0ErRDdCO1NBL0RZLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAxOSBBbGVrc2V5IE1lbG5pa292LCBUcnVlIERpcmVjdGl2ZSBDb21wYW55LlxyXG4gKiBAbGluayBodHRwczovL3RydWVkaXJlY3RpdmUuY29tL1xyXG4gKiBAbGljZW5zZSBNSVRcclxuKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgIE91dHB1dCwgSG9zdEJpbmRpbmcsIENvbnRlbnRDaGlsZHJlbiwgUXVlcnlMaXN0LFxyXG4gICAgICAgICBFbGVtZW50UmVmLCBJbmplY3QsIGZvcndhcmRSZWYsXHJcbiAgICAgICAgIFZpZXdDaGlsZHJlbiwgVmlld0NoaWxkLCBFdmVudEVtaXR0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJ0cnVlLW1lbnUtaXRlbVwiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8YnV0dG9uICNidXR0b25cclxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgW2NsYXNzLnRydWUtbWVudS1pdGVtX2RpdmlkZV09XCJkaXZpZGVcIlxyXG4gICAgICAoY2xpY2spPVwiY2xpY2soJGV2ZW50KVwiXHJcbiAgICAgIChtb3VzZWVudGVyKT1cIm1vdXNlRW50ZXIoJGV2ZW50KVwiPlxyXG4gICAgICA8ZGl2PjxkaXY+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PjwvZGl2PjxzcGFuICpuZ0lmPVwiaGFzU3VibWVudSgpXCIgY2xhc3M9XCJ0cnVlLXN1Ym1lbnUgdHJ1ZS1pY29uLXJpZ2h0LWRpclwiPjwvc3Bhbj48L2Rpdj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbYFxyXG4gICAgYnV0dG9uIHtcclxuICAgICAgYmFja2dyb3VuZDogbm9uZTtcclxuICAgICAgYm9yZGVyOiBub25lO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICAgIH1cclxuXHJcbiAgICBidXR0b24gPiBkaXYge1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcclxuICAgICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xyXG4gICAgICBmbGV4LXdyYXA6IG5vd3JhcDtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gICAgfVxyXG5cclxuICAgIC50cnVlLXN1Ym1lbnUge1xyXG4gICAgICBmbGV4LWdyb3c6IDA7XHJcbiAgICB9XHJcblxyXG4gIGBdLFxyXG4gIGhvc3Q6IHtcclxuICAgICdbY2xhc3MudHJ1ZS1tZW51LWl0ZW1fZGl2aWRlXSc6ICdkaXZpZGUnLFxyXG4gICAgJ2NsYXNzJzogJ3RydWUtbWVudS1pdGVtJ1xyXG4gICAgfVxyXG4gIH0pXHJcbmV4cG9ydCBjbGFzcyBNZW51SXRlbUNvbXBvbmVudCB7XHJcblxyXG4gIHByaXZhdGUgX29uQ2xpY2s6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0PGFueT4oKTtcclxuICBwdWJsaWMgcmVhZG9ubHkgb25DbGljazogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy5fb25DbGljay5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBfb25Nb3VzZUVudGVyOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcbiAgcHVibGljIHJlYWRvbmx5IG9uTW91c2VFbnRlcjogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy5fb25Nb3VzZUVudGVyLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoXCJ0cnVlLW1lbnUtc2hvd1wiKVxyXG4gIHN1Ym1lbnU6IGFueTtcclxuXHJcbiAgX2RpdmlkZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoXCJ0cnVlLWRpdmlkZVwiKVxyXG4gIHNldCBkaXZpZGUodjogYm9vbGVhbikge1xyXG4gICAgdGhpcy5fZGl2aWRlID0gdjtcclxuICB9XHJcblxyXG4gIGdldCBkaXZpZGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGl2aWRlO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KFwiZGlzYWJsZWRcIilcclxuICBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KFwiaXRlbUNsaWNrXCIpXHJcbiAgcmVhZG9ubHkgb25JdGVtQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoXCJpdGVtTW91c2VFbnRlclwiKVxyXG4gIHJlYWRvbmx5IG9uSXRlbU1vdXNlRW50ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoXCJuZWVkQ2xvc2VcIilcclxuICByZWFkb25seSBvbk5lZWRDbG9zZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZChcImJ1dHRvblwiLCB7c3RhdGljOiB0cnVlfSlcclxuICBidXR0b246IGFueTtcclxuXHJcbiAgX3BhcmVudE1lbnU6IGFueSA9IG51bGw7XHJcbiAgcHVibGljIHNldCBwYXJlbnRNZW51KHY6IGFueSkge1xyXG4gICAgdGhpcy5fcGFyZW50TWVudSA9IHY7XHJcbiAgfVxyXG5cclxuICBjbGljayhlOiBhbnkpIHtcclxuICAgIHRoaXMub25JdGVtQ2xpY2suZW1pdCh7b3JpZ2luYWxFdmVudDogZSwgdGFyZ2V0OiB0aGlzLmJ1dHRvbi5uYXRpdmVFbGVtZW50IH0pO1xyXG5cclxuICAgIC8vINCV0YHQu9C4INC10YHRgtGMINGB0LDQsdC80LXQvdGOLCDRgtC+INGA0L7QtNC40YLQtdC70YzRgdC60L7QtSDQvNC10L3RjiDQvdC1INC00L7Qu9C20L3QviDQt9Cw0LrRgNGL0LLQsNGC0YzRgdGPINC/0YDQuCDQutC70LjQutC1XHJcbiAgICBpZiAoIXRoaXMuaGFzU3VibWVudSgpKSB7XHJcbiAgICAgIHRoaXMuX29uQ2xpY2submV4dChlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG1vdXNlRW50ZXIoZTogYW55KSB7XHJcbiAgICB0aGlzLl9vbk1vdXNlRW50ZXIubmV4dCh0aGlzKTtcclxuICAgIHRoaXMub25JdGVtTW91c2VFbnRlci5lbWl0KHsgdGFyZ2V0OiB0aGlzLmJ1dHRvbi5uYXRpdmVFbGVtZW50LCBwYXJlbnQ6IHRoaXMuX3BhcmVudE1lbnUgfSk7XHJcbiAgfVxyXG5cclxuICBoYXNTdWJtZW51KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3VibWVudSAhPT0gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VTdWJNZW51KCkge1xyXG4gICAgdGhpcy5vbk5lZWRDbG9zZS5lbWl0KG51bGwpO1xyXG4gIH1cclxufVxyXG4iXX0=