ng-components-tsi 0.0.76 → 0.0.78

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.
@@ -7,13 +7,13 @@ export declare class MdGenericoComponent {
7
7
  continuar2: import("@angular/core").OutputEmitterRef<void>;
8
8
  cerrar: import("@angular/core").OutputEmitterRef<void>;
9
9
  scrollable: import("@angular/core").InputSignal<boolean>;
10
- type: import("@angular/core").InputSignal<"1" | "2" | "3" | "4" | "7" | "5" | "6" | "APROB">;
10
+ type: import("@angular/core").InputSignal<"1" | "2" | "3" | "4" | "5" | "6" | "7" | "APROB">;
11
11
  content: import("@angular/core").Signal<TemplateRef<any>>;
12
12
  footer: import("@angular/core").Signal<TemplateRef<any>>;
13
13
  showCancelar: import("@angular/core").InputSignal<boolean>;
14
14
  showAlerta: import("@angular/core").InputSignal<boolean>;
15
15
  textAlerta: import("@angular/core").InputSignal<string>;
16
- sizeTitle: import("@angular/core").InputSignal<"1" | "2" | "3" | "4" | "7" | "5" | "6" | "9" | "8">;
16
+ sizeTitle: import("@angular/core").InputSignal<"1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9">;
17
17
  showFiltro: import("@angular/core").InputSignal<boolean>;
18
18
  withFiltro: import("@angular/core").ModelSignal<boolean>;
19
19
  dataFiltro: import("@angular/core").InputSignal<boolean>;
@@ -1,4 +1,4 @@
1
1
  export type ColorType = 'azul' | 'rojo' | 'rojo_alerta' | 'verde' | 'negro' | 'amarillo' | 'gris' | 'plomo' | 'none' | undefined;
2
2
  export type ButtonVariant = 'estandar' | 'modern' | 'link';
3
3
  export type OutlineType = 'azul' | 'rojo' | 'verde' | 'negro' | 'amarillo' | 'gris' | 'plomo' | undefined;
4
- export type IconType = 'agregar' | 'buscar' | 'guardar' | 'nocancelar' | 'cancelar' | 'cancelar2' | 'marcar' | 'atras' | 'adelante' | 'eliminar' | 'imprimir' | 'subir' | 'ver' | 'bajar' | 'comentario' | 'editar' | 'calcular' | 'aprobar' | 'desaprobar' | 'check' | 'excel' | 'pdf' | 'refresh' | 'cerrar' | 'visar' | 'anular' | 'trazabilidad' | 'bloquear' | 'desbloquear' | 'correo' | 'usuario' | 'enviarSunat' | 'descargar' | 'borrar' | 'lista' | 'monedas' | 'caja' | 'cerrar_caja' | 'abrir_caja' | 'liquidar' | 'configuracion' | 'contrato' | 'sunat' | 'bcp' | 'ibk' | 'bbva' | 'bnacion' | 'folder' | 'folder_open' | 'detail' | 'reloj' | undefined;
4
+ export type IconType = 'agregar' | 'buscar' | 'guardar' | 'nocancelar' | 'cancelar' | 'cancelar2' | 'marcar' | 'atras' | 'adelante' | 'eliminar' | 'imprimir' | 'subir' | 'ver' | 'bajar' | 'comentario' | 'editar' | 'calcular' | 'aprobar' | 'desaprobar' | 'check' | 'excel' | 'pdf' | 'refresh' | 'cerrar' | 'visar' | 'anular' | 'trazabilidad' | 'bloquear' | 'desbloquear' | 'correo' | 'usuario' | 'enviarSunat' | 'descargar' | 'borrar' | 'lista' | 'monedas' | 'caja' | 'cerrar_caja' | 'abrir_caja' | 'liquidar' | 'configuracion' | 'contrato' | 'sunat' | 'bcp' | 'ibk' | 'bbva' | 'bnacion' | 'banbif' | 'scotia' | 'folder' | 'folder_open' | 'detail' | 'reloj' | undefined;
@@ -13,6 +13,8 @@ export declare class TableData {
13
13
  condition?: (row: any) => boolean;
14
14
  template?: any;
15
15
  totalizable?: boolean;
16
+ /** Fija la columna al hacer scroll horizontal (table-ultimate-pinned). true = 'right' */
17
+ pinned?: boolean | 'left' | 'right';
16
18
  promedioSimple?: boolean;
17
19
  promedioPonderado?: boolean;
18
20
  cantidadPonderado?: boolean;
@@ -7,12 +7,12 @@ export declare class InputComponent {
7
7
  iconButton: import("@angular/core").InputSignal<string>;
8
8
  classButton: import("@angular/core").InputSignal<string>;
9
9
  isRequired: import("@angular/core").InputSignal<boolean>;
10
- type: import("@angular/core").InputSignal<"number" | "select" | "time" | "text" | "text-area" | "date" | "number-format-decimal" | "number-integer" | "day" | "input-switch">;
11
- typeStandar: import("@angular/core").WritableSignal<"number" | "select" | "time" | "text" | "text-area" | "date" | "number-format-decimal" | "number-integer" | "day" | "input-switch">;
12
- position: import("@angular/core").InputSignal<"start" | "end" | "center">;
10
+ type: import("@angular/core").InputSignal<"number" | "date" | "select" | "time" | "text" | "text-area" | "number-format-decimal" | "number-integer" | "day" | "input-switch">;
11
+ typeStandar: import("@angular/core").WritableSignal<"number" | "date" | "select" | "time" | "text" | "text-area" | "number-format-decimal" | "number-integer" | "day" | "input-switch">;
12
+ position: import("@angular/core").InputSignal<"start" | "center" | "end">;
13
13
  value: import("@angular/core").ModelSignal<any>;
14
14
  value2: import("@angular/core").ModelSignal<any>;
15
- position_row: import("@angular/core").InputSignal<"start" | "end" | "center">;
15
+ position_row: import("@angular/core").InputSignal<"start" | "center" | "end">;
16
16
  withChangeInput: import("@angular/core").InputSignal<boolean>;
17
17
  disabled: import("@angular/core").ModelSignal<boolean>;
18
18
  isImportant: import("@angular/core").InputSignal<boolean>;
@@ -8,7 +8,7 @@ export declare class InputRadioComponent {
8
8
  position: import("@angular/core").InputSignal<"row" | "column">;
9
9
  onlyRow: import("@angular/core").InputSignal<boolean>;
10
10
  value: import("@angular/core").ModelSignal<any>;
11
- position_row: import("@angular/core").InputSignal<"start" | "end" | "center">;
11
+ position_row: import("@angular/core").InputSignal<"start" | "center" | "end">;
12
12
  disabled: import("@angular/core").ModelSignal<boolean>;
13
13
  lista: import("@angular/core").InputSignal<any[]>;
14
14
  keyCodigo: import("@angular/core").InputSignal<string>;
@@ -7,7 +7,7 @@ export declare class ListOptionComponent {
7
7
  name: import("@angular/core").InputSignal<string>;
8
8
  position: import("@angular/core").InputSignal<"row" | "column">;
9
9
  value: import("@angular/core").ModelSignal<any>;
10
- position_row: import("@angular/core").InputSignal<"start" | "end" | "center">;
10
+ position_row: import("@angular/core").InputSignal<"start" | "center" | "end">;
11
11
  disabled: import("@angular/core").ModelSignal<boolean>;
12
12
  lista: import("@angular/core").InputSignal<any[]>;
13
13
  keyCodigo: import("@angular/core").InputSignal<string>;
@@ -2,7 +2,7 @@ import * as i0 from "@angular/core";
2
2
  export declare class PaginadorComponent {
3
3
  total: import("@angular/core").InputSignal<number>;
4
4
  limit: import("@angular/core").InputSignal<number>;
5
- position: import("@angular/core").InputSignal<"start" | "end" | "center">;
5
+ position: import("@angular/core").InputSignal<"start" | "center" | "end">;
6
6
  loaddata: import("@angular/core").InputSignal<(params: {
7
7
  offset: number;
8
8
  limit: number;
@@ -50,7 +50,7 @@ export declare class TableUltimateComponent implements OnDestroy {
50
50
  withTotal: import("@angular/core").InputSignal<boolean>;
51
51
  withHeight: import("@angular/core").InputSignal<boolean>;
52
52
  withAttachment: import("@angular/core").InputSignal<boolean>;
53
- variante: import("@angular/core").InputSignal<"modern" | "standard">;
53
+ variante: import("@angular/core").InputSignal<"standard" | "modern">;
54
54
  rendered: import("@angular/core").InputSignal<CellRendered[]>;
55
55
  dragOverRowId: import("@angular/core").WritableSignal<any>;
56
56
  titleTabla: import("@angular/core").InputSignal<string>;
@@ -64,11 +64,11 @@ export declare class TableUltimateComponent implements OnDestroy {
64
64
  rowDisabledFn: import("@angular/core").InputSignal<(row: any) => boolean>;
65
65
  selectItems: import("@angular/core").ModelSignal<SelectedRow<any>[]>;
66
66
  rowFormat: import("@angular/core").Signal<any[]>;
67
- busqueda: import("@angular/core").WritableSignal<string>;
67
+ busqueda: import("@angular/core").ModelSignal<string>;
68
68
  scrollTop: import("@angular/core").WritableSignal<number>;
69
69
  containerHeight: import("@angular/core").WritableSignal<number>;
70
70
  sortField: import("@angular/core").WritableSignal<string>;
71
- sortDir: import("@angular/core").WritableSignal<"none" | "desc" | "asc">;
71
+ sortDir: import("@angular/core").WritableSignal<"asc" | "desc" | "none">;
72
72
  expandedRows: import("@angular/core").WritableSignal<string>;
73
73
  classTotales: import("@angular/core").InputSignal<string>;
74
74
  /** Valor aplicado como [style.height] en el template */
@@ -90,7 +90,7 @@ export declare class TableUltimateComponent implements OnDestroy {
90
90
  onScroll(event: Event): void;
91
91
  selectRow(row: any, idList: string): void;
92
92
  isSelected(row: any, idList: string): boolean;
93
- textoDigitado(event: Event): void;
93
+ textoDigitado(): void;
94
94
  toggleSort(field: string): void;
95
95
  concatenarValue(obj: any, fields: string[]): string;
96
96
  getHighlight(text: any, fieldname: string): string;
@@ -145,5 +145,5 @@ export declare class TableUltimateComponent implements OnDestroy {
145
145
  onDrop(event: DragEvent, row: any): void;
146
146
  getRows: () => any[];
147
147
  static ɵfac: i0.ɵɵFactoryDeclaration<TableUltimateComponent, never>;
148
- static ɵcmp: i0.ɵɵComponentDeclaration<TableUltimateComponent, "app-table-ultimate", never, { "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "footerRows": { "alias": "footerRows"; "required": false; "isSignal": true; }; "rowHeight": { "alias": "rowHeight"; "required": false; "isSignal": true; }; "buffer": { "alias": "buffer"; "required": false; "isSignal": true; }; "altoContainer": { "alias": "altoContainer"; "required": false; "isSignal": true; }; "altoContenedor": { "alias": "altoContenedor"; "required": false; "isSignal": true; }; "minAlto": { "alias": "minAlto"; "required": false; "isSignal": true; }; "identifier": { "alias": "identifier"; "required": false; "isSignal": true; }; "withFiltro": { "alias": "withFiltro"; "required": false; "isSignal": true; }; "withDetails": { "alias": "withDetails"; "required": false; "isSignal": true; }; "withCheckbox": { "alias": "withCheckbox"; "required": false; "isSignal": true; }; "withTotal": { "alias": "withTotal"; "required": false; "isSignal": true; }; "withHeight": { "alias": "withHeight"; "required": false; "isSignal": true; }; "withAttachment": { "alias": "withAttachment"; "required": false; "isSignal": true; }; "variante": { "alias": "variante"; "required": false; "isSignal": true; }; "rendered": { "alias": "rendered"; "required": false; "isSignal": true; }; "titleTabla": { "alias": "titleTabla"; "required": false; "isSignal": true; }; "activeMobileMode": { "alias": "activeMobileMode"; "required": false; "isSignal": true; }; "selectedRow": { "alias": "selectedRow"; "required": false; "isSignal": true; }; "rowClassFn": { "alias": "rowClassFn"; "required": false; "isSignal": true; }; "rowDisabledFn": { "alias": "rowDisabledFn"; "required": false; "isSignal": true; }; "selectItems": { "alias": "selectItems"; "required": false; "isSignal": true; }; "classTotales": { "alias": "classTotales"; "required": false; "isSignal": true; }; }, { "rowEvent": "rowEvent"; "selectedRow": "selectedRowChange"; "selectItems": "selectItemsChange"; }, ["customActions", "columnDefs", "contentFilter"], never, true, never>;
148
+ static ɵcmp: i0.ɵɵComponentDeclaration<TableUltimateComponent, "app-table-ultimate", never, { "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "footerRows": { "alias": "footerRows"; "required": false; "isSignal": true; }; "rowHeight": { "alias": "rowHeight"; "required": false; "isSignal": true; }; "buffer": { "alias": "buffer"; "required": false; "isSignal": true; }; "altoContainer": { "alias": "altoContainer"; "required": false; "isSignal": true; }; "altoContenedor": { "alias": "altoContenedor"; "required": false; "isSignal": true; }; "minAlto": { "alias": "minAlto"; "required": false; "isSignal": true; }; "identifier": { "alias": "identifier"; "required": false; "isSignal": true; }; "withFiltro": { "alias": "withFiltro"; "required": false; "isSignal": true; }; "withDetails": { "alias": "withDetails"; "required": false; "isSignal": true; }; "withCheckbox": { "alias": "withCheckbox"; "required": false; "isSignal": true; }; "withTotal": { "alias": "withTotal"; "required": false; "isSignal": true; }; "withHeight": { "alias": "withHeight"; "required": false; "isSignal": true; }; "withAttachment": { "alias": "withAttachment"; "required": false; "isSignal": true; }; "variante": { "alias": "variante"; "required": false; "isSignal": true; }; "rendered": { "alias": "rendered"; "required": false; "isSignal": true; }; "titleTabla": { "alias": "titleTabla"; "required": false; "isSignal": true; }; "activeMobileMode": { "alias": "activeMobileMode"; "required": false; "isSignal": true; }; "selectedRow": { "alias": "selectedRow"; "required": false; "isSignal": true; }; "rowClassFn": { "alias": "rowClassFn"; "required": false; "isSignal": true; }; "rowDisabledFn": { "alias": "rowDisabledFn"; "required": false; "isSignal": true; }; "selectItems": { "alias": "selectItems"; "required": false; "isSignal": true; }; "busqueda": { "alias": "busqueda"; "required": false; "isSignal": true; }; "classTotales": { "alias": "classTotales"; "required": false; "isSignal": true; }; }, { "rowEvent": "rowEvent"; "selectedRow": "selectedRowChange"; "selectItems": "selectItemsChange"; "busqueda": "busquedaChange"; }, ["customActions", "columnDefs", "contentFilter"], never, true, never>;
149
149
  }
@@ -0,0 +1,196 @@
1
+ import { ElementRef, OnDestroy, TemplateRef } from '@angular/core';
2
+ import { TsiColumnDefDirective } from '../../../directivas/tables/tsi-column-def.directive';
3
+ import { CdkDragDrop } from '@angular/cdk/drag-drop';
4
+ import { SelectedRow } from '../../../models/selected-row';
5
+ import { CellRender, CellRendered } from '../../../models/cell-rendered';
6
+ import { TableData } from '../../../models/table-data.model';
7
+ import * as i0 from "@angular/core";
8
+ /**
9
+ * Tabla con virtual scroll nativo + COLUMNAS FIJADAS (pinned) en el scroll horizontal.
10
+ * Duplicada de table-ultimate; agrega soporte para `pinned` en la definición de columna.
11
+ *
12
+ * PINNED:
13
+ * - `pinned: true` → fija la columna a la DERECHA (default)
14
+ * - `pinned: 'right'` → fija la columna a la derecha
15
+ * - `pinned: 'left'` → fija la columna a la izquierda
16
+ * - Las columnas fijadas se reordenan: left al inicio, right al final.
17
+ * - Si la columna fijada no define `width`, se le asigna 120px (el offset necesita ancho fijo).
18
+ * - Las columnas utilitarias (details/checkbox/actions) se fijan a la izquierda automáticamente
19
+ * solo cuando existe al menos una columna con pinned 'left'.
20
+ *
21
+ * @Input columns - Array de columnas con la misma forma que table-simple (+ pinned)
22
+ * @Input rows - Array completo de datos
23
+ * @Input rowHeight - Alto fijo de cada fila en px. Si es 0 (default) se resuelve por variante: 42 modern, 30 standard
24
+ * @Input buffer - Filas extra renderizadas fuera del viewport (default: 10)
25
+ * @Input altoContainer - Alto fijo del contenedor en px (default: 400). Se ignora si se usa altoContenedor.
26
+ * @Input altoContenedor - Offset desde el top del viewport en px. Activa height: clamp(minAlto, calc(100vh - offset), 100vh).
27
+ * @Input minAlto - Altura mínima en px cuando se usa altoContenedor (default: 200)
28
+ * @Input footerRows - Filas del footer (totales, resumen, etc.)
29
+ * @Input identifier - Campos que forman la clave para selectedRow
30
+ * @Input withFiltro - Muestra input de búsqueda local
31
+ * @Input withDetails - Muestra detalles expandibles por fila
32
+ * @Input withCheckbox - Muestra checkbox para selección de filas
33
+ * @Input withTotal - Muestra fila de totales en el footer
34
+ */
35
+ /** Datos de fijado de una columna, resueltos para el template */
36
+ export interface PinInfo {
37
+ side: 'left' | 'right';
38
+ /** offset acumulado para style.left (solo side left) */
39
+ left: number | null;
40
+ /** offset acumulado para style.right (solo side right) */
41
+ right: number | null;
42
+ /** true si es la celda del borde interno del grupo (donde va la sombra) */
43
+ edge: boolean;
44
+ /** ancho efectivo de la columna fijada */
45
+ width: number;
46
+ }
47
+ export declare class TableUltimatePinnedComponent implements OnDestroy {
48
+ scrollContainer: import("@angular/core").Signal<ElementRef<HTMLDivElement>>;
49
+ customActions: import("@angular/core").Signal<TemplateRef<any>>;
50
+ columnDefs: import("@angular/core").Signal<readonly TsiColumnDefDirective[]>;
51
+ columnDefMap: import("@angular/core").Signal<Map<string, TemplateRef<any>>>;
52
+ private formateador;
53
+ rows: import("@angular/core").InputSignal<any[]>;
54
+ columns: import("@angular/core").InputSignal<any[]>;
55
+ footerRows: import("@angular/core").InputSignal<any[]>;
56
+ rowHeight: import("@angular/core").InputSignal<number>;
57
+ buffer: import("@angular/core").InputSignal<number>;
58
+ altoContainer: import("@angular/core").InputSignal<number>;
59
+ altoContenedor: import("@angular/core").InputSignal<number>;
60
+ minAlto: import("@angular/core").InputSignal<number>;
61
+ identifier: import("@angular/core").InputSignal<string[]>;
62
+ withFiltro: import("@angular/core").InputSignal<boolean>;
63
+ withDetails: import("@angular/core").InputSignal<boolean>;
64
+ withCheckbox: import("@angular/core").InputSignal<boolean>;
65
+ withTotal: import("@angular/core").InputSignal<boolean>;
66
+ withHeight: import("@angular/core").InputSignal<boolean>;
67
+ withAttachment: import("@angular/core").InputSignal<boolean>;
68
+ variante: import("@angular/core").InputSignal<"standard" | "modern">;
69
+ rendered: import("@angular/core").InputSignal<CellRendered[]>;
70
+ dragOverRowId: import("@angular/core").WritableSignal<any>;
71
+ titleTabla: import("@angular/core").InputSignal<string>;
72
+ activeMobileMode: import("@angular/core").InputSignal<boolean>;
73
+ isLoadingResponsive: import("@angular/core").WritableSignal<boolean>;
74
+ isMobile: import("@angular/core").WritableSignal<boolean>;
75
+ contentFilter: import("@angular/core").Signal<TemplateRef<any>>;
76
+ rowEvent: import("@angular/core").OutputEmitterRef<any>;
77
+ selectedRow: import("@angular/core").ModelSignal<any>;
78
+ rowClassFn: import("@angular/core").InputSignal<(row: any) => string | string[] | Record<string, boolean>>;
79
+ rowDisabledFn: import("@angular/core").InputSignal<(row: any) => boolean>;
80
+ selectItems: import("@angular/core").ModelSignal<SelectedRow<any>[]>;
81
+ rowFormat: import("@angular/core").Signal<any[]>;
82
+ busqueda: import("@angular/core").ModelSignal<string>;
83
+ scrollTop: import("@angular/core").WritableSignal<number>;
84
+ containerHeight: import("@angular/core").WritableSignal<number>;
85
+ sortField: import("@angular/core").WritableSignal<string>;
86
+ sortDir: import("@angular/core").WritableSignal<"asc" | "desc" | "none">;
87
+ expandedRows: import("@angular/core").WritableSignal<string>;
88
+ classTotales: import("@angular/core").InputSignal<string>;
89
+ /** Valor aplicado como [style.height] en el template */
90
+ heightStyle: import("@angular/core").Signal<string>;
91
+ rowFilter: import("@angular/core").Signal<any[]>;
92
+ rowH: import("@angular/core").Signal<number>;
93
+ totalHeight: import("@angular/core").Signal<number>;
94
+ startIndex: import("@angular/core").Signal<number>;
95
+ endIndex: import("@angular/core").Signal<number>;
96
+ visibleRows: import("@angular/core").Signal<any[]>;
97
+ /** Espacio en blanco antes de las filas renderizadas */
98
+ paddingTop: import("@angular/core").Signal<number>;
99
+ /** Espacio en blanco después de las filas renderizadas */
100
+ paddingBottom: import("@angular/core").Signal<number>;
101
+ private scrollEffect;
102
+ private resizeObserver?;
103
+ private resizeEffect;
104
+ ngOnDestroy(): void;
105
+ onScroll(event: Event): void;
106
+ selectRow(row: any, idList: string): void;
107
+ isSelected(row: any, idList: string): boolean;
108
+ textoDigitado(): void;
109
+ toggleSort(field: string): void;
110
+ /** Ancho por defecto de una columna fijada que no define width (el offset necesita ancho fijo) */
111
+ private readonly PINNED_DEFAULT_WIDTH;
112
+ /** Anchos fijos de las columnas utilitarias cuando participan del pinning izquierdo */
113
+ readonly UTIL_W: {
114
+ details: number;
115
+ checkbox: number;
116
+ actions: number;
117
+ };
118
+ /** Posición horizontal del scroll (para las sombras de las columnas fijadas) */
119
+ scrollLeft: import("@angular/core").WritableSignal<number>;
120
+ maxScrollLeft: import("@angular/core").WritableSignal<number>;
121
+ private syncScrollX;
122
+ /** Lado al que se fija una columna. `pinned: true` = derecha (default) */
123
+ pinnedSide(col: TableData): 'left' | 'right' | null;
124
+ private pinnedWidth;
125
+ hasLeftPinned: import("@angular/core").Signal<boolean>;
126
+ hasRightPinned: import("@angular/core").Signal<boolean>;
127
+ /** Ancho total de las columnas utilitarias fijadas (base del offset de las pinned left) */
128
+ utilCheckboxLeft: import("@angular/core").Signal<number>;
129
+ utilActionsLeft: import("@angular/core").Signal<number>;
130
+ private utilTotalWidth;
131
+ /** Mapa fieldname → PinInfo con los offsets acumulados de cada columna fijada */
132
+ pinInfo: import("@angular/core").Signal<Map<string, PinInfo>>;
133
+ /** PinInfo de una columna, o undefined si no está fijada */
134
+ pin(col: TableData): PinInfo | undefined;
135
+ /** Ancho a forzar en la celda: el declarado, o el default si está fijada */
136
+ colWidth(col: TableData): number | null;
137
+ /** Sombra izquierda: hay columnas fijadas left y se scrolleó */
138
+ hasShadowLeft: import("@angular/core").Signal<boolean>;
139
+ /** Sombra derecha: hay columnas fijadas right y queda contenido oculto a la derecha */
140
+ hasShadowRight: import("@angular/core").Signal<boolean>;
141
+ concatenarValue(obj: any, fields: string[]): string;
142
+ getHighlight(text: any, fieldname: string): string;
143
+ private filtraItem;
144
+ private scrollToSelected;
145
+ /** Índice real en rowFilter de una fila visible (para isSelected) */
146
+ realIndex(visibleIdx: number): number;
147
+ /** Mostrar columnas para realizar el filtro */
148
+ filtrarColumnas: import("@angular/core").Signal<{
149
+ [caption: string]: boolean;
150
+ }>;
151
+ toggleFiltros(event: Event): void;
152
+ /** MOSTRAR/ORDENAR COLUMNAS DE LA TABLA (engranaje del header) */
153
+ /** orden y visibilidad elegidos por el usuario, por fieldname — sembrado siempre desde columns() */
154
+ private columnState;
155
+ /** Reconstruye el estado cada vez que cambia columns() (columns() es la única fuente de verdad) */
156
+ private columnStateEffect;
157
+ private buildColumnState;
158
+ /** Columnas configurables (permitidas por diseño), en el orden elegido por el usuario.
159
+ * El caption es solo presentación: sin caption la columna igual se configura y renderiza (identidad = fieldname). */
160
+ columnasConfigurables: import("@angular/core").Signal<any[]>;
161
+ /** Columnas que realmente se pintan: configurables y marcadas como visibles.
162
+ * Las fijadas se reordenan: left al inicio, right al final (una pinned en medio no tiene sentido visual). */
163
+ columnasRenderizadas: import("@angular/core").Signal<any[]>;
164
+ isColumnVisible(fieldname: string): boolean;
165
+ toggleColumnVisible(fieldname: string, event: Event): void;
166
+ onColumnDrop(event: CdkDragDrop<TableData[]>): void;
167
+ guardarConfiguracionColumnas(): void;
168
+ /** Descarta los cambios sin guardar (drags/toggles) y vuelve al orden/visibilidad de columns() */
169
+ restablecerConfiguracionColumnas(): void;
170
+ validaVisibilidad(value: boolean): boolean;
171
+ /** CELL RENDER */
172
+ resolveCell(col: string, row: any): CellRender | null;
173
+ getRowClass(row: any): {
174
+ [key: string]: boolean;
175
+ };
176
+ getPosition(col: TableData): string;
177
+ toggleExpandRow(idRow: string): void;
178
+ getTotals(fieldname: string): string;
179
+ getColspanBeforeTotals(): number;
180
+ allCheck(event: Event): void;
181
+ isCheckboxDisabled(row: any): boolean;
182
+ checkAll(checked: boolean): void;
183
+ validaAllCheck(): boolean;
184
+ isItemSelected(id: string): boolean;
185
+ toogleItem(idList: string, event: Event): void;
186
+ onDoubleClick(row: any): void;
187
+ onRightClick(event: MouseEvent, row: any): void;
188
+ onResize(event: any): void;
189
+ private mobileEffect;
190
+ onDragOver(event: DragEvent, idList: any): void;
191
+ onDragLeave(): void;
192
+ onDrop(event: DragEvent, row: any): void;
193
+ getRows: () => any[];
194
+ static ɵfac: i0.ɵɵFactoryDeclaration<TableUltimatePinnedComponent, never>;
195
+ static ɵcmp: i0.ɵɵComponentDeclaration<TableUltimatePinnedComponent, "app-table-ultimate-pinned", never, { "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "footerRows": { "alias": "footerRows"; "required": false; "isSignal": true; }; "rowHeight": { "alias": "rowHeight"; "required": false; "isSignal": true; }; "buffer": { "alias": "buffer"; "required": false; "isSignal": true; }; "altoContainer": { "alias": "altoContainer"; "required": false; "isSignal": true; }; "altoContenedor": { "alias": "altoContenedor"; "required": false; "isSignal": true; }; "minAlto": { "alias": "minAlto"; "required": false; "isSignal": true; }; "identifier": { "alias": "identifier"; "required": false; "isSignal": true; }; "withFiltro": { "alias": "withFiltro"; "required": false; "isSignal": true; }; "withDetails": { "alias": "withDetails"; "required": false; "isSignal": true; }; "withCheckbox": { "alias": "withCheckbox"; "required": false; "isSignal": true; }; "withTotal": { "alias": "withTotal"; "required": false; "isSignal": true; }; "withHeight": { "alias": "withHeight"; "required": false; "isSignal": true; }; "withAttachment": { "alias": "withAttachment"; "required": false; "isSignal": true; }; "variante": { "alias": "variante"; "required": false; "isSignal": true; }; "rendered": { "alias": "rendered"; "required": false; "isSignal": true; }; "titleTabla": { "alias": "titleTabla"; "required": false; "isSignal": true; }; "activeMobileMode": { "alias": "activeMobileMode"; "required": false; "isSignal": true; }; "selectedRow": { "alias": "selectedRow"; "required": false; "isSignal": true; }; "rowClassFn": { "alias": "rowClassFn"; "required": false; "isSignal": true; }; "rowDisabledFn": { "alias": "rowDisabledFn"; "required": false; "isSignal": true; }; "selectItems": { "alias": "selectItems"; "required": false; "isSignal": true; }; "busqueda": { "alias": "busqueda"; "required": false; "isSignal": true; }; "classTotales": { "alias": "classTotales"; "required": false; "isSignal": true; }; }, { "rowEvent": "rowEvent"; "selectedRow": "selectedRowChange"; "selectItems": "selectItemsChange"; "busqueda": "busquedaChange"; }, ["customActions", "columnDefs", "contentFilter"], never, true, never>;
196
+ }
@@ -88,7 +88,7 @@ export declare class TableUltimatePivotComponent implements OnDestroy {
88
88
  /** Fieldname de la columna que actúa como disparador de expansión.
89
89
  * Cuando se define, el ícono se incrusta en esa celda y desaparece la columna dedicada. */
90
90
  expandOn: import("@angular/core").InputSignal<string>;
91
- variante: import("@angular/core").InputSignal<"estandar" | "modern">;
91
+ variante: import("@angular/core").InputSignal<"modern" | "estandar">;
92
92
  withCellSelect: import("@angular/core").InputSignal<boolean>;
93
93
  rowEvent: import("@angular/core").OutputEmitterRef<{
94
94
  usecase: TABLE_EVENTS;
@@ -119,7 +119,7 @@ export declare class TableUltimatePivotComponent implements OnDestroy {
119
119
  expandedIds: import("@angular/core").WritableSignal<Set<string>>;
120
120
  loadingIds: import("@angular/core").ModelSignal<Set<string>>;
121
121
  sortField: import("@angular/core").WritableSignal<string>;
122
- sortDir: import("@angular/core").WritableSignal<"none" | "desc" | "asc">;
122
+ sortDir: import("@angular/core").WritableSignal<"asc" | "desc" | "none">;
123
123
  heightStyle: import("@angular/core").Signal<string>;
124
124
  processedTree: import("@angular/core").Signal<any[]>;
125
125
  private processLevel;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ng-components-tsi",
3
- "version": "0.0.76",
3
+ "version": "0.0.78",
4
4
  "peerDependencies": {
5
5
  "shared-tsi": "^0.0.16",
6
6
  "core-tsi": "^0.0.16",
package/public-api.d.ts CHANGED
@@ -36,6 +36,7 @@ export * from './lib/ui/tables/table-busqueda/table-busqueda.component';
36
36
  export * from './lib/ui/tables/table-detalle/table-detalle.component';
37
37
  export * from './lib/ui/tables/table-simple/table-simple.component';
38
38
  export * from './lib/ui/tables/table-ultimate/table-ultimate.component';
39
+ export * from './lib/ui/tables/table-ultimate-pinned/table-ultimate-pinned.component';
39
40
  export * from './lib/ui/tables/table-ultimate-pivot/table-ultimate-pivot.component';
40
41
  export * from './lib/ui/tables/table-agrupada/table-agrupada.component';
41
42
  export * from './lib/ui/tabs/nav-tabs/nav-tabs.component';