sapenlinea-components 0.10.87 → 0.11.88

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/README.md CHANGED
@@ -462,11 +462,23 @@ Componente de **tabla dinámica** con soporte de ordenamiento, acciones por fila
462
462
  - `statusToneMap: StatusToneMap` – Mapa de estado normalizado → tono visual (`success`, `error`, `warning`, `info`, `neutral`).
463
463
  - `statusEnumMap: Record<string, string>` – Traduce el valor crudo del estado (ej. `'ACTIVE'`) a la etiqueta que se muestra (ej. `'Activo'`). La resolución del tono usa la etiqueta traducida.
464
464
 
465
+ **Inputs:**
466
+
467
+ - `columns: TableColumn[]` (requerido) – Definición de columnas.
468
+ - `data: TableRow[]` (requerido) – Datos a mostrar.
469
+ - `actions: TableAction[] | ((row: TableRow) => TableAction[])` – Acciones por fila principal.
470
+ - `showActions: boolean = true` – Muestra/oculta columna de acciones en filas principales.
471
+ - `subColumns: SubColumn[]` – Columnas de las sub-filas expandibles.
472
+ - `subActions: TableAction[] | ((row: TableRow) => TableAction[])` – Acciones por sub-fila. Se muestran con el mismo menú contextual que las filas principales.
473
+ - `showSubActions: boolean = false` – Muestra/oculta la columna de acciones en sub-filas.
474
+ - `statusToneMap: StatusToneMap` – Mapa de estado normalizado → tono visual.
475
+ - `statusEnumMap: Record<string, string>` – Traduce el valor crudo del estado a la etiqueta visible.
476
+
465
477
  **Tipos de columna (`type`):**
466
478
 
467
479
  | Tipo | Descripción |
468
480
  |---|---|
469
- | `text` | Texto plano (default) |
481
+ | `text` | Texto plano (default). Aplica `autoWidth` automáticamente. |
470
482
  | `number` | Número formateado |
471
483
  | `money` | Valor monetario con formato |
472
484
  | `date` | Fecha formateada |
@@ -475,11 +487,52 @@ Componente de **tabla dinámica** con soporte de ordenamiento, acciones por fila
475
487
  | `status` | Chip de estado con color basado en `statusToneMap` |
476
488
  | `grade` | Chip de grado con color semáforo automático (verde ≤0.9, naranja ≤2.9, rojo ≤4, gris >4). Muestra el valor con sufijo `°` |
477
489
  | `icon-button` | Botón con ícono clicable |
478
- | `email` | Email en minúsculas |
490
+ | `email` | Email en minúsculas. Aplica `autoWidth` automáticamente. |
491
+
492
+ **Propiedades de ancho por columna:**
493
+
494
+ | Propiedad | Tipo | Default | Descripción |
495
+ |---|---|---|---|
496
+ | `autoWidth` | `boolean` | `true` para `text`/`email` | Ajusta el ancho al contenido hasta `maxWidth`. Pasar `false` para desactivarlo en tipos `text`/`email`. |
497
+ | `maxWidth` | `number` | `200` | Ancho máximo en px cuando `autoWidth` está activo. |
498
+ | `compact` | `boolean` | `false` | Comprime la columna al mínimo posible, ajustándose exactamente al contenido sin límite de ancho. Útil para columnas de ícono o estado corto. |
499
+
500
+ ```ts
501
+ // Columna que no crece más de 150px
502
+ { key: 'placa', label: 'PLACA', type: 'text', maxWidth: 150 }
503
+
504
+ // Columna de tipo text que NO usa autoWidth (ocupa todo el espacio disponible)
505
+ { key: 'descripcion', label: 'DESCRIPCIÓN', type: 'text', autoWidth: false }
506
+
507
+ // Columna compacta: se ajusta exactamente al contenido
508
+ { key: 'grado', label: 'GRADO', type: 'grade', compact: true }
509
+ ```
479
510
 
480
511
  **Outputs:**
481
512
 
482
- - `optionSelected: EventEmitter<{ action: string; row: TableRow }>` – Emite la acción seleccionada y la fila.
513
+ - `optionSelected: EventEmitter<{ action: string; row: TableRow }>` – Emite la acción seleccionada y la fila principal.
514
+ - `subOptionSelected: EventEmitter<{ action: string; row: TableRow }>` – Emite la acción seleccionada y la sub-fila.
515
+ - `iconAction: EventEmitter<{ action: string; row: TableRow }>` – Emite al hacer clic en un `icon-button`.
516
+
517
+ **Sub-filas con acciones (`subActions` + `showSubActions`):**
518
+
519
+ ```ts
520
+ subActions: TableAction[] = [
521
+ { key: 'view', icon: 'icon-view', label: 'Ver detalle' },
522
+ { key: 'edit', icon: 'icon-edit', label: 'Editar' },
523
+ ];
524
+ ```
525
+
526
+ ```html
527
+ <lib-table
528
+ [columns]="columns"
529
+ [data]="rows"
530
+ [subColumns]="subColumns"
531
+ [subActions]="subActions"
532
+ [showSubActions]="true"
533
+ (subOptionSelected)="onSubAction($event)"
534
+ />
535
+ ```
483
536
 
484
537
  **Ejemplo con columna `grade`:**
485
538
 
@@ -898,7 +951,8 @@ onFiltersChange(filters: Record<string, string | number | Date | null>) {
898
951
  |---|---|
899
952
  | `icon-download` | Descargar |
900
953
  | `icon-upload` | Cargar / subir |
901
- | `icon-export` | Exportar tabla |
954
+ | `icon-export` | Exportar tabla / exportar CSV |
955
+ | `icon-add` | Agregar / nuevo registro |
902
956
 
903
957
  **Ejemplo — con botón secundario y botón de exportar:**
904
958