sapenlinea-components 0.10.85 → 0.10.87

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
@@ -14,35 +14,36 @@ Componente para gestionar **filtros de fecha y fecha/hora** a partir de una list
14
14
 
15
15
  **Inputs:**
16
16
 
17
- - `filters: FilterItem[]` (requerido)
18
- - Cada `FilterItem` define un filtro disponible:
17
+ - `filters: FilterItem[]` (requerido) – Filtros disponibles. Cada `FilterItem`:
19
18
  - `label: string` – Texto visible en el chip/botón.
20
19
  - `value: string` – Identificador interno del filtro.
21
20
  - `type: 'date' | 'datetime'` – Tipo de filtro.
22
21
  - `placeholder?: string` – Placeholder específico.
23
22
  - `minDate?: Date` / `maxDate?: Date` – Rango permitido.
23
+ - `clearTrigger: number = 0` – Al incrementar este valor desde el padre se limpia el filtro.
24
+ - `initialValue: Date | string | null = null` – Fecha a restaurar al inicializar (útil para volver a una pantalla con filtros previos). Al hacer clic en el botón de limpiar del chip, el valor inicial queda descartado y no se restaura automáticamente.
25
+ - `initialFilterType: string | null = null` – Key (`FilterItem.value`) del filtro activo a restaurar junto con `initialValue`.
24
26
 
25
27
  **Outputs:**
26
28
 
27
29
  - `dateSelected: EventEmitter<DateFilterSelection>` – Emite `{ filter: string; value: Date }` con el filtro activo y la fecha seleccionada.
28
30
  - `dateChange: EventEmitter<Date | null>` – Emite la fecha seleccionada al cambiar (o `null` si se limpia).
31
+ - `enterPressed: EventEmitter<void>` – Emite al presionar Enter.
29
32
 
30
33
  **Uso con formularios reactivos:**
31
34
 
32
35
  ```html
33
36
  <lib-date-time-filter
34
37
  [filters]="dateFilters"
38
+ [clearTrigger]="clearVersion"
39
+ [initialValue]="savedFilters.date"
40
+ [initialFilterType]="'date'"
35
41
  (dateSelected)="onDateSelected($event)"
36
42
  (dateChange)="onDateChange($event)"
37
- formControlName="fechaFiltro"
38
43
  ></lib-date-time-filter>
39
44
  ```
40
45
 
41
46
  ```ts
42
- const form = this.fb.group({
43
- fechaFiltro: [null],
44
- });
45
-
46
47
  dateFilters: FilterItem[] = [
47
48
  { label: 'Fecha inicio', value: 'startDate', type: 'date', placeholder: 'Seleccionar fecha inicio' },
48
49
  { label: 'Fecha fin', value: 'endDate', type: 'date', placeholder: 'Seleccionar fecha fin' },
@@ -293,11 +294,13 @@ Componente de **filtro por texto** con chips de filtros configurables (por ejemp
293
294
 
294
295
  - `filters: FilterItem[]` (requerido) – Filtros disponibles de texto.
295
296
  - `clearTrigger: number = 0` – Al incrementar este valor desde el padre se limpian todos los filtros.
297
+ - `initialValues: Record<string, string> = {}` – Valores a restaurar al inicializar, donde la clave es el `FilterItem.value` y el valor es el texto. Al limpiar un chip individualmente el valor inicial queda descartado y no se restaura automáticamente.
296
298
 
297
299
  **Outputs:**
298
300
 
299
301
  - `filterSelected: EventEmitter<{ filter: string; value: string }>` – Emite el filtro y el valor aplicado.
300
302
  - `valueChange: EventEmitter<string | null>` – Emite el valor actual del filtro de texto.
303
+ - `enterPressed: EventEmitter<void>` – Emite al presionar Enter.
301
304
 
302
305
  **Ejemplo de uso:**
303
306
 
@@ -305,6 +308,7 @@ Componente de **filtro por texto** con chips de filtros configurables (por ejemp
305
308
  <lib-input-text-filter
306
309
  [filters]="textFilters"
307
310
  [clearTrigger]="clearVersion"
311
+ [initialValues]="{ name: 'Juan', email: 'juan@example.com' }"
308
312
  (filterSelected)="onTextFilter($event)"
309
313
  (valueChange)="onTextValueChange($event)"
310
314
  ></lib-input-text-filter>
@@ -322,18 +326,22 @@ Componente de **filtro numérico** con múltiples chips (ej. "monto mínimo", "m
322
326
  **Inputs:**
323
327
 
324
328
  - `filters: FilterItem[]` (requerido) – Filtros numéricos.
325
- - `clearTrigger: number = 0` – Limpia filtros al cambiar.
329
+ - `clearTrigger: number = 0` – Limpia todos los filtros al incrementar.
330
+ - `initialValues: Record<string, string> = {}` – Valores numéricos a restaurar al inicializar, donde la clave es el `FilterItem.value`. Al limpiar un chip individualmente el valor inicial queda descartado y no se restaura automáticamente.
326
331
 
327
332
  **Outputs:**
328
333
 
329
334
  - `filterSelected: EventEmitter<{ filter: string; value: string }>` – Filtro seleccionado y valor.
330
335
  - `valueChange: EventEmitter<string | null>` – Valor numérico aplicado.
336
+ - `enterPressed: EventEmitter<void>` – Emite al presionar Enter.
331
337
 
332
338
  **Ejemplo de uso:**
333
339
 
334
340
  ```html
335
341
  <lib-input-number-filter
336
342
  [filters]="numberFilters"
343
+ [clearTrigger]="clearVersion"
344
+ [initialValues]="{ id: '42' }"
337
345
  (filterSelected)="onNumberFilter($event)"
338
346
  ></lib-input-number-filter>
339
347
  ```
@@ -350,22 +358,28 @@ Componente de **filtro basado en select** con chips. Permite seleccionar una opc
350
358
  **Inputs:**
351
359
 
352
360
  - `filters: FilterItem[]` (requerido) – Deben incluir `options` con `{ label, value }`.
353
- - `clearTrigger: number = 0` – Limpia filtros.
361
+ - `clearTrigger: number = 0` – Limpia todos los filtros al incrementar.
362
+ - `initialValues: Record<string, string> = {}` – Valores a restaurar al inicializar, donde la clave es el `FilterItem.value` y el valor es el **value** de la opción (no el label). El componente busca automáticamente el label correspondiente para mostrarlo en el chip. Al limpiar un chip individualmente el valor inicial queda descartado y no se restaura automáticamente.
354
363
 
355
364
  **Outputs:**
356
365
 
357
366
  - `filterSelected: EventEmitter<{ filter: string; value: string }>` – Filtro e identificador de opción seleccionada.
358
367
  - `valueChange: EventEmitter<string | null>` – Valor del select actual.
368
+ - `enterPressed: EventEmitter<void>` – Emite al presionar Enter.
359
369
 
360
370
  **Ejemplo de uso:**
361
371
 
362
372
  ```html
363
373
  <lib-input-select-filter
364
374
  [filters]="statusFilters"
375
+ [clearTrigger]="clearVersion"
376
+ [initialValues]="{ status: 'ACTIVE' }"
365
377
  (filterSelected)="onStatusFilter($event)"
366
378
  ></lib-input-select-filter>
367
379
  ```
368
380
 
381
+ > `initialValues` recibe el value de la opción (ej. `'ACTIVE'`), no el label (`'Activo'`). El componente resuelve el label buscando en las `options` del filtro correspondiente.
382
+
369
383
  ---
370
384
 
371
385
  ### 8. `lib-select-custom-search` (SelectCustomSearch)
@@ -838,9 +852,36 @@ Encabezado de sección con título, botones de acción configurables y grupo de
838
852
  - `exportButtonLabel: string = 'Exportar CSV'`
839
853
  - `exportButtonIcon: string = 'icon-export'`
840
854
  - `showButtonBack: boolean = false`
855
+ - `initialFilters: Record<string, string | number | Date | null> = {}` — estado previo de filtros para restaurar al volver a la pantalla. La estructura es la misma que emite `filtersChange`. Soporta todos los tipos de filtro: texto, número, select (por value) y fecha.
841
856
 
842
857
  > Los botones secundario y de exportación se agrupan automáticamente al final de la fila del título.
843
858
 
859
+ **Restaurar filtros previos (`initialFilters`):**
860
+
861
+ Patrón típico para preservar filtros al navegar entre pantallas:
862
+
863
+ ```ts
864
+ // En el componente padre
865
+ savedFilters = signal<Record<string, string | number | Date | null>>({});
866
+
867
+ onFiltersChange(filters: Record<string, string | number | Date | null>) {
868
+ this.savedFilters.set(filters);
869
+ }
870
+ ```
871
+
872
+ ```html
873
+ <lib-title-filters
874
+ title="Comparendos"
875
+ [filtersConfig]="filtersConfig"
876
+ [initialFilters]="savedFilters()"
877
+ (filtersChange)="onFiltersChange($event)"
878
+ (applyFilters)="onApply()"
879
+ (clearFilters)="savedFilters.set({})"
880
+ />
881
+ ```
882
+
883
+ > Al hacer clic en "Borrar Filtros" todos los filtros se limpian, incluyendo los valores iniciales. Al limpiar un chip individual el valor inicial de ese filtro también queda descartado.
884
+
844
885
  **Outputs:**
845
886
 
846
887
  - `filtersChange: Record<string, string | number | Date | null>`
@@ -1446,6 +1487,7 @@ Componente de **filtro de hora** con chips configurables y selector AM/PM desple
1446
1487
 
1447
1488
  - `filters: FilterItem[]` (requerido) – Filtros de hora disponibles.
1448
1489
  - `clearTrigger: number = 0` – Al incrementar este valor desde el padre se limpian todos los filtros.
1490
+ - `initialValues: Record<string, string> = {}` – Horas a restaurar al inicializar en formato `HH:mm` (24 h), donde la clave es el `FilterItem.value`. Al limpiar un chip individualmente el valor inicial queda descartado y no se restaura automáticamente.
1449
1491
 
1450
1492
  **Outputs:**
1451
1493
 
@@ -1459,6 +1501,7 @@ Componente de **filtro de hora** con chips configurables y selector AM/PM desple
1459
1501
  <lib-input-time-filter
1460
1502
  [filters]="timeFilters"
1461
1503
  [clearTrigger]="clearVersion"
1504
+ [initialValues]="{ startTime: '08:00', endTime: '17:00' }"
1462
1505
  (filterSelected)="onTimeFilter($event)"
1463
1506
  (valueChange)="onTimeChange($event)"
1464
1507
  ></lib-input-time-filter>
@@ -1466,8 +1509,8 @@ Componente de **filtro de hora** con chips configurables y selector AM/PM desple
1466
1509
 
1467
1510
  ```ts
1468
1511
  timeFilters: FilterItem[] = [
1469
- { label: 'Hora inicio', value: 'startTime', type: 'time' },
1470
- { label: 'Hora fin', value: 'endTime', type: 'time' },
1512
+ { label: 'Hora inicio', value: 'startTime', type: 'time', placeholder: 'Hora inicio' },
1513
+ { label: 'Hora fin', value: 'endTime', type: 'time', placeholder: 'Hora fin' },
1471
1514
  ];
1472
1515
  ```
1473
1516