@jvsoft/components 0.0.13-alpha.3 → 1.0.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dialog-flotante/README.md +169 -0
- package/dialog-flotante/dialog-flotante.component.d.ts +13 -22
- package/fesm2022/jvsoft-components-dialog-flotante.mjs +49 -82
- package/fesm2022/jvsoft-components-dialog-flotante.mjs.map +1 -1
- package/fesm2022/jvsoft-components-filtro-busqueda.mjs +660 -0
- package/fesm2022/jvsoft-components-filtro-busqueda.mjs.map +1 -0
- package/fesm2022/jvsoft-components-lista-arbol.mjs +121 -145
- package/fesm2022/jvsoft-components-lista-arbol.mjs.map +1 -1
- package/fesm2022/jvsoft-components-mat-suffix-search-button.mjs +4 -2
- package/fesm2022/jvsoft-components-mat-suffix-search-button.mjs.map +1 -1
- package/fesm2022/jvsoft-components-tabla-mantenimiento-components-progress-bar.mjs +1 -1
- package/fesm2022/jvsoft-components-tabla-mantenimiento-components-progress-bar.mjs.map +1 -1
- package/fesm2022/jvsoft-components-tabla-mantenimiento.mjs +107 -61
- package/fesm2022/jvsoft-components-tabla-mantenimiento.mjs.map +1 -1
- package/fesm2022/jvsoft-components.mjs +928 -301
- package/fesm2022/jvsoft-components.mjs.map +1 -1
- package/filtro-busqueda/README.md +156 -0
- package/filtro-busqueda/filtro-busqueda.component.d.ts +89 -0
- package/filtro-busqueda/filtro-busqueda.component.scss +98 -0
- package/filtro-busqueda/filtro-busqueda.service.d.ts +40 -0
- package/filtro-busqueda/index.d.ts +5 -0
- package/filtro-busqueda/interfaces/filtro-busqueda.interface.d.ts +86 -0
- package/filtro-busqueda/public-api.d.ts +3 -0
- package/index.d.ts +1 -0
- package/lista-arbol/README.md +268 -0
- package/lista-arbol/lista-arbol.component.d.ts +36 -37
- package/package.json +17 -14
- package/src/styles/base-jvsoft-components.css +6 -4
- package/src/styles/base.scss +1 -0
- package/tabla-mantenimiento/interfaces/global/columnas-tabla.d.ts +9 -10
- package/tabla-mantenimiento/interfaces/global/otros.d.ts +1 -0
- package/tabla-mantenimiento/tabla-mantenimiento-column-defs/column-type/column-type.module.d.ts +2 -1
- package/tabla-mantenimiento/tabla-mantenimiento.component.d.ts +15 -8
- package/tabla-mantenimiento/tabla-mantenimiento.component.scss +14 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jvsoft-components-lista-arbol.mjs","sources":["../../../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/lista-arbol/jvsoft-components-lista-arbol.ts"],"sourcesContent":["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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAM,SAAU,YAAY,CAAC,MAO5B,EAAA;AACG,IAAA,MAAM,EACF,KAAK,EACL,OAAO,EACP,YAAY,EACZ,OAAO,GAAG,IAAI,EACd,WAAW,GAAG,OAAO,EACrB,UAAU,GACb,GAAG,MAAM;AAEV,IAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,OAAO,CAAC;IAE5D,IAAI,UAAU,EAAE;QACZ,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;AAChB,YAAA,MAAM,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC;AACxB,YAAA,MAAM,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC;YAExB,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;AAClD,gBAAA,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC;;YAE/B,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;gBAClD,OAAO,EAAE,GAAG,EAAE;;AAElB,YAAA,OAAO,CAAC;AACZ,SAAC,CAAC;;IAGN,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK;AACnB,QAAA,GAAG,CAAC;AACJ,QAAA,CAAC,WAAW,GAAG,YAAY,CAAC;YACxB,KAAK;YACL,OAAO;YACP,YAAY;AACZ,YAAA,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC;YACnB,WAAW;YACX,UAAU;SACb,CAAC;AACL,KAAA,CAAC,CAAC;AACP;;MCpBa,mBAAmB,CAAA;AACnB,IAAA,gBAAgB;AAChB,IAAA,eAAe;IACf,QAAQ,GAAG,KAAK;IAChB,iBAAiB,GAAG,KAAK;IACzB,qBAAqB,GAAQ,EAAE;AAE/B,IAAA,OAAO;AACP,IAAA,YAAY;AACZ,IAAA,QAAQ;AACR,IAAA,UAAU;IACV,gBAAgB,GAAG,OAAO;AAC1B,IAAA,cAAc;IACd,iBAAiB,GAAa,CAAC,mBAAmB,EAAE,cAAc,EAAE,8BAA8B,CAAC;IACnG,YAAY,GAAa,CAAC,cAAc,EAAE,UAAU,EAAE,QAAQ,CAAC;AAC/D,IAAA,YAAY;AACZ,IAAA,eAAe;AACf,IAAA,gBAAgB;AAChB,IAAA,oBAAoB,GAA0B,MAAM,EAAE;IAE/D,IAAa,cAAc,CAAC,GAAwB,EAAA;AAChD,QAAA,IAAI,CAAC,eAAe,GAAG,GAAG;;AAEpB,IAAA,oBAAoB,GAAG,IAAI,YAAY,EAAuB;AAE9D,IAAA,YAAY,GAAG,IAAI,YAAY,EAAO;AACtC,IAAA,UAAU,GAAG,IAAI,YAAY,EAAO;AACpC,IAAA,aAAa,GAAG,IAAI,YAAY,EAAuB;IAEzD,QAAQ,GAAa,EAAE;AAE/B,IAAA,IAAI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ;;IAGxB,IAA6B,OAAO,CAAC,GAAsB,EAAA;AACvD,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACpB,YAAA,IAAI,CAAC,QAAQ,GAAG,GAAG;;aAElB;AACD,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;;;AAI/B,IAAA,IAAI,sBAAsB,GAAA;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAChG,OAAO,IAAI,IAAI,IAAI;;AAEvB,IAAA,IAAI,eAAe,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC;;IAGvC,IAAI,eAAe,CAAC,GAAQ,EAAA;AACxB,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC;;AAGnC,IAAA,QAAQ,GAAG,IAAI,SAAS,EAAE;IAC1B,iBAAiB,GAAQ,EAAE;IAC3B,aAAa,GAAQ,EAAE;AAEvB,IAAA,WAAW,GAAG,IAAI,iBAAiB,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAE/E,aAAa,GAAQ,EAAE;IAEvB,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,IAAG;YAClC,IAAI,GAAG,EAAE;AACL,gBAAA,IAAI,CAAC,aAAa,GAAG,GAAG;gBACxB,MAAM,OAAO,GAAG,YAAY,CAAC;AACzB,oBAAA,KAAK,EAAE,GAAG;oBACV,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,YAAY,EAAE,IAAI,CAAC,YAAY;AAC/B,oBAAA,OAAO,EAAE,IAAI;oBACb,WAAW,EAAE,IAAI,CAAC,gBAAgB;oBAClC,UAAU,EAAE,IAAI,CAAC;AACpB,iBAAA,CAAC;AACF,gBAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE;gBAC3B,UAAU,CAAC,MAAK;AACZ,oBAAA,IAAI,CAAC,iBAAiB,GAAG,OAAO;iBACnC,EAAE,CAAC,CAAC;AACL,gBAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACf,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC;oBACjD,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,MAAW,KAAI;AAC/C,wBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC;AACtD,qBAAC,CAAC;oBACF,IAAI,CAAC,iBAAiB,EAAE;;;AAGpC,SAAC,CAAC;;AAIN,IAAA,YAAY,CAAC,IAAS,EAAA;QAClB,IAAI,IAAI,EAAE;YACN,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,gBAAA,OAAO,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAC,CAAC,CAAC;;YAEnE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;;AAEnD,QAAA,OAAO,EAAE;;AAGb,IAAA,kBAAkB,CAAC,IAAS,EAAA;AACxB,QAAA,OAAO,CAAG,EAAA,IAAI,CAAC,eAAe,CAAI,CAAA,EAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA,CAAE;;AAG/D,IAAA,iBAAiB,CAAC,IAAS,EAAA;QACvB,OAAO,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;;AAE/D,IAAA,eAAe,CAAC,IAAU,EAAE,OAAA,GAAmB,KAAK,EAAA;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;QAC5C,IAAI,OAAO,EAAE;AACT,YAAA,IAAI,CAAC,aAAa,GAAG,MAAM;;aAE1B;AACD,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,KAAK,MAAM,GAAG,IAAI,GAAC,MAAM;;QAEpE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;QACpD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;;IAIhD,QAAQ,GAAG,CAAC,CAAS,EAAE,IAAS,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,GAAG,CAAC;AAG5G,IAAA,OAAO,CAAC,CAAM,EAAA;;;QAGV,MAAM,MAAM,GAAQ,EAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAC;AACnD,QAAA,MAAM,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC,eAAe;;;;IAKrD,iBAAiB,GAAA;AACb,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAQ,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;AACzD,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAS,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;;IAIzE,YAAY,CAAC,WAAc,EAAE,MAAe,EAAA;QACxC,MAAM,QAAQ,GAAI,WAAmB,CAAC,IAAI,CAAC,YAAY,CAAC;QACxD,IAAI,QAAQ,EAAE;YACV,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,GAAQ,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC;YACzF,IAAI,QAAQ,EAAE;gBACV,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;AACxH,gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC;;;;IAK/C,YAAY,CAAC,WAAc,EAAE,MAAe,EAAA;QACxC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE;AAC/B,YAAA,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,GAAQ,KAAI;AACnE,gBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC;AAClC,aAAC,CAAC;;AAEN,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC;AACtC,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAE,WAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;;IAGtE,YAAY,CAAC,IAAiC,EAAE,WAAc,EAAA;QAC1D,IAAI,UAAU,GAAG,CAAC;QAClB,IAAI,UAAU,GAAG,CAAC;QAClB,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE;AAC/B,YAAA,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,GAAQ,KAAI;AACnE,gBAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE;AAChD,oBAAA,UAAU,EAAE;;AAEhB,gBAAA,UAAU,EAAE;AAChB,aAAC,CAAC;;QAGN,QAAQ,IAAI;AACR,YAAA,KAAK,SAAS;AACV,gBAAA,QAAQ,UAAU,IAAI,UAAU;AACpC,YAAA,KAAK,eAAe;AAChB,gBAAA,IAAI,UAAU,IAAI,UAAU,EAAE;AAC1B,oBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAE,WAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC;;AAEpE,gBAAA,QAAQ,CAAC,UAAU,GAAG,CAAC,MAAM,UAAU,IAAI,UAAU,CAAC;;AAE9D,QAAA,OAAO,KAAK;;AAGhB,IAAA,SAAS,CAAC,IAAS,EAAA;QACf,IAAI,UAAU,GAAU,EAAE;AAC1B,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE;YACrD,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;;AAErD,QAAA,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;YAC9D,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;;AAE1D,QAAA,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAC/D,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;AAC5B,QAAA,OAAO,UAAU;;wGAnMZ,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzBhC,q+EA4CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED3BQ,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,4BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAIZ,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAZ/B,SAAS;+BACI,iBAAiB,EAAA,UAAA,EACf,IAAI,EACP,OAAA,EAAA;wBACL,YAAY;wBACZ,WAAW;wBACX,aAAa;wBACb,aAAa;wBACb,iBAAiB;AACpB,qBAAA,EAAA,QAAA,EAAA,q+EAAA,EAAA;8BAIQ,gBAAgB,EAAA,CAAA;sBAAxB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,iBAAiB,EAAA,CAAA;sBAAzB;gBACQ,qBAAqB,EAAA,CAAA;sBAA7B;gBAEQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,QAAQ,EAAA,CAAA;sBAAhB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBACQ,iBAAiB,EAAA,CAAA;sBAAzB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,eAAe,EAAA,CAAA;sBAAvB;gBACQ,gBAAgB,EAAA,CAAA;sBAAxB;gBACQ,oBAAoB,EAAA,CAAA;sBAA5B;gBAEY,cAAc,EAAA,CAAA;sBAA1B;gBAGS,oBAAoB,EAAA,CAAA;sBAA7B;gBAES,YAAY,EAAA,CAAA;sBAArB;gBACS,UAAU,EAAA,CAAA;sBAAnB;gBACS,aAAa,EAAA,CAAA;sBAAtB;gBAQ4B,OAAO,EAAA,CAAA;sBAAnC,KAAK;uBAAC,EAAC,QAAQ,EAAE,IAAI,EAAC;;;AE5D3B;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"jvsoft-components-lista-arbol.mjs","sources":["../../../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/lista-arbol/jvsoft-components-lista-arbol.ts"],"sourcesContent":["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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,8 @@ class MatSuffixSearchButtonComponent {
|
|
|
11
11
|
return this.fControl;
|
|
12
12
|
}
|
|
13
13
|
emitirClick() {
|
|
14
|
+
if (this.control.disabled)
|
|
15
|
+
return;
|
|
14
16
|
if (this.control.value) {
|
|
15
17
|
this.control.reset();
|
|
16
18
|
this.eventLimpiar.emit(true);
|
|
@@ -20,7 +22,7 @@ class MatSuffixSearchButtonComponent {
|
|
|
20
22
|
}
|
|
21
23
|
}
|
|
22
24
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: MatSuffixSearchButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
23
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
25
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: MatSuffixSearchButtonComponent, isStandalone: true, selector: "div[matSuffix][matSuffixSearchButton]", inputs: { fControl: "fControl" }, outputs: { eventLimpiar: "eventLimpiar", eventBuscar: "eventBuscar" }, host: { classAttribute: "flex items-center justify-start" }, ngImport: i0, template: "@if (!control.disabled) {\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}\n", dependencies: [{ kind: "directive", type: MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
|
24
26
|
}
|
|
25
27
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: MatSuffixSearchButtonComponent, decorators: [{
|
|
26
28
|
type: Component,
|
|
@@ -29,7 +31,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
29
31
|
MatIcon
|
|
30
32
|
], host: {
|
|
31
33
|
class: 'flex items-center justify-start',
|
|
32
|
-
}, template: "<button matRipple type=\"button\" class=\"boton-circular-gris\"\n
|
|
34
|
+
}, template: "@if (!control.disabled) {\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}\n" }]
|
|
33
35
|
}], propDecorators: { fControl: [{
|
|
34
36
|
type: Input,
|
|
35
37
|
args: [{ required: true }]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jvsoft-components-mat-suffix-search-button.mjs","sources":["../../../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/mat-suffix-search-button/jvsoft-components-mat-suffix-search-button.ts"],"sourcesContent":["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
|
|
1
|
+
{"version":3,"file":"jvsoft-components-mat-suffix-search-button.mjs","sources":["../../../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/mat-suffix-search-button/jvsoft-components-mat-suffix-search-button.ts"],"sourcesContent":["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.disabled) return;\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","@if (!control.disabled) {\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}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAgBa,8BAA8B,CAAA;AACd,IAAA,QAAQ;AACvB,IAAA,YAAY,GAAsB,IAAI,YAAY,EAAE;AACpD,IAAA,WAAW,GAAsB,IAAI,YAAY,EAAE;AAE7D,IAAA,IAAI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ;;IAGxB,WAAW,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ;YAAE;AAC3B,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACpB,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AACpB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;;aAE3B;AACD,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;;wGAhB1B,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA9B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,EChB3C,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,iCAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,uSAOA,EDCQ,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,SAAS,wPACT,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAOF,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAX1C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uCAAuC,EACxC,OAAA,EAAA;wBACL,SAAS;wBACT;qBACH,EAEK,IAAA,EAAA;AACF,wBAAA,KAAK,EAAE,iCAAiC;AAC3C,qBAAA,EAAA,QAAA,EAAA,uSAAA,EAAA;8BAGwB,QAAQ,EAAA,CAAA;sBAAhC,KAAK;uBAAC,EAAC,QAAQ,EAAE,IAAI,EAAC;gBACb,YAAY,EAAA,CAAA;sBAArB;gBACS,WAAW,EAAA,CAAA;sBAApB;;;AEnBL;;AAEG;;;;"}
|
|
@@ -61,7 +61,7 @@ class ProgressBarComponent {
|
|
|
61
61
|
}
|
|
62
62
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ProgressBarComponent, decorators: [{
|
|
63
63
|
type: Component,
|
|
64
|
-
args: [{ selector: 'jvs-progress-bar', imports: [
|
|
64
|
+
args: [{ selector: 'jvs-progress-bar', standalone: true, imports: [
|
|
65
65
|
CommonModule,
|
|
66
66
|
DecimalPipe
|
|
67
67
|
], host: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jvsoft-components-tabla-mantenimiento-components-progress-bar.mjs","sources":["../../../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/components/progress-bar/public-api.ts","../../../projects/components/tabla-mantenimiento/components/progress-bar/jvsoft-components-tabla-mantenimiento-components-progress-bar.ts"],"sourcesContent":["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","export * from './progress-bar.component';\n// export * from './progress-spinner.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"jvsoft-components-tabla-mantenimiento-components-progress-bar.mjs","sources":["../../../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/components/progress-bar/public-api.ts","../../../projects/components/tabla-mantenimiento/components/progress-bar/jvsoft-components-tabla-mantenimiento-components-progress-bar.ts"],"sourcesContent":["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 standalone: true,\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","export * from './progress-bar.component';\n// export * from './progress-spinner.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|