UNPKG

ng-devui

Version:

DevUI components based on Angular

75 lines 12.5 kB
import { DOCUMENT } from '@angular/common'; import { ComponentFactoryResolver, Inject, Injectable, RendererFactory2 } from '@angular/core'; import { OverlayContainerRef } from 'ng-devui/overlay-container'; import { LoadingBackdropComponent } from './loading-backdrop.component'; import { LoadingComponent } from './loading.component'; import * as i0 from "@angular/core"; import * as i1 from "ng-devui/overlay-container"; export class LoadingService { constructor(overlayContainerRef, componentFactoryResolver, rendererFactory, doc) { this.overlayContainerRef = overlayContainerRef; this.componentFactoryResolver = componentFactoryResolver; this.rendererFactory = rendererFactory; this.doc = doc; this.renderer = this.rendererFactory.createRenderer(null, null); this.document = this.doc; } // loading 服务内的函数,外部就可以传入ILoadingOptions类型的参数调用它 open({ target = this.document.body, backdrop = true, message, loadingTemplateRef, positionType = 'relative', view, injector, zIndex, loadingStyle = 'default', } = {}) { const finalComponentFactoryResolver = this.componentFactoryResolver; let positionTypeOld = ''; positionTypeOld = '' || target.style.position; let backdropRef; if (backdrop) { backdropRef = this.overlayContainerRef.createComponent(finalComponentFactoryResolver.resolveComponentFactory(LoadingBackdropComponent), injector); Object.assign(backdropRef.instance, { backdrop: backdrop, zIndex: zIndex, target: target ? target : this.document.body, }); const viewRef = backdropRef.hostView; viewRef.rootNodes.forEach((node) => target.appendChild(node)); } const loadingRef = this.overlayContainerRef.createComponent(finalComponentFactoryResolver.resolveComponentFactory(LoadingComponent), injector); Object.assign(loadingRef.instance, { message: message, zIndex: zIndex, loadingTemplateRef: loadingTemplateRef, top: view ? view.top : '50%', left: view ? view.left : '50%', isCustomPosition: !!view, target: target ? target : this.document.body, loadingStyle: loadingStyle, }); this.renderer.setStyle(target, 'position', positionType); const viewRef1 = loadingRef.hostView; viewRef1.rootNodes.forEach((node) => target.appendChild(node)); loadingRef.instance.close = () => { if (loadingRef) { loadingRef.destroy(); } if (backdropRef) { backdropRef.destroy(); backdropRef = null; } this.renderer.setStyle(target, 'position', positionTypeOld); }; // 返回一个对象内含2个实例loadingInstance和backdropInstance return { loadingInstance: loadingRef.instance, backdropInstance: backdropRef ? backdropRef.instance : null, }; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoadingService, deps: [{ token: i1.OverlayContainerRef }, { token: i0.ComponentFactoryResolver }, { token: i0.RendererFactory2 }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoadingService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LoadingService, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: () => [{ type: i1.OverlayContainerRef }, { type: i0.ComponentFactoryResolver }, { type: i0.RendererFactory2 }, { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT] }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZGV2dWkvbG9hZGluZy9sb2FkaW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSx3QkFBd0IsRUFBaUMsTUFBTSxFQUFFLFVBQVUsRUFBYSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6SSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBS3ZELE1BQU0sT0FBTyxjQUFjO0lBSXpCLFlBQ1UsbUJBQXdDLEVBQ3hDLHdCQUFrRCxFQUNsRCxlQUFpQyxFQUNmLEdBQVE7UUFIMUIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4Qyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELG9CQUFlLEdBQWYsZUFBZSxDQUFrQjtRQUNmLFFBQUcsR0FBSCxHQUFHLENBQUs7UUFFbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQzNCLENBQUM7SUFDRCxnREFBZ0Q7SUFDaEQsSUFBSSxDQUFDLEVBQ0gsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUMzQixRQUFRLEdBQUcsSUFBSSxFQUNmLE9BQU8sRUFDUCxrQkFBa0IsRUFDbEIsWUFBWSxHQUFHLFVBQVUsRUFDekIsSUFBSSxFQUNKLFFBQVEsRUFDUixNQUFNLEVBQ04sWUFBWSxHQUFHLFNB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LENBQUM7K0dBakZVLGNBQWMsNkhBUWYsUUFBUTttSEFSUCxjQUFjLGNBRmIsTUFBTTs7NEZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQVNJLE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBDb21wb25lbnRSZWYsIEVtYmVkZGVkVmlld1JlZiwgSW5qZWN0LCBJbmplY3RhYmxlLCBSZW5kZXJlcjIsIFJlbmRlcmVyRmFjdG9yeTIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT3ZlcmxheUNvbnRhaW5lclJlZiB9IGZyb20gJ25nLWRldnVpL292ZXJsYXktY29udGFpbmVyJztcclxuaW1wb3J0IHsgTG9hZGluZ0JhY2tkcm9wQ29tcG9uZW50IH0gZnJvbSAnLi9sb2FkaW5nLWJhY2tkcm9wLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IExvYWRpbmdDb21wb25lbnQgfSBmcm9tICcuL2xvYWRpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSUxvYWRpbmdPcHRpb25zIH0gZnJvbSAnLi9sb2FkaW5nLnR5cGVzJztcclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIExvYWRpbmdTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjI7XHJcbiAgZG9jdW1lbnQ6IERvY3VtZW50O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgb3ZlcmxheUNvbnRhaW5lclJlZjogT3ZlcmxheUNvbnRhaW5lclJlZixcclxuICAgIHByaXZhdGUgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5MixcclxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jOiBhbnlcclxuICApIHtcclxuICAgIHRoaXMucmVuZGVyZXIgPSB0aGlzLnJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihudWxsLCBudWxsKTtcclxuICAgIHRoaXMuZG9jdW1lbnQgPSB0aGlzLmRvYztcclxuICB9XHJcbiAgLy8gbG9hZGluZyDmnI3liqHlhoXnmoTlh73mlbDvvIzlpJbpg6jlsLHlj6/ku6XkvKDlhaVJTG9hZGluZ09wdGlvbnPnsbvlnovnmoTlj4LmlbDosIPnlKjlroNcclxuICBvcGVuKHtcclxuICAgIHRhcmdldCA9IHRoaXMuZG9jdW1lbnQuYm9keSxcclxuICAgIGJhY2tkcm9wID0gdHJ1ZSxcclxuICAgIG1lc3NhZ2UsXHJcbiAgICBsb2FkaW5nVGVtcGxhdGVSZWYsXHJcbiAgICBwb3NpdGlvblR5cGUgPSAncmVsYXRpdmUnLFxyXG4gICAgdmlldyxcclxuICAgIGluamVjdG9yLFxyXG4gICAgekluZGV4LFxyXG4gICAgbG9hZGluZ1N0eWxlID0gJ2RlZmF1bHQnLFxyXG4gIH06IElMb2FkaW5nT3B0aW9ucyA9IHt9KSB7XHJcbiAgICBjb25zdCBmaW5hbENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciA9IHRoaXMuY29tcG9uZW50RmFjdG9yeVJlc29sdmVyO1xyXG5cclxuICAgIGxldCBwb3NpdGlvblR5cGVPbGQgPSAnJztcclxuICAgIHBvc2l0aW9uVHlwZU9sZCA9ICcnIHx8ICh0YXJnZXQgYXMgYW55KS5zdHlsZS5wb3NpdGlvbjtcclxuICAgIGxldCBiYWNrZHJvcFJlZjogQ29tcG9uZW50UmVmPExvYWRpbmdCYWNrZHJvcENvbXBvbmVudD47XHJcbiAgICBpZiAoYmFja2Ryb3ApIHtcclxuICAgICAgYmFja2Ryb3BSZWYgPSB0aGlzLm92ZXJsYXlDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KFxyXG4gICAgICAgIGZpbmFsQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KExvYWRpbmdCYWNrZHJvcENvbXBvbmVudCksXHJcbiAgICAgICAgaW5qZWN0b3JcclxuICAgICAgKTtcclxuICAgICAgT2JqZWN0LmFzc2lnbihiYWNrZHJvcFJlZi5pbnN0YW5jZSwge1xyXG4gICAgICAgIGJhY2tkcm9wOiBiYWNrZHJvcCxcclxuICAgICAgICB6SW5kZXg6IHpJbmRleCxcclxuICAgICAgICB0YXJnZXQ6IHRhcmdldCA/IHRhcmdldCA6IHRoaXMuZG9jdW1lbnQuYm9keSxcclxuICAgICAgfSk7XHJcbiAgICAgIGNvbnN0IHZpZXdSZWYgPSBiYWNrZHJvcFJlZi5ob3N0VmlldztcclxuICAgICAgKHZpZXdSZWYgYXMgRW1iZWRkZWRWaWV3UmVmPGFueT4pLnJvb3ROb2Rlcy5mb3JFYWNoKChub2RlKSA9PiB0YXJnZXQuYXBwZW5kQ2hpbGQobm9kZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGxvYWRpbmdSZWYgPSB0aGlzLm92ZXJsYXlDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KFxyXG4gICAgICBmaW5hbENvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShMb2FkaW5nQ29tcG9uZW50KSxcclxuICAgICAgaW5qZWN0b3JcclxuICAgICk7XHJcblxyXG4gICAgT2JqZWN0LmFzc2lnbihsb2FkaW5nUmVmLmluc3RhbmNlLCB7XHJcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXHJcbiAgICAgIHpJbmRleDogekluZGV4LFxyXG4gICAgICBsb2FkaW5nVGVtcGxhdGVSZWY6IGxvYWRpbmdUZW1wbGF0ZVJlZixcclxuICAgICAgdG9wOiB2aWV3ID8gdmlldy50b3AgOiAnNTAlJyxcclxuICAgICAgbGVmdDogdmlldyA/IHZpZXcubGVmdCA6ICc1MCUnLFxyXG4gICAgICBpc0N1c3RvbVBvc2l0aW9uOiAhIXZpZXcsXHJcbiAgICAgIHRhcmdldDogdGFyZ2V0ID8gdGFyZ2V0IDogdGhpcy5kb2N1bWVudC5ib2R5LFxyXG4gICAgICBsb2FkaW5nU3R5bGU6IGxvYWRpbmdTdHlsZSxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGFyZ2V0LCAncG9zaXRpb24nLCBwb3NpdGlvblR5cGUpO1xyXG5cclxuICAgIGNvbnN0IHZpZXdSZWYxID0gbG9hZGluZ1JlZi5ob3N0VmlldztcclxuICAgICh2aWV3UmVmMSBhcyBFbWJlZGRlZFZpZXdSZWY8YW55Pikucm9vdE5vZGVzLmZvckVhY2goKG5vZGUpID0+IHRhcmdldC5hcHBlbmRDaGlsZChub2RlKSk7XHJcblxyXG4gICAgbG9hZGluZ1JlZi5pbnN0YW5jZS5jbG9zZSA9ICgpID0+IHtcclxuICAgICAgaWYgKGxvYWRpbmdSZWYpIHtcclxuICAgICAgICBsb2FkaW5nUmVmLmRlc3Ryb3koKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoYmFja2Ryb3BSZWYpIHtcclxuICAgICAgICBiYWNrZHJvcFJlZi5kZXN0cm95KCk7XHJcbiAgICAgICAgYmFja2Ryb3BSZWYgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGFyZ2V0LCAncG9zaXRpb24nLCBwb3NpdGlvblR5cGVPbGQpO1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyAg6L+U5Zue5LiA5Liq5a+56LGh5YaF5ZCrMuS4quWunuS+i2xvYWRpbmdJbnN0YW5jZeWSjGJhY2tkcm9wSW5zdGFuY2VcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGxvYWRpbmdJbnN0YW5jZTogbG9hZGluZ1JlZi5pbnN0YW5jZSxcclxuICAgICAgYmFja2Ryb3BJbnN0YW5jZTogYmFja2Ryb3BSZWYgPyBiYWNrZHJvcFJlZi5pbnN0YW5jZSA6IG51bGwsXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=