@jvsoft/components 1.0.0-alpha.4 → 1.0.0-alpha.6
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/dialog-flotante/README.md +169 -0
- package/dialog-flotante/dialog-flotante.component.d.ts +13 -22
- package/fesm2022/jvsoft-components-dialog-flotante.mjs +51 -84
- package/fesm2022/jvsoft-components-dialog-flotante.mjs.map +1 -1
- package/fesm2022/jvsoft-components-lista-arbol.mjs +3 -3
- package/fesm2022/jvsoft-components-lista-arbol.mjs.map +1 -1
- package/fesm2022/jvsoft-components-luces-navidad.mjs +3 -3
- package/fesm2022/jvsoft-components-luces-navidad.mjs.map +1 -1
- package/fesm2022/jvsoft-components-mat-suffix-search-button.mjs +3 -3
- package/fesm2022/jvsoft-components-mat-suffix-search-button.mjs.map +1 -1
- package/fesm2022/jvsoft-components-menu.mjs +3 -3
- package/fesm2022/jvsoft-components-menu.mjs.map +1 -1
- package/fesm2022/jvsoft-components-tabla-mantenimiento-components-progress-bar.mjs +3 -3
- package/fesm2022/jvsoft-components-tabla-mantenimiento-components-progress-bar.mjs.map +1 -1
- package/fesm2022/jvsoft-components-tabla-mantenimiento.mjs +54 -54
- package/fesm2022/jvsoft-components-tabla-mantenimiento.mjs.map +1 -1
- package/fesm2022/jvsoft-components.mjs +117 -150
- package/fesm2022/jvsoft-components.mjs.map +1 -1
- package/package.json +6 -6
- package/src/styles/base-jvsoft-components.css +4 -4
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { input, booleanAttribute, output, computed, Component, EventEmitter, HostListener, Output, Input, Directive, ViewChild, Optional, inject, Pipe, NgModule, ContentChildren, ViewChildren, Injectable, ElementRef, HostBinding } from '@angular/core';
|
|
3
3
|
import * as i3 from '@angular/material/dialog';
|
|
4
4
|
import { MatDialogModule } from '@angular/material/dialog';
|
|
5
5
|
import * as i4 from '@angular/material/icon';
|
|
@@ -46,82 +46,69 @@ import { NestedTreeControl } from '@angular/cdk/tree';
|
|
|
46
46
|
import { DataModel as DataModel$1 } from '@jvsoft/utils';
|
|
47
47
|
|
|
48
48
|
class DialogFlotanteComponent {
|
|
49
|
-
cssClases = {};
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
set sinBarraDeAccion(val) {
|
|
62
|
-
this._sinBarraDeAccion = val == '';
|
|
63
|
-
}
|
|
49
|
+
cssClases = input({});
|
|
50
|
+
sinTitulo = input(false, { transform: booleanAttribute });
|
|
51
|
+
sinBarraDeAccion = input(false, { transform: booleanAttribute });
|
|
52
|
+
btnCerrarBarra = input(false, { transform: booleanAttribute });
|
|
53
|
+
iconoTitulo = input(undefined);
|
|
54
|
+
matDialogRefActual = input(undefined);
|
|
55
|
+
// Inputs crudos para botones (string | boolean | object)
|
|
56
|
+
btnGuardarInput = input(undefined, { alias: 'btnGuardar' });
|
|
57
|
+
btnCerrarInput = input(undefined, { alias: 'btnCerrar' });
|
|
58
|
+
btnGuardarClick = output();
|
|
59
|
+
btnCerrarClick = output();
|
|
64
60
|
defaultBtnCerrar = { label: 'CERRAR', class: 'text-gray-700 border-gray-700' };
|
|
65
|
-
_btnCerrar = this.defaultBtnCerrar;
|
|
66
|
-
get btnCerrar() {
|
|
67
|
-
return this._btnCerrar;
|
|
68
|
-
}
|
|
69
|
-
set btnCerrar(val) {
|
|
70
|
-
if (val == null || val === '') {
|
|
71
|
-
this._btnCerrar = this.defaultBtnCerrar;
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
this._btnCerrar = (typeof val === 'string' && val !== '') ? { ...this.defaultBtnCerrar, label: val } :
|
|
75
|
-
(typeof val === 'boolean' && val) ? this.defaultBtnCerrar :
|
|
76
|
-
val ?? this.defaultBtnCerrar;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
_btnCerrarBarra = true;
|
|
80
|
-
get btnCerrarBarra() {
|
|
81
|
-
return this._btnCerrarBarra;
|
|
82
|
-
}
|
|
83
|
-
set btnCerrarBarra(val) {
|
|
84
|
-
this._btnCerrarBarra = val || true;
|
|
85
|
-
}
|
|
86
61
|
defaultBtnGuardar = {
|
|
87
62
|
label: 'GUARDAR', class: 'text-blue-700 border-blue-700', icono: 'roundSave'
|
|
88
63
|
};
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
64
|
+
// Computed signals para normalizar la configuración de botones
|
|
65
|
+
btnCerrar = computed(() => {
|
|
66
|
+
const val = this.btnCerrarInput();
|
|
67
|
+
// Si es false, null o undefined -> NO MOSTRAR
|
|
68
|
+
if (val === false || val === null || val === undefined)
|
|
69
|
+
return undefined;
|
|
70
|
+
// Si es string vacío (atributo presente sin valor) o true -> MOSTRAR DEFAULT
|
|
71
|
+
if (val === '' || val === true)
|
|
72
|
+
return this.defaultBtnCerrar;
|
|
73
|
+
// Si es string con valor -> MOSTRAR DEFAULT CON LABEL
|
|
74
|
+
if (typeof val === 'string')
|
|
75
|
+
return { ...this.defaultBtnCerrar, label: val };
|
|
76
|
+
// Si es objeto -> USAR EL OBJETO
|
|
77
|
+
return val;
|
|
78
|
+
});
|
|
79
|
+
btnGuardar = computed(() => {
|
|
80
|
+
const val = this.btnGuardarInput();
|
|
81
|
+
// Si es false, null o undefined -> NO MOSTRAR
|
|
82
|
+
if (val === false || val === null || val === undefined)
|
|
83
|
+
return undefined;
|
|
84
|
+
// Si es string vacío (atributo presente sin valor) o true -> MOSTRAR DEFAULT
|
|
85
|
+
if (val === '' || val === true)
|
|
86
|
+
return this.defaultBtnGuardar;
|
|
87
|
+
// Si es string con valor -> MOSTRAR DEFAULT CON LABEL
|
|
88
|
+
if (typeof val === 'string')
|
|
89
|
+
return { ...this.defaultBtnGuardar, label: val };
|
|
90
|
+
// Si es objeto -> USAR EL OBJETO
|
|
91
|
+
return val;
|
|
92
|
+
});
|
|
107
93
|
guardarDialogo() {
|
|
108
94
|
this.btnGuardarClick.emit(true);
|
|
109
95
|
}
|
|
110
96
|
cerrarDialogo() {
|
|
111
97
|
this.btnCerrarClick.emit(true);
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
98
|
+
const ref = this.matDialogRefActual();
|
|
99
|
+
if (ref) {
|
|
100
|
+
if (ref.componentInstance?.validarCerrarDialog) {
|
|
101
|
+
ref.componentInstance?.validarCerrarDialog();
|
|
115
102
|
}
|
|
116
103
|
else {
|
|
117
|
-
|
|
104
|
+
ref.close('Cerrado GDLG');
|
|
118
105
|
}
|
|
119
106
|
}
|
|
120
107
|
}
|
|
121
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
122
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
108
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DialogFlotanteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
109
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.14", type: DialogFlotanteComponent, isStandalone: true, selector: "[jvsDialogFlotante]", inputs: { cssClases: { classPropertyName: "cssClases", publicName: "cssClases", isSignal: true, isRequired: false, transformFunction: null }, sinTitulo: { classPropertyName: "sinTitulo", publicName: "sinTitulo", isSignal: true, isRequired: false, transformFunction: null }, sinBarraDeAccion: { classPropertyName: "sinBarraDeAccion", publicName: "sinBarraDeAccion", isSignal: true, isRequired: false, transformFunction: null }, btnCerrarBarra: { classPropertyName: "btnCerrarBarra", publicName: "btnCerrarBarra", isSignal: true, isRequired: false, transformFunction: null }, iconoTitulo: { classPropertyName: "iconoTitulo", publicName: "iconoTitulo", isSignal: true, isRequired: false, transformFunction: null }, matDialogRefActual: { classPropertyName: "matDialogRefActual", publicName: "matDialogRefActual", isSignal: true, isRequired: false, transformFunction: null }, btnGuardarInput: { classPropertyName: "btnGuardarInput", publicName: "btnGuardar", isSignal: true, isRequired: false, transformFunction: null }, btnCerrarInput: { classPropertyName: "btnCerrarInput", publicName: "btnCerrar", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { btnGuardarClick: "btnGuardarClick", btnCerrarClick: "btnCerrarClick" }, host: { classAttribute: "jvs-dialog-flotante" }, ngImport: i0, template: "<ng-container *ngIf=\"sinTitulo(); else conTitulo\">\n <ng-container [ngTemplateOutlet]=\"parteComun\"></ng-container>\n</ng-container>\n\n<ng-template #conTitulo>\n <div cdkDrag class=\"block h-full\" cdkDragRootElement=\".cdk-overlay-pane\" cdkDragBoundary=\"body\">\n <div class=\"flex-auto flex items-center justify-between hover:cursor-move gap-1\"\n [ngClass]=\"cssClases()['titulo'] ?? 'bg-primary text-primary-contrast'\"\n mat-dialog-title cdkDragHandle>\n\n <mat-icon *ngIf=\"iconoTitulo()\" class=\"flex-none icon-xs\" [svgIcon]=\"iconoTitulo()!\"></mat-icon>\n <ng-content select=\"[tituloImagen]\"></ng-content>\n <h5 class=\"flex-1 m-0\">\n <ng-content select=\"[titulo]\"></ng-content>\n </h5>\n <ng-content select=\"[selectTitulo]\"></ng-content>\n\n <ng-container *ngIf=\"btnCerrar() || btnCerrarBarra()\">\n <button matRipple class=\"flex items-center justify-center ml-2 h-6 w-6 bg-red-700 rounded-md text-white\"\n type=\"button\" [mat-dialog-close]=\"!matDialogRefActual()\"\n (click)=\"matDialogRefActual() ? cerrarDialogo() : null\">\n <mat-icon svgIcon=\"roundClose\"></mat-icon>\n </button>\n </ng-container>\n </div>\n\n <mat-divider class=\"flex-auto bg-primary\"></mat-divider>\n <ng-container [ngTemplateOutlet]=\"parteComun\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #parteComun>\n <mat-dialog-content class=\"flex-1\">\n <div class=\"contenedor-cuerpo\">\n <ng-content select=\"[cuerpo]\"></ng-content>\n </div>\n </mat-dialog-content>\n\n <mat-dialog-actions class=\"flex-auto flex items-center justify-between gap-1 pt-0 mt-0\" *ngIf=\"!sinBarraDeAccion()\">\n <div class=\"flex items-start justify-start gap-1\">\n <ng-content select=\"[pieIzquierda]\"></ng-content>\n </div>\n <div class=\"flex items-center justify-center gap-1\">\n <ng-content select=\"[pieCentro]\"></ng-content>\n </div>\n <div class=\"flex items-end justify-end gap-1\">\n <ng-content select=\"[pieDerecha]\"></ng-content>\n\n <!-- Bot\u00F3n Guardar -->\n <button matRipple *ngIf=\"btnGuardar()\" type=\"submit\"\n class=\"boton-dialog-flotante\" [ngClass]=\"btnGuardar()!.class\"\n [class]=\"cssClases()['btnGuardar']\" (click)=\"guardarDialogo()\">\n <mat-icon class=\"icon-xs\" [svgIcon]=\"btnGuardar()?.icono ?? ''\"></mat-icon>\n <span>{{ btnGuardar()!.label }}</span>\n </button>\n\n <!-- Bot\u00F3n Cerrar -->\n <button matRipple *ngIf=\"btnCerrar()\" type=\"button\"\n class=\"boton-dialog-flotante\" [ngClass]=\"btnCerrar()!.class\"\n [mat-dialog-close]=\"!matDialogRefActual()\" (click)=\"matDialogRefActual() ? cerrarDialogo() : null\">\n <mat-icon class=\"icon-xs\" svgIcon=\"roundClose\"></mat-icon>\n <span>{{ btnCerrar()!.label }}</span>\n </button>\n </div>\n </mat-dialog-actions>\n</ng-template>\n", styles: [".jvs-dialog-flotante{max-width:98vw}.jvs-dialog-flotante .mat-mdc-dialog-title .mat-mdc-checkbox .mdc-form-field{color:unset}.jvs-dialog-flotante .mat-mdc-dialog-title .mat-mdc-checkbox .mdc-checkbox__native-control:enabled:focus:focus:not(:checked):not(:indeterminate)~.mdc-checkbox__background{border-color:var(--color-prnpx tailwindcss init --fullimary-contrast)!important}.jvs-dialog-flotante fieldset{@apply w-full sm:w-auto rounded-sm bg-transparent pt-0 pb-1 px-1 border;}.jvs-dialog-flotante fieldset legend{@apply px-2 font-bold border-0 bg-transparent;width:auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i3.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }] });
|
|
123
110
|
}
|
|
124
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
111
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DialogFlotanteComponent, decorators: [{
|
|
125
112
|
type: Component,
|
|
126
113
|
args: [{ selector: '[jvsDialogFlotante]', imports: [
|
|
127
114
|
CommonModule,
|
|
@@ -133,28 +120,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImpo
|
|
|
133
120
|
MatDivider,
|
|
134
121
|
], host: {
|
|
135
122
|
class: 'jvs-dialog-flotante',
|
|
136
|
-
}, template: "<ng-container *ngIf=\"sinTitulo; else conTitulo\">\n <ng-container [ngTemplateOutlet]=\"parteComun\"></ng-container>\n</ng-container>\n\n<ng-template #conTitulo>\n <div cdkDrag class=\"block h-full\" cdkDragRootElement=\".cdk-overlay-pane\" cdkDragBoundary=\"body\">\n <div class=\"flex-auto flex items-center justify-between hover:cursor-move gap-1\"\n [ngClass]=\"cssClases['titulo'] ?? 'bg-primary text-primary-contrast'\"\n mat-dialog-title cdkDragHandle>\n\n <mat-icon *ngIf=\"iconoTitulo\" class=\"flex-none icon-xs\" [svgIcon]=\"iconoTitulo
|
|
137
|
-
}]
|
|
138
|
-
type: Input
|
|
139
|
-
}], sinTitulo: [{
|
|
140
|
-
type: Input
|
|
141
|
-
}], sinBarraDeAccion: [{
|
|
142
|
-
type: Input
|
|
143
|
-
}], btnCerrar: [{
|
|
144
|
-
type: Input
|
|
145
|
-
}], btnCerrarBarra: [{
|
|
146
|
-
type: Input
|
|
147
|
-
}], btnGuardar: [{
|
|
148
|
-
type: Input
|
|
149
|
-
}], iconoTitulo: [{
|
|
150
|
-
type: Input
|
|
151
|
-
}], matDialogRefActual: [{
|
|
152
|
-
type: Input
|
|
153
|
-
}], btnGuardarClick: [{
|
|
154
|
-
type: Output
|
|
155
|
-
}], btnCerrarClick: [{
|
|
156
|
-
type: Output
|
|
157
|
-
}] } });
|
|
123
|
+
}, template: "<ng-container *ngIf=\"sinTitulo(); else conTitulo\">\n <ng-container [ngTemplateOutlet]=\"parteComun\"></ng-container>\n</ng-container>\n\n<ng-template #conTitulo>\n <div cdkDrag class=\"block h-full\" cdkDragRootElement=\".cdk-overlay-pane\" cdkDragBoundary=\"body\">\n <div class=\"flex-auto flex items-center justify-between hover:cursor-move gap-1\"\n [ngClass]=\"cssClases()['titulo'] ?? 'bg-primary text-primary-contrast'\"\n mat-dialog-title cdkDragHandle>\n\n <mat-icon *ngIf=\"iconoTitulo()\" class=\"flex-none icon-xs\" [svgIcon]=\"iconoTitulo()!\"></mat-icon>\n <ng-content select=\"[tituloImagen]\"></ng-content>\n <h5 class=\"flex-1 m-0\">\n <ng-content select=\"[titulo]\"></ng-content>\n </h5>\n <ng-content select=\"[selectTitulo]\"></ng-content>\n\n <ng-container *ngIf=\"btnCerrar() || btnCerrarBarra()\">\n <button matRipple class=\"flex items-center justify-center ml-2 h-6 w-6 bg-red-700 rounded-md text-white\"\n type=\"button\" [mat-dialog-close]=\"!matDialogRefActual()\"\n (click)=\"matDialogRefActual() ? cerrarDialogo() : null\">\n <mat-icon svgIcon=\"roundClose\"></mat-icon>\n </button>\n </ng-container>\n </div>\n\n <mat-divider class=\"flex-auto bg-primary\"></mat-divider>\n <ng-container [ngTemplateOutlet]=\"parteComun\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #parteComun>\n <mat-dialog-content class=\"flex-1\">\n <div class=\"contenedor-cuerpo\">\n <ng-content select=\"[cuerpo]\"></ng-content>\n </div>\n </mat-dialog-content>\n\n <mat-dialog-actions class=\"flex-auto flex items-center justify-between gap-1 pt-0 mt-0\" *ngIf=\"!sinBarraDeAccion()\">\n <div class=\"flex items-start justify-start gap-1\">\n <ng-content select=\"[pieIzquierda]\"></ng-content>\n </div>\n <div class=\"flex items-center justify-center gap-1\">\n <ng-content select=\"[pieCentro]\"></ng-content>\n </div>\n <div class=\"flex items-end justify-end gap-1\">\n <ng-content select=\"[pieDerecha]\"></ng-content>\n\n <!-- Bot\u00F3n Guardar -->\n <button matRipple *ngIf=\"btnGuardar()\" type=\"submit\"\n class=\"boton-dialog-flotante\" [ngClass]=\"btnGuardar()!.class\"\n [class]=\"cssClases()['btnGuardar']\" (click)=\"guardarDialogo()\">\n <mat-icon class=\"icon-xs\" [svgIcon]=\"btnGuardar()?.icono ?? ''\"></mat-icon>\n <span>{{ btnGuardar()!.label }}</span>\n </button>\n\n <!-- Bot\u00F3n Cerrar -->\n <button matRipple *ngIf=\"btnCerrar()\" type=\"button\"\n class=\"boton-dialog-flotante\" [ngClass]=\"btnCerrar()!.class\"\n [mat-dialog-close]=\"!matDialogRefActual()\" (click)=\"matDialogRefActual() ? cerrarDialogo() : null\">\n <mat-icon class=\"icon-xs\" svgIcon=\"roundClose\"></mat-icon>\n <span>{{ btnCerrar()!.label }}</span>\n </button>\n </div>\n </mat-dialog-actions>\n</ng-template>\n", styles: [".jvs-dialog-flotante{max-width:98vw}.jvs-dialog-flotante .mat-mdc-dialog-title .mat-mdc-checkbox .mdc-form-field{color:unset}.jvs-dialog-flotante .mat-mdc-dialog-title .mat-mdc-checkbox .mdc-checkbox__native-control:enabled:focus:focus:not(:checked):not(:indeterminate)~.mdc-checkbox__background{border-color:var(--color-prnpx tailwindcss init --fullimary-contrast)!important}.jvs-dialog-flotante fieldset{@apply w-full sm:w-auto rounded-sm bg-transparent pt-0 pb-1 px-1 border;}.jvs-dialog-flotante fieldset legend{@apply px-2 font-bold border-0 bg-transparent;width:auto}\n"] }]
|
|
124
|
+
}] });
|
|
158
125
|
|
|
159
126
|
function buscarEnArray(coleccion, idBuscar, dato) {
|
|
160
127
|
if (!Array.isArray(coleccion) || coleccion.length === 0)
|
|
@@ -416,10 +383,10 @@ class MatRowKeyboardSelectionDirective {
|
|
|
416
383
|
}
|
|
417
384
|
return undefined;
|
|
418
385
|
}
|
|
419
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
420
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.
|
|
386
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: MatRowKeyboardSelectionDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
387
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.14", type: MatRowKeyboardSelectionDirective, isStandalone: true, selector: "[matRowKeyboardSelection]", inputs: { tabla: ["matRowKeyboardSelection", "tabla"], rowModel: "rowModel" }, outputs: { seleccionarSiguiente: "seleccionarSiguiente" }, host: { listeners: { "keydown": "onKeydown($event)" } }, ngImport: i0 });
|
|
421
388
|
}
|
|
422
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
389
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: MatRowKeyboardSelectionDirective, decorators: [{
|
|
423
390
|
type: Directive,
|
|
424
391
|
args: [{
|
|
425
392
|
selector: '[matRowKeyboardSelection]'
|
|
@@ -460,10 +427,10 @@ class ColumnTypeComponent {
|
|
|
460
427
|
}
|
|
461
428
|
return false;
|
|
462
429
|
}
|
|
463
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
464
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
430
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ColumnTypeComponent, deps: [{ token: i2.MatTable, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
431
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ColumnTypeComponent, isStandalone: false, selector: "jvs-column-type", inputs: { column: "column", columnTitleTemplate: "columnTitleTemplate", columnFooterTemplate: "columnFooterTemplate", cellTemplate: "cellTemplate" }, viewQueries: [{ propertyName: "columnDef", first: true, predicate: MatColumnDef, descendants: true, static: true }], ngImport: i0, template: "<ng-container matColumnDef=\"{{ column.property }}\">\n <!-- Definici\u00F3n del encabezado de la columna -->\n <th *matHeaderCellDef [ngClass]=\"column.cssClassesTH\" class=\"uppercase text-center\" mat-header-cell mat-sort-header\n [disabled]=\"column.sort === false\">\n <ng-container *ngIf=\"columnTitleTemplate; else defaultTitle\">\n <ng-container *ngTemplateOutlet=\"columnTitleTemplate; context: { column: column }\"></ng-container>\n </ng-container>\n <ng-template #defaultTitle>\n <span [innerHTML]=\"column.label ?? ''\">{{ column.label }} </span>\n </ng-template>\n </th>\n\n <!-- Cuerpo de la celda, definido por los hijos -->\n <td *matCellDef=\"let row\" [ngClass]=\"column.cssClasses\" mat-cell (click)=\"accionClick(row, $event)\">\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: { row: row, column: column }\"></ng-container>\n </td>\n\n <th *matFooterCellDef [ngClass]=\"column.cssFooterClasses\" mat-footer-cell>\n <ng-container *ngIf=\"columnFooterTemplate; else defaultFooter\">\n <ng-container *ngTemplateOutlet=\"columnFooterTemplate; context: { column: column }\"></ng-container>\n </ng-container>\n <ng-template #defaultFooter>\n {{ column.transformarFooter ? column.transformarFooter() : '' }}\n </ng-template>\n </th>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i3$1.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }] });
|
|
465
432
|
}
|
|
466
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
433
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ColumnTypeComponent, decorators: [{
|
|
467
434
|
type: Component,
|
|
468
435
|
args: [{ selector: 'jvs-column-type', standalone: false, template: "<ng-container matColumnDef=\"{{ column.property }}\">\n <!-- Definici\u00F3n del encabezado de la columna -->\n <th *matHeaderCellDef [ngClass]=\"column.cssClassesTH\" class=\"uppercase text-center\" mat-header-cell mat-sort-header\n [disabled]=\"column.sort === false\">\n <ng-container *ngIf=\"columnTitleTemplate; else defaultTitle\">\n <ng-container *ngTemplateOutlet=\"columnTitleTemplate; context: { column: column }\"></ng-container>\n </ng-container>\n <ng-template #defaultTitle>\n <span [innerHTML]=\"column.label ?? ''\">{{ column.label }} </span>\n </ng-template>\n </th>\n\n <!-- Cuerpo de la celda, definido por los hijos -->\n <td *matCellDef=\"let row\" [ngClass]=\"column.cssClasses\" mat-cell (click)=\"accionClick(row, $event)\">\n <ng-container *ngTemplateOutlet=\"cellTemplate; context: { row: row, column: column }\"></ng-container>\n </td>\n\n <th *matFooterCellDef [ngClass]=\"column.cssFooterClasses\" mat-footer-cell>\n <ng-container *ngIf=\"columnFooterTemplate; else defaultFooter\">\n <ng-container *ngTemplateOutlet=\"columnFooterTemplate; context: { column: column }\"></ng-container>\n </ng-container>\n <ng-template #defaultFooter>\n {{ column.transformarFooter ? column.transformarFooter() : '' }}\n </ng-template>\n </th>\n</ng-container>\n" }]
|
|
469
436
|
}], ctorParameters: () => [{ type: i2.MatTable, decorators: [{
|
|
@@ -484,10 +451,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImpo
|
|
|
484
451
|
|
|
485
452
|
class ColumnTypeNumberComponent extends ColumnTypeComponent {
|
|
486
453
|
column = {};
|
|
487
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
488
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
454
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ColumnTypeNumberComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
455
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ColumnTypeNumberComponent, isStandalone: false, selector: "jvs-column-type-number", inputs: { column: "column" }, usesInheritance: true, ngImport: i0, template: "\n<ng-template #cellTemplate let-row=\"row\">\n\t\t\t\t<span *ngIf=\"column.property && row[column.property]\" class=\"!text-indigo-900 font-semibold\">\n\t\t\t\t\t{{ row[column.property] | number: (column.format ? column.format : '1.0-2') }}\n\t\t\t\t</span>\n</ng-template>\n\n<ng-container matColumnDef=\"{{ column.property }}\">\n <!-- Definici\u00F3n del encabezado de la columna -->\n <th *matHeaderCellDef [ngClass]=\"column.cssClassesTH\" class=\"uppercase text-center\" mat-header-cell mat-sort-header\n [disabled]=\"column.sort === false\">\n <span [innerHTML]=\"column.label ?? ''\">{{ column.label }} </span>\n </th>\n\n <!-- Cuerpo de la celda, definido por los hijos -->\n <td *matCellDef=\"let row\" [ngClass]=\"column.cssClasses\" mat-cell (click)=\"accionClick(row, $event)\">\n\n <ng-container [ngTemplateOutlet]=\"cellTemplate\" [ngTemplateOutletContext]=\"{row}\"></ng-container>\n\n </td>\n\n <th *matFooterCellDef [ngClass]=\"column.cssFooterClasses\" mat-footer-cell>\n {{ column.transformarFooter ? column.transformarFooter() : '' }}\n </th>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i3$1.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }] });
|
|
489
456
|
}
|
|
490
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
457
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ColumnTypeNumberComponent, decorators: [{
|
|
491
458
|
type: Component,
|
|
492
459
|
args: [{ selector: 'jvs-column-type-number', standalone: false, template: "\n<ng-template #cellTemplate let-row=\"row\">\n\t\t\t\t<span *ngIf=\"column.property && row[column.property]\" class=\"!text-indigo-900 font-semibold\">\n\t\t\t\t\t{{ row[column.property] | number: (column.format ? column.format : '1.0-2') }}\n\t\t\t\t</span>\n</ng-template>\n\n<ng-container matColumnDef=\"{{ column.property }}\">\n <!-- Definici\u00F3n del encabezado de la columna -->\n <th *matHeaderCellDef [ngClass]=\"column.cssClassesTH\" class=\"uppercase text-center\" mat-header-cell mat-sort-header\n [disabled]=\"column.sort === false\">\n <span [innerHTML]=\"column.label ?? ''\">{{ column.label }} </span>\n </th>\n\n <!-- Cuerpo de la celda, definido por los hijos -->\n <td *matCellDef=\"let row\" [ngClass]=\"column.cssClasses\" mat-cell (click)=\"accionClick(row, $event)\">\n\n <ng-container [ngTemplateOutlet]=\"cellTemplate\" [ngTemplateOutletContext]=\"{row}\"></ng-container>\n\n </td>\n\n <th *matFooterCellDef [ngClass]=\"column.cssFooterClasses\" mat-footer-cell>\n {{ column.transformarFooter ? column.transformarFooter() : '' }}\n </th>\n</ng-container>\n" }]
|
|
493
460
|
}], propDecorators: { column: [{
|
|
@@ -497,10 +464,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImpo
|
|
|
497
464
|
|
|
498
465
|
class ColumnTypeDateComponent extends ColumnTypeComponent {
|
|
499
466
|
column = {};
|
|
500
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
501
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
467
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ColumnTypeDateComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
468
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ColumnTypeDateComponent, isStandalone: false, selector: "jvs-column-type-date", inputs: { column: "column" }, usesInheritance: true, ngImport: i0, template: "<ng-template #cellTemplate let-row=\"row\">\n {{ row[column.property] | date: (column.format ? column.format : 'dd/MM/yyyy') }}\n</ng-template>\n\n<ng-container matColumnDef=\"{{ column.property }}\">\n <!-- Definici\u00F3n del encabezado de la columna -->\n <th *matHeaderCellDef [ngClass]=\"column.cssClassesTH\" class=\"uppercase text-center\" mat-header-cell mat-sort-header\n [disabled]=\"column.sort === false\">\n <span [innerHTML]=\"column.label ?? ''\">{{ column.label }} </span>\n </th>\n\n <!-- Cuerpo de la celda, definido por los hijos -->\n <td *matCellDef=\"let row\" [ngClass]=\"column.cssClasses\" mat-cell (click)=\"accionClick(row, $event)\">\n\n <ng-container [ngTemplateOutlet]=\"cellTemplate\" [ngTemplateOutletContext]=\"{row}\"></ng-container>\n\n </td>\n\n <th *matFooterCellDef [ngClass]=\"column.cssFooterClasses\" mat-footer-cell>\n {{ column.transformarFooter ? column.transformarFooter() : '' }}\n </th>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i3$1.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }] });
|
|
502
469
|
}
|
|
503
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
470
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ColumnTypeDateComponent, decorators: [{
|
|
504
471
|
type: Component,
|
|
505
472
|
args: [{ selector: 'jvs-column-type-date', standalone: false, template: "<ng-template #cellTemplate let-row=\"row\">\n {{ row[column.property] | date: (column.format ? column.format : 'dd/MM/yyyy') }}\n</ng-template>\n\n<ng-container matColumnDef=\"{{ column.property }}\">\n <!-- Definici\u00F3n del encabezado de la columna -->\n <th *matHeaderCellDef [ngClass]=\"column.cssClassesTH\" class=\"uppercase text-center\" mat-header-cell mat-sort-header\n [disabled]=\"column.sort === false\">\n <span [innerHTML]=\"column.label ?? ''\">{{ column.label }} </span>\n </th>\n\n <!-- Cuerpo de la celda, definido por los hijos -->\n <td *matCellDef=\"let row\" [ngClass]=\"column.cssClasses\" mat-cell (click)=\"accionClick(row, $event)\">\n\n <ng-container [ngTemplateOutlet]=\"cellTemplate\" [ngTemplateOutletContext]=\"{row}\"></ng-container>\n\n </td>\n\n <th *matFooterCellDef [ngClass]=\"column.cssFooterClasses\" mat-footer-cell>\n {{ column.transformarFooter ? column.transformarFooter() : '' }}\n </th>\n</ng-container>\n" }]
|
|
506
473
|
}], propDecorators: { column: [{
|
|
@@ -528,10 +495,10 @@ class ColumnTypeSinoComponent extends ColumnTypeComponent {
|
|
|
528
495
|
// iconRegistry.addSvgIconLiteral('yesIcon', sanitizer.bypassSecurityTrustHtml(YES_ICON));
|
|
529
496
|
// iconRegistry.addSvgIconLiteral('noIcon', sanitizer.bypassSecurityTrustHtml(NO_ICON));
|
|
530
497
|
}
|
|
531
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
532
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
498
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ColumnTypeSinoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
499
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ColumnTypeSinoComponent, isStandalone: false, selector: "jvs-column-type-sino", inputs: { column: "column" }, usesInheritance: true, ngImport: i0, template: "<ng-template #cellTemplate let-row=\"row\">\n <mat-icon *ngIf=\"[column.yesValue, 1, true].includes(row[column.property])\"\n [svgIcon]=\"column.yesIcon ?? 'yes_no:yes'\" class=\"icon-sm\"\n [matTooltip]=\"column.yesTooltip ?? undefined\"\n ></mat-icon>\n <mat-icon *ngIf=\"[column.noValue, 0, false].includes(row[column.property])\" [svgIcon]=\"column.noIcon ?? 'yes_no:no'\"\n class=\"icon-sm\"\n [matTooltip]=\"column.noTooltip ?? undefined\"\n ></mat-icon>\n <span class=\"cdk-visually-hidden\">{{ row[column.property] }}</span>\n</ng-template>\n\n<ng-container matColumnDef=\"{{ column.property }}\">\n <!-- Definici\u00F3n del encabezado de la columna -->\n <th *matHeaderCellDef [ngClass]=\"column.cssClassesTH\" class=\"uppercase text-center\" mat-header-cell mat-sort-header\n [disabled]=\"column.sort === false\">\n <span [innerHTML]=\"column.label ?? ''\">{{ column.label }} </span>\n </th>\n\n <!-- Cuerpo de la celda, definido por los hijos -->\n <td *matCellDef=\"let row\" [ngClass]=\"column.cssClasses\" mat-cell (click)=\"accionClick(row, $event)\">\n\n <ng-container [ngTemplateOutlet]=\"cellTemplate\" [ngTemplateOutletContext]=\"{row}\"></ng-container>\n\n </td>\n\n <th *matFooterCellDef [ngClass]=\"column.cssFooterClasses\" mat-footer-cell>\n {{ column.transformarFooter ? column.transformarFooter() : '' }}\n </th>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i3$1.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "directive", type: i4$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
|
533
500
|
}
|
|
534
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
501
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ColumnTypeSinoComponent, decorators: [{
|
|
535
502
|
type: Component,
|
|
536
503
|
args: [{ selector: 'jvs-column-type-sino', standalone: false, template: "<ng-template #cellTemplate let-row=\"row\">\n <mat-icon *ngIf=\"[column.yesValue, 1, true].includes(row[column.property])\"\n [svgIcon]=\"column.yesIcon ?? 'yes_no:yes'\" class=\"icon-sm\"\n [matTooltip]=\"column.yesTooltip ?? undefined\"\n ></mat-icon>\n <mat-icon *ngIf=\"[column.noValue, 0, false].includes(row[column.property])\" [svgIcon]=\"column.noIcon ?? 'yes_no:no'\"\n class=\"icon-sm\"\n [matTooltip]=\"column.noTooltip ?? undefined\"\n ></mat-icon>\n <span class=\"cdk-visually-hidden\">{{ row[column.property] }}</span>\n</ng-template>\n\n<ng-container matColumnDef=\"{{ column.property }}\">\n <!-- Definici\u00F3n del encabezado de la columna -->\n <th *matHeaderCellDef [ngClass]=\"column.cssClassesTH\" class=\"uppercase text-center\" mat-header-cell mat-sort-header\n [disabled]=\"column.sort === false\">\n <span [innerHTML]=\"column.label ?? ''\">{{ column.label }} </span>\n </th>\n\n <!-- Cuerpo de la celda, definido por los hijos -->\n <td *matCellDef=\"let row\" [ngClass]=\"column.cssClasses\" mat-cell (click)=\"accionClick(row, $event)\">\n\n <ng-container [ngTemplateOutlet]=\"cellTemplate\" [ngTemplateOutletContext]=\"{row}\"></ng-container>\n\n </td>\n\n <th *matFooterCellDef [ngClass]=\"column.cssFooterClasses\" mat-footer-cell>\n {{ column.transformarFooter ? column.transformarFooter() : '' }}\n </th>\n</ng-container>\n" }]
|
|
537
504
|
}], ctorParameters: () => [], propDecorators: { column: [{
|
|
@@ -592,10 +559,10 @@ class ProgressBarComponent {
|
|
|
592
559
|
}
|
|
593
560
|
return objData.sort((a, b) => (a[propiedad] > b[propiedad]) ? 1 : ((b[propiedad] > a[propiedad]) ? -1 : 0));
|
|
594
561
|
}
|
|
595
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
596
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
562
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ProgressBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
563
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ProgressBarComponent, isStandalone: true, selector: "jvs-progress-bar", inputs: { objThis: "objThis", porcentaje: "porcentaje", textoCentrado: "textoCentrado", textoMostrar: "textoMostrar", formatoNumero: "formatoNumero", coloresValor: "coloresValor" }, host: { classAttribute: "jvs-progress-bar" }, ngImport: i0, template: "<div class=\"w-full bg-gray-200 text-gray-700 rounded-full\" [class.text-center]=\"textoCentrado\">\n\t<div class=\"text-xxs font-medium text-center p-1 leading-none rounded-full\"\n\t\t [ngClass]=\"colorEstilo().class ? colorEstilo().class : 'bg-blue-600 text-blue-100'\"\n\t\t [style]=\"colorEstilo().style ? colorEstilo().style : ''\"\n\t\t [style.width]=\"(textoCentrado ? 100 : porcentaje) + '%'\"\n\t>\n <span *ngIf=\"textoMostrar else defaultText;\" class=\"whitespace-nowrap\">{{ textoMostrar }}</span>\n <ng-template #defaultText>{{ porcentaje | number: formatoNumero }}%</ng-template>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }] });
|
|
597
564
|
}
|
|
598
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
565
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ProgressBarComponent, decorators: [{
|
|
599
566
|
type: Component,
|
|
600
567
|
args: [{ selector: 'jvs-progress-bar', imports: [
|
|
601
568
|
CommonModule,
|
|
@@ -619,10 +586,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImpo
|
|
|
619
586
|
|
|
620
587
|
class ColumnTypeProgressbarComponent extends ColumnTypeComponent {
|
|
621
588
|
column = {};
|
|
622
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
623
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
589
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ColumnTypeProgressbarComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
590
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ColumnTypeProgressbarComponent, isStandalone: false, selector: "jvs-column-type-progressbar", inputs: { column: "column" }, usesInheritance: true, ngImport: i0, template: "<ng-template #cellTemplate let-row=\"row\">\n <jvs-progress-bar\n [textoCentrado]=\"!!column.progressbar.textoCentrado\"\n [porcentaje]=\"column.progressbar.porcentaje(row)\"\n [coloresValor]=\"column.progressbar.coloresValor\"\n [formatoNumero]=\"column.progressbar.formatoNumero\"\n [textoMostrar]=\"column.progressbar.textoMostrar ? column.progressbar.textoMostrar(row) : ''\"\n ></jvs-progress-bar>\n</ng-template>\n\n<ng-container matColumnDef=\"{{ column.property }}\">\n <!-- Definici\u00F3n del encabezado de la columna -->\n <th *matHeaderCellDef [ngClass]=\"column.cssClassesTH\" class=\"uppercase text-center\" mat-header-cell mat-sort-header\n [disabled]=\"column.sort === false\">\n <span [innerHTML]=\"column.label ?? ''\">{{ column.label }} </span>\n </th>\n\n <!-- Cuerpo de la celda, definido por los hijos -->\n <td *matCellDef=\"let row\" [ngClass]=\"column.cssClasses\" mat-cell (click)=\"accionClick(row, $event)\">\n\n <ng-container [ngTemplateOutlet]=\"cellTemplate\" [ngTemplateOutletContext]=\"{row}\"></ng-container>\n\n </td>\n\n <th *matFooterCellDef [ngClass]=\"column.cssFooterClasses\" mat-footer-cell>\n {{ column.transformarFooter ? column.transformarFooter() : '' }}\n </th>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i3$1.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: ProgressBarComponent, selector: "jvs-progress-bar", inputs: ["objThis", "porcentaje", "textoCentrado", "textoMostrar", "formatoNumero", "coloresValor"] }] });
|
|
624
591
|
}
|
|
625
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
592
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ColumnTypeProgressbarComponent, decorators: [{
|
|
626
593
|
type: Component,
|
|
627
594
|
args: [{ selector: 'jvs-column-type-progressbar', standalone: false, template: "<ng-template #cellTemplate let-row=\"row\">\n <jvs-progress-bar\n [textoCentrado]=\"!!column.progressbar.textoCentrado\"\n [porcentaje]=\"column.progressbar.porcentaje(row)\"\n [coloresValor]=\"column.progressbar.coloresValor\"\n [formatoNumero]=\"column.progressbar.formatoNumero\"\n [textoMostrar]=\"column.progressbar.textoMostrar ? column.progressbar.textoMostrar(row) : ''\"\n ></jvs-progress-bar>\n</ng-template>\n\n<ng-container matColumnDef=\"{{ column.property }}\">\n <!-- Definici\u00F3n del encabezado de la columna -->\n <th *matHeaderCellDef [ngClass]=\"column.cssClassesTH\" class=\"uppercase text-center\" mat-header-cell mat-sort-header\n [disabled]=\"column.sort === false\">\n <span [innerHTML]=\"column.label ?? ''\">{{ column.label }} </span>\n </th>\n\n <!-- Cuerpo de la celda, definido por los hijos -->\n <td *matCellDef=\"let row\" [ngClass]=\"column.cssClasses\" mat-cell (click)=\"accionClick(row, $event)\">\n\n <ng-container [ngTemplateOutlet]=\"cellTemplate\" [ngTemplateOutletContext]=\"{row}\"></ng-container>\n\n </td>\n\n <th *matFooterCellDef [ngClass]=\"column.cssFooterClasses\" mat-footer-cell>\n {{ column.transformarFooter ? column.transformarFooter() : '' }}\n </th>\n</ng-container>\n" }]
|
|
628
595
|
}], propDecorators: { column: [{
|
|
@@ -638,10 +605,10 @@ class NoSanitizePipe {
|
|
|
638
605
|
transform(html) {
|
|
639
606
|
return this.domSanitizer.bypassSecurityTrustHtml(html);
|
|
640
607
|
}
|
|
641
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
642
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.
|
|
608
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NoSanitizePipe, deps: [{ token: i1$1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
609
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: NoSanitizePipe, isStandalone: true, name: "noSanitize" });
|
|
643
610
|
}
|
|
644
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
611
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NoSanitizePipe, decorators: [{
|
|
645
612
|
type: Pipe,
|
|
646
613
|
args: [{ name: 'noSanitize' }]
|
|
647
614
|
}], ctorParameters: () => [{ type: i1$1.DomSanitizer }] });
|
|
@@ -654,10 +621,10 @@ class ZeroFillPipe {
|
|
|
654
621
|
}
|
|
655
622
|
return s;
|
|
656
623
|
}
|
|
657
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
658
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.
|
|
624
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ZeroFillPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
625
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: ZeroFillPipe, isStandalone: true, name: "zeroFill" });
|
|
659
626
|
}
|
|
660
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
627
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ZeroFillPipe, decorators: [{
|
|
661
628
|
type: Pipe,
|
|
662
629
|
args: [{
|
|
663
630
|
name: 'zeroFill',
|
|
@@ -671,10 +638,10 @@ function zeroFill(value, digitos, ...args) {
|
|
|
671
638
|
|
|
672
639
|
class ColumnTypeTextComponent extends ColumnTypeComponent {
|
|
673
640
|
column = {}; // 🟢 Solución
|
|
674
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
675
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
641
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ColumnTypeTextComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
642
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ColumnTypeTextComponent, isStandalone: false, selector: "jvs-column-type-text", inputs: { column: "column" }, usesInheritance: true, ngImport: i0, template: "<ng-template #cellTemplate let-row=\"row\">\n <div *ngIf=\"column.innerHTML; else sinInnerHTML\" [class]=\"column.text?.cssContenedor\" [ngStyle]=\"column.text?.cssStyle\" class=\"hover:!max-h-max\"\n [innerHTML]=\"column.innerHTML(row) | noSanitize\">\n </div>\n <ng-template #sinInnerHTML>\n <ng-container *ngIf=\"column.text && column.text?.separador else campoTextNormal\">\n <div [class]=\"column.text?.cssContenedor\">\n <ng-container\n *ngFor=\"let itm of ((column.transformar ? column.transformar(row) : row[column.property]) ?? '').split(column.text.separador)\">\n <ng-template *ngIf=\"column.property\" [ngTemplateOutlet]=\"tipoDatoString\"\n [ngTemplateOutletContext]=\"{ fila: column, tipo: 'text', value: itm, class: column.textCss, row: row }\"></ng-template>\n </ng-container>\n </div>\n </ng-container>\n <ng-template #campoTextNormal>\n <ng-template *ngIf=\"column.property\" [ngTemplateOutlet]=\"tipoDatoString\"\n [ngTemplateOutletContext]=\"{ fila: column, tipo: 'text', value: (column.transformar ? column.transformar(row) : row[column.property]), class: column.textCss, row: row }\"></ng-template>\n </ng-template>\n </ng-template>\n</ng-template>\n\n<ng-container matColumnDef=\"{{ column.property }}\">\n <!-- Definici\u00F3n del encabezado de la columna -->\n <th *matHeaderCellDef [ngClass]=\"column.cssClassesTH\" class=\"uppercase text-center\" mat-header-cell mat-sort-header\n [disabled]=\"column.sort === false\">\n <span [innerHTML]=\"column.label ?? ''\">{{ column.label }} </span>\n </th>\n\n <!-- Cuerpo de la celda, definido por los hijos -->\n <td *matCellDef=\"let row\" [ngClass]=\"column.cssClasses\" mat-cell (click)=\"accionClick(row, $event)\">\n\n <ng-container [ngTemplateOutlet]=\"cellTemplate\" [ngTemplateOutletContext]=\"{row}\"></ng-container>\n\n </td>\n\n <th *matFooterCellDef [ngClass]=\"column.cssFooterClasses\" mat-footer-cell>\n {{ column.transformarFooter ? column.transformarFooter() : '' }}\n </th>\n</ng-container>\n\n\n<!--<ng-container matColumnDef=\"{{ column.property }}\">\n<th *matHeaderCellDef [ngClass]=\"column.cssClassesTH\" class=\"uppercase text-center\" mat-header-cell mat-sort-header\n [disabled]=\"column.sort === false\">\n <span [innerHTML]=\"column.label ?? ''\">{{ column.label }} </span>\n</th>\n<ng-container *ngIf=\"column.innerHTML; else sinInnerHTML\">\n <td *matCellDef=\"let row\" [ngClass]=\"column.cssClasses\" mat-cell (click)=\"accionClick(column, row, $event)\">\n <div [class]=\"column.text?.cssContenedor\" [ngStyle]=\"column.text?.cssStyle\" class=\"hover:!max-h-max\"\n [innerHTML]=\"column.innerHTML(row) | noSanitize\">\n\n </div>\n </td>\n</ng-container>\n<ng-template #sinInnerHTML>\n <td *matCellDef=\"let row\" [ngClass]=\"column.cssClasses\" mat-cell>\n <ng-container *ngIf=\"column.text && column.text?.separador else campoTextNormal\">\n <div [class]=\"column.text?.cssContenedor\">\n <ng-container\n *ngFor=\"let itm of ((column.transformar ? column.transformar(row) : row[column.property]) ?? '').split(column.text.separador)\">\n <ng-template *ngIf=\"column.property\" [ngTemplateOutlet]=\"tipoDatoString\"\n [ngTemplateOutletContext]=\"{ fila: column, tipo: 'text', value: itm, class: column.textCss, row: row }\"></ng-template>\n </ng-container>\n </div>\n </ng-container>\n <ng-template #campoTextNormal>\n <ng-template *ngIf=\"column.property\" [ngTemplateOutlet]=\"tipoDatoString\"\n [ngTemplateOutletContext]=\"{ fila: column, tipo: 'text', value: (column.transformar ? column.transformar(row) : row[column.property]), class: column.textCss, row: row }\"></ng-template>\n </ng-template>\n </td>\n</ng-template>\n<th *matFooterCellDef [ngClass]=\"column.cssFooterClasses\" style=\"height: unset !important;\" mat-footer-cell\n [innerHTML]=\"column.transformarFooter ? column.transformarFooter() : ''\">\n</th>\n</ng-container>-->\n\n<ng-template #tipoDatoString let-row=\"row\" let-fila=\"fila\" let-tipo=\"tipo\" let-value=\"value\" let-format=\"format\"\n let-clase=\"class\">\n <ng-container [ngSwitch]=\"tipo\">\n <ng-container *ngSwitchCase=\"'text'\"><span [ngClass]=\"clase\" *ngIf=\"value\"\n (click)=\"accionClick(row, $event)\">\n <span *ngIf=\"!fila.zeroFill\">{{ value }}</span>\n <span *ngIf=\"fila.zeroFill\">{{ value | zeroFill: fila.zeroFill }}</span>\n </span></ng-container>\n <ng-container *ngSwitchCase=\"'date'\"><span [ngClass]=\"clase\" *ngIf=\"value\"\n (click)=\"accionClick(row, $event)\">{{ value | date: (format || 'dd/MM/yyyy') }}</span></ng-container>\n <ng-container *ngSwitchCase=\"'number'\"><span [ngClass]=\"clase\" *ngIf=\"value\"\n (click)=\"accionClick(row, $event)\">{{ value | number: (format || '0.0-2') }}</span></ng-container>\n <ng-container *ngSwitchCase=\"'money'\"><span [ngClass]=\"clase\"\n [class.text-sky-700]=\"(value * 1) >= 0\" [class.text-red-700]=\"(value * 1) < 0\"\n *ngIf=\"value\" (click)=\"accionClick(row, $event)\">{{ value | number: (format || '1.2-2') }}</span>\n </ng-container>\n\n <!--\t\t<span [ngClass]=\"class\" *ngSwitchCase=\"'date'\">{{ value | date: (format || 'dd/MM/yyyy') }}</span>-->\n <!--\t\t<span [ngClass]=\"class\" *ngSwitchCase=\"'number'\">{{ value | number: (format || '0.0-2') }}</span>-->\n </ng-container>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i3$1.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "pipe", type: NoSanitizePipe, name: "noSanitize" }, { kind: "pipe", type: ZeroFillPipe, name: "zeroFill" }] });
|
|
676
643
|
}
|
|
677
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
644
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ColumnTypeTextComponent, decorators: [{
|
|
678
645
|
type: Component,
|
|
679
646
|
args: [{ selector: 'jvs-column-type-text', standalone: false, template: "<ng-template #cellTemplate let-row=\"row\">\n <div *ngIf=\"column.innerHTML; else sinInnerHTML\" [class]=\"column.text?.cssContenedor\" [ngStyle]=\"column.text?.cssStyle\" class=\"hover:!max-h-max\"\n [innerHTML]=\"column.innerHTML(row) | noSanitize\">\n </div>\n <ng-template #sinInnerHTML>\n <ng-container *ngIf=\"column.text && column.text?.separador else campoTextNormal\">\n <div [class]=\"column.text?.cssContenedor\">\n <ng-container\n *ngFor=\"let itm of ((column.transformar ? column.transformar(row) : row[column.property]) ?? '').split(column.text.separador)\">\n <ng-template *ngIf=\"column.property\" [ngTemplateOutlet]=\"tipoDatoString\"\n [ngTemplateOutletContext]=\"{ fila: column, tipo: 'text', value: itm, class: column.textCss, row: row }\"></ng-template>\n </ng-container>\n </div>\n </ng-container>\n <ng-template #campoTextNormal>\n <ng-template *ngIf=\"column.property\" [ngTemplateOutlet]=\"tipoDatoString\"\n [ngTemplateOutletContext]=\"{ fila: column, tipo: 'text', value: (column.transformar ? column.transformar(row) : row[column.property]), class: column.textCss, row: row }\"></ng-template>\n </ng-template>\n </ng-template>\n</ng-template>\n\n<ng-container matColumnDef=\"{{ column.property }}\">\n <!-- Definici\u00F3n del encabezado de la columna -->\n <th *matHeaderCellDef [ngClass]=\"column.cssClassesTH\" class=\"uppercase text-center\" mat-header-cell mat-sort-header\n [disabled]=\"column.sort === false\">\n <span [innerHTML]=\"column.label ?? ''\">{{ column.label }} </span>\n </th>\n\n <!-- Cuerpo de la celda, definido por los hijos -->\n <td *matCellDef=\"let row\" [ngClass]=\"column.cssClasses\" mat-cell (click)=\"accionClick(row, $event)\">\n\n <ng-container [ngTemplateOutlet]=\"cellTemplate\" [ngTemplateOutletContext]=\"{row}\"></ng-container>\n\n </td>\n\n <th *matFooterCellDef [ngClass]=\"column.cssFooterClasses\" mat-footer-cell>\n {{ column.transformarFooter ? column.transformarFooter() : '' }}\n </th>\n</ng-container>\n\n\n<!--<ng-container matColumnDef=\"{{ column.property }}\">\n<th *matHeaderCellDef [ngClass]=\"column.cssClassesTH\" class=\"uppercase text-center\" mat-header-cell mat-sort-header\n [disabled]=\"column.sort === false\">\n <span [innerHTML]=\"column.label ?? ''\">{{ column.label }} </span>\n</th>\n<ng-container *ngIf=\"column.innerHTML; else sinInnerHTML\">\n <td *matCellDef=\"let row\" [ngClass]=\"column.cssClasses\" mat-cell (click)=\"accionClick(column, row, $event)\">\n <div [class]=\"column.text?.cssContenedor\" [ngStyle]=\"column.text?.cssStyle\" class=\"hover:!max-h-max\"\n [innerHTML]=\"column.innerHTML(row) | noSanitize\">\n\n </div>\n </td>\n</ng-container>\n<ng-template #sinInnerHTML>\n <td *matCellDef=\"let row\" [ngClass]=\"column.cssClasses\" mat-cell>\n <ng-container *ngIf=\"column.text && column.text?.separador else campoTextNormal\">\n <div [class]=\"column.text?.cssContenedor\">\n <ng-container\n *ngFor=\"let itm of ((column.transformar ? column.transformar(row) : row[column.property]) ?? '').split(column.text.separador)\">\n <ng-template *ngIf=\"column.property\" [ngTemplateOutlet]=\"tipoDatoString\"\n [ngTemplateOutletContext]=\"{ fila: column, tipo: 'text', value: itm, class: column.textCss, row: row }\"></ng-template>\n </ng-container>\n </div>\n </ng-container>\n <ng-template #campoTextNormal>\n <ng-template *ngIf=\"column.property\" [ngTemplateOutlet]=\"tipoDatoString\"\n [ngTemplateOutletContext]=\"{ fila: column, tipo: 'text', value: (column.transformar ? column.transformar(row) : row[column.property]), class: column.textCss, row: row }\"></ng-template>\n </ng-template>\n </td>\n</ng-template>\n<th *matFooterCellDef [ngClass]=\"column.cssFooterClasses\" style=\"height: unset !important;\" mat-footer-cell\n [innerHTML]=\"column.transformarFooter ? column.transformarFooter() : ''\">\n</th>\n</ng-container>-->\n\n<ng-template #tipoDatoString let-row=\"row\" let-fila=\"fila\" let-tipo=\"tipo\" let-value=\"value\" let-format=\"format\"\n let-clase=\"class\">\n <ng-container [ngSwitch]=\"tipo\">\n <ng-container *ngSwitchCase=\"'text'\"><span [ngClass]=\"clase\" *ngIf=\"value\"\n (click)=\"accionClick(row, $event)\">\n <span *ngIf=\"!fila.zeroFill\">{{ value }}</span>\n <span *ngIf=\"fila.zeroFill\">{{ value | zeroFill: fila.zeroFill }}</span>\n </span></ng-container>\n <ng-container *ngSwitchCase=\"'date'\"><span [ngClass]=\"clase\" *ngIf=\"value\"\n (click)=\"accionClick(row, $event)\">{{ value | date: (format || 'dd/MM/yyyy') }}</span></ng-container>\n <ng-container *ngSwitchCase=\"'number'\"><span [ngClass]=\"clase\" *ngIf=\"value\"\n (click)=\"accionClick(row, $event)\">{{ value | number: (format || '0.0-2') }}</span></ng-container>\n <ng-container *ngSwitchCase=\"'money'\"><span [ngClass]=\"clase\"\n [class.text-sky-700]=\"(value * 1) >= 0\" [class.text-red-700]=\"(value * 1) < 0\"\n *ngIf=\"value\" (click)=\"accionClick(row, $event)\">{{ value | number: (format || '1.2-2') }}</span>\n </ng-container>\n\n <!--\t\t<span [ngClass]=\"class\" *ngSwitchCase=\"'date'\">{{ value | date: (format || 'dd/MM/yyyy') }}</span>-->\n <!--\t\t<span [ngClass]=\"class\" *ngSwitchCase=\"'number'\">{{ value | number: (format || '0.0-2') }}</span>-->\n </ng-container>\n</ng-template>\n" }]
|
|
680
647
|
}], propDecorators: { column: [{
|
|
@@ -687,10 +654,10 @@ class ColumnTypeMoneyComponent extends ColumnTypeComponent {
|
|
|
687
654
|
value(row) {
|
|
688
655
|
return (this.column.transformar ? this.column.transformar(row) : row[this.column.property]);
|
|
689
656
|
}
|
|
690
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
691
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
657
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ColumnTypeMoneyComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
658
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ColumnTypeMoneyComponent, isStandalone: false, selector: "jvs-column-type-money", inputs: { column: "column" }, usesInheritance: true, ngImport: i0, template: "<ng-template #cellTemplate let-row=\"row\">\n <span [ngClass]=\"column.textCss\"\n [class.text-sky-700]=\"(value(row)) >= 0\" [class.text-red-700]=\"(value(row)) < 0\"\n *ngIf=\"value(row)\"\n (click)=\"accionClick(row, $event)\">{{ value(row) | number: (column.format || '1.2-2') }}</span>\n</ng-template>\n<ng-template #columnFooterTemplate let-row=\"row\">\n\t\t<span *ngIf=\"column.transformarFooter\"\n [class.text-sky-700]=\"column.transformarFooter() >= 0\"\n [class.text-red-700]=\"column.transformarFooter() < 0\"\n >\n\t\t\t\t\t<span>{{ column.transformarFooter() | currency: column.simboloMoneda ?? 'S/' }}</span>\n\t\t\t\t</span>\n</ng-template>\n\n<!--<jvs-column-type [column]=\"column\" [cellTemplate]=\"cellTemplate\" [columnFooterTemplate]=\"columnFooterTemplate\"></jvs-column-type>-->\n\n<ng-container matColumnDef=\"{{ column.property }}\">\n <!-- Definici\u00F3n del encabezado de la columna -->\n <th *matHeaderCellDef [ngClass]=\"column.cssClassesTH\" class=\"uppercase text-center\" mat-header-cell mat-sort-header\n [disabled]=\"column.sort === false\">\n <span [innerHTML]=\"column.label ?? ''\">{{ column.label }} </span>\n </th>\n\n <!-- Cuerpo de la celda, definido por los hijos -->\n <td *matCellDef=\"let row\" [ngClass]=\"column.cssClasses\" mat-cell (click)=\"accionClick(row, $event)\">\n\n <ng-container [ngTemplateOutlet]=\"cellTemplate\" [ngTemplateOutletContext]=\"{row}\"></ng-container>\n\n </td>\n\n <th *matFooterCellDef [ngClass]=\"column.cssFooterClasses\" mat-footer-cell>\n \t\t<span *ngIf=\"column.transformarFooter\"\n [class.text-sky-700]=\"column.transformarFooter() >= 0\"\n [class.text-red-700]=\"column.transformarFooter() < 0\"\n >\n\t\t\t\t\t<span>{{ column.transformarFooter() | currency: column.simboloMoneda ?? 'S/' }}</span>\n\t\t\t\t</span>\n </th>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i3$1.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "pipe", type: i1.CurrencyPipe, name: "currency" }] });
|
|
692
659
|
}
|
|
693
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
660
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ColumnTypeMoneyComponent, decorators: [{
|
|
694
661
|
type: Component,
|
|
695
662
|
args: [{ selector: 'jvs-column-type-money', standalone: false, template: "<ng-template #cellTemplate let-row=\"row\">\n <span [ngClass]=\"column.textCss\"\n [class.text-sky-700]=\"(value(row)) >= 0\" [class.text-red-700]=\"(value(row)) < 0\"\n *ngIf=\"value(row)\"\n (click)=\"accionClick(row, $event)\">{{ value(row) | number: (column.format || '1.2-2') }}</span>\n</ng-template>\n<ng-template #columnFooterTemplate let-row=\"row\">\n\t\t<span *ngIf=\"column.transformarFooter\"\n [class.text-sky-700]=\"column.transformarFooter() >= 0\"\n [class.text-red-700]=\"column.transformarFooter() < 0\"\n >\n\t\t\t\t\t<span>{{ column.transformarFooter() | currency: column.simboloMoneda ?? 'S/' }}</span>\n\t\t\t\t</span>\n</ng-template>\n\n<!--<jvs-column-type [column]=\"column\" [cellTemplate]=\"cellTemplate\" [columnFooterTemplate]=\"columnFooterTemplate\"></jvs-column-type>-->\n\n<ng-container matColumnDef=\"{{ column.property }}\">\n <!-- Definici\u00F3n del encabezado de la columna -->\n <th *matHeaderCellDef [ngClass]=\"column.cssClassesTH\" class=\"uppercase text-center\" mat-header-cell mat-sort-header\n [disabled]=\"column.sort === false\">\n <span [innerHTML]=\"column.label ?? ''\">{{ column.label }} </span>\n </th>\n\n <!-- Cuerpo de la celda, definido por los hijos -->\n <td *matCellDef=\"let row\" [ngClass]=\"column.cssClasses\" mat-cell (click)=\"accionClick(row, $event)\">\n\n <ng-container [ngTemplateOutlet]=\"cellTemplate\" [ngTemplateOutletContext]=\"{row}\"></ng-container>\n\n </td>\n\n <th *matFooterCellDef [ngClass]=\"column.cssFooterClasses\" mat-footer-cell>\n \t\t<span *ngIf=\"column.transformarFooter\"\n [class.text-sky-700]=\"column.transformarFooter() >= 0\"\n [class.text-red-700]=\"column.transformarFooter() < 0\"\n >\n\t\t\t\t\t<span>{{ column.transformarFooter() | currency: column.simboloMoneda ?? 'S/' }}</span>\n\t\t\t\t</span>\n </th>\n</ng-container>\n" }]
|
|
696
663
|
}], propDecorators: { column: [{
|
|
@@ -706,10 +673,10 @@ class ColumnTypeIconsComponent extends ColumnTypeComponent {
|
|
|
706
673
|
}
|
|
707
674
|
return columna.items;
|
|
708
675
|
}
|
|
709
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
710
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
676
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ColumnTypeIconsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
677
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ColumnTypeIconsComponent, isStandalone: false, selector: "jvs-column-type-icons", inputs: { column: "column" }, usesInheritance: true, ngImport: i0, template: "<ng-template #cellTemplate let-row=\"row\">\n <div class=\"flex items-center justify-center\" [ngClass]=\"{ '-space-x-1': !column.iconsDef?.soloIcono }\"\n >\n <ng-container *ngFor=\"let icon of obtenerItems(column.iconsDef, row)\">\n <ng-container *ngIf=\"!column.iconsDef?.soloIcono; else soloIcono\">\n <button matRipple type=\"button\" *ngIf=\"!icon.esVisible || icon.esVisible(row)\"\n (click)=\"icon.click ? icon.click(row) : false; $event.stopPropagation()\"\n class=\"flex items-center justify-center p-1 rounded border shadow-sm hover:shadow-lg\"\n [ngClass]=\"icon.contentCss\"\n [matTooltip]=\"icon.toolTip ?? row[icon.toolTipField ?? '_field_']\"\n [matTooltipDisabled]=\"!icon.toolTip && !icon.toolTipField\"\n >\n <ng-container [ngTemplateOutlet]=\"iconoConTamanio\"\n [ngTemplateOutletContext]=\"{icon: icon.icon, iconClass: icon.cssClass, size: (icon.iconSize ?? column.iconsDef?.iconSize)}\"></ng-container>\n </button>\n </ng-container>\n <ng-template #soloIcono>\n <div *ngIf=\"!icon.esVisible || icon.esVisible(row)\" [ngClass]=\"icon.contentCss\"\n class=\"flex items-center\"\n [matTooltip]=\"icon.toolTip ?? row[icon.toolTipField ?? '_field_']\"\n [matTooltipDisabled]=\"!icon.toolTip && !icon.toolTipField\"\n >\n <ng-container [ngTemplateOutlet]=\"iconoConTamanio\"\n [ngTemplateOutletContext]=\"{icon: icon.icon, iconClass: icon.cssClass, size: (icon.iconSize ?? column.iconsDef?.iconSize)}\"></ng-container>\n </div>\n </ng-template>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-container matColumnDef=\"{{ column.property }}\">\n <!-- Definici\u00F3n del encabezado de la columna -->\n <th *matHeaderCellDef [ngClass]=\"column.cssClassesTH\" class=\"uppercase text-center\" mat-header-cell mat-sort-header\n [disabled]=\"column.sort === false\">\n <span [innerHTML]=\"column.label ?? ''\">{{ column.label }} </span>\n </th>\n\n <!-- Cuerpo de la celda, definido por los hijos -->\n <td *matCellDef=\"let row\" [ngClass]=\"column.cssClasses\" mat-cell (click)=\"accionClick(row, $event)\">\n\n <ng-container [ngTemplateOutlet]=\"cellTemplate\" [ngTemplateOutletContext]=\"{row}\"></ng-container>\n\n </td>\n\n <th *matFooterCellDef [ngClass]=\"column.cssFooterClasses\" mat-footer-cell>\n {{ column.transformarFooter ? column.transformarFooter() : '' }}\n </th>\n</ng-container>\n\n\n<ng-template #iconoConTamanio let-icon=\"icon\" let-iconClass=\"iconClass\" let-size=\"size\">\n <mat-icon *ngIf=\"size\" [svgIcon]=\"icon\" [ngClass]=\"iconClass\" [inline]=\"true\"\n [style.font-size]=\"size\"\n [style.height]=\"size\"\n [style.width]=\"size\"\n ></mat-icon>\n <mat-icon *ngIf=\"!size\" [svgIcon]=\"icon\" [ngClass]=\"iconClass\"></mat-icon>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i3$1.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "directive", type: i4$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i5.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
|
711
678
|
}
|
|
712
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
679
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ColumnTypeIconsComponent, decorators: [{
|
|
713
680
|
type: Component,
|
|
714
681
|
args: [{ selector: 'jvs-column-type-icons', standalone: false, template: "<ng-template #cellTemplate let-row=\"row\">\n <div class=\"flex items-center justify-center\" [ngClass]=\"{ '-space-x-1': !column.iconsDef?.soloIcono }\"\n >\n <ng-container *ngFor=\"let icon of obtenerItems(column.iconsDef, row)\">\n <ng-container *ngIf=\"!column.iconsDef?.soloIcono; else soloIcono\">\n <button matRipple type=\"button\" *ngIf=\"!icon.esVisible || icon.esVisible(row)\"\n (click)=\"icon.click ? icon.click(row) : false; $event.stopPropagation()\"\n class=\"flex items-center justify-center p-1 rounded border shadow-sm hover:shadow-lg\"\n [ngClass]=\"icon.contentCss\"\n [matTooltip]=\"icon.toolTip ?? row[icon.toolTipField ?? '_field_']\"\n [matTooltipDisabled]=\"!icon.toolTip && !icon.toolTipField\"\n >\n <ng-container [ngTemplateOutlet]=\"iconoConTamanio\"\n [ngTemplateOutletContext]=\"{icon: icon.icon, iconClass: icon.cssClass, size: (icon.iconSize ?? column.iconsDef?.iconSize)}\"></ng-container>\n </button>\n </ng-container>\n <ng-template #soloIcono>\n <div *ngIf=\"!icon.esVisible || icon.esVisible(row)\" [ngClass]=\"icon.contentCss\"\n class=\"flex items-center\"\n [matTooltip]=\"icon.toolTip ?? row[icon.toolTipField ?? '_field_']\"\n [matTooltipDisabled]=\"!icon.toolTip && !icon.toolTipField\"\n >\n <ng-container [ngTemplateOutlet]=\"iconoConTamanio\"\n [ngTemplateOutletContext]=\"{icon: icon.icon, iconClass: icon.cssClass, size: (icon.iconSize ?? column.iconsDef?.iconSize)}\"></ng-container>\n </div>\n </ng-template>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-container matColumnDef=\"{{ column.property }}\">\n <!-- Definici\u00F3n del encabezado de la columna -->\n <th *matHeaderCellDef [ngClass]=\"column.cssClassesTH\" class=\"uppercase text-center\" mat-header-cell mat-sort-header\n [disabled]=\"column.sort === false\">\n <span [innerHTML]=\"column.label ?? ''\">{{ column.label }} </span>\n </th>\n\n <!-- Cuerpo de la celda, definido por los hijos -->\n <td *matCellDef=\"let row\" [ngClass]=\"column.cssClasses\" mat-cell (click)=\"accionClick(row, $event)\">\n\n <ng-container [ngTemplateOutlet]=\"cellTemplate\" [ngTemplateOutletContext]=\"{row}\"></ng-container>\n\n </td>\n\n <th *matFooterCellDef [ngClass]=\"column.cssFooterClasses\" mat-footer-cell>\n {{ column.transformarFooter ? column.transformarFooter() : '' }}\n </th>\n</ng-container>\n\n\n<ng-template #iconoConTamanio let-icon=\"icon\" let-iconClass=\"iconClass\" let-size=\"size\">\n <mat-icon *ngIf=\"size\" [svgIcon]=\"icon\" [ngClass]=\"iconClass\" [inline]=\"true\"\n [style.font-size]=\"size\"\n [style.height]=\"size\"\n [style.width]=\"size\"\n ></mat-icon>\n <mat-icon *ngIf=\"!size\" [svgIcon]=\"icon\" [ngClass]=\"iconClass\"></mat-icon>\n</ng-template>\n" }]
|
|
715
682
|
}], propDecorators: { column: [{
|
|
@@ -718,8 +685,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImpo
|
|
|
718
685
|
}] } });
|
|
719
686
|
|
|
720
687
|
class ColumnTypeModule {
|
|
721
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
722
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.
|
|
688
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ColumnTypeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
689
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: ColumnTypeModule, declarations: [ColumnTypeComponent,
|
|
723
690
|
ColumnTypeTextComponent,
|
|
724
691
|
ColumnTypeMoneyComponent,
|
|
725
692
|
ColumnTypeNumberComponent,
|
|
@@ -741,14 +708,14 @@ class ColumnTypeModule {
|
|
|
741
708
|
ColumnTypeIconsComponent,
|
|
742
709
|
ColumnTypeSinoComponent,
|
|
743
710
|
ColumnTypeProgressbarComponent] });
|
|
744
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.
|
|
711
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ColumnTypeModule, imports: [CommonModule,
|
|
745
712
|
MatTableModule,
|
|
746
713
|
MatSortModule,
|
|
747
714
|
MatTooltipModule,
|
|
748
715
|
MatIcon,
|
|
749
716
|
ProgressBarComponent] });
|
|
750
717
|
}
|
|
751
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
718
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ColumnTypeModule, decorators: [{
|
|
752
719
|
type: NgModule,
|
|
753
720
|
args: [{
|
|
754
721
|
declarations: [
|
|
@@ -812,10 +779,10 @@ class TablaMantenimientoColumnDefsComponent {
|
|
|
812
779
|
trackByProperty(index, column) {
|
|
813
780
|
return column.property;
|
|
814
781
|
}
|
|
815
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
816
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
782
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TablaMantenimientoColumnDefsComponent, deps: [{ token: i2.MatTable, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
783
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: TablaMantenimientoColumnDefsComponent, isStandalone: true, selector: "jvs-tabla-mantenimiento-column-defs", inputs: { objThis: "objThis", nombreColeccion: "nombreColeccion", colDetalle: "colDetalle", chkLista: "chkLista" }, outputs: { chkListaChange: "chkListaChange" }, queries: [{ propertyName: "columnDefEnSubComponentes", predicate: MatColumnDef, descendants: true }], viewQueries: [{ propertyName: "columnDefLocales", predicate: MatColumnDef, descendants: true }], ngImport: i0, template: "<ng-content></ng-content>\n\n\n\n<ng-container *ngFor=\"let column of colDetalle; trackBy: trackByProperty\">\n\n <ng-container *ngIf=\"column.type === 'expandir'\" [matColumnDef]=\"column.property\">\n\n <th *matHeaderCellDef class=\"w-4\" mat-header-cell> <span [innerHTML]=\"column.label ?? ''\">{{ column.label }} </span></th>\n <td *matCellDef=\"let row\" class=\"w-4 text-center\" mat-cell>\n <button type=\"button\" class=\"boton-circular text-primary-contrast bg-primary mat-elevation-z2\" matRipple\n *ngIf=\"column.click\"\n (click)=\"column.click(row); row.isExpanded = !row.isExpanded; $event.stopPropagation()\"\n matTooltip=\"Expandir / Contraer\">\n <mat-icon class=\"icon-xs\" [svgIcon]=\"(row.isExpanded ? 'roundExpandLess' : 'roundExpandMore')\"></mat-icon>\n </button>\n <button type=\"button\" class=\"boton-circular text-primary-contrast bg-primary mat-elevation-z2\" matRipple\n *ngIf=\"!column.click\"\n (click)=\"row.isExpanded = !row.isExpanded; $event.stopPropagation()\"\n matTooltip=\"Expandir / Contraer\">\n <mat-icon class=\"icon-xs\" [svgIcon]=\"(row.isExpanded ? 'roundExpandLess' : 'roundExpandMore')\"></mat-icon>\n </button>\n </td>\n <td *matFooterCellDef [ngClass]=\"column.cssFooterClasses\" mat-footer-cell></td>\n\n </ng-container>\n <ng-container *ngIf=\"column.type === 'checkbox'\" [matColumnDef]=\"column.property\">\n\n <th *matHeaderCellDef [ngClass]=\"column.cssClassesTH\" class=\"w-4 text-center\" mat-header-cell>\n <mat-checkbox *ngIf=\"chkLista\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"chkLista.checkbox.establecerTodos($event.checked)\"\n [indeterminate]=\"chkLista.checkbox.algunosActivos\"\n [checked]=\"chkLista.checkbox.todosActivos\"\n ></mat-checkbox>\n </th>\n <td *matCellDef=\"let row\" class=\"w-4 text-center\" mat-cell>\n <mat-checkbox *ngIf=\"chkLista\"\n (click)=\"$event.stopPropagation()\"\n [(ngModel)]=\"chkLista.modelosChk[chkLista.generarId(row, (column.chkField ?? column.property), column.chkFieldSeparador)]\"\n [ngModelOptions]=\"{standalone: true}\"\n ></mat-checkbox>\n\n </td>\n <td *matFooterCellDef [ngClass]=\"column.cssFooterClasses\" mat-footer-cell></td>\n\n </ng-container>\n <ng-container *ngIf=\"column.type === 'estiloEstablecido'\" [matColumnDef]=\"column.property\">\n\n <th *matHeaderCellDef [ngClass]=\"column.cssClassesTH\" class=\"uppercase text-center\" mat-header-cell\n mat-sort-header\n [disabled]=\"column.sort === false\">\n <span [innerHTML]=\"column.label ?? ''\">{{ column.label }} </span>\n <span class=\"text-red-900 font-bold bg-white\">CONFIGURAR ESTILO ESTABLECIDO</span>\n </th>\n <td *matCellDef=\"let row\" [ngClass]=\"column.cssClasses\" mat-cell>\n {{ column.property }}\n <span class=\"text-red-900 font-bold bg-white\">CONFIGURAR ESTILO ESTABLECIDO</span>\n </td>\n <th *matFooterCellDef [ngClass]=\"column.cssFooterClasses\" style=\"height: unset !important;\" mat-footer-cell\n [innerHTML]=\"column.transformarFooter ? column.transformarFooter() : ''\">\n </th>\n\n </ng-container>\n\n <jvs-column-type-text *ngIf=\"column.type == 'text'\" [column]=\"column\"></jvs-column-type-text>\n <jvs-column-type-money *ngIf=\"column.type == 'money'\" [column]=\"column\"></jvs-column-type-money>\n <jvs-column-type-number *ngIf=\"column.type == 'number'\" [column]=\"column\"></jvs-column-type-number>\n <jvs-column-type-date *ngIf=\"column.type == 'date'\" [column]=\"column\"></jvs-column-type-date>\n <jvs-column-type-icons *ngIf=\"column.type == 'icons'\" [column]=\"column\"></jvs-column-type-icons>\n <jvs-column-type-sino *ngIf=\"column.type == 'yes_no'\" [column]=\"column\"></jvs-column-type-sino>\n <jvs-column-type-progressbar *ngIf=\"column.type == 'progress'\" [column]=\"column\"></jvs-column-type-progressbar>\n\n\n\n</ng-container>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i5$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatRippleModule }, { kind: "directive", type: i5.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "component", type: i3$1.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i2.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ColumnTypeModule }, { kind: "component", type: ColumnTypeTextComponent, selector: "jvs-column-type-text", inputs: ["column"] }, { kind: "component", type: ColumnTypeMoneyComponent, selector: "jvs-column-type-money", inputs: ["column"] }, { kind: "component", type: ColumnTypeNumberComponent, selector: "jvs-column-type-number", inputs: ["column"] }, { kind: "component", type: ColumnTypeDateComponent, selector: "jvs-column-type-date", inputs: ["column"] }, { kind: "component", type: ColumnTypeIconsComponent, selector: "jvs-column-type-icons", inputs: ["column"] }, { kind: "component", type: ColumnTypeSinoComponent, selector: "jvs-column-type-sino", inputs: ["column"] }, { kind: "component", type: ColumnTypeProgressbarComponent, selector: "jvs-column-type-progressbar", inputs: ["column"] }] });
|
|
817
784
|
}
|
|
818
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
785
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TablaMantenimientoColumnDefsComponent, decorators: [{
|
|
819
786
|
type: Component,
|
|
820
787
|
args: [{ selector: 'jvs-tabla-mantenimiento-column-defs', standalone: true, imports: [
|
|
821
788
|
CommonModule,
|
|
@@ -864,10 +831,10 @@ class TablaMantenimientoMenuComponent {
|
|
|
864
831
|
}
|
|
865
832
|
ngOnInit() {
|
|
866
833
|
}
|
|
867
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
868
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
834
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TablaMantenimientoMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
835
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: TablaMantenimientoMenuComponent, isStandalone: true, selector: "jvs-tabla-mantenimiento-menu", inputs: { objThis: "objThis", nombreColeccion: "nombreColeccion", item: "item", derechosActuales: "derechosActuales", subItems: "subItems", botonTemplate: "botonTemplate" }, outputs: { opcionSelecionada: "opcionSelecionada" }, viewQueries: [{ propertyName: "menu", first: true, predicate: ["menu"], descendants: true, static: true }], ngImport: i0, template: "<mat-menu #menu=\"matMenu\">\n <div class=\"mat-menu bg-white rounded mat-elevation-z8 shadow botonesContextual w-full\">\n <ng-container *ngFor=\"let btn of subItems\">\n <ng-container *ngTemplateOutlet=\"botonTemplate; context:{btn: btn, item: item, barraSuperior: false}\"></ng-container>\n </ng-container>\n </div>\n</mat-menu>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i2$1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }] });
|
|
869
836
|
}
|
|
870
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
837
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TablaMantenimientoMenuComponent, decorators: [{
|
|
871
838
|
type: Component,
|
|
872
839
|
args: [{ selector: 'jvs-tabla-mantenimiento-menu', standalone: true, imports: [
|
|
873
840
|
CommonModule,
|
|
@@ -969,10 +936,10 @@ class TablaMantenimientoService {
|
|
|
969
936
|
{ label: '#', labelLista: 'Numeración', property: 'numeracion_automatica', type: 'numeracion_automatica' },
|
|
970
937
|
];
|
|
971
938
|
}
|
|
972
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
973
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
939
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TablaMantenimientoService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
940
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TablaMantenimientoService, providedIn: 'root' });
|
|
974
941
|
}
|
|
975
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
942
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TablaMantenimientoService, decorators: [{
|
|
976
943
|
type: Injectable,
|
|
977
944
|
args: [{
|
|
978
945
|
providedIn: 'root',
|
|
@@ -1750,10 +1717,10 @@ let TablaMantenimientoComponent = class TablaMantenimientoComponent {
|
|
|
1750
1717
|
// this.accionRecargar.emit({ ...this.opcFiltroActual, ...{seleccionado: this.objSeleccionado}});
|
|
1751
1718
|
}
|
|
1752
1719
|
tipoValorFuncion = tipoValorFuncion;
|
|
1753
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
1754
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
1720
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TablaMantenimientoComponent, deps: [{ token: i1$2.FormBuilder }, { token: i2$2.Overlay }, { token: i0.ViewContainerRef }, { token: TablaMantenimientoService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
1721
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: TablaMantenimientoComponent, isStandalone: true, selector: "jvs-tabla-mantenimiento", inputs: { dataSuscription: "dataSuscription", objThis: "objThis", nombreColeccion: "nombreColeccion", ctrlBusquedaValue: "ctrlBusquedaValue", ctrlBusquedaPlaceholder: "ctrlBusquedaPlaceholder", filtroCampos: "filtroCampos", paginador: "paginador", esTabla: "esTabla", readOnly: "readOnly", filaExtraHeader: "filaExtraHeader", filaFooter: "filaFooter", botonesCRUD: "botonesCRUD", objBotonesCRUD: "objBotonesCRUD", classSeleccionado: "classSeleccionado", classAnulado: "classAnulado", campoAnulado: "campoAnulado", campoAnuladoMensaje: "campoAnuladoMensaje", selectionModel: "selectionModel", filaExtraTemplate: "filaExtraTemplate", exportarExcel: "exportarExcel", pageSize: "pageSize", pageSizeOptions: "pageSizeOptions", derechosActuales: "derechosActuales", ctrlBusqueda: "ctrlBusqueda", leyenda: "leyenda", idTabla: "idTabla", columnasTabla: "columnasTabla", botonesMenu: "botonesMenu", condicionesClaseFila: "condicionesClaseFila", rowTooltip: "rowTooltip", soloIconos: "soloIconos" }, outputs: { dblclickItem: "dblclickItem", opcionSelecionada: "opcionSelecionada", opcBusqueda: "opcBusqueda", accionRecargar: "accionRecargar", selectionModelChange: "selectionModelChange", dataSourceChange: "dataSourceChange", resultados: "resultados" }, host: { properties: { "id": "this.id" }, classAttribute: "jvs-tabla-mantenimiento" }, providers: [
|
|
1755
1722
|
{ provide: MAT_PAGINATOR_DEFAULT_OPTIONS, useValue: { formFieldAppearance: 'outline' } }
|
|
1756
|
-
], queries: [{ propertyName: "columnDefs", predicate: MatColumnDef, descendants: true }], viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "table", first: true, predicate: MatTable, descendants: true }, { propertyName: "rowFooter", first: true, predicate: MatFooterRow, descendants: true, read: ElementRef }, { propertyName: "userMenu", first: true, predicate: ["userMenu"], descendants: true }, { propertyName: "rows", predicate: MatRow, descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-col h-fit\">\n <div class=\"grow flex items-center justify-between bg-white\">\n <ng-content select=\"[filtro]\"></ng-content>\n </div>\n\n <div class=\"flex flex-col border-t\">\n <div class=\"flex-1 bg-app-bar flex items-center justify-between p-1\">\n <!-- <div class=\"hidden flex-1 sm:flex items-center flex-wrap gap-1\">-->\n <!-- </div>-->\n <div class=\"flex items-center flex-wrap mr-1 h-full\" *ngIf=\"leyenda\">\n <span class=\"font-bold\" [class]=\"leyenda.class\">{{ leyenda.text }}</span>\n </div>\n <div class=\"hidden flex-1 sm:flex items-center flex-wrap gap-1\">\n <div *ngIf=\"(botonesMenuFinal.izquierda ?? []).length > 0 \" class=\" flex items-center flex-wrap contenedor-botones\">\n <ng-container *ngFor=\"let btn of botonesMenu.izquierda; let idx = index;\">\n <ng-container *ngTemplateOutlet=\"botonesSuperiores; context:{btn: btn, idx: {inicio: idx, fin: botonesMenu.izquierda?.length}}\"></ng-container>\n </ng-container>\n </div>\n\n <div *ngIf=\"(botonesMenuFinal.crud ?? []).length > 0\" class=\" flex items-center flex-wrap contenedor-botones\">\n <ng-container *ngFor=\"let btn of botonesMenu.crud; let idx = index;\">\n <ng-container *ngTemplateOutlet=\"botonesSuperiores; context:{btn: btn, idx: {inicio: idx, fin: botonesMenu.crud?.length}}\"></ng-container>\n </ng-container>\n </div>\n\n <div *ngIf=\"(botonesMenuFinal.principal ?? []).length > 0\" class=\" flex items-center flex-wrap contenedor-botones\">\n <ng-container *ngFor=\"let btn of botonesMenu.principal; let idx = index;\">\n <ng-container *ngTemplateOutlet=\"botonesSuperiores; context:{btn: btn, idx: {inicio: idx, fin: botonesMenu.principal?.length}}\"></ng-container>\n </ng-container>\n </div>\n\n <div *ngIf=\"(botonesMenuFinal.derecha ?? []).length > 0\" class=\"flex-auto flex items-center justify-end contenedor-botones\">\n <ng-container *ngFor=\"let btn of botonesMenu.derecha; let idx = index;\">\n <ng-container *ngTemplateOutlet=\"botonesSuperiores; context:{btn: btn, idx: {inicio: idx, fin: botonesMenu.derecha?.length}}\"></ng-container>\n </ng-container>\n </div>\n <ng-content select=\"[objetosMenuPegado]\"></ng-content>\n </div>\n <div class=\"flex flex-1 sm:hidden items-center flex-wrap gap-1\">\n <button class=\"flex items-center justify-center text-2xs leading-none rounded-full p-1\"\n matRipple\n matTooltip=\"Botones de Acci\u00F3n\"\n type=\"button\"\n [matMenuTriggerFor]=\"menuOpciones\"\n >\n <mat-icon class=\"icon-xs\" svgIcon=\"roundMenu\"></mat-icon>\n </button>\n </div>\n <div class=\"flex-none flex items-center justify-end border-l-2\">\n <div class=\"flex-1 sm:flex-none flex items-center justify-end\">\n <ng-content select=\"[objetosMenu]\"></ng-content>\n </div>\n </div>\n <div *ngIf=\"ctrlBusqueda\" class=\"hidden flex-initial sm:flex items-center form-input max-w-[150px] bg-card rounded-full border m-1 px-1 border-l-2\"\n >\n <mat-icon svgIcon=\"roundSearch\" class=\"icon-xs\"></mat-icon>\n <input [formControl]=\"cCampoBusqueda\"\n class=\"text-xs px-1 py-1 border-0 outline-none w-full bg-transparent max-w-sm\"\n [placeholder]=\"ctrlBusquedaPlaceholder\"\n (keyup.enter)=\"ctrlBusqueda == 'query' ? cargarData() : false;\"\n type=\"search\">\n </div>\n <div class=\"flex-none flex items-center justify-end border-l-2\">\n <ng-content select=\"[botonesFiltro]\"></ng-content>\n <button matRipple *ngIf=\"isRecargarUsed || ctrlBusqueda == 'query'\"\n class=\"flex items-center justify-center text-2xs leading-none rounded-full p-1 text-green-700\"\n matTooltip=\"Actualizar datos\"\n (click)=\"(ctrlBusqueda == 'query' ? cargarData() : emitirAccionRecargar())\"\n type=\"button\">\n <mat-icon svgIcon=\"roundRefresh\" class=\"icon-xs\"></mat-icon>\n\n </button>\n <button matRipple [matMenuTriggerFor]=\"columnFilterMenu\" *ngIf=\"filtroCampos\"\n class=\"flex items-center justify-center text-2xs leading-none rounded-full p-1\"\n matTooltip=\"Columnas Filtro\"\n type=\"button\">\n <mat-icon svgIcon=\"roundFilterList\" class=\"icon-xs\"></mat-icon>\n </button>\n </div>\n </div>\n\n <div *ngIf=\"(botonesMenuFinal.secundario ?? []).length > 0\" class=\"flex-1 bg-app-bar flex items-center justify-between p-1 border-t\">\n <div class=\"hidden flex-1 sm:flex items-center flex-wrap gap-1\">\n <div class=\" flex items-center flex-wrap contenedor-botones\">\n <ng-container *ngFor=\"let btn of botonesMenu.secundario; let idx = index;\">\n <ng-container *ngTemplateOutlet=\"botonesSuperiores; context:{btn: btn, idx: {inicio: idx, fin: botonesMenu.secundario?.length}}\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n <!--<div class=\"grow flex flex-col items-stretch contenedor-tabla\" [ngClass]=\"{'table-container overflow-auto': esTabla}\">\n <pre>{{ this.chkLista.modelosChk | json }}</pre>\n <pre>{{ this.chkLista.checkbox.cantidadActivos | json }}</pre>\n <pre>{{ this.chkLista.checkbox.algunosActivos | json }}</pre>\n </div>-->\n <div class=\"grow flex flex-col items-stretch contenedor-tabla\" [ngClass]=\"{'table-container overflow-auto': esTabla}\">\n <ng-content select=\"[cuerpo]\"></ng-content>\n\n <table [id]=\"'tabla_' + nombreColeccion\" [dataSource]=\"dataSource\" [multiTemplateDataRows]=\"true\"\n [hidden]=\"!esTabla\"\n class=\"flex-1 table-mantenimiento table-auto h-fit\" mat-table matSort\n [trackBy]=\"trackByFn\"\n #tablaMantenimiento\n >\n\n <!--<table [dataSource]=\"dataSource\" class=\"table-mantenimiento table-auto h-auto w-full justify-center\" mat-table matSort>-->\n\n\n <ng-content select=\"[tableDefinitions]\"></ng-content>\n <ng-container matColumnDef=\"numeracion_automatica\">\n <th mat-header-cell *matHeaderCellDef style=\"width: 16px !important\">N\u00BA</th>\n <td mat-cell *matCellDef=\"let element; let i = dataIndex\" class=\"p-0 celda-numeracion-fila\">\n <div class=\"flex items-center justify-center font-bold numeracionFila\">\n <ng-container *ngIf=\"esTabla && paginador\">\n {{ (this.paginator?.pageIndex == 0 ? i + 1 : 1 + i + (this.paginator?.pageIndex ?? 1) * (this.paginator?.pageSize ?? 1)) }}\n </ng-container>\n <ng-container *ngIf=\"!paginador\">\n {{ (i + 1) }}\n </ng-container>\n </div>\n </td>\n <td mat-footer-cell *matFooterCellDef class=\"uppercase\"></td>\n </ng-container>\n <jvs-tabla-mantenimiento-column-defs [objThis]=\"this\" [colDetalle]=\"columnasTabla\"\n [nombreColeccion]=\"nombreColeccion\" [(chkLista)]=\"chkLista\"></jvs-tabla-mantenimiento-column-defs>\n\n <tr *matHeaderRowDef=\"visibleColumns; sticky: true\" mat-header-row class=\"title\" matHeader\n ></tr>\n\n <ng-container *ngIf=\"!!filaExtraHeader\">\n <tr mat-row *matRowDef=\"let row; columns: ['filaExtraHeader']\" class=\"student-detail-row\"\n [style.height.px]=\"0\"\n ></tr>\n\n <ng-container matColumnDef=\"filaExtraHeader\">\n <td mat-cell *matCellDef=\"let row; let i = dataIndex\" [attr.colspan]=\"visibleColumns.length\">\n\n <div class=\"row m-0 student-element-detail\"\n [@detailExpand]=\"(i == 0 && filaExtraHeader.esVisible && filaExtraHeader.esVisible()) ? 'expanded' : 'collapsed'\"\n [style.padding-right.px]=\"row.isExpanded ? 5 : 0\"\n [style.padding-left.px]=\"row.isExpanded ? 5 : 0\"\n >\n <ng-container *ngIf=\"filaExtraHeader.template\"\n [ngTemplateOutlet]=\"filaExtraHeader.template\"\n [ngTemplateOutletContext]=\"{ row: row }\"></ng-container>\n </div>\n\n </td>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"filaFooter\">\n <tr *matFooterRowDef=\"visibleColumns\" mat-footer-row\n [style.height.px]=\"0\"\n [id]=\"nombreColeccion + '_filaFooter'\"\n ></tr>\n </ng-container>\n\n <!--\t<tr\n *matRowDef=\"let row; columns: visibleColumns;\"\n class=\"hover:bg-secondary trans-ease-out cursor-pointer\"\n mat-row></tr>-->\n <tr\n [matRowKeyboardSelection]=\"tablaMantenimiento\"\n [rowModel]=\"row\"\n (seleccionarSiguiente)=\"opcMenu($event, {seccion: nombreColeccion, tipo: 'ver'});\"\n\n *matRowDef=\"let row; let idxTabla = dataIndex; columns: visibleColumns;\"\n (click)=\"seleccionarItem(row); opcMenu(row, {seccion: nombreColeccion, tipo: 'ver', tableDataIndex: idxTabla });\"\n (dblclick)=\"opcMenu(row, {seccion: nombreColeccion, tipo: 'seleccionar'}); dblclickItem.emit(row)\"\n (contextmenu)=\"(abrirMenuContextual($event, row)); $event. preventDefault();\"\n [ngClass]=\"classFila(row)\"\n @fadeInUp\n class=\"trans-ease-out cursor-pointer h-auto\"\n [style.height.px]=\"0\"\n [id]=\"propiedadSeleccion(row)\"\n [matTooltip]=\"procesarRowTooltip(row)\"\n matTooltipPosition=\"below\"\n [matTooltipPositionAtOrigin]=\"true\"\n [matTooltipClass]=\"['bg-red-700', 'text-red-100', 'm-0']\"\n [matTooltipDisabled]=\"!procesarRowTooltip(row)\"\n [class.regAnulado]=\"row[campoAnulado] == 1\"\n [class.regTooltip]=\"!!procesarRowTooltip(row)\"\n (keyup.delete)=\"opcMenu(row, {seccion: nombreColeccion, tipo: 'eliminar'})\"\n mat-row></tr>\n <ng-container *ngIf=\"filaExtraTemplate\">\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"student-detail-row h-0\"></tr>\n\n <ng-container matColumnDef=\"expandedDetail\">\n <td mat-cell *matCellDef=\"let row\" [attr.colspan]=\"visibleColumns.length\">\n\n <div class=\"row m-0 student-element-detail\"\n [@detailExpand]=\"row.isExpanded ? 'expanded' : 'collapsed'\"\n [style.padding-right.px]=\"row.isExpanded ? 5 : 0\"\n [style.padding-left.px]=\"row.isExpanded ? 5 : 0\"\n >\n <ng-container [ngTemplateOutlet]=\"filaExtraTemplate\"\n [ngTemplateOutletContext]=\"{ row: row }\"></ng-container>\n </div>\n\n </td>\n </ng-container>\n </ng-container>\n </table>\n\n <ng-container *ngIf=\"componenteCargadoTotalmente\">\n <div *ngIf=\"(noData | async) && esTabla\" class=\"flex-1 text-center text-secondary font-medium\">\n No se encontraron datos\n </div>\n </ng-container>\n </div>\n <ng-content select=\"[appendTable]\"></ng-content>\n <div class=\"flex-1 bg-app-bar flex flex-col sm:flex-row items-start justify-between p-1\">\n <div class=\"flex-1 flex items-start flex-wrap gap-1\">\n <div *ngIf=\"(botonesMenuFinal.inferior ?? []).length > 0\" class=\" flex items-center flex-wrap\">\n <ng-container *ngFor=\"let btn of botonesMenu.inferior; let idx = index;\">\n <ng-container *ngTemplateOutlet=\"botonesSuperiores; context:{btn: btn, idx: {inicio: idx, fin: botonesMenu.inferior?.length}}\"></ng-container>\n </ng-container>\n </div>\n </div>\n\n <div *ngIf=\"esTabla && paginador\" class=\"flex-1 sm:flex-none flex items-center justify-end\">\n <mat-paginator class=\"tabla-mantenimiento-paginador\" [pageSizeOptions]=\"paginacion.pageSizeOptions\" [pageIndex]=\"paginacion.pageIndex - 1\" [length]=\"paginacion.pageLength\" [pageSize]=\"paginacion.pageSize\" (page)=\"paginacion.pageCurrent = $event; emitirResultados();\" ></mat-paginator>\n </div>\n </div>\n </div>\n\n</div>\n\n\n\n<!-- SECCION DE TEMPLATES O MENUS -->\n\n\n<mat-menu #columnFilterMenu=\"matMenu\" xPosition=\"before\" yPosition=\"below\">\n <ng-container *ngFor=\"let column of columnasTabla\">\n <button (click)=\"toggleColumnVisibility(column, $event)\" *ngIf=\"!tipoValorFuncion(column.noMostrarEnLista, false)\"\n class=\"checkbox-item mat-menu-item\">\n <mat-checkbox (click)=\"$event.stopPropagation()\" [(ngModel)]=\"column.visible\" [ngModelOptions]=\"{standalone: true}\" color=\"primary\">\n <span [innerHTML]=\"(column.labelLista ?? column.label).replace('<br>', ' ')\"></span>\n </mat-checkbox>\n </button>\n </ng-container>\n</mat-menu>\n\n\n\n\n\n\n<ng-template #botonesSuperiores let-btn=\"btn\" let-idx=\"idx\">\n <ng-container *ngTemplateOutlet=\"botonesContextual; context:{btn: btn, item: objSeleccionado, barraSuperior: true, idx: idx}\"></ng-container>\n</ng-template>\n\n<ng-template #botonesContextual let-btn=\"btn\" let-item=\"item\" let-barraSuperior=\"barraSuperior\" let-idx=\"idx\">\n\n <ng-container *ngIf=\"barraSuperior; else noBarraSuperior\">\n\n <!--\t\t<button mat-button style=\"min-width: unset; border: 1px !important;\" class=\"uppercase border border-gray rounded-none h-full px-1 disabled:opacity-50 disabled:text-secondary disabled:bg-transparent\">-->\n <!--\t\t\t<mat-icon *ngIf=\"btn.icono\" [svgIcon]=\"btn.icono\" size=\"15px\" class=\"icon-xs\"></mat-icon>-->\n <!--\t\t</button>-->\n <ng-container *ngIf=\"btn.subItems && btn.subItems.length > 0\">\n <button class=\"flex items-center justify-between uppercase text-2xs leading-none rounded-none px-2 py-1 bg-opacity-95 hover:bg-opacity-100 disabled:opacity-50 disabled:text-secondary disabled:!bg-gray-300 dark:disabled:!bg-gray-500 mat-elevation-z2\" type=\"button\"\n\n *ngIf=\"(!btn.esVisible || btn.esVisible(item, this)) && subItemsActivos(btn, item)\"\n [class]=\"(btn.class?btn.class:'')\"\n\n (click)=\"opcMenu(item, btn)\"\n [style.min-width]=\"((btn.soloIcono ?? tipoValorFuncion(soloIconos)) ? 'unset' : '')\"\n [matTooltip]=\"btn.tooltip || (btn.label ? btn.label : ( (derechosActuales && derechosActuales[btn.cDerechoCodigo ?? btn.tipo]) ? derechosActuales[btn.cDerechoCodigo ?? btn.tipo]['cDerechoNombre'] : capitalizarTexto(btn.tipo))) \"\n [matMenuTriggerFor]=\"menuOtrosBarra.menu\"\n\n [matBadge]=\"btn.badge\"\n matBadgeSize=\"small\"\n >\n <mat-icon class=\"icon-xs\" [class.mr-0.5]=\"!(btn.soloIcono ?? tipoValorFuncion(soloIconos))\" *ngIf=\"btn.icono\" [svgIcon]=\"btn.icono\" ></mat-icon>\n <span class=\"whitespace-nowrap\" *ngIf=\"!(btn.soloIcono ?? tipoValorFuncion(soloIconos))\">{{ btn.label ? btn.label : ( (derechosActuales && derechosActuales[btn.cDerechoCodigo ?? btn.tipo]) ? derechosActuales[btn.cDerechoCodigo ?? btn.tipo]['cDerechoNombre'] : capitalizarTexto(btn.tipo)) }}</span>\n <mat-icon class=\"icon-xs\" svgIcon=\"fa5sCaretDown\" ></mat-icon>\n </button>\n\n <jvs-tabla-mantenimiento-menu #menuOtrosBarra\n [objThis]=\"objThis\"\n [nombreColeccion]=\"nombreColeccion\"\n [item]=\"item\"\n [derechosActuales]=\"derechosActuales\"\n [subItems]=\"btn.subItems\"\n (opcionSelecionada)=\"opcMenu($event.item, $event.btn)\"\n [botonTemplate]=\"botonesContextual\"\n >\n </jvs-tabla-mantenimiento-menu>\n </ng-container>\n <ng-container *ngIf=\"!btn.subItems || btn.subItems.length == 0\">\n <button class=\"flex items-center justify-between uppercase text-2xs leading-none rounded-none px-2 py-1 bg-opacity-95 hover:bg-opacity-100 disabled:opacity-50 disabled:text-secondary disabled:!bg-gray-300 dark:disabled:!bg-gray-500 mat-elevation-z2\" type=\"button\"\n\n *ngIf=\"!btn.esVisible || btn.esVisible(item, this)\"\n [class]=\"(btn.class?btn.class:'text-secondary')\"\n [ngClass]=\"{'text-secondary italic': !ignorarDerechos && !btn.esIndependiente && (!btn.ignorarDerecho && (!derechosActuales || !derechosActuales[btn.cDerechoCodigo ?? btn.tipo])) && !(['nuevo', 'editar', 'eliminar'].includes(btn.tipo))}\"\n [disabled]=\"!btn.esIndependiente && botonDisabled(btn, item)\"\n (click)=\"opcMenu(item, btn)\"\n [style.min-width]=\"((btn.soloIcono ?? tipoValorFuncion(soloIconos)) ? 'unset' : '')\"\n [matTooltip]=\"btn.tooltip || (btn.label ? btn.label : ( (derechosActuales && derechosActuales[btn.cDerechoCodigo ?? btn.tipo]) ? derechosActuales[btn.cDerechoCodigo ?? btn.tipo]['cDerechoNombre'] : capitalizarTexto(btn.tipo))) \"\n\n [matBadge]=\"btn.badge\"\n matBadgeSize=\"small\"\n >\n <mat-icon class=\"icon-xs\" [class.mr-0.5]=\"!(btn.soloIcono ?? tipoValorFuncion(soloIconos))\" *ngIf=\"btn.icono\" [svgIcon]=\"btn.icono\"></mat-icon>\n <span class=\"whitespace-nowrap\" *ngIf=\"!(btn.soloIcono ?? tipoValorFuncion(soloIconos))\">{{ btn.label ? btn.label : ( (derechosActuales && derechosActuales[btn.cDerechoCodigo ?? btn.tipo]) ? derechosActuales[btn.cDerechoCodigo ?? btn.tipo]['cDerechoNombre'] : capitalizarTexto(btn.tipo)) }}</span>\n </button>\n\n </ng-container>\n\n </ng-container>\n <ng-template #noBarraSuperior>\n\n <ng-container *ngIf=\"btn.subItems && btn.subItems.length > 0\">\n <button class=\"flex items-center justify-between uppercase w-full rounded-none px-2 disabled:opacity-50 disabled:text-secondary disabled:bg-transparent\" mat-menu-item type=\"button\"\n *ngIf=\"!btn.noContextual && (!btn.esVisible || btn.esVisible(item, this))\"\n [class]=\"(btn.class?btn.class.replace('text-white', '').replace('bg', 'text'):'text-secondary')\"\n [ngClass]=\"{'text-secondary italic': !ignorarDerechos && !btn.esIndependiente && (!btn.ignorarDerecho && (!derechosActuales || !derechosActuales[btn.cDerechoCodigo ?? btn.tipo]))}\"\n [disabled]=\"!btn.esIndependiente && botonDisabled(btn, item)\"\n (click)=\"opcMenu(item, btn); $event.stopPropagation();\"\n [matMenuTriggerFor]=\"menuOtrosBarra.menu\"\n >\n <div class=\"flex w-full items-center justify-between uppercase text-2xs\"\n >\n <mat-icon *ngIf=\"btn.icono\" [svgIcon]=\"btn.icono\"\n class=\"flex-none icon-xs\"\n ></mat-icon>\n <span class=\"grow text-2xs\">{{ btn.label ? btn.label : ( (derechosActuales && derechosActuales[btn.cDerechoCodigo ?? btn.tipo]) ? derechosActuales[btn.cDerechoCodigo ?? btn.tipo]['cDerechoNombre'] : capitalizarTexto(btn.tipo)) }}</span>\n <mat-icon class=\"flex-none icon-xs\" svgIcon=\"fa5sCaretRight\"></mat-icon>\n </div>\n </button>\n\n <jvs-tabla-mantenimiento-menu #menuOtrosBarra\n [objThis]=\"objThis\"\n [nombreColeccion]=\"nombreColeccion\"\n [item]=\"item\"\n [derechosActuales]=\"derechosActuales\"\n [subItems]=\"btn.subItems\"\n (opcionSelecionada)=\"opcMenu($event.item, $event.btn)\"\n [botonTemplate]=\"botonesContextual\"\n >\n </jvs-tabla-mantenimiento-menu>\n </ng-container>\n <ng-container *ngIf=\"!btn.subItems || btn.subItems.length == 0\">\n <ng-container *ngIf=\"btn.tipo == '-#SEPARADOR#-'; else itemsNormales\">\n <mat-divider></mat-divider>\n </ng-container>\n <ng-template #itemsNormales>\n <button class=\"flex items-center justify-between uppercase w-full rounded-none px-2 disabled:opacity-50 disabled:text-secondary disabled:bg-transparent\" mat-menu-item type=\"button\"\n *ngIf=\"!btn.noContextual && (!btn.esVisible || btn.esVisible(item, this))\"\n [class]=\"(btn.class?btn.class.replace('text-white', '').replace('bg', 'text'):'text-secondary')\"\n [ngClass]=\"{'text-secondary italic': !ignorarDerechos && !btn.esIndependiente && (!btn.ignorarDerecho && (!derechosActuales || !derechosActuales[btn.cDerechoCodigo ?? btn.tipo]))}\"\n [disabled]=\"!btn.esIndependiente && botonDisabled(btn, item)\"\n (click)=\"opcMenu(item, btn)\"\n >\n <div class=\"flex w-full items-center justify-between uppercase text-2xs\">\n <mat-icon *ngIf=\"btn.icono\" [svgIcon]=\"btn.icono\" class=\"flex-none icon-xs\"\n ></mat-icon>\n <span class=\"grow text-2xs\">{{ btn.label ? btn.label : ( (derechosActuales && derechosActuales[btn.cDerechoCodigo ?? btn.tipo]) ? derechosActuales[btn.cDerechoCodigo ?? btn.tipo]['cDerechoNombre'] : capitalizarTexto(btn.tipo)) }}</span>\n </div>\n </button>\n </ng-template>\n\n </ng-container>\n\n </ng-template>\n\n</ng-template>\n\n<ng-template #userMenu let-item=\"item\">\n <div class=\"mat-menu bg-white rounded mat-elevation-z8 shadow botonesContextual\">\n <ng-container *ngFor=\"let btn of listaMenuCompleto\">\n <ng-container *ngTemplateOutlet=\"botonesContextual; context:{btn: btn, item: objSeleccionado, barraSuperior: false}\"></ng-container>\n </ng-container>\n </div>\n</ng-template>\n\n\n<mat-menu #menuOpciones=\"matMenu\" xPosition=\"before\" yPosition=\"below\">\n <ng-container *ngFor=\"let btn of listaMenuCompleto\">\n <ng-container\n *ngTemplateOutlet=\"botonesContextual; context:{btn: btn, item: objSeleccionado, barraSuperior: false}\"></ng-container>\n </ng-container>\n</mat-menu>\n\n", styles: ["@charset \"UTF-8\";:root{--tabla-mantenimiento-seleccion-fondo: rgb(179, 217, 252);--tabla-mantenimiento-seleccion-texto: rgb(1, 84, 164);--mat-paginator-container-size: 30px}:root .table-mantenimiento .elemento-seleccionado{background-color:var(--tabla-mantenimiento-seleccion-fondo)!important;color:var(--tabla-mantenimiento-seleccion-texto)!important;border-color:var(--tabla-mantenimiento-seleccion-texto)!important}.jvs-tabla-mantenimiento{width:inherit}.jvs-tabla-mantenimiento .contenedor-botones>*:first-child{@apply rounded-l;}.jvs-tabla-mantenimiento .contenedor-botones>*:last-child{@apply rounded-r;}.jvs-tabla-mantenimiento tr.regTooltip>td:first-child div:first-child:before,.jvs-tabla-mantenimiento tr.regTooltip>th:first-child div:first-child:before{content:\"\\26a0\\fe0f \";color:red;margin-right:4px;font-size:12px}.jvs-tabla-mantenimiento tr.regTooltip>td:first-child:not(:has(div)):before,.jvs-tabla-mantenimiento tr.regTooltip>th:first-child:not(:has(div)):before{content:\"\\26a0\\fe0f \";color:red;margin-right:4px;font-size:12px}.jvs-tabla-mantenimiento .mat-mdc-menu-content:not(:empty){@apply flex flex-col items-start;padding:0!important}.jvs-tabla-mantenimiento .mat-mdc-menu-item{line-height:24px!important;height:24px!important;min-height:24px!important}.jvs-tabla-mantenimiento .mat-mdc-menu-panel{min-height:auto!important}.jvs-tabla-mantenimiento .mat-mdc-table .mat-mdc-cell,.jvs-tabla-mantenimiento .mat-mdc-table .mat-mdc-header-cell .mat-mdc-footer-cell{white-space:unset}.jvs-tabla-mantenimiento .table-container{max-height:600px!important}.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-table-sticky-border-elem-right{border-left:1px solid #e0e0e0}.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-table-sticky-border-elem-left{border-right:1px solid #e0e0e0}.jvs-tabla-mantenimiento .table-mantenimiento tr.regAnulado .mat-mdc-cell{color:unset!important}.jvs-tabla-mantenimiento .table-mantenimiento .bg-primary-activo .numeracionFila{@apply rounded-full bg-primary-contrast text-primary mx-1 p-1 w-6 h-6;}.jvs-tabla-mantenimiento .table-mantenimiento th .form-input{@apply w-auto;}.jvs-tabla-mantenimiento .table-mantenimiento th.mat-mdc-header-cell:not(.celda-numeracion-fila),.jvs-tabla-mantenimiento .table-mantenimiento td.mat-mdc-cell:not(.celda-numeracion-fila),.jvs-tabla-mantenimiento .table-mantenimiento td.mat-mdc-footer-cell:not(.celda-numeracion-fila){padding:.05rem .25rem}.jvs-tabla-mantenimiento .table-mantenimiento th.mat-mdc-header-cell,.jvs-tabla-mantenimiento .table-mantenimiento td.mat-mdc-cell,.jvs-tabla-mantenimiento .table-mantenimiento td.mat-mdc-footer-cell{border-width:1px;border-style:solid}.jvs-tabla-mantenimiento .table-mantenimiento th.mat-mdc-header-cell:first-of-type:not(.celda-numeracion-fila),.jvs-tabla-mantenimiento .table-mantenimiento th.mat-mdc-header-cell:last-of-type:not(.celda-numeracion-fila),.jvs-tabla-mantenimiento .table-mantenimiento td.mat-mdc-cell:first-of-type:not(.celda-numeracion-fila),.jvs-tabla-mantenimiento .table-mantenimiento td.mat-mdc-cell:last-of-type:not(.celda-numeracion-fila),.jvs-tabla-mantenimiento .table-mantenimiento td.mat-mdc-footer-cell:first-of-type:not(.celda-numeracion-fila),.jvs-tabla-mantenimiento .table-mantenimiento td.mat-mdc-footer-cell:last-of-type:not(.celda-numeracion-fila){padding:0 .25rem}.jvs-tabla-mantenimiento .table-mantenimiento .student-element-detail{overflow:hidden;display:flex;align-items:center;justify-content:center}.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-header-row{height:25px!important;color:rgb(var(--color-primary))!important;background-color:rgb(var(--color-primary-contrast))!important}.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-header-cell{padding:5px;font-size:10px;line-height:10px;font-weight:700!important;color:inherit}.jvs-tabla-mantenimiento .table-mantenimiento .mdc-data-table__row:not(.mdc-data-table__row--selected):not(.elemento-seleccionado):hover,.jvs-tabla-mantenimiento .table-mantenimiento .mdc-data-table__row:not(.mdc-data-table__row--selected):not(.elemento-seleccionado):focus{background-color:rgba(var(--color-primary-contrast),.04)}.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-row .mat-mdc-cell,.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-footer-row .mat-mdc-cell{font-size:10px}.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-row .mat-mdc-footer-cell:empty,.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-footer-row .mat-mdc-footer-cell:empty{border-width:0!important}.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-cell{@apply leading-tight;}.jvs-tabla-mantenimiento .table-mantenimiento th.mat-mdc-header-cell{border-color:#d4d0d0;@apply text-center uppercase;}.jvs-tabla-mantenimiento .table-mantenimiento th.mat-mdc-header-cell .mat-sort-header-container{@apply flex items-center justify-between w-full;}.jvs-tabla-mantenimiento .table-mantenimiento th.mat-mdc-header-cell .mat-sort-header-container .mat-sort-header-content{@apply inline w-full text-center;}.jvs-tabla-mantenimiento .table-mantenimiento th.mat-mdc-header-cell .mat-sort-header-container .mat-sort-header-arrow{@apply flex-none;}.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-sort-header-content{width:100%;text-align:center;display:unset;align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i5$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i6.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i2$1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i2$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i2$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i9.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "ngmodule", type: MatRippleModule }, { kind: "directive", type: i5.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i3$1.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i2.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i2.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i2.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: TablaMantenimientoColumnDefsComponent, selector: "jvs-tabla-mantenimiento-column-defs", inputs: ["objThis", "nombreColeccion", "colDetalle", "chkLista"], outputs: ["chkListaChange"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i14.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: TablaMantenimientoMenuComponent, selector: "jvs-tabla-mantenimiento-menu", inputs: ["objThis", "nombreColeccion", "item", "derechosActuales", "subItems", "botonTemplate"], outputs: ["opcionSelecionada"] }, { kind: "directive", type: MatRowKeyboardSelectionDirective, selector: "[matRowKeyboardSelection]", inputs: ["matRowKeyboardSelection", "rowModel"], outputs: ["seleccionarSiguiente"] }], animations: [
|
|
1723
|
+
], queries: [{ propertyName: "columnDefs", predicate: MatColumnDef, descendants: true }], viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "table", first: true, predicate: MatTable, descendants: true }, { propertyName: "rowFooter", first: true, predicate: MatFooterRow, descendants: true, read: ElementRef }, { propertyName: "userMenu", first: true, predicate: ["userMenu"], descendants: true }, { propertyName: "rows", predicate: MatRow, descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex flex-col h-fit\">\n <div class=\"grow flex items-center justify-between bg-white\">\n <ng-content select=\"[filtro]\"></ng-content>\n </div>\n\n <div class=\"flex flex-col border-t\">\n <div class=\"flex-1 bg-app-bar flex items-center justify-between p-1\">\n <!-- <div class=\"hidden flex-1 sm:flex items-center flex-wrap gap-1\">-->\n <!-- </div>-->\n <div class=\"flex items-center flex-wrap mr-1 h-full\" *ngIf=\"leyenda\">\n <span class=\"font-bold\" [class]=\"leyenda.class\">{{ leyenda.text }}</span>\n </div>\n <div class=\"hidden flex-1 sm:flex items-center flex-wrap gap-1\">\n <div *ngIf=\"(botonesMenuFinal.izquierda ?? []).length > 0 \" class=\" flex items-center flex-wrap contenedor-botones\">\n <ng-container *ngFor=\"let btn of botonesMenu.izquierda; let idx = index;\">\n <ng-container *ngTemplateOutlet=\"botonesSuperiores; context:{btn: btn, idx: {inicio: idx, fin: botonesMenu.izquierda?.length}}\"></ng-container>\n </ng-container>\n </div>\n\n <div *ngIf=\"(botonesMenuFinal.crud ?? []).length > 0\" class=\" flex items-center flex-wrap contenedor-botones\">\n <ng-container *ngFor=\"let btn of botonesMenu.crud; let idx = index;\">\n <ng-container *ngTemplateOutlet=\"botonesSuperiores; context:{btn: btn, idx: {inicio: idx, fin: botonesMenu.crud?.length}}\"></ng-container>\n </ng-container>\n </div>\n\n <div *ngIf=\"(botonesMenuFinal.principal ?? []).length > 0\" class=\" flex items-center flex-wrap contenedor-botones\">\n <ng-container *ngFor=\"let btn of botonesMenu.principal; let idx = index;\">\n <ng-container *ngTemplateOutlet=\"botonesSuperiores; context:{btn: btn, idx: {inicio: idx, fin: botonesMenu.principal?.length}}\"></ng-container>\n </ng-container>\n </div>\n\n <div *ngIf=\"(botonesMenuFinal.derecha ?? []).length > 0\" class=\"flex-auto flex items-center justify-end contenedor-botones\">\n <ng-container *ngFor=\"let btn of botonesMenu.derecha; let idx = index;\">\n <ng-container *ngTemplateOutlet=\"botonesSuperiores; context:{btn: btn, idx: {inicio: idx, fin: botonesMenu.derecha?.length}}\"></ng-container>\n </ng-container>\n </div>\n <ng-content select=\"[objetosMenuPegado]\"></ng-content>\n </div>\n <div class=\"flex flex-1 sm:hidden items-center flex-wrap gap-1\">\n <button class=\"flex items-center justify-center text-2xs leading-none rounded-full p-1\"\n matRipple\n matTooltip=\"Botones de Acci\u00F3n\"\n type=\"button\"\n [matMenuTriggerFor]=\"menuOpciones\"\n >\n <mat-icon class=\"icon-xs\" svgIcon=\"roundMenu\"></mat-icon>\n </button>\n </div>\n <div class=\"flex-none flex items-center justify-end border-l-2\">\n <div class=\"flex-1 sm:flex-none flex items-center justify-end\">\n <ng-content select=\"[objetosMenu]\"></ng-content>\n </div>\n </div>\n <div *ngIf=\"ctrlBusqueda\" class=\"hidden flex-initial sm:flex items-center form-input max-w-[150px] bg-card rounded-full border m-1 px-1 border-l-2\"\n >\n <mat-icon svgIcon=\"roundSearch\" class=\"icon-xs\"></mat-icon>\n <input [formControl]=\"cCampoBusqueda\"\n class=\"text-xs px-1 py-1 border-0 outline-none w-full bg-transparent max-w-sm\"\n [placeholder]=\"ctrlBusquedaPlaceholder\"\n (keyup.enter)=\"ctrlBusqueda == 'query' ? cargarData() : false;\"\n type=\"search\">\n </div>\n <div class=\"flex-none flex items-center justify-end border-l-2\">\n <ng-content select=\"[botonesFiltro]\"></ng-content>\n <button matRipple *ngIf=\"isRecargarUsed || ctrlBusqueda == 'query'\"\n class=\"flex items-center justify-center text-2xs leading-none rounded-full p-1 text-green-700\"\n matTooltip=\"Actualizar datos\"\n (click)=\"(ctrlBusqueda == 'query' ? cargarData() : emitirAccionRecargar())\"\n type=\"button\">\n <mat-icon svgIcon=\"roundRefresh\" class=\"icon-xs\"></mat-icon>\n\n </button>\n <button matRipple [matMenuTriggerFor]=\"columnFilterMenu\" *ngIf=\"filtroCampos\"\n class=\"flex items-center justify-center text-2xs leading-none rounded-full p-1\"\n matTooltip=\"Columnas Filtro\"\n type=\"button\">\n <mat-icon svgIcon=\"roundFilterList\" class=\"icon-xs\"></mat-icon>\n </button>\n </div>\n </div>\n\n <div *ngIf=\"(botonesMenuFinal.secundario ?? []).length > 0\" class=\"flex-1 bg-app-bar flex items-center justify-between p-1 border-t\">\n <div class=\"hidden flex-1 sm:flex items-center flex-wrap gap-1\">\n <div class=\" flex items-center flex-wrap contenedor-botones\">\n <ng-container *ngFor=\"let btn of botonesMenu.secundario; let idx = index;\">\n <ng-container *ngTemplateOutlet=\"botonesSuperiores; context:{btn: btn, idx: {inicio: idx, fin: botonesMenu.secundario?.length}}\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n <!--<div class=\"grow flex flex-col items-stretch contenedor-tabla\" [ngClass]=\"{'table-container overflow-auto': esTabla}\">\n <pre>{{ this.chkLista.modelosChk | json }}</pre>\n <pre>{{ this.chkLista.checkbox.cantidadActivos | json }}</pre>\n <pre>{{ this.chkLista.checkbox.algunosActivos | json }}</pre>\n </div>-->\n <div class=\"grow flex flex-col items-stretch contenedor-tabla\" [ngClass]=\"{'table-container overflow-auto': esTabla}\">\n <ng-content select=\"[cuerpo]\"></ng-content>\n\n <table [id]=\"'tabla_' + nombreColeccion\" [dataSource]=\"dataSource\" [multiTemplateDataRows]=\"true\"\n [hidden]=\"!esTabla\"\n class=\"flex-1 table-mantenimiento table-auto h-fit\" mat-table matSort\n [trackBy]=\"trackByFn\"\n #tablaMantenimiento\n >\n\n <!--<table [dataSource]=\"dataSource\" class=\"table-mantenimiento table-auto h-auto w-full justify-center\" mat-table matSort>-->\n\n\n <ng-content select=\"[tableDefinitions]\"></ng-content>\n <ng-container matColumnDef=\"numeracion_automatica\">\n <th mat-header-cell *matHeaderCellDef style=\"width: 16px !important\">N\u00BA</th>\n <td mat-cell *matCellDef=\"let element; let i = dataIndex\" class=\"p-0 celda-numeracion-fila\">\n <div class=\"flex items-center justify-center font-bold numeracionFila\">\n <ng-container *ngIf=\"esTabla && paginador\">\n {{ (this.paginator?.pageIndex == 0 ? i + 1 : 1 + i + (this.paginator?.pageIndex ?? 1) * (this.paginator?.pageSize ?? 1)) }}\n </ng-container>\n <ng-container *ngIf=\"!paginador\">\n {{ (i + 1) }}\n </ng-container>\n </div>\n </td>\n <td mat-footer-cell *matFooterCellDef class=\"uppercase\"></td>\n </ng-container>\n <jvs-tabla-mantenimiento-column-defs [objThis]=\"this\" [colDetalle]=\"columnasTabla\"\n [nombreColeccion]=\"nombreColeccion\" [(chkLista)]=\"chkLista\"></jvs-tabla-mantenimiento-column-defs>\n\n <tr *matHeaderRowDef=\"visibleColumns; sticky: true\" mat-header-row class=\"title\" matHeader\n ></tr>\n\n <ng-container *ngIf=\"!!filaExtraHeader\">\n <tr mat-row *matRowDef=\"let row; columns: ['filaExtraHeader']\" class=\"student-detail-row\"\n [style.height.px]=\"0\"\n ></tr>\n\n <ng-container matColumnDef=\"filaExtraHeader\">\n <td mat-cell *matCellDef=\"let row; let i = dataIndex\" [attr.colspan]=\"visibleColumns.length\">\n\n <div class=\"row m-0 student-element-detail\"\n [@detailExpand]=\"(i == 0 && filaExtraHeader.esVisible && filaExtraHeader.esVisible()) ? 'expanded' : 'collapsed'\"\n [style.padding-right.px]=\"row.isExpanded ? 5 : 0\"\n [style.padding-left.px]=\"row.isExpanded ? 5 : 0\"\n >\n <ng-container *ngIf=\"filaExtraHeader.template\"\n [ngTemplateOutlet]=\"filaExtraHeader.template\"\n [ngTemplateOutletContext]=\"{ row: row }\"></ng-container>\n </div>\n\n </td>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"filaFooter\">\n <tr *matFooterRowDef=\"visibleColumns\" mat-footer-row\n [style.height.px]=\"0\"\n [id]=\"nombreColeccion + '_filaFooter'\"\n ></tr>\n </ng-container>\n\n <!--\t<tr\n *matRowDef=\"let row; columns: visibleColumns;\"\n class=\"hover:bg-secondary trans-ease-out cursor-pointer\"\n mat-row></tr>-->\n <tr\n [matRowKeyboardSelection]=\"tablaMantenimiento\"\n [rowModel]=\"row\"\n (seleccionarSiguiente)=\"opcMenu($event, {seccion: nombreColeccion, tipo: 'ver'});\"\n\n *matRowDef=\"let row; let idxTabla = dataIndex; columns: visibleColumns;\"\n (click)=\"seleccionarItem(row); opcMenu(row, {seccion: nombreColeccion, tipo: 'ver', tableDataIndex: idxTabla });\"\n (dblclick)=\"opcMenu(row, {seccion: nombreColeccion, tipo: 'seleccionar'}); dblclickItem.emit(row)\"\n (contextmenu)=\"(abrirMenuContextual($event, row)); $event. preventDefault();\"\n [ngClass]=\"classFila(row)\"\n @fadeInUp\n class=\"trans-ease-out cursor-pointer h-auto\"\n [style.height.px]=\"0\"\n [id]=\"propiedadSeleccion(row)\"\n [matTooltip]=\"procesarRowTooltip(row)\"\n matTooltipPosition=\"below\"\n [matTooltipPositionAtOrigin]=\"true\"\n [matTooltipClass]=\"['bg-red-700', 'text-red-100', 'm-0']\"\n [matTooltipDisabled]=\"!procesarRowTooltip(row)\"\n [class.regAnulado]=\"row[campoAnulado] == 1\"\n [class.regTooltip]=\"!!procesarRowTooltip(row)\"\n (keyup.delete)=\"opcMenu(row, {seccion: nombreColeccion, tipo: 'eliminar'})\"\n mat-row></tr>\n <ng-container *ngIf=\"filaExtraTemplate\">\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"student-detail-row h-0\"></tr>\n\n <ng-container matColumnDef=\"expandedDetail\">\n <td mat-cell *matCellDef=\"let row\" [attr.colspan]=\"visibleColumns.length\">\n\n <div class=\"row m-0 student-element-detail\"\n [@detailExpand]=\"row.isExpanded ? 'expanded' : 'collapsed'\"\n [style.padding-right.px]=\"row.isExpanded ? 5 : 0\"\n [style.padding-left.px]=\"row.isExpanded ? 5 : 0\"\n >\n <ng-container [ngTemplateOutlet]=\"filaExtraTemplate\"\n [ngTemplateOutletContext]=\"{ row: row }\"></ng-container>\n </div>\n\n </td>\n </ng-container>\n </ng-container>\n </table>\n\n <ng-container *ngIf=\"componenteCargadoTotalmente\">\n <div *ngIf=\"(noData | async) && esTabla\" class=\"flex-1 text-center text-secondary font-medium\">\n No se encontraron datos\n </div>\n </ng-container>\n </div>\n <ng-content select=\"[appendTable]\"></ng-content>\n <div class=\"flex-1 bg-app-bar flex flex-col sm:flex-row items-start justify-between p-1\">\n <div class=\"flex-1 flex items-start flex-wrap gap-1\">\n <div *ngIf=\"(botonesMenuFinal.inferior ?? []).length > 0\" class=\" flex items-center flex-wrap\">\n <ng-container *ngFor=\"let btn of botonesMenu.inferior; let idx = index;\">\n <ng-container *ngTemplateOutlet=\"botonesSuperiores; context:{btn: btn, idx: {inicio: idx, fin: botonesMenu.inferior?.length}}\"></ng-container>\n </ng-container>\n </div>\n </div>\n\n <div *ngIf=\"esTabla && paginador\" class=\"flex-1 sm:flex-none flex items-center justify-end\">\n <mat-paginator class=\"tabla-mantenimiento-paginador\" [pageSizeOptions]=\"paginacion.pageSizeOptions\" [pageIndex]=\"paginacion.pageIndex - 1\" [length]=\"paginacion.pageLength\" [pageSize]=\"paginacion.pageSize\" (page)=\"paginacion.pageCurrent = $event; emitirResultados();\" ></mat-paginator>\n </div>\n </div>\n </div>\n\n</div>\n\n\n\n<!-- SECCION DE TEMPLATES O MENUS -->\n\n\n<mat-menu #columnFilterMenu=\"matMenu\" xPosition=\"before\" yPosition=\"below\">\n <ng-container *ngFor=\"let column of columnasTabla\">\n <button (click)=\"toggleColumnVisibility(column, $event)\" *ngIf=\"!tipoValorFuncion(column.noMostrarEnLista, false)\"\n class=\"checkbox-item mat-menu-item\">\n <mat-checkbox (click)=\"$event.stopPropagation()\" [(ngModel)]=\"column.visible\" [ngModelOptions]=\"{standalone: true}\" color=\"primary\">\n <span [innerHTML]=\"(column.labelLista ?? column.label).replace('<br>', ' ')\"></span>\n </mat-checkbox>\n </button>\n </ng-container>\n</mat-menu>\n\n\n\n\n\n\n<ng-template #botonesSuperiores let-btn=\"btn\" let-idx=\"idx\">\n <ng-container *ngTemplateOutlet=\"botonesContextual; context:{btn: btn, item: objSeleccionado, barraSuperior: true, idx: idx}\"></ng-container>\n</ng-template>\n\n<ng-template #botonesContextual let-btn=\"btn\" let-item=\"item\" let-barraSuperior=\"barraSuperior\" let-idx=\"idx\">\n\n <ng-container *ngIf=\"barraSuperior; else noBarraSuperior\">\n\n <!--\t\t<button mat-button style=\"min-width: unset; border: 1px !important;\" class=\"uppercase border border-gray rounded-none h-full px-1 disabled:opacity-50 disabled:text-secondary disabled:bg-transparent\">-->\n <!--\t\t\t<mat-icon *ngIf=\"btn.icono\" [svgIcon]=\"btn.icono\" size=\"15px\" class=\"icon-xs\"></mat-icon>-->\n <!--\t\t</button>-->\n <ng-container *ngIf=\"btn.subItems && btn.subItems.length > 0\">\n <button class=\"flex items-center justify-between uppercase text-2xs leading-none rounded-none px-2 py-1 bg-opacity-95 hover:bg-opacity-100 disabled:opacity-50 disabled:text-secondary disabled:!bg-gray-300 dark:disabled:!bg-gray-500 mat-elevation-z2\" type=\"button\"\n\n *ngIf=\"(!btn.esVisible || btn.esVisible(item, this)) && subItemsActivos(btn, item)\"\n [class]=\"(btn.class?btn.class:'')\"\n\n (click)=\"opcMenu(item, btn)\"\n [style.min-width]=\"((btn.soloIcono ?? tipoValorFuncion(soloIconos)) ? 'unset' : '')\"\n [matTooltip]=\"btn.tooltip || (btn.label ? btn.label : ( (derechosActuales && derechosActuales[btn.cDerechoCodigo ?? btn.tipo]) ? derechosActuales[btn.cDerechoCodigo ?? btn.tipo]['cDerechoNombre'] : capitalizarTexto(btn.tipo))) \"\n [matMenuTriggerFor]=\"menuOtrosBarra.menu\"\n\n [matBadge]=\"btn.badge\"\n matBadgeSize=\"small\"\n >\n <mat-icon class=\"icon-xs\" [class.mr-0.5]=\"!(btn.soloIcono ?? tipoValorFuncion(soloIconos))\" *ngIf=\"btn.icono\" [svgIcon]=\"btn.icono\" ></mat-icon>\n <span class=\"whitespace-nowrap\" *ngIf=\"!(btn.soloIcono ?? tipoValorFuncion(soloIconos))\">{{ btn.label ? btn.label : ( (derechosActuales && derechosActuales[btn.cDerechoCodigo ?? btn.tipo]) ? derechosActuales[btn.cDerechoCodigo ?? btn.tipo]['cDerechoNombre'] : capitalizarTexto(btn.tipo)) }}</span>\n <mat-icon class=\"icon-xs\" svgIcon=\"fa5sCaretDown\" ></mat-icon>\n </button>\n\n <jvs-tabla-mantenimiento-menu #menuOtrosBarra\n [objThis]=\"objThis\"\n [nombreColeccion]=\"nombreColeccion\"\n [item]=\"item\"\n [derechosActuales]=\"derechosActuales\"\n [subItems]=\"btn.subItems\"\n (opcionSelecionada)=\"opcMenu($event.item, $event.btn)\"\n [botonTemplate]=\"botonesContextual\"\n >\n </jvs-tabla-mantenimiento-menu>\n </ng-container>\n <ng-container *ngIf=\"!btn.subItems || btn.subItems.length == 0\">\n <button class=\"flex items-center justify-between uppercase text-2xs leading-none rounded-none px-2 py-1 bg-opacity-95 hover:bg-opacity-100 disabled:opacity-50 disabled:text-secondary disabled:!bg-gray-300 dark:disabled:!bg-gray-500 mat-elevation-z2\" type=\"button\"\n\n *ngIf=\"!btn.esVisible || btn.esVisible(item, this)\"\n [class]=\"(btn.class?btn.class:'text-secondary')\"\n [ngClass]=\"{'text-secondary italic': !ignorarDerechos && !btn.esIndependiente && (!btn.ignorarDerecho && (!derechosActuales || !derechosActuales[btn.cDerechoCodigo ?? btn.tipo])) && !(['nuevo', 'editar', 'eliminar'].includes(btn.tipo))}\"\n [disabled]=\"!btn.esIndependiente && botonDisabled(btn, item)\"\n (click)=\"opcMenu(item, btn)\"\n [style.min-width]=\"((btn.soloIcono ?? tipoValorFuncion(soloIconos)) ? 'unset' : '')\"\n [matTooltip]=\"btn.tooltip || (btn.label ? btn.label : ( (derechosActuales && derechosActuales[btn.cDerechoCodigo ?? btn.tipo]) ? derechosActuales[btn.cDerechoCodigo ?? btn.tipo]['cDerechoNombre'] : capitalizarTexto(btn.tipo))) \"\n\n [matBadge]=\"btn.badge\"\n matBadgeSize=\"small\"\n >\n <mat-icon class=\"icon-xs\" [class.mr-0.5]=\"!(btn.soloIcono ?? tipoValorFuncion(soloIconos))\" *ngIf=\"btn.icono\" [svgIcon]=\"btn.icono\"></mat-icon>\n <span class=\"whitespace-nowrap\" *ngIf=\"!(btn.soloIcono ?? tipoValorFuncion(soloIconos))\">{{ btn.label ? btn.label : ( (derechosActuales && derechosActuales[btn.cDerechoCodigo ?? btn.tipo]) ? derechosActuales[btn.cDerechoCodigo ?? btn.tipo]['cDerechoNombre'] : capitalizarTexto(btn.tipo)) }}</span>\n </button>\n\n </ng-container>\n\n </ng-container>\n <ng-template #noBarraSuperior>\n\n <ng-container *ngIf=\"btn.subItems && btn.subItems.length > 0\">\n <button class=\"flex items-center justify-between uppercase w-full rounded-none px-2 disabled:opacity-50 disabled:text-secondary disabled:bg-transparent\" mat-menu-item type=\"button\"\n *ngIf=\"!btn.noContextual && (!btn.esVisible || btn.esVisible(item, this))\"\n [class]=\"(btn.class?btn.class.replace('text-white', '').replace('bg', 'text'):'text-secondary')\"\n [ngClass]=\"{'text-secondary italic': !ignorarDerechos && !btn.esIndependiente && (!btn.ignorarDerecho && (!derechosActuales || !derechosActuales[btn.cDerechoCodigo ?? btn.tipo]))}\"\n [disabled]=\"!btn.esIndependiente && botonDisabled(btn, item)\"\n (click)=\"opcMenu(item, btn); $event.stopPropagation();\"\n [matMenuTriggerFor]=\"menuOtrosBarra.menu\"\n >\n <div class=\"flex w-full items-center justify-between uppercase text-2xs\"\n >\n <mat-icon *ngIf=\"btn.icono\" [svgIcon]=\"btn.icono\"\n class=\"flex-none icon-xs\"\n ></mat-icon>\n <span class=\"grow text-2xs\">{{ btn.label ? btn.label : ( (derechosActuales && derechosActuales[btn.cDerechoCodigo ?? btn.tipo]) ? derechosActuales[btn.cDerechoCodigo ?? btn.tipo]['cDerechoNombre'] : capitalizarTexto(btn.tipo)) }}</span>\n <mat-icon class=\"flex-none icon-xs\" svgIcon=\"fa5sCaretRight\"></mat-icon>\n </div>\n </button>\n\n <jvs-tabla-mantenimiento-menu #menuOtrosBarra\n [objThis]=\"objThis\"\n [nombreColeccion]=\"nombreColeccion\"\n [item]=\"item\"\n [derechosActuales]=\"derechosActuales\"\n [subItems]=\"btn.subItems\"\n (opcionSelecionada)=\"opcMenu($event.item, $event.btn)\"\n [botonTemplate]=\"botonesContextual\"\n >\n </jvs-tabla-mantenimiento-menu>\n </ng-container>\n <ng-container *ngIf=\"!btn.subItems || btn.subItems.length == 0\">\n <ng-container *ngIf=\"btn.tipo == '-#SEPARADOR#-'; else itemsNormales\">\n <mat-divider></mat-divider>\n </ng-container>\n <ng-template #itemsNormales>\n <button class=\"flex items-center justify-between uppercase w-full rounded-none px-2 disabled:opacity-50 disabled:text-secondary disabled:bg-transparent\" mat-menu-item type=\"button\"\n *ngIf=\"!btn.noContextual && (!btn.esVisible || btn.esVisible(item, this))\"\n [class]=\"(btn.class?btn.class.replace('text-white', '').replace('bg', 'text'):'text-secondary')\"\n [ngClass]=\"{'text-secondary italic': !ignorarDerechos && !btn.esIndependiente && (!btn.ignorarDerecho && (!derechosActuales || !derechosActuales[btn.cDerechoCodigo ?? btn.tipo]))}\"\n [disabled]=\"!btn.esIndependiente && botonDisabled(btn, item)\"\n (click)=\"opcMenu(item, btn)\"\n >\n <div class=\"flex w-full items-center justify-between uppercase text-2xs\">\n <mat-icon *ngIf=\"btn.icono\" [svgIcon]=\"btn.icono\" class=\"flex-none icon-xs\"\n ></mat-icon>\n <span class=\"grow text-2xs\">{{ btn.label ? btn.label : ( (derechosActuales && derechosActuales[btn.cDerechoCodigo ?? btn.tipo]) ? derechosActuales[btn.cDerechoCodigo ?? btn.tipo]['cDerechoNombre'] : capitalizarTexto(btn.tipo)) }}</span>\n </div>\n </button>\n </ng-template>\n\n </ng-container>\n\n </ng-template>\n\n</ng-template>\n\n<ng-template #userMenu let-item=\"item\">\n <div class=\"mat-menu bg-white rounded mat-elevation-z8 shadow botonesContextual\">\n <ng-container *ngFor=\"let btn of listaMenuCompleto\">\n <ng-container *ngTemplateOutlet=\"botonesContextual; context:{btn: btn, item: objSeleccionado, barraSuperior: false}\"></ng-container>\n </ng-container>\n </div>\n</ng-template>\n\n\n<mat-menu #menuOpciones=\"matMenu\" xPosition=\"before\" yPosition=\"below\">\n <ng-container *ngFor=\"let btn of listaMenuCompleto\">\n <ng-container\n *ngTemplateOutlet=\"botonesContextual; context:{btn: btn, item: objSeleccionado, barraSuperior: false}\"></ng-container>\n </ng-container>\n</mat-menu>\n\n", styles: ["@charset \"UTF-8\";:root{--tabla-mantenimiento-seleccion-fondo: rgb(179, 217, 252);--tabla-mantenimiento-seleccion-texto: rgb(1, 84, 164);--mat-paginator-container-size: 30px}:root .table-mantenimiento .elemento-seleccionado{background-color:var(--tabla-mantenimiento-seleccion-fondo)!important;color:var(--tabla-mantenimiento-seleccion-texto)!important;border-color:var(--tabla-mantenimiento-seleccion-texto)!important}.jvs-tabla-mantenimiento{width:inherit}.jvs-tabla-mantenimiento .contenedor-botones>*:first-child{@apply rounded-l;}.jvs-tabla-mantenimiento .contenedor-botones>*:last-child{@apply rounded-r;}.jvs-tabla-mantenimiento tr.regTooltip>td:first-child div:first-child:before,.jvs-tabla-mantenimiento tr.regTooltip>th:first-child div:first-child:before{content:\"\\26a0\\fe0f \";color:red;margin-right:4px;font-size:12px}.jvs-tabla-mantenimiento tr.regTooltip>td:first-child:not(:has(div)):before,.jvs-tabla-mantenimiento tr.regTooltip>th:first-child:not(:has(div)):before{content:\"\\26a0\\fe0f \";color:red;margin-right:4px;font-size:12px}.jvs-tabla-mantenimiento .mat-mdc-menu-content:not(:empty){@apply flex flex-col items-start;padding:0!important}.jvs-tabla-mantenimiento .mat-mdc-menu-item{line-height:24px!important;height:24px!important;min-height:24px!important}.jvs-tabla-mantenimiento .mat-mdc-menu-panel{min-height:auto!important}.jvs-tabla-mantenimiento .mat-mdc-table .mat-mdc-cell,.jvs-tabla-mantenimiento .mat-mdc-table .mat-mdc-header-cell .mat-mdc-footer-cell{white-space:unset}.jvs-tabla-mantenimiento .table-container{max-height:600px!important}.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-table-sticky-border-elem-right{border-left:1px solid #e0e0e0}.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-table-sticky-border-elem-left{border-right:1px solid #e0e0e0}.jvs-tabla-mantenimiento .table-mantenimiento tr.regAnulado .mat-mdc-cell{color:unset!important}.jvs-tabla-mantenimiento .table-mantenimiento .bg-primary-activo .numeracionFila{@apply rounded-full bg-primary-contrast text-primary mx-1 p-1 w-6 h-6;}.jvs-tabla-mantenimiento .table-mantenimiento th .form-input{@apply w-auto;}.jvs-tabla-mantenimiento .table-mantenimiento th.mat-mdc-header-cell,.jvs-tabla-mantenimiento .table-mantenimiento td.mat-mdc-cell,.jvs-tabla-mantenimiento .table-mantenimiento td.mat-mdc-footer-cell{border-width:1px;border-style:solid}.jvs-tabla-mantenimiento .table-mantenimiento th.mat-mdc-header-cell:not(.celda-numeracion-fila),.jvs-tabla-mantenimiento .table-mantenimiento td.mat-mdc-cell:not(.celda-numeracion-fila),.jvs-tabla-mantenimiento .table-mantenimiento td.mat-mdc-footer-cell:not(.celda-numeracion-fila){padding:.05rem .25rem}.jvs-tabla-mantenimiento .table-mantenimiento th.mat-mdc-header-cell:first-of-type:not(.celda-numeracion-fila),.jvs-tabla-mantenimiento .table-mantenimiento th.mat-mdc-header-cell:last-of-type:not(.celda-numeracion-fila),.jvs-tabla-mantenimiento .table-mantenimiento td.mat-mdc-cell:first-of-type:not(.celda-numeracion-fila),.jvs-tabla-mantenimiento .table-mantenimiento td.mat-mdc-cell:last-of-type:not(.celda-numeracion-fila),.jvs-tabla-mantenimiento .table-mantenimiento td.mat-mdc-footer-cell:first-of-type:not(.celda-numeracion-fila),.jvs-tabla-mantenimiento .table-mantenimiento td.mat-mdc-footer-cell:last-of-type:not(.celda-numeracion-fila){padding:0 .25rem}.jvs-tabla-mantenimiento .table-mantenimiento .student-element-detail{overflow:hidden;display:flex;align-items:center;justify-content:center}.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-header-row{height:25px!important;color:rgb(var(--color-primary))!important;background-color:rgb(var(--color-primary-contrast))!important}.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-header-cell{padding:5px;font-size:10px;line-height:10px;font-weight:700!important;color:inherit}.jvs-tabla-mantenimiento .table-mantenimiento .mdc-data-table__row:not(.mdc-data-table__row--selected):not(.elemento-seleccionado):hover,.jvs-tabla-mantenimiento .table-mantenimiento .mdc-data-table__row:not(.mdc-data-table__row--selected):not(.elemento-seleccionado):focus{background-color:rgba(var(--color-primary-contrast),.04)}.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-row .mat-mdc-cell,.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-footer-row .mat-mdc-cell{font-size:10px}.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-row .mat-mdc-footer-cell:empty,.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-footer-row .mat-mdc-footer-cell:empty{border-width:0!important}.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-cell{@apply leading-tight;}.jvs-tabla-mantenimiento .table-mantenimiento th.mat-mdc-header-cell{border-color:#d4d0d0;@apply text-center uppercase;}.jvs-tabla-mantenimiento .table-mantenimiento th.mat-mdc-header-cell .mat-sort-header-container{@apply flex items-center justify-between w-full;}.jvs-tabla-mantenimiento .table-mantenimiento th.mat-mdc-header-cell .mat-sort-header-container .mat-sort-header-content{@apply inline w-full text-center;}.jvs-tabla-mantenimiento .table-mantenimiento th.mat-mdc-header-cell .mat-sort-header-container .mat-sort-header-arrow{@apply flex-none;}.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-sort-header-content{width:100%;text-align:center;display:unset;align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i5$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i6.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i2$1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i2$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i2$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatPaginatorModule }, { kind: "component", type: i9.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "ngmodule", type: MatRippleModule }, { kind: "directive", type: i5.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "ngmodule", type: MatSortModule }, { kind: "directive", type: i3$1.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i2.MatFooterRowDef, selector: "[matFooterRowDef]", inputs: ["matFooterRowDef", "matFooterRowDefSticky"] }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i2.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i2.MatFooterRow, selector: "mat-footer-row, tr[mat-footer-row]", exportAs: ["matFooterRow"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: TablaMantenimientoColumnDefsComponent, selector: "jvs-tabla-mantenimiento-column-defs", inputs: ["objThis", "nombreColeccion", "colDetalle", "chkLista"], outputs: ["chkListaChange"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i14.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: TablaMantenimientoMenuComponent, selector: "jvs-tabla-mantenimiento-menu", inputs: ["objThis", "nombreColeccion", "item", "derechosActuales", "subItems", "botonTemplate"], outputs: ["opcionSelecionada"] }, { kind: "directive", type: MatRowKeyboardSelectionDirective, selector: "[matRowKeyboardSelection]", inputs: ["matRowKeyboardSelection", "rowModel"], outputs: ["seleccionarSiguiente"] }], animations: [
|
|
1757
1724
|
trigger('detailExpand', [
|
|
1758
1725
|
state('collapsed', style({ height: '0px', minHeight: '0' })),
|
|
1759
1726
|
state('expanded', style({ height: '*' })),
|
|
@@ -1776,7 +1743,7 @@ let TablaMantenimientoComponent = class TablaMantenimientoComponent {
|
|
|
1776
1743
|
TablaMantenimientoComponent = TablaMantenimientoComponent_1 = __decorate([
|
|
1777
1744
|
UntilDestroy({ checkProperties: true })
|
|
1778
1745
|
], TablaMantenimientoComponent);
|
|
1779
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1746
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TablaMantenimientoComponent, decorators: [{
|
|
1780
1747
|
type: Component,
|
|
1781
1748
|
args: [{ selector: 'jvs-tabla-mantenimiento', standalone: true, imports: [
|
|
1782
1749
|
CommonModule,
|
|
@@ -1817,7 +1784,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImpo
|
|
|
1817
1784
|
]),
|
|
1818
1785
|
], providers: [
|
|
1819
1786
|
{ provide: MAT_PAGINATOR_DEFAULT_OPTIONS, useValue: { formFieldAppearance: 'outline' } }
|
|
1820
|
-
], template: "<div class=\"flex flex-col h-fit\">\n <div class=\"grow flex items-center justify-between bg-white\">\n <ng-content select=\"[filtro]\"></ng-content>\n </div>\n\n <div class=\"flex flex-col border-t\">\n <div class=\"flex-1 bg-app-bar flex items-center justify-between p-1\">\n <!-- <div class=\"hidden flex-1 sm:flex items-center flex-wrap gap-1\">-->\n <!-- </div>-->\n <div class=\"flex items-center flex-wrap mr-1 h-full\" *ngIf=\"leyenda\">\n <span class=\"font-bold\" [class]=\"leyenda.class\">{{ leyenda.text }}</span>\n </div>\n <div class=\"hidden flex-1 sm:flex items-center flex-wrap gap-1\">\n <div *ngIf=\"(botonesMenuFinal.izquierda ?? []).length > 0 \" class=\" flex items-center flex-wrap contenedor-botones\">\n <ng-container *ngFor=\"let btn of botonesMenu.izquierda; let idx = index;\">\n <ng-container *ngTemplateOutlet=\"botonesSuperiores; context:{btn: btn, idx: {inicio: idx, fin: botonesMenu.izquierda?.length}}\"></ng-container>\n </ng-container>\n </div>\n\n <div *ngIf=\"(botonesMenuFinal.crud ?? []).length > 0\" class=\" flex items-center flex-wrap contenedor-botones\">\n <ng-container *ngFor=\"let btn of botonesMenu.crud; let idx = index;\">\n <ng-container *ngTemplateOutlet=\"botonesSuperiores; context:{btn: btn, idx: {inicio: idx, fin: botonesMenu.crud?.length}}\"></ng-container>\n </ng-container>\n </div>\n\n <div *ngIf=\"(botonesMenuFinal.principal ?? []).length > 0\" class=\" flex items-center flex-wrap contenedor-botones\">\n <ng-container *ngFor=\"let btn of botonesMenu.principal; let idx = index;\">\n <ng-container *ngTemplateOutlet=\"botonesSuperiores; context:{btn: btn, idx: {inicio: idx, fin: botonesMenu.principal?.length}}\"></ng-container>\n </ng-container>\n </div>\n\n <div *ngIf=\"(botonesMenuFinal.derecha ?? []).length > 0\" class=\"flex-auto flex items-center justify-end contenedor-botones\">\n <ng-container *ngFor=\"let btn of botonesMenu.derecha; let idx = index;\">\n <ng-container *ngTemplateOutlet=\"botonesSuperiores; context:{btn: btn, idx: {inicio: idx, fin: botonesMenu.derecha?.length}}\"></ng-container>\n </ng-container>\n </div>\n <ng-content select=\"[objetosMenuPegado]\"></ng-content>\n </div>\n <div class=\"flex flex-1 sm:hidden items-center flex-wrap gap-1\">\n <button class=\"flex items-center justify-center text-2xs leading-none rounded-full p-1\"\n matRipple\n matTooltip=\"Botones de Acci\u00F3n\"\n type=\"button\"\n [matMenuTriggerFor]=\"menuOpciones\"\n >\n <mat-icon class=\"icon-xs\" svgIcon=\"roundMenu\"></mat-icon>\n </button>\n </div>\n <div class=\"flex-none flex items-center justify-end border-l-2\">\n <div class=\"flex-1 sm:flex-none flex items-center justify-end\">\n <ng-content select=\"[objetosMenu]\"></ng-content>\n </div>\n </div>\n <div *ngIf=\"ctrlBusqueda\" class=\"hidden flex-initial sm:flex items-center form-input max-w-[150px] bg-card rounded-full border m-1 px-1 border-l-2\"\n >\n <mat-icon svgIcon=\"roundSearch\" class=\"icon-xs\"></mat-icon>\n <input [formControl]=\"cCampoBusqueda\"\n class=\"text-xs px-1 py-1 border-0 outline-none w-full bg-transparent max-w-sm\"\n [placeholder]=\"ctrlBusquedaPlaceholder\"\n (keyup.enter)=\"ctrlBusqueda == 'query' ? cargarData() : false;\"\n type=\"search\">\n </div>\n <div class=\"flex-none flex items-center justify-end border-l-2\">\n <ng-content select=\"[botonesFiltro]\"></ng-content>\n <button matRipple *ngIf=\"isRecargarUsed || ctrlBusqueda == 'query'\"\n class=\"flex items-center justify-center text-2xs leading-none rounded-full p-1 text-green-700\"\n matTooltip=\"Actualizar datos\"\n (click)=\"(ctrlBusqueda == 'query' ? cargarData() : emitirAccionRecargar())\"\n type=\"button\">\n <mat-icon svgIcon=\"roundRefresh\" class=\"icon-xs\"></mat-icon>\n\n </button>\n <button matRipple [matMenuTriggerFor]=\"columnFilterMenu\" *ngIf=\"filtroCampos\"\n class=\"flex items-center justify-center text-2xs leading-none rounded-full p-1\"\n matTooltip=\"Columnas Filtro\"\n type=\"button\">\n <mat-icon svgIcon=\"roundFilterList\" class=\"icon-xs\"></mat-icon>\n </button>\n </div>\n </div>\n\n <div *ngIf=\"(botonesMenuFinal.secundario ?? []).length > 0\" class=\"flex-1 bg-app-bar flex items-center justify-between p-1 border-t\">\n <div class=\"hidden flex-1 sm:flex items-center flex-wrap gap-1\">\n <div class=\" flex items-center flex-wrap contenedor-botones\">\n <ng-container *ngFor=\"let btn of botonesMenu.secundario; let idx = index;\">\n <ng-container *ngTemplateOutlet=\"botonesSuperiores; context:{btn: btn, idx: {inicio: idx, fin: botonesMenu.secundario?.length}}\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n <!--<div class=\"grow flex flex-col items-stretch contenedor-tabla\" [ngClass]=\"{'table-container overflow-auto': esTabla}\">\n <pre>{{ this.chkLista.modelosChk | json }}</pre>\n <pre>{{ this.chkLista.checkbox.cantidadActivos | json }}</pre>\n <pre>{{ this.chkLista.checkbox.algunosActivos | json }}</pre>\n </div>-->\n <div class=\"grow flex flex-col items-stretch contenedor-tabla\" [ngClass]=\"{'table-container overflow-auto': esTabla}\">\n <ng-content select=\"[cuerpo]\"></ng-content>\n\n <table [id]=\"'tabla_' + nombreColeccion\" [dataSource]=\"dataSource\" [multiTemplateDataRows]=\"true\"\n [hidden]=\"!esTabla\"\n class=\"flex-1 table-mantenimiento table-auto h-fit\" mat-table matSort\n [trackBy]=\"trackByFn\"\n #tablaMantenimiento\n >\n\n <!--<table [dataSource]=\"dataSource\" class=\"table-mantenimiento table-auto h-auto w-full justify-center\" mat-table matSort>-->\n\n\n <ng-content select=\"[tableDefinitions]\"></ng-content>\n <ng-container matColumnDef=\"numeracion_automatica\">\n <th mat-header-cell *matHeaderCellDef style=\"width: 16px !important\">N\u00BA</th>\n <td mat-cell *matCellDef=\"let element; let i = dataIndex\" class=\"p-0 celda-numeracion-fila\">\n <div class=\"flex items-center justify-center font-bold numeracionFila\">\n <ng-container *ngIf=\"esTabla && paginador\">\n {{ (this.paginator?.pageIndex == 0 ? i + 1 : 1 + i + (this.paginator?.pageIndex ?? 1) * (this.paginator?.pageSize ?? 1)) }}\n </ng-container>\n <ng-container *ngIf=\"!paginador\">\n {{ (i + 1) }}\n </ng-container>\n </div>\n </td>\n <td mat-footer-cell *matFooterCellDef class=\"uppercase\"></td>\n </ng-container>\n <jvs-tabla-mantenimiento-column-defs [objThis]=\"this\" [colDetalle]=\"columnasTabla\"\n [nombreColeccion]=\"nombreColeccion\" [(chkLista)]=\"chkLista\"></jvs-tabla-mantenimiento-column-defs>\n\n <tr *matHeaderRowDef=\"visibleColumns; sticky: true\" mat-header-row class=\"title\" matHeader\n ></tr>\n\n <ng-container *ngIf=\"!!filaExtraHeader\">\n <tr mat-row *matRowDef=\"let row; columns: ['filaExtraHeader']\" class=\"student-detail-row\"\n [style.height.px]=\"0\"\n ></tr>\n\n <ng-container matColumnDef=\"filaExtraHeader\">\n <td mat-cell *matCellDef=\"let row; let i = dataIndex\" [attr.colspan]=\"visibleColumns.length\">\n\n <div class=\"row m-0 student-element-detail\"\n [@detailExpand]=\"(i == 0 && filaExtraHeader.esVisible && filaExtraHeader.esVisible()) ? 'expanded' : 'collapsed'\"\n [style.padding-right.px]=\"row.isExpanded ? 5 : 0\"\n [style.padding-left.px]=\"row.isExpanded ? 5 : 0\"\n >\n <ng-container *ngIf=\"filaExtraHeader.template\"\n [ngTemplateOutlet]=\"filaExtraHeader.template\"\n [ngTemplateOutletContext]=\"{ row: row }\"></ng-container>\n </div>\n\n </td>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"filaFooter\">\n <tr *matFooterRowDef=\"visibleColumns\" mat-footer-row\n [style.height.px]=\"0\"\n [id]=\"nombreColeccion + '_filaFooter'\"\n ></tr>\n </ng-container>\n\n <!--\t<tr\n *matRowDef=\"let row; columns: visibleColumns;\"\n class=\"hover:bg-secondary trans-ease-out cursor-pointer\"\n mat-row></tr>-->\n <tr\n [matRowKeyboardSelection]=\"tablaMantenimiento\"\n [rowModel]=\"row\"\n (seleccionarSiguiente)=\"opcMenu($event, {seccion: nombreColeccion, tipo: 'ver'});\"\n\n *matRowDef=\"let row; let idxTabla = dataIndex; columns: visibleColumns;\"\n (click)=\"seleccionarItem(row); opcMenu(row, {seccion: nombreColeccion, tipo: 'ver', tableDataIndex: idxTabla });\"\n (dblclick)=\"opcMenu(row, {seccion: nombreColeccion, tipo: 'seleccionar'}); dblclickItem.emit(row)\"\n (contextmenu)=\"(abrirMenuContextual($event, row)); $event. preventDefault();\"\n [ngClass]=\"classFila(row)\"\n @fadeInUp\n class=\"trans-ease-out cursor-pointer h-auto\"\n [style.height.px]=\"0\"\n [id]=\"propiedadSeleccion(row)\"\n [matTooltip]=\"procesarRowTooltip(row)\"\n matTooltipPosition=\"below\"\n [matTooltipPositionAtOrigin]=\"true\"\n [matTooltipClass]=\"['bg-red-700', 'text-red-100', 'm-0']\"\n [matTooltipDisabled]=\"!procesarRowTooltip(row)\"\n [class.regAnulado]=\"row[campoAnulado] == 1\"\n [class.regTooltip]=\"!!procesarRowTooltip(row)\"\n (keyup.delete)=\"opcMenu(row, {seccion: nombreColeccion, tipo: 'eliminar'})\"\n mat-row></tr>\n <ng-container *ngIf=\"filaExtraTemplate\">\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"student-detail-row h-0\"></tr>\n\n <ng-container matColumnDef=\"expandedDetail\">\n <td mat-cell *matCellDef=\"let row\" [attr.colspan]=\"visibleColumns.length\">\n\n <div class=\"row m-0 student-element-detail\"\n [@detailExpand]=\"row.isExpanded ? 'expanded' : 'collapsed'\"\n [style.padding-right.px]=\"row.isExpanded ? 5 : 0\"\n [style.padding-left.px]=\"row.isExpanded ? 5 : 0\"\n >\n <ng-container [ngTemplateOutlet]=\"filaExtraTemplate\"\n [ngTemplateOutletContext]=\"{ row: row }\"></ng-container>\n </div>\n\n </td>\n </ng-container>\n </ng-container>\n </table>\n\n <ng-container *ngIf=\"componenteCargadoTotalmente\">\n <div *ngIf=\"(noData | async) && esTabla\" class=\"flex-1 text-center text-secondary font-medium\">\n No se encontraron datos\n </div>\n </ng-container>\n </div>\n <ng-content select=\"[appendTable]\"></ng-content>\n <div class=\"flex-1 bg-app-bar flex flex-col sm:flex-row items-start justify-between p-1\">\n <div class=\"flex-1 flex items-start flex-wrap gap-1\">\n <div *ngIf=\"(botonesMenuFinal.inferior ?? []).length > 0\" class=\" flex items-center flex-wrap\">\n <ng-container *ngFor=\"let btn of botonesMenu.inferior; let idx = index;\">\n <ng-container *ngTemplateOutlet=\"botonesSuperiores; context:{btn: btn, idx: {inicio: idx, fin: botonesMenu.inferior?.length}}\"></ng-container>\n </ng-container>\n </div>\n </div>\n\n <div *ngIf=\"esTabla && paginador\" class=\"flex-1 sm:flex-none flex items-center justify-end\">\n <mat-paginator class=\"tabla-mantenimiento-paginador\" [pageSizeOptions]=\"paginacion.pageSizeOptions\" [pageIndex]=\"paginacion.pageIndex - 1\" [length]=\"paginacion.pageLength\" [pageSize]=\"paginacion.pageSize\" (page)=\"paginacion.pageCurrent = $event; emitirResultados();\" ></mat-paginator>\n </div>\n </div>\n </div>\n\n</div>\n\n\n\n<!-- SECCION DE TEMPLATES O MENUS -->\n\n\n<mat-menu #columnFilterMenu=\"matMenu\" xPosition=\"before\" yPosition=\"below\">\n <ng-container *ngFor=\"let column of columnasTabla\">\n <button (click)=\"toggleColumnVisibility(column, $event)\" *ngIf=\"!tipoValorFuncion(column.noMostrarEnLista, false)\"\n class=\"checkbox-item mat-menu-item\">\n <mat-checkbox (click)=\"$event.stopPropagation()\" [(ngModel)]=\"column.visible\" [ngModelOptions]=\"{standalone: true}\" color=\"primary\">\n <span [innerHTML]=\"(column.labelLista ?? column.label).replace('<br>', ' ')\"></span>\n </mat-checkbox>\n </button>\n </ng-container>\n</mat-menu>\n\n\n\n\n\n\n<ng-template #botonesSuperiores let-btn=\"btn\" let-idx=\"idx\">\n <ng-container *ngTemplateOutlet=\"botonesContextual; context:{btn: btn, item: objSeleccionado, barraSuperior: true, idx: idx}\"></ng-container>\n</ng-template>\n\n<ng-template #botonesContextual let-btn=\"btn\" let-item=\"item\" let-barraSuperior=\"barraSuperior\" let-idx=\"idx\">\n\n <ng-container *ngIf=\"barraSuperior; else noBarraSuperior\">\n\n <!--\t\t<button mat-button style=\"min-width: unset; border: 1px !important;\" class=\"uppercase border border-gray rounded-none h-full px-1 disabled:opacity-50 disabled:text-secondary disabled:bg-transparent\">-->\n <!--\t\t\t<mat-icon *ngIf=\"btn.icono\" [svgIcon]=\"btn.icono\" size=\"15px\" class=\"icon-xs\"></mat-icon>-->\n <!--\t\t</button>-->\n <ng-container *ngIf=\"btn.subItems && btn.subItems.length > 0\">\n <button class=\"flex items-center justify-between uppercase text-2xs leading-none rounded-none px-2 py-1 bg-opacity-95 hover:bg-opacity-100 disabled:opacity-50 disabled:text-secondary disabled:!bg-gray-300 dark:disabled:!bg-gray-500 mat-elevation-z2\" type=\"button\"\n\n *ngIf=\"(!btn.esVisible || btn.esVisible(item, this)) && subItemsActivos(btn, item)\"\n [class]=\"(btn.class?btn.class:'')\"\n\n (click)=\"opcMenu(item, btn)\"\n [style.min-width]=\"((btn.soloIcono ?? tipoValorFuncion(soloIconos)) ? 'unset' : '')\"\n [matTooltip]=\"btn.tooltip || (btn.label ? btn.label : ( (derechosActuales && derechosActuales[btn.cDerechoCodigo ?? btn.tipo]) ? derechosActuales[btn.cDerechoCodigo ?? btn.tipo]['cDerechoNombre'] : capitalizarTexto(btn.tipo))) \"\n [matMenuTriggerFor]=\"menuOtrosBarra.menu\"\n\n [matBadge]=\"btn.badge\"\n matBadgeSize=\"small\"\n >\n <mat-icon class=\"icon-xs\" [class.mr-0.5]=\"!(btn.soloIcono ?? tipoValorFuncion(soloIconos))\" *ngIf=\"btn.icono\" [svgIcon]=\"btn.icono\" ></mat-icon>\n <span class=\"whitespace-nowrap\" *ngIf=\"!(btn.soloIcono ?? tipoValorFuncion(soloIconos))\">{{ btn.label ? btn.label : ( (derechosActuales && derechosActuales[btn.cDerechoCodigo ?? btn.tipo]) ? derechosActuales[btn.cDerechoCodigo ?? btn.tipo]['cDerechoNombre'] : capitalizarTexto(btn.tipo)) }}</span>\n <mat-icon class=\"icon-xs\" svgIcon=\"fa5sCaretDown\" ></mat-icon>\n </button>\n\n <jvs-tabla-mantenimiento-menu #menuOtrosBarra\n [objThis]=\"objThis\"\n [nombreColeccion]=\"nombreColeccion\"\n [item]=\"item\"\n [derechosActuales]=\"derechosActuales\"\n [subItems]=\"btn.subItems\"\n (opcionSelecionada)=\"opcMenu($event.item, $event.btn)\"\n [botonTemplate]=\"botonesContextual\"\n >\n </jvs-tabla-mantenimiento-menu>\n </ng-container>\n <ng-container *ngIf=\"!btn.subItems || btn.subItems.length == 0\">\n <button class=\"flex items-center justify-between uppercase text-2xs leading-none rounded-none px-2 py-1 bg-opacity-95 hover:bg-opacity-100 disabled:opacity-50 disabled:text-secondary disabled:!bg-gray-300 dark:disabled:!bg-gray-500 mat-elevation-z2\" type=\"button\"\n\n *ngIf=\"!btn.esVisible || btn.esVisible(item, this)\"\n [class]=\"(btn.class?btn.class:'text-secondary')\"\n [ngClass]=\"{'text-secondary italic': !ignorarDerechos && !btn.esIndependiente && (!btn.ignorarDerecho && (!derechosActuales || !derechosActuales[btn.cDerechoCodigo ?? btn.tipo])) && !(['nuevo', 'editar', 'eliminar'].includes(btn.tipo))}\"\n [disabled]=\"!btn.esIndependiente && botonDisabled(btn, item)\"\n (click)=\"opcMenu(item, btn)\"\n [style.min-width]=\"((btn.soloIcono ?? tipoValorFuncion(soloIconos)) ? 'unset' : '')\"\n [matTooltip]=\"btn.tooltip || (btn.label ? btn.label : ( (derechosActuales && derechosActuales[btn.cDerechoCodigo ?? btn.tipo]) ? derechosActuales[btn.cDerechoCodigo ?? btn.tipo]['cDerechoNombre'] : capitalizarTexto(btn.tipo))) \"\n\n [matBadge]=\"btn.badge\"\n matBadgeSize=\"small\"\n >\n <mat-icon class=\"icon-xs\" [class.mr-0.5]=\"!(btn.soloIcono ?? tipoValorFuncion(soloIconos))\" *ngIf=\"btn.icono\" [svgIcon]=\"btn.icono\"></mat-icon>\n <span class=\"whitespace-nowrap\" *ngIf=\"!(btn.soloIcono ?? tipoValorFuncion(soloIconos))\">{{ btn.label ? btn.label : ( (derechosActuales && derechosActuales[btn.cDerechoCodigo ?? btn.tipo]) ? derechosActuales[btn.cDerechoCodigo ?? btn.tipo]['cDerechoNombre'] : capitalizarTexto(btn.tipo)) }}</span>\n </button>\n\n </ng-container>\n\n </ng-container>\n <ng-template #noBarraSuperior>\n\n <ng-container *ngIf=\"btn.subItems && btn.subItems.length > 0\">\n <button class=\"flex items-center justify-between uppercase w-full rounded-none px-2 disabled:opacity-50 disabled:text-secondary disabled:bg-transparent\" mat-menu-item type=\"button\"\n *ngIf=\"!btn.noContextual && (!btn.esVisible || btn.esVisible(item, this))\"\n [class]=\"(btn.class?btn.class.replace('text-white', '').replace('bg', 'text'):'text-secondary')\"\n [ngClass]=\"{'text-secondary italic': !ignorarDerechos && !btn.esIndependiente && (!btn.ignorarDerecho && (!derechosActuales || !derechosActuales[btn.cDerechoCodigo ?? btn.tipo]))}\"\n [disabled]=\"!btn.esIndependiente && botonDisabled(btn, item)\"\n (click)=\"opcMenu(item, btn); $event.stopPropagation();\"\n [matMenuTriggerFor]=\"menuOtrosBarra.menu\"\n >\n <div class=\"flex w-full items-center justify-between uppercase text-2xs\"\n >\n <mat-icon *ngIf=\"btn.icono\" [svgIcon]=\"btn.icono\"\n class=\"flex-none icon-xs\"\n ></mat-icon>\n <span class=\"grow text-2xs\">{{ btn.label ? btn.label : ( (derechosActuales && derechosActuales[btn.cDerechoCodigo ?? btn.tipo]) ? derechosActuales[btn.cDerechoCodigo ?? btn.tipo]['cDerechoNombre'] : capitalizarTexto(btn.tipo)) }}</span>\n <mat-icon class=\"flex-none icon-xs\" svgIcon=\"fa5sCaretRight\"></mat-icon>\n </div>\n </button>\n\n <jvs-tabla-mantenimiento-menu #menuOtrosBarra\n [objThis]=\"objThis\"\n [nombreColeccion]=\"nombreColeccion\"\n [item]=\"item\"\n [derechosActuales]=\"derechosActuales\"\n [subItems]=\"btn.subItems\"\n (opcionSelecionada)=\"opcMenu($event.item, $event.btn)\"\n [botonTemplate]=\"botonesContextual\"\n >\n </jvs-tabla-mantenimiento-menu>\n </ng-container>\n <ng-container *ngIf=\"!btn.subItems || btn.subItems.length == 0\">\n <ng-container *ngIf=\"btn.tipo == '-#SEPARADOR#-'; else itemsNormales\">\n <mat-divider></mat-divider>\n </ng-container>\n <ng-template #itemsNormales>\n <button class=\"flex items-center justify-between uppercase w-full rounded-none px-2 disabled:opacity-50 disabled:text-secondary disabled:bg-transparent\" mat-menu-item type=\"button\"\n *ngIf=\"!btn.noContextual && (!btn.esVisible || btn.esVisible(item, this))\"\n [class]=\"(btn.class?btn.class.replace('text-white', '').replace('bg', 'text'):'text-secondary')\"\n [ngClass]=\"{'text-secondary italic': !ignorarDerechos && !btn.esIndependiente && (!btn.ignorarDerecho && (!derechosActuales || !derechosActuales[btn.cDerechoCodigo ?? btn.tipo]))}\"\n [disabled]=\"!btn.esIndependiente && botonDisabled(btn, item)\"\n (click)=\"opcMenu(item, btn)\"\n >\n <div class=\"flex w-full items-center justify-between uppercase text-2xs\">\n <mat-icon *ngIf=\"btn.icono\" [svgIcon]=\"btn.icono\" class=\"flex-none icon-xs\"\n ></mat-icon>\n <span class=\"grow text-2xs\">{{ btn.label ? btn.label : ( (derechosActuales && derechosActuales[btn.cDerechoCodigo ?? btn.tipo]) ? derechosActuales[btn.cDerechoCodigo ?? btn.tipo]['cDerechoNombre'] : capitalizarTexto(btn.tipo)) }}</span>\n </div>\n </button>\n </ng-template>\n\n </ng-container>\n\n </ng-template>\n\n</ng-template>\n\n<ng-template #userMenu let-item=\"item\">\n <div class=\"mat-menu bg-white rounded mat-elevation-z8 shadow botonesContextual\">\n <ng-container *ngFor=\"let btn of listaMenuCompleto\">\n <ng-container *ngTemplateOutlet=\"botonesContextual; context:{btn: btn, item: objSeleccionado, barraSuperior: false}\"></ng-container>\n </ng-container>\n </div>\n</ng-template>\n\n\n<mat-menu #menuOpciones=\"matMenu\" xPosition=\"before\" yPosition=\"below\">\n <ng-container *ngFor=\"let btn of listaMenuCompleto\">\n <ng-container\n *ngTemplateOutlet=\"botonesContextual; context:{btn: btn, item: objSeleccionado, barraSuperior: false}\"></ng-container>\n </ng-container>\n</mat-menu>\n\n", styles: ["@charset \"UTF-8\";:root{--tabla-mantenimiento-seleccion-fondo: rgb(179, 217, 252);--tabla-mantenimiento-seleccion-texto: rgb(1, 84, 164);--mat-paginator-container-size: 30px}:root .table-mantenimiento .elemento-seleccionado{background-color:var(--tabla-mantenimiento-seleccion-fondo)!important;color:var(--tabla-mantenimiento-seleccion-texto)!important;border-color:var(--tabla-mantenimiento-seleccion-texto)!important}.jvs-tabla-mantenimiento{width:inherit}.jvs-tabla-mantenimiento .contenedor-botones>*:first-child{@apply rounded-l;}.jvs-tabla-mantenimiento .contenedor-botones>*:last-child{@apply rounded-r;}.jvs-tabla-mantenimiento tr.regTooltip>td:first-child div:first-child:before,.jvs-tabla-mantenimiento tr.regTooltip>th:first-child div:first-child:before{content:\"\\26a0\\fe0f \";color:red;margin-right:4px;font-size:12px}.jvs-tabla-mantenimiento tr.regTooltip>td:first-child:not(:has(div)):before,.jvs-tabla-mantenimiento tr.regTooltip>th:first-child:not(:has(div)):before{content:\"\\26a0\\fe0f \";color:red;margin-right:4px;font-size:12px}.jvs-tabla-mantenimiento .mat-mdc-menu-content:not(:empty){@apply flex flex-col items-start;padding:0!important}.jvs-tabla-mantenimiento .mat-mdc-menu-item{line-height:24px!important;height:24px!important;min-height:24px!important}.jvs-tabla-mantenimiento .mat-mdc-menu-panel{min-height:auto!important}.jvs-tabla-mantenimiento .mat-mdc-table .mat-mdc-cell,.jvs-tabla-mantenimiento .mat-mdc-table .mat-mdc-header-cell .mat-mdc-footer-cell{white-space:unset}.jvs-tabla-mantenimiento .table-container{max-height:600px!important}.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-table-sticky-border-elem-right{border-left:1px solid #e0e0e0}.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-table-sticky-border-elem-left{border-right:1px solid #e0e0e0}.jvs-tabla-mantenimiento .table-mantenimiento tr.regAnulado .mat-mdc-cell{color:unset!important}.jvs-tabla-mantenimiento .table-mantenimiento .bg-primary-activo .numeracionFila{@apply rounded-full bg-primary-contrast text-primary mx-1 p-1 w-6 h-6;}.jvs-tabla-mantenimiento .table-mantenimiento th .form-input{@apply w-auto;}.jvs-tabla-mantenimiento .table-mantenimiento th.mat-mdc-header-cell:not(.celda-numeracion-fila),.jvs-tabla-mantenimiento .table-mantenimiento td.mat-mdc-cell:not(.celda-numeracion-fila),.jvs-tabla-mantenimiento .table-mantenimiento td.mat-mdc-footer-cell:not(.celda-numeracion-fila){padding:.05rem .25rem}.jvs-tabla-mantenimiento .table-mantenimiento th.mat-mdc-header-cell,.jvs-tabla-mantenimiento .table-mantenimiento td.mat-mdc-cell,.jvs-tabla-mantenimiento .table-mantenimiento td.mat-mdc-footer-cell{border-width:1px;border-style:solid}.jvs-tabla-mantenimiento .table-mantenimiento th.mat-mdc-header-cell:first-of-type:not(.celda-numeracion-fila),.jvs-tabla-mantenimiento .table-mantenimiento th.mat-mdc-header-cell:last-of-type:not(.celda-numeracion-fila),.jvs-tabla-mantenimiento .table-mantenimiento td.mat-mdc-cell:first-of-type:not(.celda-numeracion-fila),.jvs-tabla-mantenimiento .table-mantenimiento td.mat-mdc-cell:last-of-type:not(.celda-numeracion-fila),.jvs-tabla-mantenimiento .table-mantenimiento td.mat-mdc-footer-cell:first-of-type:not(.celda-numeracion-fila),.jvs-tabla-mantenimiento .table-mantenimiento td.mat-mdc-footer-cell:last-of-type:not(.celda-numeracion-fila){padding:0 .25rem}.jvs-tabla-mantenimiento .table-mantenimiento .student-element-detail{overflow:hidden;display:flex;align-items:center;justify-content:center}.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-header-row{height:25px!important;color:rgb(var(--color-primary))!important;background-color:rgb(var(--color-primary-contrast))!important}.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-header-cell{padding:5px;font-size:10px;line-height:10px;font-weight:700!important;color:inherit}.jvs-tabla-mantenimiento .table-mantenimiento .mdc-data-table__row:not(.mdc-data-table__row--selected):not(.elemento-seleccionado):hover,.jvs-tabla-mantenimiento .table-mantenimiento .mdc-data-table__row:not(.mdc-data-table__row--selected):not(.elemento-seleccionado):focus{background-color:rgba(var(--color-primary-contrast),.04)}.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-row .mat-mdc-cell,.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-footer-row .mat-mdc-cell{font-size:10px}.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-row .mat-mdc-footer-cell:empty,.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-footer-row .mat-mdc-footer-cell:empty{border-width:0!important}.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-cell{@apply leading-tight;}.jvs-tabla-mantenimiento .table-mantenimiento th.mat-mdc-header-cell{border-color:#d4d0d0;@apply text-center uppercase;}.jvs-tabla-mantenimiento .table-mantenimiento th.mat-mdc-header-cell .mat-sort-header-container{@apply flex items-center justify-between w-full;}.jvs-tabla-mantenimiento .table-mantenimiento th.mat-mdc-header-cell .mat-sort-header-container .mat-sort-header-content{@apply inline w-full text-center;}.jvs-tabla-mantenimiento .table-mantenimiento th.mat-mdc-header-cell .mat-sort-header-container .mat-sort-header-arrow{@apply flex-none;}.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-sort-header-content{width:100%;text-align:center;display:unset;align-items:center}\n"] }]
|
|
1787
|
+
], template: "<div class=\"flex flex-col h-fit\">\n <div class=\"grow flex items-center justify-between bg-white\">\n <ng-content select=\"[filtro]\"></ng-content>\n </div>\n\n <div class=\"flex flex-col border-t\">\n <div class=\"flex-1 bg-app-bar flex items-center justify-between p-1\">\n <!-- <div class=\"hidden flex-1 sm:flex items-center flex-wrap gap-1\">-->\n <!-- </div>-->\n <div class=\"flex items-center flex-wrap mr-1 h-full\" *ngIf=\"leyenda\">\n <span class=\"font-bold\" [class]=\"leyenda.class\">{{ leyenda.text }}</span>\n </div>\n <div class=\"hidden flex-1 sm:flex items-center flex-wrap gap-1\">\n <div *ngIf=\"(botonesMenuFinal.izquierda ?? []).length > 0 \" class=\" flex items-center flex-wrap contenedor-botones\">\n <ng-container *ngFor=\"let btn of botonesMenu.izquierda; let idx = index;\">\n <ng-container *ngTemplateOutlet=\"botonesSuperiores; context:{btn: btn, idx: {inicio: idx, fin: botonesMenu.izquierda?.length}}\"></ng-container>\n </ng-container>\n </div>\n\n <div *ngIf=\"(botonesMenuFinal.crud ?? []).length > 0\" class=\" flex items-center flex-wrap contenedor-botones\">\n <ng-container *ngFor=\"let btn of botonesMenu.crud; let idx = index;\">\n <ng-container *ngTemplateOutlet=\"botonesSuperiores; context:{btn: btn, idx: {inicio: idx, fin: botonesMenu.crud?.length}}\"></ng-container>\n </ng-container>\n </div>\n\n <div *ngIf=\"(botonesMenuFinal.principal ?? []).length > 0\" class=\" flex items-center flex-wrap contenedor-botones\">\n <ng-container *ngFor=\"let btn of botonesMenu.principal; let idx = index;\">\n <ng-container *ngTemplateOutlet=\"botonesSuperiores; context:{btn: btn, idx: {inicio: idx, fin: botonesMenu.principal?.length}}\"></ng-container>\n </ng-container>\n </div>\n\n <div *ngIf=\"(botonesMenuFinal.derecha ?? []).length > 0\" class=\"flex-auto flex items-center justify-end contenedor-botones\">\n <ng-container *ngFor=\"let btn of botonesMenu.derecha; let idx = index;\">\n <ng-container *ngTemplateOutlet=\"botonesSuperiores; context:{btn: btn, idx: {inicio: idx, fin: botonesMenu.derecha?.length}}\"></ng-container>\n </ng-container>\n </div>\n <ng-content select=\"[objetosMenuPegado]\"></ng-content>\n </div>\n <div class=\"flex flex-1 sm:hidden items-center flex-wrap gap-1\">\n <button class=\"flex items-center justify-center text-2xs leading-none rounded-full p-1\"\n matRipple\n matTooltip=\"Botones de Acci\u00F3n\"\n type=\"button\"\n [matMenuTriggerFor]=\"menuOpciones\"\n >\n <mat-icon class=\"icon-xs\" svgIcon=\"roundMenu\"></mat-icon>\n </button>\n </div>\n <div class=\"flex-none flex items-center justify-end border-l-2\">\n <div class=\"flex-1 sm:flex-none flex items-center justify-end\">\n <ng-content select=\"[objetosMenu]\"></ng-content>\n </div>\n </div>\n <div *ngIf=\"ctrlBusqueda\" class=\"hidden flex-initial sm:flex items-center form-input max-w-[150px] bg-card rounded-full border m-1 px-1 border-l-2\"\n >\n <mat-icon svgIcon=\"roundSearch\" class=\"icon-xs\"></mat-icon>\n <input [formControl]=\"cCampoBusqueda\"\n class=\"text-xs px-1 py-1 border-0 outline-none w-full bg-transparent max-w-sm\"\n [placeholder]=\"ctrlBusquedaPlaceholder\"\n (keyup.enter)=\"ctrlBusqueda == 'query' ? cargarData() : false;\"\n type=\"search\">\n </div>\n <div class=\"flex-none flex items-center justify-end border-l-2\">\n <ng-content select=\"[botonesFiltro]\"></ng-content>\n <button matRipple *ngIf=\"isRecargarUsed || ctrlBusqueda == 'query'\"\n class=\"flex items-center justify-center text-2xs leading-none rounded-full p-1 text-green-700\"\n matTooltip=\"Actualizar datos\"\n (click)=\"(ctrlBusqueda == 'query' ? cargarData() : emitirAccionRecargar())\"\n type=\"button\">\n <mat-icon svgIcon=\"roundRefresh\" class=\"icon-xs\"></mat-icon>\n\n </button>\n <button matRipple [matMenuTriggerFor]=\"columnFilterMenu\" *ngIf=\"filtroCampos\"\n class=\"flex items-center justify-center text-2xs leading-none rounded-full p-1\"\n matTooltip=\"Columnas Filtro\"\n type=\"button\">\n <mat-icon svgIcon=\"roundFilterList\" class=\"icon-xs\"></mat-icon>\n </button>\n </div>\n </div>\n\n <div *ngIf=\"(botonesMenuFinal.secundario ?? []).length > 0\" class=\"flex-1 bg-app-bar flex items-center justify-between p-1 border-t\">\n <div class=\"hidden flex-1 sm:flex items-center flex-wrap gap-1\">\n <div class=\" flex items-center flex-wrap contenedor-botones\">\n <ng-container *ngFor=\"let btn of botonesMenu.secundario; let idx = index;\">\n <ng-container *ngTemplateOutlet=\"botonesSuperiores; context:{btn: btn, idx: {inicio: idx, fin: botonesMenu.secundario?.length}}\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n <!--<div class=\"grow flex flex-col items-stretch contenedor-tabla\" [ngClass]=\"{'table-container overflow-auto': esTabla}\">\n <pre>{{ this.chkLista.modelosChk | json }}</pre>\n <pre>{{ this.chkLista.checkbox.cantidadActivos | json }}</pre>\n <pre>{{ this.chkLista.checkbox.algunosActivos | json }}</pre>\n </div>-->\n <div class=\"grow flex flex-col items-stretch contenedor-tabla\" [ngClass]=\"{'table-container overflow-auto': esTabla}\">\n <ng-content select=\"[cuerpo]\"></ng-content>\n\n <table [id]=\"'tabla_' + nombreColeccion\" [dataSource]=\"dataSource\" [multiTemplateDataRows]=\"true\"\n [hidden]=\"!esTabla\"\n class=\"flex-1 table-mantenimiento table-auto h-fit\" mat-table matSort\n [trackBy]=\"trackByFn\"\n #tablaMantenimiento\n >\n\n <!--<table [dataSource]=\"dataSource\" class=\"table-mantenimiento table-auto h-auto w-full justify-center\" mat-table matSort>-->\n\n\n <ng-content select=\"[tableDefinitions]\"></ng-content>\n <ng-container matColumnDef=\"numeracion_automatica\">\n <th mat-header-cell *matHeaderCellDef style=\"width: 16px !important\">N\u00BA</th>\n <td mat-cell *matCellDef=\"let element; let i = dataIndex\" class=\"p-0 celda-numeracion-fila\">\n <div class=\"flex items-center justify-center font-bold numeracionFila\">\n <ng-container *ngIf=\"esTabla && paginador\">\n {{ (this.paginator?.pageIndex == 0 ? i + 1 : 1 + i + (this.paginator?.pageIndex ?? 1) * (this.paginator?.pageSize ?? 1)) }}\n </ng-container>\n <ng-container *ngIf=\"!paginador\">\n {{ (i + 1) }}\n </ng-container>\n </div>\n </td>\n <td mat-footer-cell *matFooterCellDef class=\"uppercase\"></td>\n </ng-container>\n <jvs-tabla-mantenimiento-column-defs [objThis]=\"this\" [colDetalle]=\"columnasTabla\"\n [nombreColeccion]=\"nombreColeccion\" [(chkLista)]=\"chkLista\"></jvs-tabla-mantenimiento-column-defs>\n\n <tr *matHeaderRowDef=\"visibleColumns; sticky: true\" mat-header-row class=\"title\" matHeader\n ></tr>\n\n <ng-container *ngIf=\"!!filaExtraHeader\">\n <tr mat-row *matRowDef=\"let row; columns: ['filaExtraHeader']\" class=\"student-detail-row\"\n [style.height.px]=\"0\"\n ></tr>\n\n <ng-container matColumnDef=\"filaExtraHeader\">\n <td mat-cell *matCellDef=\"let row; let i = dataIndex\" [attr.colspan]=\"visibleColumns.length\">\n\n <div class=\"row m-0 student-element-detail\"\n [@detailExpand]=\"(i == 0 && filaExtraHeader.esVisible && filaExtraHeader.esVisible()) ? 'expanded' : 'collapsed'\"\n [style.padding-right.px]=\"row.isExpanded ? 5 : 0\"\n [style.padding-left.px]=\"row.isExpanded ? 5 : 0\"\n >\n <ng-container *ngIf=\"filaExtraHeader.template\"\n [ngTemplateOutlet]=\"filaExtraHeader.template\"\n [ngTemplateOutletContext]=\"{ row: row }\"></ng-container>\n </div>\n\n </td>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"filaFooter\">\n <tr *matFooterRowDef=\"visibleColumns\" mat-footer-row\n [style.height.px]=\"0\"\n [id]=\"nombreColeccion + '_filaFooter'\"\n ></tr>\n </ng-container>\n\n <!--\t<tr\n *matRowDef=\"let row; columns: visibleColumns;\"\n class=\"hover:bg-secondary trans-ease-out cursor-pointer\"\n mat-row></tr>-->\n <tr\n [matRowKeyboardSelection]=\"tablaMantenimiento\"\n [rowModel]=\"row\"\n (seleccionarSiguiente)=\"opcMenu($event, {seccion: nombreColeccion, tipo: 'ver'});\"\n\n *matRowDef=\"let row; let idxTabla = dataIndex; columns: visibleColumns;\"\n (click)=\"seleccionarItem(row); opcMenu(row, {seccion: nombreColeccion, tipo: 'ver', tableDataIndex: idxTabla });\"\n (dblclick)=\"opcMenu(row, {seccion: nombreColeccion, tipo: 'seleccionar'}); dblclickItem.emit(row)\"\n (contextmenu)=\"(abrirMenuContextual($event, row)); $event. preventDefault();\"\n [ngClass]=\"classFila(row)\"\n @fadeInUp\n class=\"trans-ease-out cursor-pointer h-auto\"\n [style.height.px]=\"0\"\n [id]=\"propiedadSeleccion(row)\"\n [matTooltip]=\"procesarRowTooltip(row)\"\n matTooltipPosition=\"below\"\n [matTooltipPositionAtOrigin]=\"true\"\n [matTooltipClass]=\"['bg-red-700', 'text-red-100', 'm-0']\"\n [matTooltipDisabled]=\"!procesarRowTooltip(row)\"\n [class.regAnulado]=\"row[campoAnulado] == 1\"\n [class.regTooltip]=\"!!procesarRowTooltip(row)\"\n (keyup.delete)=\"opcMenu(row, {seccion: nombreColeccion, tipo: 'eliminar'})\"\n mat-row></tr>\n <ng-container *ngIf=\"filaExtraTemplate\">\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"student-detail-row h-0\"></tr>\n\n <ng-container matColumnDef=\"expandedDetail\">\n <td mat-cell *matCellDef=\"let row\" [attr.colspan]=\"visibleColumns.length\">\n\n <div class=\"row m-0 student-element-detail\"\n [@detailExpand]=\"row.isExpanded ? 'expanded' : 'collapsed'\"\n [style.padding-right.px]=\"row.isExpanded ? 5 : 0\"\n [style.padding-left.px]=\"row.isExpanded ? 5 : 0\"\n >\n <ng-container [ngTemplateOutlet]=\"filaExtraTemplate\"\n [ngTemplateOutletContext]=\"{ row: row }\"></ng-container>\n </div>\n\n </td>\n </ng-container>\n </ng-container>\n </table>\n\n <ng-container *ngIf=\"componenteCargadoTotalmente\">\n <div *ngIf=\"(noData | async) && esTabla\" class=\"flex-1 text-center text-secondary font-medium\">\n No se encontraron datos\n </div>\n </ng-container>\n </div>\n <ng-content select=\"[appendTable]\"></ng-content>\n <div class=\"flex-1 bg-app-bar flex flex-col sm:flex-row items-start justify-between p-1\">\n <div class=\"flex-1 flex items-start flex-wrap gap-1\">\n <div *ngIf=\"(botonesMenuFinal.inferior ?? []).length > 0\" class=\" flex items-center flex-wrap\">\n <ng-container *ngFor=\"let btn of botonesMenu.inferior; let idx = index;\">\n <ng-container *ngTemplateOutlet=\"botonesSuperiores; context:{btn: btn, idx: {inicio: idx, fin: botonesMenu.inferior?.length}}\"></ng-container>\n </ng-container>\n </div>\n </div>\n\n <div *ngIf=\"esTabla && paginador\" class=\"flex-1 sm:flex-none flex items-center justify-end\">\n <mat-paginator class=\"tabla-mantenimiento-paginador\" [pageSizeOptions]=\"paginacion.pageSizeOptions\" [pageIndex]=\"paginacion.pageIndex - 1\" [length]=\"paginacion.pageLength\" [pageSize]=\"paginacion.pageSize\" (page)=\"paginacion.pageCurrent = $event; emitirResultados();\" ></mat-paginator>\n </div>\n </div>\n </div>\n\n</div>\n\n\n\n<!-- SECCION DE TEMPLATES O MENUS -->\n\n\n<mat-menu #columnFilterMenu=\"matMenu\" xPosition=\"before\" yPosition=\"below\">\n <ng-container *ngFor=\"let column of columnasTabla\">\n <button (click)=\"toggleColumnVisibility(column, $event)\" *ngIf=\"!tipoValorFuncion(column.noMostrarEnLista, false)\"\n class=\"checkbox-item mat-menu-item\">\n <mat-checkbox (click)=\"$event.stopPropagation()\" [(ngModel)]=\"column.visible\" [ngModelOptions]=\"{standalone: true}\" color=\"primary\">\n <span [innerHTML]=\"(column.labelLista ?? column.label).replace('<br>', ' ')\"></span>\n </mat-checkbox>\n </button>\n </ng-container>\n</mat-menu>\n\n\n\n\n\n\n<ng-template #botonesSuperiores let-btn=\"btn\" let-idx=\"idx\">\n <ng-container *ngTemplateOutlet=\"botonesContextual; context:{btn: btn, item: objSeleccionado, barraSuperior: true, idx: idx}\"></ng-container>\n</ng-template>\n\n<ng-template #botonesContextual let-btn=\"btn\" let-item=\"item\" let-barraSuperior=\"barraSuperior\" let-idx=\"idx\">\n\n <ng-container *ngIf=\"barraSuperior; else noBarraSuperior\">\n\n <!--\t\t<button mat-button style=\"min-width: unset; border: 1px !important;\" class=\"uppercase border border-gray rounded-none h-full px-1 disabled:opacity-50 disabled:text-secondary disabled:bg-transparent\">-->\n <!--\t\t\t<mat-icon *ngIf=\"btn.icono\" [svgIcon]=\"btn.icono\" size=\"15px\" class=\"icon-xs\"></mat-icon>-->\n <!--\t\t</button>-->\n <ng-container *ngIf=\"btn.subItems && btn.subItems.length > 0\">\n <button class=\"flex items-center justify-between uppercase text-2xs leading-none rounded-none px-2 py-1 bg-opacity-95 hover:bg-opacity-100 disabled:opacity-50 disabled:text-secondary disabled:!bg-gray-300 dark:disabled:!bg-gray-500 mat-elevation-z2\" type=\"button\"\n\n *ngIf=\"(!btn.esVisible || btn.esVisible(item, this)) && subItemsActivos(btn, item)\"\n [class]=\"(btn.class?btn.class:'')\"\n\n (click)=\"opcMenu(item, btn)\"\n [style.min-width]=\"((btn.soloIcono ?? tipoValorFuncion(soloIconos)) ? 'unset' : '')\"\n [matTooltip]=\"btn.tooltip || (btn.label ? btn.label : ( (derechosActuales && derechosActuales[btn.cDerechoCodigo ?? btn.tipo]) ? derechosActuales[btn.cDerechoCodigo ?? btn.tipo]['cDerechoNombre'] : capitalizarTexto(btn.tipo))) \"\n [matMenuTriggerFor]=\"menuOtrosBarra.menu\"\n\n [matBadge]=\"btn.badge\"\n matBadgeSize=\"small\"\n >\n <mat-icon class=\"icon-xs\" [class.mr-0.5]=\"!(btn.soloIcono ?? tipoValorFuncion(soloIconos))\" *ngIf=\"btn.icono\" [svgIcon]=\"btn.icono\" ></mat-icon>\n <span class=\"whitespace-nowrap\" *ngIf=\"!(btn.soloIcono ?? tipoValorFuncion(soloIconos))\">{{ btn.label ? btn.label : ( (derechosActuales && derechosActuales[btn.cDerechoCodigo ?? btn.tipo]) ? derechosActuales[btn.cDerechoCodigo ?? btn.tipo]['cDerechoNombre'] : capitalizarTexto(btn.tipo)) }}</span>\n <mat-icon class=\"icon-xs\" svgIcon=\"fa5sCaretDown\" ></mat-icon>\n </button>\n\n <jvs-tabla-mantenimiento-menu #menuOtrosBarra\n [objThis]=\"objThis\"\n [nombreColeccion]=\"nombreColeccion\"\n [item]=\"item\"\n [derechosActuales]=\"derechosActuales\"\n [subItems]=\"btn.subItems\"\n (opcionSelecionada)=\"opcMenu($event.item, $event.btn)\"\n [botonTemplate]=\"botonesContextual\"\n >\n </jvs-tabla-mantenimiento-menu>\n </ng-container>\n <ng-container *ngIf=\"!btn.subItems || btn.subItems.length == 0\">\n <button class=\"flex items-center justify-between uppercase text-2xs leading-none rounded-none px-2 py-1 bg-opacity-95 hover:bg-opacity-100 disabled:opacity-50 disabled:text-secondary disabled:!bg-gray-300 dark:disabled:!bg-gray-500 mat-elevation-z2\" type=\"button\"\n\n *ngIf=\"!btn.esVisible || btn.esVisible(item, this)\"\n [class]=\"(btn.class?btn.class:'text-secondary')\"\n [ngClass]=\"{'text-secondary italic': !ignorarDerechos && !btn.esIndependiente && (!btn.ignorarDerecho && (!derechosActuales || !derechosActuales[btn.cDerechoCodigo ?? btn.tipo])) && !(['nuevo', 'editar', 'eliminar'].includes(btn.tipo))}\"\n [disabled]=\"!btn.esIndependiente && botonDisabled(btn, item)\"\n (click)=\"opcMenu(item, btn)\"\n [style.min-width]=\"((btn.soloIcono ?? tipoValorFuncion(soloIconos)) ? 'unset' : '')\"\n [matTooltip]=\"btn.tooltip || (btn.label ? btn.label : ( (derechosActuales && derechosActuales[btn.cDerechoCodigo ?? btn.tipo]) ? derechosActuales[btn.cDerechoCodigo ?? btn.tipo]['cDerechoNombre'] : capitalizarTexto(btn.tipo))) \"\n\n [matBadge]=\"btn.badge\"\n matBadgeSize=\"small\"\n >\n <mat-icon class=\"icon-xs\" [class.mr-0.5]=\"!(btn.soloIcono ?? tipoValorFuncion(soloIconos))\" *ngIf=\"btn.icono\" [svgIcon]=\"btn.icono\"></mat-icon>\n <span class=\"whitespace-nowrap\" *ngIf=\"!(btn.soloIcono ?? tipoValorFuncion(soloIconos))\">{{ btn.label ? btn.label : ( (derechosActuales && derechosActuales[btn.cDerechoCodigo ?? btn.tipo]) ? derechosActuales[btn.cDerechoCodigo ?? btn.tipo]['cDerechoNombre'] : capitalizarTexto(btn.tipo)) }}</span>\n </button>\n\n </ng-container>\n\n </ng-container>\n <ng-template #noBarraSuperior>\n\n <ng-container *ngIf=\"btn.subItems && btn.subItems.length > 0\">\n <button class=\"flex items-center justify-between uppercase w-full rounded-none px-2 disabled:opacity-50 disabled:text-secondary disabled:bg-transparent\" mat-menu-item type=\"button\"\n *ngIf=\"!btn.noContextual && (!btn.esVisible || btn.esVisible(item, this))\"\n [class]=\"(btn.class?btn.class.replace('text-white', '').replace('bg', 'text'):'text-secondary')\"\n [ngClass]=\"{'text-secondary italic': !ignorarDerechos && !btn.esIndependiente && (!btn.ignorarDerecho && (!derechosActuales || !derechosActuales[btn.cDerechoCodigo ?? btn.tipo]))}\"\n [disabled]=\"!btn.esIndependiente && botonDisabled(btn, item)\"\n (click)=\"opcMenu(item, btn); $event.stopPropagation();\"\n [matMenuTriggerFor]=\"menuOtrosBarra.menu\"\n >\n <div class=\"flex w-full items-center justify-between uppercase text-2xs\"\n >\n <mat-icon *ngIf=\"btn.icono\" [svgIcon]=\"btn.icono\"\n class=\"flex-none icon-xs\"\n ></mat-icon>\n <span class=\"grow text-2xs\">{{ btn.label ? btn.label : ( (derechosActuales && derechosActuales[btn.cDerechoCodigo ?? btn.tipo]) ? derechosActuales[btn.cDerechoCodigo ?? btn.tipo]['cDerechoNombre'] : capitalizarTexto(btn.tipo)) }}</span>\n <mat-icon class=\"flex-none icon-xs\" svgIcon=\"fa5sCaretRight\"></mat-icon>\n </div>\n </button>\n\n <jvs-tabla-mantenimiento-menu #menuOtrosBarra\n [objThis]=\"objThis\"\n [nombreColeccion]=\"nombreColeccion\"\n [item]=\"item\"\n [derechosActuales]=\"derechosActuales\"\n [subItems]=\"btn.subItems\"\n (opcionSelecionada)=\"opcMenu($event.item, $event.btn)\"\n [botonTemplate]=\"botonesContextual\"\n >\n </jvs-tabla-mantenimiento-menu>\n </ng-container>\n <ng-container *ngIf=\"!btn.subItems || btn.subItems.length == 0\">\n <ng-container *ngIf=\"btn.tipo == '-#SEPARADOR#-'; else itemsNormales\">\n <mat-divider></mat-divider>\n </ng-container>\n <ng-template #itemsNormales>\n <button class=\"flex items-center justify-between uppercase w-full rounded-none px-2 disabled:opacity-50 disabled:text-secondary disabled:bg-transparent\" mat-menu-item type=\"button\"\n *ngIf=\"!btn.noContextual && (!btn.esVisible || btn.esVisible(item, this))\"\n [class]=\"(btn.class?btn.class.replace('text-white', '').replace('bg', 'text'):'text-secondary')\"\n [ngClass]=\"{'text-secondary italic': !ignorarDerechos && !btn.esIndependiente && (!btn.ignorarDerecho && (!derechosActuales || !derechosActuales[btn.cDerechoCodigo ?? btn.tipo]))}\"\n [disabled]=\"!btn.esIndependiente && botonDisabled(btn, item)\"\n (click)=\"opcMenu(item, btn)\"\n >\n <div class=\"flex w-full items-center justify-between uppercase text-2xs\">\n <mat-icon *ngIf=\"btn.icono\" [svgIcon]=\"btn.icono\" class=\"flex-none icon-xs\"\n ></mat-icon>\n <span class=\"grow text-2xs\">{{ btn.label ? btn.label : ( (derechosActuales && derechosActuales[btn.cDerechoCodigo ?? btn.tipo]) ? derechosActuales[btn.cDerechoCodigo ?? btn.tipo]['cDerechoNombre'] : capitalizarTexto(btn.tipo)) }}</span>\n </div>\n </button>\n </ng-template>\n\n </ng-container>\n\n </ng-template>\n\n</ng-template>\n\n<ng-template #userMenu let-item=\"item\">\n <div class=\"mat-menu bg-white rounded mat-elevation-z8 shadow botonesContextual\">\n <ng-container *ngFor=\"let btn of listaMenuCompleto\">\n <ng-container *ngTemplateOutlet=\"botonesContextual; context:{btn: btn, item: objSeleccionado, barraSuperior: false}\"></ng-container>\n </ng-container>\n </div>\n</ng-template>\n\n\n<mat-menu #menuOpciones=\"matMenu\" xPosition=\"before\" yPosition=\"below\">\n <ng-container *ngFor=\"let btn of listaMenuCompleto\">\n <ng-container\n *ngTemplateOutlet=\"botonesContextual; context:{btn: btn, item: objSeleccionado, barraSuperior: false}\"></ng-container>\n </ng-container>\n</mat-menu>\n\n", styles: ["@charset \"UTF-8\";:root{--tabla-mantenimiento-seleccion-fondo: rgb(179, 217, 252);--tabla-mantenimiento-seleccion-texto: rgb(1, 84, 164);--mat-paginator-container-size: 30px}:root .table-mantenimiento .elemento-seleccionado{background-color:var(--tabla-mantenimiento-seleccion-fondo)!important;color:var(--tabla-mantenimiento-seleccion-texto)!important;border-color:var(--tabla-mantenimiento-seleccion-texto)!important}.jvs-tabla-mantenimiento{width:inherit}.jvs-tabla-mantenimiento .contenedor-botones>*:first-child{@apply rounded-l;}.jvs-tabla-mantenimiento .contenedor-botones>*:last-child{@apply rounded-r;}.jvs-tabla-mantenimiento tr.regTooltip>td:first-child div:first-child:before,.jvs-tabla-mantenimiento tr.regTooltip>th:first-child div:first-child:before{content:\"\\26a0\\fe0f \";color:red;margin-right:4px;font-size:12px}.jvs-tabla-mantenimiento tr.regTooltip>td:first-child:not(:has(div)):before,.jvs-tabla-mantenimiento tr.regTooltip>th:first-child:not(:has(div)):before{content:\"\\26a0\\fe0f \";color:red;margin-right:4px;font-size:12px}.jvs-tabla-mantenimiento .mat-mdc-menu-content:not(:empty){@apply flex flex-col items-start;padding:0!important}.jvs-tabla-mantenimiento .mat-mdc-menu-item{line-height:24px!important;height:24px!important;min-height:24px!important}.jvs-tabla-mantenimiento .mat-mdc-menu-panel{min-height:auto!important}.jvs-tabla-mantenimiento .mat-mdc-table .mat-mdc-cell,.jvs-tabla-mantenimiento .mat-mdc-table .mat-mdc-header-cell .mat-mdc-footer-cell{white-space:unset}.jvs-tabla-mantenimiento .table-container{max-height:600px!important}.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-table-sticky-border-elem-right{border-left:1px solid #e0e0e0}.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-table-sticky-border-elem-left{border-right:1px solid #e0e0e0}.jvs-tabla-mantenimiento .table-mantenimiento tr.regAnulado .mat-mdc-cell{color:unset!important}.jvs-tabla-mantenimiento .table-mantenimiento .bg-primary-activo .numeracionFila{@apply rounded-full bg-primary-contrast text-primary mx-1 p-1 w-6 h-6;}.jvs-tabla-mantenimiento .table-mantenimiento th .form-input{@apply w-auto;}.jvs-tabla-mantenimiento .table-mantenimiento th.mat-mdc-header-cell,.jvs-tabla-mantenimiento .table-mantenimiento td.mat-mdc-cell,.jvs-tabla-mantenimiento .table-mantenimiento td.mat-mdc-footer-cell{border-width:1px;border-style:solid}.jvs-tabla-mantenimiento .table-mantenimiento th.mat-mdc-header-cell:not(.celda-numeracion-fila),.jvs-tabla-mantenimiento .table-mantenimiento td.mat-mdc-cell:not(.celda-numeracion-fila),.jvs-tabla-mantenimiento .table-mantenimiento td.mat-mdc-footer-cell:not(.celda-numeracion-fila){padding:.05rem .25rem}.jvs-tabla-mantenimiento .table-mantenimiento th.mat-mdc-header-cell:first-of-type:not(.celda-numeracion-fila),.jvs-tabla-mantenimiento .table-mantenimiento th.mat-mdc-header-cell:last-of-type:not(.celda-numeracion-fila),.jvs-tabla-mantenimiento .table-mantenimiento td.mat-mdc-cell:first-of-type:not(.celda-numeracion-fila),.jvs-tabla-mantenimiento .table-mantenimiento td.mat-mdc-cell:last-of-type:not(.celda-numeracion-fila),.jvs-tabla-mantenimiento .table-mantenimiento td.mat-mdc-footer-cell:first-of-type:not(.celda-numeracion-fila),.jvs-tabla-mantenimiento .table-mantenimiento td.mat-mdc-footer-cell:last-of-type:not(.celda-numeracion-fila){padding:0 .25rem}.jvs-tabla-mantenimiento .table-mantenimiento .student-element-detail{overflow:hidden;display:flex;align-items:center;justify-content:center}.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-header-row{height:25px!important;color:rgb(var(--color-primary))!important;background-color:rgb(var(--color-primary-contrast))!important}.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-header-cell{padding:5px;font-size:10px;line-height:10px;font-weight:700!important;color:inherit}.jvs-tabla-mantenimiento .table-mantenimiento .mdc-data-table__row:not(.mdc-data-table__row--selected):not(.elemento-seleccionado):hover,.jvs-tabla-mantenimiento .table-mantenimiento .mdc-data-table__row:not(.mdc-data-table__row--selected):not(.elemento-seleccionado):focus{background-color:rgba(var(--color-primary-contrast),.04)}.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-row .mat-mdc-cell,.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-footer-row .mat-mdc-cell{font-size:10px}.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-row .mat-mdc-footer-cell:empty,.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-footer-row .mat-mdc-footer-cell:empty{border-width:0!important}.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-cell{@apply leading-tight;}.jvs-tabla-mantenimiento .table-mantenimiento th.mat-mdc-header-cell{border-color:#d4d0d0;@apply text-center uppercase;}.jvs-tabla-mantenimiento .table-mantenimiento th.mat-mdc-header-cell .mat-sort-header-container{@apply flex items-center justify-between w-full;}.jvs-tabla-mantenimiento .table-mantenimiento th.mat-mdc-header-cell .mat-sort-header-container .mat-sort-header-content{@apply inline w-full text-center;}.jvs-tabla-mantenimiento .table-mantenimiento th.mat-mdc-header-cell .mat-sort-header-container .mat-sort-header-arrow{@apply flex-none;}.jvs-tabla-mantenimiento .table-mantenimiento .mat-mdc-sort-header-content{width:100%;text-align:center;display:unset;align-items:center}\n"] }]
|
|
1821
1788
|
}], ctorParameters: () => [{ type: i1$2.FormBuilder }, { type: i2$2.Overlay }, { type: i0.ViewContainerRef }, { type: TablaMantenimientoService }, { type: i0.ChangeDetectorRef }], propDecorators: { id: [{
|
|
1822
1789
|
type: HostBinding
|
|
1823
1790
|
}], dataSuscription: [{
|
|
@@ -1930,10 +1897,10 @@ class LucesNavidadComponent {
|
|
|
1930
1897
|
}
|
|
1931
1898
|
ngOnInit() {
|
|
1932
1899
|
}
|
|
1933
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
1934
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.16", type: LucesNavidadComponent, isStandalone: true, selector: "jvs-luces-navidad, [jvsLucesNavidad]", inputs: { enProduccion: "enProduccion", forzarMuestra: "forzarMuestra" }, ngImport: i0, template: "<ng-container *ngIf=\"forzarMuestra || (mesActual == 12 && enProduccion)\">\n <ul class=\"lightrope\">\n <li *ngFor=\"let e of [].constructor(100); let i = index\"></li>\n </ul>\n <div class=\"christmas-tree\"></div>\n</ng-container>\n", styles: [".lightrope{left:0;text-align:center;white-space:nowrap;overflow:hidden;position:absolute;z-index:1000;margin:-8px 0 0;padding:0;pointer-events:none;width:100%}.lightrope li{position:relative;animation-fill-mode:both;animation-iteration-count:infinite;list-style:none;padding:0;width:6px;height:14px;border-radius:50%;margin:10px;display:inline-block;background:#00f7a5;box-shadow:0 2.3333333333px 12px 1px #00f7a5;animation-name:flash-1;animation-duration:2s}.lightrope li:nth-child(odd){background:#0ff;box-shadow:0 2.3333333333px 12px 1px #00ffff80;animation-name:flash-2;animation-duration:.4s}.lightrope li:nth-child(4n+2){background:#f70094;box-shadow:0 2.3333333333px 12px 1px #f70094;animation-name:flash-3;animation-duration:1.1s}.lightrope li:nth-child(odd){animation-duration:1.8s}.lightrope li:nth-child(3n+1){animation-duration:1.4s}.lightrope li:before{content:\"\";position:absolute;background:#222;width:4px;height:4.6666666667px;border-radius:3px;top:-2.3333333333px;left:1px}.lightrope li:after{content:\"\";top:-7px;left:3px;position:absolute;width:32px;height:9.3333333333px;border-bottom:solid #222 2px;border-radius:50%}.lightrope li:last-child:after{content:none}.lightrope li:first-child{margin-left:-20px}@keyframes flash-1{0%,to{background:#00f7a5;box-shadow:0 2.3333333333px 12px 1px #00f7a5}50%{background:#00f7a566;box-shadow:0 2.3333333333px 12px 1px #00f7a533}}@keyframes flash-2{0%,to{background:#0ff;box-shadow:0 2.3333333333px 12px 1px #0ff}50%{background:#0ff6;box-shadow:0 2.3333333333px 12px 1px #0ff3}}@keyframes flash-3{0%,to{background:#f70094;box-shadow:0 2.3333333333px 12px 1px #f70094}50%{background:#f7009466;box-shadow:0 2.3333333333px 12px 1px #f7009433}}.christmas-tree{position:fixed;bottom:20px;left:20px;width:80px;height:120px;background:url(data:image/png;base64,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) no-repeat center center;background-size:contain;opacity:.8;z-index:1000;animation:glow 3s infinite ease-in-out}@keyframes glow{0%,to{opacity:.8}50%{opacity:1}}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
1900
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: LucesNavidadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1901
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: LucesNavidadComponent, isStandalone: true, selector: "jvs-luces-navidad, [jvsLucesNavidad]", inputs: { enProduccion: "enProduccion", forzarMuestra: "forzarMuestra" }, ngImport: i0, template: "<ng-container *ngIf=\"forzarMuestra || (mesActual == 12 && enProduccion)\">\n <ul class=\"lightrope\">\n <li *ngFor=\"let e of [].constructor(100); let i = index\"></li>\n </ul>\n <div class=\"christmas-tree\"></div>\n</ng-container>\n", styles: [".lightrope{left:0;text-align:center;white-space:nowrap;overflow:hidden;position:absolute;z-index:1000;margin:-8px 0 0;padding:0;pointer-events:none;width:100%}.lightrope li{position:relative;animation-fill-mode:both;animation-iteration-count:infinite;list-style:none;padding:0;width:6px;height:14px;border-radius:50%;margin:10px;display:inline-block;background:#00f7a5;box-shadow:0 2.3333333333px 12px 1px #00f7a5;animation-name:flash-1;animation-duration:2s}.lightrope li:nth-child(odd){background:#0ff;box-shadow:0 2.3333333333px 12px 1px #00ffff80;animation-name:flash-2;animation-duration:.4s}.lightrope li:nth-child(4n+2){background:#f70094;box-shadow:0 2.3333333333px 12px 1px #f70094;animation-name:flash-3;animation-duration:1.1s}.lightrope li:nth-child(odd){animation-duration:1.8s}.lightrope li:nth-child(3n+1){animation-duration:1.4s}.lightrope li:before{content:\"\";position:absolute;background:#222;width:4px;height:4.6666666667px;border-radius:3px;top:-2.3333333333px;left:1px}.lightrope li:after{content:\"\";top:-7px;left:3px;position:absolute;width:32px;height:9.3333333333px;border-bottom:solid #222 2px;border-radius:50%}.lightrope li:last-child:after{content:none}.lightrope li:first-child{margin-left:-20px}@keyframes flash-1{0%,to{background:#00f7a5;box-shadow:0 2.3333333333px 12px 1px #00f7a5}50%{background:#00f7a566;box-shadow:0 2.3333333333px 12px 1px #00f7a533}}@keyframes flash-2{0%,to{background:#0ff;box-shadow:0 2.3333333333px 12px 1px #0ff}50%{background:#0ff6;box-shadow:0 2.3333333333px 12px 1px #0ff3}}@keyframes flash-3{0%,to{background:#f70094;box-shadow:0 2.3333333333px 12px 1px #f70094}50%{background:#f7009466;box-shadow:0 2.3333333333px 12px 1px #f7009433}}.christmas-tree{position:fixed;bottom:20px;left:20px;width:80px;height:120px;background:url(data:image/png;base64,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) no-repeat center center;background-size:contain;opacity:.8;z-index:1000;animation:glow 3s infinite ease-in-out}@keyframes glow{0%,to{opacity:.8}50%{opacity:1}}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
1935
1902
|
}
|
|
1936
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1903
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: LucesNavidadComponent, decorators: [{
|
|
1937
1904
|
type: Component,
|
|
1938
1905
|
args: [{ selector: 'jvs-luces-navidad, [jvsLucesNavidad]', imports: [
|
|
1939
1906
|
NgIf,
|
|
@@ -1961,10 +1928,10 @@ class MatSuffixSearchButtonComponent {
|
|
|
1961
1928
|
this.eventBuscar.emit(true);
|
|
1962
1929
|
}
|
|
1963
1930
|
}
|
|
1964
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
1965
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
1931
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: MatSuffixSearchButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1932
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: MatSuffixSearchButtonComponent, isStandalone: true, selector: "div[matSuffix][matSuffixSearchButton]", inputs: { fControl: "fControl" }, outputs: { eventLimpiar: "eventLimpiar", eventBuscar: "eventBuscar" }, host: { classAttribute: "flex items-center justify-start" }, ngImport: i0, template: "<button matRipple type=\"button\" class=\"boton-circular-gris\"\n (click)=\"emitirClick(); $event.preventDefault();\"\n>\n <mat-icon [svgIcon]=\"(control.value ? 'roundCancel' : 'roundSearch')\" class=\"icon-xs\"></mat-icon>\n</button>\n", dependencies: [{ kind: "directive", type: MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
|
1966
1933
|
}
|
|
1967
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
1934
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: MatSuffixSearchButtonComponent, decorators: [{
|
|
1968
1935
|
type: Component,
|
|
1969
1936
|
args: [{ selector: 'div[matSuffix][matSuffixSearchButton]', imports: [
|
|
1970
1937
|
MatRipple,
|
|
@@ -2035,10 +2002,10 @@ class MenuComponent {
|
|
|
2035
2002
|
}
|
|
2036
2003
|
});
|
|
2037
2004
|
}
|
|
2038
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2039
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
2005
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: MenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2006
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: MenuComponent, isStandalone: true, selector: "jvs-menu", inputs: { cssBoton: "cssBoton", title: "title", disabled: "disabled", itemSeleccion: "itemSeleccion", menu: "menu" }, outputs: { action: "action" }, viewQueries: [{ propertyName: "matmenus", predicate: MatMenu, descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"yet\">\n <button matRipple [matMenuTriggerFor]=\"matmenus.first\"\n [disabled]=\"disabled\"\n type=\"button\" [class]=\"cssBoton ?? 'boton-circular boton-circular-red border-0'\"\n (click)=\"$event.preventDefault(); $event.stopImmediatePropagation()\"\n [matTooltip]=\"title\"\n >\n <ng-content></ng-content>\n </button>\n</ng-container>\n\n<!--<pre class=\"text-indigo-900\">{{_submenus | json}}</pre>-->\n<ng-container *ngFor=\"let menu of _submenus\">\n <!--<pre class=\"text-red-700\">{{menu | json}}</pre>-->\n <mat-menu xPosition=\"before\" yPosition=\"below\" class=\"max-w-none\">\n <ng-container *ngFor=\"let item of menu\">\n <!--<pre *ngIf=\"menu$\" class=\"text-orange-700\">{{item | json}}</pre>-->\n <!--<span>{{ [item.label, item.idxOpcionCalc!=-1 , yet , (!item.esVisible || item.esVisible({itemMenu: item, archivo: itemSeleccion})), [!item.esVisible , (item.esVisible ? item.esVisible({itemMenu: item, archivo: itemSeleccion}) : 'NO HAY')]] | json }}</span>-->\n <button mat-menu-item *ngIf=\"item.idxOpcionCalc!=-1 && yet && (!item.esVisible || item.esVisible({itemMenu: item, archivo: itemSeleccion}))\"\n class=\"flex items-center justify-items-center uppercase w-full rounded-none px-2 \"\n [matMenuTriggerFor]=\"getMenu(item.idxOpcionCalc)\">\n <mat-icon *ngIf=\"item.icono\"\n class=\"flex-none flex items-center justify-center !text-red-700 !mr-1 icon-2xs\"\n [svgIcon]=\"item.icono ?? 'fa5sFileSignature'\"\n ></mat-icon>\n <span class=\"grow text-2xs\" [innerHTML]=\"item.label\">{{item.label}}</span>\n </button>\n <button mat-menu-item *ngIf=\"item.idxOpcionCalc==-1 && (!item.esVisible || item.esVisible(item))\" (click)=\"onClick(item.valorSeleccion)\"\n class=\"flex items-center justify-items-center uppercase w-full rounded-none px-2 \"\n >\n <mat-icon *ngIf=\"item.icono\"\n class=\"flex-none flex items-center justify-center !text-red-700 !mr-1 icon-2xs\"\n [svgIcon]=\"item.icono ?? 'fa5sFileSignature'\"\n ></mat-icon>\n <span class=\"grow text-2xs\" [innerHTML]=\"item.label\">{{item.label}} </span>\n </button>\n\n </ng-container>\n </mat-menu>\n</ng-container>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i2$1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i2$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i2$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatRippleModule }, { kind: "directive", type: i5.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] });
|
|
2040
2007
|
}
|
|
2041
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2008
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: MenuComponent, decorators: [{
|
|
2042
2009
|
type: Component,
|
|
2043
2010
|
args: [{ selector: 'jvs-menu', standalone: true, imports: [
|
|
2044
2011
|
CommonModule,
|
|
@@ -2263,10 +2230,10 @@ class ListaArbolComponent {
|
|
|
2263
2230
|
item.claseFinal = claseFinal;
|
|
2264
2231
|
return claseFinal;
|
|
2265
2232
|
}
|
|
2266
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
2267
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
2233
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ListaArbolComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2234
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ListaArbolComponent, isStandalone: true, selector: "jvs-lista-arbol", inputs: { listaSuscription: "listaSuscription", nombreColeccion: "nombreColeccion", checkbox: "checkbox", expandirRecursivo: "expandirRecursivo", checkboxSeleccionados: "checkboxSeleccionados", campoId: "campoId", campoIdPadre: "campoIdPadre", campoStr: "campoStr", campoOrden: "campoOrden", strHijoContainer: "strHijoContainer", menuContextual: "menuContextual", classSeleccionado: "classSeleccionado", classAnulado: "classAnulado", campoAnulado: "campoAnulado", templateTxtData: "templateTxtData", condicionMostrar: "condicionMostrar", condicionesClaseFila: "condicionesClaseFila", selectionModel: "selectionModel", idTabla: "idTabla" }, outputs: { selectionModelChange: "selectionModelChange", seleccionado: "seleccionado", listaCheck: "listaCheck", listaCheckObj: "listaCheckObj" }, ngImport: i0, template: "<mat-tree [dataSource]=\"listaMuestraArbol\" [treeControl]=\"treeControl\">\n <mat-nested-tree-node *matTreeNodeDef=\"let node; when: hasChild\">\n <div class=\"flex flex-col trans-ease-out cursor-pointer\" matTreeNodeToggle\n [matTreeNodeToggleRecursive]=\"expandirRecursivo\">\n <ng-container [ngTemplateOutlet]=\"liDat\"\n [ngTemplateOutletContext]=\"{ node: node, nested: true }\"></ng-container>\n <div class=\"pl-4\" [class.tree-invisible]=\"!treeControl.isExpanded(node)\">\n <ng-container matTreeNodeOutlet></ng-container>\n </div>\n </div>\n </mat-nested-tree-node>\n\n <!-- Cambiar mat-tree-node plano por mat-nested-tree-node sin hijos -->\n <mat-nested-tree-node *matTreeNodeDef=\"let node\">\n <div class=\"flex flex-col trans-ease-out\">\n <ng-container [ngTemplateOutlet]=\"liDat\"\n [ngTemplateOutletContext]=\"{ node: node, nested: false }\"></ng-container>\n </div>\n </mat-nested-tree-node>\n</mat-tree>\n\n<ng-template #liDat let-node=\"node\" let-nested=\"nested\">\n <div class=\"flex items-center gap-0 text-sm trans-ease-out cursor-pointer p-0 w-full\"\n (contextmenu)=\"menuContextual?.abrirMenuContextual($event, node); $event.preventDefault();\"\n (click)=\"seleccionarItem(node); opcMenu({ seccion: nombreColeccion, tipo: 'ver', item: node }); menuContextual?.cerrarMenuContextual(); (nested === false) && $event.stopPropagation();\"\n [ngClass]=\"classFila(node)\">\n <mat-icon *ngIf=\"!nested\"></mat-icon>\n <mat-icon *ngIf=\"nested\"\n [svgIcon]=\"treeControl.isExpanded(node) ? 'roundExpandMore' : 'roundChevronRight'\"></mat-icon>\n\n <mat-checkbox *ngIf=\"checkbox\"\n [(ngModel)]=\"chkLista.modelosChk[node[campoId]]\"\n [ngModelOptions]=\"{ standalone: true }\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"cambiarCheck(node, $event.checked); emitirModeloCheck()\"\n [checked]=\"nested ? hijosActivos('checked', node) : false\"\n [indeterminate]=\"nested ? hijosActivos('indeterminate', node) : false\">\n </mat-checkbox>\n\n <span *ngIf=\"!templateTxtData\" class=\"w-full\">{{ node[campoStr] }}</span>\n <ng-container *ngIf=\"templateTxtData\" [ngTemplateOutlet]=\"templateTxtData\"\n [ngTemplateOutletContext]=\"{ data: node, treeControl }\"></ng-container>\n </div>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatTreeModule }, { kind: "directive", type: i3$2.MatNestedTreeNode, selector: "mat-nested-tree-node", inputs: ["matNestedTreeNode", "disabled", "tabIndex"], outputs: ["activation", "expandedChange"], exportAs: ["matNestedTreeNode"] }, { kind: "directive", type: i3$2.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i3$2.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i3$2.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i3$2.MatTreeNodeOutlet, selector: "[matTreeNodeOutlet]" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i5$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }] });
|
|
2268
2235
|
}
|
|
2269
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
2236
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ListaArbolComponent, decorators: [{
|
|
2270
2237
|
type: Component,
|
|
2271
2238
|
args: [{ selector: 'jvs-lista-arbol', standalone: true, imports: [
|
|
2272
2239
|
CommonModule,
|