ngx-dsxlibrary 1.21.29 → 1.21.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -504,15 +504,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
|
|
|
504
504
|
}] } });
|
|
505
505
|
|
|
506
506
|
class SpinnerLoadingService {
|
|
507
|
-
//
|
|
507
|
+
// Señal para el estado de visibilidad del spinner
|
|
508
508
|
spinnerVisible = signal(false, ...(ngDevMode ? [{ debugName: "spinnerVisible" }] : []));
|
|
509
|
+
// Contador de peticiones/acciones activas
|
|
510
|
+
counter = 0;
|
|
509
511
|
constructor() { }
|
|
510
|
-
//
|
|
512
|
+
// Incrementa el contador y muestra el spinner sólo cuando pasa de 0 -> 1
|
|
511
513
|
show() {
|
|
512
|
-
this.
|
|
514
|
+
this.counter++;
|
|
515
|
+
if (this.counter === 1) {
|
|
516
|
+
this.spinnerVisible.set(true);
|
|
517
|
+
}
|
|
513
518
|
}
|
|
514
|
-
//
|
|
519
|
+
// Decrementa el contador y oculta el spinner cuando llega a 0
|
|
515
520
|
hide() {
|
|
521
|
+
if (this.counter > 0) {
|
|
522
|
+
this.counter--;
|
|
523
|
+
}
|
|
524
|
+
if (this.counter === 0) {
|
|
525
|
+
this.spinnerVisible.set(false);
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
// Por si se desincroniza el estado
|
|
529
|
+
reset() {
|
|
530
|
+
this.counter = 0;
|
|
516
531
|
this.spinnerVisible.set(false);
|
|
517
532
|
}
|
|
518
533
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: SpinnerLoadingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -541,21 +556,21 @@ class LoadingLottieComponent {
|
|
|
541
556
|
});
|
|
542
557
|
}
|
|
543
558
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: LoadingLottieComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
544
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: LoadingLottieComponent, isStandalone: true, selector: "app-loading-lottie", inputs: { jsonUrl: { classPropertyName: "jsonUrl", publicName: "jsonUrl", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if(_spinnerService.spinnerVisible()){\r\n<div class=\"loader-container\">\r\n <ng-lottie [options]=\"options\" [width]=\"size()\" [height]=\"size()\"></ng-lottie>\r\n <p class=\"loading-text\">©DevsoftXela {{ currentYear }}</p>\r\n</div>\r\n}\r\n", styles: [".loader-container{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#
|
|
559
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: LoadingLottieComponent, isStandalone: true, selector: "app-loading-lottie", inputs: { jsonUrl: { classPropertyName: "jsonUrl", publicName: "jsonUrl", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if(_spinnerService.spinnerVisible()){\r\n<div class=\"loader-container\">\r\n <ng-lottie [options]=\"options\" [width]=\"size()\" [height]=\"size()\"></ng-lottie>\r\n <p class=\"loading-text\">©DevsoftXela {{ currentYear }}</p>\r\n</div>\r\n}\r\n", styles: [".loader-container{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#0009;display:flex;justify-content:center;align-items:center;z-index:9999;overflow:hidden;opacity:0;animation:overlayFadeIn .25s ease-out forwards}.loading-text{position:absolute;bottom:calc(53% - 175px);z-index:2;font-family:Montserrat,sans-serif;text-transform:uppercase;background:linear-gradient(45deg,#0ff,#f0f);-webkit-background-clip:text;background-clip:text;color:transparent;font-weight:700;text-align:center;pointer-events:none}@keyframes overlayFadeIn{0%{opacity:0}to{opacity:1}}\n"], dependencies: [{ kind: "component", type: LottieComponent, selector: "ng-lottie", inputs: ["width", "height"] }] });
|
|
545
560
|
}
|
|
546
561
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: LoadingLottieComponent, decorators: [{
|
|
547
562
|
type: Component,
|
|
548
|
-
args: [{ selector: 'app-loading-lottie', imports: [LottieComponent], template: "@if(_spinnerService.spinnerVisible()){\r\n<div class=\"loader-container\">\r\n <ng-lottie [options]=\"options\" [width]=\"size()\" [height]=\"size()\"></ng-lottie>\r\n <p class=\"loading-text\">©DevsoftXela {{ currentYear }}</p>\r\n</div>\r\n}\r\n", styles: [".loader-container{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#
|
|
563
|
+
args: [{ selector: 'app-loading-lottie', imports: [LottieComponent], template: "@if(_spinnerService.spinnerVisible()){\r\n<div class=\"loader-container\">\r\n <ng-lottie [options]=\"options\" [width]=\"size()\" [height]=\"size()\"></ng-lottie>\r\n <p class=\"loading-text\">©DevsoftXela {{ currentYear }}</p>\r\n</div>\r\n}\r\n", styles: [".loader-container{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#0009;display:flex;justify-content:center;align-items:center;z-index:9999;overflow:hidden;opacity:0;animation:overlayFadeIn .25s ease-out forwards}.loading-text{position:absolute;bottom:calc(53% - 175px);z-index:2;font-family:Montserrat,sans-serif;text-transform:uppercase;background:linear-gradient(45deg,#0ff,#f0f);-webkit-background-clip:text;background-clip:text;color:transparent;font-weight:700;text-align:center;pointer-events:none}@keyframes overlayFadeIn{0%{opacity:0}to{opacity:1}}\n"] }]
|
|
549
564
|
}], ctorParameters: () => [], propDecorators: { jsonUrl: [{ type: i0.Input, args: [{ isSignal: true, alias: "jsonUrl", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }] } });
|
|
550
565
|
|
|
551
566
|
class CssV2Component {
|
|
552
567
|
_spinnerService = inject(SpinnerLoadingService);
|
|
553
568
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: CssV2Component, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
554
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: CssV2Component, isStandalone: true, selector: "app-loading-v2", ngImport: i0, template: "@if(_spinnerService.spinnerVisible()){\r\n<div class=\"spinner-overlay\">\r\n <div class=\"spinner-container\">\r\n <div class=\"center_div\">\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n </div>\r\n <p class=\"loading-text\">Cargando...</p>\r\n </div>\r\n</div>\r\n}\r\n", styles: ["@charset \"UTF-8\";.spinner-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#
|
|
569
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: CssV2Component, isStandalone: true, selector: "app-loading-v2", ngImport: i0, template: "@if(_spinnerService.spinnerVisible()){\r\n<div class=\"spinner-overlay\">\r\n <div class=\"spinner-container\">\r\n <div class=\"center_div\">\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n </div>\r\n <p class=\"loading-text\">Cargando...</p>\r\n </div>\r\n</div>\r\n}\r\n", styles: ["@charset \"UTF-8\";.spinner-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#0009;display:flex;justify-content:center;align-items:center;z-index:9999;opacity:0;animation:overlayFadeIn .25s ease-out forwards}.spinner-container{display:flex;flex-direction:column;align-items:center}.loading-text{font-family:Arial,sans-serif;color:#00e1ff;margin-top:10px;font-size:18px;animation:fadeInOut 1.7s linear infinite}@keyframes fadeInOut{0%,to{opacity:0}50%{opacity:1}}.center_div{display:flex;justify-content:center;align-items:center;margin:5px}.wave{width:1.8rem;height:75px;background-color:#ff6b6b40;margin:0 4px;border-radius:.4rem;animation:wave 1.5s linear infinite;transform-origin:center}@keyframes wave{0%{transform:scale(0);filter:hue-rotate(90deg) blur(100px)}25%{transform:scale(0);filter:hue-rotate(120deg) blur(50px)}50%{transform:scale(1);filter:hue-rotate(180deg) blur(25px)}25%{transform:scale(0);filter:hue-rotate(360deg) blur(2px)}to{transform:scale(0);filter:hue-rotate(0deg) blur(0)}}@keyframes overlayFadeIn{0%{opacity:0}to{opacity:1}}.wave:nth-child(2){animation-delay:.1s}.wave:nth-child(3){animation-delay:.2s}.wave:nth-child(4){animation-delay:.3s}.wave:nth-child(5){animation-delay:.4s}.wave:nth-child(6){animation-delay:.5s}.wave:nth-child(7){animation-delay:.6s}.wave:nth-child(8){animation-delay:.7s}.wave:nth-child(9){animation-delay:.8s}.wave:nth-child(10){animation-delay:.9s}\n"] });
|
|
555
570
|
}
|
|
556
571
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: CssV2Component, decorators: [{
|
|
557
572
|
type: Component,
|
|
558
|
-
args: [{ selector: 'app-loading-v2', imports: [], template: "@if(_spinnerService.spinnerVisible()){\r\n<div class=\"spinner-overlay\">\r\n <div class=\"spinner-container\">\r\n <div class=\"center_div\">\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n </div>\r\n <p class=\"loading-text\">Cargando...</p>\r\n </div>\r\n</div>\r\n}\r\n", styles: ["@charset \"UTF-8\";.spinner-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#
|
|
573
|
+
args: [{ selector: 'app-loading-v2', imports: [], template: "@if(_spinnerService.spinnerVisible()){\r\n<div class=\"spinner-overlay\">\r\n <div class=\"spinner-container\">\r\n <div class=\"center_div\">\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n <div class=\"wave\"></div>\r\n </div>\r\n <p class=\"loading-text\">Cargando...</p>\r\n </div>\r\n</div>\r\n}\r\n", styles: ["@charset \"UTF-8\";.spinner-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#0009;display:flex;justify-content:center;align-items:center;z-index:9999;opacity:0;animation:overlayFadeIn .25s ease-out forwards}.spinner-container{display:flex;flex-direction:column;align-items:center}.loading-text{font-family:Arial,sans-serif;color:#00e1ff;margin-top:10px;font-size:18px;animation:fadeInOut 1.7s linear infinite}@keyframes fadeInOut{0%,to{opacity:0}50%{opacity:1}}.center_div{display:flex;justify-content:center;align-items:center;margin:5px}.wave{width:1.8rem;height:75px;background-color:#ff6b6b40;margin:0 4px;border-radius:.4rem;animation:wave 1.5s linear infinite;transform-origin:center}@keyframes wave{0%{transform:scale(0);filter:hue-rotate(90deg) blur(100px)}25%{transform:scale(0);filter:hue-rotate(120deg) blur(50px)}50%{transform:scale(1);filter:hue-rotate(180deg) blur(25px)}25%{transform:scale(0);filter:hue-rotate(360deg) blur(2px)}to{transform:scale(0);filter:hue-rotate(0deg) blur(0)}}@keyframes overlayFadeIn{0%{opacity:0}to{opacity:1}}.wave:nth-child(2){animation-delay:.1s}.wave:nth-child(3){animation-delay:.2s}.wave:nth-child(4){animation-delay:.3s}.wave:nth-child(5){animation-delay:.4s}.wave:nth-child(6){animation-delay:.5s}.wave:nth-child(7){animation-delay:.6s}.wave:nth-child(8){animation-delay:.7s}.wave:nth-child(9){animation-delay:.8s}.wave:nth-child(10){animation-delay:.9s}\n"] }]
|
|
559
574
|
}] });
|
|
560
575
|
|
|
561
576
|
class LoadingComponent {
|
|
@@ -566,11 +581,11 @@ class LoadingComponent {
|
|
|
566
581
|
this.currentYear = new Date().getFullYear(); // Asigna el año actual
|
|
567
582
|
}
|
|
568
583
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: LoadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
569
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: LoadingComponent, isStandalone: true, selector: "app-loading", ngImport: i0, template: "<!-- Actualizaci\u00F3n 2025-31-01 12:00 -->\r\n@if(_spinnerService.spinnerVisible()){\r\n<div class=\"spinner-overlay\">\r\n <div class=\"loader\">\r\n <div class=\"external-shadow\">\r\n <div class=\"central\"></div>\r\n </div>\r\n <img src=\"/icon/secure.png\" class=\"spinner-image\" />\r\n </div>\r\n <p class=\"loading-text\">©DevsoftXela {{ currentYear }}</p>\r\n</div>\r\n}\r\n", styles: [".spinner-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#
|
|
584
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.8", type: LoadingComponent, isStandalone: true, selector: "app-loading", ngImport: i0, template: "<!-- Actualizaci\u00F3n 2025-31-01 12:00 -->\r\n@if(_spinnerService.spinnerVisible()){\r\n<div class=\"spinner-overlay\">\r\n <div class=\"loader\">\r\n <div class=\"external-shadow\">\r\n <div class=\"central\"></div>\r\n </div>\r\n <img src=\"/icon/secure.png\" class=\"spinner-image\" />\r\n </div>\r\n <p class=\"loading-text\">©DevsoftXela {{ currentYear }}</p>\r\n</div>\r\n}\r\n", styles: [".spinner-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#0009;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:9999;opacity:0;animation:overlayFadeIn .25s ease-out forwards}.loader{display:flex;justify-content:center;align-items:center;position:relative;cursor:not-allowed;scale:.8}.central{display:flex;justify-content:center;align-items:center;position:relative;width:10em;height:10em;border-radius:50%;box-shadow:.5em 1em 1em #8a2be2,-.5em .5em 1em #00f,.5em -.5em 1em purple,-.5em -.5em 1em #0ff;background-color:#0003}.external-shadow{width:10em;height:10em;border-radius:50%;display:flex;justify-content:center;align-items:center;position:relative;box-shadow:.5em .5em 3em #8a2be2,-.5em .5em 3em #00f,.5em -.5em 3em purple,-.5em -.5em 3em #0ff;z-index:999;animation:rotate 3s linear infinite;background-color:#21212180}@keyframes rotate{0%{transform:rotate(0)}50%{transform:rotate(180deg)}to{transform:rotate(360deg)}}.spinner-image{width:70%;height:70%;border-radius:50%;object-fit:cover;position:absolute;z-index:1000}.loading-text{font-family:Montserrat,sans-serif;text-transform:uppercase;letter-spacing:3px;background:linear-gradient(45deg,#0ff,#f0f);-webkit-background-clip:text;background-clip:text;color:transparent;margin-top:1em}@keyframes pulse{0%,to{opacity:.7}50%{opacity:1}}@keyframes overlayFadeIn{0%{opacity:0}to{opacity:1}}\n"] });
|
|
570
585
|
}
|
|
571
586
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImport: i0, type: LoadingComponent, decorators: [{
|
|
572
587
|
type: Component,
|
|
573
|
-
args: [{ selector: 'app-loading', imports: [], template: "<!-- Actualizaci\u00F3n 2025-31-01 12:00 -->\r\n@if(_spinnerService.spinnerVisible()){\r\n<div class=\"spinner-overlay\">\r\n <div class=\"loader\">\r\n <div class=\"external-shadow\">\r\n <div class=\"central\"></div>\r\n </div>\r\n <img src=\"/icon/secure.png\" class=\"spinner-image\" />\r\n </div>\r\n <p class=\"loading-text\">©DevsoftXela {{ currentYear }}</p>\r\n</div>\r\n}\r\n", styles: [".spinner-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#
|
|
588
|
+
args: [{ selector: 'app-loading', imports: [], template: "<!-- Actualizaci\u00F3n 2025-31-01 12:00 -->\r\n@if(_spinnerService.spinnerVisible()){\r\n<div class=\"spinner-overlay\">\r\n <div class=\"loader\">\r\n <div class=\"external-shadow\">\r\n <div class=\"central\"></div>\r\n </div>\r\n <img src=\"/icon/secure.png\" class=\"spinner-image\" />\r\n </div>\r\n <p class=\"loading-text\">©DevsoftXela {{ currentYear }}</p>\r\n</div>\r\n}\r\n", styles: [".spinner-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#0009;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:9999;opacity:0;animation:overlayFadeIn .25s ease-out forwards}.loader{display:flex;justify-content:center;align-items:center;position:relative;cursor:not-allowed;scale:.8}.central{display:flex;justify-content:center;align-items:center;position:relative;width:10em;height:10em;border-radius:50%;box-shadow:.5em 1em 1em #8a2be2,-.5em .5em 1em #00f,.5em -.5em 1em purple,-.5em -.5em 1em #0ff;background-color:#0003}.external-shadow{width:10em;height:10em;border-radius:50%;display:flex;justify-content:center;align-items:center;position:relative;box-shadow:.5em .5em 3em #8a2be2,-.5em .5em 3em #00f,.5em -.5em 3em purple,-.5em -.5em 3em #0ff;z-index:999;animation:rotate 3s linear infinite;background-color:#21212180}@keyframes rotate{0%{transform:rotate(0)}50%{transform:rotate(180deg)}to{transform:rotate(360deg)}}.spinner-image{width:70%;height:70%;border-radius:50%;object-fit:cover;position:absolute;z-index:1000}.loading-text{font-family:Montserrat,sans-serif;text-transform:uppercase;letter-spacing:3px;background:linear-gradient(45deg,#0ff,#f0f);-webkit-background-clip:text;background-clip:text;color:transparent;margin-top:1em}@keyframes pulse{0%,to{opacity:.7}50%{opacity:1}}@keyframes overlayFadeIn{0%{opacity:0}to{opacity:1}}\n"] }]
|
|
574
589
|
}], ctorParameters: () => [] });
|
|
575
590
|
|
|
576
591
|
class AlertaService {
|
|
@@ -1759,8 +1774,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
|
|
|
1759
1774
|
|
|
1760
1775
|
// Interceptor HTTP para manejar autorización y refresco de tokens en peticiones HTTP.
|
|
1761
1776
|
// Permite agregar el token de autorización, manejar errores 401 y refrescar el token automáticamente.
|
|
1762
|
-
// Lleva el conteo de peticiones activas para mostrar/ocultar el spinner
|
|
1763
|
-
let _activeRequest = 0;
|
|
1764
1777
|
// Indica si se está realizando un refresh de token
|
|
1765
1778
|
let isRefreshing = false;
|
|
1766
1779
|
// Subject para emitir el nuevo token tras el refresh
|
|
@@ -1798,11 +1811,8 @@ const httpAuthorizeInterceptor = (req, next) => {
|
|
|
1798
1811
|
}
|
|
1799
1812
|
// Para depuración: muestra el token agregado
|
|
1800
1813
|
//console.log('Interceptor - Token agregado a la petición:', authReq);
|
|
1801
|
-
//
|
|
1802
|
-
|
|
1803
|
-
_spinnerService.show();
|
|
1804
|
-
}
|
|
1805
|
-
_activeRequest++;
|
|
1814
|
+
// Notifica que inicia una petición (el servicio lleva el conteo interno)
|
|
1815
|
+
_spinnerService.show();
|
|
1806
1816
|
// Ejecuta la petición HTTP
|
|
1807
1817
|
return next(authReq).pipe(
|
|
1808
1818
|
// Manejo de errores en la respuesta
|
|
@@ -1866,10 +1876,7 @@ const httpAuthorizeInterceptor = (req, next) => {
|
|
|
1866
1876
|
// Al finalizar la petición (éxito o error), actualiza el conteo y oculta el spinner si corresponde
|
|
1867
1877
|
// comentarizar el hide para verificar el spinner en la aplicacion final
|
|
1868
1878
|
finalize(() => {
|
|
1869
|
-
|
|
1870
|
-
if (_activeRequest === 0) {
|
|
1871
|
-
_spinnerService.hide();
|
|
1872
|
-
}
|
|
1879
|
+
_spinnerService.hide();
|
|
1873
1880
|
}));
|
|
1874
1881
|
};
|
|
1875
1882
|
|