ngx-dsxlibrary 2.21.37 → 2.21.39
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.
- package/fesm2022/ngx-dsxlibrary-src-lib-components.mjs +30 -30
- package/fesm2022/ngx-dsxlibrary-src-lib-guards-src.mjs +4 -0
- package/fesm2022/ngx-dsxlibrary-src-lib-guards-src.mjs.map +1 -0
- package/fesm2022/ngx-dsxlibrary-src-lib-pipe.mjs +9 -9
- package/fesm2022/ngx-dsxlibrary.mjs +273 -148
- package/fesm2022/ngx-dsxlibrary.mjs.map +1 -1
- package/ngx-dsxlibrary-2.21.39.tgz +0 -0
- package/package.json +5 -1
- package/types/ngx-dsxlibrary-src-lib-guards-src.d.ts +2 -0
- package/types/ngx-dsxlibrary.d.ts +41 -3
- package/ngx-dsxlibrary-2.21.37.tgz +0 -0
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import * as i1$
|
|
2
|
-
import { DecimalPipe, CommonModule, AsyncPipe } from '@angular/common';
|
|
1
|
+
import * as i1$2 from '@angular/common';
|
|
2
|
+
import { DecimalPipe, CommonModule, AsyncPipe, Location } from '@angular/common';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
4
|
import { Input, Component, input, forwardRef, viewChild, signal, EventEmitter, effect, Output, model, inject, computed, InjectionToken, Injectable, isDevMode, output, HostBinding, Pipe, ViewEncapsulation, HostListener, Directive, NgModule } from '@angular/core';
|
|
5
5
|
import * as i1 from 'primeng/tag';
|
|
6
6
|
import { TagModule } from 'primeng/tag';
|
|
7
|
-
import * as
|
|
8
|
-
import { FormsModule, NG_VALUE_ACCESSOR, FormControl, ReactiveFormsModule, FormGroup } from '@angular/forms';
|
|
9
|
-
import * as i2
|
|
7
|
+
import * as i1$1 from '@angular/forms';
|
|
8
|
+
import { FormsModule, NG_VALUE_ACCESSOR, FormControl, FormBuilder, Validators, ReactiveFormsModule, FormGroup } from '@angular/forms';
|
|
9
|
+
import * as i2 from 'primeng/togglebutton';
|
|
10
10
|
import { ToggleButtonModule } from 'primeng/togglebutton';
|
|
11
11
|
import { FileUpload, FileUploadModule } from 'primeng/fileupload';
|
|
12
|
-
import * as i2$
|
|
12
|
+
import * as i2$1 from 'primeng/tree';
|
|
13
13
|
import { TreeModule } from 'primeng/tree';
|
|
14
14
|
import * as i3 from 'primeng/api';
|
|
15
|
-
import * as i1$
|
|
15
|
+
import * as i1$3 from 'primeng/tooltip';
|
|
16
16
|
import { TooltipModule } from 'primeng/tooltip';
|
|
17
17
|
import { CountUpDirective } from 'ngx-countup';
|
|
18
18
|
import * as i2$3 from 'primeng/avatar';
|
|
19
19
|
import { AvatarModule, Avatar } from 'primeng/avatar';
|
|
20
|
-
import * as
|
|
20
|
+
import * as i2$2 from 'primeng/dialog';
|
|
21
21
|
import { DialogModule } from 'primeng/dialog';
|
|
22
22
|
import * as i1$4 from '@angular/platform-browser';
|
|
23
23
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
@@ -40,6 +40,10 @@ import * as i4 from 'primeng/menubar';
|
|
|
40
40
|
import { MenubarModule } from 'primeng/menubar';
|
|
41
41
|
import { JwtHelperService } from '@auth0/angular-jwt';
|
|
42
42
|
import { CookieService } from 'ngx-cookie-service';
|
|
43
|
+
import * as i6 from 'primeng/floatlabel';
|
|
44
|
+
import { FloatLabelModule } from 'primeng/floatlabel';
|
|
45
|
+
import * as i7 from 'primeng/password';
|
|
46
|
+
import { PasswordModule } from 'primeng/password';
|
|
43
47
|
import { AccordionModule } from 'primeng/accordion';
|
|
44
48
|
import { AutoCompleteModule } from 'primeng/autocomplete';
|
|
45
49
|
import { AutoFocusModule } from 'primeng/autofocus';
|
|
@@ -52,7 +56,6 @@ import { DatePickerModule } from 'primeng/datepicker';
|
|
|
52
56
|
import { DividerModule } from 'primeng/divider';
|
|
53
57
|
import { DrawerModule } from 'primeng/drawer';
|
|
54
58
|
import { FieldsetModule } from 'primeng/fieldset';
|
|
55
|
-
import { FloatLabelModule } from 'primeng/floatlabel';
|
|
56
59
|
import { IconFieldModule } from 'primeng/iconfield';
|
|
57
60
|
import { InputIconModule } from 'primeng/inputicon';
|
|
58
61
|
import { InputMaskModule } from 'primeng/inputmask';
|
|
@@ -65,7 +68,6 @@ import { MultiSelectModule } from 'primeng/multiselect';
|
|
|
65
68
|
import { OrganizationChartModule } from 'primeng/organizationchart';
|
|
66
69
|
import { OverlayBadgeModule } from 'primeng/overlaybadge';
|
|
67
70
|
import { PanelMenuModule } from 'primeng/panelmenu';
|
|
68
|
-
import { PasswordModule } from 'primeng/password';
|
|
69
71
|
import { PickListModule } from 'primeng/picklist';
|
|
70
72
|
import { PopoverModule } from 'primeng/popover';
|
|
71
73
|
import { RadioButtonModule } from 'primeng/radiobutton';
|
|
@@ -176,10 +178,10 @@ class AppMessageErrorComponent {
|
|
|
176
178
|
}
|
|
177
179
|
return this.defaultFloatLabelErrorSpace;
|
|
178
180
|
}
|
|
179
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
180
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
181
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: AppMessageErrorComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
|
|
182
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", type: AppMessageErrorComponent, isStandalone: true, selector: "app-message-error", inputs: { control: "control", form: "form" }, ngImport: i0, template: "<div class=\"dsx-error-slot\" [class.is-visible]=\"isControlErrorVisible()\">\r\n @if (isControlErrorVisible()) {\r\n <div class=\"dsx-error-message\">\r\n <i\r\n class=\"pi pi-exclamation-triangle dsx-error-icon\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n @if (control?.errors?.[\"required\"]) {\r\n 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?.[\"invalidDate\"]) {\r\n <strong>{{ control?.errors?.[\"invalidDate\"]?.message }}</strong>\r\n } @else if (control?.errors?.[\"minimumAge\"]) {\r\n <strong>{{ control?.errors?.[\"minimumAge\"]?.message }}</strong>\r\n } @else if (control?.errors?.[\"minlength\"]) {\r\n Debe tener al menos\r\n <strong>{{ control?.errors?.[\"minlength\"]?.requiredLength }}</strong>\r\n caracteres.\r\n } @else if (control?.errors?.[\"maxlength\"]) {\r\n Debe tener como m\u00E1ximo\r\n <strong>{{ control?.errors?.[\"maxlength\"]?.requiredLength }}</strong>\r\n caracteres.\r\n } @else if (control?.errors?.[\"min\"]) {\r\n El valor m\u00EDnimo permitido es\r\n <strong>{{ control?.errors?.[\"min\"]?.min }}</strong>\r\n } @else if (control?.errors?.[\"max\"]) {\r\n El valor m\u00E1ximo permitido es\r\n <strong>{{ control?.errors?.[\"max\"]?.max | number: \"1.2-2\" }}</strong>\r\n } @else if (control?.errors?.[\"email\"]) {\r\n Debe ser una direcci\u00F3n de correo v\u00E1lida.\r\n } @else if (control?.errors?.[\"pattern\"]) {\r\n El campo no tiene el formato requerido.\r\n } @else if (control?.errors?.[\"alreadyValueExists\"]) {\r\n <strong>{{ control?.errors?.[\"alreadyValueExists\"]?.message }}</strong>\r\n } @else if (control?.errors?.[\"invalidTemplateVariables\"]) {\r\n <div class=\"dsx-template-error\">\r\n <strong>\r\n {{ control?.errors?.[\"invalidTemplateVariables\"]?.message }}\r\n </strong>\r\n @if (control?.errors?.[\"invalidTemplateVariables\"]?.details?.length) {\r\n <span class=\"dsx-template-error-detail\">\r\n {{ control?.errors?.[\"invalidTemplateVariables\"]?.details?.[0] }}\r\n </span>\r\n }\r\n </div>\r\n } @else {\r\n Existe un error a\u00FAn no identificado.\r\n }\r\n </div>\r\n }\r\n</div>\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: [":host{display:block}.dsx-error-slot{max-height:0;margin-top:0;overflow:hidden;opacity:0;transition:max-height .22s ease,margin-top .22s ease,opacity .18s ease}.dsx-error-slot.is-visible{max-height:4.25rem;margin-top:.3rem;opacity:1}.dsx-error-message{--dsx-error-color: #b42318;--dsx-error-bg: #fff2f0;color:var(--dsx-error-color);font-family:Roboto,Montserrat,sans-serif;font-size:clamp(.75rem,.72rem + .12vw,.8125rem);font-weight:400;line-height:1.35;letter-spacing:.01em;display:flex;align-items:center;gap:.35rem;position:relative;z-index:1;padding:.2rem .45rem;border-left:3px solid var(--dsx-error-color);border-radius:0 6px 6px 0;background:var(--dsx-error-bg);box-shadow:0 1px 2px #00000014;max-width:min(40ch,100%);white-space:normal;word-break:break-word;transform:translateY(-2px);transition:transform .2s ease}.dsx-error-message strong{font-weight:500}.dsx-error-icon{flex-shrink:0;font-size:.78rem;line-height:1;color:var(--dsx-error-color)}.dsx-error-slot.is-visible .dsx-error-message{transform:translateY(0)}@media(max-width:640px){.dsx-error-slot.is-visible{max-height:5rem}.dsx-error-message{max-width:100%}}:host-context(.p-floatlabel){position:absolute;top:100%;left:0;width:100%;z-index:3;pointer-events:none}:host-context(.p-floatlabel) .dsx-error-slot{max-height:none;margin-top:.25rem;overflow:visible;opacity:0;transform:translateY(-3px);transition:opacity .16s ease,transform .18s ease}:host-context(.p-floatlabel) .dsx-error-slot.is-visible{opacity:1;transform:translateY(0)}:host-context(.p-floatlabel) .dsx-error-message{max-width:min(40ch,calc(100% - .25rem))}\n"], dependencies: [{ kind: "ngmodule", type: TagModule }, { kind: "component", type: i1.Tag, selector: "p-tag", inputs: ["styleClass", "severity", "value", "icon", "rounded"] }, { kind: "pipe", type: DecimalPipe, name: "number" }] });
|
|
181
183
|
}
|
|
182
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
184
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: AppMessageErrorComponent, decorators: [{
|
|
183
185
|
type: Component,
|
|
184
186
|
args: [{ selector: 'app-message-error', imports: [TagModule, DecimalPipe], template: "<div class=\"dsx-error-slot\" [class.is-visible]=\"isControlErrorVisible()\">\r\n @if (isControlErrorVisible()) {\r\n <div class=\"dsx-error-message\">\r\n <i\r\n class=\"pi pi-exclamation-triangle dsx-error-icon\"\r\n aria-hidden=\"true\"\r\n ></i>\r\n @if (control?.errors?.[\"required\"]) {\r\n 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?.[\"invalidDate\"]) {\r\n <strong>{{ control?.errors?.[\"invalidDate\"]?.message }}</strong>\r\n } @else if (control?.errors?.[\"minimumAge\"]) {\r\n <strong>{{ control?.errors?.[\"minimumAge\"]?.message }}</strong>\r\n } @else if (control?.errors?.[\"minlength\"]) {\r\n Debe tener al menos\r\n <strong>{{ control?.errors?.[\"minlength\"]?.requiredLength }}</strong>\r\n caracteres.\r\n } @else if (control?.errors?.[\"maxlength\"]) {\r\n Debe tener como m\u00E1ximo\r\n <strong>{{ control?.errors?.[\"maxlength\"]?.requiredLength }}</strong>\r\n caracteres.\r\n } @else if (control?.errors?.[\"min\"]) {\r\n El valor m\u00EDnimo permitido es\r\n <strong>{{ control?.errors?.[\"min\"]?.min }}</strong>\r\n } @else if (control?.errors?.[\"max\"]) {\r\n El valor m\u00E1ximo permitido es\r\n <strong>{{ control?.errors?.[\"max\"]?.max | number: \"1.2-2\" }}</strong>\r\n } @else if (control?.errors?.[\"email\"]) {\r\n Debe ser una direcci\u00F3n de correo v\u00E1lida.\r\n } @else if (control?.errors?.[\"pattern\"]) {\r\n El campo no tiene el formato requerido.\r\n } @else if (control?.errors?.[\"alreadyValueExists\"]) {\r\n <strong>{{ control?.errors?.[\"alreadyValueExists\"]?.message }}</strong>\r\n } @else if (control?.errors?.[\"invalidTemplateVariables\"]) {\r\n <div class=\"dsx-template-error\">\r\n <strong>\r\n {{ control?.errors?.[\"invalidTemplateVariables\"]?.message }}\r\n </strong>\r\n @if (control?.errors?.[\"invalidTemplateVariables\"]?.details?.length) {\r\n <span class=\"dsx-template-error-detail\">\r\n {{ control?.errors?.[\"invalidTemplateVariables\"]?.details?.[0] }}\r\n </span>\r\n }\r\n </div>\r\n } @else {\r\n Existe un error a\u00FAn no identificado.\r\n }\r\n </div>\r\n }\r\n</div>\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: [":host{display:block}.dsx-error-slot{max-height:0;margin-top:0;overflow:hidden;opacity:0;transition:max-height .22s ease,margin-top .22s ease,opacity .18s ease}.dsx-error-slot.is-visible{max-height:4.25rem;margin-top:.3rem;opacity:1}.dsx-error-message{--dsx-error-color: #b42318;--dsx-error-bg: #fff2f0;color:var(--dsx-error-color);font-family:Roboto,Montserrat,sans-serif;font-size:clamp(.75rem,.72rem + .12vw,.8125rem);font-weight:400;line-height:1.35;letter-spacing:.01em;display:flex;align-items:center;gap:.35rem;position:relative;z-index:1;padding:.2rem .45rem;border-left:3px solid var(--dsx-error-color);border-radius:0 6px 6px 0;background:var(--dsx-error-bg);box-shadow:0 1px 2px #00000014;max-width:min(40ch,100%);white-space:normal;word-break:break-word;transform:translateY(-2px);transition:transform .2s ease}.dsx-error-message strong{font-weight:500}.dsx-error-icon{flex-shrink:0;font-size:.78rem;line-height:1;color:var(--dsx-error-color)}.dsx-error-slot.is-visible .dsx-error-message{transform:translateY(0)}@media(max-width:640px){.dsx-error-slot.is-visible{max-height:5rem}.dsx-error-message{max-width:100%}}:host-context(.p-floatlabel){position:absolute;top:100%;left:0;width:100%;z-index:3;pointer-events:none}:host-context(.p-floatlabel) .dsx-error-slot{max-height:none;margin-top:.25rem;overflow:visible;opacity:0;transform:translateY(-3px);transition:opacity .16s ease,transform .18s ease}:host-context(.p-floatlabel) .dsx-error-slot.is-visible{opacity:1;transform:translateY(0)}:host-context(.p-floatlabel) .dsx-error-message{max-width:min(40ch,calc(100% - .25rem))}\n"] }]
|
|
185
187
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { control: [{
|
|
@@ -213,16 +215,16 @@ class DsxStatusToggle {
|
|
|
213
215
|
this.onChange(value);
|
|
214
216
|
this.onTouched();
|
|
215
217
|
}
|
|
216
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
217
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.
|
|
218
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DsxStatusToggle, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
219
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.12", type: DsxStatusToggle, isStandalone: true, selector: "dsx-status-toggle", inputs: { onLabel: { classPropertyName: "onLabel", publicName: "onLabel", isSignal: true, isRequired: false, transformFunction: null }, offLabel: { classPropertyName: "offLabel", publicName: "offLabel", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
218
220
|
{
|
|
219
221
|
provide: NG_VALUE_ACCESSOR,
|
|
220
222
|
useExisting: forwardRef(() => DsxStatusToggle),
|
|
221
223
|
multi: true,
|
|
222
224
|
},
|
|
223
|
-
], ngImport: i0, template: "<p-toggleButton\r\n fluid\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"change($event)\"\r\n [onLabel]=\"onLabel()\"\r\n [offLabel]=\"offLabel()\"\r\n [disabled]=\"disabled() || formDisabled\"\r\n [onIcon]=\"'pi pi-check-circle'\"\r\n [offIcon]=\"'pi pi-times-circle'\"\r\n class=\"dsx-status-toggle\"\r\n/>\r\n", styles: [":host ::ng-deep .dsx-status-toggle .p-button-label{font-weight:700!important}:host ::ng-deep .dsx-status-toggle.p-highlight,:host ::ng-deep .dsx-status-toggle.p-togglebutton-checked,:host ::ng-deep .dsx-status-toggle[aria-pressed=true],:host ::ng-deep .dsx-status-toggle.p-highlight .p-button-label,:host ::ng-deep .dsx-status-toggle.p-togglebutton-checked .p-button-label,:host ::ng-deep .dsx-status-toggle[aria-pressed=true] .p-button-label,:host ::ng-deep .dsx-status-toggle.p-highlight .p-button-icon,:host ::ng-deep .dsx-status-toggle.p-togglebutton-checked .p-button-icon,:host ::ng-deep .dsx-status-toggle[aria-pressed=true] .p-button-icon,:host ::ng-deep .dsx-status-toggle.p-highlight .p-button-icon:before,:host ::ng-deep .dsx-status-toggle.p-togglebutton-checked .p-button-icon:before,:host ::ng-deep .dsx-status-toggle[aria-pressed=true] .p-button-icon:before{color:#16a34a!important}:host ::ng-deep .dsx-status-toggle:not(.p-highlight):not(.p-togglebutton-checked),:host ::ng-deep .dsx-status-toggle[aria-pressed=false],:host ::ng-deep .dsx-status-toggle:not(.p-highlight):not(.p-togglebutton-checked) .p-button-label,:host ::ng-deep .dsx-status-toggle[aria-pressed=false] .p-button-label,:host ::ng-deep .dsx-status-toggle:not(.p-highlight):not(.p-togglebutton-checked) .p-button-icon,:host ::ng-deep .dsx-status-toggle[aria-pressed=false] .p-button-icon,:host ::ng-deep .dsx-status-toggle:not(.p-highlight):not(.p-togglebutton-checked) .p-button-icon:before,:host ::ng-deep .dsx-status-toggle[aria-pressed=false] .p-button-icon:before{color:#dc2626!important}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type:
|
|
225
|
+
], ngImport: i0, template: "<p-toggleButton\r\n fluid\r\n [ngModel]=\"value\"\r\n (ngModelChange)=\"change($event)\"\r\n [onLabel]=\"onLabel()\"\r\n [offLabel]=\"offLabel()\"\r\n [disabled]=\"disabled() || formDisabled\"\r\n [onIcon]=\"'pi pi-check-circle'\"\r\n [offIcon]=\"'pi pi-times-circle'\"\r\n class=\"dsx-status-toggle\"\r\n/>\r\n", styles: [":host ::ng-deep .dsx-status-toggle .p-button-label{font-weight:700!important}:host ::ng-deep .dsx-status-toggle.p-highlight,:host ::ng-deep .dsx-status-toggle.p-togglebutton-checked,:host ::ng-deep .dsx-status-toggle[aria-pressed=true],:host ::ng-deep .dsx-status-toggle.p-highlight .p-button-label,:host ::ng-deep .dsx-status-toggle.p-togglebutton-checked .p-button-label,:host ::ng-deep .dsx-status-toggle[aria-pressed=true] .p-button-label,:host ::ng-deep .dsx-status-toggle.p-highlight .p-button-icon,:host ::ng-deep .dsx-status-toggle.p-togglebutton-checked .p-button-icon,:host ::ng-deep .dsx-status-toggle[aria-pressed=true] .p-button-icon,:host ::ng-deep .dsx-status-toggle.p-highlight .p-button-icon:before,:host ::ng-deep .dsx-status-toggle.p-togglebutton-checked .p-button-icon:before,:host ::ng-deep .dsx-status-toggle[aria-pressed=true] .p-button-icon:before{color:#16a34a!important}:host ::ng-deep .dsx-status-toggle:not(.p-highlight):not(.p-togglebutton-checked),:host ::ng-deep .dsx-status-toggle[aria-pressed=false],:host ::ng-deep .dsx-status-toggle:not(.p-highlight):not(.p-togglebutton-checked) .p-button-label,:host ::ng-deep .dsx-status-toggle[aria-pressed=false] .p-button-label,:host ::ng-deep .dsx-status-toggle:not(.p-highlight):not(.p-togglebutton-checked) .p-button-icon,:host ::ng-deep .dsx-status-toggle[aria-pressed=false] .p-button-icon,:host ::ng-deep .dsx-status-toggle:not(.p-highlight):not(.p-togglebutton-checked) .p-button-icon:before,:host ::ng-deep .dsx-status-toggle[aria-pressed=false] .p-button-icon:before{color:#dc2626!important}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ToggleButtonModule }, { kind: "component", type: i2.ToggleButton, selector: "p-toggleButton, p-togglebutton, p-toggle-button", inputs: ["onLabel", "offLabel", "onIcon", "offIcon", "ariaLabel", "ariaLabelledBy", "styleClass", "inputId", "tabindex", "iconPos", "autofocus", "size", "allowEmpty", "fluid"], outputs: ["onChange"] }] });
|
|
224
226
|
}
|
|
225
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
227
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DsxStatusToggle, decorators: [{
|
|
226
228
|
type: Component,
|
|
227
229
|
args: [{ selector: 'dsx-status-toggle', imports: [FormsModule, ToggleButtonModule], providers: [
|
|
228
230
|
{
|
|
@@ -241,8 +243,8 @@ class DsxEnableDisable {
|
|
|
241
243
|
// El componente es solo lectura; no necesita propagar cambios
|
|
242
244
|
registerOnChange(_fn) { }
|
|
243
245
|
registerOnTouched(_fn) { }
|
|
244
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
245
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.
|
|
246
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DsxEnableDisable, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
247
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.12", type: DsxEnableDisable, isStandalone: true, selector: "dsx-checkbox", providers: [
|
|
246
248
|
{
|
|
247
249
|
provide: NG_VALUE_ACCESSOR,
|
|
248
250
|
useExisting: forwardRef(() => DsxEnableDisable),
|
|
@@ -250,7 +252,7 @@ class DsxEnableDisable {
|
|
|
250
252
|
},
|
|
251
253
|
], ngImport: i0, template: "<!-- From Uiverse.io by adamgiebl -->\r\n<div class=\"container\">\r\n <input type=\"checkbox\" [checked]=\"checked\" disabled />\r\n <div class=\"checkmark\"></div>\r\n</div>\r\n", styles: [".container input{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.container{cursor:not-allowed;font-size:20px;line-height:1;-webkit-user-select:none;user-select:none}.checkmark{position:relative;display:block;box-sizing:border-box;height:1.1em;width:1.1em;background-color:#ccc;transition:background-color .3s,box-shadow .3s,transform .3s;border-radius:3px}.container input:checked~.checkmark{background-color:#47da99;box-shadow:inset 0 0 0 1px #ffffff59,0 2px 8px #47da9980;animation:pop .5s;animation-direction:alternate}.container input:disabled~.checkmark{opacity:1}.checkmark:after{content:\"\";position:absolute;display:none}.container input:checked~.checkmark:after{display:block}.container .checkmark:after{left:50%;top:50%;width:.28em;height:.58em;border:solid white;border-width:0 .18em .18em 0;transform:translate(-50%,-50%) rotate(45deg);filter:drop-shadow(0 0 1px rgba(0,0,0,.2))}@keyframes pop{0%{transform:scale(1)}50%{transform:scale(.9)}to{transform:scale(1)}}\n"] });
|
|
252
254
|
}
|
|
253
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
255
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DsxEnableDisable, decorators: [{
|
|
254
256
|
type: Component,
|
|
255
257
|
args: [{ selector: 'dsx-checkbox', imports: [], providers: [
|
|
256
258
|
{
|
|
@@ -304,8 +306,8 @@ class FileComponent {
|
|
|
304
306
|
setDisabledState(isDisabled) {
|
|
305
307
|
this.disabled.set(isDisabled);
|
|
306
308
|
}
|
|
307
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
308
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.
|
|
309
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: FileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
310
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.12", type: FileComponent, isStandalone: true, selector: "dsx-file-upload", inputs: { accept: { classPropertyName: "accept", publicName: "accept", isSignal: true, isRequired: false, transformFunction: null }, maxFileSize: { classPropertyName: "maxFileSize", publicName: "maxFileSize", isSignal: true, isRequired: false, transformFunction: null }, invalidSummary: { classPropertyName: "invalidSummary", publicName: "invalidSummary", isSignal: true, isRequired: false, transformFunction: null }, invalidDetail: { classPropertyName: "invalidDetail", publicName: "invalidDetail", isSignal: true, isRequired: false, transformFunction: null }, invalidSizeSummary: { classPropertyName: "invalidSizeSummary", publicName: "invalidSizeSummary", isSignal: true, isRequired: false, transformFunction: null }, invalidSizeDetail: { classPropertyName: "invalidSizeDetail", publicName: "invalidSizeDetail", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
309
311
|
{
|
|
310
312
|
provide: NG_VALUE_ACCESSOR,
|
|
311
313
|
useExisting: forwardRef(() => FileComponent),
|
|
@@ -313,7 +315,7 @@ class FileComponent {
|
|
|
313
315
|
},
|
|
314
316
|
], viewQueries: [{ propertyName: "fileUpload", first: true, predicate: ["fileUpload"], descendants: true, isSignal: true }], ngImport: i0, template: "<p-fileUpload\r\n #fileUpload\r\n mode=\"basic\"\r\n [accept]=\"accept()\"\r\n [maxFileSize]=\"maxFileSize() * 1024 * 1024\"\r\n [invalidFileTypeMessageSummary]=\"invalidSummary()\"\r\n [invalidFileTypeMessageDetail]=\"invalidDetail()\"\r\n [invalidFileSizeMessageSummary]=\"invalidSizeSummary()\"\r\n [invalidFileSizeMessageDetail]=\"invalidSizeDetail()\"\r\n (onSelect)=\"onSelect($event)\"\r\n [disabled]=\"disabled()\"\r\n/>\r\n", styles: [""], dependencies: [{ kind: "component", type: FileUpload, selector: "p-fileupload, p-fileUpload", inputs: ["name", "url", "method", "multiple", "accept", "disabled", "auto", "withCredentials", "maxFileSize", "invalidFileSizeMessageSummary", "invalidFileSizeMessageDetail", "invalidFileTypeMessageSummary", "invalidFileTypeMessageDetail", "invalidFileLimitMessageDetail", "invalidFileLimitMessageSummary", "style", "styleClass", "previewWidth", "chooseLabel", "uploadLabel", "cancelLabel", "chooseIcon", "uploadIcon", "cancelIcon", "showUploadButton", "showCancelButton", "mode", "headers", "customUpload", "fileLimit", "uploadStyleClass", "cancelStyleClass", "removeStyleClass", "chooseStyleClass", "chooseButtonProps", "uploadButtonProps", "cancelButtonProps", "files"], outputs: ["onBeforeUpload", "onSend", "onUpload", "onError", "onClear", "onRemove", "onSelect", "onProgress", "uploadHandler", "onImageError", "onRemoveUploadedFile"] }] });
|
|
315
317
|
}
|
|
316
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
318
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: FileComponent, decorators: [{
|
|
317
319
|
type: Component,
|
|
318
320
|
args: [{ selector: 'dsx-file-upload', imports: [FileUpload], providers: [
|
|
319
321
|
{
|
|
@@ -733,16 +735,16 @@ class JsonViewerComponent {
|
|
|
733
735
|
return value;
|
|
734
736
|
}
|
|
735
737
|
}
|
|
736
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
737
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.
|
|
738
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: JsonViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
739
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.12", type: JsonViewerComponent, isStandalone: true, selector: "app-json-viewer", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, textKey: { classPropertyName: "textKey", publicName: "textKey", isSignal: true, isRequired: false, transformFunction: null }, activeKey: { classPropertyName: "activeKey", publicName: "activeKey", isSignal: true, isRequired: false, transformFunction: null }, itemsKey: { classPropertyName: "itemsKey", publicName: "itemsKey", isSignal: true, isRequired: false, transformFunction: null }, showStatusAsSymbol: { classPropertyName: "showStatusAsSymbol", publicName: "showStatusAsSymbol", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, providers: [
|
|
738
740
|
{
|
|
739
741
|
provide: NG_VALUE_ACCESSOR,
|
|
740
742
|
useExisting: forwardRef(() => JsonViewerComponent),
|
|
741
743
|
multi: true,
|
|
742
744
|
},
|
|
743
|
-
], ngImport: i0, template: "<p-tree\r\n [value]=\"nodes\"\r\n class=\"json-tree w-full\"\r\n selectionMode=\"single\"\r\n [(selection)]=\"selectedNode\"\r\n [highlightOnSelect]=\"false\"\r\n (onNodeSelect)=\"onNodeSelect($event)\"\r\n>\r\n <ng-template let-node pTemplate=\"default\">\r\n <div class=\"json-node\">\r\n <ng-container *ngIf=\"getNodeMeta(node) as meta; else defaultLabel\">\r\n <ng-container [ngSwitch]=\"meta.kind\">\r\n <ng-container *ngSwitchCase=\"'compact-item'\">\r\n <span class=\"json-prefix\">{{ meta.indexLabel || \"\" }}</span>\r\n <span class=\"json-key\"> Texto: </span>\r\n <ng-container *ngIf=\"isEditMode(); else compactTextView\">\r\n <input\r\n type=\"text\"\r\n class=\"json-text-input\"\r\n [class.json-text-inactive]=\"meta.activeBoolean === false\"\r\n [value]=\"meta.text || ''\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (click)=\"$event.stopPropagation()\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (input)=\"\r\n onTextEdit(\r\n $any(meta.textPath),\r\n $any($event.target).value,\r\n meta\r\n )\r\n \"\r\n (blur)=\"onTextBlur()\"\r\n />\r\n </ng-container>\r\n <ng-template #compactTextView>\r\n <span [class.json-text-inactive]=\"meta.activeBoolean === false\">{{\r\n meta.text || \"\"\r\n }}</span>\r\n </ng-template>\r\n <span class=\"json-separator\"> | </span>\r\n <span class=\"json-status\">{{ meta.activeVisual || \"\" }}</span>\r\n <input\r\n *ngIf=\"isEditMode()\"\r\n type=\"checkbox\"\r\n class=\"json-checkbox\"\r\n [checked]=\"meta.activeBoolean === true\"\r\n [disabled]=\"meta.activeBoolean === null\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"\r\n onActiveToggle(\r\n $any(meta.activePath),\r\n $any($event.target).checked,\r\n meta\r\n )\r\n \"\r\n />\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'group-active'\">\r\n <span>{{ meta.title || \"\" }}</span>\r\n <span class=\"json-separator\"> | </span>\r\n <span class=\"json-status\">{{ meta.activeVisual || \"\" }}</span>\r\n <input\r\n *ngIf=\"isEditMode() && meta.activePath\"\r\n type=\"checkbox\"\r\n class=\"json-checkbox\"\r\n [checked]=\"meta.activeBoolean === true\"\r\n [disabled]=\"meta.activeBoolean === null\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"\r\n onActiveToggle(\r\n $any(meta.activePath),\r\n $any($event.target).checked,\r\n meta\r\n )\r\n \"\r\n />\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'text-primitive'\">\r\n <span>{{ meta.key || \"\" }}:</span>\r\n <ng-container *ngIf=\"isEditMode(); else textPrimitiveView\">\r\n <input\r\n type=\"text\"\r\n class=\"json-text-input\"\r\n [value]=\"meta.value || ''\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (click)=\"$event.stopPropagation()\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (input)=\"\r\n onTextEdit($any(meta.path), $any($event.target).value, meta)\r\n \"\r\n (blur)=\"onTextBlur()\"\r\n />\r\n </ng-container>\r\n <ng-template #textPrimitiveView>\r\n <span>{{ meta.value || \"\" }}</span>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'active-primitive'\">\r\n <span>{{ meta.key || \"\" }}:</span>\r\n <span class=\"json-status\">{{ meta.activeVisual || \"\" }}</span>\r\n <input\r\n *ngIf=\"isEditMode()\"\r\n type=\"checkbox\"\r\n class=\"json-checkbox\"\r\n [checked]=\"meta.activeBoolean === true\"\r\n [disabled]=\"meta.activeBoolean === null\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"\r\n onActiveToggle(\r\n $any(meta.path),\r\n $any($event.target).checked,\r\n meta\r\n )\r\n \"\r\n />\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n {{ node.label }}\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #defaultLabel>\r\n {{ node.label }}\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n</p-tree>\r\n", styles: [":host ::ng-deep .json-tree .p-tree-node-content,:host ::ng-deep .json-tree .p-treenode-content{padding:.02rem .15rem!important;display:flex;align-items:center;width:100%;min-width:0}:host ::ng-deep .json-tree .p-tree-node-label,:host ::ng-deep .json-tree .p-tree-node-label>span{flex:1 1 0;min-width:0;display:flex}:host ::ng-deep .json-tree .json-node{display:flex;align-items:center;gap:.25rem;width:100%;min-width:0}:host ::ng-deep .json-tree .json-prefix,:host ::ng-deep .json-tree .json-key,:host ::ng-deep .json-tree .json-separator,:host ::ng-deep .json-tree .json-status{white-space:nowrap;flex-shrink:0}:host ::ng-deep .json-tree .json-text-input{flex:1 1 0;min-width:0;border:1px solid #cbd5e1;border-radius:.25rem;padding:.15rem .5rem;font-size:.875rem}:host ::ng-deep .json-tree .json-text-inactive{color:#8b5e61}:host ::ng-deep .json-tree input.json-text-input.json-text-inactive{background-color:#f9f2f2;border-color:#e5c8cb}:host ::ng-deep .json-tree .json-checkbox{width:.9rem;height:.9rem;cursor:pointer;flex-shrink:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$
|
|
745
|
+
], ngImport: i0, template: "<p-tree\r\n [value]=\"nodes\"\r\n class=\"json-tree w-full\"\r\n selectionMode=\"single\"\r\n [(selection)]=\"selectedNode\"\r\n [highlightOnSelect]=\"false\"\r\n (onNodeSelect)=\"onNodeSelect($event)\"\r\n>\r\n <ng-template let-node pTemplate=\"default\">\r\n <div class=\"json-node\">\r\n <ng-container *ngIf=\"getNodeMeta(node) as meta; else defaultLabel\">\r\n <ng-container [ngSwitch]=\"meta.kind\">\r\n <ng-container *ngSwitchCase=\"'compact-item'\">\r\n <span class=\"json-prefix\">{{ meta.indexLabel || \"\" }}</span>\r\n <span class=\"json-key\"> Texto: </span>\r\n <ng-container *ngIf=\"isEditMode(); else compactTextView\">\r\n <input\r\n type=\"text\"\r\n class=\"json-text-input\"\r\n [class.json-text-inactive]=\"meta.activeBoolean === false\"\r\n [value]=\"meta.text || ''\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (click)=\"$event.stopPropagation()\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (input)=\"\r\n onTextEdit(\r\n $any(meta.textPath),\r\n $any($event.target).value,\r\n meta\r\n )\r\n \"\r\n (blur)=\"onTextBlur()\"\r\n />\r\n </ng-container>\r\n <ng-template #compactTextView>\r\n <span [class.json-text-inactive]=\"meta.activeBoolean === false\">{{\r\n meta.text || \"\"\r\n }}</span>\r\n </ng-template>\r\n <span class=\"json-separator\"> | </span>\r\n <span class=\"json-status\">{{ meta.activeVisual || \"\" }}</span>\r\n <input\r\n *ngIf=\"isEditMode()\"\r\n type=\"checkbox\"\r\n class=\"json-checkbox\"\r\n [checked]=\"meta.activeBoolean === true\"\r\n [disabled]=\"meta.activeBoolean === null\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"\r\n onActiveToggle(\r\n $any(meta.activePath),\r\n $any($event.target).checked,\r\n meta\r\n )\r\n \"\r\n />\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'group-active'\">\r\n <span>{{ meta.title || \"\" }}</span>\r\n <span class=\"json-separator\"> | </span>\r\n <span class=\"json-status\">{{ meta.activeVisual || \"\" }}</span>\r\n <input\r\n *ngIf=\"isEditMode() && meta.activePath\"\r\n type=\"checkbox\"\r\n class=\"json-checkbox\"\r\n [checked]=\"meta.activeBoolean === true\"\r\n [disabled]=\"meta.activeBoolean === null\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"\r\n onActiveToggle(\r\n $any(meta.activePath),\r\n $any($event.target).checked,\r\n meta\r\n )\r\n \"\r\n />\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'text-primitive'\">\r\n <span>{{ meta.key || \"\" }}:</span>\r\n <ng-container *ngIf=\"isEditMode(); else textPrimitiveView\">\r\n <input\r\n type=\"text\"\r\n class=\"json-text-input\"\r\n [value]=\"meta.value || ''\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (click)=\"$event.stopPropagation()\"\r\n (keydown)=\"$event.stopPropagation()\"\r\n (input)=\"\r\n onTextEdit($any(meta.path), $any($event.target).value, meta)\r\n \"\r\n (blur)=\"onTextBlur()\"\r\n />\r\n </ng-container>\r\n <ng-template #textPrimitiveView>\r\n <span>{{ meta.value || \"\" }}</span>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchCase=\"'active-primitive'\">\r\n <span>{{ meta.key || \"\" }}:</span>\r\n <span class=\"json-status\">{{ meta.activeVisual || \"\" }}</span>\r\n <input\r\n *ngIf=\"isEditMode()\"\r\n type=\"checkbox\"\r\n class=\"json-checkbox\"\r\n [checked]=\"meta.activeBoolean === true\"\r\n [disabled]=\"meta.activeBoolean === null\"\r\n (mousedown)=\"$event.stopPropagation()\"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"\r\n onActiveToggle(\r\n $any(meta.path),\r\n $any($event.target).checked,\r\n meta\r\n )\r\n \"\r\n />\r\n </ng-container>\r\n\r\n <ng-container *ngSwitchDefault>\r\n {{ node.label }}\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #defaultLabel>\r\n {{ node.label }}\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n</p-tree>\r\n", styles: [":host ::ng-deep .json-tree .p-tree-node-content,:host ::ng-deep .json-tree .p-treenode-content{padding:.02rem .15rem!important;display:flex;align-items:center;width:100%;min-width:0}:host ::ng-deep .json-tree .p-tree-node-label,:host ::ng-deep .json-tree .p-tree-node-label>span{flex:1 1 0;min-width:0;display:flex}:host ::ng-deep .json-tree .json-node{display:flex;align-items:center;gap:.25rem;width:100%;min-width:0}:host ::ng-deep .json-tree .json-prefix,:host ::ng-deep .json-tree .json-key,:host ::ng-deep .json-tree .json-separator,:host ::ng-deep .json-tree .json-status{white-space:nowrap;flex-shrink:0}:host ::ng-deep .json-tree .json-text-input{flex:1 1 0;min-width:0;border:1px solid #cbd5e1;border-radius:.25rem;padding:.15rem .5rem;font-size:.875rem}:host ::ng-deep .json-tree .json-text-inactive{color:#8b5e61}:host ::ng-deep .json-tree input.json-text-input.json-text-inactive{background-color:#f9f2f2;border-color:#e5c8cb}:host ::ng-deep .json-tree .json-checkbox{width:.9rem;height:.9rem;cursor:pointer;flex-shrink:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "ngmodule", type: TreeModule }, { kind: "component", type: i2$1.Tree, selector: "p-tree", inputs: ["value", "selectionMode", "loadingMode", "selection", "styleClass", "contextMenu", "contextMenuSelectionMode", "contextMenuSelection", "draggableScope", "droppableScope", "draggableNodes", "droppableNodes", "metaKeySelection", "propagateSelectionUp", "propagateSelectionDown", "loading", "loadingIcon", "emptyMessage", "ariaLabel", "togglerAriaLabel", "ariaLabelledBy", "validateDrop", "filter", "filterInputAutoFocus", "filterBy", "filterMode", "filterOptions", "filterPlaceholder", "filteredNodes", "filterLocale", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "indentation", "_templateMap", "trackBy", "highlightOnSelect"], outputs: ["selectionChange", "contextMenuSelectionChange", "onNodeSelect", "onNodeUnselect", "onNodeExpand", "onNodeCollapse", "onNodeContextMenuSelect", "onNodeDoubleClick", "onNodeDrop", "onLazyLoad", "onScroll", "onScrollIndexChange", "onFilter"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }] });
|
|
744
746
|
}
|
|
745
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
747
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: JsonViewerComponent, decorators: [{
|
|
746
748
|
type: Component,
|
|
747
749
|
args: [{ selector: 'app-json-viewer', standalone: true, imports: [CommonModule, TreeModule], providers: [
|
|
748
750
|
{
|
|
@@ -813,10 +815,10 @@ class DateIndicator {
|
|
|
813
815
|
this.icon = 'pi pi-times-circle';
|
|
814
816
|
this.tooltip = 'Última actualización: Sin valor • 0 días';
|
|
815
817
|
}
|
|
816
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
817
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.
|
|
818
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DateIndicator, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
819
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.12", type: DateIndicator, isStandalone: true, selector: "dsx-date-indicator", inputs: { date: { classPropertyName: "date", publicName: "date", isSignal: true, isRequired: false, transformFunction: null }, minDays: { classPropertyName: "minDays", publicName: "minDays", isSignal: true, isRequired: false, transformFunction: null }, maxDays: { classPropertyName: "maxDays", publicName: "maxDays", isSignal: true, isRequired: false, transformFunction: null } }, usesOnChanges: true, ngImport: i0, template: "<p-tag\r\n [severity]=\"severity\"\r\n [icon]=\"icon\"\r\n [value]=\"status\"\r\n [pTooltip]=\"tooltip\"\r\n>\r\n</p-tag>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: TagModule }, { kind: "component", type: i1.Tag, selector: "p-tag", inputs: ["styleClass", "severity", "value", "icon", "rounded"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i1$3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "showOnEllipsis", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip", "pTooltipPT", "pTooltipUnstyled"] }] });
|
|
818
820
|
}
|
|
819
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
821
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DateIndicator, decorators: [{
|
|
820
822
|
type: Component,
|
|
821
823
|
args: [{ selector: 'dsx-date-indicator', imports: [TagModule, TooltipModule], template: "<p-tag\r\n [severity]=\"severity\"\r\n [icon]=\"icon\"\r\n [value]=\"status\"\r\n [pTooltip]=\"tooltip\"\r\n>\r\n</p-tag>\r\n" }]
|
|
822
824
|
}], propDecorators: { date: [{ type: i0.Input, args: [{ isSignal: true, alias: "date", required: false }] }], minDays: [{ type: i0.Input, args: [{ isSignal: true, alias: "minDays", required: false }] }], maxDays: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxDays", required: false }] }] } });
|
|
@@ -872,10 +874,10 @@ class KpicardComponent {
|
|
|
872
874
|
getSelectedOption() {
|
|
873
875
|
return this.options[this.option()] ?? this.options.currency; // Si no existe, usa `currency`
|
|
874
876
|
}
|
|
875
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
876
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.
|
|
877
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: KpicardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
878
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.12", 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 [countUpOptions]=\"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}.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: "directive", type: CountUpDirective, selector: "[countUp]", inputs: ["countUp", "countUpOptions", "reanimateOnClick"], outputs: ["complete"] }] });
|
|
877
879
|
}
|
|
878
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
880
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: KpicardComponent, decorators: [{
|
|
879
881
|
type: Component,
|
|
880
882
|
args: [{ selector: 'app-kpicard', imports: [CountUpDirective], template: "<div [class]=\"`kpi-card ${color()} ${theme()}-theme`\">\r\n <div class=\"kpi-container\">\r\n <span\r\n [countUp]=\"valor()\"\r\n [countUpOptions]=\"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}.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"] }]
|
|
881
883
|
}], propDecorators: { option: [{ type: i0.Input, args: [{ isSignal: true, alias: "option", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], iconType: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconType", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], valor: [{ type: i0.Input, args: [{ isSignal: true, alias: "valor", required: false }] }], theme: [{ type: i0.Input, args: [{ isSignal: true, alias: "theme", required: false }] }] } });
|
|
@@ -956,10 +958,10 @@ class DocxPreviewComponent {
|
|
|
956
958
|
}
|
|
957
959
|
this.visibleChange.emit(false);
|
|
958
960
|
}
|
|
959
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
960
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.
|
|
961
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DocxPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
962
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.12", type: DocxPreviewComponent, isStandalone: true, selector: "app-docx-preview", inputs: { visible: { classPropertyName: "visible", publicName: "visible", isSignal: false, isRequired: false, transformFunction: null }, blob: { classPropertyName: "blob", publicName: "blob", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visibleChange: "visibleChange" }, viewQueries: [{ propertyName: "view", first: true, predicate: ["viewer"], descendants: true, isSignal: true }], ngImport: i0, template: "<p-dialog\r\n [visible]=\"visible\"\r\n (onHide)=\"onHide()\"\r\n [modal]=\"true\"\r\n [breakpoints]=\"{ '1199px': '75vw', '575px': '90vw' }\"\r\n [style]=\"{ width: '80vw' }\"\r\n [draggable]=\"false\"\r\n [resizable]=\"false\"\r\n [closable]=\"true\"\r\n [maximizable]=\"true\"\r\n>\r\n <ng-template #header>\r\n <div class=\"flex justify-content-center align-items-center gap-2 px-2\">\r\n <p-avatar image=\"icon2/word-2019.png\" />\r\n <span class=\"font-bold\">Vista preliminar del documento</span>\r\n </div>\r\n </ng-template>\r\n <div #viewer></div>\r\n</p-dialog>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: DialogModule }, { kind: "component", type: i2$2.Dialog, selector: "p-dialog", inputs: ["hostName", "header", "draggable", "resizable", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "maskMotionOptions", "motionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "closeButtonProps", "maximizeButtonProps", "visible", "style", "position", "role", "appendTo", "content", "contentTemplate", "footerTemplate", "closeIconTemplate", "maximizeIconTemplate", "minimizeIconTemplate", "headlessTemplate"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "ngmodule", type: AvatarModule }, { kind: "component", type: i2$3.Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }] });
|
|
961
963
|
}
|
|
962
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
964
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DocxPreviewComponent, decorators: [{
|
|
963
965
|
type: Component,
|
|
964
966
|
args: [{ selector: 'app-docx-preview', imports: [DialogModule, AvatarModule], template: "<p-dialog\r\n [visible]=\"visible\"\r\n (onHide)=\"onHide()\"\r\n [modal]=\"true\"\r\n [breakpoints]=\"{ '1199px': '75vw', '575px': '90vw' }\"\r\n [style]=\"{ width: '80vw' }\"\r\n [draggable]=\"false\"\r\n [resizable]=\"false\"\r\n [closable]=\"true\"\r\n [maximizable]=\"true\"\r\n>\r\n <ng-template #header>\r\n <div class=\"flex justify-content-center align-items-center gap-2 px-2\">\r\n <p-avatar image=\"icon2/word-2019.png\" />\r\n <span class=\"font-bold\">Vista preliminar del documento</span>\r\n </div>\r\n </ng-template>\r\n <div #viewer></div>\r\n</p-dialog>\r\n" }]
|
|
965
967
|
}], ctorParameters: () => [], propDecorators: { view: [{ type: i0.ViewChild, args: ['viewer', { isSignal: true }] }], visible: [{
|
|
@@ -1012,10 +1014,10 @@ class PdfPreviewComponent {
|
|
|
1012
1014
|
ngOnDestroy() {
|
|
1013
1015
|
this.limpiarUrlAnterior();
|
|
1014
1016
|
}
|
|
1015
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
1016
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
1017
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: PdfPreviewComponent, deps: [{ token: i1$4.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
|
|
1018
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", type: PdfPreviewComponent, isStandalone: true, selector: "app-pdf-preview", inputs: { visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, blob: { classPropertyName: "blob", publicName: "blob", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visible: "visibleChange" }, ngImport: i0, template: "<p-dialog\r\n header=\"Vista previa del documento de soporte\"\r\n [(visible)]=\"visible\"\r\n [style]=\"{ width: '80vw', height: '90vh' }\"\r\n [closable]=\"true\"\r\n [maximizable]=\"true\"\r\n>\r\n @if (pdfUrl) {\r\n <iframe\r\n [src]=\"pdfUrl\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n style=\"border: none\"\r\n ></iframe>\r\n }\r\n</p-dialog>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: DialogModule }, { kind: "component", type: i2$2.Dialog, selector: "p-dialog", inputs: ["hostName", "header", "draggable", "resizable", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "maskMotionOptions", "motionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "closeButtonProps", "maximizeButtonProps", "visible", "style", "position", "role", "appendTo", "content", "contentTemplate", "footerTemplate", "closeIconTemplate", "maximizeIconTemplate", "minimizeIconTemplate", "headlessTemplate"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }] });
|
|
1017
1019
|
}
|
|
1018
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
1020
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: PdfPreviewComponent, decorators: [{
|
|
1019
1021
|
type: Component,
|
|
1020
1022
|
args: [{ selector: 'app-pdf-preview', imports: [DialogModule], template: "<p-dialog\r\n header=\"Vista previa del documento de soporte\"\r\n [(visible)]=\"visible\"\r\n [style]=\"{ width: '80vw', height: '90vh' }\"\r\n [closable]=\"true\"\r\n [maximizable]=\"true\"\r\n>\r\n @if (pdfUrl) {\r\n <iframe\r\n [src]=\"pdfUrl\"\r\n width=\"100%\"\r\n height=\"100%\"\r\n style=\"border: none\"\r\n ></iframe>\r\n }\r\n</p-dialog>\r\n" }]
|
|
1021
1023
|
}], ctorParameters: () => [{ type: i1$4.DomSanitizer }], propDecorators: { visible: [{ type: i0.Input, args: [{ isSignal: true, alias: "visible", required: false }] }, { type: i0.Output, args: ["visibleChange"] }], blob: [{ type: i0.Input, args: [{ isSignal: true, alias: "blob", required: false }] }] } });
|
|
@@ -1074,10 +1076,10 @@ class TemplateHighlight {
|
|
|
1074
1076
|
escapeAttr(text) {
|
|
1075
1077
|
return text.replace(/"/g, '"');
|
|
1076
1078
|
}
|
|
1077
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
1078
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
1079
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: TemplateHighlight, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1080
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", type: TemplateHighlight, isStandalone: true, selector: "dsx-template-highlight", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, allowedKeys: { classPropertyName: "allowedKeys", publicName: "allowedKeys", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<p-tabs value=\"0\">\r\n <p-tablist>\r\n <p-tab value=\"0\">\r\n <i class=\"pi pi-file-edit tab-icon\" aria-hidden=\"true\"></i>\r\n <span>Preliminar</span>\r\n </p-tab>\r\n <p-tab value=\"1\">\r\n <i class=\"pi pi-list tab-icon\" aria-hidden=\"true\"></i>\r\n <span>Variables</span>\r\n </p-tab>\r\n </p-tablist>\r\n <p-tabpanels>\r\n <p-tabpanel value=\"0\">\r\n <div class=\"template-highlight\" [innerHTML]=\"highlightedText()\"></div>\r\n </p-tabpanel>\r\n <p-tabpanel value=\"1\">\r\n @if (allowedKeys().length) {\r\n <ul class=\"template-vars-list\">\r\n @for (key of allowedKeys(); track key) {\r\n <li>\r\n <strong>{{ key }}</strong>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </p-tabpanel>\r\n </p-tabpanels>\r\n</p-tabs>\r\n", styles: [":host .template-highlight{white-space:pre-wrap;font-family:monospace;text-align:justify}:host .template-vars-list{margin:0 0 .65rem;padding-left:1rem}:host .template-vars-list li{margin:.15rem 0}:host .tab-icon{margin-right:.45rem}:host ::ng-deep .var-valid{color:#0a7a0a;background:#e6ffe6;border-radius:3px;padding:0 2px;font-weight:600}:host ::ng-deep .var-invalid{color:#b30000;background:#ffe6e6;border-radius:3px;padding:0 2px;font-weight:600;text-decoration:underline wavy #b30000;cursor:help}:host ::ng-deep .var-brace-error{color:#cc7a00;background:#fff2cc;border-radius:3px;padding:0 2px;font-weight:600}\n"], dependencies: [{ kind: "ngmodule", type: TabsModule }, { kind: "component", type: i1$5.Tabs, selector: "p-tabs", inputs: ["value", "scrollable", "lazy", "selectOnFocus", "showNavigators", "tabindex"], outputs: ["valueChange"] }, { kind: "component", type: i1$5.TabPanels, selector: "p-tabpanels" }, { kind: "component", type: i1$5.TabPanel, selector: "p-tabpanel", inputs: ["lazy", "value"], outputs: ["valueChange"] }, { kind: "component", type: i1$5.TabList, selector: "p-tablist" }, { kind: "component", type: i1$5.Tab, selector: "p-tab", inputs: ["value", "disabled"], outputs: ["valueChange"] }] });
|
|
1079
1081
|
}
|
|
1080
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
1082
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: TemplateHighlight, decorators: [{
|
|
1081
1083
|
type: Component,
|
|
1082
1084
|
args: [{ selector: 'dsx-template-highlight', imports: [TabsModule], template: "<p-tabs value=\"0\">\r\n <p-tablist>\r\n <p-tab value=\"0\">\r\n <i class=\"pi pi-file-edit tab-icon\" aria-hidden=\"true\"></i>\r\n <span>Preliminar</span>\r\n </p-tab>\r\n <p-tab value=\"1\">\r\n <i class=\"pi pi-list tab-icon\" aria-hidden=\"true\"></i>\r\n <span>Variables</span>\r\n </p-tab>\r\n </p-tablist>\r\n <p-tabpanels>\r\n <p-tabpanel value=\"0\">\r\n <div class=\"template-highlight\" [innerHTML]=\"highlightedText()\"></div>\r\n </p-tabpanel>\r\n <p-tabpanel value=\"1\">\r\n @if (allowedKeys().length) {\r\n <ul class=\"template-vars-list\">\r\n @for (key of allowedKeys(); track key) {\r\n <li>\r\n <strong>{{ key }}</strong>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </p-tabpanel>\r\n </p-tabpanels>\r\n</p-tabs>\r\n", styles: [":host .template-highlight{white-space:pre-wrap;font-family:monospace;text-align:justify}:host .template-vars-list{margin:0 0 .65rem;padding-left:1rem}:host .template-vars-list li{margin:.15rem 0}:host .tab-icon{margin-right:.45rem}:host ::ng-deep .var-valid{color:#0a7a0a;background:#e6ffe6;border-radius:3px;padding:0 2px;font-weight:600}:host ::ng-deep .var-invalid{color:#b30000;background:#ffe6e6;border-radius:3px;padding:0 2px;font-weight:600;text-decoration:underline wavy #b30000;cursor:help}:host ::ng-deep .var-brace-error{color:#cc7a00;background:#fff2cc;border-radius:3px;padding:0 2px;font-weight:600}\n"] }]
|
|
1083
1085
|
}], propDecorators: { text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }], allowedKeys: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowedKeys", required: false }] }] } });
|
|
@@ -1139,6 +1141,7 @@ const ENVIRONMENT_SCHEMA = {
|
|
|
1139
1141
|
myAppUrl: 'string',
|
|
1140
1142
|
SeguridadITApiUrl: 'string',
|
|
1141
1143
|
tokenName: 'string',
|
|
1144
|
+
tokenPurpose: 'string',
|
|
1142
1145
|
tokenNameRF: 'string',
|
|
1143
1146
|
sessionStatus: 'string',
|
|
1144
1147
|
refreshTokenExpiry: 'string',
|
|
@@ -1463,7 +1466,8 @@ class SecurityService {
|
|
|
1463
1466
|
environment = inject(ENVIRONMENT);
|
|
1464
1467
|
/** URL base de la API JWT construida desde la configuración del entorno */
|
|
1465
1468
|
urlApi = `${this.environment.myAppUrl}api/parameter`;
|
|
1466
|
-
|
|
1469
|
+
SeguridadITApiJwt = `${this.environment.SeguridadITApiUrl}api/jwt`;
|
|
1470
|
+
SeguridadITApiJwtSensitiveData = `${this.environment.SeguridadITApiUrl}api/jwtSensitiveData`;
|
|
1467
1471
|
/**
|
|
1468
1472
|
* Obtiene un nuevo token de acceso utilizando un refresh token válido.
|
|
1469
1473
|
*
|
|
@@ -1486,7 +1490,7 @@ class SecurityService {
|
|
|
1486
1490
|
// Crea el cuerpo de la solicitud con el refresh token
|
|
1487
1491
|
const body = { refreshToken };
|
|
1488
1492
|
// Realiza una solicitud POST al endpoint de refresco de token
|
|
1489
|
-
return this.http.post(`${this.
|
|
1493
|
+
return this.http.post(`${this.SeguridadITApiJwt}/refresh-token/`, body, {
|
|
1490
1494
|
headers: new HttpHeaders({
|
|
1491
1495
|
'Content-Type': 'application/json', // Establece el tipo de contenido como JSON
|
|
1492
1496
|
}),
|
|
@@ -1516,12 +1520,20 @@ class SecurityService {
|
|
|
1516
1520
|
// Crea el cuerpo de la solicitud con el refresh token
|
|
1517
1521
|
const body = { refreshToken };
|
|
1518
1522
|
// Realiza una solicitud POST al endpoint de revocación de token
|
|
1519
|
-
return this.http.post(`${this.
|
|
1523
|
+
return this.http.post(`${this.SeguridadITApiJwt}/revoke-token/`, body, {
|
|
1520
1524
|
headers: new HttpHeaders({
|
|
1521
1525
|
'Content-Type': 'application/json', // Establece el tipo de contenido como JSON
|
|
1522
1526
|
}),
|
|
1523
1527
|
});
|
|
1524
1528
|
}
|
|
1529
|
+
/**
|
|
1530
|
+
*
|
|
1531
|
+
* @param credencial
|
|
1532
|
+
* @returns
|
|
1533
|
+
*/
|
|
1534
|
+
tokenPurposeGenerate(credencial) {
|
|
1535
|
+
return this.http.post(`${this.SeguridadITApiJwtSensitiveData}/token-purpose/`, credencial);
|
|
1536
|
+
}
|
|
1525
1537
|
/**
|
|
1526
1538
|
* Obtiene los parámetros de seguridad de la aplicación desde el servidor.
|
|
1527
1539
|
*
|
|
@@ -1551,10 +1563,10 @@ class SecurityService {
|
|
|
1551
1563
|
// Realiza una solicitud GET al endpoint de parámetros de seguridad
|
|
1552
1564
|
return this.http.get(`${this.urlApi}/security-parameter/`, { params });
|
|
1553
1565
|
}
|
|
1554
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
1555
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
1566
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: SecurityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1567
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: SecurityService, providedIn: 'root' });
|
|
1556
1568
|
}
|
|
1557
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
1569
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: SecurityService, decorators: [{
|
|
1558
1570
|
type: Injectable,
|
|
1559
1571
|
args: [{
|
|
1560
1572
|
providedIn: 'root',
|
|
@@ -1892,10 +1904,10 @@ class AlertaService {
|
|
|
1892
1904
|
});
|
|
1893
1905
|
}
|
|
1894
1906
|
}
|
|
1895
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
1896
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
1907
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: AlertaService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1908
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: AlertaService, providedIn: 'root' });
|
|
1897
1909
|
}
|
|
1898
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
1910
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: AlertaService, decorators: [{
|
|
1899
1911
|
type: Injectable,
|
|
1900
1912
|
args: [{
|
|
1901
1913
|
providedIn: 'root',
|
|
@@ -2993,10 +3005,10 @@ class UtilityAddService {
|
|
|
2993
3005
|
this._serviceAlerta.toastrAlerts(4, 'Error', error instanceof Error ? error.message : String(error), 2);
|
|
2994
3006
|
}
|
|
2995
3007
|
}
|
|
2996
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
2997
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
3008
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: UtilityAddService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3009
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: UtilityAddService, providedIn: 'root' });
|
|
2998
3010
|
}
|
|
2999
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3011
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: UtilityAddService, decorators: [{
|
|
3000
3012
|
type: Injectable,
|
|
3001
3013
|
args: [{
|
|
3002
3014
|
providedIn: 'root',
|
|
@@ -3248,10 +3260,10 @@ class ParameterValuesService {
|
|
|
3248
3260
|
return (this.dataParameter.find((p) => p.parameterName === parameterName)
|
|
3249
3261
|
?.values ?? []);
|
|
3250
3262
|
}
|
|
3251
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
3252
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
3263
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: ParameterValuesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3264
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: ParameterValuesService, providedIn: 'root' });
|
|
3253
3265
|
}
|
|
3254
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3266
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: ParameterValuesService, decorators: [{
|
|
3255
3267
|
type: Injectable,
|
|
3256
3268
|
args: [{
|
|
3257
3269
|
providedIn: 'root',
|
|
@@ -3665,10 +3677,10 @@ class DsxButtonComponent {
|
|
|
3665
3677
|
// - alerta si el parámetro no existe (ayuda a detectar typos)
|
|
3666
3678
|
return this._paramService.isParameterValue(parameterName, this.parameterExpectedValue(), this.parameterIndex());
|
|
3667
3679
|
}
|
|
3668
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
3669
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
3680
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DsxButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3681
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", type: DsxButtonComponent, isStandalone: true, selector: "dsx-button", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, routerLink: { classPropertyName: "routerLink", publicName: "routerLink", isSignal: true, isRequired: false, transformFunction: null }, routerPath: { classPropertyName: "routerPath", publicName: "routerPath", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, iconOnly: { classPropertyName: "iconOnly", publicName: "iconOnly", isSignal: true, isRequired: false, transformFunction: null }, iconOnlyWidth: { classPropertyName: "iconOnlyWidth", publicName: "iconOnlyWidth", isSignal: true, isRequired: false, transformFunction: null }, raised: { classPropertyName: "raised", publicName: "raised", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null }, parameterName: { classPropertyName: "parameterName", publicName: "parameterName", isSignal: true, isRequired: false, transformFunction: null }, parameterExpectedValue: { classPropertyName: "parameterExpectedValue", publicName: "parameterExpectedValue", isSignal: true, isRequired: false, transformFunction: null }, parameterIndex: { classPropertyName: "parameterIndex", publicName: "parameterIndex", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, requireIdInput: { classPropertyName: "requireIdInput", publicName: "requireIdInput", isSignal: true, isRequired: false, transformFunction: null }, requiresIdGreaterThanZero: { classPropertyName: "requiresIdGreaterThanZero", publicName: "requiresIdGreaterThanZero", isSignal: true, isRequired: false, transformFunction: null }, labelOverride: { classPropertyName: "labelOverride", publicName: "labelOverride", isSignal: true, isRequired: false, transformFunction: null }, tooltipOverride: { classPropertyName: "tooltipOverride", publicName: "tooltipOverride", isSignal: true, isRequired: false, transformFunction: null }, iconOverride: { classPropertyName: "iconOverride", publicName: "iconOverride", isSignal: true, isRequired: false, transformFunction: null }, primeIconOverride: { classPropertyName: "primeIconOverride", publicName: "primeIconOverride", isSignal: true, isRequired: false, transformFunction: null }, colorOverride: { classPropertyName: "colorOverride", publicName: "colorOverride", isSignal: true, isRequired: false, transformFunction: null }, outlinedOverride: { classPropertyName: "outlinedOverride", publicName: "outlinedOverride", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { action: "action" }, host: { properties: { "class.dsx-button-compact-host": "this.compactHostClass" } }, ngImport: i0, template: "<!--Bot\u00F3n con las configuraciones din\u00E1micas para CRUD -->\r\n@if (showButton()) {\r\n<p-button\r\n [label]=\"buttonLabel\"\r\n [style]=\"buttonStyle\"\r\n [styleClass]=\"buttonStyleClass\"\r\n [pTooltip]=\"tooltip\"\r\n [tooltipDisabled]=\"disabled()\"\r\n tooltipPosition=\"top\"\r\n [raised]=\"isCompactIconButton ? false : raised()\"\r\n [rounded]=\"rounded()\"\r\n [text]=\"isCompactIconButton\"\r\n [size]=\"buttonSize\"\r\n severity=\"secondary\"\r\n [disabled]=\"disabled()\"\r\n [icon]=\"primeIcon\"\r\n (click)=\"onButtonClick()\"\r\n></p-button>\r\n}\r\n", styles: [":host{display:inline-flex;margin-bottom:.25rem}:host.dsx-button-compact-host{margin-bottom:0}:host ::ng-deep .p-button .p-button-label{font-family:Montserrat,Roboto,sans-serif;font-weight:500;letter-spacing:.01em}:host ::ng-deep .p-button.dsx-button-compact{min-height:2rem;padding-block:.2rem}:host ::ng-deep .p-button .material-symbols-outlined.p-button-icon{line-height:1;vertical-align:middle}:host ::ng-deep .p-button.dsx-button-compact .p-button-icon{margin:0;font-size:1.2rem;line-height:1}:host ::ng-deep .p-button.dsx-button-compact .material-symbols-outlined.p-button-icon{font-variation-settings:\"FILL\" 1,\"wght\" 500,\"GRAD\" 0,\"opsz\" 24}:host ::ng-deep .p-button:disabled,:host ::ng-deep .p-button.p-disabled{cursor:not-allowed!important;opacity:.45!important;filter:grayscale(.2) saturate(.75)}:host ::ng-deep .p-button:disabled *,:host ::ng-deep .p-button.p-disabled *{cursor:not-allowed!important}\n"], dependencies: [{ kind: "component", type: Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i1$3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "showOnEllipsis", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip", "pTooltipPT", "pTooltipUnstyled"] }] });
|
|
3670
3682
|
}
|
|
3671
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3683
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DsxButtonComponent, decorators: [{
|
|
3672
3684
|
type: Component,
|
|
3673
3685
|
args: [{ selector: 'dsx-button', imports: [Button, TooltipModule], template: "<!--Bot\u00F3n con las configuraciones din\u00E1micas para CRUD -->\r\n@if (showButton()) {\r\n<p-button\r\n [label]=\"buttonLabel\"\r\n [style]=\"buttonStyle\"\r\n [styleClass]=\"buttonStyleClass\"\r\n [pTooltip]=\"tooltip\"\r\n [tooltipDisabled]=\"disabled()\"\r\n tooltipPosition=\"top\"\r\n [raised]=\"isCompactIconButton ? false : raised()\"\r\n [rounded]=\"rounded()\"\r\n [text]=\"isCompactIconButton\"\r\n [size]=\"buttonSize\"\r\n severity=\"secondary\"\r\n [disabled]=\"disabled()\"\r\n [icon]=\"primeIcon\"\r\n (click)=\"onButtonClick()\"\r\n></p-button>\r\n}\r\n", styles: [":host{display:inline-flex;margin-bottom:.25rem}:host.dsx-button-compact-host{margin-bottom:0}:host ::ng-deep .p-button .p-button-label{font-family:Montserrat,Roboto,sans-serif;font-weight:500;letter-spacing:.01em}:host ::ng-deep .p-button.dsx-button-compact{min-height:2rem;padding-block:.2rem}:host ::ng-deep .p-button .material-symbols-outlined.p-button-icon{line-height:1;vertical-align:middle}:host ::ng-deep .p-button.dsx-button-compact .p-button-icon{margin:0;font-size:1.2rem;line-height:1}:host ::ng-deep .p-button.dsx-button-compact .material-symbols-outlined.p-button-icon{font-variation-settings:\"FILL\" 1,\"wght\" 500,\"GRAD\" 0,\"opsz\" 24}:host ::ng-deep .p-button:disabled,:host ::ng-deep .p-button.p-disabled{cursor:not-allowed!important;opacity:.45!important;filter:grayscale(.2) saturate(.75)}:host ::ng-deep .p-button:disabled *,:host ::ng-deep .p-button.p-disabled *{cursor:not-allowed!important}\n"] }]
|
|
3674
3686
|
}], ctorParameters: () => [], propDecorators: { compactHostClass: [{
|
|
@@ -3809,10 +3821,10 @@ class IconDsxService {
|
|
|
3809
3821
|
this.cache.set(name, request$);
|
|
3810
3822
|
return request$;
|
|
3811
3823
|
}
|
|
3812
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
3813
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
3824
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: IconDsxService, deps: [{ token: i1$6.HttpClient }, { token: i1$4.DomSanitizer }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3825
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: IconDsxService, providedIn: 'root' });
|
|
3814
3826
|
}
|
|
3815
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3827
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: IconDsxService, decorators: [{
|
|
3816
3828
|
type: Injectable,
|
|
3817
3829
|
args: [{
|
|
3818
3830
|
providedIn: 'root',
|
|
@@ -3829,10 +3841,10 @@ class IconDsxComponent {
|
|
|
3829
3841
|
ngOnInit() {
|
|
3830
3842
|
this.svg$ = this.iconService.getIcon(this.name()); // 👈 AHORA CUADRA CON EL async
|
|
3831
3843
|
}
|
|
3832
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
3833
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.
|
|
3844
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: IconDsxComponent, deps: [{ token: IconDsxService }], target: i0.ɵɵFactoryTarget.Component });
|
|
3845
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.12", type: IconDsxComponent, isStandalone: true, selector: "icon-dsx", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<span class=\"dsx-icon\" [innerHTML]=\"svg$ | async\"></span>\r\n", styles: [":host{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;width:1em;height:1em;font-size:24px;line-height:1;flex-shrink:0}.dsx-icon{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%}:host ::ng-deep .dsx-icon svg{width:100%;height:100%;fill:currentColor;shape-rendering:geometricPrecision;stroke:currentColor;stroke-width:4px;stroke-linejoin:round;stroke-linecap:round;overflow:visible;transition:fill .2s ease,stroke .2s ease}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }] });
|
|
3834
3846
|
}
|
|
3835
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3847
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: IconDsxComponent, decorators: [{
|
|
3836
3848
|
type: Component,
|
|
3837
3849
|
args: [{ selector: 'icon-dsx', imports: [AsyncPipe], template: "<span class=\"dsx-icon\" [innerHTML]=\"svg$ | async\"></span>\r\n", styles: [":host{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;width:1em;height:1em;font-size:24px;line-height:1;flex-shrink:0}.dsx-icon{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%}:host ::ng-deep .dsx-icon svg{width:100%;height:100%;fill:currentColor;shape-rendering:geometricPrecision;stroke:currentColor;stroke-width:4px;stroke-linejoin:round;stroke-linecap:round;overflow:visible;transition:fill .2s ease,stroke .2s ease}\n"] }]
|
|
3838
3850
|
}], ctorParameters: () => [{ type: IconDsxService }], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }] } });
|
|
@@ -3930,10 +3942,10 @@ class JsonHighlightPipe {
|
|
|
3930
3942
|
.replace(/,/g, '<span class="json-comma">$&</span>')
|
|
3931
3943
|
.replace(/:/g, '<span class="json-colon">$&</span>');
|
|
3932
3944
|
}
|
|
3933
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
3934
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.
|
|
3945
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: JsonHighlightPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
3946
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.12", ngImport: i0, type: JsonHighlightPipe, isStandalone: true, name: "jsonHighlight" });
|
|
3935
3947
|
}
|
|
3936
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3948
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: JsonHighlightPipe, decorators: [{
|
|
3937
3949
|
type: Pipe,
|
|
3938
3950
|
args: [{
|
|
3939
3951
|
name: 'jsonHighlight',
|
|
@@ -3950,10 +3962,10 @@ class JsonValuesDebujComponent {
|
|
|
3950
3962
|
isDev() {
|
|
3951
3963
|
return this.isDevSignal();
|
|
3952
3964
|
}
|
|
3953
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
3954
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
3965
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: JsonValuesDebujComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3966
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", type: JsonValuesDebujComponent, isStandalone: true, selector: "app-json-values-debuj", inputs: { form: "form" }, ngImport: i0, template: "@if (isDev()) {\r\n <span class=\"debug-title\">Development mode</span>\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:linear-gradient(135deg,#f8f9fa,#f1f3f5);padding:1rem;border-radius:.75rem;margin-bottom:.75rem;border:1px solid #e9ecef;box-shadow:0 2px 8px #0000000d}.custom-pre{white-space:pre-wrap;word-break:break-word;font-size:.95rem;font-family:Consolas,Monaco,Courier New,monospace;line-height:1.6;margin:0;color:#2c3e50}.debug-title{display:inline-flex;align-items:center;gap:.4rem;padding:.15rem .6rem;margin-bottom:.5rem;border-radius:999px;font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:#495057;background:#4950570a;border:1px solid rgba(73,80,87,.18)}.debug-title:before{content:\"\";width:7px;height:7px;border-radius:50%;background:#51cf66;box-shadow:0 0 0 2px #51cf6640}.json-key{color:tomato;font-style:italic;font-weight:700;font-size:1.02em;letter-spacing:.3px}.json-string{color:#27ae60;font-weight:500}.json-number{color:#3498db;font-weight:700;font-size:1.02em}.json-boolean{color:#daa248;font-weight:700;font-size:1.02em}.json-null{color:#6c757d;font-style:italic;font-weight:500}.json-bracket{color:#2c3e50;font-weight:700}.json-colon{color:#34495e;font-weight:700}.json-comma{color:#7f8c8d;font-weight:700}.json-date-part{color:#2980b9;font-weight:600}.json-date-sep{color:#95a5a6;font-weight:400}.json-date-time{color:#8e44ad;font-weight:500}.json-date-part .json-number,.json-date-time .json-number,.json-date-part .json-colon,.json-date-time .json-colon{color:inherit;font-weight:inherit}\n"], dependencies: [{ kind: "pipe", type: JsonHighlightPipe, name: "jsonHighlight" }], encapsulation: i0.ViewEncapsulation.None });
|
|
3955
3967
|
}
|
|
3956
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
3968
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: JsonValuesDebujComponent, decorators: [{
|
|
3957
3969
|
type: Component,
|
|
3958
3970
|
args: [{ selector: 'app-json-values-debuj', imports: [JsonHighlightPipe], encapsulation: ViewEncapsulation.None, template: "@if (isDev()) {\r\n <span class=\"debug-title\">Development mode</span>\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:linear-gradient(135deg,#f8f9fa,#f1f3f5);padding:1rem;border-radius:.75rem;margin-bottom:.75rem;border:1px solid #e9ecef;box-shadow:0 2px 8px #0000000d}.custom-pre{white-space:pre-wrap;word-break:break-word;font-size:.95rem;font-family:Consolas,Monaco,Courier New,monospace;line-height:1.6;margin:0;color:#2c3e50}.debug-title{display:inline-flex;align-items:center;gap:.4rem;padding:.15rem .6rem;margin-bottom:.5rem;border-radius:999px;font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:#495057;background:#4950570a;border:1px solid rgba(73,80,87,.18)}.debug-title:before{content:\"\";width:7px;height:7px;border-radius:50%;background:#51cf66;box-shadow:0 0 0 2px #51cf6640}.json-key{color:tomato;font-style:italic;font-weight:700;font-size:1.02em;letter-spacing:.3px}.json-string{color:#27ae60;font-weight:500}.json-number{color:#3498db;font-weight:700;font-size:1.02em}.json-boolean{color:#daa248;font-weight:700;font-size:1.02em}.json-null{color:#6c757d;font-style:italic;font-weight:500}.json-bracket{color:#2c3e50;font-weight:700}.json-colon{color:#34495e;font-weight:700}.json-comma{color:#7f8c8d;font-weight:700}.json-date-part{color:#2980b9;font-weight:600}.json-date-sep{color:#95a5a6;font-weight:400}.json-date-time{color:#8e44ad;font-weight:500}.json-date-part .json-number,.json-date-time .json-number,.json-date-part .json-colon,.json-date-time .json-colon{color:inherit;font-weight:inherit}\n"] }]
|
|
3959
3971
|
}], propDecorators: { form: [{
|
|
@@ -4040,10 +4052,10 @@ class SpinnerLoadingService {
|
|
|
4040
4052
|
this.counter = 0;
|
|
4041
4053
|
this.spinnerVisible.set(false);
|
|
4042
4054
|
}
|
|
4043
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
4044
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
4055
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: SpinnerLoadingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4056
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: SpinnerLoadingService, providedIn: 'root' });
|
|
4045
4057
|
}
|
|
4046
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
4058
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: SpinnerLoadingService, decorators: [{
|
|
4047
4059
|
type: Injectable,
|
|
4048
4060
|
args: [{
|
|
4049
4061
|
providedIn: 'root',
|
|
@@ -4103,10 +4115,10 @@ class LogoDsxComponent {
|
|
|
4103
4115
|
easing: 'outBounce',
|
|
4104
4116
|
}, 490);
|
|
4105
4117
|
}
|
|
4106
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
4107
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.
|
|
4118
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: LogoDsxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4119
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.12", type: LogoDsxComponent, isStandalone: true, selector: "app-logo-dsx", viewQueries: [{ propertyName: "logo", first: true, predicate: ["logo"], descendants: true, isSignal: true }, { propertyName: "hexagon", first: true, predicate: ["logoHexagon"], descendants: true, isSignal: true }, { propertyName: "circle", first: true, predicate: ["logoCircle"], descendants: true, isSignal: true }, { propertyName: "mask", first: true, predicate: ["logoMask"], descendants: true, isSignal: true }, { propertyName: "text", first: true, predicate: ["logoText"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"site-logo\">\r\n <figure #logo>\r\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 148 128\">\r\n <defs>\r\n <linearGradient id=\"logo-gradient\" x1=\"0%\" y1=\"100%\" x2=\"100%\" y2=\"0%\">\r\n <stop offset=\"0%\" stop-color=\"#00ffff\" />\r\n <stop offset=\"100%\" stop-color=\"#ff00ff\" />\r\n </linearGradient>\r\n <linearGradient\r\n id=\"circle-gradient\"\r\n x1=\"0%\"\r\n y1=\"100%\"\r\n x2=\"100%\"\r\n y2=\"0%\"\r\n >\r\n <stop offset=\"0%\" stop-color=\"#ff00ff\" />\r\n <stop offset=\"100%\" stop-color=\"#00ffff\" />\r\n </linearGradient>\r\n <mask id=\"circle-mask\">\r\n <rect fill=\"white\" width=\"100%\" height=\"100%\"></rect>\r\n <circle\r\n #logoMask\r\n id=\"logo-mask\"\r\n fill=\"black\"\r\n cx=\"120\"\r\n cy=\"96\"\r\n r=\"28\"\r\n ></circle>\r\n </mask>\r\n </defs>\r\n <polygon\r\n #logoHexagon\r\n id=\"logo-hexagon\"\r\n fill=\"#475569\"\r\n stroke=\"#9ca3af\"\r\n stroke-width=\"2\"\r\n stroke-linejoin=\"round\"\r\n points=\"64 128 8.574 96 8.574 32 64 0 119.426 32 119.426 96\"\r\n mask=\"url(#circle-mask)\"\r\n ></polygon>\r\n <circle #logoCircle fill=\"#16a34a\" cx=\"120\" cy=\"96\" r=\"20\"></circle>\r\n </svg>\r\n </figure>\r\n <div class=\"site-title\">\r\n <div #logoText class=\"site-title-text\">\r\n DEV<span\r\n >SOFTXela<span style=\"font-size: small; vertical-align: super\"\r\n >©</span\r\n >\r\n {{ currentYear }}</span\r\n >\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["*{box-sizing:border-box}body{display:flex;align-items:center;justify-content:center;min-height:100vh;font-family:Dosis,sans-serif;color:#3f3c3c}.site-logo{display:flex;align-items:center;transform:translateZ(0)}.site-logo figure{position:relative;flex:0 0 2.75rem;width:3.75rem;z-index:2;opacity:0}#logo-hexagon{transform-origin:50%}.site-logo figure circle{transform-origin:80% 80%}.site-title{position:relative;overflow:hidden;margin-left:-1.5rem;z-index:1;transform:translateZ(0)}.site-title-text{padding:.25rem .375rem .25rem 1.75rem;font-size:1.25rem;font-weight:800;opacity:0;background:linear-gradient(90deg,#7e22ce,#4f46e5,#2563eb);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.site-title-text span{margin-left:.015625rem}\n"] });
|
|
4108
4120
|
}
|
|
4109
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
4121
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: LogoDsxComponent, decorators: [{
|
|
4110
4122
|
type: Component,
|
|
4111
4123
|
args: [{ selector: 'app-logo-dsx', imports: [], template: "<div class=\"site-logo\">\r\n <figure #logo>\r\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 148 128\">\r\n <defs>\r\n <linearGradient id=\"logo-gradient\" x1=\"0%\" y1=\"100%\" x2=\"100%\" y2=\"0%\">\r\n <stop offset=\"0%\" stop-color=\"#00ffff\" />\r\n <stop offset=\"100%\" stop-color=\"#ff00ff\" />\r\n </linearGradient>\r\n <linearGradient\r\n id=\"circle-gradient\"\r\n x1=\"0%\"\r\n y1=\"100%\"\r\n x2=\"100%\"\r\n y2=\"0%\"\r\n >\r\n <stop offset=\"0%\" stop-color=\"#ff00ff\" />\r\n <stop offset=\"100%\" stop-color=\"#00ffff\" />\r\n </linearGradient>\r\n <mask id=\"circle-mask\">\r\n <rect fill=\"white\" width=\"100%\" height=\"100%\"></rect>\r\n <circle\r\n #logoMask\r\n id=\"logo-mask\"\r\n fill=\"black\"\r\n cx=\"120\"\r\n cy=\"96\"\r\n r=\"28\"\r\n ></circle>\r\n </mask>\r\n </defs>\r\n <polygon\r\n #logoHexagon\r\n id=\"logo-hexagon\"\r\n fill=\"#475569\"\r\n stroke=\"#9ca3af\"\r\n stroke-width=\"2\"\r\n stroke-linejoin=\"round\"\r\n points=\"64 128 8.574 96 8.574 32 64 0 119.426 32 119.426 96\"\r\n mask=\"url(#circle-mask)\"\r\n ></polygon>\r\n <circle #logoCircle fill=\"#16a34a\" cx=\"120\" cy=\"96\" r=\"20\"></circle>\r\n </svg>\r\n </figure>\r\n <div class=\"site-title\">\r\n <div #logoText class=\"site-title-text\">\r\n DEV<span\r\n >SOFTXela<span style=\"font-size: small; vertical-align: super\"\r\n >©</span\r\n >\r\n {{ currentYear }}</span\r\n >\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["*{box-sizing:border-box}body{display:flex;align-items:center;justify-content:center;min-height:100vh;font-family:Dosis,sans-serif;color:#3f3c3c}.site-logo{display:flex;align-items:center;transform:translateZ(0)}.site-logo figure{position:relative;flex:0 0 2.75rem;width:3.75rem;z-index:2;opacity:0}#logo-hexagon{transform-origin:50%}.site-logo figure circle{transform-origin:80% 80%}.site-title{position:relative;overflow:hidden;margin-left:-1.5rem;z-index:1;transform:translateZ(0)}.site-title-text{padding:.25rem .375rem .25rem 1.75rem;font-size:1.25rem;font-weight:800;opacity:0;background:linear-gradient(90deg,#7e22ce,#4f46e5,#2563eb);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.site-title-text span{margin-left:.015625rem}\n"] }]
|
|
4112
4124
|
}], ctorParameters: () => [], propDecorators: { logo: [{ type: i0.ViewChild, args: ['logo', { isSignal: true }] }], hexagon: [{ type: i0.ViewChild, args: ['logoHexagon', { isSignal: true }] }], circle: [{ type: i0.ViewChild, args: ['logoCircle', { isSignal: true }] }], mask: [{ type: i0.ViewChild, args: ['logoMask', { isSignal: true }] }], text: [{ type: i0.ViewChild, args: ['logoText', { isSignal: true }] }] } });
|
|
@@ -4126,20 +4138,20 @@ class LoadingLottieComponent {
|
|
|
4126
4138
|
};
|
|
4127
4139
|
});
|
|
4128
4140
|
}
|
|
4129
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
4130
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
4141
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: LoadingLottieComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4142
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", 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\r\n [options]=\"options\"\r\n [width]=\"size()\"\r\n [height]=\"size()\"\r\n ></ng-lottie>\r\n <!-- <p class=\"loading-text\">©DevsoftXela {{ currentYear }}</p> -->\r\n <app-logo-dsx></app-logo-dsx>\r\n </div>\r\n}\r\n", styles: [".loader-container{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#000000e6;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:2px;z-index:9999;overflow:hidden;opacity:0;animation:overlayFadeIn .25s ease-out forwards}.loader-container app-logo-dsx{margin-top:-24px}@keyframes overlayFadeIn{0%{opacity:0}to{opacity:1}}\n"], dependencies: [{ kind: "component", type: LottieComponent, selector: "ng-lottie", inputs: ["width", "height"] }, { kind: "component", type: LogoDsxComponent, selector: "app-logo-dsx" }] });
|
|
4131
4143
|
}
|
|
4132
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
4144
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: LoadingLottieComponent, decorators: [{
|
|
4133
4145
|
type: Component,
|
|
4134
4146
|
args: [{ selector: 'app-loading-lottie', imports: [LottieComponent, LogoDsxComponent], template: "@if (_spinnerService.spinnerVisible()) {\r\n <div class=\"loader-container\">\r\n <ng-lottie\r\n [options]=\"options\"\r\n [width]=\"size()\"\r\n [height]=\"size()\"\r\n ></ng-lottie>\r\n <!-- <p class=\"loading-text\">©DevsoftXela {{ currentYear }}</p> -->\r\n <app-logo-dsx></app-logo-dsx>\r\n </div>\r\n}\r\n", styles: [".loader-container{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#000000e6;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:2px;z-index:9999;overflow:hidden;opacity:0;animation:overlayFadeIn .25s ease-out forwards}.loader-container app-logo-dsx{margin-top:-24px}@keyframes overlayFadeIn{0%{opacity:0}to{opacity:1}}\n"] }]
|
|
4135
4147
|
}], ctorParameters: () => [], propDecorators: { jsonUrl: [{ type: i0.Input, args: [{ isSignal: true, alias: "jsonUrl", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }] } });
|
|
4136
4148
|
|
|
4137
4149
|
class CssV2Component {
|
|
4138
4150
|
_spinnerService = inject(SpinnerLoadingService);
|
|
4139
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
4140
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
4151
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: CssV2Component, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4152
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", 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"] });
|
|
4141
4153
|
}
|
|
4142
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
4154
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: CssV2Component, decorators: [{
|
|
4143
4155
|
type: Component,
|
|
4144
4156
|
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"] }]
|
|
4145
4157
|
}] });
|
|
@@ -4151,10 +4163,10 @@ class LoadingComponent {
|
|
|
4151
4163
|
constructor() {
|
|
4152
4164
|
this.currentYear = new Date().getFullYear(); // Asigna el año actual
|
|
4153
4165
|
}
|
|
4154
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
4155
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
4166
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: LoadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4167
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", 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:#000000e6;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"] });
|
|
4156
4168
|
}
|
|
4157
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
4169
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: LoadingComponent, decorators: [{
|
|
4158
4170
|
type: Component,
|
|
4159
4171
|
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:#000000e6;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"] }]
|
|
4160
4172
|
}], ctorParameters: () => [] });
|
|
@@ -4169,6 +4181,7 @@ const developmentEnvironment = {
|
|
|
4169
4181
|
production: false,
|
|
4170
4182
|
SeguridadITApiUrl: 'https://localhost:7197/',
|
|
4171
4183
|
tokenName: 'securityIT-Authorize',
|
|
4184
|
+
tokenPurpose: 'token-Purpose',
|
|
4172
4185
|
tokenNameRF: 'refresh-Authorize',
|
|
4173
4186
|
sessionStatus: 'lastActivity',
|
|
4174
4187
|
refreshTokenExpiry: 'refreshToken-Expiry',
|
|
@@ -4184,6 +4197,7 @@ const productionEnvironment = {
|
|
|
4184
4197
|
myAppUrl: '/',
|
|
4185
4198
|
SeguridadITApiUrl: 'https://securityapi.itgtxela.com/',
|
|
4186
4199
|
tokenName: 'securityIT-Authorize',
|
|
4200
|
+
tokenPurpose: 'token-Purpose',
|
|
4187
4201
|
tokenNameRF: 'refresh-Authorize',
|
|
4188
4202
|
sessionStatus: 'lastActivity',
|
|
4189
4203
|
refreshTokenExpiry: 'refreshToken-Expiry',
|
|
@@ -4373,7 +4387,12 @@ class AuthorizeService {
|
|
|
4373
4387
|
}
|
|
4374
4388
|
getToken() {
|
|
4375
4389
|
return this._cookieService.get(this.environment.tokenName);
|
|
4376
|
-
|
|
4390
|
+
}
|
|
4391
|
+
getTokenPurpose() {
|
|
4392
|
+
return this._cookieService.get(this.environment.tokenPurpose);
|
|
4393
|
+
}
|
|
4394
|
+
setTokenPurpose(token) {
|
|
4395
|
+
this.setCookie(this.environment.tokenPurpose, token.token, new Date(token.refreshTokenExpiry));
|
|
4377
4396
|
}
|
|
4378
4397
|
/**
|
|
4379
4398
|
* Obtiene el Refresh Token almacenado en cookies.
|
|
@@ -4442,6 +4461,14 @@ class AuthorizeService {
|
|
|
4442
4461
|
// Devuelve true si el token NO ha expirado
|
|
4443
4462
|
return !this.helperJwt.isTokenExpired(token);
|
|
4444
4463
|
}
|
|
4464
|
+
getTokenPurposeValid() {
|
|
4465
|
+
const token = this.getTokenPurpose();
|
|
4466
|
+
if (!token) {
|
|
4467
|
+
return false;
|
|
4468
|
+
}
|
|
4469
|
+
// Devuelve true si el token NO ha expirado
|
|
4470
|
+
return !this.helperJwt.isTokenExpired(token);
|
|
4471
|
+
}
|
|
4445
4472
|
/**
|
|
4446
4473
|
* Obtiene los valores principales del JWT almacenado (usuario, roles y estado).
|
|
4447
4474
|
*
|
|
@@ -4636,6 +4663,7 @@ class AuthorizeService {
|
|
|
4636
4663
|
const cookiesToDelete = [
|
|
4637
4664
|
this.environment.tokenName,
|
|
4638
4665
|
this.environment.tokenNameRF,
|
|
4666
|
+
this.environment.tokenPurpose,
|
|
4639
4667
|
this.environment.sessionStatus,
|
|
4640
4668
|
];
|
|
4641
4669
|
cookiesToDelete.forEach((cookieName) => {
|
|
@@ -4678,10 +4706,10 @@ class AuthorizeService {
|
|
|
4678
4706
|
});
|
|
4679
4707
|
}
|
|
4680
4708
|
}
|
|
4681
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
4682
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
4709
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: AuthorizeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4710
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: AuthorizeService, providedIn: 'root' });
|
|
4683
4711
|
}
|
|
4684
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
4712
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: AuthorizeService, decorators: [{
|
|
4685
4713
|
type: Injectable,
|
|
4686
4714
|
args: [{
|
|
4687
4715
|
providedIn: 'root',
|
|
@@ -4721,10 +4749,10 @@ class RequestMetricsService {
|
|
|
4721
4749
|
return 50;
|
|
4722
4750
|
return 25;
|
|
4723
4751
|
}
|
|
4724
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
4725
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
4752
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: RequestMetricsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4753
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: RequestMetricsService, providedIn: 'root' });
|
|
4726
4754
|
}
|
|
4727
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
4755
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: RequestMetricsService, decorators: [{
|
|
4728
4756
|
type: Injectable,
|
|
4729
4757
|
args: [{ providedIn: 'root' }]
|
|
4730
4758
|
}] });
|
|
@@ -4750,10 +4778,10 @@ class NetworkStatusComponent {
|
|
|
4750
4778
|
// 50 o menos -> última imagen (mala)
|
|
4751
4779
|
return 'image/Status_Red.png';
|
|
4752
4780
|
}
|
|
4753
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
4754
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.
|
|
4781
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: NetworkStatusComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4782
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.12", type: NetworkStatusComponent, isStandalone: true, selector: "app-network-status", ngImport: i0, template: "<div class=\"network-status-container\">\r\n <p-avatar\r\n [image]=\"getStatusImage()\"\r\n [pTooltip]=\"tooltipText\"\r\n tooltipPosition=\"bottom\"\r\n />\r\n <span> {{ state().score }}% </span>\r\n <span> {{ state().averageDurationMs | number: \"1.0-0\" }}ms </span>\r\n</div>\r\n", styles: [".network-status-container{display:flex;align-items:center;gap:.5rem}.network-status-container span{font-size:.85rem;color:#6b7280;font-weight:400}.network-status-container span:first-of-type{font-weight:500}\n"], dependencies: [{ kind: "component", type: Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i1$3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "showOnEllipsis", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip", "pTooltipPT", "pTooltipUnstyled"] }, { kind: "pipe", type: DecimalPipe, name: "number" }] });
|
|
4755
4783
|
}
|
|
4756
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
4784
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: NetworkStatusComponent, decorators: [{
|
|
4757
4785
|
type: Component,
|
|
4758
4786
|
args: [{ selector: 'app-network-status', imports: [Avatar, DecimalPipe, TooltipModule], template: "<div class=\"network-status-container\">\r\n <p-avatar\r\n [image]=\"getStatusImage()\"\r\n [pTooltip]=\"tooltipText\"\r\n tooltipPosition=\"bottom\"\r\n />\r\n <span> {{ state().score }}% </span>\r\n <span> {{ state().averageDurationMs | number: \"1.0-0\" }}ms </span>\r\n</div>\r\n", styles: [".network-status-container{display:flex;align-items:center;gap:.5rem}.network-status-container span{font-size:.85rem;color:#6b7280;font-weight:400}.network-status-container span:first-of-type{font-weight:500}\n"] }]
|
|
4759
4787
|
}] });
|
|
@@ -4812,10 +4840,10 @@ class NavbarDsxComponent {
|
|
|
4812
4840
|
complete: () => this._parameterSecurityService.clearParameterCache(),
|
|
4813
4841
|
});
|
|
4814
4842
|
}
|
|
4815
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
4816
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.
|
|
4843
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: NavbarDsxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4844
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.12", type: NavbarDsxComponent, isStandalone: true, selector: "app-navbar-dsx", inputs: { appVersion: { classPropertyName: "appVersion", publicName: "appVersion", isSignal: true, isRequired: false, transformFunction: null }, logoWidth: { classPropertyName: "logoWidth", publicName: "logoWidth", 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>\r\n <!-- Datos del usuario -->\r\n <div class=\"navbar-user-info\">\r\n <icon-dsx name=\"verified_user\" class=\"navbar-user-icon\"></icon-dsx>\r\n <div class=\"navbar-user-text\">\r\n <span class=\"navbar-user-name\">\r\n {{ _authorizeService.getTokenValues.userName }}\r\n </span>\r\n <span class=\"navbar-user-role\">\r\n {{ currentRole }}\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <!-- Componente de estado de red -->\r\n <app-network-status></app-network-status>\r\n\r\n <!-- Actualizaci\u00F3n de permisos -->\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\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: [":host ::ng-deep .p-menubar{display:flex;align-items:center!important;padding:.25rem 1.5rem!important;border-radius:999px;border:1px solid rgba(255,255,255,.2);background:#ffffff1f!important;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 10px 30px #0f172a14;margin-left:4rem;margin-right:2.5rem}:host ::ng-deep .p-menubar-end>*{display:flex;align-items:center}.version-text{font-size:1.3rem;font-family:Montserrat,sans-serif!important;margin-left:.5rem;font-weight:600;background-image:linear-gradient(to right,#38bdf8,#630cb4);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 2px 4px rgba(0,0,0,.1);padding:.2rem 0}.navbar-user-info{display:flex;align-items:center;gap:.35rem;padding:0 .75rem;border-radius:999px;background-color:#00000005}.navbar-user-icon{font-size:1.1rem;color:#374151}.navbar-user-name{font-size:.8rem;font-weight:500;color:#374151;white-space:nowrap}.navbar-user-text{display:flex;flex-direction:column;line-height:1.1}.navbar-user-role{font-size:.7rem;color:#6b7280;white-space:nowrap}.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: ButtonModule }, { kind: "component", type: i1$7.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: IconDsxComponent, selector: "icon-dsx", inputs: ["name"] }, { kind: "ngmodule", type: ImageModule }, { kind: "component", type: i3$1.Image, selector: "p-image", inputs: ["imageClass", "imageStyle", "styleClass", "src", "srcSet", "sizes", "previewImageSrc", "previewImageSrcSet", "previewImageSizes", "alt", "width", "height", "loading", "preview", "showTransitionOptions", "hideTransitionOptions", "modalEnterAnimation", "modalLeaveAnimation", "appendTo", "maskMotionOptions", "motionOptions"], outputs: ["onShow", "onHide", "onImageError"] }, { kind: "ngmodule", type: MenubarModule }, { kind: "component", type: i4.Menubar, selector: "p-menubar", inputs: ["model", "styleClass", "autoZIndex", "baseZIndex", "autoDisplay", "autoHide", "breakpoint", "autoHideDelay", "id", "ariaLabel", "ariaLabelledBy"], outputs: ["onFocus", "onBlur"] }, { kind: "component", type: NetworkStatusComponent, selector: "app-network-status" }] });
|
|
4817
4845
|
}
|
|
4818
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
4846
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: NavbarDsxComponent, decorators: [{
|
|
4819
4847
|
type: Component,
|
|
4820
4848
|
args: [{ selector: 'app-navbar-dsx', imports: [
|
|
4821
4849
|
ButtonModule,
|
|
@@ -4827,6 +4855,64 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImpo
|
|
|
4827
4855
|
], 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>\r\n <!-- Datos del usuario -->\r\n <div class=\"navbar-user-info\">\r\n <icon-dsx name=\"verified_user\" class=\"navbar-user-icon\"></icon-dsx>\r\n <div class=\"navbar-user-text\">\r\n <span class=\"navbar-user-name\">\r\n {{ _authorizeService.getTokenValues.userName }}\r\n </span>\r\n <span class=\"navbar-user-role\">\r\n {{ currentRole }}\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <!-- Componente de estado de red -->\r\n <app-network-status></app-network-status>\r\n\r\n <!-- Actualizaci\u00F3n de permisos -->\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\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: [":host ::ng-deep .p-menubar{display:flex;align-items:center!important;padding:.25rem 1.5rem!important;border-radius:999px;border:1px solid rgba(255,255,255,.2);background:#ffffff1f!important;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 10px 30px #0f172a14;margin-left:4rem;margin-right:2.5rem}:host ::ng-deep .p-menubar-end>*{display:flex;align-items:center}.version-text{font-size:1.3rem;font-family:Montserrat,sans-serif!important;margin-left:.5rem;font-weight:600;background-image:linear-gradient(to right,#38bdf8,#630cb4);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 2px 4px rgba(0,0,0,.1);padding:.2rem 0}.navbar-user-info{display:flex;align-items:center;gap:.35rem;padding:0 .75rem;border-radius:999px;background-color:#00000005}.navbar-user-icon{font-size:1.1rem;color:#374151}.navbar-user-name{font-size:.8rem;font-weight:500;color:#374151;white-space:nowrap}.navbar-user-text{display:flex;flex-direction:column;line-height:1.1}.navbar-user-role{font-size:.7rem;color:#6b7280;white-space:nowrap}.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"] }]
|
|
4828
4856
|
}], propDecorators: { appVersion: [{ type: i0.Input, args: [{ isSignal: true, alias: "appVersion", required: false }] }], logoWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "logoWidth", required: false }] }], urlLogo: [{ type: i0.Input, args: [{ isSignal: true, alias: "urlLogo", required: false }] }] } });
|
|
4829
4857
|
|
|
4858
|
+
class TokenPurposeLogin {
|
|
4859
|
+
fb = inject(FormBuilder);
|
|
4860
|
+
_authorizeService = inject(AuthorizeService);
|
|
4861
|
+
_securityService = inject(SecurityService);
|
|
4862
|
+
_alertService = inject(AlertaService);
|
|
4863
|
+
form;
|
|
4864
|
+
visible = false;
|
|
4865
|
+
constructor() {
|
|
4866
|
+
this.getForm();
|
|
4867
|
+
}
|
|
4868
|
+
getForm() {
|
|
4869
|
+
this.form = this.fb.group({
|
|
4870
|
+
userName: [{ value: null, disabled: true }, [Validators.required]],
|
|
4871
|
+
password: [null, [Validators.required]],
|
|
4872
|
+
});
|
|
4873
|
+
}
|
|
4874
|
+
showDialog() {
|
|
4875
|
+
this.visible = true;
|
|
4876
|
+
}
|
|
4877
|
+
generarTokenPurpose() {
|
|
4878
|
+
//Validar el password
|
|
4879
|
+
if (this.form.valid) {
|
|
4880
|
+
this._securityService
|
|
4881
|
+
.tokenPurposeGenerate(this.form.getRawValue())
|
|
4882
|
+
.subscribe({
|
|
4883
|
+
next: (result) => {
|
|
4884
|
+
if (result.isSuccess) {
|
|
4885
|
+
this._authorizeService.setTokenPurpose(result.data);
|
|
4886
|
+
this._alertService.toastrAlerts(1, result.title, result.message, 2);
|
|
4887
|
+
this.visible = false;
|
|
4888
|
+
this.form.reset();
|
|
4889
|
+
}
|
|
4890
|
+
else {
|
|
4891
|
+
this._alertService.toastrAlerts(4, result.title, result.message, 2);
|
|
4892
|
+
}
|
|
4893
|
+
},
|
|
4894
|
+
error: (err) => console.error('Error al generar token purpose:', err),
|
|
4895
|
+
complete: () => '',
|
|
4896
|
+
});
|
|
4897
|
+
}
|
|
4898
|
+
}
|
|
4899
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: TokenPurposeLogin, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4900
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.12", type: TokenPurposeLogin, isStandalone: true, selector: "app-token-purpose-login", ngImport: i0, template: "<div class=\"flex\">\r\n <p-button\r\n (click)=\"showDialog()\"\r\n label=\"Generar Token\"\r\n pTooltip=\"Ingrese sus credenciales para generar un token de acceso.\"\r\n tooltipPosition=\"top\"\r\n severity=\"secondary\"\r\n icon=\"pi pi-lock\"\r\n [rounded]=\"true\"\r\n [raised]=\"true\"\r\n />\r\n</div>\r\n<form [formGroup]=\"form\">\r\n <p-dialog [(visible)]=\"visible\" [modal]=\"true\" [style]=\"{ width: '30rem' }\">\r\n <ng-template #header>\r\n <div class=\"flex items-center gap-2 px-2\">\r\n <p-avatar image=\"icon/folder.png\" size=\"large\" />\r\n <h5>Token de Seguridad</h5>\r\n </div>\r\n </ng-template>\r\n <span class=\"text-surface-500 dark:text-surface-400 block\"\r\n >Ingrese sus credenciales para generar un token de acceso.</span\r\n >\r\n <div class=\"mt-3\">\r\n <p-floatLabel variant=\"in\">\r\n <p-password\r\n formControlName=\"password\"\r\n [invalid]=\"form.get('password')?.invalid && (form.get('password')?.dirty || form.get('password')?.touched)\"\r\n [feedback]=\"false\"\r\n [toggleMask]=\"true\"\r\n fluid\r\n />\r\n <label>Contrase\u00F1a</label>\r\n </p-floatLabel>\r\n @if (form.get('password')?.invalid && (form.get('password')?.dirty ||\r\n form.get('password')?.touched)) {\r\n <small class=\"text-red-500\">La contrase\u00F1a es obligatoria.</small>\r\n }\r\n </div>\r\n <ng-template #footer>\r\n <p-button\r\n label=\"Cancelar\"\r\n variant=\"outlined\"\r\n [rounded]=\"true\"\r\n icon=\"pi pi-times\"\r\n severity=\"danger\"\r\n (click)=\"visible = false\"\r\n />\r\n <p-button\r\n label=\"Generar\"\r\n variant=\"outlined\"\r\n [rounded]=\"true\"\r\n icon=\"pi pi-unlock\"\r\n severity=\"success\"\r\n [disabled]=\"!form.valid\"\r\n (click)=\"generarTokenPurpose()\"\r\n />\r\n </ng-template>\r\n </p-dialog>\r\n</form>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i2$2.Dialog, selector: "p-dialog", inputs: ["hostName", "header", "draggable", "resizable", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "maskMotionOptions", "motionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "closeButtonProps", "maximizeButtonProps", "visible", "style", "position", "role", "appendTo", "content", "contentTemplate", "footerTemplate", "closeIconTemplate", "maximizeIconTemplate", "minimizeIconTemplate", "headlessTemplate"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "ngmodule", type: AvatarModule }, { kind: "component", type: i2$3.Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$7.Button, selector: "p-button", inputs: ["hostName", "type", "badge", "disabled", "raised", "rounded", "text", "plain", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "iconPos", "icon", "label", "loading", "loadingIcon", "severity", "buttonProps", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i1$3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "showOnEllipsis", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "ptTooltip", "pTooltipPT", "pTooltipUnstyled"] }, { kind: "ngmodule", type: FloatLabelModule }, { kind: "component", type: i6.FloatLabel, selector: "p-floatlabel, p-floatLabel, p-float-label", inputs: ["variant"] }, { kind: "ngmodule", type: PasswordModule }, { kind: "component", type: i7.Password, selector: "p-password", inputs: ["ariaLabel", "ariaLabelledBy", "label", "promptLabel", "mediumRegex", "strongRegex", "weakLabel", "mediumLabel", "maxLength", "strongLabel", "inputId", "feedback", "toggleMask", "inputStyleClass", "styleClass", "inputStyle", "showTransitionOptions", "hideTransitionOptions", "autocomplete", "placeholder", "showClear", "autofocus", "tabindex", "appendTo", "motionOptions", "overlayOptions"], outputs: ["onFocus", "onBlur", "onClear"] }] });
|
|
4901
|
+
}
|
|
4902
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: TokenPurposeLogin, decorators: [{
|
|
4903
|
+
type: Component,
|
|
4904
|
+
args: [{ selector: 'app-token-purpose-login', imports: [
|
|
4905
|
+
FormsModule,
|
|
4906
|
+
ReactiveFormsModule,
|
|
4907
|
+
DialogModule,
|
|
4908
|
+
AvatarModule,
|
|
4909
|
+
ButtonModule,
|
|
4910
|
+
TooltipModule,
|
|
4911
|
+
FloatLabelModule,
|
|
4912
|
+
PasswordModule,
|
|
4913
|
+
], template: "<div class=\"flex\">\r\n <p-button\r\n (click)=\"showDialog()\"\r\n label=\"Generar Token\"\r\n pTooltip=\"Ingrese sus credenciales para generar un token de acceso.\"\r\n tooltipPosition=\"top\"\r\n severity=\"secondary\"\r\n icon=\"pi pi-lock\"\r\n [rounded]=\"true\"\r\n [raised]=\"true\"\r\n />\r\n</div>\r\n<form [formGroup]=\"form\">\r\n <p-dialog [(visible)]=\"visible\" [modal]=\"true\" [style]=\"{ width: '30rem' }\">\r\n <ng-template #header>\r\n <div class=\"flex items-center gap-2 px-2\">\r\n <p-avatar image=\"icon/folder.png\" size=\"large\" />\r\n <h5>Token de Seguridad</h5>\r\n </div>\r\n </ng-template>\r\n <span class=\"text-surface-500 dark:text-surface-400 block\"\r\n >Ingrese sus credenciales para generar un token de acceso.</span\r\n >\r\n <div class=\"mt-3\">\r\n <p-floatLabel variant=\"in\">\r\n <p-password\r\n formControlName=\"password\"\r\n [invalid]=\"form.get('password')?.invalid && (form.get('password')?.dirty || form.get('password')?.touched)\"\r\n [feedback]=\"false\"\r\n [toggleMask]=\"true\"\r\n fluid\r\n />\r\n <label>Contrase\u00F1a</label>\r\n </p-floatLabel>\r\n @if (form.get('password')?.invalid && (form.get('password')?.dirty ||\r\n form.get('password')?.touched)) {\r\n <small class=\"text-red-500\">La contrase\u00F1a es obligatoria.</small>\r\n }\r\n </div>\r\n <ng-template #footer>\r\n <p-button\r\n label=\"Cancelar\"\r\n variant=\"outlined\"\r\n [rounded]=\"true\"\r\n icon=\"pi pi-times\"\r\n severity=\"danger\"\r\n (click)=\"visible = false\"\r\n />\r\n <p-button\r\n label=\"Generar\"\r\n variant=\"outlined\"\r\n [rounded]=\"true\"\r\n icon=\"pi pi-unlock\"\r\n severity=\"success\"\r\n [disabled]=\"!form.valid\"\r\n (click)=\"generarTokenPurpose()\"\r\n />\r\n </ng-template>\r\n </p-dialog>\r\n</form>\r\n" }]
|
|
4914
|
+
}], ctorParameters: () => [] });
|
|
4915
|
+
|
|
4830
4916
|
/**
|
|
4831
4917
|
* Directiva de navegación por teclado entre elementos de una tabla.
|
|
4832
4918
|
*
|
|
@@ -4985,10 +5071,10 @@ class ArrowNavigationDirective {
|
|
|
4985
5071
|
return;
|
|
4986
5072
|
// console.log('[ArrowNavigationDirective]', message, data ?? '');
|
|
4987
5073
|
}
|
|
4988
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
4989
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.
|
|
5074
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: ArrowNavigationDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
5075
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.12", type: ArrowNavigationDirective, isStandalone: true, selector: "[appKeyboardNav]", host: { listeners: { "keydown": "handleKey($event)" } }, ngImport: i0 });
|
|
4990
5076
|
}
|
|
4991
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
5077
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: ArrowNavigationDirective, decorators: [{
|
|
4992
5078
|
type: Directive,
|
|
4993
5079
|
args: [{
|
|
4994
5080
|
selector: '[appKeyboardNav]',
|
|
@@ -5099,10 +5185,10 @@ class OnlyRangoPatternDirective {
|
|
|
5099
5185
|
event.preventDefault();
|
|
5100
5186
|
}
|
|
5101
5187
|
}
|
|
5102
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
5103
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.
|
|
5188
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: OnlyRangoPatternDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
5189
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.12", type: OnlyRangoPatternDirective, isStandalone: true, selector: "[appOnlyRangoPattern]", host: { listeners: { "keydown": "onKeyDown($event)", "paste": "onPaste($event)" } }, ngImport: i0 });
|
|
5104
5190
|
}
|
|
5105
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
5191
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: OnlyRangoPatternDirective, decorators: [{
|
|
5106
5192
|
type: Directive,
|
|
5107
5193
|
args: [{
|
|
5108
5194
|
selector: '[appOnlyRangoPattern]',
|
|
@@ -5122,10 +5208,10 @@ class SelectAllOnFocusDirective {
|
|
|
5122
5208
|
htmlInput.select();
|
|
5123
5209
|
}
|
|
5124
5210
|
}
|
|
5125
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
5126
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.
|
|
5211
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: SelectAllOnFocusDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5212
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.12", type: SelectAllOnFocusDirective, isStandalone: true, selector: "[appSelectAllOnFocus]", host: { listeners: { "onFocus": "selectAll($event)", "focus": "selectAll($event)" } }, ngImport: i0 });
|
|
5127
5213
|
}
|
|
5128
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
5214
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: SelectAllOnFocusDirective, decorators: [{
|
|
5129
5215
|
type: Directive,
|
|
5130
5216
|
args: [{
|
|
5131
5217
|
selector: '[appSelectAllOnFocus]',
|
|
@@ -5138,10 +5224,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImpo
|
|
|
5138
5224
|
args: ['focus', ['$event']]
|
|
5139
5225
|
}] } });
|
|
5140
5226
|
|
|
5227
|
+
const guardTokenPurposeGuard = (route, state) => {
|
|
5228
|
+
const authService = inject(AuthorizeService);
|
|
5229
|
+
const location = inject(Location);
|
|
5230
|
+
//console.log('[guardTokenPurposeGuard] ruta capturada:', state.url);
|
|
5231
|
+
if (authService.getTokenPurposeValid()) {
|
|
5232
|
+
// Permite pasar a la edición
|
|
5233
|
+
return true;
|
|
5234
|
+
}
|
|
5235
|
+
// Si no es válido:
|
|
5236
|
+
console.warn('Permiso denegado: Token Purpose no válido');
|
|
5237
|
+
// Regresa a la pantalla anterior del navegador.
|
|
5238
|
+
location.back();
|
|
5239
|
+
return false;
|
|
5240
|
+
};
|
|
5241
|
+
|
|
5141
5242
|
const CACHE_KEYS = new InjectionToken('CACHE_KEYS');
|
|
5142
5243
|
|
|
5143
5244
|
class ErrorHandlerService {
|
|
5144
5245
|
_serviceAlerta = inject(AlertaService);
|
|
5246
|
+
isPurposeTokenError(error) {
|
|
5247
|
+
const payload = error.error;
|
|
5248
|
+
return payload?.error === 'token_purpose_error';
|
|
5249
|
+
}
|
|
5250
|
+
getPurposeTokenDescription(error) {
|
|
5251
|
+
const payload = error.error;
|
|
5252
|
+
return (payload?.error_description ||
|
|
5253
|
+
'Se requiere un token especial para acceder a este recurso.');
|
|
5254
|
+
}
|
|
5145
5255
|
handleErrorResponse(error) {
|
|
5146
5256
|
// Si el error ya no es un HttpErrorResponse (por ejemplo, un Error relanzado
|
|
5147
5257
|
// desde otro catch), sólo lo propagamos sin volver a mostrar mensajes.
|
|
@@ -5160,8 +5270,9 @@ class ErrorHandlerService {
|
|
|
5160
5270
|
'Solicitud incorrecta (400). Verifica los datos ingresados o validaciones existentes.';
|
|
5161
5271
|
break;
|
|
5162
5272
|
case HttpStatusCode.Unauthorized:
|
|
5163
|
-
userMessage =
|
|
5164
|
-
'<b>Acceso no autorizado</b> (401).
|
|
5273
|
+
userMessage = this.isPurposeTokenError(error)
|
|
5274
|
+
? '<b>Acceso a recurso sensible no autorizado</b> (401).'
|
|
5275
|
+
: '<b>Acceso no autorizado</b> (401). Por favor inicia sesión.';
|
|
5165
5276
|
break;
|
|
5166
5277
|
case HttpStatusCode.Forbidden:
|
|
5167
5278
|
userMessage = 'No tienes permisos para realizar esta acción (403).';
|
|
@@ -5183,7 +5294,12 @@ class ErrorHandlerService {
|
|
|
5183
5294
|
}
|
|
5184
5295
|
// Preparar detalle del error para mostrar, priorizando solo la parte "errors" del objeto
|
|
5185
5296
|
let errorDetail = '';
|
|
5186
|
-
if (
|
|
5297
|
+
if (this.isPurposeTokenError(error)) {
|
|
5298
|
+
errorDetail = this.getPurposeTokenDescription(error);
|
|
5299
|
+
}
|
|
5300
|
+
else if (error &&
|
|
5301
|
+
typeof error.error === 'object' &&
|
|
5302
|
+
error.error !== null) {
|
|
5187
5303
|
const anyError = error.error;
|
|
5188
5304
|
// Si existe la propiedad "errors" (típica de ASP.NET Core ProblemDetails), usar solo esa
|
|
5189
5305
|
const validationErrors = anyError.errors ?? anyError.Errors;
|
|
@@ -5222,10 +5338,10 @@ class ErrorHandlerService {
|
|
|
5222
5338
|
// Retornar el error para continuar con el flujo de manejo de errores
|
|
5223
5339
|
return throwError(() => new Error(technicalMessage));
|
|
5224
5340
|
}
|
|
5225
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
5226
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
5341
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: ErrorHandlerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5342
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: ErrorHandlerService, providedIn: 'root' });
|
|
5227
5343
|
}
|
|
5228
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
5344
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: ErrorHandlerService, decorators: [{
|
|
5229
5345
|
type: Injectable,
|
|
5230
5346
|
args: [{
|
|
5231
5347
|
providedIn: 'root',
|
|
@@ -5252,6 +5368,7 @@ const httpAuthorizeInterceptor = (req, next) => {
|
|
|
5252
5368
|
const _handleErrorService = inject(ErrorHandlerService);
|
|
5253
5369
|
const _metricsService = inject(RequestMetricsService);
|
|
5254
5370
|
const _token = _authorizeService.getToken();
|
|
5371
|
+
const _tokenPurpose = _authorizeService.getTokenPurpose();
|
|
5255
5372
|
let authReq = req;
|
|
5256
5373
|
// Si la URL de la petición es inválida, retorna un observable vacío
|
|
5257
5374
|
// Surgio a partir de angular V21
|
|
@@ -5270,6 +5387,14 @@ const httpAuthorizeInterceptor = (req, next) => {
|
|
|
5270
5387
|
setHeaders: { Authorization: `Bearer ${_token}` },
|
|
5271
5388
|
});
|
|
5272
5389
|
}
|
|
5390
|
+
// Validar si el token de propósito es válido y agregarlo a la petición si es necesario
|
|
5391
|
+
if (_tokenPurpose && _authorizeService.getTokenPurposeValid()) {
|
|
5392
|
+
authReq = authReq.clone({
|
|
5393
|
+
setHeaders: { 'X-Special-Token': _tokenPurpose },
|
|
5394
|
+
});
|
|
5395
|
+
// Debería incluir X-Special-Token
|
|
5396
|
+
// console.log('Cabeceras enviadas:', authReq.headers.keys());
|
|
5397
|
+
}
|
|
5273
5398
|
//console.log('Interceptor - Petición HTTP iniciada:', req.url);
|
|
5274
5399
|
// Para depuración: muestra el token agregado
|
|
5275
5400
|
//console.log('Interceptor - Token agregado a la petición:', authReq);
|
|
@@ -5350,8 +5475,8 @@ function createInitialCache(cacheKeys) {
|
|
|
5350
5475
|
}
|
|
5351
5476
|
|
|
5352
5477
|
class DsxAddToolsModule {
|
|
5353
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
5354
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.
|
|
5478
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DsxAddToolsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
5479
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.12", ngImport: i0, type: DsxAddToolsModule, imports: [DsxButtonComponent,
|
|
5355
5480
|
DsxEnableDisable,
|
|
5356
5481
|
IconDsxComponent,
|
|
5357
5482
|
JsonValuesDebujComponent,
|
|
@@ -5363,11 +5488,11 @@ class DsxAddToolsModule {
|
|
|
5363
5488
|
JsonValuesDebujComponent,
|
|
5364
5489
|
ReactiveFormsModule,
|
|
5365
5490
|
RouterLink] });
|
|
5366
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.
|
|
5491
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DsxAddToolsModule, imports: [DsxButtonComponent, CommonModule,
|
|
5367
5492
|
FormsModule,
|
|
5368
5493
|
ReactiveFormsModule] });
|
|
5369
5494
|
}
|
|
5370
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
5495
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DsxAddToolsModule, decorators: [{
|
|
5371
5496
|
type: NgModule,
|
|
5372
5497
|
args: [{
|
|
5373
5498
|
declarations: [],
|
|
@@ -5450,8 +5575,8 @@ const PRIME_NG_MODULES = [
|
|
|
5450
5575
|
TreeTableModule,
|
|
5451
5576
|
];
|
|
5452
5577
|
class PrimeNgModule {
|
|
5453
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
5454
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.
|
|
5578
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: PrimeNgModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
5579
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.12", ngImport: i0, type: PrimeNgModule, exports: [AccordionModule,
|
|
5455
5580
|
AutoCompleteModule,
|
|
5456
5581
|
AutoFocusModule,
|
|
5457
5582
|
AvatarGroupModule,
|
|
@@ -5506,7 +5631,7 @@ class PrimeNgModule {
|
|
|
5506
5631
|
TooltipModule,
|
|
5507
5632
|
TreeModule,
|
|
5508
5633
|
TreeTableModule] });
|
|
5509
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.
|
|
5634
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: PrimeNgModule, imports: [AccordionModule,
|
|
5510
5635
|
AutoCompleteModule,
|
|
5511
5636
|
AutoFocusModule,
|
|
5512
5637
|
AvatarGroupModule,
|
|
@@ -5562,7 +5687,7 @@ class PrimeNgModule {
|
|
|
5562
5687
|
TreeModule,
|
|
5563
5688
|
TreeTableModule] });
|
|
5564
5689
|
}
|
|
5565
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
5690
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: PrimeNgModule, decorators: [{
|
|
5566
5691
|
type: NgModule,
|
|
5567
5692
|
args: [{
|
|
5568
5693
|
declarations: [],
|
|
@@ -5617,10 +5742,10 @@ class JoinByPipe {
|
|
|
5617
5742
|
.filter((value) => value.length > 0)
|
|
5618
5743
|
.join(separator);
|
|
5619
5744
|
}
|
|
5620
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
5621
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.
|
|
5745
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: JoinByPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
5746
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.12", ngImport: i0, type: JoinByPipe, isStandalone: true, name: "joinBy" });
|
|
5622
5747
|
}
|
|
5623
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
5748
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: JoinByPipe, decorators: [{
|
|
5624
5749
|
type: Pipe,
|
|
5625
5750
|
args: [{
|
|
5626
5751
|
name: 'joinBy',
|
|
@@ -5655,10 +5780,10 @@ class TruncatePipe {
|
|
|
5655
5780
|
// Trunca el texto y añade el ellipsis si la longitud del texto supera el límite.
|
|
5656
5781
|
return value.length > limit ? value.slice(0, limit) + ellipsis : value;
|
|
5657
5782
|
}
|
|
5658
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
5659
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.
|
|
5783
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: TruncatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
5784
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.12", ngImport: i0, type: TruncatePipe, isStandalone: true, name: "truncate" });
|
|
5660
5785
|
}
|
|
5661
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
5786
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: TruncatePipe, decorators: [{
|
|
5662
5787
|
type: Pipe,
|
|
5663
5788
|
args: [{
|
|
5664
5789
|
name: 'truncate',
|
|
@@ -5741,10 +5866,10 @@ class EndpointService {
|
|
|
5741
5866
|
delete(endpoint, id, softDelete = true) {
|
|
5742
5867
|
return this.http.delete(`${this.getUrl(endpoint)}/delete/${id}/${softDelete}`);
|
|
5743
5868
|
}
|
|
5744
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
5745
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
5869
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: EndpointService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5870
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: EndpointService, providedIn: 'root' });
|
|
5746
5871
|
}
|
|
5747
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
5872
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: EndpointService, decorators: [{
|
|
5748
5873
|
type: Injectable,
|
|
5749
5874
|
args: [{
|
|
5750
5875
|
providedIn: 'root',
|
|
@@ -5802,10 +5927,10 @@ class BaseCRUDService {
|
|
|
5802
5927
|
listGroup(invalidateCache = false) {
|
|
5803
5928
|
return this._endpointService.listGroup(this.endpoint, invalidateCache);
|
|
5804
5929
|
}
|
|
5805
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
5806
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
5930
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: BaseCRUDService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5931
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: BaseCRUDService, providedIn: 'root' });
|
|
5807
5932
|
}
|
|
5808
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
5933
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: BaseCRUDService, decorators: [{
|
|
5809
5934
|
type: Injectable,
|
|
5810
5935
|
args: [{
|
|
5811
5936
|
providedIn: 'root',
|
|
@@ -5906,10 +6031,10 @@ class CacheService {
|
|
|
5906
6031
|
this._options.set(current);
|
|
5907
6032
|
this.alert.toastrAlerts(2, 'Estado', 'Datos actualizados (cache).', 2, 1000);
|
|
5908
6033
|
}
|
|
5909
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
5910
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
6034
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: CacheService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
6035
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: CacheService, providedIn: 'root' });
|
|
5911
6036
|
}
|
|
5912
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
6037
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: CacheService, decorators: [{
|
|
5913
6038
|
type: Injectable,
|
|
5914
6039
|
args: [{
|
|
5915
6040
|
providedIn: 'root',
|
|
@@ -5942,10 +6067,10 @@ class DteService {
|
|
|
5942
6067
|
responseType: 'blob',
|
|
5943
6068
|
});
|
|
5944
6069
|
}
|
|
5945
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
5946
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
6070
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DteService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
6071
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DteService, providedIn: 'root' });
|
|
5947
6072
|
}
|
|
5948
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
6073
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: DteService, decorators: [{
|
|
5949
6074
|
type: Injectable,
|
|
5950
6075
|
args: [{
|
|
5951
6076
|
providedIn: 'root',
|
|
@@ -6123,10 +6248,10 @@ class HttpHelpersService {
|
|
|
6123
6248
|
}
|
|
6124
6249
|
return String(value);
|
|
6125
6250
|
}
|
|
6126
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
6127
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
6251
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: HttpHelpersService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
6252
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: HttpHelpersService, providedIn: 'root' });
|
|
6128
6253
|
}
|
|
6129
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
6254
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: HttpHelpersService, decorators: [{
|
|
6130
6255
|
type: Injectable,
|
|
6131
6256
|
args: [{
|
|
6132
6257
|
providedIn: 'root',
|
|
@@ -6340,10 +6465,10 @@ class MasterDetailChangeService {
|
|
|
6340
6465
|
},
|
|
6341
6466
|
};
|
|
6342
6467
|
}
|
|
6343
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
6344
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.
|
|
6468
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: MasterDetailChangeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
6469
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: MasterDetailChangeService, providedIn: 'root' });
|
|
6345
6470
|
}
|
|
6346
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
6471
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.12", ngImport: i0, type: MasterDetailChangeService, decorators: [{
|
|
6347
6472
|
type: Injectable,
|
|
6348
6473
|
args: [{
|
|
6349
6474
|
providedIn: 'root',
|
|
@@ -6887,5 +7012,5 @@ function minimumAgeValidator(minimumAge, referenceDate) {
|
|
|
6887
7012
|
* Generated bundle index. Do not edit.
|
|
6888
7013
|
*/
|
|
6889
7014
|
|
|
6890
|
-
export { ACTION_TYPES, AlertaService, AppMessageErrorComponent, ArrowNavigationDirective, AuthorizeService, BaseCRUDService, CACHE_KEYS, CacheService, CssV2Component, DSX_PALETTE, DateIndicator, DocxPreviewComponent, DsxAddToolsModule, DsxButtonComponent, DsxEnableDisable, DsxStatusToggle, DteService, ENVIRONMENT, EndpointService, ErrorHandlerService, FileComponent, GTQFormatter, HttpHelpersService, INITIAL_PARAMETERS, IconDsxComponent, JoinByPipe, JsonHighlightPipe, JsonValuesDebujComponent, JsonViewerComponent, KpicardComponent, LoadingComponent, LoadingLottieComponent, LogoDsxComponent, MasterDetailChangeService, NavbarDsxComponent, NetworkStatusComponent, OnlyRangoPatternDirective, ParameterValuesService, PdfPreviewComponent, PrimeNgModule, SWEET_ALERT_THEMES, SecurityService, SelectAllOnFocusDirective, SpinnerLoadingService, TemplateHighlight, TruncatePipe, UtilityAddService, asyncExistsValidator, atLeastOneFieldRequiredValidator, chainControlGroups, createCurrencyFormatter, createInitialCache, createTypedCacheProvider, cuiValidator, dateMinMaxValidator, dateRangeValidator, dateRangeValidatorFromTo, developmentEnvironment, getZeroBasedRolIndex, httpAuthorizeInterceptor, minimumAgeValidator, nitValidator, productionEnvironment, provideEnvironment, templateVariablesValidator, validateEnvironmentConfig };
|
|
7015
|
+
export { ACTION_TYPES, AlertaService, AppMessageErrorComponent, ArrowNavigationDirective, AuthorizeService, BaseCRUDService, CACHE_KEYS, CacheService, CssV2Component, DSX_PALETTE, DateIndicator, DocxPreviewComponent, DsxAddToolsModule, DsxButtonComponent, DsxEnableDisable, DsxStatusToggle, DteService, ENVIRONMENT, EndpointService, ErrorHandlerService, FileComponent, GTQFormatter, HttpHelpersService, INITIAL_PARAMETERS, IconDsxComponent, JoinByPipe, JsonHighlightPipe, JsonValuesDebujComponent, JsonViewerComponent, KpicardComponent, LoadingComponent, LoadingLottieComponent, LogoDsxComponent, MasterDetailChangeService, NavbarDsxComponent, NetworkStatusComponent, OnlyRangoPatternDirective, ParameterValuesService, PdfPreviewComponent, PrimeNgModule, SWEET_ALERT_THEMES, SecurityService, SelectAllOnFocusDirective, SpinnerLoadingService, TemplateHighlight, TokenPurposeLogin, TruncatePipe, UtilityAddService, asyncExistsValidator, atLeastOneFieldRequiredValidator, chainControlGroups, createCurrencyFormatter, createInitialCache, createTypedCacheProvider, cuiValidator, dateMinMaxValidator, dateRangeValidator, dateRangeValidatorFromTo, developmentEnvironment, getZeroBasedRolIndex, guardTokenPurposeGuard, httpAuthorizeInterceptor, minimumAgeValidator, nitValidator, productionEnvironment, provideEnvironment, templateVariablesValidator, validateEnvironmentConfig };
|
|
6891
7016
|
//# sourceMappingURL=ngx-dsxlibrary.mjs.map
|