@duoduo-oba/ng-devui
Version:
DevUI components based on Angular
223 lines • 17.5 kB
JavaScript
/**
* @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==