UNPKG

@true-directive/grid

Version:

Angular Data Grid from Yopsilon.

96 lines 12.9 kB
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