UNPKG

@duoduo-oba/ng-devui

Version:

DevUI components based on Angular

223 lines 17.5 kB
/** * @fileoverview added by tsickle * Generated from: loading.directive.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Directive, ComponentFactoryResolver, ElementRef, Input, ViewContainerRef, Injector, TemplateRef, HostBinding } from '@angular/core'; import { LoadingBackdropComponent } from './loading-backdrop.component'; import { LoadingComponent } from './loading.component'; import { Observable, from, forkJoin, Subscription } from 'rxjs'; import { catchError } from 'rxjs/operators'; import { throwError } from 'rxjs'; export class LoadingDirective { /** * @param {?} componentFactoryResolver * @param {?} triggerElementRef * @param {?} viewContainerRef * @param {?} injector * @param {?} elementRef */ constructor(componentFactoryResolver, triggerElementRef, viewContainerRef, injector, elementRef) { this.componentFactoryResolver = componentFactoryResolver; this.triggerElementRef = triggerElementRef; this.viewContainerRef = viewContainerRef; this.injector = injector; this.elementRef = elementRef; this.active = true; } /** * @param {?} _showLoading * @return {?} */ set showLoading(_showLoading) { if (_showLoading === true) { this.startLoading(); } else { this.endLoading(); } } /** * @param {?} loading * @return {?} */ set loading(loading) { if (loading === undefined) { return; } if (loading instanceof Subscription) { this.startLoading(); loading.add((/** * @return {?} */ () => this.endLoading())); return; } /** @type {?} */ const loadingArr = [].concat(loading).map((/** * @param {?} item * @return {?} */ item => { if (item instanceof Observable) { return item; } return from(item); })); if (loadingArr.length > 0) { this.startLoading(); forkJoin(loadingArr) .pipe(catchError((/** * @param {?} error * @return {?} */ error => { return throwError(error); }))) .subscribe(null, (/** * @return {?} */ () => { this.endLoading(); }), (/** * @return {?} */ () => { this.endLoading(); })); } } /** * @private * @return {?} */ startLoading() { if (!this.loadingRef) { this.position = this.positionType || 'relative'; if (this.backdrop) { this.createLoadingBackdrop(); } this.loadingRef = this.viewContainerRef.createComponent(this.componentFactoryResolver.resolveComponentFactory(LoadingComponent), null, this.injector); this.insert(this.loadingRef.hostView); Object.assign(this.loadingRef.instance, { message: this.message, loadingTemplateRef: this.loadingTemplateRef, top: this.view ? this.view.top : '50%', left: this.view ? this.view.left : '50%', isCustomPosition: !!this.view }); } } /** * @private * @return {?} */ endLoading() { if (this.loadingRef) { this.loadingRef.destroy(); this.loadingRef = null; } if (this.backdropRef) { this.backdropRef.destroy(); this.backdropRef = null; } this.position = ''; } /** * @private * @return {?} */ createLoadingBackdrop() { this.backdropRef = !this.backdropRef && this.viewContainerRef.createComponent(this.componentFactoryResolver.resolveComponentFactory(LoadingBackdropComponent), null, this.injector); this.insert(this.backdropRef.hostView); Object.assign(this.backdropRef.instance, { triggerElementRef: this.triggerElementRef, backdrop: this.backdrop }); } /** * @private * @param {?} viewRef * @return {?} */ insert(viewRef) { ((/** @type {?} */ (viewRef))).rootNodes.forEach((/** * @param {?} node * @return {?} */ node => this.elementRef.nativeElement.appendChild(node))); return viewRef; } } LoadingDirective.decorators = [ { type: Directive, args: [{ selector: '[dLoading]', exportAs: 'dLoading' },] } ]; /** @nocollapse */ LoadingDirective.ctorParameters = () => [ { type: ComponentFactoryResolver }, { type: ElementRef }, { type: ViewContainerRef }, { type: Injector }, { type: ElementRef } ]; LoadingDirective.propDecorators = { message: [{ type: Input }], backdrop: [{ type: Input }], loadingTemplateRef: [{ type: Input }], positionType: [{ type: Input }], view: [{ type: Input }], position: [{ type: HostBinding, args: ['style.position',] }], showLoading: [{ type: Input }], loading: [{ type: Input }] }; if (false) { /** @type {?} */ LoadingDirective.prototype.message; /** @type {?} */ LoadingDirective.prototype.backdrop; /** @type {?} */ LoadingDirective.prototype.loadingTemplateRef; /** @type {?} */ LoadingDirective.prototype.positionType; /** @type {?} */ LoadingDirective.prototype.view; /** @type {?} */ LoadingDirective.prototype.position; /** @type {?} */ LoadingDirective.prototype.backdropRef; /** @type {?} */ LoadingDirective.prototype.loadingRef; /** @type {?} */ LoadingDirective.prototype.active; /** * @type {?} * @private */ LoadingDirective.prototype.componentFactoryResolver; /** * @type {?} * @private */ LoadingDirective.prototype.triggerElementRef; /** * @type {?} * @private */ LoadingDirective.prototype.viewContainerRef; /** * @type {?} * @private */ LoadingDirective.prototype.injector; /** * @type {?} * @private */ LoadingDirective.prototype.elementRef; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1kZXZ1aS9sb2FkaW5nLyIsInNvdXJjZXMiOlsibG9hZGluZy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULHdCQUF3QixFQUV4QixVQUFVLEVBQ1YsS0FBSyxFQUNMLGdCQUFnQixFQUNoQixRQUFRLEVBR1IsV0FBVyxFQUNYLFdBQVcsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBS2xDLE1BQU0sT0FBTyxnQkFBZ0I7Ozs7Ozs7O0lBNEQzQixZQUNVLHdCQUFrRCxFQUNsRCxpQkFBNkIsRUFDN0IsZ0JBQWtDLEVBQ2xDLFFBQWtCLEVBQ2xCLFVBQXNCO1FBSnRCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFZO1FBQzdCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBUGhDLFdBQU0sR0FBRyxJQUFJLENBQUM7SUFRWCxDQUFDOzs7OztJQXRESixJQUFhLFdBQVcsQ0FBQyxZQUFxQjtRQUM1QyxJQUFJLFlBQVksS0FBSyxJQUFJLEVBQUU7WUFDekIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3JCO2FBQU07WUFDTCxJQUFJ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bkJOLG1DQUF5Qjs7SUFDekIsb0NBQTJCOztJQUMzQiw4Q0FBOEM7O0lBQzlDLHdDQUE4Qjs7SUFDOUIsZ0NBR0U7O0lBQ0Ysb0NBQ2lCOztJQThDakIsdUNBQStCOztJQUMvQixzQ0FBOEI7O0lBQzlCLGtDQUFjOzs7OztJQUdaLG9EQUEwRDs7Ozs7SUFDMUQsNkNBQXFDOzs7OztJQUNyQyw0Q0FBMEM7Ozs7O0lBQzFDLG9DQUEwQjs7Ozs7SUFDMUIsc0NBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBEaXJlY3RpdmUsXHJcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gIENvbXBvbmVudFJlZixcclxuICBFbGVtZW50UmVmLFxyXG4gIElucHV0LFxyXG4gIFZpZXdDb250YWluZXJSZWYsXHJcbiAgSW5qZWN0b3IsXHJcbiAgVmlld1JlZixcclxuICBFbWJlZGRlZFZpZXdSZWYsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgSG9zdEJpbmRpbmdcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTG9hZGluZ0JhY2tkcm9wQ29tcG9uZW50IH0gZnJvbSAnLi9sb2FkaW5nLWJhY2tkcm9wLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExvYWRpbmdDb21wb25lbnQgfSBmcm9tICcuL2xvYWRpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZnJvbSwgZm9ya0pvaW4sIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBMb2FkaW5nVHlwZSB9IGZyb20gJy4vbG9hZGluZy50eXBlcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbZExvYWRpbmddJyxcclxuICBleHBvcnRBczogJ2RMb2FkaW5nJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9hZGluZ0RpcmVjdGl2ZSB7XHJcbiAgQElucHV0KCkgbWVzc2FnZTogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGJhY2tkcm9wOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGxvYWRpbmdUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcclxuICBASW5wdXQoKSBwb3NpdGlvblR5cGU6IHN0cmluZztcclxuICBASW5wdXQoKSB2aWV3OiB7XHJcbiAgICB0b3A/OiBzdHJpbmc7XHJcbiAgICBsZWZ0Pzogc3RyaW5nO1xyXG4gIH07XHJcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5wb3NpdGlvbicpXHJcbiAgcG9zaXRpb246IHN0cmluZztcclxuXHJcbiAgQElucHV0KCkgc2V0IHNob3dMb2FkaW5nKF9zaG93TG9hZGluZzogYm9vbGVhbikge1xyXG4gICAgaWYgKF9zaG93TG9hZGluZyA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLnN0YXJ0TG9hZGluZygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lbmRMb2FkaW5nKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBzZXQgbG9hZGluZyhsb2FkaW5nOiBMb2FkaW5nVHlwZSkge1xyXG4gICAgaWYgKGxvYWRpbmcgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAobG9hZGluZyBpbnN0YW5jZW9mIFN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLnN0YXJ0TG9hZGluZygpO1xyXG4gICAgICBsb2FkaW5nLmFkZCgoKSA9PiB0aGlzLmVuZExvYWRpbmcoKSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGxvYWRpbmdBcnIgPSBbXS5jb25jYXQobG9hZGluZykubWFwKGl0ZW0gPT4ge1xyXG4gICAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcclxuICAgICAgICByZXR1cm4gaXRlbTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZnJvbShpdGVtKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChsb2FkaW5nQXJyLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zdGFydExvYWRpbmcoKTtcclxuICAgICAgZm9ya0pvaW4obG9hZGluZ0FycilcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgbnVsbCxcclxuICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5lbmRMb2FkaW5nKCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmVuZExvYWRpbmcoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYmFja2Ryb3BSZWY6IENvbXBvbmVudFJlZjxhbnk+O1xyXG4gIGxvYWRpbmdSZWY6IENvbXBvbmVudFJlZjxhbnk+O1xyXG4gIGFjdGl2ZSA9IHRydWU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgIHByaXZhdGUgdHJpZ2dlckVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZlxyXG4gICkge31cclxuXHJcbiAgcHJpdmF0ZSBzdGFydExvYWRpbmcoKSB7XHJcbiAgICBpZiAoIXRoaXMubG9hZGluZ1JlZikge1xyXG5cclxuICAgICAgdGhpcy5wb3NpdGlvbiA9IHRoaXMucG9zaXRpb25UeXBlIHx8ICdyZWxhdGl2ZSc7XHJcblxyXG4gICAgICBpZiAodGhpcy5iYWNrZHJvcCkge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlTG9hZGluZ0JhY2tkcm9wKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMubG9hZGluZ1JlZiA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoXHJcbiAgICAgICAgdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoTG9hZGluZ0NvbXBvbmVudCksXHJcbiAgICAgICAgbnVsbCxcclxuICAgICAgICB0aGlzLmluamVjdG9yXHJcbiAgICAgICk7XHJcblxyXG4gICAgICB0aGlzLmluc2VydCh0aGlzLmxvYWRpbmdSZWYuaG9zdFZpZXcpO1xyXG5cclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmxvYWRpbmdSZWYuaW5zdGFuY2UsIHtcclxuICAgICAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UsXHJcbiAgICAgICAgbG9hZGluZ1RlbXBsYXRlUmVmOiB0aGlzLmxvYWRpbmdUZW1wbGF0ZVJlZixcclxuICAgICAgICB0b3A6IHRoaXMudmlldyA/IHRoaXMudmlldy50b3AgOiAnNTAlJyxcclxuICAgICAgICBsZWZ0OiB0aGlzLnZpZXcgPyB0aGlzLnZpZXcubGVmdCA6ICc1MCUnLFxyXG4gICAgICAgIGlzQ3VzdG9tUG9zaXRpb246ICEhdGhpcy52aWV3XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbmRMb2FkaW5nKCkge1xyXG4gICAgaWYgKHRoaXMubG9hZGluZ1JlZikge1xyXG4gICAgICB0aGlzLmxvYWRpbmdSZWYuZGVzdHJveSgpO1xyXG4gICAgICB0aGlzLmxvYWRpbmdSZWYgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmJhY2tkcm9wUmVmKSB7XHJcbiAgICAgIHRoaXMuYmFja2Ryb3BSZWYuZGVzdHJveSgpO1xyXG4gICAgICB0aGlzLmJhY2tkcm9wUmVmID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMucG9zaXRpb24gPSAnJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlTG9hZGluZ0JhY2tkcm9wKCkge1xyXG4gICAgdGhpcy5iYWNrZHJvcFJlZiA9XHJcbiAgICAgICF0aGlzLmJhY2tkcm9wUmVmICYmXHJcbiAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoXHJcbiAgICAgICAgdGhpcy5jb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoTG9hZGluZ0JhY2tkcm9wQ29tcG9uZW50KSxcclxuICAgICAgICBudWxsLFxyXG4gICAgICAgIHRoaXMuaW5qZWN0b3JcclxuICAgICAgKTtcclxuICAgIHRoaXMuaW5zZXJ0KHRoaXMuYmFja2Ryb3BSZWYuaG9zdFZpZXcpO1xyXG5cclxuICAgIE9iamVjdC5hc3NpZ24odGhpcy5iYWNrZHJvcFJlZi5pbnN0YW5jZSwge1xyXG4gICAgICB0cmlnZ2VyRWxlbWVudFJlZjogdGhpcy50cmlnZ2VyRWxlbWVudFJlZixcclxuICAgICAgYmFja2Ryb3A6IHRoaXMuYmFja2Ryb3BcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbnNlcnQodmlld1JlZjogVmlld1JlZik6IFZpZXdSZWYge1xyXG4gICAgKHZpZXdSZWYgYXMgRW1iZWRkZWRWaWV3UmVmPGFueT4pLnJvb3ROb2Rlcy5mb3JFYWNoKG5vZGUgPT4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYXBwZW5kQ2hpbGQobm9kZSkpO1xyXG4gICAgcmV0dXJuIHZpZXdSZWY7XHJcbiAgfVxyXG59XHJcbiJdfQ==