UNPKG

ngx-loader-indicator

Version:

The best directive without wrapping your element to additional component

1 lines 14.1 kB
{"version":3,"file":"ngx-loader-indicator.mjs","sources":["../../../projects/ngx-loader-indicator-lib/src/lib/ngx-loader-indicator.config.ts","../../../projects/ngx-loader-indicator-lib/src/lib/ngx-loader-indicator.directive.ts","../../../projects/ngx-loader-indicator-lib/src/lib/ngx-loader-indicator.providers.ts","../../../projects/ngx-loader-indicator-lib/src/public-api.ts","../../../projects/ngx-loader-indicator-lib/src/ngx-loader-indicator.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport type Styles = Record<string, string>;\nexport type Config = {\n img?: string;\n loaderStyles?: Styles;\n imgStyles?: Styles;\n hostStyles?: Styles;\n // TODO AnimationOptions\n rotate?: {\n delay?: number;\n direction?: 'normal' | 'reverse' | 'alternate' | 'alternate-reverse';\n duration?: number;\n easing?: string;\n endDelay?: number;\n fill?: 'none' | 'forwards' | 'backwards' | 'both' | 'auto';\n id?: string;\n iterationStart?: number;\n iterations?: number;\n };\n};\n\nexport type optionsConfig = Config;\n\nexport const NGX_LOADER_INDICATOR_CONFIG = new InjectionToken<string>('config');\nexport const NEW_CONFIG = new InjectionToken<string>('NEW_CONFIG');\nexport const INITIAL_CONFIG = new InjectionToken<Config>('INITIAL_CONFIG');\n\nexport const initialConfig: Config = {\n img: 'data:image/svg+xml;base64,PHN2ZyBjbGFzcz0ibGRzLXNwaW5uZXIiIHdpZHRoPSIzOXB4IiAgaGVpZ2h0PSIzOXB4IiAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIiBzdHlsZT0iYmFja2dyb3VuZDogbm9uZTsiPjxnIHRyYW5zZm9ybT0icm90YXRlKDAgNTAgNTApIj4gIDxyZWN0IHg9IjQ3LjUiIHk9Ii0zLjUiIHJ4PSIwLjk1MDAwMDAwMDAwMDAwMDEiIHJ5PSItMC4wNyIgd2lkdGg9IjUiIGhlaWdodD0iMjciIGZpbGw9IiNGOTc3NTYiPiAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJvcGFjaXR5IiB2YWx1ZXM9IjE7MCIga2V5VGltZXM9IjA7MSIgZHVyPSIxcyIgYmVnaW49Ii0wLjkxNjY2NjY2NjY2NjY2NjZzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSI+PC9hbmltYXRlPiAgPC9yZWN0PjwvZz48ZyB0cmFuc2Zvcm09InJvdGF0ZSgzMCA1MCA1MCkiPiAgPHJlY3QgeD0iNDcuNSIgeT0iLTMuNSIgcng9IjAuOTUwMDAwMDAwMDAwMDAwMSIgcnk9Ii0wLjA3IiB3aWR0aD0iNSIgaGVpZ2h0PSIyNyIgZmlsbD0iI0Y5Nzc1NiI+ICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9Im9wYWNpdHkiIHZhbHVlcz0iMTswIiBrZXlUaW1lcz0iMDsxIiBkdXI9IjFzIiBiZWdpbj0iLTAuODMzMzMzMzMzMzMzMzMzNHMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIj48L2FuaW1hdGU+ICA8L3JlY3Q+PC9nPjxnIHRyYW5zZm9ybT0icm90YXRlKDYwIDUwIDUwKSI+ICA8cmVjdCB4PSI0Ny41IiB5PSItMy41IiByeD0iMC45NTAwMDAwMDAwMDAwMDAxIiByeT0iLTAuMDciIHdpZHRoPSI1IiBoZWlnaHQ9IjI3IiBmaWxsPSIjRjk3NzU2Ij4gICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ib3BhY2l0eSIgdmFsdWVzPSIxOzAiIGtleVRpbWVzPSIwOzEiIGR1cj0iMXMiIGJlZ2luPSItMC43NXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIj48L2FuaW1hdGU+ICA8L3JlY3Q+PC9nPjxnIHRyYW5zZm9ybT0icm90YXRlKDkwIDUwIDUwKSI+ICA8cmVjdCB4PSI0Ny41IiB5PSItMy41IiByeD0iMC45NTAwMDAwMDAwMDAwMDAxIiByeT0iLTAuMDciIHdpZHRoPSI1IiBoZWlnaHQ9IjI3IiBmaWxsPSIjRjk3NzU2Ij4gICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ib3BhY2l0eSIgdmFsdWVzPSIxOzAiIGtleVRpbWVzPSIwOzEiIGR1cj0iMXMiIGJlZ2luPSItMC42NjY2NjY2NjY2NjY2NjY2cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiPjwvYW5pbWF0ZT4gIDwvcmVjdD48L2c+PGcgdHJhbnNmb3JtPSJyb3RhdGUoMTIwIDUwIDUwKSI+ICA8cmVjdCB4PSI0Ny41IiB5PSItMy41IiByeD0iMC45NTAwMDAwMDAwMDAwMDAxIiByeT0iLTAuMDciIHdpZHRoPSI1IiBoZWlnaHQ9IjI3IiBmaWxsPSIjRjk3NzU2Ij4gICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ib3BhY2l0eSIgdmFsdWVzPSIxOzAiIGtleVRpbWVzPSIwOzEiIGR1cj0iMXMiIGJlZ2luPSItMC41ODMzMzMzMzMzMzMzMzM0cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiPjwvYW5pbWF0ZT4gIDwvcmVjdD48L2c+PGcgdHJhbnNmb3JtPSJyb3RhdGUoMTUwIDUwIDUwKSI+ICA8cmVjdCB4PSI0Ny41IiB5PSItMy41IiByeD0iMC45NTAwMDAwMDAwMDAwMDAxIiByeT0iLTAuMDciIHdpZHRoPSI1IiBoZWlnaHQ9IjI3IiBmaWxsPSIjRjk3NzU2Ij4gICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ib3BhY2l0eSIgdmFsdWVzPSIxOzAiIGtleVRpbWVzPSIwOzEiIGR1cj0iMXMiIGJlZ2luPSItMC41cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiPjwvYW5pbWF0ZT4gIDwvcmVjdD48L2c+PGcgdHJhbnNmb3JtPSJyb3RhdGUoMTgwIDUwIDUwKSI+ICA8cmVjdCB4PSI0Ny41IiB5PSItMy41IiByeD0iMC45NTAwMDAwMDAwMDAwMDAxIiByeT0iLTAuMDciIHdpZHRoPSI1IiBoZWlnaHQ9IjI3IiBmaWxsPSIjRjk3NzU2Ij4gICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ib3BhY2l0eSIgdmFsdWVzPSIxOzAiIGtleVRpbWVzPSIwOzEiIGR1cj0iMXMiIGJlZ2luPSItMC40MTY2NjY2NjY2NjY2NjY3cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiPjwvYW5pbWF0ZT4gIDwvcmVjdD48L2c+PGcgdHJhbnNmb3JtPSJyb3RhdGUoMjEwIDUwIDUwKSI+ICA8cmVjdCB4PSI0Ny41IiB5PSItMy41IiByeD0iMC45NTAwMDAwMDAwMDAwMDAxIiByeT0iLTAuMDciIHdpZHRoPSI1IiBoZWlnaHQ9IjI3IiBmaWxsPSIjRjk3NzU2Ij4gICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ib3BhY2l0eSIgdmFsdWVzPSIxOzAiIGtleVRpbWVzPSIwOzEiIGR1cj0iMXMiIGJlZ2luPSItMC4zMzMzMzMzMzMzMzMzMzMzcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiPjwvYW5pbWF0ZT4gIDwvcmVjdD48L2c+PGcgdHJhbnNmb3JtPSJyb3RhdGUoMjQwIDUwIDUwKSI+ICA8cmVjdCB4PSI0Ny41IiB5PSItMy41IiByeD0iMC45NTAwMDAwMDAwMDAwMDAxIiByeT0iLTAuMDciIHdpZHRoPSI1IiBoZWlnaHQ9IjI3IiBmaWxsPSIjRjk3NzU2Ij4gICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ib3BhY2l0eSIgdmFsdWVzPSIxOzAiIGtleVRpbWVzPSIwOzEiIGR1cj0iMXMiIGJlZ2luPSItMC4yNXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIj48L2FuaW1hdGU+ICA8L3JlY3Q+PC9nPjxnIHRyYW5zZm9ybT0icm90YXRlKDI3MCA1MCA1MCkiPiAgPHJlY3QgeD0iNDcuNSIgeT0iLTMuNSIgcng9IjAuOTUwMDAwMDAwMDAwMDAwMSIgcnk9Ii0wLjA3IiB3aWR0aD0iNSIgaGVpZ2h0PSIyNyIgZmlsbD0iI0Y5Nzc1NiI+ICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9Im9wYWNpdHkiIHZhbHVlcz0iMTswIiBrZXlUaW1lcz0iMDsxIiBkdXI9IjFzIiBiZWdpbj0iLTAuMTY2NjY2NjY2NjY2NjY2NjZzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSI+PC9hbmltYXRlPiAgPC9yZWN0PjwvZz48ZyB0cmFuc2Zvcm09InJvdGF0ZSgzMDAgNTAgNTApIj4gIDxyZWN0IHg9IjQ3LjUiIHk9Ii0zLjUiIHJ4PSIwLjk1MDAwMDAwMDAwMDAwMDEiIHJ5PSItMC4wNyIgd2lkdGg9IjUiIGhlaWdodD0iMjciIGZpbGw9IiNGOTc3NTYiPiAgICA8YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJvcGFjaXR5IiB2YWx1ZXM9IjE7MCIga2V5VGltZXM9IjA7MSIgZHVyPSIxcyIgYmVnaW49Ii0wLjA4MzMzMzMzMzMzMzMzMzMzcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiPjwvYW5pbWF0ZT4gIDwvcmVjdD48L2c+PGcgdHJhbnNmb3JtPSJyb3RhdGUoMzMwIDUwIDUwKSI+ICA8cmVjdCB4PSI0Ny41IiB5PSItMy41IiByeD0iMC45NTAwMDAwMDAwMDAwMDAxIiByeT0iLTAuMDciIHdpZHRoPSI1IiBoZWlnaHQ9IjI3IiBmaWxsPSIjRjk3NzU2Ij4gICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ib3BhY2l0eSIgdmFsdWVzPSIxOzAiIGtleVRpbWVzPSIwOzEiIGR1cj0iMXMiIGJlZ2luPSIwcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiPjwvYW5pbWF0ZT4gIDwvcmVjdD48L2c+PC9zdmc+',\n loaderStyles: {\n position: 'absolute',\n left: '0',\n right: '0',\n top: '0',\n bottom: '0',\n background: 'rgba(255, 255, 255, 0.8)',\n 'z-index': '50',\n display: 'flex',\n 'justify-content': 'center',\n 'align-items': 'center',\n },\n imgStyles: {\n width: '30px',\n },\n hostStyles: {\n position: 'relative',\n },\n rotate: {\n iterations: Infinity,\n },\n};\n","import { Directive, effect, ElementRef, inject, input, Renderer2 } from '@angular/core';\nimport { NGX_LOADER_INDICATOR_CONFIG, Config } from './ngx-loader-indicator.config';\n\n@Directive({\n selector: '[ngxLoaderIndicator]',\n standalone: true,\n})\nexport class NgxLoaderIndicatorDirective {\n private readonly _config = inject<Config>(NGX_LOADER_INDICATOR_CONFIG);\n\n private readonly _el = inject(ElementRef);\n\n private readonly _renderer = inject(Renderer2);\n\n public loaderEl!: HTMLDivElement;\n public ngxLoaderIndicator = input<boolean>(false);\n public constructor() {\n effect(() => {\n this.processValue(this.ngxLoaderIndicator());\n });\n }\n private processValue(value: boolean) {\n if (!value) {\n if (this.loaderEl instanceof HTMLDivElement) {\n this._setStyles(this.loaderEl, { display: 'none' });\n }\n return;\n }\n const { rotate, hostStyles, loaderStyles, imgStyles, img } = this._config;\n\n this.loaderEl = this._renderer.createElement('div') as HTMLDivElement;\n const imgEl = this._renderer.createElement('img') as HTMLImageElement;\n\n imgEl.animate([{ transform: 'rotate(360deg)' }, { transform: 'rotate(0deg)' }], rotate);\n\n this._renderer.appendChild(this._el.nativeElement, this.loaderEl);\n this._renderer.appendChild(this.loaderEl, imgEl);\n\n this._setStyles(this._el.nativeElement as HTMLElement, hostStyles);\n this._setStyles(this.loaderEl, loaderStyles);\n this._setStyles(imgEl, imgStyles);\n\n if (!img) {\n return;\n }\n this._renderer.setAttribute(imgEl, 'src', img);\n }\n private _setStyles(element: HTMLElement, styles: Record<string, string> | undefined): void {\n if (!styles) {\n return;\n }\n Object.keys(styles).forEach((key: string) => {\n this._renderer.setStyle(element, key, styles[key]);\n });\n }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders, Provider } from '@angular/core';\nimport {\n NGX_LOADER_INDICATOR_CONFIG,\n Config,\n INITIAL_CONFIG,\n initialConfig,\n NEW_CONFIG,\n optionsConfig,\n} from './ngx-loader-indicator.config';\n\nexport function _configFactory(\n initConfig: optionsConfig,\n configValue?: optionsConfig\n): optionsConfig {\n const loaderStyles: Config['loaderStyles'] | null = configValue?.loaderStyles ?? null;\n const imgStyles: Config['imgStyles'] | null = configValue?.imgStyles ?? null;\n const rotate: Config['rotate'] | null = configValue?.rotate ?? null;\n\n return {\n ...initConfig,\n ...configValue,\n loaderStyles: { ...initConfig.loaderStyles, ...loaderStyles },\n imgStyles: { ...initConfig.imgStyles, ...imgStyles },\n rotate: { ...initConfig.rotate, ...rotate },\n };\n}\n\nexport function provideNgxLoaderIndicator(\n configValue?: optionsConfig | (() => optionsConfig)\n): Provider[] {\n return [\n {\n provide: NEW_CONFIG,\n useValue: configValue,\n },\n {\n provide: INITIAL_CONFIG,\n useValue: initialConfig,\n },\n {\n provide: NGX_LOADER_INDICATOR_CONFIG,\n useFactory: _configFactory,\n deps: [INITIAL_CONFIG, NEW_CONFIG],\n },\n ];\n}\n\nexport function provideEnvironmentNgxLoaderIndicator(\n configValue?: optionsConfig | (() => optionsConfig)\n): EnvironmentProviders {\n return makeEnvironmentProviders(provideNgxLoaderIndicator(configValue));\n}\n","/*\n * Public API Surface of ngx-loader-indicator\n */\n\nexport * from './lib/ngx-loader-indicator.directive';\nexport * from './lib/ngx-loader-indicator.config';\nexport * from './lib/ngx-loader-indicator.providers';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}