import { ElementRef, OnDestroy, TemplateRef } from '@angular/core'; import { TABLE_EVENTS } from '../../../enums/table-events'; import { TsiColumnDefDirective } from '../../../directivas/tables/tsi-column-def.directive'; import { CellRender, CellRendered } from '../../../models/cell-rendered'; import { TableData } from '../../../models/table-data.model'; import { SelectedRow } from '../../../models/selected-row'; import * as i0 from "@angular/core"; export interface PivotFlatItem { _level: number; _hasChildren: boolean; _isExpanded: boolean; _isLoading: boolean; idListTsi: string; _format?: Record; [key: string]: any; } /** * Tabla pivot con expansión multi-nivel y virtual scroll nativo. * Cada fila puede expandirse para mostrar sub-filas, que a su vez pueden * expandirse en más niveles. El virtual scroll opera sobre el array plano * generado a partir del estado de expansión actual. * * @Input rows - Filas raíz con hijos anidados * @Input columns - Definición de columnas (mismo modelo que table-ultimate) * @Input childrenKey - Propiedad que contiene los hijos de cada nodo (default: 'children') * @Input identifier - Campos que forman la clave única del row (para IDs estables) * @Input rowHeight - Alto fijo de cada fila en px (default: 32) * @Input buffer - Filas extra fuera del viewport para scroll suave (default: 10) * @Input altoContenedor - Alto fijo del contenedor en px (default: 400) * @Input altoContainer - Offset desde el top del viewport para calcular height con clamp * @Input minAlto - Alto mínimo cuando se usa altoContainer (default: 200) * @Input withFiltro - Mostrar barra de búsqueda * @Input withCheckbox - Mostrar checkboxes de selección * @Input lazyLoad - Activa carga diferida de hijos (emite expandEvent) * @Input indentSize - Píxeles de indentación por nivel (default: 20) * @Input maxLevels - Límite de niveles expandibles (0 = sin límite). A partir del * último nivel permitido no se muestra el chevron de expandir, * aunque `lazyLoad` esté activo. * @Input hasChildrenKey - Campo del dato origen que indica si el nodo tiene hijos * (ej. 'tieneHijos'). Con `lazyLoad` activo, sin este campo se * asume que toda fila puede tener hijos hasta que se consulten; * definiéndolo, las filas hoja no muestran chevron. * @Input customLevels - Niveles que renderizan su bloque de datos con `#levelTemplate` * en vez de la grilla de `columns` (permite que cada nivel tenga * su propia organización/estructura visual) */ export declare class TableUltimatePivotComponent implements OnDestroy { scrollContainer: import("@angular/core").Signal>; customActions: import("@angular/core").Signal>; contentFilter: import("@angular/core").Signal>; /** Template opcional para reemplazar el bloque de columnas de datos en los * niveles declarados en `customLevels`. Contexto: { $implicit: row, level, columns }. */ levelTemplate: import("@angular/core").Signal>; /** Templates `` proyectados para columnas específicas * (misma convención que table-ultimate). Tienen prioridad sobre `col.template`. */ columnDefs: import("@angular/core").Signal; columnDefMap: import("@angular/core").Signal>>; private formateador; rows: import("@angular/core").InputSignal; columns: import("@angular/core").InputSignal; childrenKey: import("@angular/core").InputSignal; rowHeight: import("@angular/core").InputSignal; buffer: import("@angular/core").InputSignal; altoContainer: import("@angular/core").InputSignal; altoContenedor: import("@angular/core").InputSignal; minAlto: import("@angular/core").InputSignal; identifier: import("@angular/core").InputSignal; withFiltro: import("@angular/core").InputSignal; withCheckbox: import("@angular/core").InputSignal; withHeight: import("@angular/core").InputSignal; lazyLoad: import("@angular/core").InputSignal; indentSize: import("@angular/core").InputSignal; maxLevels: import("@angular/core").InputSignal; /** Nombre del campo del dato origen que indica explícitamente si el nodo tiene hijos * (ej. 'tieneHijos'). Útil con `lazyLoad`: sin esto, todo nodo se asume expandible * porque no se conocen sus hijos hasta pedirlos; si el backend ya informa qué filas * son hoja, declarar esta propiedad evita mostrar el chevron (y disparar el lazy load) * en esas filas. Si no se define, se mantiene el comportamiento por defecto. */ hasChildrenKey: import("@angular/core").InputSignal; /** Niveles (0-based) cuyo bloque de datos se delega al `#levelTemplate` proyectado, * en lugar de la grilla estándar de `columns`. Ej: [1, 2]. * Las filas de estos niveles no muestran el chevron de expandir propio: si el nivel * tiene descendientes, delega esa jerarquía al widget/tabla que renderices dentro del * template (ej. anidando otro `app-table-ultimate-pivot` con `[rows]="row.children"`). */ customLevels: import("@angular/core").InputSignal; rendered: import("@angular/core").InputSignal; rowClassFn: import("@angular/core").InputSignal<(row: any) => string | string[] | Record>; /** Fieldname de la columna que actúa como disparador de expansión. * Cuando se define, el ícono se incrusta en esa celda y desaparece la columna dedicada. */ expandOn: import("@angular/core").InputSignal; variante: import("@angular/core").InputSignal<"estandar" | "modern">; withCellSelect: import("@angular/core").InputSignal; rowEvent: import("@angular/core").OutputEmitterRef<{ usecase: TABLE_EVENTS; data: any; }>; cellEvent: import("@angular/core").OutputEmitterRef<{ row: any; field: string; value: any; formatted: any; level: number; }>; /** Emitido al expandir un nodo en modo lazyLoad. El padre debe cargar los hijos * e inyectarlos en `rows`, luego llamar `finishLazyLoad(parentId)` en el componente. */ expandEvent: import("@angular/core").OutputEmitterRef<{ row: PivotFlatItem; level: number; }>; selectedRow: import("@angular/core").ModelSignal; selectItems: import("@angular/core").ModelSignal[]>; selectedCell: import("@angular/core").ModelSignal<{ rowId: string; field: string; }>; busqueda: import("@angular/core").WritableSignal; scrollTop: import("@angular/core").WritableSignal; containerHeight: import("@angular/core").WritableSignal; expandedIds: import("@angular/core").WritableSignal>; loadingIds: import("@angular/core").ModelSignal>; sortField: import("@angular/core").WritableSignal; sortDir: import("@angular/core").WritableSignal<"none" | "desc" | "asc">; heightStyle: import("@angular/core").Signal; processedTree: import("@angular/core").Signal; private processLevel; fullFlatTree: import("@angular/core").Signal; private flattenAll; expandedFlatList: import("@angular/core").Signal; private flattenVisible; rowFilter: import("@angular/core").Signal; private sortFlatList; colSpan: import("@angular/core").Signal; dataColSpan: import("@angular/core").Signal; totalHeight: import("@angular/core").Signal; startIndex: import("@angular/core").Signal; endIndex: import("@angular/core").Signal; visibleRows: import("@angular/core").Signal; paddingTop: import("@angular/core").Signal; paddingBottom: import("@angular/core").Signal; private resizeObserver?; private resizeEffect; private scrollEffect; ngOnDestroy(): void; onScroll(event: Event): void; private scrollToSelected; selectRow(row: PivotFlatItem, idList: string): void; isSelected(row: PivotFlatItem, idList: string): boolean; toggleExpand(event: MouseEvent, row: PivotFlatItem): void; private removeDescendantIds; /** Llama desde el padre tras inyectar hijos en lazyLoad para quitar el spinner */ finishLazyLoad(parentId: string): void; getIndentPx(level: number): string; getLevelClass(level: number): string; textoDigitado(event: Event): void; filtrarColumnas: import("@angular/core").Signal>; toggleFiltros(event: Event): void; private filtraItem; getHighlight(text: any, fieldname: string): string; toggleSort(field: string): void; allCheck(event: Event): void; validaAllCheck(): boolean; isItemSelected(id: string): boolean; toogleItem(idList: string, event: Event): void; resolveCell(col: string, row: any): CellRender | null; getPosition(col: TableData): string; validaVisibilidad(value: boolean): boolean; visibilidadColumn: import("@angular/core").Signal>; onDoubleClick(row: PivotFlatItem): void; onCellClick(event: MouseEvent, row: PivotFlatItem, field: string): void; isCellSelected(rowId: string, field: string): boolean; onRightClick(event: MouseEvent, row: PivotFlatItem): void; concatenarValue(obj: any, fields: string[]): string; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; }