@true-directive/grid
Version:
Angular Data Grid from Yopsilon.
96 lines • 12.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, ViewChild, ViewChildren, Input, Output, EventEmitter, QueryList, ViewContainerRef, ComponentFactoryResolver } from '@angular/core';
import { DialogAlertComponent } from './dialog-alert.component';
import { DialogButton, DialogInfo } from './dialog-info.class';
import { Subject } from 'rxjs';
import { take } from 'rxjs/operators';
/**
* Dialog wrapper component.
*/
let DialogWrapperComponent = class DialogWrapperComponent {
constructor(_cfResolver) {
this._cfResolver = _cfResolver;
this.closeBtn = new DialogButton(DialogInfo.closeButtonId);
this.dialog = new DialogInfo();
this.btnClick = new EventEmitter();
this._alert = null;
}
get caption() {
return this.dialog ? this.dialog.caption : '';
}
get alertVisible() {
return this._alert !== null;
}
focus() {
setTimeout(() => {
this.buttons.first.nativeElement.focus();
});
}
closeAlert() {
if (this.alertVisible) {
this._alert.closeAlert();
}
}
confirm(txt, dialog) {
if (this._alert) {
this._alert.closeAlert();
}
const factory = this._cfResolver.resolveComponentFactory(DialogAlertComponent);
let alert = this.alertContainer.createComponent(factory);
alert.instance.init(txt, dialog);
alert.instance.elementRef.nativeElement.style.position = 'absolute';
alert.instance.elementRef.nativeElement.style.top = '0';
alert.instance.elementRef.nativeElement.style.left = '0';
alert.instance.elementRef.nativeElement.style.bottom = '0';
alert.instance.elementRef.nativeElement.style.right = '0';
const subject = new Subject();
alert.instance.close.pipe(take(1)).subscribe((e) => {
subject.next(e);
subject.complete();
if (alert) {
// Close previous alert
alert.destroy();
alert = null;
this._alert = null;
}
});
this._alert = alert.instance;
return subject;
}
ngOnDestroy() {
if (this._alert) {
this._alert.closeAlert();
}
}
};
tslib_1.__decorate([
Input(),
tslib_1.__metadata("design:type", DialogInfo)
], DialogWrapperComponent.prototype, "dialog", void 0);
tslib_1.__decorate([
Output(),
tslib_1.__metadata("design:type", EventEmitter)
], DialogWrapperComponent.prototype, "btnClick", void 0);
tslib_1.__decorate([
ViewChild('alertContainer', { read: ViewContainerRef, static: true }),
tslib_1.__metadata("design:type", Object)
], DialogWrapperComponent.prototype, "alertContainer", void 0);
tslib_1.__decorate([
ViewChildren('buttons'),
tslib_1.__metadata("design:type", QueryList)
], DialogWrapperComponent.prototype, "buttons", void 0);
DialogWrapperComponent = tslib_1.__decorate([
Component({
selector: 'true-dialog-wrapper',
template: "<div *ngIf=\"dialog.showHeader\" class=\"true-header\">\r\n <span>{{caption}}</span>\r\n <button class=\"true-button flat\" (click)=\"btnClick.emit(closeBtn)\"><span class=\"true-close\"></span></button>\r\n</div>\r\n<div class=\"true-body\">\r\n <div #alertContainer class=\"true-alert-container\"></div>\r\n <div class=\"true-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div *ngIf=\"dialog.showFooter\" class=\"true-footer\">\r\n <p>\r\n <button\r\n #buttons\r\n *ngFor=\"let b of dialog.buttons\"\r\n class=\"true-button\"\r\n [ngClass]=\"b.cssClass\"\r\n (click)=\"btnClick.emit(b)\"\r\n [disabled]=\"b.disabled\">{{b.caption}}</button>\r\n </p>\r\n </div>\r\n</div>\r\n",
styles: [":host{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}:host>.true-header{position:relative;padding:.5em .7em;display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-pack:justify;justify-content:space-between;-webkit-box-align:baseline;align-items:baseline;z-index:2}:host>.true-header>span{margin:0 .4em 0 .6em;white-space:nowrap;overflow-x:hidden;text-overflow:ellipsis}:host>.true-body{position:relative;display:block;-webkit-box-flex:1;flex-grow:1;z-index:1}:host>.true-body .true-content{padding:.8em 1.2em}:host>.true-body .true-footer{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-direction:row;-webkit-box-pack:end;justify-content:flex-end;padding:.8em 1.2em}:host>.true-body .true-footer p{margin:0}:host>.true-body .true-footer button{padding:.6em 1.4em;margin-left:1em}"]
}),
tslib_1.__metadata("design:paramtypes", [ComponentFactoryResolver])
], DialogWrapperComponent);
export { DialogWrapperComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXdyYXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRydWUtZGlyZWN0aXZlL2dyaWQvIiwic291cmNlcyI6WyJzcmMvY29udHJvbHMvZGlhbG9nLXdyYXBwZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7OztFQUlFO0FBQ0YsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUMvRCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0UsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRCxPQUFPLEVBQXdCLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEM7O0dBRUc7QUFNSCxJQUFhLHNCQUFzQixHQUFuQyxNQUFhLHNCQUFzQjtJQTZFakMsWUFBb0IsV0FBcUM7UUFBckMsZ0JBQVcsR0FBWCxXQUFXLENBQTBCO1FBM0VsRCxhQUFRLEdBQWlCLElBQUksWUFBWSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUczRSxXQUFNLEdBQWUsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUd0QyxhQUFRLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFZdEQsV0FBTSxHQUF5QixJQUFJLENBQUM7SUF5RHlCLENBQUM7SUE3RDlELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBSUQsSUFBVyxZQUFZO1FBQ3JCLE9BQU8s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OzZDQThFaUMsd0JBQXdCO0dBN0U5QyxzQkFBc0IsQ0E4RWxDO1NBOUVZLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAxOSBBbGVrc2V5IE1lbG5pa292LCBUcnVlIERpcmVjdGl2ZSBDb21wYW55LlxyXG4gKiBAbGluayBodHRwczovL3RydWVkaXJlY3RpdmUuY29tL1xyXG4gKiBAbGljZW5zZSBNSVRcclxuKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbiwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLFxyXG4gICAgICAgICBRdWVyeUxpc3QsIE9uRGVzdHJveSxcclxuICAgICAgICAgVmlld0NvbnRhaW5lclJlZiwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBEaWFsb2dBbGVydENvbXBvbmVudCB9IGZyb20gJy4vZGlhbG9nLWFsZXJ0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERpYWxvZ0J1dHRvbiwgRGlhbG9nSW5mbyB9IGZyb20gJy4vZGlhbG9nLWluZm8uY2xhc3MnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBPYnNlcnZlciwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuLyoqXHJcbiAqIERpYWxvZyB3cmFwcGVyIGNvbXBvbmVudC5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHJ1ZS1kaWFsb2ctd3JhcHBlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICdkaWFsb2ctd3JhcHBlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJ2RpYWxvZy13cmFwcGVyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIERpYWxvZ1dyYXBwZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBwdWJsaWMgY2xvc2VCdG46IERpYWxvZ0J1dHRvbiA9IG5ldyBEaWFsb2dCdXR0b24oRGlhbG9nSW5mby5jbG9zZUJ1dHRvbklkKTtcclxuXHJcbiAgQElucHV0KClcclxuICBkaWFsb2c6IERpYWxvZ0luZm8gPSBuZXcgRGlhbG9nSW5mbygpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBidG5DbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnYWxlcnRDb250YWluZXInLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGFsZXJ0Q29udGFpbmVyOiBhbnk7XHJcblxyXG4gIEBWaWV3Q2hpbGRyZW4oJ2J1dHRvbnMnKVxyXG4gIHB1YmxpYyBidXR0b25zOiBRdWVyeUxpc3Q8YW55PjtcclxuXHJcbiAgZ2V0IGNhcHRpb24oKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmRpYWxvZyA/IHRoaXMuZGlhbG9nLmNhcHRpb24gOiAnJztcclxuICB9XHJcblxyXG4gIF9hbGVydDogRGlhbG9nQWxlcnRDb21wb25lbnQgPSBudWxsO1xyXG5cclxuICBwdWJsaWMgZ2V0IGFsZXJ0VmlzaWJsZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9hbGVydCAhPT0gbnVsbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBmb2N1cygpIHtcclxuICAgIHNldFRpbWVvdXQoKCk9PiB7XHJcbiAgICAgIHRoaXMuYnV0dG9ucy5maXJzdC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbG9zZUFsZXJ0KCkge1xyXG4gICAgaWYgKHRoaXMuYWxlcnRWaXNpYmxlKSB7XHJcbiAgICAgIHRoaXMuX2FsZXJ0LmNsb3NlQWxlcnQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb25maXJtKHR4dDogc3RyaW5nLCBkaWFsb2c6IERpYWxvZ0luZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cclxuICAgIGlmICh0aGlzLl9hbGVydCkge1xyXG4gICAgICB0aGlzLl9hbGVydC5jbG9zZUFsZXJ0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuX2NmUmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoRGlhbG9nQWxlcnRDb21wb25lbnQpO1xyXG4gICAgbGV0IGFsZXJ0ID0gdGhpcy5hbGVydENvbnRhaW5lci5jcmVhdGVDb21wb25lbnQoZmFjdG9yeSk7XHJcbiAgICBhbGVydC5pbnN0YW5jZS5pbml0KHR4dCwgZGlhbG9nKTtcclxuXHJcbiAgICBhbGVydC5pbnN0YW5jZS5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xyXG4gICAgYWxlcnQuaW5zdGFuY2UuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnRvcCA9ICcwJztcclxuICAgIGFsZXJ0Lmluc3RhbmNlLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5sZWZ0ID0gJzAnO1xyXG4gICAgYWxlcnQuaW5zdGFuY2UuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmJvdHRvbSA9ICcwJztcclxuICAgIGFsZXJ0Lmluc3RhbmNlLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5yaWdodCA9ICcwJztcclxuXHJcbiAgICBjb25zdCBzdWJqZWN0ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG4gICAgYWxlcnQuaW5zdGFuY2UuY2xvc2UucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKGU6IGFueSkgPT4ge1xyXG4gICAgICBzdWJqZWN0Lm5leHQoZSk7XHJcbiAgICAgIHN1YmplY3QuY29tcGxldGUoKTtcclxuXHJcbiAgICAgIGlmIChhbGVydCkge1xyXG4gICAgICAgIC8vIENsb3NlIHByZXZpb3VzIGFsZXJ0XHJcbiAgICAgICAgYWxlcnQuZGVzdHJveSgpO1xyXG4gICAgICAgIGFsZXJ0ID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9hbGVydCA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuX2FsZXJ0ID0gYWxlcnQuaW5zdGFuY2U7XHJcbiAgICByZXR1cm4gc3ViamVjdDtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgaWYgKHRoaXMuX2FsZXJ0KSB7XHJcbiAgICAgIHRoaXMuX2FsZXJ0LmNsb3NlQWxlcnQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NmUmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcikgeyB9XHJcbn1cclxuIl19