ngx-spinner
Version:
A library with more than 50 different loading spinners for Angular 4 - 13. (https://napster2210.github.io/ngx-spinner/)
1 lines • 21.4 kB
Source Map (JSON)
{"version":3,"file":"ngx-spinner.mjs","sources":["../../../projects/ngx-spinner/src/lib/ngx-spinner.enum.ts","../../../projects/ngx-spinner/src/lib/ngx-spinner.service.ts","../../../projects/ngx-spinner/src/lib/safe-html.pipe.ts","../../../projects/ngx-spinner/src/lib/ngx-spinner.component.ts","../../../projects/ngx-spinner/src/lib/ngx-spinner.component.html","../../../projects/ngx-spinner/src/lib/ngx-spinner.module.ts","../../../projects/ngx-spinner/src/public_api.ts","../../../projects/ngx-spinner/src/ngx-spinner.ts"],"sourcesContent":["export const LOADERS = {\n 'ball-8bits': 16,\n 'ball-atom': 4,\n 'ball-beat': 3,\n 'ball-circus': 5,\n 'ball-climbing-dot': 4,\n 'ball-clip-rotate': 1,\n 'ball-clip-rotate-multiple': 2,\n 'ball-clip-rotate-pulse': 2,\n 'ball-elastic-dots': 5,\n 'ball-fall': 3,\n 'ball-fussion': 4,\n 'ball-grid-beat': 9,\n 'ball-grid-pulse': 9,\n 'ball-newton-cradle': 4,\n 'ball-pulse': 3,\n 'ball-pulse-rise': 5,\n 'ball-pulse-sync': 3,\n 'ball-rotate': 1,\n 'ball-running-dots': 5,\n 'ball-scale': 1,\n 'ball-scale-multiple': 3,\n 'ball-scale-pulse': 2,\n 'ball-scale-ripple': 1,\n 'ball-scale-ripple-multiple': 3,\n 'ball-spin': 8,\n 'ball-spin-clockwise': 8,\n 'ball-spin-clockwise-fade': 8,\n 'ball-spin-clockwise-fade-rotating': 8,\n 'ball-spin-fade': 8,\n 'ball-spin-fade-rotating': 8,\n 'ball-spin-rotate': 2,\n 'ball-square-clockwise-spin': 8,\n 'ball-square-spin': 8,\n 'ball-triangle-path': 3,\n 'ball-zig-zag': 2,\n 'ball-zig-zag-deflect': 2,\n 'cog': 1,\n 'cube-transition': 2,\n 'fire': 3,\n 'line-scale': 5,\n 'line-scale-party': 5,\n 'line-scale-pulse-out': 5,\n 'line-scale-pulse-out-rapid': 5,\n 'line-spin-clockwise-fade': 8,\n 'line-spin-clockwise-fade-rotating': 8,\n 'line-spin-fade': 8,\n 'line-spin-fade-rotating': 8,\n 'pacman': 6,\n 'square-jelly-box': 2,\n 'square-loader': 1,\n 'square-spin': 1,\n 'timer': 1,\n 'triangle-skew-spin': 1\n};\n\nexport const DEFAULTS = {\n BD_COLOR: 'rgba(51,51,51,0.8)',\n SPINNER_COLOR: '#fff',\n SPINNER_TYPE: 'ball-scale-multiple',\n Z_INDEX: 99999,\n};\n\nexport const PRIMARY_SPINNER = 'primary';\n\nexport type Size = 'default' | 'small' | 'medium' | 'large';\n\nexport interface Spinner {\n bdColor?: string;\n size?: Size;\n color?: string;\n type?: string;\n fullScreen?: boolean;\n zIndex?: number;\n template?: string;\n showSpinner?: boolean;\n}\n\nexport class NgxSpinner {\n name: string;\n bdColor: string;\n size: Size;\n color: string;\n type: string;\n class: string;\n divCount: number;\n divArray: Array<number>;\n fullScreen: boolean;\n show: boolean;\n zIndex: number;\n template: string;\n showSpinner: boolean;\n\n constructor(init?: Partial<NgxSpinner>) {\n Object.assign(this, init);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, BehaviorSubject } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { NgxSpinner, PRIMARY_SPINNER, Spinner } from './ngx-spinner.enum';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NgxSpinnerService {\n /**\n * Spinner observable\n *\n * @memberof NgxSpinnerService\n */\n // private spinnerObservable = new ReplaySubject<NgxSpinner>(1);\n public spinnerObservable = new BehaviorSubject<NgxSpinner>(null);\n /**\n * Creates an instance of NgxSpinnerService.\n * @memberof NgxSpinnerService\n */\n constructor() { }\n /**\n * Get subscription of desired spinner\n * @memberof NgxSpinnerService\n **/\n getSpinner(name: string): Observable<NgxSpinner> {\n return this.spinnerObservable.asObservable().pipe(filter((x: NgxSpinner) => x && x.name === name));\n }\n /**\n * To show spinner\n *\n * @memberof NgxSpinnerService\n */\n show(name: string = PRIMARY_SPINNER, spinner?: Spinner) {\n return new Promise((resolve, _reject) => {\n setTimeout(() => {\n if (spinner && Object.keys(spinner).length) {\n spinner['name'] = name;\n this.spinnerObservable.next(new NgxSpinner({ ...spinner, show: true }));\n resolve(true);\n } else {\n this.spinnerObservable.next(new NgxSpinner({ name, show: true }));\n resolve(true);\n }\n }, 10);\n });\n\n }\n /**\n * To hide spinner\n *\n * @memberof NgxSpinnerService\n */\n hide(name: string = PRIMARY_SPINNER, debounce: number = 10) {\n return new Promise((resolve, _reject) => {\n setTimeout(() => {\n this.spinnerObservable.next(new NgxSpinner({ name, show: false }));\n resolve(true);\n }, debounce);\n });\n }\n}\n","import { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'safeHtml'\n})\nexport class SafeHtmlPipe implements PipeTransform {\n\n constructor(private _sanitizer: DomSanitizer) {\n }\n\n transform(v: string): SafeHtml {\n if (v) {\n return this._sanitizer.bypassSecurityTrustHtml(v);\n }\n }\n}\n","import {\n Component,\n OnDestroy,\n Input,\n OnInit,\n OnChanges,\n SimpleChange,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n HostListener,\n ViewChild,\n ElementRef\n} from '@angular/core';\nimport { NgxSpinnerService } from './ngx-spinner.service';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { LOADERS, DEFAULTS, Size, NgxSpinner, PRIMARY_SPINNER } from './ngx-spinner.enum';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\n\n@Component({\n selector: 'ngx-spinner',\n templateUrl: 'ngx-spinner.component.html',\n styleUrls: ['ngx-spinner.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('fadeIn', [\n state('in', style({ opacity: 1 })),\n transition(':enter', [\n style({ opacity: 0 }),\n animate(300)\n ]),\n transition(':leave',\n animate(200, style({ opacity: 0 })))\n ])\n ]\n})\nexport class NgxSpinnerComponent implements OnDestroy, OnInit, OnChanges {\n\n /**\n * To set backdrop color\n * Only supports RGBA color format\n * @memberof NgxSpinnerComponent\n */\n @Input() bdColor: string;\n /**\n * To set spinner size\n *\n * @memberof NgxSpinnerComponent\n */\n @Input() size: Size;\n /**\n * To set spinner color(DEFAULTS.SPINNER_COLOR)\n *\n * @memberof NgxSpinnerComponent\n */\n @Input() color: string;\n /**\n * To set type of spinner\n *\n * @memberof NgxSpinnerComponent\n */\n @Input() type: string;\n /**\n * To toggle fullscreen mode\n *\n * @memberof NgxSpinnerComponent\n */\n @Input() fullScreen: boolean;\n /**\n * Spinner name\n *\n * @memberof NgxSpinnerComponent\n */\n @Input() name: string;\n /**\n * z-index value\n *\n * @memberof NgxSpinnerComponent\n */\n @Input() zIndex: number;\n /**\n * Custom template for spinner/loader\n *\n * @memberof NgxSpinnerComponent\n */\n @Input() template: string;\n /**\n * Show/Hide the spinner\n *\n * @type {boolean}\n * @memberof NgxSpinnerComponent\n */\n @Input() showSpinner: boolean;\n\n /**\n * To enable/disable animation\n *\n * @type {boolean}\n * @memberof NgxSpinnerComponent\n */\n @Input() disableAnimation: boolean = false;\n /**\n * Spinner Object\n *\n * @memberof NgxSpinnerComponent\n */\n spinner: NgxSpinner = new NgxSpinner();\n /**\n * Array for spinner's div\n *\n * @memberof NgxSpinnerComponent\n */\n divArray: Array<number>;\n /**\n * Counter for div\n *\n * @memberof NgxSpinnerComponent\n *\n */\n divCount: number;\n /**\n * Show spinner\n *\n * @memberof NgxSpinnerComponent\n **/\n show: boolean;\n /**\n * Unsubscribe from spinner's observable\n *\n * @memberof NgxSpinnerComponent\n **/\n ngUnsubscribe: Subject<void> = new Subject();\n /**\n * Element Reference\n *\n * @memberof NgxSpinnerComponent\n */\n @ViewChild('overlay') spinnerDOM;\n\n @HostListener('document:keydown', ['$event'])\n handleKeyboardEvent(event: KeyboardEvent) {\n if (this.spinnerDOM && this.spinnerDOM.nativeElement) {\n if (this.fullScreen || (!this.fullScreen && this.isSpinnerZone(event.target))) {\n event.returnValue = false;\n event.preventDefault();\n }\n }\n }\n\n /**\n * Creates an instance of NgxSpinnerComponent.\n *\n * @memberof NgxSpinnerComponent\n */\n constructor(private spinnerService: NgxSpinnerService, private changeDetector: ChangeDetectorRef, private elementRef: ElementRef) {\n this.bdColor = DEFAULTS.BD_COLOR;\n this.zIndex = DEFAULTS.Z_INDEX;\n this.color = DEFAULTS.SPINNER_COLOR;\n this.type = DEFAULTS.SPINNER_TYPE;\n this.size = 'large';\n this.fullScreen = true;\n this.name = PRIMARY_SPINNER;\n this.template = null;\n this.showSpinner = false;\n\n this.divArray = [];\n this.divCount = 0;\n this.show = false;\n }\n /**\n * Initialization method\n *\n * @memberof NgxSpinnerComponent\n */\n ngOnInit() {\n this.setDefaultOptions();\n this.spinnerService.getSpinner(this.name)\n .pipe(\n takeUntil(this.ngUnsubscribe)\n )\n .subscribe((spinner: NgxSpinner) => {\n this.setDefaultOptions();\n Object.assign(this.spinner, spinner);\n if (spinner.show) {\n this.onInputChange();\n }\n this.changeDetector.detectChanges();\n });\n }\n\n /**\n * To check event triggers inside the Spinner Zone\n *\n * @param {*} element\n * @returns {boolean}\n * @memberof NgxSpinnerComponent\n */\n isSpinnerZone(element: any): boolean {\n if (element === this.elementRef.nativeElement.parentElement) {\n return true;\n }\n return element.parentNode && this.isSpinnerZone(element.parentNode);\n }\n\n /**\n * To set default ngx-spinner options\n *\n * @memberof NgxSpinnerComponent\n */\n setDefaultOptions = () => {\n this.spinner = new NgxSpinner({\n name: this.name,\n bdColor: this.bdColor,\n size: this.size,\n color: this.color,\n type: this.type,\n fullScreen: this.fullScreen,\n divArray: this.divArray,\n divCount: this.divCount,\n show: this.show,\n zIndex: this.zIndex,\n template: this.template,\n showSpinner: this.showSpinner\n });\n }\n /**\n * On changes event for input variables\n *\n * @memberof NgxSpinnerComponent\n */\n ngOnChanges(changes: { [propKey: string]: SimpleChange }) {\n for (const propName in changes) {\n if (propName) {\n const changedProp = changes[propName];\n if (changedProp.isFirstChange()) {\n return;\n } else if (typeof changedProp.currentValue !== 'undefined' && changedProp.currentValue !== changedProp.previousValue) {\n if (changedProp.currentValue !== '') {\n this.spinner[propName] = changedProp.currentValue;\n if (propName === 'showSpinner') {\n if (changedProp.currentValue) {\n this.spinnerService.show(this.spinner.name, this.spinner);\n } else {\n this.spinnerService.hide(this.spinner.name);\n }\n }\n }\n }\n }\n }\n }\n /**\n * To get class for spinner\n *\n * @memberof NgxSpinnerComponent\n */\n getClass(type: string, size: Size): string {\n this.spinner.divCount = LOADERS[type];\n this.spinner.divArray = Array(this.spinner.divCount).fill(0).map((x, i) => i);\n let sizeClass = '';\n switch (size.toLowerCase()) {\n case 'small':\n sizeClass = 'la-sm';\n break;\n case 'medium':\n sizeClass = 'la-2x';\n break;\n case 'large':\n sizeClass = 'la-3x';\n break;\n default:\n break;\n }\n return 'la-' + type + ' ' + sizeClass;\n }\n /**\n * Check if input variables have changed\n *\n * @memberof NgxSpinnerComponent\n */\n onInputChange() {\n this.spinner.class = this.getClass(this.spinner.type, this.spinner.size);\n }\n /**\n * Component destroy event\n *\n * @memberof NgxSpinnerComponent\n */\n ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n}\n","<div [@.disabled]=\"disableAnimation\" [@fadeIn]=\"'in'\" *ngIf=\"spinner.show\" class=\"ngx-spinner-overlay\"\n [style.background-color]=\"spinner.bdColor\" [style.z-index]=\"spinner.zIndex\"\n [style.position]=\"spinner.fullScreen ? 'fixed' : 'absolute'\" #overlay>\n <div *ngIf=\"!template\" [class]=\"spinner.class\" [style.color]=\"spinner.color\">\n <div *ngFor=\"let index of spinner.divArray\"></div>\n </div>\n <div *ngIf=\"template\" [innerHTML]=\"template | safeHtml\"></div>\n <div class=\"loading-text\" [style.z-index]=\"spinner.zIndex\">\n <ng-content></ng-content>\n </div>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgxSpinnerComponent } from './ngx-spinner.component';\nimport { SafeHtmlPipe } from './safe-html.pipe';\n\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [NgxSpinnerComponent, SafeHtmlPipe],\n exports: [NgxSpinnerComponent]\n})\nexport class NgxSpinnerModule { }\n","/*\n * Public API Surface of ngx-spinner\n */\nexport * from './lib/ngx-spinner.service';\nexport * from './lib/ngx-spinner.component';\nexport * from './lib/ngx-spinner.module';\nexport * from './lib/ngx-spinner.enum';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}