ngx-dsxlibrary 1.0.53 → 1.0.55

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.
Files changed (73) hide show
  1. package/fesm2022/ngx-dsxlibrary-src-lib-components.mjs +12 -12
  2. package/fesm2022/ngx-dsxlibrary-src-lib-components.mjs.map +1 -1
  3. package/fesm2022/ngx-dsxlibrary-src-lib-pipe.mjs +6 -6
  4. package/fesm2022/ngx-dsxlibrary-src-lib-pipe.mjs.map +1 -1
  5. package/fesm2022/ngx-dsxlibrary.mjs +241 -73
  6. package/fesm2022/ngx-dsxlibrary.mjs.map +1 -1
  7. package/index.d.ts +646 -3
  8. package/ngx-dsxlibrary-1.0.55.tgz +0 -0
  9. package/package.json +11 -11
  10. package/src/lib/components/index.d.ts +24 -5
  11. package/src/lib/directives/index.d.ts +2 -5
  12. package/src/lib/injections/index.d.ts +2 -5
  13. package/src/lib/interceptors/index.d.ts +2 -5
  14. package/src/lib/models/index.d.ts +79 -3
  15. package/src/lib/pipe/index.d.ts +25 -5
  16. package/src/lib/services/index.d.ts +2 -5
  17. package/src/lib/validations/index.d.ts +2 -5
  18. package/lib/components/app-message-error/app-message-error.component.d.ts +0 -8
  19. package/lib/components/index.d.ts +0 -1
  20. package/lib/components/json-values-debuj/json-values-debuj.component.d.ts +0 -10
  21. package/lib/components/kpicard/kpicard.component.d.ts +0 -13
  22. package/lib/components/loading/loading.component.d.ts +0 -9
  23. package/lib/components/navbar-dsx/navbar-dsx.component.d.ts +0 -21
  24. package/lib/components/public-api.d.ts +0 -2
  25. package/lib/directives/select-all-on-focus.directive.d.ts +0 -6
  26. package/lib/injections/cache.token.d.ts +0 -2
  27. package/lib/injections/environment.token.d.ts +0 -10
  28. package/lib/injections/parameterSecurity.d.ts +0 -3
  29. package/lib/interceptors/http-authorize.interceptor.d.ts +0 -2
  30. package/lib/models/index.d.ts +0 -1
  31. package/lib/models/public-api.d.ts +0 -6
  32. package/lib/models/src/cache.types.d.ts +0 -18
  33. package/lib/models/src/column.model.d.ts +0 -9
  34. package/lib/models/src/error.model.d.ts +0 -9
  35. package/lib/models/src/extensions.model.d.ts +0 -15
  36. package/lib/models/src/field-config.model.d.ts +0 -7
  37. package/lib/models/src/response-http.model.d.ts +0 -7
  38. package/lib/models/src/securityParameter.model.d.ts +0 -17
  39. package/lib/models/src/token.model.d.ts +0 -5
  40. package/lib/pipe/index.d.ts +0 -1
  41. package/lib/pipe/json-highlight.pipe.d.ts +0 -7
  42. package/lib/pipe/public-api.d.ts +0 -2
  43. package/lib/pipe/truncate.pipe.d.ts +0 -16
  44. package/lib/services/alerta.service.d.ts +0 -116
  45. package/lib/services/authorize.service.d.ts +0 -21
  46. package/lib/services/cache.service.d.ts +0 -40
  47. package/lib/services/endpoint.service.d.ts +0 -14
  48. package/lib/services/error-handler.service.d.ts +0 -9
  49. package/lib/services/parameter-values.service.d.ts +0 -11
  50. package/lib/services/security.service.d.ts +0 -23
  51. package/lib/services/spinner-loading.service.d.ts +0 -9
  52. package/lib/services/utility-add.service.d.ts +0 -112
  53. package/lib/validations/addons.validators.d.ts +0 -32
  54. package/ngx-dsxlibrary-1.0.53.tgz +0 -0
  55. package/public-api.d.ts +0 -19
  56. package/src/lib/components/app-message-error/app-message-error.component.d.ts +0 -8
  57. package/src/lib/components/kpicard/kpicard.component.d.ts +0 -13
  58. package/src/lib/components/public-api.d.ts +0 -2
  59. package/src/lib/directives/public-api.d.ts +0 -1
  60. package/src/lib/injections/public-api.d.ts +0 -1
  61. package/src/lib/interceptors/public-api.d.ts +0 -1
  62. package/src/lib/models/public-api.d.ts +0 -6
  63. package/src/lib/models/src/cache.types.d.ts +0 -18
  64. package/src/lib/models/src/column.model.d.ts +0 -9
  65. package/src/lib/models/src/extensions.model.d.ts +0 -15
  66. package/src/lib/models/src/field-config.model.d.ts +0 -7
  67. package/src/lib/models/src/response-http.model.d.ts +0 -7
  68. package/src/lib/models/src/securityParameter.model.d.ts +0 -17
  69. package/src/lib/pipe/json-highlight.pipe.d.ts +0 -7
  70. package/src/lib/pipe/public-api.d.ts +0 -2
  71. package/src/lib/pipe/truncate.pipe.d.ts +0 -16
  72. package/src/lib/services/public-api.d.ts +0 -1
  73. package/src/lib/validations/public-api.d.ts +0 -1
@@ -10,7 +10,6 @@ import * as i3 from 'primeng/button';
10
10
  import { ButtonModule } from 'primeng/button';
11
11
  import * as i2 from 'primeng/image';
12
12
  import { ImageModule } from 'primeng/image';
13
- import { InputSwitchModule } from 'primeng/inputswitch';
14
13
  import * as i1$2 from 'primeng/menubar';
15
14
  import { MenubarModule } from 'primeng/menubar';
16
15
  import { ToastrService } from 'ngx-toastr';
@@ -25,10 +24,10 @@ class AppMessageErrorComponent {
25
24
  // Control de formulario que se pasa como input
26
25
  control;
27
26
  form = null;
28
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AppMessageErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
29
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: AppMessageErrorComponent, isStandalone: true, selector: "app-message-error", inputs: { control: "control", form: "form" }, ngImport: i0, template: "@if(control?.touched && control?.invalid){\r\n<div class=\"absolute dsx-error-message\">\r\n @if(control?.errors?.['required']){ El campo <strong>es requerido.</strong>\r\n } @else if(control?.errors?.['invalidNIT']){\r\n <strong>{{ control?.errors?.['invalidNIT']?.message }}</strong\r\n >. }@else if(control?.errors?.['invalidCUI']){\r\n <strong>{{ control?.errors?.['invalidCUI']?.message }}</strong\r\n >. } @else if(control?.errors?.['invalidDateRange']){\r\n <strong>{{ control?.errors?.['invalidDateRange']?.message }}</strong\r\n >. } @else if(control?.errors?.['dateNotRange']){\r\n <strong>{{ control?.errors?.['dateNotRange']?.message }}</strong\r\n >. } @else if(control?.errors?.['minlength']){ Debe tener al menos\r\n <strong>{{ control?.errors?.['minlength']?.requiredLength }}</strong>\r\n caracteres. } @else if(control?.errors?.['maxlength']){ Debe tener como m\u00E1ximo\r\n <strong>{{ control?.errors?.['maxlength']?.requiredLength }}</strong>\r\n caracteres. } @else if(control?.errors?.['min']){ El valor m\u00EDnimo permitido es\r\n <strong>{{ control?.errors?.['min']?.min }}</strong\r\n >. } @else if(control?.errors?.['max']){ El valor m\u00E1ximo permitido es\r\n <strong>{{ control?.errors?.['max']?.max }}</strong\r\n >. } @else if(control?.errors?.['email']){ Debe ser una direcci\u00F3n de correo\r\n v\u00E1lida. } @else if(control?.errors?.['pattern']){ El campo no tiene el formato\r\n requerido. } @else{ Existe un error a\u00FAn no identificado. }\r\n</div>\r\n}\r\n<!-- mensaje para formulario en general -->\r\n@if(form?.invalid && form?.touched){\r\n<div class=\"mt-2 mb-2\">\r\n @if(this.form?.errors?.['atLeastOneRequired']){\r\n <p-tag severity=\"danger\" [rounded]=\"true\">\r\n {{ form?.getError(\"atLeastOneRequired\")?.message }}</p-tag\r\n >\r\n }\r\n</div>\r\n}\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: TagModule }, { kind: "component", type: i1.Tag, selector: "p-tag", inputs: ["style", "styleClass", "severity", "value", "icon", "rounded"] }] });
27
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AppMessageErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
28
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: AppMessageErrorComponent, isStandalone: true, selector: "app-message-error", inputs: { control: "control", form: "form" }, ngImport: i0, template: "@if(control?.touched && control?.invalid){\r\n<div class=\"absolute dsx-error-message\">\r\n @if(control?.errors?.['required']){ El campo <strong>es requerido.</strong>\r\n } @else if(control?.errors?.['invalidNIT']){\r\n <strong>{{ control?.errors?.['invalidNIT']?.message }}</strong\r\n >. }@else if(control?.errors?.['invalidCUI']){\r\n <strong>{{ control?.errors?.['invalidCUI']?.message }}</strong\r\n >. } @else if(control?.errors?.['invalidDateRange']){\r\n <strong>{{ control?.errors?.['invalidDateRange']?.message }}</strong\r\n >. } @else if(control?.errors?.['dateNotRange']){\r\n <strong>{{ control?.errors?.['dateNotRange']?.message }}</strong\r\n >. } @else if(control?.errors?.['minlength']){ Debe tener al menos\r\n <strong>{{ control?.errors?.['minlength']?.requiredLength }}</strong>\r\n caracteres. } @else if(control?.errors?.['maxlength']){ Debe tener como m\u00E1ximo\r\n <strong>{{ control?.errors?.['maxlength']?.requiredLength }}</strong>\r\n caracteres. } @else if(control?.errors?.['min']){ El valor m\u00EDnimo permitido es\r\n <strong>{{ control?.errors?.['min']?.min }}</strong\r\n >. } @else if(control?.errors?.['max']){ El valor m\u00E1ximo permitido es\r\n <strong>{{ control?.errors?.['max']?.max }}</strong\r\n >. } @else if(control?.errors?.['email']){ Debe ser una direcci\u00F3n de correo\r\n v\u00E1lida. } @else if(control?.errors?.['pattern']){ El campo no tiene el formato\r\n requerido. } @else{ Existe un error a\u00FAn no identificado. }\r\n</div>\r\n}\r\n<!-- mensaje para formulario en general -->\r\n@if(form?.invalid && form?.touched){\r\n<div class=\"mt-2 mb-2\">\r\n @if(this.form?.errors?.['atLeastOneRequired']){\r\n <p-tag severity=\"danger\" [rounded]=\"true\">\r\n {{ form?.getError(\"atLeastOneRequired\")?.message }}</p-tag\r\n >\r\n }\r\n</div>\r\n}\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: TagModule }, { kind: "component", type: i1.Tag, selector: "p-tag", inputs: ["styleClass", "severity", "value", "icon", "rounded"] }] });
30
29
  }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AppMessageErrorComponent, decorators: [{
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AppMessageErrorComponent, decorators: [{
32
31
  type: Component,
33
32
  args: [{ selector: 'app-message-error', imports: [TagModule], template: "@if(control?.touched && control?.invalid){\r\n<div class=\"absolute dsx-error-message\">\r\n @if(control?.errors?.['required']){ El campo <strong>es requerido.</strong>\r\n } @else if(control?.errors?.['invalidNIT']){\r\n <strong>{{ control?.errors?.['invalidNIT']?.message }}</strong\r\n >. }@else if(control?.errors?.['invalidCUI']){\r\n <strong>{{ control?.errors?.['invalidCUI']?.message }}</strong\r\n >. } @else if(control?.errors?.['invalidDateRange']){\r\n <strong>{{ control?.errors?.['invalidDateRange']?.message }}</strong\r\n >. } @else if(control?.errors?.['dateNotRange']){\r\n <strong>{{ control?.errors?.['dateNotRange']?.message }}</strong\r\n >. } @else if(control?.errors?.['minlength']){ Debe tener al menos\r\n <strong>{{ control?.errors?.['minlength']?.requiredLength }}</strong>\r\n caracteres. } @else if(control?.errors?.['maxlength']){ Debe tener como m\u00E1ximo\r\n <strong>{{ control?.errors?.['maxlength']?.requiredLength }}</strong>\r\n caracteres. } @else if(control?.errors?.['min']){ El valor m\u00EDnimo permitido es\r\n <strong>{{ control?.errors?.['min']?.min }}</strong\r\n >. } @else if(control?.errors?.['max']){ El valor m\u00E1ximo permitido es\r\n <strong>{{ control?.errors?.['max']?.max }}</strong\r\n >. } @else if(control?.errors?.['email']){ Debe ser una direcci\u00F3n de correo\r\n v\u00E1lida. } @else if(control?.errors?.['pattern']){ El campo no tiene el formato\r\n requerido. } @else{ Existe un error a\u00FAn no identificado. }\r\n</div>\r\n}\r\n<!-- mensaje para formulario en general -->\r\n@if(form?.invalid && form?.touched){\r\n<div class=\"mt-2 mb-2\">\r\n @if(this.form?.errors?.['atLeastOneRequired']){\r\n <p-tag severity=\"danger\" [rounded]=\"true\">\r\n {{ form?.getError(\"atLeastOneRequired\")?.message }}</p-tag\r\n >\r\n }\r\n</div>\r\n}\r\n" }]
34
33
  }], propDecorators: { control: [{
@@ -39,12 +38,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
39
38
 
40
39
  class KpicardComponent {
41
40
  //type = input.required<string>();
42
- option = input.required();
43
- label = input.required();
44
- iconType = input('fa-regular fa-bell');
45
- color = input();
46
- valor = input(0);
47
- theme = input('light');
41
+ option = input.required(...(ngDevMode ? [{ debugName: "option" }] : []));
42
+ label = input.required(...(ngDevMode ? [{ debugName: "label" }] : []));
43
+ iconType = input('fa-regular fa-bell', ...(ngDevMode ? [{ debugName: "iconType" }] : []));
44
+ color = input(...(ngDevMode ? [undefined, { debugName: "color" }] : []));
45
+ valor = input(0, ...(ngDevMode ? [{ debugName: "valor" }] : []));
46
+ theme = input('light', ...(ngDevMode ? [{ debugName: "theme" }] : []));
48
47
  options = {
49
48
  currency: {
50
49
  startVal: 0,
@@ -88,10 +87,10 @@ class KpicardComponent {
88
87
  getSelectedOption() {
89
88
  return this.options[this.option()] ?? this.options.currency; // Si no existe, usa `currency`
90
89
  }
91
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: KpicardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
92
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.14", type: KpicardComponent, isStandalone: true, selector: "app-kpicard", inputs: { option: { classPropertyName: "option", publicName: "option", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, iconType: { classPropertyName: "iconType", publicName: "iconType", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, valor: { classPropertyName: "valor", publicName: "valor", isSignal: true, isRequired: false, transformFunction: null }, theme: { classPropertyName: "theme", publicName: "theme", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div [class]=\"`kpi-card ${color()} ${theme()}-theme`\">\r\n <div class=\"kpi-container\">\r\n <span\r\n [countUp]=\"valor()\"\r\n [options]=\"getSelectedOption()\"\r\n [class]=\"`card-value-${theme()}`\"\r\n >0</span\r\n >\r\n <span [class]=\"`card-text-${theme()}`\">{{ label() }}</span>\r\n </div>\r\n <i [class]=\"`${iconType()} icon icon-${theme()}`\"></i>\r\n</div>\r\n", styles: [".icon{float:right;font-size:500%;position:absolute;top:0rem;right:-.3rem;opacity:.2}.icon-light{color:#000}.icon-dark{color:#fff}.icon-aqua{color:#28cce9}.icon-sunset{color:#d1a9a5}.icon-mint{color:#91cc08}.icon-peach{color:#5e412f}.icon-plasma{color:#dcdde1}.icon-nebula{color:#d8d8d8}#container{width:1200px;display:flex}.kpi-card{--gradient-light: linear-gradient(to bottom, #00fffc, #008cff);--text-color-light: #495057;--card-value-gradient-light: linear-gradient( 45deg, #00fffc, #a200ff, #0094ff );--gradient-dark: linear-gradient(to bottom, #ff00ff, #ff0066);--text-color-dark: #d5d7d8;--card-value-gradient-dark: linear-gradient(45deg, #ff7e5f, #feb47b, #ff6a00);--gradient-aqua: linear-gradient(to bottom, #00e0ff, #0079ff);--text-color-aqua: #6fa6b8;--card-value-gradient-aqua: linear-gradient(45deg, #00e0ff, #00ffc8, #00b7ff);--gradient-sunset: linear-gradient(to bottom, #ff9a9e, #fad0c4);--text-color-sunset: #cfbfaf;--card-value-gradient-sunset: linear-gradient( 45deg, #ff9a9e, #fad0c4, #ff6f61 );--gradient-mint: linear-gradient(to bottom, #98ff98, #00d4ff);--text-color-mint: #a3ca36;--card-value-gradient-mint: linear-gradient(45deg, #98ff98, #00e1ff, #00ffa6);--gradient-peach: linear-gradient(to bottom, #ffecd2, #fcb69f);--text-color-peach: #5e412f;--card-value-gradient-peach: linear-gradient( 45deg, #ffecd2, #ffb347, #ffcccb );--gradient-plasma: linear-gradient(to bottom, #6a00f4, #240046);--text-color-plasma: #dcdde1;--card-value-gradient-plasma: linear-gradient( 45deg, #6a00f4, #8338ec, #3a0ca3 );--gradient-nebula: linear-gradient(to bottom, #38aa0c, #2632d4);--text-color-nebula: #a372d1;--card-value-gradient-nebula: linear-gradient( 45deg, #c4ffe2, #a6c9ff, #8a12f3 );overflow:hidden;position:relative;box-shadow:1px 1px 8px #000000a6;display:inline-block;padding:1em;border-radius:.8em;font-family:Montserrat,sans-serif;font-size:.9rem;width:90%;min-width:180px;margin-left:.5em;margin-top:.5em}.kpi-card:after{position:absolute;content:\"\";width:.25rem;inset:.65rem auto .65rem .5rem;border-radius:.125rem;background:var(--gradient);transition:transform .3s ease;z-index:4}.kpi-card.light-theme:after{background:var(--gradient-light)}.kpi-card.dark-theme:after{background:var(--gradient-dark)}.kpi-card.aqua-theme:after{background:var(--gradient-aqua)}.kpi-card.sunset-theme:after{background:var(--gradient-sunset)}.kpi-card.mint-theme:after{background:var(--gradient-mint)}.kpi-card.peach-theme:after{background:var(--gradient-peach)}.kpi-card.plasma-theme:after{background:var(--gradient-plasma)}.kpi-card.nebula-theme:after{background:var(--gradient-nebula)}.kpi-container{margin-left:.5em}.card-value-light{display:block;font-size:200%;font-weight:bolder;background:linear-gradient(45deg,#00fffc,#a200ff,#0094ff);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(0,255,252,.3),0 0 10px rgba(162,0,255,.2),0 0 15px rgba(0,148,255,.1)}.card-value-dark{display:block;font-size:200%;font-weight:bolder;background:linear-gradient(45deg,#ff7e5f,#feb47b,#ff6a00);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(255,126,95,.5),0 0 10px rgba(254,180,123,.4),0 0 15px rgba(255,106,0,.3)}.card-value-aqua{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-aqua);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(0,224,255,.3),0 0 10px rgba(0,255,200,.2),0 0 15px rgba(0,183,255,.1)}.card-value-sunset{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-sunset);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(255,154,158,.3),0 0 10px rgba(250,208,196,.2),0 0 15px rgba(255,111,97,.1)}.card-value-mint{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-mint);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(152,255,152,.4),0 0 10px rgba(0,225,255,.3),0 0 15px rgba(0,255,166,.2)}.card-value-peach{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-peach);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(255,236,210,.4),0 0 10px rgba(255,179,71,.3),0 0 15px rgba(255,204,203,.2)}.card-value-plasma{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-plasma);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(106,0,244,.5),0 0 10px rgba(131,56,236,.4),0 0 15px rgba(58,12,163,.3)}.card-value-nebula{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-nebula);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(27,27,47,.4),0 0 10px rgba(63,13,18,.3),0 0 15px rgba(142,45,226,.2)}.card-text{display:block;font-family:Roboto,sans-serif;padding-left:.2em}.card-text-light{color:var(--text-color-light)}.card-text-dark{color:var(--text-color-dark)}.card-text-aqua{color:var(--text-color-aqua)}.card-text-sunset{color:var(--text-color-sunset)}.card-text-mint{color:var(--text-color-mint)}.card-text-peach{color:var(--text-color-peach)}.card-text-plasma{color:var(--text-color-plasma)}.card-text-nebula{color:var(--text-color-nebula)}\n"], dependencies: [{ kind: "ngmodule", type: CountUpModule }, { kind: "directive", type: i1$1.CountUpDirective, selector: "[countUp]", inputs: ["countUp", "options", "reanimateOnClick"], outputs: ["complete"] }] });
90
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: KpicardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
91
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.4", type: KpicardComponent, isStandalone: true, selector: "app-kpicard", inputs: { option: { classPropertyName: "option", publicName: "option", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, iconType: { classPropertyName: "iconType", publicName: "iconType", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, valor: { classPropertyName: "valor", publicName: "valor", isSignal: true, isRequired: false, transformFunction: null }, theme: { classPropertyName: "theme", publicName: "theme", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div [class]=\"`kpi-card ${color()} ${theme()}-theme`\">\r\n <div class=\"kpi-container\">\r\n <span\r\n [countUp]=\"valor()\"\r\n [options]=\"getSelectedOption()\"\r\n [class]=\"`card-value-${theme()}`\"\r\n >0</span\r\n >\r\n <span [class]=\"`card-text-${theme()}`\">{{ label() }}</span>\r\n </div>\r\n <i [class]=\"`${iconType()} icon icon-${theme()}`\"></i>\r\n</div>\r\n", styles: [".icon{float:right;font-size:500%;position:absolute;top:0rem;right:-.3rem;opacity:.2}.icon-light{color:#000}.icon-dark{color:#fff}.icon-aqua{color:#28cce9}.icon-sunset{color:#d1a9a5}.icon-mint{color:#91cc08}.icon-peach{color:#5e412f}.icon-plasma{color:#dcdde1}.icon-nebula{color:#d8d8d8}#container{width:1200px;display:flex}.kpi-card{--gradient-light: linear-gradient(to bottom, #00fffc, #008cff);--text-color-light: #495057;--card-value-gradient-light: linear-gradient( 45deg, #00fffc, #a200ff, #0094ff );--gradient-dark: linear-gradient(to bottom, #ff00ff, #ff0066);--text-color-dark: #d5d7d8;--card-value-gradient-dark: linear-gradient(45deg, #ff7e5f, #feb47b, #ff6a00);--gradient-aqua: linear-gradient(to bottom, #00e0ff, #0079ff);--text-color-aqua: #6fa6b8;--card-value-gradient-aqua: linear-gradient(45deg, #00e0ff, #00ffc8, #00b7ff);--gradient-sunset: linear-gradient(to bottom, #ff9a9e, #fad0c4);--text-color-sunset: #cfbfaf;--card-value-gradient-sunset: linear-gradient( 45deg, #ff9a9e, #fad0c4, #ff6f61 );--gradient-mint: linear-gradient(to bottom, #98ff98, #00d4ff);--text-color-mint: #a3ca36;--card-value-gradient-mint: linear-gradient(45deg, #98ff98, #00e1ff, #00ffa6);--gradient-peach: linear-gradient(to bottom, #ffecd2, #fcb69f);--text-color-peach: #5e412f;--card-value-gradient-peach: linear-gradient( 45deg, #ffecd2, #ffb347, #ffcccb );--gradient-plasma: linear-gradient(to bottom, #6a00f4, #240046);--text-color-plasma: #dcdde1;--card-value-gradient-plasma: linear-gradient( 45deg, #6a00f4, #8338ec, #3a0ca3 );--gradient-nebula: linear-gradient(to bottom, #38aa0c, #2632d4);--text-color-nebula: #a372d1;--card-value-gradient-nebula: linear-gradient( 45deg, #c4ffe2, #a6c9ff, #8a12f3 );overflow:hidden;position:relative;box-shadow:1px 1px 8px #000000a6;display:inline-block;padding:1em;border-radius:.8em;font-family:Montserrat,sans-serif;font-size:.9rem;width:90%;min-width:180px;margin-left:.5em;margin-top:.5em}.kpi-card:after{position:absolute;content:\"\";width:.25rem;inset:.65rem auto .65rem .5rem;border-radius:.125rem;background:var(--gradient);transition:transform .3s ease;z-index:4}.kpi-card.light-theme:after{background:var(--gradient-light)}.kpi-card.dark-theme:after{background:var(--gradient-dark)}.kpi-card.aqua-theme:after{background:var(--gradient-aqua)}.kpi-card.sunset-theme:after{background:var(--gradient-sunset)}.kpi-card.mint-theme:after{background:var(--gradient-mint)}.kpi-card.peach-theme:after{background:var(--gradient-peach)}.kpi-card.plasma-theme:after{background:var(--gradient-plasma)}.kpi-card.nebula-theme:after{background:var(--gradient-nebula)}.kpi-container{margin-left:.5em}.card-value-light{display:block;font-size:200%;font-weight:bolder;background:linear-gradient(45deg,#00fffc,#a200ff,#0094ff);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(0,255,252,.3),0 0 10px rgba(162,0,255,.2),0 0 15px rgba(0,148,255,.1)}.card-value-dark{display:block;font-size:200%;font-weight:bolder;background:linear-gradient(45deg,#ff7e5f,#feb47b,#ff6a00);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(255,126,95,.5),0 0 10px rgba(254,180,123,.4),0 0 15px rgba(255,106,0,.3)}.card-value-aqua{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-aqua);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(0,224,255,.3),0 0 10px rgba(0,255,200,.2),0 0 15px rgba(0,183,255,.1)}.card-value-sunset{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-sunset);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(255,154,158,.3),0 0 10px rgba(250,208,196,.2),0 0 15px rgba(255,111,97,.1)}.card-value-mint{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-mint);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(152,255,152,.4),0 0 10px rgba(0,225,255,.3),0 0 15px rgba(0,255,166,.2)}.card-value-peach{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-peach);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(255,236,210,.4),0 0 10px rgba(255,179,71,.3),0 0 15px rgba(255,204,203,.2)}.card-value-plasma{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-plasma);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(106,0,244,.5),0 0 10px rgba(131,56,236,.4),0 0 15px rgba(58,12,163,.3)}.card-value-nebula{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-nebula);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(27,27,47,.4),0 0 10px rgba(63,13,18,.3),0 0 15px rgba(142,45,226,.2)}.card-text{display:block;font-family:Roboto,sans-serif;padding-left:.2em}.card-text-light{color:var(--text-color-light)}.card-text-dark{color:var(--text-color-dark)}.card-text-aqua{color:var(--text-color-aqua)}.card-text-sunset{color:var(--text-color-sunset)}.card-text-mint{color:var(--text-color-mint)}.card-text-peach{color:var(--text-color-peach)}.card-text-plasma{color:var(--text-color-plasma)}.card-text-nebula{color:var(--text-color-nebula)}\n"], dependencies: [{ kind: "ngmodule", type: CountUpModule }, { kind: "directive", type: i1$1.CountUpDirective, selector: "[countUp]", inputs: ["countUp", "options", "reanimateOnClick"], outputs: ["complete"] }] });
93
92
  }
94
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: KpicardComponent, decorators: [{
93
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: KpicardComponent, decorators: [{
95
94
  type: Component,
96
95
  args: [{ selector: 'app-kpicard', imports: [CountUpModule], template: "<div [class]=\"`kpi-card ${color()} ${theme()}-theme`\">\r\n <div class=\"kpi-container\">\r\n <span\r\n [countUp]=\"valor()\"\r\n [options]=\"getSelectedOption()\"\r\n [class]=\"`card-value-${theme()}`\"\r\n >0</span\r\n >\r\n <span [class]=\"`card-text-${theme()}`\">{{ label() }}</span>\r\n </div>\r\n <i [class]=\"`${iconType()} icon icon-${theme()}`\"></i>\r\n</div>\r\n", styles: [".icon{float:right;font-size:500%;position:absolute;top:0rem;right:-.3rem;opacity:.2}.icon-light{color:#000}.icon-dark{color:#fff}.icon-aqua{color:#28cce9}.icon-sunset{color:#d1a9a5}.icon-mint{color:#91cc08}.icon-peach{color:#5e412f}.icon-plasma{color:#dcdde1}.icon-nebula{color:#d8d8d8}#container{width:1200px;display:flex}.kpi-card{--gradient-light: linear-gradient(to bottom, #00fffc, #008cff);--text-color-light: #495057;--card-value-gradient-light: linear-gradient( 45deg, #00fffc, #a200ff, #0094ff );--gradient-dark: linear-gradient(to bottom, #ff00ff, #ff0066);--text-color-dark: #d5d7d8;--card-value-gradient-dark: linear-gradient(45deg, #ff7e5f, #feb47b, #ff6a00);--gradient-aqua: linear-gradient(to bottom, #00e0ff, #0079ff);--text-color-aqua: #6fa6b8;--card-value-gradient-aqua: linear-gradient(45deg, #00e0ff, #00ffc8, #00b7ff);--gradient-sunset: linear-gradient(to bottom, #ff9a9e, #fad0c4);--text-color-sunset: #cfbfaf;--card-value-gradient-sunset: linear-gradient( 45deg, #ff9a9e, #fad0c4, #ff6f61 );--gradient-mint: linear-gradient(to bottom, #98ff98, #00d4ff);--text-color-mint: #a3ca36;--card-value-gradient-mint: linear-gradient(45deg, #98ff98, #00e1ff, #00ffa6);--gradient-peach: linear-gradient(to bottom, #ffecd2, #fcb69f);--text-color-peach: #5e412f;--card-value-gradient-peach: linear-gradient( 45deg, #ffecd2, #ffb347, #ffcccb );--gradient-plasma: linear-gradient(to bottom, #6a00f4, #240046);--text-color-plasma: #dcdde1;--card-value-gradient-plasma: linear-gradient( 45deg, #6a00f4, #8338ec, #3a0ca3 );--gradient-nebula: linear-gradient(to bottom, #38aa0c, #2632d4);--text-color-nebula: #a372d1;--card-value-gradient-nebula: linear-gradient( 45deg, #c4ffe2, #a6c9ff, #8a12f3 );overflow:hidden;position:relative;box-shadow:1px 1px 8px #000000a6;display:inline-block;padding:1em;border-radius:.8em;font-family:Montserrat,sans-serif;font-size:.9rem;width:90%;min-width:180px;margin-left:.5em;margin-top:.5em}.kpi-card:after{position:absolute;content:\"\";width:.25rem;inset:.65rem auto .65rem .5rem;border-radius:.125rem;background:var(--gradient);transition:transform .3s ease;z-index:4}.kpi-card.light-theme:after{background:var(--gradient-light)}.kpi-card.dark-theme:after{background:var(--gradient-dark)}.kpi-card.aqua-theme:after{background:var(--gradient-aqua)}.kpi-card.sunset-theme:after{background:var(--gradient-sunset)}.kpi-card.mint-theme:after{background:var(--gradient-mint)}.kpi-card.peach-theme:after{background:var(--gradient-peach)}.kpi-card.plasma-theme:after{background:var(--gradient-plasma)}.kpi-card.nebula-theme:after{background:var(--gradient-nebula)}.kpi-container{margin-left:.5em}.card-value-light{display:block;font-size:200%;font-weight:bolder;background:linear-gradient(45deg,#00fffc,#a200ff,#0094ff);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(0,255,252,.3),0 0 10px rgba(162,0,255,.2),0 0 15px rgba(0,148,255,.1)}.card-value-dark{display:block;font-size:200%;font-weight:bolder;background:linear-gradient(45deg,#ff7e5f,#feb47b,#ff6a00);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(255,126,95,.5),0 0 10px rgba(254,180,123,.4),0 0 15px rgba(255,106,0,.3)}.card-value-aqua{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-aqua);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(0,224,255,.3),0 0 10px rgba(0,255,200,.2),0 0 15px rgba(0,183,255,.1)}.card-value-sunset{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-sunset);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(255,154,158,.3),0 0 10px rgba(250,208,196,.2),0 0 15px rgba(255,111,97,.1)}.card-value-mint{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-mint);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(152,255,152,.4),0 0 10px rgba(0,225,255,.3),0 0 15px rgba(0,255,166,.2)}.card-value-peach{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-peach);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(255,236,210,.4),0 0 10px rgba(255,179,71,.3),0 0 15px rgba(255,204,203,.2)}.card-value-plasma{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-plasma);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(106,0,244,.5),0 0 10px rgba(131,56,236,.4),0 0 15px rgba(58,12,163,.3)}.card-value-nebula{display:block;font-size:200%;font-weight:bolder;background:var(--card-value-gradient-nebula);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 5px rgba(27,27,47,.4),0 0 10px rgba(63,13,18,.3),0 0 15px rgba(142,45,226,.2)}.card-text{display:block;font-family:Roboto,sans-serif;padding-left:.2em}.card-text-light{color:var(--text-color-light)}.card-text-dark{color:var(--text-color-dark)}.card-text-aqua{color:var(--text-color-aqua)}.card-text-sunset{color:var(--text-color-sunset)}.card-text-mint{color:var(--text-color-mint)}.card-text-peach{color:var(--text-color-peach)}.card-text-plasma{color:var(--text-color-plasma)}.card-text-nebula{color:var(--text-color-nebula)}\n"] }]
97
96
  }] });
@@ -121,10 +120,10 @@ class JsonHighlightPipe {
121
120
  .replace(/,/g, '<span class="json-comma">$&</span>')
122
121
  .replace(/:/g, '<span class="json-colon">$&</span>');
123
122
  }
124
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: JsonHighlightPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
125
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: JsonHighlightPipe, isStandalone: true, name: "jsonHighlight" });
123
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: JsonHighlightPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
124
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.4", ngImport: i0, type: JsonHighlightPipe, isStandalone: true, name: "jsonHighlight" });
126
125
  }
127
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: JsonHighlightPipe, decorators: [{
126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: JsonHighlightPipe, decorators: [{
128
127
  type: Pipe,
129
128
  args: [{
130
129
  name: 'jsonHighlight',
@@ -138,15 +137,15 @@ class JsonValuesDebujComponent {
138
137
  // Inyecta la configuración del entorno usando el token ENVIRONMENT
139
138
  environment = inject(ENVIRONMENT);
140
139
  // Señal reactiva para indicar si estamos en modo de desarrollo
141
- isDevSignal = signal(!this.environment.production);
140
+ isDevSignal = signal(!this.environment.production, ...(ngDevMode ? [{ debugName: "isDevSignal" }] : []));
142
141
  // Método para verificar el estado de desarrollo
143
142
  isDev() {
144
143
  return this.isDevSignal();
145
144
  }
146
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: JsonValuesDebujComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
147
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: JsonValuesDebujComponent, isStandalone: true, selector: "app-json-values-debuj", inputs: { form: "form" }, ngImport: i0, template: "@if(isDev()){\r\n<div class=\"custom-container\">\r\n <pre\r\n class=\"custom-pre\"\r\n [innerHTML]=\"form.getRawValue() | jsonHighlight\"\r\n ></pre>\r\n</div>\r\n}\r\n", styles: [".custom-container{width:100%;overflow:auto;background-color:#f3f4f6;padding:.5rem;border-radius:.5rem;margin-bottom:.75rem}.custom-pre{white-space:pre-wrap;word-break:break-word;font-size:.875rem}\n"], dependencies: [{ kind: "pipe", type: JsonHighlightPipe, name: "jsonHighlight" }] });
145
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: JsonValuesDebujComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
146
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", type: JsonValuesDebujComponent, isStandalone: true, selector: "app-json-values-debuj", inputs: { form: "form" }, ngImport: i0, template: "@if(isDev()){\r\n<div class=\"custom-container\">\r\n <pre\r\n class=\"custom-pre\"\r\n [innerHTML]=\"form.getRawValue() | jsonHighlight\"\r\n ></pre>\r\n</div>\r\n}\r\n", styles: [".custom-container{width:100%;overflow:auto;background-color:#f3f4f6;padding:.5rem;border-radius:.5rem;margin-bottom:.75rem}.custom-pre{white-space:pre-wrap;word-break:break-word;font-size:.875rem}\n"], dependencies: [{ kind: "pipe", type: JsonHighlightPipe, name: "jsonHighlight" }] });
148
147
  }
149
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: JsonValuesDebujComponent, decorators: [{
148
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: JsonValuesDebujComponent, decorators: [{
150
149
  type: Component,
151
150
  args: [{ selector: 'app-json-values-debuj', imports: [JsonHighlightPipe], template: "@if(isDev()){\r\n<div class=\"custom-container\">\r\n <pre\r\n class=\"custom-pre\"\r\n [innerHTML]=\"form.getRawValue() | jsonHighlight\"\r\n ></pre>\r\n</div>\r\n}\r\n", styles: [".custom-container{width:100%;overflow:auto;background-color:#f3f4f6;padding:.5rem;border-radius:.5rem;margin-bottom:.75rem}.custom-pre{white-space:pre-wrap;word-break:break-word;font-size:.875rem}\n"] }]
152
151
  }], propDecorators: { form: [{
@@ -155,7 +154,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
155
154
 
156
155
  class SpinnerLoadingService {
157
156
  // Creamos una señal para el estado de visibilidad
158
- spinnerVisible = signal(false);
157
+ spinnerVisible = signal(false, ...(ngDevMode ? [{ debugName: "spinnerVisible" }] : []));
159
158
  constructor() { }
160
159
  // Método para mostrar el spinner
161
160
  show() {
@@ -165,10 +164,10 @@ class SpinnerLoadingService {
165
164
  hide() {
166
165
  this.spinnerVisible.set(false);
167
166
  }
168
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SpinnerLoadingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
169
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SpinnerLoadingService, providedIn: 'root' });
167
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: SpinnerLoadingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
168
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: SpinnerLoadingService, providedIn: 'root' });
170
169
  }
171
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SpinnerLoadingService, decorators: [{
170
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: SpinnerLoadingService, decorators: [{
172
171
  type: Injectable,
173
172
  args: [{
174
173
  providedIn: 'root',
@@ -182,10 +181,10 @@ class LoadingComponent {
182
181
  }
183
182
  // Accedemos directamente a la señal del servicio
184
183
  _spinnerService = inject(SpinnerLoadingService);
185
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: LoadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
186
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", 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=\"assets/dsxResource/icon/secure.png\" class=\"spinner-image\" />\r\n </div>\r\n <p class=\"loading-text\">&copy;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:#000c;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:9999}.loader{display:flex;justify-content:center;align-items:center;position:relative;cursor:not-allowed;scale:.7}.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:#0000004d}.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}@keyframes pulse{0%,to{opacity:.7}50%{opacity:1}}\n"] });
184
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: LoadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
185
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.4", 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=\"assets/dsxResource/icon/secure.png\" class=\"spinner-image\" />\r\n </div>\r\n <p class=\"loading-text\">&copy;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:#000c;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:9999}.loader{display:flex;justify-content:center;align-items:center;position:relative;cursor:not-allowed;scale:.7}.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:#0000004d}.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}@keyframes pulse{0%,to{opacity:.7}50%{opacity:1}}\n"] });
187
186
  }
188
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: LoadingComponent, decorators: [{
187
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: LoadingComponent, decorators: [{
189
188
  type: Component,
190
189
  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=\"assets/dsxResource/icon/secure.png\" class=\"spinner-image\" />\r\n </div>\r\n <p class=\"loading-text\">&copy;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:#000c;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:9999}.loader{display:flex;justify-content:center;align-items:center;position:relative;cursor:not-allowed;scale:.7}.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:#0000004d}.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}@keyframes pulse{0%,to{opacity:.7}50%{opacity:1}}\n"] }]
191
190
  }], ctorParameters: () => [] });
@@ -375,10 +374,10 @@ class AlertaService {
375
374
  });
376
375
  }
377
376
  }
378
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AlertaService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
379
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AlertaService, providedIn: 'root' });
377
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AlertaService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
378
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AlertaService, providedIn: 'root' });
380
379
  }
381
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AlertaService, decorators: [{
380
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AlertaService, decorators: [{
382
381
  type: Injectable,
383
382
  args: [{
384
383
  providedIn: 'root',
@@ -391,7 +390,7 @@ class ParameterValuesService {
391
390
  // Inyecta INITIAL_PARAMETERS usando inject()
392
391
  initialParameters = inject(INITIAL_PARAMETERS);
393
392
  // Inicializa con valores predeterminados usando una Signal
394
- _dataParameter = signal(this.initialParameters);
393
+ _dataParameter = signal(this.initialParameters, ...(ngDevMode ? [{ debugName: "_dataParameter" }] : []));
395
394
  // Getter para acceder a los valores actuales
396
395
  get dataParameter() {
397
396
  return this._dataParameter();
@@ -436,10 +435,10 @@ class ParameterValuesService {
436
435
  : [],
437
436
  }));
438
437
  }
439
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ParameterValuesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
440
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ParameterValuesService, providedIn: 'root' });
438
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: ParameterValuesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
439
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: ParameterValuesService, providedIn: 'root' });
441
440
  }
442
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ParameterValuesService, decorators: [{
441
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: ParameterValuesService, decorators: [{
443
442
  type: Injectable,
444
443
  args: [{
445
444
  providedIn: 'root',
@@ -480,10 +479,10 @@ class SecurityService {
480
479
  // Realiza una solicitud GET al endpoint de parámetros de seguridad
481
480
  return this.http.get(`${this.urlApi}/securityParameter/`, { params });
482
481
  }
483
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SecurityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
484
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SecurityService, providedIn: 'root' });
482
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: SecurityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
483
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: SecurityService, providedIn: 'root' });
485
484
  }
486
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SecurityService, decorators: [{
485
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: SecurityService, decorators: [{
487
486
  type: Injectable,
488
487
  args: [{
489
488
  providedIn: 'root',
@@ -494,9 +493,9 @@ class NavbarDsxComponent {
494
493
  _securityService = inject(SecurityService);
495
494
  _parameterSecurityService = inject(ParameterValuesService);
496
495
  _alertaService = inject(AlertaService);
497
- logoWidth = input('325');
498
- appVersion = input('V1.0.0');
499
- urlLogo = input('assets/image/logoApp.png');
496
+ logoWidth = input('325', ...(ngDevMode ? [{ debugName: "logoWidth" }] : []));
497
+ appVersion = input('V1.0.0', ...(ngDevMode ? [{ debugName: "appVersion" }] : []));
498
+ urlLogo = input('assets/image/logoApp.png', ...(ngDevMode ? [{ debugName: "urlLogo" }] : []));
500
499
  // Estado del interruptor (tema claro/oscuro)
501
500
  checked = false;
502
501
  ngOnInit() {
@@ -537,20 +536,105 @@ class NavbarDsxComponent {
537
536
  complete: () => '',
538
537
  });
539
538
  }
540
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NavbarDsxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
541
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.14", type: NavbarDsxComponent, isStandalone: true, selector: "app-navbar-dsx", inputs: { logoWidth: { classPropertyName: "logoWidth", publicName: "logoWidth", isSignal: true, isRequired: false, transformFunction: null }, appVersion: { classPropertyName: "appVersion", publicName: "appVersion", isSignal: true, isRequired: false, transformFunction: null }, urlLogo: { classPropertyName: "urlLogo", publicName: "urlLogo", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<p-menubar>\r\n <ng-template #start>\r\n <p-image\r\n class=\"ms-15\"\r\n [src]=\"urlLogo()\"\r\n alt=\"Image\"\r\n [width]=\"logoWidth()\"\r\n />\r\n <span class=\"version-text\">{{ appVersion() }}</span>\r\n </ng-template>\r\n <ng-template #end>\r\n <div class=\"flex items-center me-5\">\r\n <p-button\r\n class=\"mr-2\"\r\n label=\"Permisos\"\r\n variant=\"text\"\r\n severity=\"info\"\r\n (click)=\"actualizarSeguridadIT()\"\r\n >\r\n <span class=\"material-symbols-outlined mr-1\">local_police</span>\r\n </p-button>\r\n <label class=\"ui-switch\">\r\n <input\r\n type=\"checkbox\"\r\n [(ngModel)]=\"checked\"\r\n (click)=\"onThemeChange(!checked ? true : false)\"\r\n />\r\n <div class=\"slider\">\r\n <div class=\"circle\"></div>\r\n </div>\r\n </label>\r\n <!-- <p-inputSwitch\r\n [(ngModel)]=\"checked\"\r\n (onChange)=\"onThemeChange($event.checked)\"\r\n ></p-inputSwitch> -->\r\n </div>\r\n </ng-template>\r\n</p-menubar>\r\n", styles: [".ui-switch{--switch-bg: rgb(135, 150, 165);--switch-width: 48px;--switch-height: 20px;--circle-diameter: 32px;--circle-bg: rgb(232, 89, 15);--circle-inset: calc((var(--circle-diameter) - var(--switch-height)) / 2)}.ui-switch input{display:none}.slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:var(--switch-width);height:var(--switch-height);background:var(--switch-bg);border-radius:999px;position:relative;cursor:pointer}.slider .circle{top:calc(var(--circle-inset) * -1);left:0;width:var(--circle-diameter);height:var(--circle-diameter);position:absolute;background:var(--circle-bg);border-radius:inherit;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjAiIHdpZHRoPSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIj4KICAgIDxwYXRoIGZpbGw9IiNmZmYiCiAgICAgICAgZD0iTTkuMzA1IDEuNjY3VjMuNzVoMS4zODlWMS42NjdoLTEuMzl6bS00LjcwNyAxLjk1bC0uOTgyLjk4Mkw1LjA5IDYuMDcybC45ODItLjk4Mi0xLjQ3My0xLjQ3M3ptMTAuODAyIDBMMTMuOTI3IDUuMDlsLjk4Mi45ODIgMS40NzMtMS40NzMtLjk4Mi0uOTgyek0xMCA1LjEzOWE0Ljg3MiA0Ljg3MiAwIDAwLTQuODYyIDQuODZBNC44NzIgNC44NzIgMCAwMDEwIDE0Ljg2MiA0Ljg3MiA0Ljg3MiAwIDAwMTQuODYgMTAgNC44NzIgNC44NzIgMCAwMDEwIDUuMTM5em0wIDEuMzg5QTMuNDYyIDMuNDYyIDAgMDExMy40NzEgMTBhMy40NjIgMy40NjIgMCAwMS0zLjQ3MyAzLjQ3MkEzLjQ2MiAzLjQ2MiAwIDAxNi41MjcgMTAgMy40NjIgMy40NjIgMCAwMTEwIDYuNTI4ek0xLjY2NSA5LjMwNXYxLjM5aDIuMDgzdi0xLjM5SDEuNjY2em0xNC41ODMgMHYxLjM5aDIuMDg0di0xLjM5aC0yLjA4NHpNNS4wOSAxMy45MjhMMy42MTYgMTUuNGwuOTgyLjk4MiAxLjQ3My0xLjQ3My0uOTgyLS45ODJ6bTkuODIgMGwtLjk4Mi45ODIgMS40NzMgMS40NzMuOTgyLS45ODItMS40NzMtMS40NzN6TTkuMzA1IDE2LjI1djIuMDgzaDEuMzg5VjE2LjI1aC0xLjM5eiIgLz4KPC9zdmc+);background-repeat:no-repeat;background-position:center center;-webkit-transition:left .15s cubic-bezier(.4,0,.2,1) 0ms,-webkit-transform .15s cubic-bezier(.4,0,.2,1) 0ms;-o-transition:left .15s cubic-bezier(.4,0,.2,1) 0ms,transform .15s cubic-bezier(.4,0,.2,1) 0ms;transition:left .15s cubic-bezier(.4,0,.2,1) 0ms,transform .15s cubic-bezier(.4,0,.2,1) 0ms,-webkit-transform .15s cubic-bezier(.4,0,.2,1) 0ms;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.slider .circle:before{content:\"\";position:absolute;width:100%;height:100%;background:#ffffffbf;border-radius:inherit;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s;opacity:0}.ui-switch input:checked+.slider .circle{left:calc(100% - var(--circle-diameter));background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjAiIHdpZHRoPSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIj4KICAgIDxwYXRoIGZpbGw9IiNmZmYiCiAgICAgICAgZD0iTTQuMiAyLjVsLS43IDEuOC0xLjguNyAxLjguNy43IDEuOC42LTEuOEw2LjcgNWwtMS45LS43LS42LTEuOHptMTUgOC4zYTYuNyA2LjcgMCAxMS02LjYtNi42IDUuOCA1LjggMCAwMDYuNiA2LjZ6IiAvPgo8L3N2Zz4=);background-color:#003892}.ui-switch input:active+.slider .circle:before{-webkit-transition:0s;-o-transition:0s;transition:0s;opacity:1;width:0;height:0}\n"], dependencies: [{ kind: "ngmodule", type: MenubarModule }, { kind: "component", type: i1$2.Menubar, selector: "p-menubar", inputs: ["model", "style", "styleClass", "autoZIndex", "baseZIndex", "autoDisplay", "autoHide", "breakpoint", "autoHideDelay", "id", "ariaLabel", "ariaLabelledBy"], outputs: ["onFocus", "onBlur"] }, { kind: "ngmodule", type: ImageModule }, { kind: "component", type: i2.Image, selector: "p-image", inputs: ["imageClass", "imageStyle", "styleClass", "style", "src", "srcSet", "sizes", "previewImageSrc", "previewImageSrcSet", "previewImageSizes", "alt", "width", "height", "loading", "appendTo", "preview", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide", "onImageError"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i3.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "fluid", "buttonProps"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: InputSwitchModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
539
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: NavbarDsxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
540
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.4", type: NavbarDsxComponent, isStandalone: true, selector: "app-navbar-dsx", inputs: { logoWidth: { classPropertyName: "logoWidth", publicName: "logoWidth", isSignal: true, isRequired: false, transformFunction: null }, appVersion: { classPropertyName: "appVersion", publicName: "appVersion", isSignal: true, isRequired: false, transformFunction: null }, urlLogo: { classPropertyName: "urlLogo", publicName: "urlLogo", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<p-menubar>\r\n <ng-template #start>\r\n <p-image\r\n class=\"ms-15\"\r\n [src]=\"urlLogo()\"\r\n alt=\"Image\"\r\n [width]=\"logoWidth()\"\r\n />\r\n <span class=\"version-text\">{{ appVersion() }}</span>\r\n </ng-template>\r\n <ng-template #end>\r\n <div class=\"flex items-center me-5\">\r\n <p-button\r\n class=\"mr-2\"\r\n label=\"Permisos\"\r\n variant=\"text\"\r\n severity=\"info\"\r\n (click)=\"actualizarSeguridadIT()\"\r\n >\r\n <span class=\"material-symbols-outlined mr-1\">local_police</span>\r\n </p-button>\r\n <label class=\"ui-switch\">\r\n <input\r\n type=\"checkbox\"\r\n [(ngModel)]=\"checked\"\r\n (click)=\"onThemeChange(!checked ? true : false)\"\r\n />\r\n <div class=\"slider\">\r\n <div class=\"circle\"></div>\r\n </div>\r\n </label>\r\n <!-- <p-inputSwitch\r\n [(ngModel)]=\"checked\"\r\n (onChange)=\"onThemeChange($event.checked)\"\r\n ></p-inputSwitch> -->\r\n </div>\r\n </ng-template>\r\n</p-menubar>\r\n", styles: [".ui-switch{--switch-bg: rgb(135, 150, 165);--switch-width: 48px;--switch-height: 20px;--circle-diameter: 32px;--circle-bg: rgb(232, 89, 15);--circle-inset: calc((var(--circle-diameter) - var(--switch-height)) / 2)}.ui-switch input{display:none}.slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:var(--switch-width);height:var(--switch-height);background:var(--switch-bg);border-radius:999px;position:relative;cursor:pointer}.slider .circle{top:calc(var(--circle-inset) * -1);left:0;width:var(--circle-diameter);height:var(--circle-diameter);position:absolute;background:var(--circle-bg);border-radius:inherit;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjAiIHdpZHRoPSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIj4KICAgIDxwYXRoIGZpbGw9IiNmZmYiCiAgICAgICAgZD0iTTkuMzA1IDEuNjY3VjMuNzVoMS4zODlWMS42NjdoLTEuMzl6bS00LjcwNyAxLjk1bC0uOTgyLjk4Mkw1LjA5IDYuMDcybC45ODItLjk4Mi0xLjQ3My0xLjQ3M3ptMTAuODAyIDBMMTMuOTI3IDUuMDlsLjk4Mi45ODIgMS40NzMtMS40NzMtLjk4Mi0uOTgyek0xMCA1LjEzOWE0Ljg3MiA0Ljg3MiAwIDAwLTQuODYyIDQuODZBNC44NzIgNC44NzIgMCAwMDEwIDE0Ljg2MiA0Ljg3MiA0Ljg3MiAwIDAwMTQuODYgMTAgNC44NzIgNC44NzIgMCAwMDEwIDUuMTM5em0wIDEuMzg5QTMuNDYyIDMuNDYyIDAgMDExMy40NzEgMTBhMy40NjIgMy40NjIgMCAwMS0zLjQ3MyAzLjQ3MkEzLjQ2MiAzLjQ2MiAwIDAxNi41MjcgMTAgMy40NjIgMy40NjIgMCAwMTEwIDYuNTI4ek0xLjY2NSA5LjMwNXYxLjM5aDIuMDgzdi0xLjM5SDEuNjY2em0xNC41ODMgMHYxLjM5aDIuMDg0di0xLjM5aC0yLjA4NHpNNS4wOSAxMy45MjhMMy42MTYgMTUuNGwuOTgyLjk4MiAxLjQ3My0xLjQ3My0uOTgyLS45ODJ6bTkuODIgMGwtLjk4Mi45ODIgMS40NzMgMS40NzMuOTgyLS45ODItMS40NzMtMS40NzN6TTkuMzA1IDE2LjI1djIuMDgzaDEuMzg5VjE2LjI1aC0xLjM5eiIgLz4KPC9zdmc+);background-repeat:no-repeat;background-position:center center;-webkit-transition:left .15s cubic-bezier(.4,0,.2,1) 0ms,-webkit-transform .15s cubic-bezier(.4,0,.2,1) 0ms;-o-transition:left .15s cubic-bezier(.4,0,.2,1) 0ms,transform .15s cubic-bezier(.4,0,.2,1) 0ms;transition:left .15s cubic-bezier(.4,0,.2,1) 0ms,transform .15s cubic-bezier(.4,0,.2,1) 0ms,-webkit-transform .15s cubic-bezier(.4,0,.2,1) 0ms;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.slider .circle:before{content:\"\";position:absolute;width:100%;height:100%;background:#ffffffbf;border-radius:inherit;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s;opacity:0}.ui-switch input:checked+.slider .circle{left:calc(100% - var(--circle-diameter));background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjAiIHdpZHRoPSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIj4KICAgIDxwYXRoIGZpbGw9IiNmZmYiCiAgICAgICAgZD0iTTQuMiAyLjVsLS43IDEuOC0xLjguNyAxLjguNy43IDEuOC42LTEuOEw2LjcgNWwtMS45LS43LS42LTEuOHptMTUgOC4zYTYuNyA2LjcgMCAxMS02LjYtNi42IDUuOCA1LjggMCAwMDYuNiA2LjZ6IiAvPgo8L3N2Zz4=);background-color:#003892}.ui-switch input:active+.slider .circle:before{-webkit-transition:0s;-o-transition:0s;transition:0s;opacity:1;width:0;height:0}\n"], dependencies: [{ kind: "ngmodule", type: MenubarModule }, { kind: "component", type: i1$2.Menubar, selector: "p-menubar", inputs: ["model", "styleClass", "autoZIndex", "baseZIndex", "autoDisplay", "autoHide", "breakpoint", "autoHideDelay", "id", "ariaLabel", "ariaLabelledBy"], outputs: ["onFocus", "onBlur"] }, { kind: "ngmodule", type: ImageModule }, { kind: "component", type: i2.Image, selector: "p-image", inputs: ["imageClass", "imageStyle", "styleClass", "src", "srcSet", "sizes", "previewImageSrc", "previewImageSrcSet", "previewImageSizes", "alt", "width", "height", "loading", "preview", "showTransitionOptions", "hideTransitionOptions", "appendTo"], outputs: ["onShow", "onHide", "onImageError"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i3.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "buttonProps", "autofocus", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
542
541
  }
543
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NavbarDsxComponent, decorators: [{
542
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: NavbarDsxComponent, decorators: [{
544
543
  type: Component,
545
- args: [{ selector: 'app-navbar-dsx', imports: [
546
- MenubarModule,
547
- ImageModule,
548
- ButtonModule,
549
- InputSwitchModule,
550
- FormsModule,
551
- ], template: "<p-menubar>\r\n <ng-template #start>\r\n <p-image\r\n class=\"ms-15\"\r\n [src]=\"urlLogo()\"\r\n alt=\"Image\"\r\n [width]=\"logoWidth()\"\r\n />\r\n <span class=\"version-text\">{{ appVersion() }}</span>\r\n </ng-template>\r\n <ng-template #end>\r\n <div class=\"flex items-center me-5\">\r\n <p-button\r\n class=\"mr-2\"\r\n label=\"Permisos\"\r\n variant=\"text\"\r\n severity=\"info\"\r\n (click)=\"actualizarSeguridadIT()\"\r\n >\r\n <span class=\"material-symbols-outlined mr-1\">local_police</span>\r\n </p-button>\r\n <label class=\"ui-switch\">\r\n <input\r\n type=\"checkbox\"\r\n [(ngModel)]=\"checked\"\r\n (click)=\"onThemeChange(!checked ? true : false)\"\r\n />\r\n <div class=\"slider\">\r\n <div class=\"circle\"></div>\r\n </div>\r\n </label>\r\n <!-- <p-inputSwitch\r\n [(ngModel)]=\"checked\"\r\n (onChange)=\"onThemeChange($event.checked)\"\r\n ></p-inputSwitch> -->\r\n </div>\r\n </ng-template>\r\n</p-menubar>\r\n", styles: [".ui-switch{--switch-bg: rgb(135, 150, 165);--switch-width: 48px;--switch-height: 20px;--circle-diameter: 32px;--circle-bg: rgb(232, 89, 15);--circle-inset: calc((var(--circle-diameter) - var(--switch-height)) / 2)}.ui-switch input{display:none}.slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:var(--switch-width);height:var(--switch-height);background:var(--switch-bg);border-radius:999px;position:relative;cursor:pointer}.slider .circle{top:calc(var(--circle-inset) * -1);left:0;width:var(--circle-diameter);height:var(--circle-diameter);position:absolute;background:var(--circle-bg);border-radius:inherit;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjAiIHdpZHRoPSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIj4KICAgIDxwYXRoIGZpbGw9IiNmZmYiCiAgICAgICAgZD0iTTkuMzA1IDEuNjY3VjMuNzVoMS4zODlWMS42NjdoLTEuMzl6bS00LjcwNyAxLjk1bC0uOTgyLjk4Mkw1LjA5IDYuMDcybC45ODItLjk4Mi0xLjQ3My0xLjQ3M3ptMTAuODAyIDBMMTMuOTI3IDUuMDlsLjk4Mi45ODIgMS40NzMtMS40NzMtLjk4Mi0uOTgyek0xMCA1LjEzOWE0Ljg3MiA0Ljg3MiAwIDAwLTQuODYyIDQuODZBNC44NzIgNC44NzIgMCAwMDEwIDE0Ljg2MiA0Ljg3MiA0Ljg3MiAwIDAwMTQuODYgMTAgNC44NzIgNC44NzIgMCAwMDEwIDUuMTM5em0wIDEuMzg5QTMuNDYyIDMuNDYyIDAgMDExMy40NzEgMTBhMy40NjIgMy40NjIgMCAwMS0zLjQ3MyAzLjQ3MkEzLjQ2MiAzLjQ2MiAwIDAxNi41MjcgMTAgMy40NjIgMy40NjIgMCAwMTEwIDYuNTI4ek0xLjY2NSA5LjMwNXYxLjM5aDIuMDgzdi0xLjM5SDEuNjY2em0xNC41ODMgMHYxLjM5aDIuMDg0di0xLjM5aC0yLjA4NHpNNS4wOSAxMy45MjhMMy42MTYgMTUuNGwuOTgyLjk4MiAxLjQ3My0xLjQ3My0uOTgyLS45ODJ6bTkuODIgMGwtLjk4Mi45ODIgMS40NzMgMS40NzMuOTgyLS45ODItMS40NzMtMS40NzN6TTkuMzA1IDE2LjI1djIuMDgzaDEuMzg5VjE2LjI1aC0xLjM5eiIgLz4KPC9zdmc+);background-repeat:no-repeat;background-position:center center;-webkit-transition:left .15s cubic-bezier(.4,0,.2,1) 0ms,-webkit-transform .15s cubic-bezier(.4,0,.2,1) 0ms;-o-transition:left .15s cubic-bezier(.4,0,.2,1) 0ms,transform .15s cubic-bezier(.4,0,.2,1) 0ms;transition:left .15s cubic-bezier(.4,0,.2,1) 0ms,transform .15s cubic-bezier(.4,0,.2,1) 0ms,-webkit-transform .15s cubic-bezier(.4,0,.2,1) 0ms;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.slider .circle:before{content:\"\";position:absolute;width:100%;height:100%;background:#ffffffbf;border-radius:inherit;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s;opacity:0}.ui-switch input:checked+.slider .circle{left:calc(100% - var(--circle-diameter));background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjAiIHdpZHRoPSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIj4KICAgIDxwYXRoIGZpbGw9IiNmZmYiCiAgICAgICAgZD0iTTQuMiAyLjVsLS43IDEuOC0xLjguNyAxLjguNy43IDEuOC42LTEuOEw2LjcgNWwtMS45LS43LS42LTEuOHptMTUgOC4zYTYuNyA2LjcgMCAxMS02LjYtNi42IDUuOCA1LjggMCAwMDYuNiA2LjZ6IiAvPgo8L3N2Zz4=);background-color:#003892}.ui-switch input:active+.slider .circle:before{-webkit-transition:0s;-o-transition:0s;transition:0s;opacity:1;width:0;height:0}\n"] }]
544
+ args: [{ selector: 'app-navbar-dsx', imports: [MenubarModule, ImageModule, ButtonModule, FormsModule], template: "<p-menubar>\r\n <ng-template #start>\r\n <p-image\r\n class=\"ms-15\"\r\n [src]=\"urlLogo()\"\r\n alt=\"Image\"\r\n [width]=\"logoWidth()\"\r\n />\r\n <span class=\"version-text\">{{ appVersion() }}</span>\r\n </ng-template>\r\n <ng-template #end>\r\n <div class=\"flex items-center me-5\">\r\n <p-button\r\n class=\"mr-2\"\r\n label=\"Permisos\"\r\n variant=\"text\"\r\n severity=\"info\"\r\n (click)=\"actualizarSeguridadIT()\"\r\n >\r\n <span class=\"material-symbols-outlined mr-1\">local_police</span>\r\n </p-button>\r\n <label class=\"ui-switch\">\r\n <input\r\n type=\"checkbox\"\r\n [(ngModel)]=\"checked\"\r\n (click)=\"onThemeChange(!checked ? true : false)\"\r\n />\r\n <div class=\"slider\">\r\n <div class=\"circle\"></div>\r\n </div>\r\n </label>\r\n <!-- <p-inputSwitch\r\n [(ngModel)]=\"checked\"\r\n (onChange)=\"onThemeChange($event.checked)\"\r\n ></p-inputSwitch> -->\r\n </div>\r\n </ng-template>\r\n</p-menubar>\r\n", styles: [".ui-switch{--switch-bg: rgb(135, 150, 165);--switch-width: 48px;--switch-height: 20px;--circle-diameter: 32px;--circle-bg: rgb(232, 89, 15);--circle-inset: calc((var(--circle-diameter) - var(--switch-height)) / 2)}.ui-switch input{display:none}.slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:var(--switch-width);height:var(--switch-height);background:var(--switch-bg);border-radius:999px;position:relative;cursor:pointer}.slider .circle{top:calc(var(--circle-inset) * -1);left:0;width:var(--circle-diameter);height:var(--circle-diameter);position:absolute;background:var(--circle-bg);border-radius:inherit;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjAiIHdpZHRoPSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIj4KICAgIDxwYXRoIGZpbGw9IiNmZmYiCiAgICAgICAgZD0iTTkuMzA1IDEuNjY3VjMuNzVoMS4zODlWMS42NjdoLTEuMzl6bS00LjcwNyAxLjk1bC0uOTgyLjk4Mkw1LjA5IDYuMDcybC45ODItLjk4Mi0xLjQ3My0xLjQ3M3ptMTAuODAyIDBMMTMuOTI3IDUuMDlsLjk4Mi45ODIgMS40NzMtMS40NzMtLjk4Mi0uOTgyek0xMCA1LjEzOWE0Ljg3MiA0Ljg3MiAwIDAwLTQuODYyIDQuODZBNC44NzIgNC44NzIgMCAwMDEwIDE0Ljg2MiA0Ljg3MiA0Ljg3MiAwIDAwMTQuODYgMTAgNC44NzIgNC44NzIgMCAwMDEwIDUuMTM5em0wIDEuMzg5QTMuNDYyIDMuNDYyIDAgMDExMy40NzEgMTBhMy40NjIgMy40NjIgMCAwMS0zLjQ3MyAzLjQ3MkEzLjQ2MiAzLjQ2MiAwIDAxNi41MjcgMTAgMy40NjIgMy40NjIgMCAwMTEwIDYuNTI4ek0xLjY2NSA5LjMwNXYxLjM5aDIuMDgzdi0xLjM5SDEuNjY2em0xNC41ODMgMHYxLjM5aDIuMDg0di0xLjM5aC0yLjA4NHpNNS4wOSAxMy45MjhMMy42MTYgMTUuNGwuOTgyLjk4MiAxLjQ3My0xLjQ3My0uOTgyLS45ODJ6bTkuODIgMGwtLjk4Mi45ODIgMS40NzMgMS40NzMuOTgyLS45ODItMS40NzMtMS40NzN6TTkuMzA1IDE2LjI1djIuMDgzaDEuMzg5VjE2LjI1aC0xLjM5eiIgLz4KPC9zdmc+);background-repeat:no-repeat;background-position:center center;-webkit-transition:left .15s cubic-bezier(.4,0,.2,1) 0ms,-webkit-transform .15s cubic-bezier(.4,0,.2,1) 0ms;-o-transition:left .15s cubic-bezier(.4,0,.2,1) 0ms,transform .15s cubic-bezier(.4,0,.2,1) 0ms;transition:left .15s cubic-bezier(.4,0,.2,1) 0ms,transform .15s cubic-bezier(.4,0,.2,1) 0ms,-webkit-transform .15s cubic-bezier(.4,0,.2,1) 0ms;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.slider .circle:before{content:\"\";position:absolute;width:100%;height:100%;background:#ffffffbf;border-radius:inherit;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s;opacity:0}.ui-switch input:checked+.slider .circle{left:calc(100% - var(--circle-diameter));background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjAiIHdpZHRoPSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIj4KICAgIDxwYXRoIGZpbGw9IiNmZmYiCiAgICAgICAgZD0iTTQuMiAyLjVsLS43IDEuOC0xLjguNyAxLjguNy43IDEuOC42LTEuOEw2LjcgNWwtMS45LS43LS42LTEuOHptMTUgOC4zYTYuNyA2LjcgMCAxMS02LjYtNi42IDUuOCA1LjggMCAwMDYuNiA2LjZ6IiAvPgo8L3N2Zz4=);background-color:#003892}.ui-switch input:active+.slider .circle:before{-webkit-transition:0s;-o-transition:0s;transition:0s;opacity:1;width:0;height:0}\n"] }]
552
545
  }] });
553
546
 
547
+ /**
548
+ * Directiva que permite solo la entrada de:
549
+ * - Dígitos (0-9)
550
+ * - Separadores punto (.)
551
+ * - Rango con guión (-)
552
+ *
553
+ * Ejemplos válidos:
554
+ * - 1.2.3
555
+ * - 4-6
556
+ * - 1.3.5-9
557
+ *
558
+ * Restringe:
559
+ * - Letras
560
+ * - Espacios
561
+ * - Caracteres especiales
562
+ * - Doble punto (..), doble guión (--), o combinaciones como (.-)
563
+ */
564
+ class OnlyRangoPatternDirective {
565
+ el;
566
+ constructor(el) {
567
+ this.el = el;
568
+ }
569
+ /**
570
+ * Expresión regular para permitir caracteres válidos individualmente (tecla por tecla).
571
+ */
572
+ keyRegex = /^[0-9.\-]$/;
573
+ /**
574
+ * Escucha el evento de teclado y permite únicamente teclas válidas.
575
+ * También evita combinaciones inválidas como `..`, `--`, `.1`, etc.
576
+ */
577
+ onKeyDown(event) {
578
+ const input = this.el.nativeElement;
579
+ const currentValue = input.value;
580
+ const cursorPos = input.selectionStart ?? 0;
581
+ const nextValue = currentValue.slice(0, cursorPos) +
582
+ event.key +
583
+ currentValue.slice(cursorPos);
584
+ const allowedKeys = [
585
+ 'Backspace',
586
+ 'Delete',
587
+ 'ArrowLeft',
588
+ 'ArrowRight',
589
+ 'Tab',
590
+ 'Home',
591
+ 'End',
592
+ ];
593
+ if (allowedKeys.includes(event.key))
594
+ return;
595
+ if (!this.keyRegex.test(event.key)) {
596
+ event.preventDefault();
597
+ return;
598
+ }
599
+ // No permitir más de un punto o guión seguido, o combinaciones como ".-", "-.", etc.
600
+ if (/(\.\.|--|-\.)|(\.-)/.test(nextValue)) {
601
+ event.preventDefault();
602
+ return;
603
+ }
604
+ // No permitir iniciar con punto o guión
605
+ if (cursorPos === 0 && (event.key === '.' || event.key === '-')) {
606
+ event.preventDefault();
607
+ }
608
+ }
609
+ /**
610
+ * Previene el pegado de cadenas que no cumplan con la estructura válida.
611
+ * Solo permite: número o número separados por punto o guión correctamente.
612
+ */
613
+ onPaste(event) {
614
+ const pasted = event.clipboardData?.getData('text') ?? '';
615
+ const sanitized = pasted.trim();
616
+ // Patrón completo de cadena válida: ej. 1.2.3.4-6
617
+ const pattern = /^(\d+(-\d+)?)(\.\d+(-\d+)?)*$/;
618
+ if (!pattern.test(sanitized)) {
619
+ event.preventDefault();
620
+ }
621
+ }
622
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: OnlyRangoPatternDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
623
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.4", type: OnlyRangoPatternDirective, isStandalone: true, selector: "[appOnlyRangoPattern]", host: { listeners: { "keydown": "onKeyDown($event)", "paste": "onPaste($event)" } }, ngImport: i0 });
624
+ }
625
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: OnlyRangoPatternDirective, decorators: [{
626
+ type: Directive,
627
+ args: [{
628
+ selector: '[appOnlyRangoPattern]',
629
+ }]
630
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { onKeyDown: [{
631
+ type: HostListener,
632
+ args: ['keydown', ['$event']]
633
+ }], onPaste: [{
634
+ type: HostListener,
635
+ args: ['paste', ['$event']]
636
+ }] } });
637
+
554
638
  class SelectAllOnFocusDirective {
555
639
  selectAll(event) {
556
640
  const htmlInput = event.target;
@@ -558,10 +642,10 @@ class SelectAllOnFocusDirective {
558
642
  htmlInput.select();
559
643
  }
560
644
  }
561
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SelectAllOnFocusDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
562
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.14", type: SelectAllOnFocusDirective, isStandalone: true, selector: "[appSelectAllOnFocus]", host: { listeners: { "onFocus": "selectAll($event)", "focus": "selectAll($event)" } }, ngImport: i0 });
645
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: SelectAllOnFocusDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
646
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.4", type: SelectAllOnFocusDirective, isStandalone: true, selector: "[appSelectAllOnFocus]", host: { listeners: { "onFocus": "selectAll($event)", "focus": "selectAll($event)" } }, ngImport: i0 });
563
647
  }
564
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SelectAllOnFocusDirective, decorators: [{
648
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: SelectAllOnFocusDirective, decorators: [{
565
649
  type: Directive,
566
650
  args: [{
567
651
  selector: '[appSelectAllOnFocus]',
@@ -650,10 +734,10 @@ class AuthorizeService {
650
734
  // Devuelve true si el token NO ha expirado
651
735
  return !this.helperJwt.isTokenExpired(token);
652
736
  }
653
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AuthorizeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
654
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AuthorizeService, providedIn: 'root' });
737
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AuthorizeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
738
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AuthorizeService, providedIn: 'root' });
655
739
  }
656
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AuthorizeService, decorators: [{
740
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: AuthorizeService, decorators: [{
657
741
  type: Injectable,
658
742
  args: [{
659
743
  providedIn: 'root',
@@ -705,10 +789,10 @@ class ErrorHandlerService {
705
789
  // Retornar el error para continuar con el flujo de manejo de errores
706
790
  return throwError(() => new Error(technicalMessage));
707
791
  }
708
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ErrorHandlerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
709
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ErrorHandlerService, providedIn: 'root' });
792
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: ErrorHandlerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
793
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: ErrorHandlerService, providedIn: 'root' });
710
794
  }
711
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ErrorHandlerService, decorators: [{
795
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: ErrorHandlerService, decorators: [{
712
796
  type: Injectable,
713
797
  args: [{
714
798
  providedIn: 'root',
@@ -857,10 +941,10 @@ class TruncatePipe {
857
941
  // Trunca el texto y añade el ellipsis si la longitud del texto supera el límite.
858
942
  return value.length > limit ? value.slice(0, limit) + ellipsis : value;
859
943
  }
860
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TruncatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
861
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: TruncatePipe, isStandalone: true, name: "truncate" });
944
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: TruncatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
945
+ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.4", ngImport: i0, type: TruncatePipe, isStandalone: true, name: "truncate" });
862
946
  }
863
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TruncatePipe, decorators: [{
947
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: TruncatePipe, decorators: [{
864
948
  type: Pipe,
865
949
  args: [{
866
950
  name: 'truncate',
@@ -909,7 +993,7 @@ class CacheService {
909
993
  *
910
994
  * Este estado es tipado automáticamente en función de los valores de `T`.
911
995
  */
912
- _options = signal(Object.fromEntries(Object.values(this.keys).map((k) => [k, false])));
996
+ _options = signal(Object.fromEntries(Object.values(this.keys).map((k) => [k, false])), ...(ngDevMode ? [{ debugName: "_options" }] : []));
913
997
  /**
914
998
  * Obtiene el estado actual del caché.
915
999
  * Cada propiedad representa una clave real de caché con su valor booleano.
@@ -939,10 +1023,10 @@ class CacheService {
939
1023
  this._options.set(current);
940
1024
  this.alert.toastrAlerts(2, 'Estado', 'Datos actualizados (cache).', 2, 1000);
941
1025
  }
942
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: CacheService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
943
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: CacheService, providedIn: 'root' });
1026
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CacheService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1027
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CacheService, providedIn: 'root' });
944
1028
  }
945
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: CacheService, decorators: [{
1029
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: CacheService, decorators: [{
946
1030
  type: Injectable,
947
1031
  args: [{
948
1032
  providedIn: 'root',
@@ -967,10 +1051,10 @@ class EndpointService {
967
1051
  delete(endpoint, values, softDelete = true) {
968
1052
  return this.http.put(`${this.getUrl(endpoint)}/PutDelete/${softDelete}`, values);
969
1053
  }
970
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: EndpointService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
971
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: EndpointService, providedIn: 'root' });
1054
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: EndpointService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1055
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: EndpointService, providedIn: 'root' });
972
1056
  }
973
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: EndpointService, decorators: [{
1057
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: EndpointService, decorators: [{
974
1058
  type: Injectable,
975
1059
  args: [{
976
1060
  providedIn: 'root',
@@ -1220,10 +1304,94 @@ class UtilityAddService {
1220
1304
  }, []);
1221
1305
  return uniqueValues.sort((a, b) => a.value.localeCompare(b.value));
1222
1306
  }
1223
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: UtilityAddService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1224
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: UtilityAddService, providedIn: 'root' });
1307
+ /**
1308
+ * Función pura que procesa una cadena de texto conteniendo números individuales y/o rangos numéricos,
1309
+ * devolviendo un array con todos los números expandidos.
1310
+ *
1311
+ * @param input - Cadena de texto con el formato: número[.número][.inicio-fin][...]
1312
+ * @returns Array de números con todos los valores individuales y rangos expandidos
1313
+ *
1314
+ * @example
1315
+ * // Uso básico
1316
+ * const result = parseNumericRanges('1.5.7.10-12');
1317
+ * // Retorna: [1, 5, 7, 10, 11, 12]
1318
+ *
1319
+ * @example
1320
+ * // Con espacios y caracteres especiales
1321
+ * const result = parseNumericRanges(' 3. 5-7 .10-12abc');
1322
+ * // Retorna: [3, 5, 6, 7, 10, 11, 12]
1323
+ *
1324
+ * @example
1325
+ * // Rangos invertidos (serán ignorados)
1326
+ * const result = parseNumericRanges('10-8');
1327
+ * // Retorna: [] (array vacío)
1328
+ *
1329
+ * @note
1330
+ * Características especiales:
1331
+ * - Elimina automáticamente espacios y caracteres no numéricos
1332
+ * - Los números deben estar separados por puntos (.)
1333
+ * - Los rangos deben usar guión (-) sin espacios entre números
1334
+ * - Es tolerante a formatos inconsistentes
1335
+ * - Omite elementos inválidos sin generar errores
1336
+ */
1337
+ parseNumericRanges(input) {
1338
+ const cleanString = input.replace(/[^\d.\- ]/g, '').replace(/\s+/g, '');
1339
+ const parts = cleanString.split('.');
1340
+ const result = [];
1341
+ for (const part of parts) {
1342
+ if (!part)
1343
+ continue;
1344
+ if (part.includes('-')) {
1345
+ const [startStr, endStr] = part.split('-');
1346
+ const start = parseInt(startStr, 10);
1347
+ const end = parseInt(endStr, 10);
1348
+ if (!isNaN(start) && !isNaN(end) && start <= end) {
1349
+ for (let i = start; i <= end; i++) {
1350
+ result.push(i);
1351
+ }
1352
+ }
1353
+ }
1354
+ else {
1355
+ const number = parseInt(part, 10);
1356
+ if (!isNaN(number)) {
1357
+ result.push(number);
1358
+ }
1359
+ }
1360
+ }
1361
+ return result;
1362
+ }
1363
+ /**
1364
+ * Adaptador para procesar eventos de input y extraer rangos numéricos.
1365
+ *
1366
+ * @param event - Objeto Event del DOM, preferiblemente de un elemento input
1367
+ * @returns Array de números generado a partir del valor del input
1368
+ *
1369
+ * @example
1370
+ * // Uso en template Angular
1371
+ * <input (input)="processNumericRangesFromEvent($event)">
1372
+ *
1373
+ * @example
1374
+ * // Uso directo
1375
+ * const result = processNumericRangesFromEvent(inputEvent);
1376
+ *
1377
+ * @note
1378
+ * Esta función es un wrapper que:
1379
+ * - Extrae el valor del input del evento
1380
+ * - Delega el procesamiento a parseNumericRanges()
1381
+ * - Mantiene compatibilidad con eventos de diferentes frameworks
1382
+ *
1383
+ * @dependencies
1384
+ * Requiere que el evento tenga la propiedad target.value (standard DOM)
1385
+ * Para otros tipos de eventos (ej. Angular Material) puede necesitar ajustes
1386
+ */
1387
+ processNumericRangesFromEvent(event) {
1388
+ const inputValue = event.target.value;
1389
+ return this.parseNumericRanges(inputValue);
1390
+ }
1391
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: UtilityAddService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1392
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: UtilityAddService, providedIn: 'root' });
1225
1393
  }
1226
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: UtilityAddService, decorators: [{
1394
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: UtilityAddService, decorators: [{
1227
1395
  type: Injectable,
1228
1396
  args: [{
1229
1397
  providedIn: 'root',
@@ -1461,5 +1629,5 @@ function CUICorrecto(cui) {
1461
1629
  * Generated bundle index. Do not edit.
1462
1630
  */
1463
1631
 
1464
- export { AlertaService, AppMessageErrorComponent, AuthorizeService, CACHE_KEYS, CacheService, ENVIRONMENT, EndpointService, INITIAL_PARAMETERS, JsonHighlightPipe, JsonValuesDebujComponent, KpicardComponent, LoadingComponent, NavbarDsxComponent, ParameterValuesService, SecurityService, SelectAllOnFocusDirective, TruncatePipe, UtilityAddService, atLeastOneFieldRequiredValidator, createInitialCache, cuiValidator, dateMinMaxValidator, dateRangeValidator, httpAuthorizeInterceptor, nitValidator };
1632
+ export { AlertaService, AppMessageErrorComponent, AuthorizeService, CACHE_KEYS, CacheService, ENVIRONMENT, EndpointService, INITIAL_PARAMETERS, JsonHighlightPipe, JsonValuesDebujComponent, KpicardComponent, LoadingComponent, NavbarDsxComponent, OnlyRangoPatternDirective, ParameterValuesService, SecurityService, SelectAllOnFocusDirective, TruncatePipe, UtilityAddService, atLeastOneFieldRequiredValidator, createInitialCache, cuiValidator, dateMinMaxValidator, dateRangeValidator, httpAuthorizeInterceptor, nitValidator };
1465
1633
  //# sourceMappingURL=ngx-dsxlibrary.mjs.map