@tapsellorg/angular-material-library
Version:
Angular library for Tapsell
1 lines • 14.1 kB
Source Map (JSON)
{"version":3,"file":"tapsellorg-angular-material-library-src-lib-loader.mjs","sources":["../../projects/pegah-library/src/lib/loader/loader.ts","../../projects/pegah-library/src/lib/loader/loader.directive.ts","../../projects/pegah-library/src/lib/loader/loader.module.ts","../../projects/pegah-library/src/lib/loader/loader.rxjs.ts","../../projects/pegah-library/src/lib/loader/tapsellorg-angular-material-library-src-lib-loader.ts"],"sourcesContent":["import { Observable, Subject } from 'rxjs';\nimport { auditTime, startWith } from 'rxjs/operators';\nimport { PghLoaderConfig, PghLoaderToggleable, PghLoaderType } from './loader.models';\n\nexport class PghLoader implements PghLoaderToggleable {\n config: PghLoaderConfig;\n loaderType: PghLoaderType;\n\n private readonly _active$ = new Subject<boolean>();\n get active$(): Observable<boolean> {\n return this._active$.pipe(startWith(this.isActive), auditTime(200));\n }\n\n /**\n * This shows if any data is ever loaded\n * It's like `!is` but at first it's false\n * Useful for empty state\n */\n isDataLoaded = false;\n private _loaderActive = false;\n get isActive() {\n return this._loaderActive;\n }\n\n private setLoaderState(value: boolean) {\n this._loaderActive = value;\n this.isDataLoaded = !value;\n this._active$.next(value);\n }\n\n constructor(loaderType?: PghLoaderType | null, config?: PghLoaderConfig | null) {\n this.loaderType = loaderType ?? 'default';\n this.config = { disabledWhileLoading: loaderType === 'button', ...config };\n }\n\n activate() {\n this.setLoaderState(true);\n }\n deactivate() {\n this.setLoaderState(false);\n }\n}\n","import {\n Directive,\n ElementRef,\n input,\n OnChanges,\n OnDestroy,\n Optional,\n SimpleChanges,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { MatButton } from '@angular/material/button';\nimport { PghLoader } from './loader';\nimport {\n PghLoaderColor,\n PghLoaderConfig,\n PghLoaderToggleable,\n PghLoaderType,\n PghLoaderTypePiece,\n} from './loader.models';\n\n@Directive({\n selector: '[pghLoader]',\n exportAs: 'pghLoader',\n standalone: false,\n})\nexport class PghLoaderDirective implements OnChanges, OnDestroy, PghLoaderToggleable {\n loader = input<PghLoader | PghLoaderType | null | undefined>(undefined, {\n alias: 'pghLoader',\n });\n _color = input<PghLoaderColor | null | undefined>(undefined, {\n alias: 'color',\n });\n _disabledWhileLoading = input<boolean | null | undefined>(undefined, {\n alias: 'pghDisabledWhileLoading',\n });\n _loaderType = input<PghLoaderType | null | undefined>(undefined, {\n alias: 'pghLoaderType',\n });\n\n private elm: HTMLElement;\n private _active$Subscription?: Subscription;\n isActive = false;\n\n loaderType: PghLoaderType = 'default';\n loaderColor: PghLoaderColor = 'primary';\n disabledWhileLoading: boolean = false;\n isDataLoaded: boolean = false;\n\n private static extractLoaderStyleAttributes(type: PghLoaderType): string {\n return typeof type === 'string' ? type : type.join(' ');\n }\n\n activate() {\n this.setLoaderActive(true);\n }\n deactivate() {\n this.setLoaderActive(false);\n }\n\n constructor(\n { nativeElement: elm }: ElementRef<HTMLElement>,\n @Optional() private matButton?: MatButton,\n ) {\n this.elm = elm;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this.loaderType = this.getLoaderType();\n this.loaderColor = this.getLoaderColor();\n this.disabledWhileLoading = this.getDisabledWhileLoading();\n\n if (changes._disabledWhileLoading) {\n this.handleDisabling();\n }\n if (changes.loader || changes._loaderType || changes._color) {\n this.configLoaderAttributes();\n }\n if (changes.loader) {\n this.setupActiveListener();\n }\n }\n\n private setLoaderActive(isActive: boolean) {\n if (isActive === this.isActive) return;\n\n this.isActive = isActive;\n if (isActive) {\n this.elm.classList.add('pgh-loader-active');\n } else {\n this.elm.classList.remove('pgh-loader-active');\n }\n\n this.handleDisabling();\n }\n\n private handleDisabling() {\n if (!this.disabledWhileLoading) return;\n\n const isDisabled =\n (this.elm as HTMLButtonElement).disabled ?? !!this.elm.getAttribute('disabled');\n\n if (this.isActive === isDisabled) return;\n\n if (this.isActive) {\n this.elm.setAttribute('disabled', 'true');\n } else {\n this.elm.removeAttribute('disabled');\n }\n\n if (this.matButton) {\n this.matButton.disabled = this.isActive;\n }\n }\n\n private hasLoaderType(typePiece: PghLoaderTypePiece) {\n const type = this.loaderType;\n return type === typePiece || (Array.isArray(type) && type.includes(typePiece));\n }\n\n private configLoaderAttributes() {\n const color: PghLoaderColor = this.loaderColor;\n const type: PghLoaderType = this.loaderType;\n\n const loaderStyleAttributes = PghLoaderDirective.extractLoaderStyleAttributes(type);\n\n this.elm.setAttribute('data-pgh-loader', `${loaderStyleAttributes} ${color}`);\n }\n\n private setupActiveListener() {\n if (!(this.loader() instanceof PghLoader)) return;\n const pghLoader = this.loader() as PghLoader;\n\n if (this._active$Subscription) {\n this._active$Subscription.unsubscribe();\n }\n this._active$Subscription = pghLoader?.active$.subscribe((isActive: boolean) => {\n this.setLoaderActive(isActive);\n this.isDataLoaded = pghLoader.isDataLoaded;\n });\n }\n\n ngOnDestroy() {\n this._active$Subscription?.unsubscribe();\n }\n\n private getConfig(): PghLoaderConfig {\n const loader = this.loader() as PghLoader;\n return loader instanceof PghLoader ? loader?.config : {};\n }\n\n private getLoaderType(): PghLoaderType {\n const loader = this.loader();\n const loaderType = this._loaderType() as PghLoaderType;\n return (\n loaderType ?? (loader instanceof PghLoader ? loader?.loaderType : this.loader()) ?? 'default'\n );\n }\n\n private getLoaderColor(): PghLoaderColor {\n const config = this.getConfig();\n\n let color = this._color() ?? config.color ?? 'primary';\n if (!['primary', 'accent'].includes(color)) {\n color = 'primary';\n }\n return color;\n }\n\n private getDisabledWhileLoading() {\n const config = this.getConfig();\n\n return (\n this._disabledWhileLoading() ?? config.disabledWhileLoading ?? this.hasLoaderType('button')\n );\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { PghLoaderDirective } from './loader.directive';\n\n@NgModule({\n declarations: [PghLoaderDirective],\n imports: [CommonModule],\n exports: [PghLoaderDirective],\n})\nexport class PghLoaderModule {}\n","import { defer, MonoTypeOperatorFunction, Observable } from 'rxjs';\nimport { finalize } from 'rxjs/operators';\nimport { PghLoaderToggleable } from './loader.models';\n\n/**\n * Add this operator to an observable and it'll activate the loader (input)\n * and deactivate it when the observable completes\n * @param loader\n */\nexport const pghLoader: <T>(\n loader: PghLoaderToggleable | undefined | null,\n) => MonoTypeOperatorFunction<T> =\n <T>(loader: PghLoaderToggleable | undefined | null) =>\n (source: Observable<T>) =>\n defer(() => {\n loader?.activate();\n return source.pipe(\n finalize(() => {\n loader?.deactivate();\n }),\n );\n });\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}