UNPKG

ngx-progress-indicator

Version:

A progress indicator library for [Angular](https://angular.io/) apps.

90 lines 11.1 kB
import { Injectable, Optional } from '@angular/core'; import { interval, take } from 'rxjs'; import * as i0 from "@angular/core"; import * as i1 from "./ngx-progress-indicator-config.model"; const assign = Object.assign; export class NgxProgressIndicatorService { constructor(rendererFactory, config) { this.rendererFactory = rendererFactory; this.renderer = this.rendererFactory.createRenderer(null, null); this.initialize(config); } initialize(config) { const options = assign({ size: 2, color: '#0083ff', className: 'ngx-progress-indicator', delay: 80, }, config); const initialStyle = { position: 'fixed', top: 0, left: 0, margin: 0, padding: 0, border: 'none', borderRadius: 0, backgroundColor: config.color, zIndex: 10000, height: typeof config.size === 'number' ? config.size + 'px' : config.size, color: config.color, opacity: 0, width: '0%', }; const startedStyle = { opacity: 1, width: '99%', transition: 'width 10s cubic-bezier(0.1, 0.05, 0, 1)', }; const finishedStyle = { opacity: 0, width: '100%', transition: 'width 0.1s ease-out, opacity 0.5s ease 0.2s', }; const glowStyle = { opacity: 0.4, boxShadow: '3px 0 8px', height: '100%', }; let parent; this.start = () => { if (parent && parent.parentNode) { this.renderer.removeChild(parent.parentNode, parent); } parent = this.renderer.createElement('div'); parent.className = options.className + ' stopped'; this.renderer.appendChild(document.body, parent); assign(parent.style, initialStyle); let child = this.renderer.createElement('div'); child.className = 'glow'; this.renderer.appendChild(parent, child); assign(child.style, glowStyle); interval(options.delay) .pipe(take(1)) .subscribe({ next: () => { parent.className = options.className + ' started'; assign(parent.style, startedStyle); }, }); parent.scrollTop = 0; }; this.finish = () => { if (parent) { parent.className = options.className + ' finished'; assign(parent.style, finishedStyle); } }; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxProgressIndicatorService, deps: [{ token: i0.RendererFactory2 }, { token: i1.NgxProgressIndicatorConfig, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxProgressIndicatorService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgxProgressIndicatorService, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: function () { return [{ type: i0.RendererFactory2 }, { type: i1.NgxProgressIndicatorConfig, decorators: [{ type: Optional }] }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXByb2dyZXNzLWluZGljYXRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXByb2dyZXNzLWluZGljYXRvci9zcmMvbGliL25neC1wcm9ncmVzcy1pbmRpY2F0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBK0IsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUl0QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBSzdCLE1BQU0sT0FBTywyQkFBMkI7SUFTdEMsWUFDVSxlQUFpQyxFQUM3QixNQUFrQztRQUR0QyxvQkFBZSxHQUFmLGVBQWUsQ0FBa0I7UUFHekMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFaEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRU8sVUFBVSxDQUFDLE1BQWtDO1FBQ25ELE1BQU0sT0FBTyxHQUErQixNQUFNLENBQ2hEO1lBQ0UsSUFBSSxFQUFFLENBQUM7WUFDUCxLQUFLLEVBQUUsU0FBUztZQUNoQixTQUFTLEVBQUUsd0JBQXdCO1lBQ25DLEtBQUssRUFBRSxFQUFFO1NBQ1YsRUFDRCxNQUFNLENBQ1AsQ0FBQztRQUVGLE1BQU0sWUFBWSxHQUFHO1lBQ25CLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLEdBQUcsRUFBRSxDQUFDO1lBQ04sSUFBSSxFQUFFLENBQUM7WUFDUCxNQUFNLEVBQUUsQ0FBQztZQUNULE9BQU8sRUFBRSxDQUFDO1lBQ1YsTUFBTSxFQUFFLE1BQU07WUFDZCxZQUFZLEVBQUUsQ0FBQztZQUNmLGVBQWUsRUFBRSxNQUFNLENB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ZGVyZXIyLCBSZW5kZXJlckZhY3RvcnkyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpbnRlcnZhbCwgdGFrZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBOZ3hQcm9ncmVzc0luZGljYXRvckNvbmZpZyB9IGZyb20gJy4vbmd4LXByb2dyZXNzLWluZGljYXRvci1jb25maWcubW9kZWwnO1xuXG5jb25zdCBhc3NpZ24gPSBPYmplY3QuYXNzaWduO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTmd4UHJvZ3Jlc3NJbmRpY2F0b3JTZXJ2aWNlIHtcbiAgLyoqIFNob3cgdGhlIHByb2dyZXNzIGJhciBhbmQgYmVnaW4gYW5pbWF0aW5nIGl0LiAqL1xuICBwdWJsaWMgc3RhcnQhOiAoKSA9PiB2b2lkO1xuXG4gIC8qKiBFbmQgdGhlIHByb2dyZXNzIGJhciBhbmltYXRpb24uICovXG4gIHB1YmxpYyBmaW5pc2ghOiAoKSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgcmVuZGVyZXIhOiBSZW5kZXJlcjI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIsXG4gICAgQE9wdGlvbmFsKCkgY29uZmlnOiBOZ3hQcm9ncmVzc0luZGljYXRvckNvbmZpZ1xuICApIHtcbiAgICB0aGlzLnJlbmRlcmVyID0gdGhpcy5yZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIobnVsbCwgbnVsbCk7XG5cbiAgICB0aGlzLmluaXRpYWxpemUoY29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZShjb25maWc6IE5neFByb2dyZXNzSW5kaWNhdG9yQ29uZmlnKTogdm9pZCB7XG4gICAgY29uc3Qgb3B0aW9uczogTmd4UHJvZ3Jlc3NJbmRpY2F0b3JDb25maWcgPSBhc3NpZ24oXG4gICAgICB7XG4gICAgICAgIHNpemU6IDIsXG4gICAgICAgIGNvbG9yOiAnIzAwODNmZicsXG4gICAgICAgIGNsYXNzTmFtZTogJ25neC1wcm9ncmVzcy1pbmRpY2F0b3InLFxuICAgICAgICBkZWxheTogODAsXG4gICAgICB9LFxuICAgICAgY29uZmlnXG4gICAgKTtcblxuICAgIGNvbnN0IGluaXRpYWxTdHlsZSA9IHtcbiAgICAgIHBvc2l0aW9uOiAnZml4ZWQnLFxuICAgICAgdG9wOiAwLFxuICAgICAgbGVmdDogMCxcbiAgICAgIG1hcmdpbjogMCxcbiAgICAgIHBhZGRpbmc6IDAsXG4gICAgICBib3JkZXI6ICdub25lJyxcbiAgICAgIGJvcmRlclJhZGl1czogMCxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogY29uZmlnLmNvbG9yLFxuICAgICAgekluZGV4OiAxMDAwMCxcbiAgICAgIGhlaWdodDpcbiAgICAgICAgdHlwZW9mIGNvbmZpZy5zaXplID09PSAnbnVtYmVyJyA/IGNvbmZpZy5zaXplICsgJ3B4JyA6IGNvbmZpZy5zaXplLFxuICAgICAgY29sb3I6IGNvbmZpZy5jb2xvcixcbiAgICAgIG9wYWNpdHk6IDAsXG4gICAgICB3aWR0aDogJzAlJyxcbiAgICB9O1xuXG4gICAgY29uc3Qgc3RhcnRlZFN0eWxlID0ge1xuICAgICAgb3BhY2l0eTogMSxcbiAgICAgIHdpZHRoOiAnOTklJyxcbiAgICAgIHRyYW5zaXRpb246ICd3aWR0aCAxMHMgY3ViaWMtYmV6aWVyKDAuMSwgMC4wNSwgMCwgMSknLFxuICAgIH07XG5cbiAgICBjb25zdCBmaW5pc2hlZFN0eWxlID0ge1xuICAgICAgb3BhY2l0eTogMCxcbiAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICB0cmFuc2l0aW9uOiAnd2lkdGggMC4xcyBlYXNlLW91dCwgb3BhY2l0eSAwLjVzIGVhc2UgMC4ycycsXG4gICAgfTtcblxuICAgIGNvbnN0IGdsb3dTdHlsZSA9IHtcbiAgICAgIG9wYWNpdHk6IDAuNCxcbiAgICAgIGJveFNoYWRvdzogJzNweCAwIDhweCcsXG4gICAgICBoZWlnaHQ6ICcxMDAlJyxcbiAgICB9O1xuXG4gICAgbGV0IHBhcmVudCE6IEhUTUxFbGVtZW50O1xuXG4gICAgdGhpcy5zdGFydCA9ICgpID0+IHtcbiAgICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LnBhcmVudE5vZGUpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZChwYXJlbnQucGFyZW50Tm9kZSwgcGFyZW50KTtcbiAgICAgIH1cblxuICAgICAgcGFyZW50ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIHBhcmVudC5jbGFzc05hbWUgPSBvcHRpb25zLmNsYXNzTmFtZSArICcgc3RvcHBlZCc7XG5cbiAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuYm9keSwgcGFyZW50KTtcblxuICAgICAgYXNzaWduKHBhcmVudC5zdHlsZSwgaW5pdGlhbFN0eWxlKTtcblxuICAgICAgbGV0IGNoaWxkID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIGNoaWxkLmNsYXNzTmFtZSA9ICdnbG93JztcbiAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQocGFyZW50LCBjaGlsZCk7XG4gICAgICBhc3NpZ24oY2hpbGQuc3R5bGUsIGdsb3dTdHlsZSk7XG5cbiAgICAgIGludGVydmFsKG9wdGlvbnMuZGVsYXkpXG4gICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICAgIHBhcmVudC5jbGFzc05hbWUgPSBvcHRpb25zLmNsYXNzTmFtZSArICcgc3RhcnRlZCc7XG4gICAgICAgICAgICBhc3NpZ24ocGFyZW50LnN0eWxlLCBzdGFydGVkU3R5bGUpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICBwYXJlbnQuc2Nyb2xsVG9wID0gMDtcbiAgICB9O1xuXG4gICAgdGhpcy5maW5pc2ggPSAoKSA9PiB7XG4gICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgIHBhcmVudC5jbGFzc05hbWUgPSBvcHRpb25zLmNsYXNzTmFtZSArICcgZmluaXNoZWQnO1xuICAgICAgICBhc3NpZ24ocGFyZW50LnN0eWxlLCBmaW5pc2hlZFN0eWxlKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG59XG4iXX0=