ng-busy
Version:
Show busy/loading indicators on any promise or subscription
1 lines • 32.5 kB
Source Map (JSON)
{"version":3,"file":"ng-busy.mjs","sources":["../../../projects/ng-busy/src/lib/service/instance-config-holder.service.ts","../../../projects/ng-busy/src/lib/model/busy-config.ts","../../../projects/ng-busy/src/lib/util/isPromise.ts","../../../projects/ng-busy/src/lib/service/busy-tracker.service.ts","../../../projects/ng-busy/src/lib/service/busy-config-holder.service.ts","../../../projects/ng-busy/src/lib/component/ng-busy/ng-busy.component.ts","../../../projects/ng-busy/src/lib/component/ng-busy/ng-busy.component.html","../../../projects/ng-busy/src/lib/ng-busy.directive.ts","../../../projects/ng-busy/src/lib/ng-busy.module.ts","../../../projects/ng-busy/src/public_api.ts","../../../projects/ng-busy/src/ng-busy.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport {IBusyConfig} from '../model/busy-config';\r\n\r\n@Injectable({\r\n providedIn: 'any'\r\n})\r\nexport class InstanceConfigHolderService {\r\n public config: IBusyConfig;\r\n constructor() { }\r\n}\r\n","import {Subscription} from 'rxjs';\r\nimport {Component, TemplateRef, Type, Inject, ChangeDetectorRef} from '@angular/core';\r\nimport {InstanceConfigHolderService} from '../service/instance-config-holder.service';\r\n\r\nexport class BusyConfig implements IBusyConfig {\r\n template: TemplateRef<any> | Type<any>;\r\n templateNgStyle: {};\r\n delay: number;\r\n minDuration: number;\r\n backdrop: boolean;\r\n message: string;\r\n wrapperClass: string;\r\n disableAnimation: boolean;\r\n\r\n constructor(config: IBusyConfig = {}) {\r\n for (const option of Object.keys(BUSY_CONFIG_DEFAULTS)) {\r\n this[option] = config[option] !== undefined ? config[option] : BUSY_CONFIG_DEFAULTS[option];\r\n }\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'default-busy',\r\n template: `\r\n <div class=\"ng-busy-default-wrapper\">\r\n <div class=\"ng-busy-default-sign\">\r\n <div class=\"ng-busy-default-spinner\">\r\n <div class=\"bar1\"></div>\r\n <div class=\"bar2\"></div>\r\n <div class=\"bar3\"></div>\r\n <div class=\"bar4\"></div>\r\n <div class=\"bar5\"></div>\r\n <div class=\"bar6\"></div>\r\n <div class=\"bar7\"></div>\r\n <div class=\"bar8\"></div>\r\n <div class=\"bar9\"></div>\r\n <div class=\"bar10\"></div>\r\n <div class=\"bar11\"></div>\r\n <div class=\"bar12\"></div>\r\n </div>\r\n <div class=\"ng-busy-default-text\">{{message}}</div>\r\n </div>\r\n </div>\r\n `,\r\n})\r\nexport class DefaultBusyComponent {\r\n\r\n constructor(@Inject('instanceConfigHolder') private instanceConfigHolder: InstanceConfigHolderService) {\r\n }\r\n\r\n get message() {\r\n return this.instanceConfigHolder.config.message;\r\n }\r\n}\r\n\r\nexport interface IBusyConfig {\r\n template?: TemplateRef<any> | Type<any>;\r\n templateNgStyle?: {};\r\n delay?: number;\r\n minDuration?: number;\r\n backdrop?: boolean;\r\n message?: string;\r\n wrapperClass?: string;\r\n busy?: Array<Promise<any> | Subscription>;\r\n disableAnimation?: boolean;\r\n}\r\n\r\nexport const BUSY_CONFIG_DEFAULTS = {\r\n template: DefaultBusyComponent,\r\n templateNgStyle: {},\r\n delay: 0,\r\n minDuration: 0,\r\n backdrop: true,\r\n message: 'Please wait...',\r\n wrapperClass: 'ng-busy',\r\n disableAnimation: false\r\n};\r\n","export function isPromise(value: any): value is PromiseLike<any> {\r\n return value && typeof (<any>value).subscribe !== 'function' && typeof (value as any).then === 'function';\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport {\r\n BehaviorSubject, Observable, Subject, tap,\r\n Subscription, concatAll, from, takeUntil,\r\n timer, map, take, filter, combineLatest\r\n} from 'rxjs';\r\nimport { isPromise } from '../util/isPromise';\r\n\r\nexport interface TrackerOptions {\r\n minDuration: number;\r\n delay: number;\r\n busyList: Array<Promise<any> | Subscription>;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'any'\r\n})\r\nexport class BusyTrackerService implements OnDestroy {\r\n\r\n private busyQueue: Array<Subscription> = [];\r\n private operations: Subject<Observable<any>> = new Subject<Observable<any>>();\r\n private busyDone: Subject<any> = new Subject<any>();\r\n private destroyIndicator: Subject<any> = new Subject<any>();\r\n private checkSubject: Subject<TrackerOptions> = new Subject<TrackerOptions>();\r\n private processingIndicator: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n active: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n\r\n get isActive(): boolean {\r\n return this.active.value;\r\n }\r\n\r\n get busyList() {\r\n return [...this.busyQueue];\r\n }\r\n\r\n get isBusy() {\r\n return this.busyQueue.filter(b => !b.closed).length > 0;\r\n }\r\n\r\n constructor() {\r\n this.reset();\r\n this.operations.pipe(takeUntil(this.destroyIndicator), concatAll()).subscribe();\r\n this.checkSubject.pipe(takeUntil(this.destroyIndicator)).subscribe((options) => {\r\n this.processingIndicator.pipe(take(1)).subscribe((isProcessing) => {\r\n if (isProcessing === false && this.isBusy) {\r\n this.processingIndicator.next(true);\r\n timer(options.delay || 0).pipe(map(() => this.isBusy)).subscribe((stillBusy) => {\r\n if (stillBusy) {\r\n this.active.next(stillBusy);\r\n combineLatest([this.busyDone, timer(options.minDuration || 0)])\r\n .pipe(takeUntil(this.active.pipe(filter(a => a === false))))\r\n .subscribe(() => {\r\n if (!this.isBusy) {\r\n this.reset()\r\n }\r\n });\r\n } else {\r\n this.processingIndicator.next(false);\r\n }\r\n });\r\n }\r\n });\r\n });\r\n }\r\n\r\n load(options: TrackerOptions) {\r\n this.operations.next(\r\n from(options.busyList).pipe(\r\n filter(busy => busy !== null && busy !== undefined && !busy.hasOwnProperty('__loaded_mark_by_ng_busy')),\r\n tap((busy) => Object.defineProperty(busy, '__loaded_mark_by_ng_busy', {\r\n value: true, configurable: false, enumerable: false, writable: false\r\n })),\r\n map((busy) => isPromise(busy) ? from(busy).subscribe() : busy),\r\n tap(subscription => this.appendToQueue(subscription))\r\n )\r\n );\r\n this.checkSubject.next(options);\r\n }\r\n\r\n private updateActiveStatus() {\r\n this.busyQueue = this.busyQueue.filter((cur: Subscription) => cur && !cur.closed);\r\n if (this.busyQueue.length === 0) {\r\n this.busyDone.next(true);\r\n }\r\n }\r\n\r\n private reset() {\r\n this.active.next(false);\r\n this.busyQueue = [];\r\n this.processingIndicator.next(false);\r\n }\r\n\r\n private appendToQueue(busy: Subscription) {\r\n this.busyQueue.push(busy);\r\n busy.add(() => {\r\n this.operations.next(new Observable((subscriber) => {\r\n this.updateActiveStatus();\r\n subscriber.complete();\r\n }));\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroyIndicator.next(null);\r\n }\r\n}\r\n","import {Injectable, Optional} from '@angular/core';\r\nimport {BUSY_CONFIG_DEFAULTS, BusyConfig} from '../model/busy-config';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BusyConfigHolderService {\r\n config: BusyConfig;\r\n\r\n constructor(@Optional() config: BusyConfig) {\r\n this.config = Object.assign({}, BUSY_CONFIG_DEFAULTS, config || new BusyConfig());\r\n }\r\n}\r\n","import { ChangeDetectorRef, Component, EventEmitter, Inject, OnDestroy, ViewContainerRef } from '@angular/core';\r\nimport { animate, style, transition, trigger } from '@angular/animations';\r\nimport { InstanceConfigHolderService } from '../../service/instance-config-holder.service';\r\nimport { Subject, takeUntil } from 'rxjs';\r\n\r\nconst inactiveStyle = style({\r\n opacity: 0,\r\n transform: 'translateY(-40px)'\r\n});\r\nconst timing = '.3s ease';\r\n\r\n@Component({\r\n selector: 'lib-ng-busy',\r\n templateUrl: './ng-busy.component.html',\r\n styleUrls: ['./ng-busy.component.css'],\r\n animations: [\r\n trigger('flyInOut', [\r\n transition('void => *', [\r\n inactiveStyle,\r\n animate(timing)\r\n ]),\r\n transition('* => void', [\r\n animate(timing, inactiveStyle)\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class NgBusyComponent implements OnDestroy {\r\n\r\n public wrapperClass: string;\r\n public disableAnimation = false;\r\n public showBackdrop = true;\r\n private destroyIndicator = new Subject<any>();\r\n public show = new Subject<boolean>();\r\n\r\n constructor(\r\n @Inject('instanceConfigHolder') private instanceConfigHolder: InstanceConfigHolderService,\r\n @Inject('busyEmitter') public busyEmitter: EventEmitter<boolean>,\r\n public vcr: ViewContainerRef,\r\n private cdr: ChangeDetectorRef,\r\n ) {\r\n this.show.pipe(takeUntil(this.destroyIndicator)).subscribe(() => {\r\n this.cdr.detectChanges();\r\n });\r\n this.busyEmitter.pipe(takeUntil(this.destroyIndicator))\r\n .subscribe((isActive: boolean) => {\r\n if (isActive === true) {\r\n const config = this.instanceConfigHolder.config;\r\n this.wrapperClass = config.wrapperClass;\r\n this.showBackdrop = config.backdrop;\r\n this.disableAnimation = config.disableAnimation;\r\n }\r\n this.show.next(isActive);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroyIndicator.next(null);\r\n }\r\n\r\n}\r\n","<ng-container *ngIf=\"show | async\">\r\n <div [class]=\"wrapperClass\" @flyInOut [@.disabled]=\"disableAnimation\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"ng-busy-backdrop\" @flyInOut [@.disabled]=\"disableAnimation\" *ngIf=\"showBackdrop\">\r\n </div>\r\n</ng-container>\r\n","import {\r\n ChangeDetectorRef,\r\n ComponentRef,\r\n Directive, DoCheck,\r\n EventEmitter, Injector,\r\n Input, OnDestroy,\r\n Output,\r\n Renderer2,\r\n TemplateRef, Type,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { BusyTrackerService } from './service/busy-tracker.service';\r\nimport { BusyConfigHolderService } from './service/busy-config-holder.service';\r\nimport { Subject, Subscription, distinctUntilChanged, skip, takeUntil } from 'rxjs';\r\nimport { IBusyConfig } from './model/busy-config';\r\nimport { NgBusyComponent } from './component/ng-busy/ng-busy.component';\r\nimport { InstanceConfigHolderService } from './service/instance-config-holder.service';\r\nimport { isPromise } from './util/isPromise';\r\n\r\n@Directive({\r\n selector: '[ngBusy]',\r\n providers: [BusyTrackerService, InstanceConfigHolderService],\r\n exportAs: 'ngBusy'\r\n})\r\nexport class NgBusyDirective implements DoCheck, OnDestroy {\r\n @Input('ngBusy')\r\n set options(op) {\r\n this._option = op;\r\n }\r\n\r\n get options() {\r\n return this._option;\r\n }\r\n\r\n get trackerService() {\r\n return this.tracker;\r\n }\r\n\r\n @Output() busyStart = new EventEmitter();\r\n @Output() busyStop = new EventEmitter();\r\n private _option: any;\r\n private optionsNorm: IBusyConfig;\r\n private busyRef: ComponentRef<NgBusyComponent>;\r\n private destroyIndicator: Subject<any> = new Subject<any>();\r\n private configLoader: Subject<IBusyConfig> = new Subject<IBusyConfig>();\r\n private busyEmitter: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n public template: TemplateRef<any> | Type<any>;\r\n public templateNgStyle: {};\r\n\r\n constructor(private configHolder: BusyConfigHolderService,\r\n private instanceConfigHolder: InstanceConfigHolderService,\r\n private tracker: BusyTrackerService,\r\n private cdr: ChangeDetectorRef,\r\n private vcr: ViewContainerRef,\r\n private renderer: Renderer2,\r\n private injector: Injector) {\r\n tracker.active.pipe(skip(1), takeUntil(this.destroyIndicator), distinctUntilChanged()).subscribe((status) => {\r\n if (status === true) {\r\n this.recreateBusyIfNecessary();\r\n this.busyStart.emit();\r\n } else {\r\n this.busyStop.emit();\r\n }\r\n this.busyEmitter.next(status);\r\n });\r\n this.configLoader.pipe(takeUntil(this.destroyIndicator)).subscribe((config) => {\r\n const busyList = config.busy.filter(b => b?.['closed'] !== true && !b?.hasOwnProperty?.('__loaded_mark_by_ng_busy'));\r\n this.optionsNorm = config;\r\n this.instanceConfigHolder.config = this.optionsNorm;\r\n if (busyList.length > 0) {\r\n this.tracker.load({\r\n busyList, delay: this.optionsNorm.delay,\r\n minDuration: this.optionsNorm.minDuration\r\n });\r\n }\r\n });\r\n }\r\n\r\n ngDoCheck() {\r\n this.configLoader.next(this.normalizeOptions(this.options));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroyIndicator.next(null);\r\n }\r\n\r\n private recreateBusyIfNecessary() {\r\n this.destroyComponents();\r\n this.template = this.optionsNorm.template;\r\n this.templateNgStyle = this.optionsNorm.templateNgStyle;\r\n this.createBusy();\r\n }\r\n\r\n private normalizeOptions(options: any): IBusyConfig {\r\n if (!options) {\r\n options = { busy: [] };\r\n } else if (Array.isArray(options)) {\r\n options = { busy: options };\r\n } else if (isPromise(options) || options instanceof Subscription) {\r\n options = { busy: [options] }\r\n }\r\n options = Object.assign({}, this.configHolder.config, options);\r\n if (!Array.isArray(options.busy)) {\r\n options.busy = [options.busy];\r\n }\r\n return options;\r\n }\r\n\r\n private destroyComponents() {\r\n if (this.busyRef) {\r\n this.busyRef.destroy();\r\n }\r\n }\r\n\r\n private createBusy() {\r\n const injector = Injector.create({\r\n providers: [\r\n {\r\n provide: 'instanceConfigHolder',\r\n useValue: this.instanceConfigHolder\r\n },\r\n {\r\n provide: 'busyEmitter',\r\n useValue: this.busyEmitter\r\n }\r\n ], parent: this.injector\r\n });\r\n this.template = this.optionsNorm.template;\r\n this.busyRef = this.vcr.createComponent(NgBusyComponent, { injector, projectableNodes: this.generateNgContent(injector) });\r\n this.busyRef.onDestroy(() => {\r\n this.busyRef.instance.ngOnDestroy();\r\n });\r\n this.cdr.markForCheck();\r\n this.busyRef.hostView.detectChanges();\r\n }\r\n\r\n private generateNgContent(injector: Injector) {\r\n if (typeof this.template === 'string') {\r\n const element = this.renderer.createText(this.template);\r\n return [[element]];\r\n }\r\n if (this.template instanceof TemplateRef) {\r\n const context = {};\r\n const viewRef = this.template.createEmbeddedView(context);\r\n return [viewRef.rootNodes];\r\n }\r\n if (typeof this.template === 'function') {\r\n const factory = this.vcr.createComponent(this.template, { injector });\r\n factory.onDestroy(() => {\r\n factory?.instance?.ngOnDestroy?.();\r\n });\r\n factory.changeDetectorRef.markForCheck();\r\n return [[factory.location.nativeElement]];\r\n }\r\n return [[]];\r\n }\r\n\r\n}","import {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport {BusyConfig, DefaultBusyComponent, IBusyConfig} from './model/busy-config';\r\nimport {CommonModule} from '@angular/common';\r\nimport {BusyTrackerService} from './service/busy-tracker.service';\r\nimport {BusyConfigHolderService} from './service/busy-config-holder.service';\r\nimport {NgBusyDirective} from './ng-busy.directive';\r\nimport {NgBusyComponent} from './component/ng-busy/ng-busy.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [DefaultBusyComponent, NgBusyDirective, NgBusyComponent],\r\n providers: [BusyConfigHolderService, BusyTrackerService],\r\n exports: [NgBusyDirective]\r\n})\r\nexport class NgBusyModule {\r\n static forRoot(config: IBusyConfig): ModuleWithProviders<NgBusyModule> {\r\n return {\r\n ngModule: NgBusyModule,\r\n providers: [\r\n {provide: BusyConfig, useValue: config}\r\n ]\r\n };\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ng-busy\r\n */\r\n\r\nexport * from \"./lib/ng-busy.module\";\r\nexport * from \"./lib/util/isPromise\";\r\nexport * from \"./lib/model/busy-config\";\r\nexport { NgBusyDirective } from \"./lib/ng-busy.directive\";\r\nexport { NgBusyComponent } from \"./lib/component/ng-busy/ng-busy.component\";\r\nexport { InstanceConfigHolderService } from \"./lib/service/instance-config-holder.service\";\r\nexport { BusyTrackerService } from \"./lib/service/busy-tracker.service\";\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.BusyConfig","i1.BusyConfigHolderService","i2.InstanceConfigHolderService","i3.BusyTrackerService"],"mappings":"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"}