sapenlinea-components 0.6.68 → 0.7.70

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
@@ -448,10 +448,36 @@ Componente de **tabla dinámica** con soporte de ordenamiento, acciones por fila
448
448
  - `statusToneMap: StatusToneMap` – Mapa de estado normalizado → tono visual (`success`, `error`, `warning`, `info`, `neutral`).
449
449
  - `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.
450
450
 
451
+ **Tipos de columna (`type`):**
452
+
453
+ | Tipo | Descripción |
454
+ |---|---|
455
+ | `text` | Texto plano (default) |
456
+ | `number` | Número formateado |
457
+ | `money` | Valor monetario con formato |
458
+ | `date` | Fecha formateada |
459
+ | `datetime` | Fecha y hora |
460
+ | `percentage` | Porcentaje |
461
+ | `status` | Chip de estado con color basado en `statusToneMap` |
462
+ | `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 `°` |
463
+ | `icon-button` | Botón con ícono clicable |
464
+ | `email` | Email en minúsculas |
465
+
451
466
  **Outputs:**
452
467
 
453
468
  - `optionSelected: EventEmitter<{ action: string; row: TableRow }>` – Emite la acción seleccionada y la fila.
454
469
 
470
+ **Ejemplo con columna `grade`:**
471
+
472
+ ```ts
473
+ columns: TableColumn[] = [
474
+ { key: 'numero', label: 'N° COMPARENDO', align: 'center' },
475
+ { key: 'fecha', label: 'FECHA', align: 'center', type: 'date' },
476
+ { key: 'grado', label: 'GRADO', align: 'center', type: 'grade' },
477
+ { key: 'medicion', label: 'MEDICIÓN', align: 'center' }
478
+ ];
479
+ ```
480
+
455
481
  **Uso con estados en inglés (enum):**
456
482
 
457
483
  ```ts
@@ -805,11 +831,16 @@ Encabezado de sección con título, botones de acción configurables y grupo de
805
831
  - `clickButtonLabel: string = 'Acción'` — texto del botón en modo `click`
806
832
  - `clickButtonIcon: string = ''` — clase CSS del ícono en modo `click`
807
833
  - `alwaysShowFilters: boolean = false` — muestra los filtros permanentemente sin necesidad de toggle
808
- - `showSecondaryButton: boolean = false` — muestra un botón secundario al final de la fila del título
809
- - `secondaryButtonLabel: string = 'Exportar'`
810
- - `secondaryButtonIcon: string = ''`
834
+ - `showSecondaryButton: boolean = false` — muestra un botón secundario (ej. "Exportar PDF")
835
+ - `secondaryButtonLabel: string = 'Exportar PDF'`
836
+ - `secondaryButtonIcon: string = 'icon-download'`
837
+ - `showButtonExport: boolean = false` — muestra un botón de exportación adicional (ej. "Exportar CSV")
838
+ - `exportButtonLabel: string = 'Exportar CSV'`
839
+ - `exportButtonIcon: string = 'icon-export'`
811
840
  - `showButtonBack: boolean = false`
812
841
 
842
+ > Los botones secundario y de exportación se agrupan automáticamente al final de la fila del título.
843
+
813
844
  **Outputs:**
814
845
 
815
846
  - `filtersChange: Record<string, string | number | Date | null>`
@@ -817,6 +848,7 @@ Encabezado de sección con título, botones de acción configurables y grupo de
817
848
  - `clearFilters: void`
818
849
  - `filterButtonClicked: void` — emitido al hacer clic en el botón `click` o `action`
819
850
  - `secondaryButtonClicked: void`
851
+ - `exportButtonClicked: void`
820
852
  - `clickButtonBack: void`
821
853
 
822
854
  **Íconos disponibles** (clase CSS, patrón `mask-image`):
@@ -827,21 +859,20 @@ Encabezado de sección con título, botones de acción configurables y grupo de
827
859
  | `icon-upload` | Cargar / subir |
828
860
  | `icon-export` | Exportar tabla |
829
861
 
830
- **Ejemplo — modo `click` con filtros permanentes y botón secundario:**
862
+ **Ejemplo — con botón secundario y botón de exportar:**
831
863
 
832
864
  ```html
833
865
  <lib-title-filters
834
- title="Órdenes"
835
- buttonMode="click"
836
- clickButtonLabel="Nueva Orden"
837
- clickButtonIcon="icon-upload"
838
- [alwaysShowFilters]="true"
839
- [showSecondaryButton]="true"
840
- secondaryButtonLabel="Exportar"
841
- secondaryButtonIcon="icon-export"
866
+ title="Comparendos"
842
867
  [filtersConfig]="filtersConfig"
843
- (filterButtonClicked)="onNuevaOrden()"
844
- (secondaryButtonClicked)="onExportar()"
868
+ [showSecondaryButton]="true"
869
+ secondaryButtonLabel="Exportar PDF"
870
+ secondaryButtonIcon="icon-download"
871
+ (secondaryButtonClicked)="onExportPDF()"
872
+ [showButtonExport]="true"
873
+ exportButtonLabel="Exportar CSV"
874
+ exportButtonIcon="icon-export"
875
+ (exportButtonClicked)="onExportCSV()"
845
876
  (filtersChange)="onFiltersChange($event)"
846
877
  (applyFilters)="onApply()"
847
878
  />
@@ -1257,15 +1288,64 @@ Zona de arrastrar y soltar (Drag & Drop) para la **recepción de imágenes** de
1257
1288
  ### 36. Gráficas y Visualización: ECharts (Charts)
1258
1289
 
1259
1290
  **Qué hacen**
1260
- Subsistema de envolturas especializadas (wrappers) cimentado sobre `apache/echarts` para habilitar representaciones informativas sólidas a tamaño responsivo y dinámico, tolerando cambios visuales e interacciones al ocultarse o scroll.
1291
+ Subsistema de envolturas especializadas (wrappers) cimentado sobre `apache/echarts` para habilitar representaciones informativas sólidas a tamaño responsivo y dinámico. Incluye soporte para interactividad, visualizaciones jerárquicas, tablas expandibles y una paleta de 20 colores.
1292
+
1293
+ **Componentes disponibles:**
1294
+
1295
+ #### `lib-bar-chart`
1296
+ Gráfica de barras estandarizada con soporte para una o múltiples series.
1297
+ - **Inputs:**
1298
+ - `data: ChartItem[]` – Datos para gráfica de barra simple.
1299
+ - `multiSeries: BarSeries[]` – (Opcional) Permite mostrar grupos de barras por cada sección.
1300
+ - **Interfaces:**
1301
+ ```ts
1302
+ export interface BarSeries {
1303
+ name: string; // Nombre de la serie (aparece en la leyenda)
1304
+ data: number[]; // Valores numéricos
1305
+ color?: string; // Color personalizado opcional
1306
+ }
1307
+ ```
1308
+
1309
+ #### `lib-donut-chart`
1310
+ Gráfica de anillo con capacidad de **Drill-down**, navegación interna y leyenda automática.
1311
+ - **Inputs:**
1312
+ - `data: ChartItem[]` – Datos granulares (ej. códigos de infracción `D01`, `D02`, `C01`).
1313
+ - `drillDown: boolean = false` – Activa el modo de exploración jerárquica.
1314
+ - `groupByPrefix: number = 0` – Agrupa los datos por los primeros N caracteres de la etiqueta (ej. `1` para agrupar por letras iniciales).
1315
+ - **Comportamiento:**
1316
+ - Al activar el drill-down, el componente muestra inicialmente los totales agrupados y permite al usuario pulsar una sección para "abrirla" y ver su desglose, con un botón de "Volver" integrado.
1317
+ - Cuando hay **más de 10 ítems**, los labels de las porciones se ocultan automáticamente y se muestra una **leyenda horizontal scrollable** en la parte inferior.
1318
+
1319
+ #### `lib-table-chart`
1320
+ Tabla expandible integrada en el dashboard de gráficas, con paginación y estado "sin datos".
1321
+ - **Inputs:**
1322
+ - `title: string = 'Table Chart'` – Título del encabezado.
1323
+ - `columns: TableColumn[]` – Definición de columnas (misma interfaz que `lib-table`).
1324
+ - `data: TableRow[]` – Datos de la tabla.
1325
+ - `totalItems: number = 0` – Total de registros (para la paginación).
1326
+ - `itemsPerPage: number = 10` – Registros por página en modo expandido.
1327
+ - **Comportamiento:**
1328
+ - **Colapsado**: Muestra los primeros **8 registros** sin paginación.
1329
+ - **Expandido**: Ocupa pantalla completa (90vw × 90vh) con overlay, muestra **10 registros** por página con `lib-pagination`.
1330
+ - Si `data` está vacío muestra `lib-not-found-section` centrado.
1261
1331
 
1262
- **Componentes y Selectores disponibles:**
1263
- - `lib-bar-chart` – Muestra gráficas de barras estandarizadas.
1264
- - `lib-line-chart` – Muestra líneas analíticas en evolución.
1265
- - `lib-donut-chart` – Gráfica de anillo jerarquizada.
1332
+ **Ejemplo:**
1333
+
1334
+ ```html
1335
+ <lib-table-chart
1336
+ title="Tabla de Comparendos"
1337
+ [columns]="columns"
1338
+ [data]="comparendosData"
1339
+ [totalItems]="comparendosData.length" />
1340
+ ```
1341
+
1342
+ #### Otros:
1343
+ - `lib-line-chart` – Líneas analíticas en evolución.
1266
1344
  - `lib-heatmap` – Mapa de concentración de calor basado en coordenadas / categorías.
1267
- - `lib-map-geo` – Gráfico de puntos de calor sobre mapa geofísico interactivo con tooltips nativos.
1345
+ - `lib-map-geo` – Puntos de calor sobre mapa geofísico interactivo.
1268
1346
 
1269
- **Inputs habituales:**
1270
- Generalmente aceptan su interfaz representativa principal `[data]="..."` o su objeto de ajuste avanzado `[config]="..."`.
1271
-
1347
+ **Paleta de colores (20 colores):**
1348
+ La paleta compartida por todas las gráficas incluye: olive green, lime soft, burgundy, deep teal, sage, chartreuse, sky blue, light steel blue, warm amber, terracotta, dusty purple, jade green, coral clay, charcoal slate, sand gold, mint sage, rose mauve, navy steel, peach y spring green.
1349
+
1350
+ **Eventos Globales:**
1351
+ Todos los componentes de gráficas emiten el evento `chartClick`, permitiendo capturar clics en secciones específicas para lógicas personalizadas en el padre.