UNPKG

@ngx-performance-ui/ui

Version:
183 lines 15 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, Injector, Input, Output, Renderer2, TemplateRef, ViewChild, ViewEncapsulation, } from '@angular/core'; import { Select } from '@ngxs/store'; import { Observable, Subject, timer } from 'rxjs'; import { filter, take, takeUntil } from 'rxjs/operators'; import { EventListenerState } from '@ngx-performance-ui/core'; export class ModalComponent { /** * @param {?} injector * @param {?} renderer */ constructor(injector, renderer) { this.injector = injector; this.renderer = renderer; this.centered = true; this.modalClass = ''; this.size = 'md'; this.visibleChange = new EventEmitter(); this._visible = false; this.closable = false; this.destroy$ = new Subject(); this.cdRef = injector.get(ChangeDetectorRef); } /** * @return {?} */ get visible() { return this._visible; } /** * @param {?} value * @return {?} */ set visible(value) { if (value) { this.setVisible(value); this.listen(); } else { this.closable = false; this.renderer.addClass(this.modalContent.nativeElement, 'fade-out-top'); setTimeout((/** * @return {?} */ () => { this.setVisible(value); this.renderer.removeClass(this.modalContent.nativeElement, 'fade-out-top'); this.ngOnDestroy(); }), 400); } } /** * @return {?} */ ngOnDestroy() { this.destroy$.next(); } /** * @param {?} value * @return {?} */ setVisible(value) { this._visible = value; this.visibleChange.emit(value); value ? timer(500) .pipe(take(1)) .subscribe((/** * @param {?} _ * @return {?} */ _ => (this.closable = true))) : (this.closable = false); } /** * @return {?} */ listen() { this.click$ .pipe(takeUntil(this.destroy$), filter((/** * @param {?} event * @return {?} */ (event) => event && this.closable && this.modalContent && !this.modalContent.nativeElement.contains(event.target)))) .subscribe((/** * @param {?} _ * @return {?} */ _ => { this.visible = false; })); this.keyup$ .pipe(takeUntil(this.destroy$), filter((/** * @param {?} key * @return {?} */ (key) => key && key.code === 'Escape' && this.closable))) .subscribe((/** * @param {?} _ * @return {?} */ _ => { this.visible = false; })); } } ModalComponent.decorators = [ { type: Component, args: [{ selector: 'p-modal', template: "<!-- Modal -->\n<div\n id=\"p-modal\"\n tabindex=\"-1\"\n class=\"modal fade {{ modalClass }}\"\n [class.show]=\"visible\"\n [style.display]=\"visible ? 'block' : 'none'\"\n [style.padding-right.px]=\"'15'\"\n>\n <perfect-scrollbar style=\"max-height: auto;\" [config]=\"{ suppressScrollX: true }\">\n <div\n style=\"position: relative; max-width: 600px;\"\n id=\"p-modal-container\"\n class=\"modal-dialog modal-{{ size }} fade-in-top\"\n [class.modal-dialog-centered]=\"centered\"\n #pModalContent\n >\n <div #content id=\"p-modal-content\" class=\"modal-content\">\n <div id=\"p-modal-header\" class=\"modal-header\">\n <ng-container *ngTemplateOutlet=\"pHeader\"></ng-container>\n\n <button id=\"p-modal-close-button\" type=\"button\" class=\"close\" (click)=\"visible = false\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n <div id=\"p-modal-body\" class=\"modal-body\">\n <ng-container *ngTemplateOutlet=\"pBody\"></ng-container>\n\n <div id=\"p-modal-footer\" class=\"modal-footer\">\n <ng-container *ngTemplateOutlet=\"pFooter\"></ng-container>\n </div>\n </div>\n </div>\n </div>\n </perfect-scrollbar>\n\n <ng-content></ng-content>\n</div>\n", changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None }] } ]; /** @nocollapse */ ModalComponent.ctorParameters = () => [ { type: Injector }, { type: Renderer2 } ]; ModalComponent.propDecorators = { visible: [{ type: Input }], centered: [{ type: Input }], modalClass: [{ type: Input }], size: [{ type: Input }], visibleChange: [{ type: Output }], pHeader: [{ type: ContentChild, args: ['pHeader',] }], pBody: [{ type: ContentChild, args: ['pBody',] }], pFooter: [{ type: ContentChild, args: ['pFooter',] }], modalContent: [{ type: ViewChild, args: ['pModalContent',] }] }; tslib_1.__decorate([ Select(EventListenerState.getOne('click')), tslib_1.__metadata("design:type", Observable) ], ModalComponent.prototype, "click$", void 0); tslib_1.__decorate([ Select(EventListenerState.getOne('keyup')), tslib_1.__metadata("design:type", Observable) ], ModalComponent.prototype, "keyup$", void 0); if (false) { /** @type {?} */ ModalComponent.prototype.centered; /** @type {?} */ ModalComponent.prototype.modalClass; /** @type {?} */ ModalComponent.prototype.size; /** @type {?} */ ModalComponent.prototype.visibleChange; /** @type {?} */ ModalComponent.prototype.pHeader; /** @type {?} */ ModalComponent.prototype.pBody; /** @type {?} */ ModalComponent.prototype.pFooter; /** @type {?} */ ModalComponent.prototype.modalContent; /** @type {?} */ ModalComponent.prototype.click$; /** @type {?} */ ModalComponent.prototype.keyup$; /** @type {?} */ ModalComponent.prototype._visible; /** @type {?} */ ModalComponent.prototype.closable; /** * @type {?} * @protected */ ModalComponent.prototype.cdRef; /** @type {?} */ ModalComponent.prototype.destroy$; /** @type {?} */ ModalComponent.prototype.injector; /** * @type {?} * @private */ ModalComponent.prototype.renderer; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neC1wZXJmb3JtYW5jZS11aS91aS8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL21vZGFsL21vZGFsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixRQUFRLEVBQ1IsS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFVOUQsTUFBTSxPQUFPLGNBQWM7Ozs7O0lBa0R6QixZQUFtQixRQUFrQixFQUFVLFFBQW1CO1FBQS9DLGFBQVEsR0FBUixRQUFRLENBQVU7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBOUJ6RCxhQUFRLEdBQVksSUFBSSxDQUFDO1FBRXpCLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFFeEIsU0FBSSxHQUFjLElBQUksQ0FBQztRQUV0QixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFnQnRELGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFMUIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUkxQixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUc3QixJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENB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O3NCQUVOLFlBQVksU0FBQyxTQUFTO29CQUV0QixZQUFZLFNBQUMsT0FBTztzQkFFcEIsWUFBWSxTQUFDLFNBQVM7MkJBRXRCLFNBQVMsU0FBQyxlQUFlOztBQUcxQjtJQURDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7c0NBQ25DLFVBQVU7OENBQVE7QUFHMUI7SUFEQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3NDQUNuQyxVQUFVOzhDQUFnQjs7O0lBcEJsQyxrQ0FBa0M7O0lBRWxDLG9DQUFpQzs7SUFFakMsOEJBQWdDOztJQUVoQyx1Q0FBc0Q7O0lBRXRELGlDQUFtRDs7SUFFbkQsK0JBQStDOztJQUUvQyxpQ0FBbUQ7O0lBRW5ELHNDQUFxRDs7SUFFckQsZ0NBQzBCOztJQUUxQixnQ0FDa0M7O0lBRWxDLGtDQUEwQjs7SUFFMUIsa0NBQTBCOzs7OztJQUUxQiwrQkFBbUM7O0lBRW5DLGtDQUErQjs7SUFFbkIsa0NBQXlCOzs7OztJQUFFLGtDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZWxlY3QgfSBmcm9tICdAbmd4cy9zdG9yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFdmVudExpc3RlbmVyU3RhdGUgfSBmcm9tICdAbmd4LXBlcmZvcm1hbmNlLXVpL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBNb2RhbFNpemUgPSAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vZGFsLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQElucHV0KClcbiAgZ2V0IHZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Zpc2libGU7XG4gIH1cbiAgc2V0IHZpc2libGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuc2V0VmlzaWJsZSh2YWx1ZSk7XG4gICAgICB0aGlzLmxpc3RlbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsb3NhYmxlID0gZmFsc2U7XG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMubW9kYWxDb250ZW50Lm5hdGl2ZUVsZW1lbnQsICdmYWRlLW91dC10b3AnKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnNldFZpc2libGUodmFsdWUpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMubW9kYWxDb250ZW50Lm5hdGl2ZUVsZW1lbnQsICdmYWRlLW91dC10b3AnKTtcbiAgICAgICAgdGhpcy5uZ09uRGVzdHJveSgpO1xuICAgICAgfSwgNDAwKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKSBjZW50ZXJlZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KCkgbW9kYWxDbGFzczogc3RyaW5nID0gJyc7XG5cbiAgQElucHV0KCkgc2l6ZTogTW9kYWxTaXplID0gJ21kJztcblxuICBAT3V0cHV0KCkgdmlzaWJsZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBAQ29udGVudENoaWxkKCdwSGVhZGVyJykgcEhlYWRlcjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAQ29udGVudENoaWxkKCdwQm9keScpIHBCb2R5OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBDb250ZW50Q2hpbGQoJ3BGb290ZXInKSBwRm9vdGVyOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGQoJ3BNb2RhbENvbnRlbnQnKSBtb2RhbENvbnRlbnQ6IEVsZW1lbnRSZWY7XG5cbiAgQFNlbGVjdChFdmVudExpc3RlbmVyU3RhdGUuZ2V0T25lKCdjbGljaycpKVxuICBjbGljayQ6IE9ic2VydmFibGU8RXZlbnQ+O1xuXG4gIEBTZWxlY3QoRXZlbnRMaXN0ZW5lclN0YXRlLmdldE9uZSgna2V5dXAnKSlcbiAga2V5dXAkOiBPYnNlcnZhYmxlPEtleWJvYXJkRXZlbnQ+O1xuXG4gIF92aXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY2xvc2FibGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcm90ZWN0ZWQgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmO1xuXG4gIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaW5qZWN0b3I6IEluamVjdG9yLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcbiAgICB0aGlzLmNkUmVmID0gaW5qZWN0b3IuZ2V0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICB9XG5cbiAgc2V0VmlzaWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3Zpc2libGUgPSB2YWx1ZTtcbiAgICB0aGlzLnZpc2libGVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgdmFsdWVcbiAgICAgID8gdGltZXIoNTAwKVxuICAgICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgICAgLnN1YnNjcmliZShfID0+ICh0aGlzLmNsb3NhYmxlID0gdHJ1ZSkpXG4gICAgICA6ICh0aGlzLmNsb3NhYmxlID0gZmFsc2UpO1xuICB9XG5cbiAgbGlzdGVuKCkge1xuICAgIHRoaXMuY2xpY2skXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgKGV2ZW50OiBNb3VzZUV2ZW50KSA9PlxuICAgICAgICAgICAgZXZlbnQgJiYgdGhpcy5jbG9zYWJsZSAmJiB0aGlzLm1vZGFsQ29udGVudCAmJiAhdGhpcy5tb2RhbENvbnRlbnQubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZShfID0+IHtcbiAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgICB9KTtcblxuICAgIHRoaXMua2V5dXAkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICBmaWx0ZXIoKGtleTogS2V5Ym9hcmRFdmVudCkgPT4ga2V5ICYmIGtleS5jb2RlID09PSAnRXNjYXBlJyAmJiB0aGlzLmNsb3NhYmxlKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==