@jvsoft/components 1.0.0-alpha.6 → 1.0.0-alpha.7

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.
@@ -1 +1 @@
1
- {"version":3,"file":"jvsoft-components.mjs","sources":["../../../projects/components/dialog-flotante/dialog-flotante.component.ts","../../../projects/components/dialog-flotante/dialog-flotante.component.html","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento.functions.ts","../../../projects/components/tabla-mantenimiento/classes/data-model.ts","../../../projects/components/tabla-mantenimiento/interfaces/global/no-export.ts","../../../projects/components/tabla-mantenimiento/mat-row-keyboard-selection.directive.ts","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type.component.ts","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type.component.html","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-number/column-type-number.component.ts","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-number/column-type-number.component.html","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-date/column-type-date.component.ts","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-date/column-type-date.component.html","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-sino/column-type-sino.component.ts","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-sino/column-type-sino.component.html","../../../projects/components/tabla-mantenimiento/components/progress-bar/progress-bar.component.ts","../../../projects/components/tabla-mantenimiento/components/progress-bar/progress-bar.component.html","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-progressbar/column-type-progressbar.component.ts","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-progressbar/column-type-progressbar.component.html","../../../projects/components/tabla-mantenimiento/pipes/no-sanitize.pipe.ts","../../../projects/components/tabla-mantenimiento/pipes/zero-fill.pipe.ts","../../../projects/components/tabla-mantenimiento/components/progress-bar/public-api.ts","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-text/column-type-text.component.ts","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-text/column-type-text.component.html","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-money/column-type-money.component.ts","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-money/column-type-money.component.html","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-icons/column-type-icons.component.ts","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-icons/column-type-icons.component.html","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type.module.ts","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/tabla-mantenimiento-column-defs.component.ts","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/tabla-mantenimiento-column-defs.component.html","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-menu/tabla-mantenimiento-menu.component.ts","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-menu/tabla-mantenimiento-menu.component.html","../../../projects/components/tabla-mantenimiento/table-util.ts","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento.service.ts","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento.component.ts","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento.component.html","../../../projects/components/luces-navidad/luces-navidad.component.ts","../../../projects/components/luces-navidad/luces-navidad.component.html","../../../projects/components/mat-suffix-search-button/mat-suffix-search-button.component.ts","../../../projects/components/mat-suffix-search-button/mat-suffix-search-button.component.html","../../../projects/components/menu/menu.component.ts","../../../projects/components/menu/menu.component.html","../../../projects/components/lista-arbol/lista-arbol.functions.ts","../../../projects/components/lista-arbol/lista-arbol.component.ts","../../../projects/components/lista-arbol/lista-arbol.component.html","../../../projects/components/index.ts","../../../projects/components/jvsoft-components.ts"],"sourcesContent":["import { booleanAttribute, Component, computed, input, output } from '@angular/core';\nimport { MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { BotonDialog } from './dialog-flotante.interface';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\nimport { CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';\nimport { MatRipple } from '@angular/material/core';\nimport { MatDivider } from '@angular/material/divider';\n\n@Component({\n selector: '[jvsDialogFlotante]',\n imports: [\n CommonModule,\n MatIconModule,\n MatDialogModule,\n CdkDrag,\n CdkDragHandle,\n MatRipple,\n MatDivider,\n\n ],\n templateUrl: './dialog-flotante.component.html',\n styleUrls: ['./dialog-flotante.component.scss'],\n host: {\n class: 'jvs-dialog-flotante',\n }\n})\nexport class DialogFlotanteComponent {\n cssClases = input<Record<string, string>>({});\n sinTitulo = input(false, { transform: booleanAttribute });\n sinBarraDeAccion = input(false, { transform: booleanAttribute });\n btnCerrarBarra = input(false, { transform: booleanAttribute });\n iconoTitulo = input<string | undefined>(undefined);\n matDialogRefActual = input<MatDialogRef<any> | undefined>(undefined);\n\n // Inputs crudos para botones (string | boolean | object)\n btnGuardarInput = input<BotonDialog | boolean | string | undefined>(undefined, { alias: 'btnGuardar' });\n btnCerrarInput = input<BotonDialog | boolean | string | undefined>(undefined, { alias: 'btnCerrar' });\n\n btnGuardarClick = output<any>();\n btnCerrarClick = output<any>();\n\n private readonly defaultBtnCerrar: BotonDialog = { label: 'CERRAR', class: 'text-gray-700 border-gray-700' };\n private readonly defaultBtnGuardar: BotonDialog = {\n label: 'GUARDAR', class: 'text-blue-700 border-blue-700', icono: 'roundSave'\n };\n\n // Computed signals para normalizar la configuración de botones\n btnCerrar = computed(() => {\n const val = this.btnCerrarInput();\n // Si es false, null o undefined -> NO MOSTRAR\n if (val === false || val === null || val === undefined) return undefined;\n // Si es string vacío (atributo presente sin valor) o true -> MOSTRAR DEFAULT\n if (val === '' || val === true) return this.defaultBtnCerrar;\n // Si es string con valor -> MOSTRAR DEFAULT CON LABEL\n if (typeof val === 'string') return { ...this.defaultBtnCerrar, label: val };\n // Si es objeto -> USAR EL OBJETO\n return val as BotonDialog;\n });\n\n btnGuardar = computed(() => {\n const val = this.btnGuardarInput();\n // Si es false, null o undefined -> NO MOSTRAR\n if (val === false || val === null || val === undefined) return undefined;\n // Si es string vacío (atributo presente sin valor) o true -> MOSTRAR DEFAULT\n if (val === '' || val === true) return this.defaultBtnGuardar;\n // Si es string con valor -> MOSTRAR DEFAULT CON LABEL\n if (typeof val === 'string') return { ...this.defaultBtnGuardar, label: val };\n // Si es objeto -> USAR EL OBJETO\n return val as BotonDialog;\n });\n\n guardarDialogo() {\n this.btnGuardarClick.emit(true);\n }\n\n cerrarDialogo() {\n this.btnCerrarClick.emit(true);\n const ref = this.matDialogRefActual();\n if (ref) {\n if (ref.componentInstance?.validarCerrarDialog) {\n ref.componentInstance?.validarCerrarDialog();\n } else {\n ref.close('Cerrado GDLG');\n }\n }\n }\n}\n","<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ón 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ón 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","export function buscarEnArray<T extends Record<string, any>>(\n coleccion: T[],\n idBuscar: string | string[],\n dato: any\n): T | null {\n if (!Array.isArray(coleccion) || coleccion.length === 0) return null; // 🔹 Validación de entrada\n\n return Array.isArray(idBuscar)\n ? coleccion.find(item => idBuscar.every((campo, idx) => item[campo] === dato[idx])) || null\n :coleccion.find(item => item[idBuscar] === dato) || null;\n}\n\nexport function formatearFecha(val: string, hora = '00:00:00') {\n if (val) {\n if (val.length <= 10) {\n val = val + ' ' + hora;\n }\n return new Date(val);\n }\n return val;\n}\n\nexport function esNumero(value: any) {\n return !isNaN(Number(value));\n}\n\nexport function capitalizarTexto(texto: string) {\n texto = texto.replace(/_/g, ' ');\n texto = texto.replace(/-/g, ' ');\n const textoCortado = texto.split(' ');\n\n const nText: string[] = [];\n textoCortado.forEach(textActual => {\n nText.push(textActual.charAt(0).toUpperCase() + textActual.slice(1));\n });\n return nText.join(' ');\n}\n\nexport function getBrowserName() {\n const agent = window.navigator.userAgent.toLowerCase();\n switch (true) {\n case agent.indexOf('edge') > -1:\n return 'edge';\n case agent.indexOf('opr') > -1 && !!(<any>window).opr:\n return 'opera';\n case agent.indexOf('chrome') > -1 && !!(<any>window).chrome:\n return 'chrome';\n case agent.indexOf('trident') > -1:\n return 'ie';\n case agent.indexOf('firefox') > -1:\n return 'firefox';\n case agent.indexOf('safari') > -1:\n return 'safari';\n default:\n return 'other';\n }\n}\n","import {AbstractControl, FormControl, FormControlOptions, FormGroup, ValidationErrors, ValidatorFn, Validators} from '@angular/forms';\nimport {esNumero} from '../tabla-mantenimiento.functions';\n\nexport class DataModel {\n public modelosChk: { [key: string]: boolean | any } = {}; // Usar any para valores dinámicos\n\n public checkbox: ForCheckboxModel;\n\n constructor() {\n this.checkbox = new ForCheckboxModel(this);\n }\n\n generarId(row: any, campoValor: string[] | string, separador = '') {\n if (typeof campoValor == 'string') {\n campoValor = [campoValor];\n }\n return campoValor.map(data => row[data]).join(separador);\n }\n\n // Agrega controles al objeto modelosChk\n agregarControles(lista: any[], idLista: string, limpiar = true, campoValor: string[] | string | null = null, campoValorSeparador = '') {\n\n if (limpiar) {\n this.modelosChk = {};\n }\n\n const asignarValor = (dat: any, idLista: string, campoValor: string, key?: string) => {\n if (!key) {\n key = dat[idLista] + (campoValor.includes('.') ? '':`.${campoValor}`);\n }\n const mat = campoValor.match(/^([in])[A-Z][a-zA-Z]+/);\n if (mat) {\n this.modelosChk[key] = dat[campoValor] * 1;\n }\n else {\n this.modelosChk[key] = dat[campoValor];\n }\n }\n\n\n lista.forEach(dat => {\n if (campoValor === null) {\n // Caso 1: Sin campoValor, se asigna false\n this.modelosChk[dat[idLista]] = false;\n }\n else if (typeof campoValor === 'string') {\n // Caso 2: campoValor es un string\n asignarValor(dat, idLista, campoValor, dat[idLista]);\n }\n else if (campoValorSeparador) {\n const idStr = this.generarId(dat, campoValor, campoValorSeparador);\n // Caso 2: campoValor es un string\n asignarValor(dat, idLista, '.', idStr);\n }\n else {\n // Caso 3: campoValor es un array de strings\n campoValor.forEach(data => asignarValor(dat, idLista, data));\n }\n });\n }\n\n // Establece el estado de un índice\n setState(idx: string, state: boolean) {\n this.modelosChk[idx] = state;\n }\n\n // Obtiene el estado de un índice\n getState(idx: string): boolean | any {\n return this.modelosChk[idx];\n }\n\n getDataMultiple(idx: string) {\n const camposMod = Object.keys(this.modelosChk).filter(key => key.split('.')[0] == idx);\n const vRet: any = {};\n camposMod.forEach(key => {\n vRet[key.split('.')[1]] = this.modelosChk[key];\n });\n return vRet;\n }\n\n // Genera una lista basada en el estado de los índices\n generarLista(tipoRetorno: 'array' | 'object' | null = null, esCampoNumerico = false): string | object | any[] {\n const strLista: string[] = [];\n const objLista: { [key: string]: boolean | any } = {};\n Object.keys(this.modelosChk).forEach(key => {\n if ((esCampoNumerico && esNumero(this.modelosChk[key])) ||\n (this.modelosChk[key])\n ) {\n strLista.push(key);\n objLista[key] = this.modelosChk[key];\n }\n });\n if (tipoRetorno === 'array') {\n return strLista;\n }\n if (tipoRetorno === 'object') {\n return objLista;\n }\n return strLista.join(',');\n }\n\n generarFormGroupFromModelosChk(tipo?: string): FormGroup {\n const formGroupObj: { [key: string]: FormControl } = {};\n let validadores: ValidatorFn | ((control: AbstractControl) => ValidationErrors | null)[] | FormControlOptions | null | undefined = []\n if (tipo == 'number') {\n validadores = [\n Validators.required,\n Validators.min(1)\n ]\n }\n Object.keys(this.modelosChk).forEach(key => {\n formGroupObj[key] = new FormControl(this.modelosChk[key], validadores);\n });\n return new FormGroup(formGroupObj);\n\n // return this.formBuilder.group(formGroupObj);\n }\n}\n\nclass ForCheckboxModel {\n private modeloCheck: DataModel;\n\n constructor(modeloCheck: DataModel) {\n this.modeloCheck = modeloCheck;\n }\n\n get cantidadActivos() {\n return Object.values(this.modeloCheck.modelosChk).filter(Boolean).length;\n }\n\n get existenActivados() {\n return this.cantidadActivos > 0;\n }\n\n get todosActivos() {\n const total = Object.keys(this.modeloCheck.modelosChk).length;\n const activos = this.cantidadActivos;\n return activos > 0 && total === activos;\n }\n\n get algunosActivos() {\n const total = Object.keys(this.modeloCheck.modelosChk).length;\n const activos = this.cantidadActivos;\n return activos > 0 && total !== activos;\n }\n\n establecerTodos(activo: boolean) {\n Object.keys(this.modeloCheck.modelosChk).forEach(idx => this.modeloCheck.modelosChk[idx] = activo);\n }\n}\n","export type TipoValorFuncion<T> = T | ((...param: any) => T);\n\nexport function tipoValorFuncion<T>(datoParam: TipoValorFuncion<T>, defaultValue?: T, ...param: any[]): T | undefined {\n if (datoParam === undefined || datoParam === null) {\n return defaultValue; // Retorna el valor por defecto si es undefined\n }\n if (typeof datoParam === 'function') {\n return (datoParam as (...args: any) => T)(...param);\n }\n return datoParam;\n}\n","import {Directive, ElementRef, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output} from '@angular/core';\nimport {MatTable, MatTableDataSource} from '@angular/material/table';\nimport {Subject, takeUntil} from 'rxjs';\n\n@Directive({\n selector: '[matRowKeyboardSelection]'\n})\nexport class MatRowKeyboardSelectionDirective implements OnInit, OnDestroy {\n\n private rows!: HTMLElement[];\n private renderedData!: any[];\n\n @Input('matRowKeyboardSelection') tabla!: MatTable<any>; // Entrada: Referencia a la tabla\n @Input() rowModel: any; // Entrada: Modelo de fila actual\n @Output() seleccionarSiguiente = new EventEmitter(); // Salida: Evento al seleccionar siguiente\n\n private unsubscriber$ = new Subject();\n\n constructor(private el: ElementRef) {}\n\n ngOnInit(): void {\n // Asignar tabindex si no está definido\n if (this.el.nativeElement.tabIndex < 0) {\n this.el.nativeElement.tabIndex = 0;\n }\n\n // Obtener la fuente de datos de la tabla\n const dataSource = this.tabla.dataSource as MatTableDataSource<any>;\n\n // Suscribirse a los cambios en los datos\n dataSource.connect().pipe(takeUntil(this.unsubscriber$)).subscribe(data => {\n this.renderedData = data;\n this.rows = Array.from(<NodeListOf<HTMLElement>>this.getTableRows());\n });\n }\n\n ngOnDestroy(): void {\n // Finalizar la suscripción al destruir la directiva\n this.unsubscriber$.next(null);\n this.unsubscriber$.complete();\n }\n\n @HostListener('keydown', ['$event']) onKeydown(event: KeyboardEvent): void {\n var element = event.target as HTMLElement;\n if (element.tagName === \"INPUT\") {\n event.stopPropagation();\n }\n else {\n const currentIndex = this.renderedData.findIndex(row => row === this.rowModel);\n const eRef = event.target as HTMLElement;\n this.rows = this.rows.filter(elem => elem.hasAttribute('id'));\n const arrayFilas = Array.from(this.rows);\n\n const fElem = arrayFilas.filter(elem => elem.id == eRef.id).pop();\n const cElemIdx = arrayFilas.findIndex(elem => elem == fElem);\n\n let newRow: HTMLElement | undefined;\n\n // Controlar las teclas presionadas\n switch (event.key) {\n case 'ArrowDown':\n newRow = this.rows[cElemIdx + 1];\n break;\n case 'ArrowUp':\n newRow = this.rows[cElemIdx - 1];\n break;\n case 'Enter':\n case ' ':\n this.seleccionarSiguiente.next(this.renderedData[currentIndex]);\n event.preventDefault();\n break;\n }\n\n // Enfocar la nueva fila seleccionada\n if (newRow) {\n newRow.classList.add('estaFocus');\n newRow.focus();\n }\n }\n }\n\n private getTableRows(): NodeListOf<HTMLElement> | undefined {\n let el = this.el.nativeElement;\n\n // Recorrer los elementos padres hasta encontrar la tabla\n while (el && el.parentNode) {\n el = el.parentNode;\n\n // Verificar si es una tabla de material\n if (el.tagName && el.tagName.toLowerCase() === 'mat-table' || el.hasAttribute('mat-table')) {\n return el.querySelectorAll('mat-row, tr[mat-row]');\n }\n }\n\n return undefined;\n }\n}\n","import {AfterViewInit, Component, Input, OnInit, Optional, TemplateRef, ViewChild} from '@angular/core';\nimport {MatColumnDef, MatTable} from '@angular/material/table';\nimport {ColumnaTabla} from '../../interfaces';\n\n@Component({\n selector: 'jvs-column-type',\n templateUrl: './column-type.component.html',\n standalone: false,\n})\nexport class ColumnTypeComponent<T> implements OnInit, AfterViewInit {\n @Input({required: true}) column!: ColumnaTabla<T>;\n @ViewChild(MatColumnDef, {static: true}) columnDef!: MatColumnDef;\n @Input() columnTitleTemplate?: TemplateRef<any>; // Permite personalizar títulos\n @Input() columnFooterTemplate?: TemplateRef<any>; // Permite personalizar footer\n @Input() cellTemplate!: TemplateRef<any>; // Se usa para el contenido de las celdas\n\n constructor(@Optional() private table: MatTable<T>) {\n }\n\n ngOnInit() {\n }\n\n ngAfterViewInit() {\n if (this.columnDef) {\n this.table.addColumnDef(this.columnDef);\n }\n }\n\n accionClick(item: T, event: Event) {\n if (this.column.click) {\n this.column.click(item);\n event.stopPropagation();\n }\n return false;\n }\n}\n","<ng-container matColumnDef=\"{{ column.property }}\">\n <!-- Definición 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","import {Component, Input} from '@angular/core';\nimport {ColumnaNumber} from '../../../interfaces';\nimport {ColumnTypeComponent} from '../column-type.component';\n\n\n@Component({\n selector: 'jvs-column-type-number',\n standalone: false,\n templateUrl: './column-type-number.component.html'\n})\nexport class ColumnTypeNumberComponent<T> extends ColumnTypeComponent<T> {\n @Input({required: true}) override column: ColumnaNumber<T> = {} as ColumnaNumber<T>;\n\n}\n","\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ón 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","import {Component, Input} from '@angular/core';\nimport {ColumnaDate} from '../../../interfaces';\nimport {ColumnTypeComponent} from '../column-type.component';\n\n@Component({\n selector: 'jvs-column-type-date',\n standalone: false,\n templateUrl: './column-type-date.component.html'\n})\nexport class ColumnTypeDateComponent<T> extends ColumnTypeComponent<T> {\n @Input({required: true}) override column: ColumnaDate<T> = {} as ColumnaDate<T>;\n}\n","<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ón 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","import {Component, inject, Input} from '@angular/core';\n\nimport {MatIconRegistry} from '@angular/material/icon';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {ColumnaYesNo} from '../../../interfaces';\nimport {ColumnTypeComponent} from '../column-type.component';\nimport {MatTable} from '@angular/material/table';\n\nconst YES_ICON = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M21 7L9 19l-5.5-5.5l1.41-1.41L9 16.17L19.59 5.59z\"/></svg>\n`;\nconst NO_ICON = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M19 6.41L17.59 5L12 10.59L6.41 5L5 6.41L10.59 12L5 17.59L6.41 19L12 13.41L17.59 19L19 17.59L13.41 12z\"/></svg>\n`;\n\n@Component({\n selector: 'jvs-column-type-sino',\n standalone: false,\n templateUrl: './column-type-sino.component.html'\n})\nexport class ColumnTypeSinoComponent<T> extends ColumnTypeComponent<T> {\n @Input({required: true}) override column: ColumnaYesNo<T> = {} as ColumnaYesNo<T>; // 🟢 Solución\n\n\n constructor() {\n super(inject(MatTable)); // 🟢 Llamar al constructor del padre\n const iconRegistry = inject(MatIconRegistry);\n const sanitizer = inject(DomSanitizer);\n\n // Note that we provide the icon here as a string literal here due to a limitation in\n // Stackblitz. If you want to provide the icon from a URL, you can use:\n // `iconRegistry.addSvgIcon('thumbs-up', sanitizer.bypassSecurityTrustResourceUrl('icon.svg'));`\n iconRegistry.addSvgIconLiteralInNamespace('yes_no', 'yes', sanitizer.bypassSecurityTrustHtml(YES_ICON));\n iconRegistry.addSvgIconLiteralInNamespace('yes_no', 'no', sanitizer.bypassSecurityTrustHtml(NO_ICON));\n // iconRegistry.addSvgIconLiteral('yesIcon', sanitizer.bypassSecurityTrustHtml(YES_ICON));\n // iconRegistry.addSvgIconLiteral('noIcon', sanitizer.bypassSecurityTrustHtml(NO_ICON));\n }\n}\n","<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ón 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","import {Component, Input, OnInit} from '@angular/core';\nimport {CommonModule, DecimalPipe} from '@angular/common';\n\nexport interface EstilosBarra {\n\tvalorMaximo: number;\n\tclass?: string;\n\tstyle?: string;\n}\n\n@Component({\n selector: 'jvs-progress-bar',\n templateUrl: './progress-bar.component.html',\n imports: [\n CommonModule,\n DecimalPipe\n ],\n host: {\n class: 'jvs-progress-bar',\n }\n})\nexport class ProgressBarComponent implements OnInit {\n\n\t@Input() objThis: any;\n\t@Input() porcentaje = 0;\n\t@Input() textoCentrado = false;\n\n private _textoMostrar: string = '';\n get textoMostrar(): string { return this._textoMostrar; }\n\t@Input() set textoMostrar(val: string) { this._textoMostrar = val; }\n\n private _formatoNumero: string = '';\n get formatoNumero(): string { return this._formatoNumero; }\n\t@Input() set formatoNumero(val: string | undefined) { this._formatoNumero = val ?? '1.0-0'; }\n\n private _coloresValor: EstilosBarra[] = [];\n get coloresValor(): EstilosBarra[] { return this._coloresValor; }\n @Input() set coloresValor(val: EstilosBarra[] | undefined ) {\n if (!val || !Array.isArray(val)) {\n this._coloresValor = [\n {valorMaximo: 1, class: 'p-0'},\n {valorMaximo: 40, class: 'bg-red-400 text-red-900'},\n // {valorMaximo: 35, class: 'bg-red-600 text-red-100'},\n {valorMaximo: 80, class: 'bg-yellow-600 text-yellow-100'},\n {valorMaximo: 100, class: 'bg-green-600 text-green-100'},\n ];\n }\n else {\n this._coloresValor = val;\n }\n }\n\n\tconstructor() { }\n\n\tngOnInit(): void {\n\t}\n\n\tcolorEstilo(): {style: string, class: string} {\n\t\tlet estiloFin = null;\n\t\tlet claseFin = null;\n\t\tlet encontro = false;\n\n\t\tthis.coloresValor = this.ordenarPorPropiedad(this.coloresValor, 'valorMaximo');\n\n\t\tthis.coloresValor.forEach(estilo => {\n\t\t\tif (!encontro && (this.porcentaje <= estilo.valorMaximo)) {\n\t\t\t\t// console.log(this.porcentaje, estilo, (this.porcentaje < estilo.valorMaximo));\n\t\t\t\tencontro = true;\n\t\t\t\testiloFin = estilo.style;\n\t\t\t\tclaseFin = estilo.class;\n\t\t\t}\n\t\t});\n\t\treturn {\n\t\t\tstyle: estiloFin ?? '',\n\t\t\tclass: claseFin ?? '',\n\t\t};\n\t}\n\n ordenarPorPropiedad(objData: any[], propiedad: string, numeros = false) {\n if (numeros) {\n return objData.sort((a, b) => a[propiedad] - b[propiedad]);\n }\n return objData.sort((a, b) => (a[propiedad] > b[propiedad]) ? 1:((b[propiedad] > a[propiedad]) ? -1:0));\n }\n\n}\n","<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","import {Component, Input} from '@angular/core';\nimport {ColumnaProgress} from '../../../interfaces';\nimport {ColumnTypeComponent} from '../column-type.component';\n\n@Component({\n selector: 'jvs-column-type-progressbar',\n standalone: false,\n templateUrl: './column-type-progressbar.component.html'\n})\nexport class ColumnTypeProgressbarComponent<T> extends ColumnTypeComponent<T> {\n @Input({required: true}) override column: ColumnaProgress<T> = {} as ColumnaProgress<T>;\n\n}\n","<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ón 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","import {Pipe, PipeTransform} from '@angular/core';\nimport {DomSanitizer, SafeHtml} from '@angular/platform-browser';\n\n@Pipe({ name: 'noSanitize' })\nexport class NoSanitizePipe implements PipeTransform {\n\tconstructor(private domSanitizer: DomSanitizer) {\n\n\t}\n\ttransform(html: string): SafeHtml {\n\t\treturn this.domSanitizer.bypassSecurityTrustHtml(html);\n\t}\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n\tname: 'zeroFill',\n})\nexport class ZeroFillPipe implements PipeTransform {\n\n\ttransform(value: unknown, digitos: number, ...args: unknown[]) {\n\t\tlet s = value + '';\n\t\twhile (s.length < digitos) {\n\t\t\ts = '0' + s;\n\t\t}\n\t\treturn s;\n\t}\n\n}\nexport function zeroFill(value: unknown, digitos: number, ...args: unknown[]) {\n\treturn new ZeroFillPipe().transform(value, digitos, args);\n}\n","export * from './progress-bar.component';\n// export * from './progress-spinner.service';\n","import {Component, Input} from '@angular/core';\nimport {ColumnTypeComponent} from '../column-type.component';\nimport {ColumnaTexto} from '../../../interfaces';\n\n@Component({\n selector: 'jvs-column-type-text',\n templateUrl: './column-type-text.component.html',\n standalone: false,\n})\n\nexport class ColumnTypeTextComponent<T> extends ColumnTypeComponent<T> {\n @Input({required: true}) override column: ColumnaTexto<T> = {} as ColumnaTexto<T>; // 🟢 Solución\n\n // @ViewChild('titleTemplate', {static: true}) titleTemplateRef!: TemplateRef<any>;\n // @ViewChild('cellTemplate', {static: true}) cellTemplateRef!: TemplateRef<any>;\n}\n\n// export class ColumnTypeTextComponent implements OnInit, AfterViewInit {\n// @Input({required: true}) column!: ColumnaTexto<any>;\n// @ViewChild(MatColumnDef, {static: true}) columnDef!: MatColumnDef;\n//\n// constructor(\n// @Optional() public table: MatTable<any>,\n// ) {\n// }\n//\n// ngOnInit() {\n// }\n//\n// ngAfterViewInit() {\n// if (this.columnDef) {\n// this.table.addColumnDef(this.columnDef);\n// }\n// }\n//\n// accionClick(column: any, item: any, event: any) {\n// if (column.click) {\n// column.click(item);\n// event.stopPropagation();\n// }\n// return false;\n// }\n// }\n","<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ón 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","import {Component, Input} from '@angular/core';\nimport {ColumnaMoney} from '../../../interfaces';\nimport {ColumnTypeComponent} from '../column-type.component';\n\n@Component({\n selector: 'jvs-column-type-money',\n templateUrl: './column-type-money.component.html',\n standalone: false,\n})\nexport class ColumnTypeMoneyComponent<T> extends ColumnTypeComponent<T> {\n @Input({required: true}) override column: ColumnaMoney<T> = {} as ColumnaMoney<T>;\n\n\n value(row: any): number {\n return (this.column.transformar ? this.column.transformar(row):row[this.column.property]);\n }\n}\n","<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ón 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","import {Component, Input} from '@angular/core';\nimport {ColumnaIcons, IconsIcon} from '../../../interfaces';\nimport {ColumnTypeComponent} from '../column-type.component';\n\n@Component({\n selector: 'jvs-column-type-icons',\n standalone: false,\n templateUrl: './column-type-icons.component.html'\n})\nexport class ColumnTypeIconsComponent<T> extends ColumnTypeComponent<T> {\n @Input({required: true}) override column: ColumnaIcons<T> = {} as ColumnaIcons<T>;\n\n obtenerItems(columna: any, row: any): IconsIcon[] {\n if (typeof columna.items === 'function') {\n return columna.items(row);\n }\n return columna.items;\n }\n}\n","<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ón 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","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatTableModule} from '@angular/material/table';\nimport {MatSortModule} from '@angular/material/sort';\nimport {ColumnTypeNumberComponent} from './column-type-number/column-type-number.component';\nimport {ColumnTypeDateComponent} from './column-type-date/column-type-date.component';\nimport {MatRipple} from '@angular/material/core';\nimport {MatTooltipModule} from '@angular/material/tooltip';\nimport {MatIcon} from '@angular/material/icon';\nimport {ColumnTypeSinoComponent} from './column-type-sino/column-type-sino.component';\nimport {ColumnTypeProgressbarComponent} from './column-type-progressbar/column-type-progressbar.component';\nimport {NoSanitizePipe} from '../../pipes/no-sanitize.pipe';\nimport {ZeroFillPipe} from '../../pipes/zero-fill.pipe';\nimport {ProgressBarComponent} from '../../components/progress-bar';\nimport {ColumnTypeTextComponent} from './column-type-text/column-type-text.component';\nimport {ColumnTypeMoneyComponent} from './column-type-money/column-type-money.component';\nimport {ColumnTypeIconsComponent} from './column-type-icons/column-type-icons.component';\nimport {ColumnTypeComponent} from './column-type.component';\n\n\n@NgModule({\n declarations: [\n ColumnTypeComponent,\n ColumnTypeTextComponent,\n ColumnTypeMoneyComponent,\n ColumnTypeNumberComponent,\n ColumnTypeDateComponent,\n ColumnTypeIconsComponent,\n ColumnTypeSinoComponent,\n ColumnTypeProgressbarComponent,\n ],\n imports: [\n CommonModule,\n MatTableModule,\n MatSortModule,\n MatTooltipModule,\n NoSanitizePipe,\n ZeroFillPipe,\n MatRipple,\n MatIcon,\n ProgressBarComponent,\n ],\n exports: [\n ColumnTypeTextComponent,\n ColumnTypeMoneyComponent,\n ColumnTypeNumberComponent,\n ColumnTypeDateComponent,\n ColumnTypeIconsComponent,\n ColumnTypeSinoComponent,\n ColumnTypeProgressbarComponent,\n ]\n})\nexport class ColumnTypeModule {\n}\n","import {AfterContentInit, ChangeDetectorRef, Component, ContentChildren, EventEmitter, Input, Optional, Output, QueryList, ViewChildren} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatColumnDef, MatTable, MatTableModule} from '@angular/material/table';\nimport {MatCheckboxModule} from '@angular/material/checkbox';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatRippleModule} from '@angular/material/core';\nimport {MatSortModule} from '@angular/material/sort';\nimport {MatTooltipModule} from '@angular/material/tooltip';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {ColumnaTabla} from '../interfaces/global';\nimport {DataModel} from '../classes/data-model';\nimport {ColumnTypeModule} from './column-type/column-type.module';\n\n@Component({\n selector: 'jvs-tabla-mantenimiento-column-defs',\n standalone: true,\n imports: [\n CommonModule,\n MatCheckboxModule,\n MatIconModule,\n MatRippleModule,\n MatSortModule,\n MatTableModule,\n MatTooltipModule,\n ReactiveFormsModule,\n FormsModule,\n ColumnTypeModule,\n\n ],\n templateUrl: './tabla-mantenimiento-column-defs.component.html',\n styleUrls: ['./tabla-mantenimiento-column-defs.component.scss']\n})\nexport class TablaMantenimientoColumnDefsComponent implements AfterContentInit {\n\n @Input() objThis: any;\n @Input() nombreColeccion: any;\n @Input() colDetalle!: ColumnaTabla<any>[];\n\n @Input() chkLista!: DataModel; // = new DataModel();\n @Output() chkListaChange = new EventEmitter<DataModel>();\n\n @ViewChildren(MatColumnDef) columnDefLocales!: QueryList<MatColumnDef>;\n @ContentChildren(MatColumnDef, {descendants: true}) columnDefEnSubComponentes!: QueryList<MatColumnDef>;\n\n\n constructor(\n @Optional() public table: MatTable<any>, private cdRef: ChangeDetectorRef,\n ) {\n }\n\n ngAfterContentInit() {\n if (this.table) {\n this.cdRef.detectChanges();\n this.columnDefEnSubComponentes.forEach(refCol => {\n this.table.addColumnDef(refCol);\n });\n this.columnDefLocales.forEach(refCol => {\n this.table.addColumnDef(refCol);\n });\n }\n }\n\n trackByProperty<T>(index: number, column: ColumnaTabla<T>) {\n return column.property;\n }\n\n}\n","<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","import {Component, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatMenu, MatMenuModule} from '@angular/material/menu';\nimport {BotonMantenimiento} from '../interfaces/global';\n\n@Component({\n selector: 'jvs-tabla-mantenimiento-menu',\n standalone: true,\n imports: [\n CommonModule,\n MatMenuModule,\n ],\n templateUrl: './tabla-mantenimiento-menu.component.html',\n styleUrls: ['./tabla-mantenimiento-menu.component.scss']\n})\nexport class TablaMantenimientoMenuComponent implements OnInit {\n @Input() objThis: any;\n @Input() nombreColeccion!: string;\n @Input() item: any;\n @Input() derechosActuales: any;\n // @Input() modalPrincipal;\n // @Input() botonDisabled = (btn: BotonMantenimiento, item: any) => [];\n\n @Output() opcionSelecionada = new EventEmitter();\n\n @ViewChild('menu', {static: true}) public menu!: MatMenu;\n @Input({required: true}) subItems!: BotonMantenimiento[];\n\n @Input({required: true}) botonTemplate!: TemplateRef<any>;\n\n constructor(\n ) {\n }\n\n ngOnInit(): void {\n }\n\n\n}\n","<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","import * as XLSX from 'xlsx';\n\nconst getFileName = (name: string) => {\n const timeSpan = new Date().toISOString();\n const sheetName = name || 'ExportResult';\n const fileName = `${sheetName}-${timeSpan}`;\n return {\n sheetName,\n fileName\n };\n};\nexport class TableUtil {\n static exportTableToExcelV2(targetTableElm: HTMLElement, name?: string) {\n const { sheetName, fileName } = getFileName(<string>name);\n console.log(targetTableElm);\n const wb = XLSX.utils.table_to_book(targetTableElm, {\n sheet: sheetName\n } as XLSX.Table2SheetOpts);\n XLSX.writeFile(wb, `${fileName}.xlsx`);\n }\n static exportTableToExcel(tableId: string, name?: string) {\n\n\n const { sheetName, fileName } = getFileName(<string>name);\n const targetTableElm = document.getElementById(tableId);\n console.log(targetTableElm);\n const wb = XLSX.utils.table_to_book(targetTableElm, {\n sheet: sheetName\n } as XLSX.Table2SheetOpts);\n // XLSX.writeFile(wb, `${fileName}.xlsx`);\n }\n\n static exportArrayToExcel(arr: any[], name?: string) {\n const { sheetName, fileName } = getFileName(<string>name);\n\n const wb = XLSX.utils.book_new();\n const ws = XLSX.utils.json_to_sheet(arr, {dateNF: 'dd/MM/yyyy'});\n XLSX.utils.book_append_sheet(wb, ws, sheetName);\n XLSX.writeFile(wb, `${fileName}.xlsx`);\n }\n\n static getWorkBook(htmlTableId: string, data: any[]) {\n const targetTableElm = document.getElementById(htmlTableId);\n const tableToSheet = XLSX.utils.table_to_sheet(targetTableElm, {raw: true});\n const jsonToSheet = XLSX.utils.json_to_sheet(data);\n const sheetToJson: any = XLSX.utils.sheet_to_json(tableToSheet);\n return {tableToSheet, jsonToSheet, sheetToJson};\n }\n}\n","import {Injectable} from '@angular/core';\nimport {BotonMantenimiento, ColumnaTabla} from './interfaces/global';\n\n\n@Injectable({\n providedIn: 'root',\n})\n\nexport class TablaMantenimientoService {\n\n get templateBotonesComunes(): BotonMantenimiento[] {\n return [\n {icono: 'roundAdd', tipo: 'nuevo', class: 'text-green-100 !bg-green-600', sinCondicion: true},\n {icono: 'roundEdit', tipo: 'editar', class: 'text-amber-900 !bg-amber-300'},\n {icono: 'roundDelete', tipo: 'eliminar', class: 'text-red-100 !bg-red-700'},\n {icono: 'roundDelete', tipo: 'eliminar_fila', class: 'text-red-100 !bg-red-700'},\n {icono: 'roundPrint', tipo: 'imprimir', class: '!bg-blue-100 text-blue-700'},\n {icono: 'roundDownload', tipo: 'descargar', class: '!bg-blue-100 text-blue-700'},\n {icono: 'roundFolder', tipo: 'ver_archivos', class: '!bg-green-100 text-green-700'},\n {icono: 'fa5FilePdf', tipo: 'exportar_pdf', label: 'Exportar a PDF', class: 'bg-pdf-light text-pdf'},\n {icono: 'fa5FileExcel', tipo: 'exportar_excel', label: 'Exportar a Excel', class: 'bg-excel-light text-excel'},\n {icono: 'fa5sFileExport', tipo: 'exportacion_avanzada', label: 'Exportación Avanzada', class: '!text-indigo-600 !bg-indigo-100'},\n {icono: 'icSave', tipo: 'guardar', class: '!text-indigo-100 !bg-indigo-600'},\n {icono: 'icCancel', tipo: 'cancelar', class: '!text-cyan-100 !bg-cyan-600'},\n {\n icono: 'roundFactCheck', tipo: 'seleccionar',\n class: 'text-blue-100 bg-blue-700 dark:text-blue-100 dark:bg-blue-700'\n },\n {icono: 'roundListAlt', tipo: 'detalle', class: 'text-blue-100 bg-blue-700 dark:text-blue-100 dark:bg-blue-700'},\n {icono: 'roundPublic', tipo: 'ver_mapa', class: 'text-blue-100 bg-blue-700 dark:text-blue-100 dark:bg-blue-700'},\n {icono: 'icCheck', tipo: 'activar',},\n {icono: 'icClose', tipo: 'desactivar',},\n {icono: 'fa5sLock', tipo: 'cerrar',},\n {icono: 'fa5sLockOpen', tipo: 'abrir',},\n ];\n }\n\n get templateColumnasTabla(): ColumnaTabla<any>[] {\n return [\n {label: '#', labelLista: 'Numeración', property: 'numeracion_automatica', type: 'numeracion_automatica'},\n ];\n }\n\n}\n","import {animate, state, style, transition, trigger} from '@angular/animations';\nimport {Overlay, OverlayRef} from '@angular/cdk/overlay';\nimport {TemplatePortal} from '@angular/cdk/portal';\nimport {CommonModule} from '@angular/common';\nimport {AfterContentInit, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, HostBinding, inject, Input, OnChanges, OnInit, Output, QueryList, SimpleChanges, TemplateRef, ViewChild, ViewChildren, ViewContainerRef} from '@angular/core';\nimport {FormBuilder, FormControl, FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {MatBadgeModule} from '@angular/material/badge';\nimport {MatCheckboxModule} from '@angular/material/checkbox';\nimport {MatRippleModule} from '@angular/material/core';\nimport {MatDividerModule} from '@angular/material/divider';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatMenuModule} from '@angular/material/menu';\nimport {MAT_PAGINATOR_DEFAULT_OPTIONS, MatPaginator, MatPaginatorModule} from '@angular/material/paginator';\nimport {MatSort, MatSortModule} from '@angular/material/sort';\nimport {MatColumnDef, MatFooterRow, MatRow, MatTable, MatTableDataSource, MatTableModule} from '@angular/material/table';\nimport {MatTooltipModule} from '@angular/material/tooltip';\nimport {UntilDestroy, untilDestroyed} from '@ngneat/until-destroy';\n\nimport moment from 'moment';\nimport {fromEvent, Observable, of, startWith, Subscription} from 'rxjs';\nimport {filter, map, take} from 'rxjs/operators';\nimport shortHash from 'shorthash2';\nimport {DataModel} from './classes/data-model';\nimport {BotonMantenimiento, ColumnaIcons, ColumnaTabla, OpcionSeleccionada, SeccionesBotonesMantenimiento} from './interfaces';\nimport {tipoValorFuncion, TipoValorFuncion} from './interfaces/global/no-export';\nimport {MatRowKeyboardSelectionDirective} from './mat-row-keyboard-selection.directive';\nimport {TablaMantenimientoColumnDefsComponent} from './tabla-mantenimiento-column-defs/tabla-mantenimiento-column-defs.component';\nimport {TablaMantenimientoMenuComponent} from './tabla-mantenimiento-menu/tabla-mantenimiento-menu.component';\nimport {buscarEnArray, capitalizarTexto, formatearFecha, getBrowserName} from './tabla-mantenimiento.functions';\nimport {TablaMantenimientoService} from './tabla-mantenimiento.service';\nimport {TableUtil} from './table-util';\nimport {SelectionModel} from '@angular/cdk/collections';\nimport {ActivatedRoute, NavigationEnd, Router} from \"@angular/router\";\n\nexport interface MantenimientoFilaExtraData {\n template?: TemplateRef<any>;\n esVisible?(item?: any): boolean;\n}\n\ntype TiposControlBusqueda ='query' | 'simple' | '';\n@UntilDestroy({ checkProperties: true })\n@Component({\n selector: 'jvs-tabla-mantenimiento',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n MatCheckboxModule,\n MatDividerModule,\n MatIconModule,\n MatMenuModule,\n MatPaginatorModule,\n MatRippleModule,\n MatSortModule,\n MatTableModule,\n MatTooltipModule,\n ReactiveFormsModule,\n TablaMantenimientoColumnDefsComponent,\n MatBadgeModule,\n TablaMantenimientoMenuComponent,\n MatRowKeyboardSelectionDirective,\n ],\n templateUrl: './tabla-mantenimiento.component.html',\n styleUrls: ['./tabla-mantenimiento.component.scss'],\n host: {\n class: 'jvs-tabla-mantenimiento',\n },\n animations: [\n trigger('detailExpand', [\n state('collapsed', style({height: '0px', minHeight: '0'})),\n state('expanded', style({height: '*'})),\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n ]),\n trigger('fadeInUp', [\n transition(':enter', [\n style({\n transform: 'translateY(20px)',\n opacity: 0\n }),\n animate(`400ms cubic-bezier(0.35, 0, 0.25, 1)`, style({\n transform: 'translateY(0)',\n opacity: 1\n }))\n ])\n ]),\n ],\n providers: [\n {provide: MAT_PAGINATOR_DEFAULT_OPTIONS, useValue: {formFieldAppearance: 'outline'}}\n ]\n})\nexport class TablaMantenimientoComponent<T> implements OnInit, AfterContentInit, OnChanges {\n static nextId = 0;\n @HostBinding()\n readonly id = `jvs-tabla-mantenimiento-id-${TablaMantenimientoComponent.nextId++}`;\n\n readonly router = inject(Router);\n readonly route = inject(ActivatedRoute);\n\n get templateBotonesComunes(): BotonMantenimiento[] {\n return this.tablaMantenimientoService.templateBotonesComunes;\n };\n get templateColumnasTabla(): ColumnaTabla<any>[] {\n return this.tablaMantenimientoService.templateColumnasTabla;\n };\n\n @Input() dataSuscription: Observable<any> | undefined ;\n @Input({required: true}) objThis: any;\n @Input({required: true}) nombreColeccion: any;\n @Input() ctrlBusquedaValue = '';\n @Input() ctrlBusquedaPlaceholder = 'Buscar...';\n @Input() filtroCampos = true;\n @Input() paginador = true;\n @Input() esTabla = true;\n @Input() readOnly: boolean | 'permitirSeleccion' = false;\n @Input() filaExtraHeader: MantenimientoFilaExtraData | any;\n @Input() filaFooter = false;\n @Input() botonesCRUD = 'CUD';\n @Output() dblclickItem = new EventEmitter();\n @Input() objBotonesCRUD: BotonMantenimiento[] = [\n {tipo: 'nuevo', sinCondicion: true},\n {tipo: 'editar'},\n {tipo: 'eliminar'},\n ];\n @Input() classSeleccionado = ['elemento-seleccionado', /*'!bg-primary-activo','text-primary-contrast', */ 'mat-elevation-z8', /*'dark:!bg-primary-dark-activo',*/ 'border-y-2 border-primary-contrast', 'font-bold', 'text-2xl'];\n // @Input() classAnulado = ['line-through', 'text-red', 'italic'];\n @Input() classAnulado = ['elemento-anulado', /*'line-through', */'text-red-900', 'bg-red-200'];\n @Input() campoAnulado: any = null;\n @Input() campoAnuladoMensaje: any = null;\n @Output() opcionSelecionada = new EventEmitter();\n @Output() opcBusqueda = new EventEmitter();\n @Output() accionRecargar = new EventEmitter();\n\n\n @Input() set selectionModel(val: SelectionModel<any>) {\n this.objSeleccionado = val;\n }\n @Output() selectionModelChange = new EventEmitter<SelectionModel<any>>();\n\n isRecargarUsed = false;\n @Input() filaExtraTemplate: TemplateRef<any> | undefined;\n @ViewChild(MatPaginator) paginator!: MatPaginator;\n @ViewChild(MatSort) sort!: MatSort;\n @Input() exportarExcel = true;\n // MIO\n @Input() pageSize = 25;\n @Input() pageSizeOptions = [5, 10, 25, 50, 100, 500, 1000];\n @Output() dataSourceChange: EventEmitter<any> = new EventEmitter();\n\n @Output() resultados = new EventEmitter<any>();\n dataSource = new MatTableDataSource(); // or whatever type of datasource you have\n // this is where the magic happens:\n @ViewChild(MatTable, {static: false}) table!: MatTable<T>;\n @ContentChildren(MatColumnDef, {descendants: true}) columnDefs!: QueryList<MatColumnDef>;\n\n componenteCargadoTotalmente = false;\n\n\n\n /////////////////////\n paginacion = {\n pageSize: 25,\n pageSizeOptions: <number[]>[],\n pageCurrent: <any>null,\n pageIndex: 0,\n pageLength: null,\n };\n // All that's left is to add them to the table ourselves:\n ignorarDerechos = false;\n @Input() derechosActuales: any = null;\n // listaCRUD: BotonMantenimiento[] = [];\n @ViewChildren(MatRow, {read: ElementRef}) rows!: QueryList<ElementRef<HTMLTableRowElement>>;\n @ViewChild(MatFooterRow, {read: ElementRef}) rowFooter!: ElementRef<HTMLTableRowElement>;\n mouseEvent$: Subscription | undefined;\n overlayRef: OverlayRef | undefined;\n @ViewChild('userMenu') userMenu!: TemplateRef<any>;\n // FILTRO BUSQUEDA\n opcFiltroActual = {};\n\n protected readonly capitalizarTexto = capitalizarTexto;\n\n\n _seleccionado: any = {};\n\n cCampoBusqueda = new FormControl('');\n chkLista = new DataModel();\n constructor(\n private fb: FormBuilder,\n public overlay: Overlay,\n public viewContainerRef: ViewContainerRef,\n protected tablaMantenimientoService: TablaMantenimientoService,\n private cdRef: ChangeDetectorRef\n ) {\n // this._seleccionado[this.nombreColeccion] = null;\n }\n\n _ctrlBusqueda: TiposControlBusqueda = '';\n\n get ctrlBusqueda() {\n return this._ctrlBusqueda;\n }\n\n @Input() set ctrlBusqueda(val: TiposControlBusqueda) {\n if (val == '') {\n val = 'simple';\n }\n this._ctrlBusqueda = val;\n }\n\n // @Input() leyenda;\n private _leyenda: { text: string, class?: string } | undefined = undefined;\n\n get leyenda(): { text: string, class?: string } | undefined {\n return this._leyenda;\n }\n\n @Input() set leyenda(val: { text: string, class?: string } | string) {\n if (typeof val == 'string') {\n this._leyenda = {text: val};\n }\n else {\n this._leyenda = val;\n }\n }\n\n // @Input() idTabla: string[];\n private _idTabla: string[] = [];\n\n get idTabla(): string[] {\n return this._idTabla;\n }\n\n @Input({required: true}) set idTabla(val: string[] | string) {\n if (Array.isArray(val)) {\n this._idTabla = val;\n }\n else {\n this._idTabla.push(val);\n }\n }\n\n private _columnasTabla: ColumnaTabla<any>[] = [];\n\n get columnasTabla(): ColumnaTabla<any>[] {\n return this._columnasTabla ?? [];\n }\n\n @Input() set columnasTabla(val: ColumnaTabla<any>[]) {\n const reemplazarConTemplate = (listaInicial: ColumnaTabla<any>[] = []) => {\n listaInicial.forEach((btnActual, idx) => {\n const btnEnTemplate = buscarEnArray(this.templateColumnasTabla, 'property', btnActual.property);\n if (btnEnTemplate) {\n listaInicial[idx] = {\n ...btnEnTemplate,\n ...btnActual\n };\n }\n if (listaInicial[idx].type == 'text') {\n if (!listaInicial[idx].text) {\n listaInicial[idx].text = {\n cssStyle: {}\n };\n }\n else if (!listaInicial[idx].text.cssStyle) {\n listaInicial[idx].text.cssStyle = {};\n }\n listaInicial[idx].text.cssStyle = {...listaInicial[idx].text.cssStyle};\n }\n else if (listaInicial[idx].type == 'estado') {\n const mutar: ColumnaIcons<any> = {\n ...listaInicial[idx],\n type: 'icons',\n iconsDef: {\n soloIcono: true,\n iconSize: '16px',\n items: [\n // {\n // icon: 'roundToggleOff', contentCss: 'text-gray-400',\n // esVisible: (row) => row['iCredDepenTareaEstado'] == 0\n // },\n // {\n // icon: 'roundToggleOn', contentCss: 'text-green-600',\n // esVisible: (row) => row['iCredDepenTareaEstado'] == 1\n // },\n ]\n },\n };\n if (listaInicial[idx].estados) {\n listaInicial[idx].estados.forEach((estado: any) => {\n if (Array.isArray(mutar.iconsDef.items)) {\n mutar.iconsDef.items.push({\n icon: estado.icon , contentCss: estado.cssClasses,\n esVisible: (row) => row[listaInicial[idx].property] == estado.estado,\n })\n }\n });\n }\n listaInicial[idx] = mutar;\n }\n\n if (btnActual.type == 'custom') {\n\n listaInicial[idx].datosExtra = {\n ...listaInicial[idx].datosExtra,\n tabla_mantenimiento_config_visibleAlias: listaInicial[idx].visible == undefined ? true : listaInicial[idx].visible,\n }\n listaInicial[idx].visible = false\n }\n });\n return listaInicial;\n };\n this._columnasTabla = val ? reemplazarConTemplate(val):[];\n }\n\n // @Input() botonesMenu: BotonMantenimiento[] = [];\n private _botonesMenu: SeccionesBotonesMantenimiento = {\n crud: undefined,\n principal: [],\n izquierda: [],\n derecha: [],\n secundario: [],\n inferior: [],\n };\n\n get botonesMenu(): SeccionesBotonesMantenimiento {\n return this._botonesMenu;\n }\n\n get botonesMenuFinal(): SeccionesBotonesMantenimiento {\n const nuevoBotonesMenu: SeccionesBotonesMantenimiento = this.botonesMenu;\n\n // Iteramos sobre cada sección de botones\n Object.keys(nuevoBotonesMenu).forEach(seccion => {\n nuevoBotonesMenu[seccion] = nuevoBotonesMenu[seccion]?.filter((boton: BotonMantenimiento) => {\n if (this.readOnly) {\n if (boton.subItems) {\n boton.subItems = boton.subItems.filter((subItem: BotonMantenimiento) => subItem.ignorarReadOnly === true);\n return boton.subItems.length < 1;\n }\n return boton.ignorarReadOnly === true;\n }\n return true;\n }); // Filtramos los botones nulos\n });\n\n return nuevoBotonesMenu;\n }\n\n @Input() set botonesMenu(val: SeccionesBotonesMantenimiento) {\n const reemplazarConTemplate: any = (listaInicial: BotonMantenimiento[] = []) =>\n listaInicial.map((btnActual: BotonMantenimiento) => {\n const btnEnTemplate = buscarEnArray(this.templateBotonesComunes, 'tipo', btnActual.tipoTemplate ?? btnActual.tipo);\n if (btnEnTemplate) {\n if (btnActual.tipoTemplate && !btnActual.label) {\n btnEnTemplate.label = undefined;\n }\n if (btnActual.subItems) {\n return { ...btnEnTemplate, ...btnActual, seccion: this.nombreColeccion, subItems: reemplazarConTemplate(btnActual.subItems) };\n }\n return { ...btnEnTemplate, ...btnActual, seccion: this.nombreColeccion };\n }\n return btnActual;\n });\n\n if (val?.crud) {\n this.objBotonesCRUD = this.templateBotonesComunes\n .filter(obj => ['nuevo', 'editar', 'eliminar'].includes(obj.tipo))\n .map(obj => val.crud?.find(o => o.tipo === obj.tipo) ?? obj);\n\n }\n\n\n Object.keys(val).forEach(btnKey => {\n if (val[btnKey]) {\n val[btnKey] = reemplazarConTemplate(val[btnKey]);\n }\n });\n\n this._botonesMenu = {...this._botonesMenu, ...val};\n }\n\n get listaMenuCompleto(): BotonMantenimiento[] {\n let menuTotal: BotonMantenimiento[] = [];\n menuTotal = menuTotal.concat(this.botonesMenu.izquierda ?? []);\n menuTotal = menuTotal.concat(this.botonesMenu.crud ?? []);\n menuTotal = menuTotal.concat(this.botonesMenu.principal ?? []);\n menuTotal = menuTotal.concat(this.botonesMenu.derecha ?? []);\n menuTotal = menuTotal.concat(this.botonesMenu.secundario ?? []);\n menuTotal = menuTotal.concat(this.botonesMenu.inferior ?? []);\n return menuTotal;\n }\n\n get objVisibleColumns() {\n return this.columnasTabla.filter(column => {\n if (column.noMostrar != undefined) {\n column.noMostrarEnLista = column.noMostrar;\n }\n return !tipoValorFuncion(column.noMostrarEnLista, false)\n }).filter(column => {\n // SECCION MODIFICADOR\n if (this.filaExtraTemplate) {\n column.sort = false;\n }\n // Fin SECCION MODIFICADOR\n\n column.visible = tipoValorFuncion(column.visible, true);\n if (!column.visible && column.esVisible != undefined) {\n column.visible = column.esVisible();\n }\n return column.visible;\n });\n }\n\n get visibleColumns() {\n return this.objVisibleColumns.map(column => column.property);\n }\n\n get tieneCheckbox() {\n return this.columnasTabla && this.columnasTabla.length > 0 && this.columnasTabla.find(col => col.type === 'checkbox') || false;\n }\n\n get buscarItemSeleccionado(): any {\n const dRet = this.dataSource.data.find(itm => this._seleccionado === this.propiedadSeleccion(itm));\n return dRet ?? null;\n }\n\n get objSeleccionado() {\n return this.buscarItemSeleccionado; // ?? this.objThis?.['seleccionados']?.[this.nombreColeccion];\n }\n set objSeleccionado(val: any) {\n\n // if (val) {\n this.seleccionarItem(val, true);\n // }\n /* if (!this.objThis) {\n this.objThis = {};\n }\n if (!this.objThis['seleccionados']) {\n this.objThis['seleccionados'] = {};\n }\n this.objThis['seleccionados'][this.nombreColeccion] = val;*/\n }\n get idsSeleccionado(): string {\n return <string>this.chkLista.generarLista();\n }\n\n idTablaValor(data: any): string {\n if (data) {\n if (this.idTabla.length < 1) {\n return shortHash(JSON.stringify({data, claseFinal: undefined}))\n }\n return this.idTabla.map(d => data[d]).join('-');\n }\n return '';\n }\n\n @Input() condicionesClaseFila = (item: any): any[] => [];\n @Input() rowTooltip = (item: any): string => '';\n @Input() soloIconos? :TipoValorFuncion<boolean> = false;\n\n ngOnInit(): void {\n this.router.events.pipe(\n filter(event => event instanceof NavigationEnd),\n startWith(null),\n map(() => this.getDeepestRoute(this.route)),\n map(route => route.snapshot.data),\n untilDestroyed(this)\n ).subscribe(data => {\n console.log(data);\n this.derechosActuales = data['derechos'];\n this.ignorarDerechos = data['ignorarDerechos'] ?? false;\n });\n // this.sharedService.dataRutaActual$.pipe(untilDestroyed(this)).subscribe(datRouteData => {\n // if (datRouteData) {\n // this.derechosActuales = datRouteData['derechos'];\n // if (!this.ignorarDerechos) {\n // this.ignorarDerechos = datRouteData['ignorarDerechos'] ?? false;\n // }\n // }\n // });\n this.paginacion.pageSize = this.pageSize;\n this.paginacion.pageSizeOptions = this.pageSizeOptions;\n this.actualizarCrud();\n\n this.agregarBotonesExportacion();\n if (this.dataSuscription) {\n this.dataSuscription.subscribe(res => {\n if (res) {\n if (this.objSeleccionado) {\n console.log('SELECCIONADO');\n if (this.idTabla && this.idTabla.length > 0) {\n console.log('ID TABLA');\n const arrayData = this.idTabla.map(d => this.objSeleccionado[d]);\n console.log(arrayData);\n const busqueda = buscarEnArray(res, this.idTabla, arrayData);\n console.log(busqueda);\n\n if (busqueda) {\n console.log(busqueda);\n this.objSeleccionado = busqueda;\n }\n }\n else {\n\n console.log('eLSE ID TABLA');\n const dataStr = res.find((itm: any) => shortHash(JSON.stringify({\n ...itm, claseFinal: undefined\n })) == shortHash(JSON.stringify({...this.objSeleccionado, claseFinal: undefined})));\n if (dataStr) {\n this.objSeleccionado = dataStr;\n }\n }\n }\n this.setData(res);\n }\n });\n }\n this.isRecargarUsed = this.accionRecargar.observed;\n }\n\n ngAfterContentInit() {\n this.componenteCargadoTotalmente = true;\n this.cdRef.detectChanges();\n this.columnDefs.forEach(columnDef => {\n this.table.addColumnDef(columnDef);\n const col = this.columnasTabla.find(col => col.property == columnDef.name);\n if (col && col.type == 'custom') {\n col.visible = col.datosExtra?.tabla_mantenimiento_config_visibleAlias ?? col.visible;\n delete col.datosExtra?.tabla_mantenimiento_config_visibleAlias;\n if (Object.keys(col.datosExtra).length < 1) {\n delete col.datosExtra;\n }\n }\n });\n // console.log(a);\n if (this.ctrlBusquedaValue) {\n this.cCampoBusqueda.setValue(this.ctrlBusquedaValue);\n }\n this.table.renderRows(); // 🔹 Refrescar la tabla\n\n\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['botonesCRUD'] || changes['ctrlBusqueda']) {\n this.actualizarCrud();\n }\n if (changes['botonesMenu']) {\n this.agregarBotonesExportacion();\n }\n }\n\n trackByFn = (index: number, item: any): string => {\n return this.propiedadSeleccion(item);\n };\n\n\n getDeepestRoute(route: ActivatedRoute): ActivatedRoute {\n while (route.firstChild) {\n route = route.firstChild;\n }\n return route;\n }\n\n\n agregarBotonesExportacion() {\n const fnAddBoton = (condicion: boolean, tipoBoton: string) => {\n if (condicion) {\n const objBoton = buscarEnArray(this.templateBotonesComunes, 'tipo', tipoBoton);\n const objBotonEnInferior = buscarEnArray((this.botonesMenu?.inferior ?? []), 'tipo', tipoBoton);\n\n if (!objBotonEnInferior && objBoton) {\n if (!this.botonesMenu.inferior) {\n this.botonesMenu.inferior = [];\n }\n this.botonesMenu?.inferior?.push({\n ...objBoton,\n esIndependiente: true,\n });\n }\n }\n }\n fnAddBoton((this.exportarExcel && this.esTabla), 'exportar_excel');\n }\n\n actualizarCrud() {\n const operacionesCRUD: Record<'C' | 'U' | 'D', string> = {\n 'C': 'nuevo',\n 'U': 'editar',\n 'D': 'eliminar'\n };\n\n const agregarBoton = (tipo: string) => {\n let botonComun = buscarEnArray(this.templateBotonesComunes, 'tipo', tipo);\n if (botonComun) {\n const personalizado = buscarEnArray(this.objBotonesCRUD, 'tipo', tipo);\n const boton = personalizado ? {...botonComun, ...personalizado}:botonComun;\n if (this.botonesMenu.crud) {\n this.botonesMenu.crud.push(boton);\n }\n }\n };\n\n const lstCRUD = (this.botonesMenu.crud ?? []).map(i => i.tipo);\n\n if (lstCRUD.length > 0) {\n for (const operacion of (this.botonesCRUD || \"\").toUpperCase()) {\n const operacionKey = operacion as 'C' | 'U' | 'D';\n if (lstCRUD.includes(operacion) && operacionesCRUD[operacionKey]) {\n agregarBoton(operacionesCRUD[operacionKey]);\n }\n }\n }\n else {\n this.botonesMenu.crud = [];\n for (const operacion of (this.botonesCRUD || \"\").toUpperCase()) {\n const operacionKey = operacion as 'C' | 'U' | 'D';\n if (operacionesCRUD[operacionKey]) {\n agregarBoton(operacionesCRUD[operacionKey]);\n }\n }\n }\n\n if (this.ctrlBusqueda === 'simple') {\n this.cCampoBusqueda.valueChanges.pipe(\n untilDestroyed(this),\n ).subscribe(value => this.onFilterChange(value ?? ''));\n }\n\n if (this.botonesCRUD === '-') {\n this.botonesMenu.crud = [];\n }\n }\n classFila(item: any) {\n let claseFinal: any[] = [];\n if (this.campoAnulado && (item[this.campoAnulado] == 1)) {\n claseFinal = claseFinal.concat(this.classAnulado);\n }\n if (this.objSeleccionado == item || this.esSeleccionActual(item)) {\n claseFinal = claseFinal.concat(this.classSeleccionado);\n }\n claseFinal = claseFinal.concat(this.condicionesClaseFila(item));\n item.claseFinal = claseFinal;\n return claseFinal;\n }\n\n procesarRowTooltip(item: any) {\n let txtTooptip = [];\n if (this.campoAnuladoMensaje && (item[this.campoAnulado] == 1)) {\n txtTooptip.push(item[this.campoAnuladoMensaje]);\n // return item[this.campoAnuladoMensaje];\n }\n if (this.rowTooltip) {\n txtTooptip.push(this.rowTooltip(item));\n }\n return txtTooptip.filter(itm => !!itm).join(' | ');\n }\n\n subItemsActivos(btn: any, item: any) {\n return btn.subItems.filter((sub: any) => !sub.esVisible || sub.esVisible(item)).length > 0;\n }\n\n get noData() {\n if (!this.esTabla){\n return of(true);\n }\n if (!this.dataSource || !this.table) {\n return of(true);\n }\n // @ts-ignore\n return this.table.dataSource?.connect().pipe(map(data => data?.length === 0));\n }\n\n onFilterChange(value: string) {\n if (!this.dataSource) {\n return;\n }\n value = value.trim();\n value = value.toLowerCase();\n this.dataSource.filter = value;\n }\n\n toggleColumnVisibility(column: any, event: any) {\n event.stopPropagation();\n event.stopImmediatePropagation();\n column.visible = !column.visible;\n }\n\n cargarData(retorno = false) {\n\n if (this.ctrlBusqueda && this.ctrlBusqueda == 'simple') {\n if (!retorno) {\n this.dataSource.paginator = this.paginator;\n this.dataSource.sort = this.sort;\n }\n\n const aS: any = this.dataSource?.data;\n\n if (\n (!aS || !aS[0] || !aS[0]['iTotalRegistros'])\n ) {\n return false;\n }\n }\n const dPag: any = {\n iPaginacion: 1,\n iPageSize: this.paginator?.pageSize ? this.paginator?.pageSize:this.paginacion.pageCurrent?.pageSize,\n iPageNumber: (this.paginator?.pageIndex ? this.paginator?.pageIndex:0) + 1,\n };\n if (this.ctrlBusqueda && this.ctrlBusqueda == 'query') {\n dPag['cCampoBusqueda'] = this.cCampoBusqueda.value;\n }\n if (retorno) {\n return dPag;\n }\n this.resultados.emit(dPag);\n this.opcBusqueda.emit(dPag);\n }\n\n // FIN FILTRO BUSQUEDA INTEGRAR\n\n setData(data: any) {\n this.dataSource = new MatTableDataSource(data);\n this.dataSource.sortingDataAccessor = (item: any, property) => {\n const dColumn: ColumnaTabla<any> | null = buscarEnArray(this.columnasTabla, 'property', property);\n if (dColumn) {\n switch (dColumn.sortType ?? dColumn.type) {\n case 'number':\n return item[property] * 1;\n case 'date':\n return formatearFecha(item[property]);\n }\n }\n if (item) {\n switch (property) {\n case 'fromDate':\n return new Date(item['fromDate']);\n default:\n return item[property];\n }\n }\n };\n // this.paginator.length = (data && data[0] && data[0]['iTotalRegistros']) ? data[0]['iTotalRegistros'] : data.length;\n // this.dataSource.paginator = this.paginator;\n if (this.sort) {\n this.dataSource.sort = this.sort;\n }\n // this.dataSource.filter = this.filter;\n this.dataSourceChange.emit(this.dataSource);\n // this.dataSource.paginator.pageSize = this.paginacion.pageSize;\n if (data && data[0] && data[0]['iPageNumber']) {\n this.paginacion.pageIndex = (data && data[0] && data[0]['iPageNumber']) ? data[0]['iPageNumber']:0;\n }\n this.paginacion.pageLength = (data && data[0] && data[0]['iTotalRegistros']) ? data[0]['iTotalRegistros']:data.length;\n if (data && data[0] && !data[0]['iTotalRegistros']) {\n this.dataSource.paginator = this.paginator;\n }\n\n if (this.tieneCheckbox) {\n this.chkLista.agregarControles(data, this.tieneCheckbox.property, !this.tieneCheckbox.chkFieldPersistente, (this.tieneCheckbox.chkField ?? null), this.tieneCheckbox.chkFieldSeparador);\n }\n }\n\n botonDisabled(btn: BotonMantenimiento, item: any) {\n let disabled;\n if (!btn.sinCondicion) {\n if (btn.estaDeshabilitado) {\n disabled = btn.estaDeshabilitado(item, this);\n }\n else {\n disabled = !this.objSeleccionado;\n }\n }\n if (!disabled && !btn.esIndependiente && !btn.ignorarDerecho && this.derechosActuales) {\n // if (!this.usuarioService.esEquipoJVSoft()) {\n disabled = !(this.derechosActuales[btn.cDerechoCodigo ?? btn.tipo]);\n // }\n }\n return disabled;\n }\n\n propiedadSeleccion(item: any): string {\n return `${this.nombreColeccion}_${this.idTablaValor(item)}`;\n }\n\n esSeleccionActual(item: any): boolean {\n return this._seleccionado === this.propiedadSeleccion(item);\n }\n\n seleccionarItem(item?: any, forzado: boolean = false): void {\n const idItem = this.propiedadSeleccion(item);\n if (forzado) {\n this._seleccionado = idItem;\n }\n else {\n this._seleccionado = this._seleccionado === idItem ? null:idItem;\n }\n this.selectionModelChange.emit(this.objSeleccionado);\n\n /*if (!this.objThis) {\n this.objThis = {};\n }\n if (!this.objThis['seleccionados']) {\n this.objThis['seleccionados'] = {};\n }\n this.objThis['seleccionados'][this.nombreColeccion] = this._seleccionado;*/\n }\n\n opcMenu(item: any, objMenu: OpcionSeleccionada, modal = null, retorno = false) {\n\n // console.log(this.buscarItemSeleccionado);\n // console.log(objMenu);\n // let salir = this.readOnly;\n // if (salir && this.readOnly === 'permitirSeleccion' && ['ver', 'seleccionar'].includes(objMenu.tipo)) {\n // salir = false;\n // }\n // if (salir) {\n // return false;\n // }\n\n // console.warn(objMenu);\n if (objMenu.tipo == 'exportar_excel' && this.exportarExcel) {\n /*\n TableUtil.exportArrayToExcel(this.dataSource.data.map(x => {\n const columnasNumeros = this.objVisibleColumns.filter(column => ['money', 'number'].includes(column.type));\n columnasNumeros.forEach(columna => {\n x[columna.property] *= 1;\n });\n return x;\n }), 'TEST');\n */\n const dataGeneradoPorHtml = TableUtil.getWorkBook('tabla_' + this.nombreColeccion, []);\n const objetosExtraidos = this.dataSource.filteredData.map((objeto: any, idx) =>\n this.objVisibleColumns.reduce((acumulador, columna) => {\n // console.log(propiedad);\n const nColumn = (columna.labelLista ?? columna.label).toUpperCase().replace('<BR>', ' ');\n switch (columna.type) {\n case 'date':\n // acumulador[nColumn] = (new DatePipe('es-PE')).transform(objeto[columna.property], 'dd/MM/yyyy' /*'yyyy-MM-dd'*/);\n // new Date(dateString.replace(/(\\d{2}:\\d{2}:\\d{2}):\\w{2}/, '$1'));\n // acumulador[nColumn] = new Date(objeto[columna.property].replace(/(\\d{2}:\\d{2}:\\d{2}):\\w{2}/, '$1'));\n // acumulador[nColumn] = formatearFechaFormato(objeto[columna.property], 'dd/MM/yyyy');\n // acumulador[nColumn] = formatearFechaTimezone(objeto[columna.property]);\n // acumulador[nColumn] = new Date(objeto[columna.property]);\n let fecha = objeto[columna.property];\n if (objeto[columna.property]) {\n fecha = new Date(objeto[columna.property].replace(/(\\d{2}:\\d{2}:\\d{2}):\\w{2}/, '$1'));\n if (getBrowserName() == 'chrome') {\n fecha = moment(objeto[columna.property], true).add(2, 'minutes').toDate();\n }\n }\n acumulador[nColumn] = fecha;\n // acumulador[nColumn] = objeto[columna.property];\n break;\n case 'number':\n case 'money':\n acumulador[nColumn] = objeto[columna.property] * 1;\n break;\n default:\n if (columna.property == 'numeracion_automatica') {\n acumulador[nColumn] = idx + 1;\n }\n else {\n if (columna.type == 'custom') {\n // dataGeneradoPorHtml.sheetToJson\n acumulador[nColumn] = dataGeneradoPorHtml.sheetToJson[idx][columna.label];\n }\n else {\n if (columna.type == 'text' && columna.innerHTML) {\n const convertirHtmlATexto = (html: string): string => {\n const elementoTemporal = document.createElement('div');\n elementoTemporal.innerHTML = html;\n return elementoTemporal.textContent || \"\";\n }\n acumulador[nColumn] = convertirHtmlATexto(columna.innerHTML(objeto));\n }\n else if (columna.transformar) {\n acumulador[nColumn] = columna.transformar(objeto);\n }\n else {\n acumulador[nColumn] = objeto[columna.property];\n }\n }\n }\n break;\n }\n return acumulador;\n }, {} as Record<string, any>)\n );\n\n // TableUtil.exportTableToExcel('tabla_' + this.nombreColeccion);\n // console.log(objetosExtraidos);\n TableUtil.exportArrayToExcel(objetosExtraidos, this.nombreColeccion);\n\n // this.tableExporter.exportTable('xlsx', {fileName: 'JVSoftExport'});\n }\n\n const opAdic: any = {seccion: this.nombreColeccion};\n if (item) {\n opAdic['item'] = item;\n }\n opAdic['itemSeleccionado'] = this.objSeleccionado;\n\n if (this.tieneCheckbox) {\n // itmsSeleccionados = this.formulariosGlobalesService.generarLista(this.nombreColeccion);\n opAdic['idsSeleccionados'] = this.idsSeleccionado;\n }\n // opAdic['refTabla'] = this;\n objMenu = {...objMenu, ...opAdic};\n if (retorno) {\n return objMenu;\n }\n // console.warn(objMenu);\n this.opcionSelecionada.emit(objMenu);\n return 1;\n }\n\n emitirResultados(evento = {}) {\n this.opcFiltroActual = {...this.opcFiltroActual, ...evento, ...this.cargarData(true)};\n // console.warn('resultadosFILTRO', this.opcFiltroActual);\n this.resultados.emit(this.opcFiltroActual);\n }\n abrirMenuContextual({x, y}: MouseEvent, user: any) {\n // console.log(user);\n // this.opcMenu(user, {tipo: 'ver'});\n this.objSeleccionado = user;\n this.cerrarMenuContextual();\n const positionStrategy = this.overlay.position().flexibleConnectedTo({x, y}).withPositions([\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n ]);\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.close(),\n });\n\n this.overlayRef.attach(new TemplatePortal(this.userMenu, this.viewContainerRef, {\n // $implicit: user\n item: user,\n }));\n\n this.mouseEvent$ = fromEvent<MouseEvent>(document, 'click').pipe(\n filter(event => {\n const clickTarget = event.target as HTMLElement;\n return !!this.overlayRef && !this.overlayRef.overlayElement.contains(clickTarget);\n }),\n take(1),\n ).subscribe(() => this.cerrarMenuContextual());\n\n }\n\n cerrarMenuContextual() {\n this.mouseEvent$ && this.mouseEvent$.unsubscribe();\n if (this.overlayRef) {\n this.overlayRef.dispose();\n this.overlayRef = undefined;\n }\n }\n\n emitirAccionRecargar() {\n if (!this.idTabla) {\n this.objSeleccionado = null;\n }\n this.accionRecargar.emit(this.opcFiltroActual);\n // this.accionRecargar.emit({ ...this.opcFiltroActual, ...{seleccionado: this.objSeleccionado}});\n }\n\n protected readonly tipoValorFuncion = tipoValorFuncion;\n}\n\n","<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ón\"\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º</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","import {Component, Input, OnInit} from '@angular/core';\nimport {NgForOf, NgIf} from '@angular/common';\n\n@Component({\n selector: 'jvs-luces-navidad, [jvsLucesNavidad]',\n templateUrl: './luces-navidad.component.html',\n imports: [\n NgIf,\n NgForOf\n ],\n styleUrls: ['./luces-navidad.component.scss']\n})\nexport class LucesNavidadComponent implements OnInit {\n\t@Input() enProduccion = true;\n\t@Input() forzarMuestra = false;\n\tmesActual = new Date().getMonth() + 1;\n\n\tconstructor() {\n\t}\n\n\tngOnInit(): void {\n\t}\n\n}\n","<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","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {FormControl} from '@angular/forms';\nimport {MatRipple} from '@angular/material/core';\nimport {MatIcon} from '@angular/material/icon';\n\n@Component({\n selector: 'div[matSuffix][matSuffixSearchButton]',\n imports: [\n MatRipple,\n MatIcon\n ],\n templateUrl: './mat-suffix-search-button.component.html',\n host: {\n class: 'flex items-center justify-start',\n }\n})\nexport class MatSuffixSearchButtonComponent {\n @Input({required: true}) fControl: any;\n @Output() eventLimpiar: EventEmitter<any> = new EventEmitter();\n @Output() eventBuscar: EventEmitter<any> = new EventEmitter();\n\n get control(): FormControl {\n return this.fControl;\n }\n\n emitirClick() {\n if (this.control.value) {\n this.control.reset();\n this.eventLimpiar.emit(true);\n }\n else {\n this.eventBuscar.emit(true);\n }\n }\n\n}\n","<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","import {AfterViewInit, Component, EventEmitter, Input, OnInit, Output, QueryList, ViewChildren} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatMenu, MatMenuModule} from '@angular/material/menu';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatRippleModule} from '@angular/material/core';\nimport {MatTooltipModule} from '@angular/material/tooltip';\nimport {BotonMenu} from './menu.interface';\n\n@Component({\n selector: 'jvs-menu',\n standalone: true,\n imports: [\n CommonModule,\n MatMenuModule,\n MatIconModule,\n MatRippleModule,\n MatTooltipModule,\n ],\n templateUrl: './menu.component.html',\n})\nexport class MenuComponent implements OnInit, AfterViewInit {\n @Input() cssBoton?: string;\n @Input() title?: string;\n @Input() disabled: boolean = false;\n @Input() itemSeleccion?: string;\n @Input() menu: BotonMenu[] = [];\n @Output() action: EventEmitter<string> = new EventEmitter<string>();\n\n @ViewChildren(MatMenu) matmenus!: QueryList<MatMenu>;\n\n menuItems: string[] = [];\n yet: boolean = false;\n _submenus: BotonMenu[][] = []; // 🔥 Tipo explícito como Array de Array de BotonMenu\n\n get submenus(): BotonMenu[][] {\n return this._submenus.filter(() => true); // Mantiene la estructura, aunque no hace filtro real\n }\n\n ngOnInit(): void {\n this.createSubmenus(this.menu, 's0', 1);\n this.reindex();\n }\n\n ngAfterViewInit(): void {\n // Previene errores de Angular al repintar el menú\n setTimeout(() => {\n this.yet = true;\n });\n }\n\n onClick(value: string): void {\n this.action.emit(value);\n }\n\n getMenu(index: number): MatMenu | null {\n return index >= 0 && this.matmenus ? this.matmenus.get(index) ?? null:null;\n }\n\n reindex(): void {\n // Asigna el índice del ítem del menú\n this._submenus.forEach((menu: BotonMenu[]) => {\n menu.forEach((item: BotonMenu) => {\n if (item.idxOpcionCalc !== -1) {\n item.idxOpcionCalc = this.menuItems.indexOf(item.valorSeleccion ?? '');\n }\n });\n });\n }\n\n createSubmenus(menu: BotonMenu[], prefix: string, count: number): void {\n this.menuItems.push(prefix);\n\n this._submenus.push(\n menu.map((item, index): BotonMenu => ({\n ...item,\n valorSeleccion: item.subItems ? `${prefix}${index}`:item.valorSeleccion,\n idxOpcionCalc: item.subItems ? 0:-1,\n }))\n );\n\n // Llamada recursiva para crear submenús\n menu.forEach((item, index) => {\n if (item.subItems) {\n this.createSubmenus(item.subItems, `${prefix}${index}`, count + 1);\n }\n });\n }\n}\n","<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","export function generarArbol(params: {\n lista: any[],\n campoId: string,\n campoIdPadre: string,\n idPadre?: any,\n strChildren?: string,\n campoOrden?: string\n}): any[] {\n const {\n lista,\n campoId,\n campoIdPadre,\n idPadre = null,\n strChildren = 'hijos',\n campoOrden,\n } = params;\n\n const hijos = lista.filter(n => n[campoIdPadre] === idPadre);\n\n if (campoOrden) {\n hijos.sort((a, b) => {\n const va = a[campoOrden];\n const vb = b[campoOrden];\n\n if (typeof va === 'string' && typeof vb === 'string') {\n return va.localeCompare(vb);\n }\n if (typeof va === 'number' && typeof vb === 'number') {\n return va - vb;\n }\n return 0;\n });\n }\n\n return hijos.map(n => ({\n ...n,\n [strChildren]: generarArbol({\n lista,\n campoId,\n campoIdPadre,\n idPadre: n[campoId],\n strChildren,\n campoOrden,\n }),\n }));\n}\n","import {Component, EventEmitter, Input, OnInit, Output, TemplateRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatTreeModule} from '@angular/material/tree';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatCheckboxModule} from '@angular/material/checkbox';\nimport {FormsModule} from '@angular/forms';\nimport {Observable} from 'rxjs';\nimport {NestedTreeControl} from '@angular/cdk/tree';\nimport {generarArbol} from './lista-arbol.functions';\nimport {DataModel} from '@jvsoft/utils';\nimport {SelectionModel} from '@angular/cdk/collections';\nimport shortHash from 'shorthash2';\n\n@Component({\n selector: 'jvs-lista-arbol',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n MatTreeModule,\n MatIconModule,\n MatCheckboxModule,\n ],\n templateUrl: './lista-arbol.component.html',\n})\nexport class ListaArbolComponent<T = any> implements OnInit {\n @Input() listaSuscription!: Observable<T[]>;\n @Input() nombreColeccion!: string;\n @Input() checkbox = false;\n @Input() expandirRecursivo = false;\n @Input() checkboxSeleccionados: T[] = [];\n\n @Input() campoId!: string;\n @Input() campoIdPadre!: string;\n @Input() campoStr!: string;\n @Input() campoOrden?: string;\n @Input() strHijoContainer = 'hijos';\n @Input() menuContextual?: { abrirMenuContextual: Function; cerrarMenuContextual: Function };\n @Input() classSeleccionado: string[] = ['bg-primary-activo', 'text-primary', 'dark:!bg-primary-dark-activo'];\n @Input() classAnulado: string[] = ['line-through', 'text-red', 'italic'];\n @Input() campoAnulado?: string | null;\n @Input() templateTxtData?: TemplateRef<any>;\n @Input() condicionMostrar?: (item: T) => boolean;\n @Input() condicionesClaseFila: (item: T) => string[] = () => [];\n\n @Input() set selectionModel(val: SelectionModel<any>) {\n this.objSeleccionado = val;\n }\n @Output() selectionModelChange = new EventEmitter<SelectionModel<any>>();\n\n @Output() seleccionado = new EventEmitter<any>();\n @Output() listaCheck = new EventEmitter<T[]>();\n @Output() listaCheckObj = new EventEmitter<Record<string, any>>();\n\n private _idTabla: string[] = [];\n\n get idTabla(): string[] {\n return this._idTabla;\n }\n\n @Input({required: true}) set idTabla(val: string[] | string) {\n if (Array.isArray(val)) {\n this._idTabla = val;\n }\n else {\n this._idTabla.push(val);\n }\n }\n\n get buscarItemSeleccionado(): any {\n const dRet = this.listaOriginal.find(itm => this._seleccionado === this.propiedadSeleccion(itm));\n return dRet ?? null;\n }\n get objSeleccionado() {\n return this.buscarItemSeleccionado; // ?? this.objThis?.['seleccionados']?.[this.nombreColeccion];\n }\n\n set objSeleccionado(val: any) {\n this.seleccionarItem(val, true);\n }\n\n chkLista = new DataModel();\n listaMuestraArbol: T[] = [];\n listaOriginal: T[] = [];\n\n treeControl = new NestedTreeControl((node: any) => node[this.strHijoContainer]);\n\n _seleccionado: any = {};\n\n ngOnInit(): void {\n this.listaSuscription.subscribe(res => {\n if (res) {\n this.listaOriginal = res;\n const listaAs = generarArbol({\n lista: res,\n campoId: this.campoId,\n campoIdPadre: this.campoIdPadre,\n idPadre: null,\n strChildren: this.strHijoContainer,\n campoOrden: this.campoOrden\n });\n this.listaMuestraArbol = [];\n setTimeout(() => {\n this.listaMuestraArbol = listaAs;\n }, 1);\n if (this.checkbox) {\n this.chkLista.agregarControles(res, this.campoId);\n this.checkboxSeleccionados.forEach((chkSel: any) => {\n this.chkLista.setState(chkSel[this.campoId], true);\n });\n this.emitirModeloCheck();\n }\n }\n });\n }\n\n\n idTablaValor(data: any): string {\n if (data) {\n if (this.idTabla.length < 1) {\n return shortHash(JSON.stringify({data, claseFinal: undefined}))\n }\n return this.idTabla.map(d => data[d]).join('-');\n }\n return '';\n }\n\n propiedadSeleccion(item: any): string {\n return `${this.nombreColeccion}_${this.idTablaValor(item)}`;\n }\n\n esSeleccionActual(item: any): boolean {\n return this._seleccionado === this.propiedadSeleccion(item);\n }\n seleccionarItem(item?: any, forzado: boolean = false): void {\n const idItem = this.propiedadSeleccion(item);\n if (forzado) {\n this._seleccionado = idItem;\n }\n else {\n this._seleccionado = this._seleccionado === idItem ? null:idItem;\n }\n this.selectionModelChange.emit(this.objSeleccionado);\n this.seleccionado.emit(this.objSeleccionado);\n }\n\n\n hasChild = (_: number, node: any) => !!node[this.strHijoContainer] && node[this.strHijoContainer].length > 0;\n\n\n opcMenu(v: any) {\n // console.warn(v);\n // console.warn(this.objSeleccionado);\n const opAdic: any = {seccion: this.nombreColeccion};\n opAdic['itemSeleccionado'] = this.objSeleccionado;\n // v = {...v, ...opAdic};\n // this.seleccionado.emit(v);\n }\n\n emitirModeloCheck() {\n this.listaCheck.emit(<any[]>this.chkLista.generarLista());\n this.listaCheckObj.emit(<object>this.chkLista.generarLista('object'));\n }\n\n\n cambiarPadre(checkActual: T, estado: boolean): void {\n const parentId = (checkActual as any)[this.campoIdPadre];\n if (parentId) {\n const padreAct = this.listaMuestraArbol.find((itm: any) => itm[this.campoId] == parentId);\n if (padreAct) {\n this.chkLista.setState(parentId, this.hijosActivos('checked', padreAct) || this.hijosActivos('indeterminate', padreAct));\n this.cambiarPadre(padreAct, estado);\n }\n }\n }\n\n cambiarCheck(checkActual: T, estado: boolean): void {\n if (this.hasChild(0, checkActual)) {\n (this.treeControl.getChildren(checkActual) ?? []).forEach((vas: any) => {\n this.cambiarCheck(vas, estado);\n });\n }\n this.cambiarPadre(checkActual, estado);\n this.chkLista.setState((checkActual as any)[this.campoId], estado);\n }\n\n hijosActivos(tipo: 'checked' | 'indeterminate', checkActual: T): boolean {\n let totalHijos = 0;\n let cantActivo = 0;\n if (this.hasChild(0, checkActual)) {\n (this.treeControl.getChildren(checkActual) ?? []).forEach((vas: any) => {\n if (this.chkLista.getState(vas[this.campoId] + '')) {\n cantActivo++;\n }\n totalHijos++;\n });\n }\n\n switch (tipo) {\n case 'checked':\n return (cantActivo == totalHijos);\n case 'indeterminate':\n if (cantActivo == totalHijos) {\n this.chkLista.setState((checkActual as any)[this.campoId], true);\n }\n return ((cantActivo > 0) && (cantActivo != totalHijos));\n }\n return false;\n }\n\n classFila(item: any) {\n let claseFinal: any[] = [];\n if (this.campoAnulado && (item[this.campoAnulado] == 1)) {\n claseFinal = claseFinal.concat(this.classAnulado);\n }\n if (this.objSeleccionado == item || this.esSeleccionActual(item)) {\n claseFinal = claseFinal.concat(this.classSeleccionado);\n }\n claseFinal = claseFinal.concat(this.condicionesClaseFila(item));\n item.claseFinal = claseFinal;\n return claseFinal;\n }\n}\n\n","<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","// export {};\n// import './src/styles.scss';\n\nexport * from './dialog-flotante';\n// export * from './progress-spinner';\nexport * from './tabla-mantenimiento';\nexport * from './tabla-mantenimiento/components/progress-bar';\nexport * from './luces-navidad';\nexport * from './mat-suffix-search-button';\nexport * from './menu';\nexport * from './lista-arbol/public-api'\n\n\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i3","i4","i5","i4.ProgressBarComponent","i4.NoSanitizePipe","i5.ZeroFillPipe","i6","i7","i8","i9.ColumnTypeTextComponent","i10.ColumnTypeMoneyComponent","i11.ColumnTypeNumberComponent","i12.ColumnTypeDateComponent","i13.ColumnTypeIconsComponent","i14.ColumnTypeSinoComponent","i15.ColumnTypeProgressbarComponent","i3.TablaMantenimientoService","i10","i11","i13","DataModel"],"mappings":"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"}
1
+ {"version":3,"file":"jvsoft-components.mjs","sources":["../../../projects/components/dialog-flotante/dialog-flotante.component.ts","../../../projects/components/dialog-flotante/dialog-flotante.component.html","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento.functions.ts","../../../projects/components/tabla-mantenimiento/classes/data-model.ts","../../../projects/components/tabla-mantenimiento/interfaces/global/no-export.ts","../../../projects/components/tabla-mantenimiento/mat-row-keyboard-selection.directive.ts","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type.component.ts","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type.component.html","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-number/column-type-number.component.ts","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-number/column-type-number.component.html","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-date/column-type-date.component.ts","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-date/column-type-date.component.html","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-sino/column-type-sino.component.ts","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-sino/column-type-sino.component.html","../../../projects/components/tabla-mantenimiento/components/progress-bar/progress-bar.component.ts","../../../projects/components/tabla-mantenimiento/components/progress-bar/progress-bar.component.html","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-progressbar/column-type-progressbar.component.ts","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-progressbar/column-type-progressbar.component.html","../../../projects/components/tabla-mantenimiento/pipes/no-sanitize.pipe.ts","../../../projects/components/tabla-mantenimiento/pipes/zero-fill.pipe.ts","../../../projects/components/tabla-mantenimiento/components/progress-bar/public-api.ts","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-text/column-type-text.component.ts","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-text/column-type-text.component.html","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-money/column-type-money.component.ts","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-money/column-type-money.component.html","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-icons/column-type-icons.component.ts","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type-icons/column-type-icons.component.html","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type.module.ts","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/tabla-mantenimiento-column-defs.component.ts","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-column-defs/tabla-mantenimiento-column-defs.component.html","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-menu/tabla-mantenimiento-menu.component.ts","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento-menu/tabla-mantenimiento-menu.component.html","../../../projects/components/tabla-mantenimiento/table-util.ts","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento.service.ts","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento.component.ts","../../../projects/components/tabla-mantenimiento/tabla-mantenimiento.component.html","../../../projects/components/luces-navidad/luces-navidad.component.ts","../../../projects/components/luces-navidad/luces-navidad.component.html","../../../projects/components/mat-suffix-search-button/mat-suffix-search-button.component.ts","../../../projects/components/mat-suffix-search-button/mat-suffix-search-button.component.html","../../../projects/components/menu/menu.component.ts","../../../projects/components/menu/menu.component.html","../../../projects/components/lista-arbol/lista-arbol.functions.ts","../../../projects/components/lista-arbol/lista-arbol.component.ts","../../../projects/components/lista-arbol/lista-arbol.component.html","../../../projects/components/index.ts","../../../projects/components/jvsoft-components.ts"],"sourcesContent":["import { booleanAttribute, Component, computed, input, output } from '@angular/core';\nimport { MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { BotonDialog } from './dialog-flotante.interface';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CommonModule } from '@angular/common';\nimport { CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';\nimport { MatRipple } from '@angular/material/core';\nimport { MatDivider } from '@angular/material/divider';\n\n@Component({\n selector: '[jvsDialogFlotante]',\n imports: [\n CommonModule,\n MatIconModule,\n MatDialogModule,\n CdkDrag,\n CdkDragHandle,\n MatRipple,\n MatDivider,\n\n ],\n templateUrl: './dialog-flotante.component.html',\n styleUrls: ['./dialog-flotante.component.scss'],\n host: {\n class: 'jvs-dialog-flotante',\n }\n})\nexport class DialogFlotanteComponent {\n cssClases = input<Record<string, string>>({});\n sinTitulo = input(false, { transform: booleanAttribute });\n sinBarraDeAccion = input(false, { transform: booleanAttribute });\n btnCerrarBarra = input(false, { transform: booleanAttribute });\n iconoTitulo = input<string | undefined>(undefined);\n matDialogRefActual = input<MatDialogRef<any> | undefined>(undefined);\n\n // Inputs crudos para botones (string | boolean | object)\n btnGuardarInput = input<BotonDialog | boolean | string | undefined>(undefined, { alias: 'btnGuardar' });\n btnCerrarInput = input<BotonDialog | boolean | string | undefined>(undefined, { alias: 'btnCerrar' });\n\n btnGuardarClick = output<any>();\n btnCerrarClick = output<any>();\n\n private readonly defaultBtnCerrar: BotonDialog = { label: 'CERRAR', class: 'text-gray-700 border-gray-700' };\n private readonly defaultBtnGuardar: BotonDialog = {\n label: 'GUARDAR', class: 'text-blue-700 border-blue-700', icono: 'roundSave'\n };\n\n // Computed signals para normalizar la configuración de botones\n btnCerrar = computed(() => {\n const val = this.btnCerrarInput();\n // Si es false, null o undefined -> NO MOSTRAR\n if (val === false || val === null || val === undefined) return undefined;\n // Si es string vacío (atributo presente sin valor) o true -> MOSTRAR DEFAULT\n if (val === '' || val === true) return this.defaultBtnCerrar;\n // Si es string con valor -> MOSTRAR DEFAULT CON LABEL\n if (typeof val === 'string') return { ...this.defaultBtnCerrar, label: val };\n // Si es objeto -> USAR EL OBJETO\n return val as BotonDialog;\n });\n\n btnGuardar = computed(() => {\n const val = this.btnGuardarInput();\n // Si es false, null o undefined -> NO MOSTRAR\n if (val === false || val === null || val === undefined) return undefined;\n // Si es string vacío (atributo presente sin valor) o true -> MOSTRAR DEFAULT\n if (val === '' || val === true) return this.defaultBtnGuardar;\n // Si es string con valor -> MOSTRAR DEFAULT CON LABEL\n if (typeof val === 'string') return { ...this.defaultBtnGuardar, label: val };\n // Si es objeto -> USAR EL OBJETO\n return val as BotonDialog;\n });\n\n guardarDialogo() {\n this.btnGuardarClick.emit(true);\n }\n\n cerrarDialogo() {\n this.btnCerrarClick.emit(true);\n const ref = this.matDialogRefActual();\n if (ref) {\n if (ref.componentInstance?.validarCerrarDialog) {\n ref.componentInstance?.validarCerrarDialog();\n } else {\n ref.close('Cerrado GDLG');\n }\n }\n }\n}\n","<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ón 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ón 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","export function buscarEnArray<T extends Record<string, any>>(\n coleccion: T[],\n idBuscar: string | string[],\n dato: any\n): T | null {\n if (!Array.isArray(coleccion) || coleccion.length === 0) return null; // 🔹 Validación de entrada\n\n return Array.isArray(idBuscar)\n ? coleccion.find(item => idBuscar.every((campo, idx) => item[campo] === dato[idx])) || null\n :coleccion.find(item => item[idBuscar] === dato) || null;\n}\n\nexport function formatearFecha(val: string, hora = '00:00:00') {\n if (val) {\n if (val.length <= 10) {\n val = val + ' ' + hora;\n }\n return new Date(val);\n }\n return val;\n}\n\nexport function esNumero(value: any) {\n return !isNaN(Number(value));\n}\n\nexport function capitalizarTexto(texto: string) {\n texto = texto.replace(/_/g, ' ');\n texto = texto.replace(/-/g, ' ');\n const textoCortado = texto.split(' ');\n\n const nText: string[] = [];\n textoCortado.forEach(textActual => {\n nText.push(textActual.charAt(0).toUpperCase() + textActual.slice(1));\n });\n return nText.join(' ');\n}\n\nexport function getBrowserName() {\n const agent = window.navigator.userAgent.toLowerCase();\n switch (true) {\n case agent.indexOf('edge') > -1:\n return 'edge';\n case agent.indexOf('opr') > -1 && !!(<any>window).opr:\n return 'opera';\n case agent.indexOf('chrome') > -1 && !!(<any>window).chrome:\n return 'chrome';\n case agent.indexOf('trident') > -1:\n return 'ie';\n case agent.indexOf('firefox') > -1:\n return 'firefox';\n case agent.indexOf('safari') > -1:\n return 'safari';\n default:\n return 'other';\n }\n}\n","import {AbstractControl, FormControl, FormControlOptions, FormGroup, ValidationErrors, ValidatorFn, Validators} from '@angular/forms';\nimport {esNumero} from '../tabla-mantenimiento.functions';\n\nexport class DataModel {\n public modelosChk: { [key: string]: boolean | any } = {}; // Usar any para valores dinámicos\n\n public checkbox: ForCheckboxModel;\n\n constructor() {\n this.checkbox = new ForCheckboxModel(this);\n }\n\n generarId(row: any, campoValor: string[] | string, separador = '') {\n if (typeof campoValor == 'string') {\n campoValor = [campoValor];\n }\n return campoValor.map(data => row[data]).join(separador);\n }\n\n // Agrega controles al objeto modelosChk\n agregarControles(lista: any[], idLista: string, limpiar = true, campoValor: string[] | string | null = null, campoValorSeparador = '') {\n\n if (limpiar) {\n this.modelosChk = {};\n }\n\n const asignarValor = (dat: any, idLista: string, campoValor: string, key?: string) => {\n if (!key) {\n key = dat[idLista] + (campoValor.includes('.') ? '':`.${campoValor}`);\n }\n const mat = campoValor.match(/^([in])[A-Z][a-zA-Z]+/);\n if (mat) {\n this.modelosChk[key] = dat[campoValor] * 1;\n }\n else {\n this.modelosChk[key] = dat[campoValor];\n }\n }\n\n\n lista.forEach(dat => {\n if (campoValor === null) {\n // Caso 1: Sin campoValor, se asigna false\n this.modelosChk[dat[idLista]] = false;\n }\n else if (typeof campoValor === 'string') {\n // Caso 2: campoValor es un string\n asignarValor(dat, idLista, campoValor, dat[idLista]);\n }\n else if (campoValorSeparador) {\n const idStr = this.generarId(dat, campoValor, campoValorSeparador);\n // Caso 2: campoValor es un string\n asignarValor(dat, idLista, '.', idStr);\n }\n else {\n // Caso 3: campoValor es un array de strings\n campoValor.forEach(data => asignarValor(dat, idLista, data));\n }\n });\n }\n\n // Establece el estado de un índice\n setState(idx: string, state: boolean) {\n this.modelosChk[idx] = state;\n }\n\n // Obtiene el estado de un índice\n getState(idx: string): boolean | any {\n return this.modelosChk[idx];\n }\n\n getDataMultiple(idx: string) {\n const camposMod = Object.keys(this.modelosChk).filter(key => key.split('.')[0] == idx);\n const vRet: any = {};\n camposMod.forEach(key => {\n vRet[key.split('.')[1]] = this.modelosChk[key];\n });\n return vRet;\n }\n\n // Genera una lista basada en el estado de los índices\n generarLista(tipoRetorno: 'array' | 'object' | null = null, esCampoNumerico = false): string | object | any[] {\n const strLista: string[] = [];\n const objLista: { [key: string]: boolean | any } = {};\n Object.keys(this.modelosChk).forEach(key => {\n if ((esCampoNumerico && esNumero(this.modelosChk[key])) ||\n (this.modelosChk[key])\n ) {\n strLista.push(key);\n objLista[key] = this.modelosChk[key];\n }\n });\n if (tipoRetorno === 'array') {\n return strLista;\n }\n if (tipoRetorno === 'object') {\n return objLista;\n }\n return strLista.join(',');\n }\n\n generarFormGroupFromModelosChk(tipo?: string): FormGroup {\n const formGroupObj: { [key: string]: FormControl } = {};\n let validadores: ValidatorFn | ((control: AbstractControl) => ValidationErrors | null)[] | FormControlOptions | null | undefined = []\n if (tipo == 'number') {\n validadores = [\n Validators.required,\n Validators.min(1)\n ]\n }\n Object.keys(this.modelosChk).forEach(key => {\n formGroupObj[key] = new FormControl(this.modelosChk[key], validadores);\n });\n return new FormGroup(formGroupObj);\n\n // return this.formBuilder.group(formGroupObj);\n }\n}\n\nclass ForCheckboxModel {\n private modeloCheck: DataModel;\n\n constructor(modeloCheck: DataModel) {\n this.modeloCheck = modeloCheck;\n }\n\n get cantidadActivos() {\n return Object.values(this.modeloCheck.modelosChk).filter(Boolean).length;\n }\n\n get existenActivados() {\n return this.cantidadActivos > 0;\n }\n\n get todosActivos() {\n const total = Object.keys(this.modeloCheck.modelosChk).length;\n const activos = this.cantidadActivos;\n return activos > 0 && total === activos;\n }\n\n get algunosActivos() {\n const total = Object.keys(this.modeloCheck.modelosChk).length;\n const activos = this.cantidadActivos;\n return activos > 0 && total !== activos;\n }\n\n establecerTodos(activo: boolean) {\n Object.keys(this.modeloCheck.modelosChk).forEach(idx => this.modeloCheck.modelosChk[idx] = activo);\n }\n}\n","export type TipoValorFuncion<T> = T | ((...param: any) => T);\n\nexport function tipoValorFuncion<T>(datoParam: TipoValorFuncion<T>, defaultValue?: T, ...param: any[]): T | undefined {\n if (datoParam === undefined || datoParam === null) {\n return defaultValue; // Retorna el valor por defecto si es undefined\n }\n if (typeof datoParam === 'function') {\n return (datoParam as (...args: any) => T)(...param);\n }\n return datoParam;\n}\n","import {Directive, ElementRef, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output} from '@angular/core';\nimport {MatTable, MatTableDataSource} from '@angular/material/table';\nimport {Subject, takeUntil} from 'rxjs';\n\n@Directive({\n selector: '[matRowKeyboardSelection]'\n})\nexport class MatRowKeyboardSelectionDirective implements OnInit, OnDestroy {\n\n private rows!: HTMLElement[];\n private renderedData!: any[];\n\n @Input('matRowKeyboardSelection') tabla!: MatTable<any>; // Entrada: Referencia a la tabla\n @Input() rowModel: any; // Entrada: Modelo de fila actual\n @Output() seleccionarSiguiente = new EventEmitter(); // Salida: Evento al seleccionar siguiente\n\n private unsubscriber$ = new Subject();\n\n constructor(private el: ElementRef) {}\n\n ngOnInit(): void {\n // Asignar tabindex si no está definido\n if (this.el.nativeElement.tabIndex < 0) {\n this.el.nativeElement.tabIndex = 0;\n }\n\n // Obtener la fuente de datos de la tabla\n const dataSource = this.tabla.dataSource as MatTableDataSource<any>;\n\n // Suscribirse a los cambios en los datos\n dataSource.connect().pipe(takeUntil(this.unsubscriber$)).subscribe(data => {\n this.renderedData = data;\n this.rows = Array.from(<NodeListOf<HTMLElement>>this.getTableRows());\n });\n }\n\n ngOnDestroy(): void {\n // Finalizar la suscripción al destruir la directiva\n this.unsubscriber$.next(null);\n this.unsubscriber$.complete();\n }\n\n @HostListener('keydown', ['$event']) onKeydown(event: KeyboardEvent): void {\n var element = event.target as HTMLElement;\n if (element.tagName === \"INPUT\") {\n event.stopPropagation();\n }\n else {\n const currentIndex = this.renderedData.findIndex(row => row === this.rowModel);\n const eRef = event.target as HTMLElement;\n this.rows = this.rows.filter(elem => elem.hasAttribute('id'));\n const arrayFilas = Array.from(this.rows);\n\n const fElem = arrayFilas.filter(elem => elem.id == eRef.id).pop();\n const cElemIdx = arrayFilas.findIndex(elem => elem == fElem);\n\n let newRow: HTMLElement | undefined;\n\n // Controlar las teclas presionadas\n switch (event.key) {\n case 'ArrowDown':\n newRow = this.rows[cElemIdx + 1];\n break;\n case 'ArrowUp':\n newRow = this.rows[cElemIdx - 1];\n break;\n case 'Enter':\n case ' ':\n this.seleccionarSiguiente.next(this.renderedData[currentIndex]);\n event.preventDefault();\n break;\n }\n\n // Enfocar la nueva fila seleccionada\n if (newRow) {\n newRow.classList.add('estaFocus');\n newRow.focus();\n }\n }\n }\n\n private getTableRows(): NodeListOf<HTMLElement> | undefined {\n let el = this.el.nativeElement;\n\n // Recorrer los elementos padres hasta encontrar la tabla\n while (el && el.parentNode) {\n el = el.parentNode;\n\n // Verificar si es una tabla de material\n if (el.tagName && el.tagName.toLowerCase() === 'mat-table' || el.hasAttribute('mat-table')) {\n return el.querySelectorAll('mat-row, tr[mat-row]');\n }\n }\n\n return undefined;\n }\n}\n","import {AfterViewInit, Component, Input, OnInit, Optional, TemplateRef, ViewChild} from '@angular/core';\nimport {MatColumnDef, MatTable} from '@angular/material/table';\nimport {ColumnaTabla} from '../../interfaces';\n\n@Component({\n selector: 'jvs-column-type',\n templateUrl: './column-type.component.html',\n standalone: false,\n})\nexport class ColumnTypeComponent<T> implements OnInit, AfterViewInit {\n @Input({required: true}) column!: ColumnaTabla<T>;\n @ViewChild(MatColumnDef, {static: true}) columnDef!: MatColumnDef;\n @Input() columnTitleTemplate?: TemplateRef<any>; // Permite personalizar títulos\n @Input() columnFooterTemplate?: TemplateRef<any>; // Permite personalizar footer\n @Input() cellTemplate!: TemplateRef<any>; // Se usa para el contenido de las celdas\n\n constructor(@Optional() private table: MatTable<T>) {\n }\n\n ngOnInit() {\n }\n\n ngAfterViewInit() {\n if (this.columnDef) {\n this.table.addColumnDef(this.columnDef);\n }\n }\n\n accionClick(item: T, event: Event) {\n if (this.column.click) {\n this.column.click(item);\n event.stopPropagation();\n }\n return false;\n }\n}\n","<ng-container matColumnDef=\"{{ column.property }}\">\n <!-- Definición 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","import {Component, Input} from '@angular/core';\nimport {ColumnaNumber} from '../../../interfaces';\nimport {ColumnTypeComponent} from '../column-type.component';\n\n\n@Component({\n selector: 'jvs-column-type-number',\n standalone: false,\n templateUrl: './column-type-number.component.html'\n})\nexport class ColumnTypeNumberComponent<T> extends ColumnTypeComponent<T> {\n @Input({required: true}) override column: ColumnaNumber<T> = {} as ColumnaNumber<T>;\n\n}\n","\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ón 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","import {Component, Input} from '@angular/core';\nimport {ColumnaDate} from '../../../interfaces';\nimport {ColumnTypeComponent} from '../column-type.component';\n\n@Component({\n selector: 'jvs-column-type-date',\n standalone: false,\n templateUrl: './column-type-date.component.html'\n})\nexport class ColumnTypeDateComponent<T> extends ColumnTypeComponent<T> {\n @Input({required: true}) override column: ColumnaDate<T> = {} as ColumnaDate<T>;\n}\n","<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ón 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","import {Component, inject, Input} from '@angular/core';\n\nimport {MatIconRegistry} from '@angular/material/icon';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {ColumnaYesNo} from '../../../interfaces';\nimport {ColumnTypeComponent} from '../column-type.component';\nimport {MatTable} from '@angular/material/table';\n\nconst YES_ICON = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M21 7L9 19l-5.5-5.5l1.41-1.41L9 16.17L19.59 5.59z\"/></svg>\n`;\nconst NO_ICON = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M19 6.41L17.59 5L12 10.59L6.41 5L5 6.41L10.59 12L5 17.59L6.41 19L12 13.41L17.59 19L19 17.59L13.41 12z\"/></svg>\n`;\n\n@Component({\n selector: 'jvs-column-type-sino',\n standalone: false,\n templateUrl: './column-type-sino.component.html'\n})\nexport class ColumnTypeSinoComponent<T> extends ColumnTypeComponent<T> {\n @Input({required: true}) override column: ColumnaYesNo<T> = {} as ColumnaYesNo<T>; // 🟢 Solución\n\n\n constructor() {\n super(inject(MatTable)); // 🟢 Llamar al constructor del padre\n const iconRegistry = inject(MatIconRegistry);\n const sanitizer = inject(DomSanitizer);\n\n // Note that we provide the icon here as a string literal here due to a limitation in\n // Stackblitz. If you want to provide the icon from a URL, you can use:\n // `iconRegistry.addSvgIcon('thumbs-up', sanitizer.bypassSecurityTrustResourceUrl('icon.svg'));`\n iconRegistry.addSvgIconLiteralInNamespace('yes_no', 'yes', sanitizer.bypassSecurityTrustHtml(YES_ICON));\n iconRegistry.addSvgIconLiteralInNamespace('yes_no', 'no', sanitizer.bypassSecurityTrustHtml(NO_ICON));\n // iconRegistry.addSvgIconLiteral('yesIcon', sanitizer.bypassSecurityTrustHtml(YES_ICON));\n // iconRegistry.addSvgIconLiteral('noIcon', sanitizer.bypassSecurityTrustHtml(NO_ICON));\n }\n}\n","<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ón 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","import {Component, Input, OnInit} from '@angular/core';\nimport {CommonModule, DecimalPipe} from '@angular/common';\n\nexport interface EstilosBarra {\n\tvalorMaximo: number;\n\tclass?: string;\n\tstyle?: string;\n}\n\n@Component({\n selector: 'jvs-progress-bar',\n templateUrl: './progress-bar.component.html',\n imports: [\n CommonModule,\n DecimalPipe\n ],\n host: {\n class: 'jvs-progress-bar',\n }\n})\nexport class ProgressBarComponent implements OnInit {\n\n\t@Input() objThis: any;\n\t@Input() porcentaje = 0;\n\t@Input() textoCentrado = false;\n\n private _textoMostrar: string = '';\n get textoMostrar(): string { return this._textoMostrar; }\n\t@Input() set textoMostrar(val: string) { this._textoMostrar = val; }\n\n private _formatoNumero: string = '';\n get formatoNumero(): string { return this._formatoNumero; }\n\t@Input() set formatoNumero(val: string | undefined) { this._formatoNumero = val ?? '1.0-0'; }\n\n private _coloresValor: EstilosBarra[] = [];\n get coloresValor(): EstilosBarra[] { return this._coloresValor; }\n @Input() set coloresValor(val: EstilosBarra[] | undefined ) {\n if (!val || !Array.isArray(val)) {\n this._coloresValor = [\n {valorMaximo: 1, class: 'p-0'},\n {valorMaximo: 40, class: 'bg-red-400 text-red-900'},\n // {valorMaximo: 35, class: 'bg-red-600 text-red-100'},\n {valorMaximo: 80, class: 'bg-yellow-600 text-yellow-100'},\n {valorMaximo: 100, class: 'bg-green-600 text-green-100'},\n ];\n }\n else {\n this._coloresValor = val;\n }\n }\n\n\tconstructor() { }\n\n\tngOnInit(): void {\n\t}\n\n\tcolorEstilo(): {style: string, class: string} {\n\t\tlet estiloFin = null;\n\t\tlet claseFin = null;\n\t\tlet encontro = false;\n\n\t\tthis.coloresValor = this.ordenarPorPropiedad(this.coloresValor, 'valorMaximo');\n\n\t\tthis.coloresValor.forEach(estilo => {\n\t\t\tif (!encontro && (this.porcentaje <= estilo.valorMaximo)) {\n\t\t\t\t// console.log(this.porcentaje, estilo, (this.porcentaje < estilo.valorMaximo));\n\t\t\t\tencontro = true;\n\t\t\t\testiloFin = estilo.style;\n\t\t\t\tclaseFin = estilo.class;\n\t\t\t}\n\t\t});\n\t\treturn {\n\t\t\tstyle: estiloFin ?? '',\n\t\t\tclass: claseFin ?? '',\n\t\t};\n\t}\n\n ordenarPorPropiedad(objData: any[], propiedad: string, numeros = false) {\n if (numeros) {\n return objData.sort((a, b) => a[propiedad] - b[propiedad]);\n }\n return objData.sort((a, b) => (a[propiedad] > b[propiedad]) ? 1:((b[propiedad] > a[propiedad]) ? -1:0));\n }\n\n}\n","<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","import {Component, Input} from '@angular/core';\nimport {ColumnaProgress} from '../../../interfaces';\nimport {ColumnTypeComponent} from '../column-type.component';\n\n@Component({\n selector: 'jvs-column-type-progressbar',\n standalone: false,\n templateUrl: './column-type-progressbar.component.html'\n})\nexport class ColumnTypeProgressbarComponent<T> extends ColumnTypeComponent<T> {\n @Input({required: true}) override column: ColumnaProgress<T> = {} as ColumnaProgress<T>;\n\n}\n","<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ón 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","import {Pipe, PipeTransform} from '@angular/core';\nimport {DomSanitizer, SafeHtml} from '@angular/platform-browser';\n\n@Pipe({ name: 'noSanitize' })\nexport class NoSanitizePipe implements PipeTransform {\n\tconstructor(private domSanitizer: DomSanitizer) {\n\n\t}\n\ttransform(html: string): SafeHtml {\n\t\treturn this.domSanitizer.bypassSecurityTrustHtml(html);\n\t}\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n\tname: 'zeroFill',\n})\nexport class ZeroFillPipe implements PipeTransform {\n\n\ttransform(value: unknown, digitos: number, ...args: unknown[]) {\n\t\tlet s = value + '';\n\t\twhile (s.length < digitos) {\n\t\t\ts = '0' + s;\n\t\t}\n\t\treturn s;\n\t}\n\n}\nexport function zeroFill(value: unknown, digitos: number, ...args: unknown[]) {\n\treturn new ZeroFillPipe().transform(value, digitos, args);\n}\n","export * from './progress-bar.component';\n// export * from './progress-spinner.service';\n","import {Component, Input} from '@angular/core';\nimport {ColumnTypeComponent} from '../column-type.component';\nimport {ColumnaTexto} from '../../../interfaces';\n\n@Component({\n selector: 'jvs-column-type-text',\n templateUrl: './column-type-text.component.html',\n standalone: false,\n})\n\nexport class ColumnTypeTextComponent<T> extends ColumnTypeComponent<T> {\n @Input({required: true}) override column: ColumnaTexto<T> = {} as ColumnaTexto<T>; // 🟢 Solución\n\n // @ViewChild('titleTemplate', {static: true}) titleTemplateRef!: TemplateRef<any>;\n // @ViewChild('cellTemplate', {static: true}) cellTemplateRef!: TemplateRef<any>;\n}\n\n// export class ColumnTypeTextComponent implements OnInit, AfterViewInit {\n// @Input({required: true}) column!: ColumnaTexto<any>;\n// @ViewChild(MatColumnDef, {static: true}) columnDef!: MatColumnDef;\n//\n// constructor(\n// @Optional() public table: MatTable<any>,\n// ) {\n// }\n//\n// ngOnInit() {\n// }\n//\n// ngAfterViewInit() {\n// if (this.columnDef) {\n// this.table.addColumnDef(this.columnDef);\n// }\n// }\n//\n// accionClick(column: any, item: any, event: any) {\n// if (column.click) {\n// column.click(item);\n// event.stopPropagation();\n// }\n// return false;\n// }\n// }\n","<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ón 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","import {Component, Input} from '@angular/core';\nimport {ColumnaMoney} from '../../../interfaces';\nimport {ColumnTypeComponent} from '../column-type.component';\n\n@Component({\n selector: 'jvs-column-type-money',\n templateUrl: './column-type-money.component.html',\n standalone: false,\n})\nexport class ColumnTypeMoneyComponent<T> extends ColumnTypeComponent<T> {\n @Input({required: true}) override column: ColumnaMoney<T> = {} as ColumnaMoney<T>;\n\n\n value(row: any): number {\n return (this.column.transformar ? this.column.transformar(row):row[this.column.property]);\n }\n}\n","<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ón 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","import {Component, Input} from '@angular/core';\nimport {ColumnaIcons, IconsIcon} from '../../../interfaces';\nimport {ColumnTypeComponent} from '../column-type.component';\n\n@Component({\n selector: 'jvs-column-type-icons',\n standalone: false,\n templateUrl: './column-type-icons.component.html'\n})\nexport class ColumnTypeIconsComponent<T> extends ColumnTypeComponent<T> {\n @Input({required: true}) override column: ColumnaIcons<T> = {} as ColumnaIcons<T>;\n\n obtenerItems(columna: any, row: any): IconsIcon[] {\n if (typeof columna.items === 'function') {\n return columna.items(row);\n }\n return columna.items;\n }\n}\n","<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ón 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","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatTableModule} from '@angular/material/table';\nimport {MatSortModule} from '@angular/material/sort';\nimport {ColumnTypeNumberComponent} from './column-type-number/column-type-number.component';\nimport {ColumnTypeDateComponent} from './column-type-date/column-type-date.component';\nimport {MatRipple} from '@angular/material/core';\nimport {MatTooltipModule} from '@angular/material/tooltip';\nimport {MatIcon} from '@angular/material/icon';\nimport {ColumnTypeSinoComponent} from './column-type-sino/column-type-sino.component';\nimport {ColumnTypeProgressbarComponent} from './column-type-progressbar/column-type-progressbar.component';\nimport {NoSanitizePipe} from '../../pipes/no-sanitize.pipe';\nimport {ZeroFillPipe} from '../../pipes/zero-fill.pipe';\nimport {ProgressBarComponent} from '../../components/progress-bar';\nimport {ColumnTypeTextComponent} from './column-type-text/column-type-text.component';\nimport {ColumnTypeMoneyComponent} from './column-type-money/column-type-money.component';\nimport {ColumnTypeIconsComponent} from './column-type-icons/column-type-icons.component';\nimport {ColumnTypeComponent} from './column-type.component';\n\n\n@NgModule({\n declarations: [\n ColumnTypeComponent,\n ColumnTypeTextComponent,\n ColumnTypeMoneyComponent,\n ColumnTypeNumberComponent,\n ColumnTypeDateComponent,\n ColumnTypeIconsComponent,\n ColumnTypeSinoComponent,\n ColumnTypeProgressbarComponent,\n ],\n imports: [\n CommonModule,\n MatTableModule,\n MatSortModule,\n MatTooltipModule,\n NoSanitizePipe,\n ZeroFillPipe,\n MatRipple,\n MatIcon,\n ProgressBarComponent,\n ],\n exports: [\n ColumnTypeTextComponent,\n ColumnTypeMoneyComponent,\n ColumnTypeNumberComponent,\n ColumnTypeDateComponent,\n ColumnTypeIconsComponent,\n ColumnTypeSinoComponent,\n ColumnTypeProgressbarComponent,\n ]\n})\nexport class ColumnTypeModule {\n}\n","import {AfterContentInit, ChangeDetectorRef, Component, ContentChildren, EventEmitter, Input, Optional, Output, QueryList, ViewChildren} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatColumnDef, MatTable, MatTableModule} from '@angular/material/table';\nimport {MatCheckboxModule} from '@angular/material/checkbox';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatRippleModule} from '@angular/material/core';\nimport {MatSortModule} from '@angular/material/sort';\nimport {MatTooltipModule} from '@angular/material/tooltip';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {ColumnaTabla} from '../interfaces/global';\nimport {DataModel} from '../classes/data-model';\nimport {ColumnTypeModule} from './column-type/column-type.module';\n\n@Component({\n selector: 'jvs-tabla-mantenimiento-column-defs',\n standalone: true,\n imports: [\n CommonModule,\n MatCheckboxModule,\n MatIconModule,\n MatRippleModule,\n MatSortModule,\n MatTableModule,\n MatTooltipModule,\n ReactiveFormsModule,\n FormsModule,\n ColumnTypeModule,\n\n ],\n templateUrl: './tabla-mantenimiento-column-defs.component.html',\n styleUrls: ['./tabla-mantenimiento-column-defs.component.scss']\n})\nexport class TablaMantenimientoColumnDefsComponent implements AfterContentInit {\n\n @Input() objThis: any;\n @Input() nombreColeccion: any;\n @Input() colDetalle!: ColumnaTabla<any>[];\n\n @Input() chkLista!: DataModel; // = new DataModel();\n @Output() chkListaChange = new EventEmitter<DataModel>();\n\n @ViewChildren(MatColumnDef) columnDefLocales!: QueryList<MatColumnDef>;\n @ContentChildren(MatColumnDef, {descendants: true}) columnDefEnSubComponentes!: QueryList<MatColumnDef>;\n\n\n constructor(\n @Optional() public table: MatTable<any>, private cdRef: ChangeDetectorRef,\n ) {\n }\n\n ngAfterContentInit() {\n if (this.table) {\n this.cdRef.detectChanges();\n this.columnDefEnSubComponentes.forEach(refCol => {\n this.table.addColumnDef(refCol);\n });\n this.columnDefLocales.forEach(refCol => {\n this.table.addColumnDef(refCol);\n });\n }\n }\n\n trackByProperty<T>(index: number, column: ColumnaTabla<T>) {\n return column.property;\n }\n\n}\n","<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","import {Component, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatMenu, MatMenuModule} from '@angular/material/menu';\nimport {BotonMantenimiento} from '../interfaces/global';\n\n@Component({\n selector: 'jvs-tabla-mantenimiento-menu',\n standalone: true,\n imports: [\n CommonModule,\n MatMenuModule,\n ],\n templateUrl: './tabla-mantenimiento-menu.component.html',\n styleUrls: ['./tabla-mantenimiento-menu.component.scss']\n})\nexport class TablaMantenimientoMenuComponent implements OnInit {\n @Input() objThis: any;\n @Input() nombreColeccion!: string;\n @Input() item: any;\n @Input() derechosActuales: any;\n // @Input() modalPrincipal;\n // @Input() botonDisabled = (btn: BotonMantenimiento, item: any) => [];\n\n @Output() opcionSelecionada = new EventEmitter();\n\n @ViewChild('menu', {static: true}) public menu!: MatMenu;\n @Input({required: true}) subItems!: BotonMantenimiento[];\n\n @Input({required: true}) botonTemplate!: TemplateRef<any>;\n\n constructor(\n ) {\n }\n\n ngOnInit(): void {\n }\n\n\n}\n","<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","import * as XLSX from 'xlsx';\n\nconst getFileName = (name: string) => {\n const timeSpan = new Date().toISOString();\n const sheetName = name || 'ExportResult';\n const fileName = `${sheetName}-${timeSpan}`;\n return {\n sheetName,\n fileName\n };\n};\nexport class TableUtil {\n static exportTableToExcelV2(targetTableElm: HTMLElement, name?: string) {\n const { sheetName, fileName } = getFileName(<string>name);\n console.log(targetTableElm);\n const wb = XLSX.utils.table_to_book(targetTableElm, {\n sheet: sheetName\n } as XLSX.Table2SheetOpts);\n XLSX.writeFile(wb, `${fileName}.xlsx`);\n }\n static exportTableToExcel(tableId: string, name?: string) {\n\n\n const { sheetName, fileName } = getFileName(<string>name);\n const targetTableElm = document.getElementById(tableId);\n console.log(targetTableElm);\n const wb = XLSX.utils.table_to_book(targetTableElm, {\n sheet: sheetName\n } as XLSX.Table2SheetOpts);\n // XLSX.writeFile(wb, `${fileName}.xlsx`);\n }\n\n static exportArrayToExcel(arr: any[], name?: string) {\n const { sheetName, fileName } = getFileName(<string>name);\n\n const wb = XLSX.utils.book_new();\n const ws = XLSX.utils.json_to_sheet(arr, {dateNF: 'dd/MM/yyyy'});\n XLSX.utils.book_append_sheet(wb, ws, sheetName);\n XLSX.writeFile(wb, `${fileName}.xlsx`);\n }\n\n static getWorkBook(htmlTableId: string, data: any[]) {\n const targetTableElm = document.getElementById(htmlTableId);\n const tableToSheet = XLSX.utils.table_to_sheet(targetTableElm, {raw: true});\n const jsonToSheet = XLSX.utils.json_to_sheet(data);\n const sheetToJson: any = XLSX.utils.sheet_to_json(tableToSheet);\n return {tableToSheet, jsonToSheet, sheetToJson};\n }\n}\n","import {Injectable} from '@angular/core';\nimport {BotonMantenimiento, ColumnaTabla} from './interfaces/global';\n\n\n@Injectable({\n providedIn: 'root',\n})\n\nexport class TablaMantenimientoService {\n\n get templateBotonesComunes(): BotonMantenimiento[] {\n return [\n {icono: 'roundAdd', tipo: 'nuevo', class: 'text-green-100 !bg-green-600', sinCondicion: true},\n {icono: 'roundEdit', tipo: 'editar', class: 'text-amber-900 !bg-amber-300'},\n {icono: 'roundDelete', tipo: 'eliminar', class: 'text-red-100 !bg-red-700'},\n {icono: 'roundDelete', tipo: 'eliminar_fila', class: 'text-red-100 !bg-red-700'},\n {icono: 'roundPrint', tipo: 'imprimir', class: '!bg-blue-100 text-blue-700'},\n {icono: 'roundDownload', tipo: 'descargar', class: '!bg-blue-100 text-blue-700'},\n {icono: 'roundFolder', tipo: 'ver_archivos', class: '!bg-green-100 text-green-700'},\n {icono: 'fa5FilePdf', tipo: 'exportar_pdf', label: 'Exportar a PDF', class: 'bg-pdf-light text-pdf'},\n {icono: 'fa5FileExcel', tipo: 'exportar_excel', label: 'Exportar a Excel', class: 'bg-excel-light text-excel'},\n {icono: 'fa5sFileExport', tipo: 'exportacion_avanzada', label: 'Exportación Avanzada', class: '!text-indigo-600 !bg-indigo-100'},\n {icono: 'icSave', tipo: 'guardar', class: '!text-indigo-100 !bg-indigo-600'},\n {icono: 'icCancel', tipo: 'cancelar', class: '!text-cyan-100 !bg-cyan-600'},\n {\n icono: 'roundFactCheck', tipo: 'seleccionar',\n class: 'text-blue-100 bg-blue-700 dark:text-blue-100 dark:bg-blue-700'\n },\n {icono: 'roundListAlt', tipo: 'detalle', class: 'text-blue-100 bg-blue-700 dark:text-blue-100 dark:bg-blue-700'},\n {icono: 'roundPublic', tipo: 'ver_mapa', class: 'text-blue-100 bg-blue-700 dark:text-blue-100 dark:bg-blue-700'},\n {icono: 'icCheck', tipo: 'activar',},\n {icono: 'icClose', tipo: 'desactivar',},\n {icono: 'fa5sLock', tipo: 'cerrar',},\n {icono: 'fa5sLockOpen', tipo: 'abrir',},\n ];\n }\n\n get templateColumnasTabla(): ColumnaTabla<any>[] {\n return [\n {label: '#', labelLista: 'Numeración', property: 'numeracion_automatica', type: 'numeracion_automatica'},\n ];\n }\n\n}\n","import {animate, state, style, transition, trigger} from '@angular/animations';\nimport {Overlay, OverlayRef} from '@angular/cdk/overlay';\nimport {TemplatePortal} from '@angular/cdk/portal';\nimport {CommonModule} from '@angular/common';\nimport {AfterContentInit, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, HostBinding, inject, Input, OnChanges, OnInit, Output, QueryList, SimpleChanges, TemplateRef, ViewChild, ViewChildren, ViewContainerRef} from '@angular/core';\nimport {FormBuilder, FormControl, FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {MatBadgeModule} from '@angular/material/badge';\nimport {MatCheckboxModule} from '@angular/material/checkbox';\nimport {MatRippleModule} from '@angular/material/core';\nimport {MatDividerModule} from '@angular/material/divider';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatMenuModule} from '@angular/material/menu';\nimport {MAT_PAGINATOR_DEFAULT_OPTIONS, MatPaginator, MatPaginatorModule} from '@angular/material/paginator';\nimport {MatSort, MatSortModule} from '@angular/material/sort';\nimport {MatColumnDef, MatFooterRow, MatRow, MatTable, MatTableDataSource, MatTableModule} from '@angular/material/table';\nimport {MatTooltipModule} from '@angular/material/tooltip';\nimport {UntilDestroy, untilDestroyed} from '@ngneat/until-destroy';\n\nimport moment from 'moment';\nimport {fromEvent, Observable, of, startWith, Subscription} from 'rxjs';\nimport {filter, map, take} from 'rxjs/operators';\nimport shortHash from 'shorthash2';\nimport {DataModel} from './classes/data-model';\nimport {BotonMantenimiento, ColumnaIcons, ColumnaTabla, OpcionSeleccionada, SeccionesBotonesMantenimiento} from './interfaces';\nimport {tipoValorFuncion, TipoValorFuncion} from './interfaces/global/no-export';\nimport {MatRowKeyboardSelectionDirective} from './mat-row-keyboard-selection.directive';\nimport {TablaMantenimientoColumnDefsComponent} from './tabla-mantenimiento-column-defs/tabla-mantenimiento-column-defs.component';\nimport {TablaMantenimientoMenuComponent} from './tabla-mantenimiento-menu/tabla-mantenimiento-menu.component';\nimport {buscarEnArray, capitalizarTexto, formatearFecha, getBrowserName} from './tabla-mantenimiento.functions';\nimport {TablaMantenimientoService} from './tabla-mantenimiento.service';\nimport {TableUtil} from './table-util';\nimport {SelectionModel} from '@angular/cdk/collections';\nimport {ActivatedRoute, NavigationEnd, Router} from \"@angular/router\";\n\nexport interface MantenimientoFilaExtraData {\n template?: TemplateRef<any>;\n esVisible?(item?: any): boolean;\n}\n\ntype TiposControlBusqueda ='query' | 'simple' | '';\n@UntilDestroy({ checkProperties: true })\n@Component({\n selector: 'jvs-tabla-mantenimiento',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n MatCheckboxModule,\n MatDividerModule,\n MatIconModule,\n MatMenuModule,\n MatPaginatorModule,\n MatRippleModule,\n MatSortModule,\n MatTableModule,\n MatTooltipModule,\n ReactiveFormsModule,\n TablaMantenimientoColumnDefsComponent,\n MatBadgeModule,\n TablaMantenimientoMenuComponent,\n MatRowKeyboardSelectionDirective,\n ],\n templateUrl: './tabla-mantenimiento.component.html',\n styleUrls: ['./tabla-mantenimiento.component.scss'],\n host: {\n class: 'jvs-tabla-mantenimiento',\n },\n animations: [\n trigger('detailExpand', [\n state('collapsed', style({height: '0px', minHeight: '0'})),\n state('expanded', style({height: '*'})),\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n ]),\n trigger('fadeInUp', [\n transition(':enter', [\n style({\n transform: 'translateY(20px)',\n opacity: 0\n }),\n animate(`400ms cubic-bezier(0.35, 0, 0.25, 1)`, style({\n transform: 'translateY(0)',\n opacity: 1\n }))\n ])\n ]),\n ],\n providers: [\n {provide: MAT_PAGINATOR_DEFAULT_OPTIONS, useValue: {formFieldAppearance: 'outline'}}\n ]\n})\nexport class TablaMantenimientoComponent<T> implements OnInit, AfterContentInit, OnChanges {\n static nextId = 0;\n @HostBinding()\n readonly id = `jvs-tabla-mantenimiento-id-${TablaMantenimientoComponent.nextId++}`;\n\n readonly router = inject(Router);\n readonly route = inject(ActivatedRoute);\n\n get templateBotonesComunes(): BotonMantenimiento[] {\n return this.tablaMantenimientoService.templateBotonesComunes;\n };\n get templateColumnasTabla(): ColumnaTabla<any>[] {\n return this.tablaMantenimientoService.templateColumnasTabla;\n };\n\n @Input() dataSuscription: Observable<any> | undefined ;\n @Input({required: true}) objThis: any;\n @Input({required: true}) nombreColeccion: any;\n @Input() ctrlBusquedaValue = '';\n @Input() ctrlBusquedaPlaceholder = 'Buscar...';\n @Input() filtroCampos = true;\n @Input() paginador = true;\n @Input() esTabla = true;\n @Input() readOnly: boolean | 'permitirSeleccion' = false;\n @Input() filaExtraHeader: MantenimientoFilaExtraData | any;\n @Input() filaFooter = false;\n @Input() botonesCRUD = 'CUD';\n @Output() dblclickItem = new EventEmitter();\n @Input() objBotonesCRUD: BotonMantenimiento[] = [\n {tipo: 'nuevo', sinCondicion: true},\n {tipo: 'editar'},\n {tipo: 'eliminar'},\n ];\n @Input() classSeleccionado = ['elemento-seleccionado', /*'!bg-primary-activo','text-primary-contrast', */ 'mat-elevation-z8', /*'dark:!bg-primary-dark-activo',*/ 'border-y-2 border-primary-contrast', 'font-bold', 'text-2xl'];\n // @Input() classAnulado = ['line-through', 'text-red', 'italic'];\n @Input() classAnulado = ['elemento-anulado', /*'line-through', */'text-red-900', 'bg-red-200'];\n @Input() campoAnulado: any = null;\n @Input() campoAnuladoMensaje: any = null;\n @Output() opcionSelecionada = new EventEmitter();\n @Output() opcBusqueda = new EventEmitter();\n @Output() accionRecargar = new EventEmitter();\n\n\n @Input() set selectionModel(val: SelectionModel<any>) {\n this.objSeleccionado = val;\n }\n @Output() selectionModelChange = new EventEmitter<SelectionModel<any>>();\n\n isRecargarUsed = false;\n @Input() filaExtraTemplate: TemplateRef<any> | undefined;\n @ViewChild(MatPaginator) paginator!: MatPaginator;\n @ViewChild(MatSort) sort!: MatSort;\n @Input() exportarExcel = true;\n // MIO\n @Input() pageSize = 25;\n @Input() pageSizeOptions = [5, 10, 25, 50, 100, 500, 1000];\n @Output() dataSourceChange: EventEmitter<any> = new EventEmitter();\n\n @Output() resultados = new EventEmitter<any>();\n dataSource = new MatTableDataSource(); // or whatever type of datasource you have\n // this is where the magic happens:\n @ViewChild(MatTable, {static: false}) table!: MatTable<T>;\n @ContentChildren(MatColumnDef, {descendants: true}) columnDefs!: QueryList<MatColumnDef>;\n\n componenteCargadoTotalmente = false;\n\n\n\n /////////////////////\n paginacion = {\n pageSize: 25,\n pageSizeOptions: <number[]>[],\n pageCurrent: <any>null,\n pageIndex: 0,\n pageLength: null,\n };\n // All that's left is to add them to the table ourselves:\n ignorarDerechos = false;\n @Input() derechosActuales: any = null;\n // listaCRUD: BotonMantenimiento[] = [];\n @ViewChildren(MatRow, {read: ElementRef}) rows!: QueryList<ElementRef<HTMLTableRowElement>>;\n @ViewChild(MatFooterRow, {read: ElementRef}) rowFooter!: ElementRef<HTMLTableRowElement>;\n mouseEvent$: Subscription | undefined;\n overlayRef: OverlayRef | undefined;\n @ViewChild('userMenu') userMenu!: TemplateRef<any>;\n // FILTRO BUSQUEDA\n opcFiltroActual = {};\n\n protected readonly capitalizarTexto = capitalizarTexto;\n\n\n _seleccionado: any = {};\n\n cCampoBusqueda = new FormControl('');\n chkLista = new DataModel();\n constructor(\n private fb: FormBuilder,\n public overlay: Overlay,\n public viewContainerRef: ViewContainerRef,\n protected tablaMantenimientoService: TablaMantenimientoService,\n private cdRef: ChangeDetectorRef\n ) {\n // this._seleccionado[this.nombreColeccion] = null;\n }\n\n _ctrlBusqueda: TiposControlBusqueda = '';\n\n get ctrlBusqueda() {\n return this._ctrlBusqueda;\n }\n\n @Input() set ctrlBusqueda(val: TiposControlBusqueda) {\n if (val == '') {\n val = 'simple';\n }\n this._ctrlBusqueda = val;\n }\n\n // @Input() leyenda;\n private _leyenda: { text: string, class?: string } | undefined = undefined;\n\n get leyenda(): { text: string, class?: string } | undefined {\n return this._leyenda;\n }\n\n @Input() set leyenda(val: { text: string, class?: string } | string) {\n if (typeof val == 'string') {\n this._leyenda = {text: val};\n }\n else {\n this._leyenda = val;\n }\n }\n\n // @Input() idTabla: string[];\n private _idTabla: string[] = [];\n\n get idTabla(): string[] {\n return this._idTabla;\n }\n\n @Input({required: true}) set idTabla(val: string[] | string) {\n if (Array.isArray(val)) {\n this._idTabla = val;\n }\n else {\n this._idTabla.push(val);\n }\n }\n\n private _columnasTabla: ColumnaTabla<any>[] = [];\n\n get columnasTabla(): ColumnaTabla<any>[] {\n return this._columnasTabla ?? [];\n }\n\n @Input() set columnasTabla(val: ColumnaTabla<any>[]) {\n const reemplazarConTemplate = (listaInicial: ColumnaTabla<any>[] = []) => {\n listaInicial.forEach((btnActual, idx) => {\n const btnEnTemplate = buscarEnArray(this.templateColumnasTabla, 'property', btnActual.property);\n if (btnEnTemplate) {\n listaInicial[idx] = {\n ...btnEnTemplate,\n ...btnActual\n };\n }\n if (listaInicial[idx].type == 'text') {\n if (!listaInicial[idx].text) {\n listaInicial[idx].text = {\n cssStyle: {}\n };\n }\n else if (!listaInicial[idx].text.cssStyle) {\n listaInicial[idx].text.cssStyle = {};\n }\n listaInicial[idx].text.cssStyle = {...listaInicial[idx].text.cssStyle};\n }\n else if (listaInicial[idx].type == 'estado') {\n const mutar: ColumnaIcons<any> = {\n ...listaInicial[idx],\n type: 'icons',\n iconsDef: {\n soloIcono: true,\n iconSize: '16px',\n items: [\n // {\n // icon: 'roundToggleOff', contentCss: 'text-gray-400',\n // esVisible: (row) => row['iCredDepenTareaEstado'] == 0\n // },\n // {\n // icon: 'roundToggleOn', contentCss: 'text-green-600',\n // esVisible: (row) => row['iCredDepenTareaEstado'] == 1\n // },\n ]\n },\n };\n if (listaInicial[idx].estados) {\n listaInicial[idx].estados.forEach((estado: any) => {\n if (Array.isArray(mutar.iconsDef.items)) {\n mutar.iconsDef.items.push({\n icon: estado.icon , contentCss: estado.cssClasses,\n esVisible: (row) => row[listaInicial[idx].property] == estado.estado,\n })\n }\n });\n }\n listaInicial[idx] = mutar;\n }\n\n if (btnActual.type == 'custom') {\n\n listaInicial[idx].datosExtra = {\n ...listaInicial[idx].datosExtra,\n tabla_mantenimiento_config_visibleAlias: listaInicial[idx].visible == undefined ? true : listaInicial[idx].visible,\n }\n listaInicial[idx].visible = false\n }\n });\n return listaInicial;\n };\n this._columnasTabla = val ? reemplazarConTemplate(val):[];\n }\n\n // @Input() botonesMenu: BotonMantenimiento[] = [];\n private _botonesMenu: SeccionesBotonesMantenimiento = {\n crud: undefined,\n principal: [],\n izquierda: [],\n derecha: [],\n secundario: [],\n inferior: [],\n };\n\n get botonesMenu(): SeccionesBotonesMantenimiento {\n return this._botonesMenu;\n }\n\n get botonesMenuFinal(): SeccionesBotonesMantenimiento {\n const nuevoBotonesMenu: SeccionesBotonesMantenimiento = this.botonesMenu;\n\n // Iteramos sobre cada sección de botones\n Object.keys(nuevoBotonesMenu).forEach(seccion => {\n nuevoBotonesMenu[seccion] = nuevoBotonesMenu[seccion]?.filter((boton: BotonMantenimiento) => {\n if (this.readOnly) {\n if (boton.subItems) {\n boton.subItems = boton.subItems.filter((subItem: BotonMantenimiento) => subItem.ignorarReadOnly === true);\n return boton.subItems.length < 1;\n }\n return boton.ignorarReadOnly === true;\n }\n return true;\n }); // Filtramos los botones nulos\n });\n\n return nuevoBotonesMenu;\n }\n\n @Input() set botonesMenu(val: SeccionesBotonesMantenimiento) {\n const reemplazarConTemplate: any = (listaInicial: BotonMantenimiento[] = []) =>\n listaInicial.map((btnActual: BotonMantenimiento) => {\n const btnEnTemplate = buscarEnArray(this.templateBotonesComunes, 'tipo', btnActual.tipoTemplate ?? btnActual.tipo);\n if (btnEnTemplate) {\n if (btnActual.tipoTemplate && !btnActual.label) {\n btnEnTemplate.label = undefined;\n }\n if (btnActual.subItems) {\n return { ...btnEnTemplate, ...btnActual, seccion: this.nombreColeccion, subItems: reemplazarConTemplate(btnActual.subItems) };\n }\n return { ...btnEnTemplate, ...btnActual, seccion: this.nombreColeccion };\n }\n return btnActual;\n });\n\n if (val?.crud) {\n this.objBotonesCRUD = this.templateBotonesComunes\n .filter(obj => ['nuevo', 'editar', 'eliminar'].includes(obj.tipo))\n .map(obj => val.crud?.find(o => o.tipo === obj.tipo) ?? obj);\n\n }\n\n\n Object.keys(val).forEach(btnKey => {\n if (val[btnKey]) {\n val[btnKey] = reemplazarConTemplate(val[btnKey]);\n }\n });\n\n this._botonesMenu = {...this._botonesMenu, ...val};\n }\n\n get listaMenuCompleto(): BotonMantenimiento[] {\n let menuTotal: BotonMantenimiento[] = [];\n menuTotal = menuTotal.concat(this.botonesMenu.izquierda ?? []);\n menuTotal = menuTotal.concat(this.botonesMenu.crud ?? []);\n menuTotal = menuTotal.concat(this.botonesMenu.principal ?? []);\n menuTotal = menuTotal.concat(this.botonesMenu.derecha ?? []);\n menuTotal = menuTotal.concat(this.botonesMenu.secundario ?? []);\n menuTotal = menuTotal.concat(this.botonesMenu.inferior ?? []);\n return menuTotal;\n }\n\n get objVisibleColumns() {\n return this.columnasTabla.filter(column => {\n if (column.noMostrar != undefined) {\n column.noMostrarEnLista = column.noMostrar;\n }\n return !tipoValorFuncion(column.noMostrarEnLista, false)\n }).filter(column => {\n // SECCION MODIFICADOR\n if (this.filaExtraTemplate) {\n column.sort = false;\n }\n // Fin SECCION MODIFICADOR\n\n column.visible = tipoValorFuncion(column.visible, true);\n if (!column.visible && column.esVisible != undefined) {\n column.visible = column.esVisible();\n }\n return column.visible;\n });\n }\n\n get visibleColumns() {\n return this.objVisibleColumns.map(column => column.property);\n }\n\n get tieneCheckbox() {\n return this.columnasTabla && this.columnasTabla.length > 0 && this.columnasTabla.find(col => col.type === 'checkbox') || false;\n }\n\n get buscarItemSeleccionado(): any {\n const dRet = this.dataSource.data.find(itm => this._seleccionado === this.propiedadSeleccion(itm));\n return dRet ?? null;\n }\n\n get objSeleccionado() {\n return this.buscarItemSeleccionado; // ?? this.objThis?.['seleccionados']?.[this.nombreColeccion];\n }\n set objSeleccionado(val: any) {\n\n // if (val) {\n this.seleccionarItem(val, true);\n // }\n /* if (!this.objThis) {\n this.objThis = {};\n }\n if (!this.objThis['seleccionados']) {\n this.objThis['seleccionados'] = {};\n }\n this.objThis['seleccionados'][this.nombreColeccion] = val;*/\n }\n get idsSeleccionado(): string {\n return <string>this.chkLista.generarLista();\n }\n\n idTablaValor(data: any): string {\n if (data) {\n if (this.idTabla.length < 1) {\n return shortHash(JSON.stringify({data, claseFinal: undefined}))\n }\n return this.idTabla.map(d => data[d]).join('-');\n }\n return '';\n }\n\n @Input() condicionesClaseFila = (item: any): any[] => [];\n @Input() rowTooltip = (item: any): string => '';\n @Input() soloIconos? :TipoValorFuncion<boolean> = false;\n\n ngOnInit(): void {\n this.router.events.pipe(\n filter(event => event instanceof NavigationEnd),\n startWith(null),\n map(() => this.getDeepestRoute(this.route)),\n map(route => route.snapshot.data),\n untilDestroyed(this)\n ).subscribe(data => {\n console.log(data);\n this.derechosActuales = data['derechos'];\n this.ignorarDerechos = data['ignorarDerechos'] ?? false;\n });\n // this.sharedService.dataRutaActual$.pipe(untilDestroyed(this)).subscribe(datRouteData => {\n // if (datRouteData) {\n // this.derechosActuales = datRouteData['derechos'];\n // if (!this.ignorarDerechos) {\n // this.ignorarDerechos = datRouteData['ignorarDerechos'] ?? false;\n // }\n // }\n // });\n this.paginacion.pageSize = this.pageSize;\n this.paginacion.pageSizeOptions = this.pageSizeOptions;\n this.actualizarCrud();\n\n this.agregarBotonesExportacion();\n if (this.dataSuscription) {\n this.dataSuscription.subscribe(res => {\n if (res) {\n if (this.objSeleccionado) {\n console.log('SELECCIONADO');\n if (this.idTabla && this.idTabla.length > 0) {\n console.log('ID TABLA');\n const arrayData = this.idTabla.map(d => this.objSeleccionado[d]);\n console.log(arrayData);\n const busqueda = buscarEnArray(res, this.idTabla, arrayData);\n console.log(busqueda);\n\n if (busqueda) {\n console.log(busqueda);\n this.objSeleccionado = busqueda;\n }\n }\n else {\n\n console.log('eLSE ID TABLA');\n const dataStr = res.find((itm: any) => shortHash(JSON.stringify({\n ...itm, claseFinal: undefined\n })) == shortHash(JSON.stringify({...this.objSeleccionado, claseFinal: undefined})));\n if (dataStr) {\n this.objSeleccionado = dataStr;\n }\n }\n }\n this.setData(res);\n }\n });\n }\n this.isRecargarUsed = this.accionRecargar.observed;\n }\n\n ngAfterContentInit() {\n this.componenteCargadoTotalmente = true;\n this.cdRef.detectChanges();\n this.columnDefs.forEach(columnDef => {\n this.table.addColumnDef(columnDef);\n const col = this.columnasTabla.find(col => col.property == columnDef.name);\n if (col && col.type == 'custom') {\n col.visible = col.datosExtra?.tabla_mantenimiento_config_visibleAlias ?? col.visible;\n delete col.datosExtra?.tabla_mantenimiento_config_visibleAlias;\n if (Object.keys(col.datosExtra).length < 1) {\n delete col.datosExtra;\n }\n }\n });\n // console.log(a);\n if (this.ctrlBusquedaValue) {\n this.cCampoBusqueda.setValue(this.ctrlBusquedaValue);\n }\n this.table.renderRows(); // 🔹 Refrescar la tabla\n\n\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['botonesCRUD'] || changes['ctrlBusqueda']) {\n this.actualizarCrud();\n }\n if (changes['botonesMenu']) {\n this.agregarBotonesExportacion();\n }\n }\n\n trackByFn = (index: number, item: any): string => {\n return this.propiedadSeleccion(item);\n };\n\n\n getDeepestRoute(route: ActivatedRoute): ActivatedRoute {\n while (route.firstChild) {\n route = route.firstChild;\n }\n return route;\n }\n\n\n agregarBotonesExportacion() {\n const fnAddBoton = (condicion: boolean, tipoBoton: string) => {\n if (condicion) {\n const objBoton = buscarEnArray(this.templateBotonesComunes, 'tipo', tipoBoton);\n const objBotonEnInferior = buscarEnArray((this.botonesMenu?.inferior ?? []), 'tipo', tipoBoton);\n\n if (!objBotonEnInferior && objBoton) {\n if (!this.botonesMenu.inferior) {\n this.botonesMenu.inferior = [];\n }\n this.botonesMenu?.inferior?.push({\n ...objBoton,\n esIndependiente: true,\n });\n }\n }\n }\n fnAddBoton((this.exportarExcel && this.esTabla), 'exportar_excel');\n }\n\n actualizarCrud() {\n const operacionesCRUD: Record<'C' | 'U' | 'D', string> = {\n 'C': 'nuevo',\n 'U': 'editar',\n 'D': 'eliminar'\n };\n\n const agregarBoton = (tipo: string) => {\n let botonComun = buscarEnArray(this.templateBotonesComunes, 'tipo', tipo);\n if (botonComun) {\n const personalizado = buscarEnArray(this.objBotonesCRUD, 'tipo', tipo);\n const boton = personalizado ? {...botonComun, ...personalizado}:botonComun;\n if (this.botonesMenu.crud) {\n this.botonesMenu.crud.push(boton);\n }\n }\n };\n\n const lstCRUD = (this.botonesMenu.crud ?? []).map(i => i.tipo);\n\n if (lstCRUD.length > 0) {\n for (const operacion of (this.botonesCRUD || \"\").toUpperCase()) {\n const operacionKey = operacion as 'C' | 'U' | 'D';\n if (lstCRUD.includes(operacion) && operacionesCRUD[operacionKey]) {\n agregarBoton(operacionesCRUD[operacionKey]);\n }\n }\n }\n else {\n this.botonesMenu.crud = [];\n for (const operacion of (this.botonesCRUD || \"\").toUpperCase()) {\n const operacionKey = operacion as 'C' | 'U' | 'D';\n if (operacionesCRUD[operacionKey]) {\n agregarBoton(operacionesCRUD[operacionKey]);\n }\n }\n }\n\n if (this.ctrlBusqueda === 'simple') {\n this.cCampoBusqueda.valueChanges.pipe(\n untilDestroyed(this),\n ).subscribe(value => this.onFilterChange(value ?? ''));\n }\n\n if (this.botonesCRUD === '-') {\n this.botonesMenu.crud = [];\n }\n }\n classFila(item: any) {\n let claseFinal: any[] = [];\n if (this.campoAnulado && (item[this.campoAnulado] == 1)) {\n claseFinal = claseFinal.concat(this.classAnulado);\n }\n if (this.objSeleccionado == item || this.esSeleccionActual(item)) {\n claseFinal = claseFinal.concat(this.classSeleccionado);\n }\n claseFinal = claseFinal.concat(this.condicionesClaseFila(item));\n item.claseFinal = claseFinal;\n return claseFinal;\n }\n\n procesarRowTooltip(item: any) {\n let txtTooptip = [];\n if (this.campoAnuladoMensaje && (item[this.campoAnulado] == 1)) {\n txtTooptip.push(item[this.campoAnuladoMensaje]);\n // return item[this.campoAnuladoMensaje];\n }\n if (this.rowTooltip) {\n txtTooptip.push(this.rowTooltip(item));\n }\n return txtTooptip.filter(itm => !!itm).join(' | ');\n }\n\n subItemsActivos(btn: any, item: any) {\n return btn.subItems.filter((sub: any) => !sub.esVisible || sub.esVisible(item)).length > 0;\n }\n\n get noData() {\n if (!this.esTabla){\n return of(true);\n }\n if (!this.dataSource || !this.table) {\n return of(true);\n }\n // @ts-ignore\n return this.table.dataSource?.connect().pipe(map(data => data?.length === 0));\n }\n\n onFilterChange(value: string) {\n if (!this.dataSource) {\n return;\n }\n value = value.trim();\n value = value.toLowerCase();\n this.dataSource.filter = value;\n }\n\n toggleColumnVisibility(column: any, event: any) {\n event.stopPropagation();\n event.stopImmediatePropagation();\n column.visible = !column.visible;\n }\n\n cargarData(retorno = false) {\n\n if (this.ctrlBusqueda && this.ctrlBusqueda == 'simple') {\n if (!retorno) {\n this.dataSource.paginator = this.paginator;\n this.dataSource.sort = this.sort;\n }\n\n const aS: any = this.dataSource?.data;\n\n if (\n (!aS || !aS[0] || !aS[0]['iTotalRegistros'])\n ) {\n return false;\n }\n }\n const dPag: any = {\n iPaginacion: 1,\n iPageSize: this.paginator?.pageSize ? this.paginator?.pageSize:this.paginacion.pageCurrent?.pageSize,\n iPageNumber: (this.paginator?.pageIndex ? this.paginator?.pageIndex:0) + 1,\n };\n if (this.ctrlBusqueda && this.ctrlBusqueda == 'query') {\n dPag['cCampoBusqueda'] = this.cCampoBusqueda.value;\n }\n if (retorno) {\n return dPag;\n }\n this.resultados.emit(dPag);\n this.opcBusqueda.emit(dPag);\n }\n\n // FIN FILTRO BUSQUEDA INTEGRAR\n\n setData(data: any) {\n this.dataSource = new MatTableDataSource(data);\n this.dataSource.sortingDataAccessor = (item: any, property) => {\n const dColumn: ColumnaTabla<any> | null = buscarEnArray(this.columnasTabla, 'property', property);\n if (dColumn) {\n switch (dColumn.sortType ?? dColumn.type) {\n case 'number':\n return item[property] * 1;\n case 'date':\n return formatearFecha(item[property]);\n }\n }\n if (item) {\n switch (property) {\n case 'fromDate':\n return new Date(item['fromDate']);\n default:\n return item[property];\n }\n }\n };\n // this.paginator.length = (data && data[0] && data[0]['iTotalRegistros']) ? data[0]['iTotalRegistros'] : data.length;\n // this.dataSource.paginator = this.paginator;\n if (this.sort) {\n this.dataSource.sort = this.sort;\n }\n // this.dataSource.filter = this.filter;\n this.dataSourceChange.emit(this.dataSource);\n // this.dataSource.paginator.pageSize = this.paginacion.pageSize;\n if (data && data[0] && data[0]['iPageNumber']) {\n this.paginacion.pageIndex = (data && data[0] && data[0]['iPageNumber']) ? data[0]['iPageNumber']:0;\n }\n this.paginacion.pageLength = (data && data[0] && data[0]['iTotalRegistros']) ? data[0]['iTotalRegistros']:data.length;\n if (data && data[0] && !data[0]['iTotalRegistros']) {\n this.dataSource.paginator = this.paginator;\n }\n\n if (this.tieneCheckbox) {\n this.chkLista.agregarControles(data, this.tieneCheckbox.property, !this.tieneCheckbox.chkFieldPersistente, (this.tieneCheckbox.chkField ?? null), this.tieneCheckbox.chkFieldSeparador);\n }\n }\n\n botonDisabled(btn: BotonMantenimiento, item: any) {\n let disabled;\n if (!btn.sinCondicion) {\n if (btn.estaDeshabilitado) {\n disabled = btn.estaDeshabilitado(item, this);\n }\n else {\n disabled = !this.objSeleccionado;\n }\n }\n if (!disabled && !btn.esIndependiente && !btn.ignorarDerecho && this.derechosActuales) {\n // if (!this.usuarioService.esEquipoJVSoft()) {\n disabled = !(this.derechosActuales[btn.cDerechoCodigo ?? btn.tipo]);\n // }\n }\n return disabled;\n }\n\n propiedadSeleccion(item: any): string {\n return `${this.nombreColeccion}_${this.idTablaValor(item)}`;\n }\n\n esSeleccionActual(item: any): boolean {\n return this._seleccionado === this.propiedadSeleccion(item);\n }\n\n seleccionarItem(item?: any, forzado: boolean = false): void {\n const idItem = this.propiedadSeleccion(item);\n if (forzado) {\n this._seleccionado = idItem;\n }\n else {\n this._seleccionado = this._seleccionado === idItem ? null:idItem;\n }\n this.selectionModelChange.emit(this.objSeleccionado);\n\n /*if (!this.objThis) {\n this.objThis = {};\n }\n if (!this.objThis['seleccionados']) {\n this.objThis['seleccionados'] = {};\n }\n this.objThis['seleccionados'][this.nombreColeccion] = this._seleccionado;*/\n }\n\n opcMenu(item: any, objMenu: OpcionSeleccionada, modal = null, retorno = false) {\n\n // console.log(this.buscarItemSeleccionado);\n // console.log(objMenu);\n // let salir = this.readOnly;\n // if (salir && this.readOnly === 'permitirSeleccion' && ['ver', 'seleccionar'].includes(objMenu.tipo)) {\n // salir = false;\n // }\n // if (salir) {\n // return false;\n // }\n\n // console.warn(objMenu);\n if (objMenu.tipo == 'exportar_excel' && this.exportarExcel) {\n /*\n TableUtil.exportArrayToExcel(this.dataSource.data.map(x => {\n const columnasNumeros = this.objVisibleColumns.filter(column => ['money', 'number'].includes(column.type));\n columnasNumeros.forEach(columna => {\n x[columna.property] *= 1;\n });\n return x;\n }), 'TEST');\n */\n const dataGeneradoPorHtml = TableUtil.getWorkBook('tabla_' + this.nombreColeccion, []);\n const objetosExtraidos = this.dataSource.filteredData.map((objeto: any, idx) =>\n this.objVisibleColumns.reduce((acumulador, columna) => {\n // console.log(propiedad);\n const nColumn = (columna.labelLista ?? columna.label).toUpperCase().replace('<BR>', ' ');\n switch (columna.type) {\n case 'date':\n // acumulador[nColumn] = (new DatePipe('es-PE')).transform(objeto[columna.property], 'dd/MM/yyyy' /*'yyyy-MM-dd'*/);\n // new Date(dateString.replace(/(\\d{2}:\\d{2}:\\d{2}):\\w{2}/, '$1'));\n // acumulador[nColumn] = new Date(objeto[columna.property].replace(/(\\d{2}:\\d{2}:\\d{2}):\\w{2}/, '$1'));\n // acumulador[nColumn] = formatearFechaFormato(objeto[columna.property], 'dd/MM/yyyy');\n // acumulador[nColumn] = formatearFechaTimezone(objeto[columna.property]);\n // acumulador[nColumn] = new Date(objeto[columna.property]);\n let fecha = objeto[columna.property];\n if (objeto[columna.property]) {\n fecha = new Date(objeto[columna.property].replace(/(\\d{2}:\\d{2}:\\d{2}):\\w{2}/, '$1'));\n if (getBrowserName() == 'chrome') {\n fecha = moment(objeto[columna.property], true).add(2, 'minutes').toDate();\n }\n }\n acumulador[nColumn] = fecha;\n // acumulador[nColumn] = objeto[columna.property];\n break;\n case 'number':\n case 'money':\n acumulador[nColumn] = objeto[columna.property] * 1;\n break;\n default:\n if (columna.property == 'numeracion_automatica') {\n acumulador[nColumn] = idx + 1;\n }\n else {\n if (columna.type == 'custom') {\n // dataGeneradoPorHtml.sheetToJson\n acumulador[nColumn] = dataGeneradoPorHtml.sheetToJson[idx][columna.label];\n }\n else {\n if (columna.type == 'text' && columna.innerHTML) {\n const convertirHtmlATexto = (html: string): string => {\n const elementoTemporal = document.createElement('div');\n elementoTemporal.innerHTML = html;\n return elementoTemporal.textContent || \"\";\n }\n acumulador[nColumn] = convertirHtmlATexto(columna.innerHTML(objeto));\n }\n else if (columna.transformar) {\n acumulador[nColumn] = columna.transformar(objeto);\n }\n else {\n acumulador[nColumn] = objeto[columna.property];\n }\n }\n }\n break;\n }\n return acumulador;\n }, {} as Record<string, any>)\n );\n\n // TableUtil.exportTableToExcel('tabla_' + this.nombreColeccion);\n // console.log(objetosExtraidos);\n TableUtil.exportArrayToExcel(objetosExtraidos, this.nombreColeccion);\n\n // this.tableExporter.exportTable('xlsx', {fileName: 'JVSoftExport'});\n }\n\n const opAdic: any = {seccion: this.nombreColeccion};\n if (item) {\n opAdic['item'] = item;\n }\n opAdic['itemSeleccionado'] = this.objSeleccionado;\n\n if (this.tieneCheckbox) {\n // itmsSeleccionados = this.formulariosGlobalesService.generarLista(this.nombreColeccion);\n opAdic['idsSeleccionados'] = this.idsSeleccionado;\n }\n // opAdic['refTabla'] = this;\n objMenu = {...objMenu, ...opAdic};\n if (retorno) {\n return objMenu;\n }\n // console.warn(objMenu);\n this.opcionSelecionada.emit(objMenu);\n return 1;\n }\n\n emitirResultados(evento = {}) {\n this.opcFiltroActual = {...this.opcFiltroActual, ...evento, ...this.cargarData(true)};\n // console.warn('resultadosFILTRO', this.opcFiltroActual);\n this.resultados.emit(this.opcFiltroActual);\n }\n abrirMenuContextual({x, y}: MouseEvent, user: any) {\n // console.log(user);\n // this.opcMenu(user, {tipo: 'ver'});\n this.objSeleccionado = user;\n this.cerrarMenuContextual();\n const positionStrategy = this.overlay.position().flexibleConnectedTo({x, y}).withPositions([\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n ]);\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.close(),\n });\n\n this.overlayRef.attach(new TemplatePortal(this.userMenu, this.viewContainerRef, {\n // $implicit: user\n item: user,\n }));\n\n this.mouseEvent$ = fromEvent<MouseEvent>(document, 'click').pipe(\n filter(event => {\n const clickTarget = event.target as HTMLElement;\n return !!this.overlayRef && !this.overlayRef.overlayElement.contains(clickTarget);\n }),\n take(1),\n ).subscribe(() => this.cerrarMenuContextual());\n\n }\n\n cerrarMenuContextual() {\n this.mouseEvent$ && this.mouseEvent$.unsubscribe();\n if (this.overlayRef) {\n this.overlayRef.dispose();\n this.overlayRef = undefined;\n }\n }\n\n emitirAccionRecargar() {\n if (!this.idTabla) {\n this.objSeleccionado = null;\n }\n this.accionRecargar.emit(this.opcFiltroActual);\n // this.accionRecargar.emit({ ...this.opcFiltroActual, ...{seleccionado: this.objSeleccionado}});\n }\n\n protected readonly tipoValorFuncion = tipoValorFuncion;\n}\n\n","<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ón\"\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º</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","import {Component, Input, OnInit} from '@angular/core';\nimport {NgForOf, NgIf} from '@angular/common';\n\n@Component({\n selector: 'jvs-luces-navidad, [jvsLucesNavidad]',\n templateUrl: './luces-navidad.component.html',\n imports: [\n NgIf,\n NgForOf\n ],\n styleUrls: ['./luces-navidad.component.scss']\n})\nexport class LucesNavidadComponent implements OnInit {\n\t@Input() enProduccion = true;\n\t@Input() forzarMuestra = false;\n\tmesActual = new Date().getMonth() + 1;\n\n\tconstructor() {\n\t}\n\n\tngOnInit(): void {\n\t}\n\n}\n","<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","import {Component, EventEmitter, Input, Output} from '@angular/core';\nimport {FormControl} from '@angular/forms';\nimport {MatRipple} from '@angular/material/core';\nimport {MatIcon} from '@angular/material/icon';\n\n@Component({\n selector: 'div[matSuffix][matSuffixSearchButton]',\n imports: [\n MatRipple,\n MatIcon\n ],\n templateUrl: './mat-suffix-search-button.component.html',\n host: {\n class: 'flex items-center justify-start',\n }\n})\nexport class MatSuffixSearchButtonComponent {\n @Input({required: true}) fControl: any;\n @Output() eventLimpiar: EventEmitter<any> = new EventEmitter();\n @Output() eventBuscar: EventEmitter<any> = new EventEmitter();\n\n get control(): FormControl {\n return this.fControl;\n }\n\n emitirClick() {\n if (this.control.value) {\n this.control.reset();\n this.eventLimpiar.emit(true);\n }\n else {\n this.eventBuscar.emit(true);\n }\n }\n\n}\n","<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","import {AfterViewInit, Component, EventEmitter, Input, OnInit, Output, QueryList, ViewChildren} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatMenu, MatMenuModule} from '@angular/material/menu';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatRippleModule} from '@angular/material/core';\nimport {MatTooltipModule} from '@angular/material/tooltip';\nimport {BotonMenu} from './menu.interface';\n\n@Component({\n selector: 'jvs-menu',\n standalone: true,\n imports: [\n CommonModule,\n MatMenuModule,\n MatIconModule,\n MatRippleModule,\n MatTooltipModule,\n ],\n templateUrl: './menu.component.html',\n})\nexport class MenuComponent implements OnInit, AfterViewInit {\n @Input() cssBoton?: string;\n @Input() title?: string;\n @Input() disabled: boolean = false;\n @Input() itemSeleccion?: string;\n @Input() menu: BotonMenu[] = [];\n @Output() action: EventEmitter<string> = new EventEmitter<string>();\n\n @ViewChildren(MatMenu) matmenus!: QueryList<MatMenu>;\n\n menuItems: string[] = [];\n yet: boolean = false;\n _submenus: BotonMenu[][] = []; // 🔥 Tipo explícito como Array de Array de BotonMenu\n\n get submenus(): BotonMenu[][] {\n return this._submenus.filter(() => true); // Mantiene la estructura, aunque no hace filtro real\n }\n\n ngOnInit(): void {\n this.createSubmenus(this.menu, 's0', 1);\n this.reindex();\n }\n\n ngAfterViewInit(): void {\n // Previene errores de Angular al repintar el menú\n setTimeout(() => {\n this.yet = true;\n });\n }\n\n onClick(value: string): void {\n this.action.emit(value);\n }\n\n getMenu(index: number): MatMenu | null {\n return index >= 0 && this.matmenus ? this.matmenus.get(index) ?? null:null;\n }\n\n reindex(): void {\n // Asigna el índice del ítem del menú\n this._submenus.forEach((menu: BotonMenu[]) => {\n menu.forEach((item: BotonMenu) => {\n if (item.idxOpcionCalc !== -1) {\n item.idxOpcionCalc = this.menuItems.indexOf(item.valorSeleccion ?? '');\n }\n });\n });\n }\n\n createSubmenus(menu: BotonMenu[], prefix: string, count: number): void {\n this.menuItems.push(prefix);\n\n this._submenus.push(\n menu.map((item, index): BotonMenu => ({\n ...item,\n valorSeleccion: item.subItems ? `${prefix}${index}`:item.valorSeleccion,\n idxOpcionCalc: item.subItems ? 0:-1,\n }))\n );\n\n // Llamada recursiva para crear submenús\n menu.forEach((item, index) => {\n if (item.subItems) {\n this.createSubmenus(item.subItems, `${prefix}${index}`, count + 1);\n }\n });\n }\n}\n","<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","export function generarArbol(params: {\n lista: any[],\n campoId: string,\n campoIdPadre: string,\n idPadre?: any,\n strChildren?: string,\n campoOrden?: string\n}): any[] {\n const {\n lista,\n campoId,\n campoIdPadre,\n idPadre = null,\n strChildren = 'hijos',\n campoOrden,\n } = params;\n\n const hijos = lista.filter(n => n[campoIdPadre] === idPadre);\n\n if (campoOrden) {\n hijos.sort((a, b) => {\n const va = a[campoOrden];\n const vb = b[campoOrden];\n\n if (typeof va === 'string' && typeof vb === 'string') {\n return va.localeCompare(vb);\n }\n if (typeof va === 'number' && typeof vb === 'number') {\n return va - vb;\n }\n return 0;\n });\n }\n\n return hijos.map(n => ({\n ...n,\n [strChildren]: generarArbol({\n lista,\n campoId,\n campoIdPadre,\n idPadre: n[campoId],\n strChildren,\n campoOrden,\n }),\n }));\n}\n","import {Component, TemplateRef, computed, effect, input, output, signal, inject, untracked} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {MatTreeModule} from '@angular/material/tree';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatCheckboxModule} from '@angular/material/checkbox';\nimport {FormsModule} from '@angular/forms';\nimport {Observable} from 'rxjs';\nimport {switchMap} from 'rxjs/operators';\nimport {NestedTreeControl} from '@angular/cdk/tree';\nimport {generarArbol} from './lista-arbol.functions';\nimport {DataModel} from '@jvsoft/utils';\nimport {SelectionModel} from '@angular/cdk/collections';\nimport shortHash from 'shorthash2';\nimport {takeUntilDestroyed, toObservable} from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'jvs-lista-arbol',\n standalone: true,\n imports: [\n CommonModule,\n FormsModule,\n MatTreeModule,\n MatIconModule,\n MatCheckboxModule,\n ],\n templateUrl: './lista-arbol.component.html',\n})\nexport class ListaArbolComponent<T = any> {\n // Inputs\n listaSuscription = input.required<Observable<T[]>>();\n nombreColeccion = input.required<string>();\n checkbox = input(false);\n expandirRecursivo = input(false);\n checkboxSeleccionados = input<T[]>([]);\n\n campoId = input.required<string>();\n campoIdPadre = input.required<string>();\n campoStr = input<string>(''); // Optional - can use templateTxtData instead\n campoOrden = input<string>();\n strHijoContainer = input('hijos');\n menuContextual = input<{ abrirMenuContextual: Function; cerrarMenuContextual: Function }>();\n classSeleccionado = input<string[]>(['bg-primary-activo', 'text-primary', 'dark:!bg-primary-dark-activo']);\n classAnulado = input<string[]>(['line-through', 'text-red', 'italic']);\n campoAnulado = input<string | null>();\n templateTxtData = input<TemplateRef<any>>();\n condicionMostrar = input<(item: T) => boolean>();\n condicionesClaseFila = input<(item: T) => string[]>(() => []);\n \n // idTabla input with transform to support both string and string[]\n idTabla = input.required<string[] | string, string[] | string>({\n transform: (val: string[] | string) => {\n if (Array.isArray(val)) {\n this._idTabla.set(val);\n return val;\n } else {\n this._idTabla.update(current => [...current, val]);\n return [val];\n }\n }\n });\n\n // selectionModel input for backward compatibility \n selectionModel = input<any>();\n\n // Outputs\n selectionModelChange = output<any>();\n seleccionado = output<any>();\n listaCheck = output<T[]>();\n listaCheckObj = output<Record<string, any>>();\n\n // Internal state as signals\n private _idTabla = signal<string[]>([]);\n private _seleccionado = signal<string | null>(null);\n listaMuestraArbol = signal<T[]>([]);\n listaOriginal = signal<T[]>([]);\n chkLista = new DataModel();\n\n // Computed values\n idTablaValue = computed(() => this._idTabla());\n\n buscarItemSeleccionado = computed(() => {\n const selId = this._seleccionado();\n const lista = this.listaOriginal();\n if (!selId) return null;\n return lista.find(itm => selId === this.propiedadSeleccion(itm)) ?? null;\n });\n\n objSeleccionado = computed(() => this.buscarItemSeleccionado());\n\n treeControl = new NestedTreeControl((node: any) => node[this.strHijoContainer()]);\n\n // Convert signal to observable for proper subscription management\n private listaSuscription$ = toObservable(this.listaSuscription);\n\n constructor() {\n // Watch selectionModel input for backward compatibility\n effect(() => {\n const selModel = this.selectionModel();\n if (selModel) {\n untracked(() => this.seleccionarItem(selModel, true));\n }\n });\n\n // Setup subscription with automatic cleanup using switchMap\n // switchMap automatically unsubscribes from previous observable when a new one arrives\n this.listaSuscription$\n .pipe(\n switchMap(obs => obs),\n takeUntilDestroyed()\n )\n .subscribe(res => {\n if (res) {\n this.listaOriginal.set(res);\n const listaAs = generarArbol({\n lista: res,\n campoId: this.campoId(),\n campoIdPadre: this.campoIdPadre(),\n idPadre: null,\n strChildren: this.strHijoContainer(),\n campoOrden: this.campoOrden(),\n });\n \n // Use untracked to avoid unnecessary re-renders\n untracked(() => {\n this.listaMuestraArbol.set(listaAs);\n });\n\n if (this.checkbox()) {\n this.chkLista.agregarControles(res, this.campoId());\n this.checkboxSeleccionados().forEach((chkSel: any) => {\n this.chkLista.setState(chkSel[this.campoId()], true);\n });\n this.emitirModeloCheck();\n }\n }\n });\n }\n\n idTablaValor(data: any): string {\n if (data) {\n const idTablaVal = this._idTabla();\n if (idTablaVal.length < 1) {\n return shortHash(JSON.stringify({data, claseFinal: undefined}));\n }\n return idTablaVal.map(d => data[d]).join('-');\n }\n return '';\n }\n\n propiedadSeleccion(item: any): string {\n return `${this.nombreColeccion()}_${this.idTablaValor(item)}`;\n }\n\n esSeleccionActual(item: any): boolean {\n return this._seleccionado() === this.propiedadSeleccion(item);\n }\n\n seleccionarItem(item?: any, forzado: boolean = false): void {\n const idItem = this.propiedadSeleccion(item);\n if (forzado) {\n this._seleccionado.set(idItem);\n } else {\n this._seleccionado.update(current => current === idItem ? null : idItem);\n }\n const objSel = this.objSeleccionado();\n this.selectionModelChange.emit(objSel);\n this.seleccionado.emit(objSel);\n }\n\n hasChild = (_: number, node: any) => {\n const strHijo = this.strHijoContainer();\n return !!node[strHijo] && node[strHijo].length > 0;\n };\n\n opcMenu(v: any) {\n const opAdic: any = {seccion: this.nombreColeccion()};\n opAdic['itemSeleccionado'] = this.objSeleccionado();\n }\n\n emitirModeloCheck() {\n this.listaCheck.emit(<any[]>this.chkLista.generarLista());\n this.listaCheckObj.emit(<object>this.chkLista.generarLista('object'));\n }\n\n cambiarPadre(checkActual: T, estado: boolean): void {\n const parentId = (checkActual as any)[this.campoIdPadre()];\n if (parentId) {\n // Fix: buscar en listaOriginal en lugar de listaMuestraArbol\n const listaOrig = this.listaOriginal();\n const padreAct = listaOrig.find((itm: any) => itm[this.campoId()] === parentId);\n if (padreAct) {\n this.chkLista.setState(parentId, this.hijosActivos('checked', padreAct) || this.hijosActivos('indeterminate', padreAct));\n this.cambiarPadre(padreAct, estado);\n }\n }\n }\n\n cambiarCheck(checkActual: T, estado: boolean): void {\n if (this.hasChild(0, checkActual)) {\n (this.treeControl.getChildren(checkActual) ?? []).forEach((vas: any) => {\n this.cambiarCheck(vas, estado);\n });\n }\n this.cambiarPadre(checkActual, estado);\n this.chkLista.setState((checkActual as any)[this.campoId()], estado);\n }\n\n hijosActivos(tipo: 'checked' | 'indeterminate', checkActual: T): boolean {\n let totalHijos = 0;\n let cantActivo = 0;\n if (this.hasChild(0, checkActual)) {\n (this.treeControl.getChildren(checkActual) ?? []).forEach((vas: any) => {\n if (this.chkLista.getState(vas[this.campoId()] + '')) {\n cantActivo++;\n }\n totalHijos++;\n });\n }\n\n switch (tipo) {\n case 'checked':\n return (cantActivo === totalHijos);\n case 'indeterminate':\n // Fix: remover efecto secundario\n return ((cantActivo > 0) && (cantActivo !== totalHijos));\n }\n return false;\n }\n\n classFila(item: any): string[] {\n let claseFinal: any[] = [];\n const campoAnul = this.campoAnulado();\n if (campoAnul && (item[campoAnul] === 1)) {\n claseFinal = claseFinal.concat(this.classAnulado());\n }\n const objSel = this.objSeleccionado();\n if (objSel === item || this.esSeleccionActual(item)) {\n claseFinal = claseFinal.concat(this.classSeleccionado());\n }\n const condClases = this.condicionesClaseFila();\n claseFinal = claseFinal.concat(condClases(item));\n // Fix: no mutar el objeto original\n return claseFinal;\n }\n}\n","<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.hidden]=\"!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 [indeterminate]=\"hasChild(0, node) && hijosActivos('indeterminate', node)\"\n [checked]=\"hasChild(0, node) ? hijosActivos('checked', node) : chkLista.modelosChk[node[campoId()]]\">\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","// export {};\n// import './src/styles.scss';\n\nexport * from './dialog-flotante';\n// export * from './progress-spinner';\nexport * from './tabla-mantenimiento';\nexport * from './tabla-mantenimiento/components/progress-bar';\nexport * from './luces-navidad';\nexport * from './mat-suffix-search-button';\nexport * from './menu';\nexport * from './lista-arbol/public-api'\n\n\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i3","i4","i5","i4.ProgressBarComponent","i4.NoSanitizePipe","i5.ZeroFillPipe","i6","i7","i8","i9.ColumnTypeTextComponent","i10.ColumnTypeMoneyComponent","i11.ColumnTypeNumberComponent","i12.ColumnTypeDateComponent","i13.ColumnTypeIconsComponent","i14.ColumnTypeSinoComponent","i15.ColumnTypeProgressbarComponent","i3.TablaMantenimientoService","i10","i11","i13","DataModel"],"mappings":"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"}