ngx-eiffage-material 0.5.0 → 0.6.0

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/index.d.ts CHANGED
@@ -5,21 +5,29 @@ import { FormBuilder, FormGroup, FormArray, AbstractControl, ControlValueAccesso
5
5
  import { ErrorStateMatcher } from '@angular/material/core';
6
6
  import { MatFormFieldAppearance, SubscriptSizing } from '@angular/material/form-field';
7
7
  import { MatSelect, MatSelectChange } from '@angular/material/select';
8
+ import { Observable, Subject } from 'rxjs';
8
9
  import { MatDialogRef, MatDialogConfig } from '@angular/material/dialog';
9
10
  import { DateRange } from '@angular/material/datepicker';
10
11
  import { MatMenuTrigger } from '@angular/material/menu';
11
12
  import { PageEvent, MatPaginator } from '@angular/material/paginator';
12
13
  import { SortDirection, Sort } from '@angular/material/sort';
13
- import { Observable, Subject } from 'rxjs';
14
14
  import jsPDF from 'jspdf';
15
15
  import moment from 'moment';
16
16
  import { MatTableDataSource } from '@angular/material/table';
17
17
  import { MatChipEvent } from '@angular/material/chips';
18
18
 
19
19
  interface BasicSelectConfig<T> {
20
+ /** Propiedad de la opción que se usa como valor del control. */
20
21
  valueKey: keyof T;
22
+ /** Texto de cada opción (en la lista y en el campo). */
21
23
  displayedLabel: (item: T) => string;
24
+ /** Opciones que se ven pero no se pueden elegir. */
22
25
  disabled?: (item: T) => boolean;
26
+ /**
27
+ * Buscador del desplegable: `true` (por defecto) siempre, `false` nunca, o un número para
28
+ * mostrarlo solo cuando haya más opciones que ese número (p. ej. `7`: no sale en listas cortas).
29
+ */
30
+ search?: boolean | number;
23
31
  }
24
32
  /**
25
33
  * Configuration for NgxPaginatedSelect.
@@ -53,6 +61,17 @@ interface PaginatedSelectConfig<T> {
53
61
  avatarText?: (item: T) => string;
54
62
  /** Material icon name shown as avatar when `avatarImage`/`avatarText` are not provided */
55
63
  avatarIcon?: string;
64
+ /**
65
+ * Busca los elementos completos a partir de sus claves. Si el valor llega del formulario solo con
66
+ * ids (sin `selectedItems`), el componente lo usa para mostrar sus nombres en vez de los ids.
67
+ * Las claves son valores de `valueKey`: se tipan como `any[]` para poder escribir
68
+ * `(ids: number[]) => …` sin conversiones (TypeScript no sabe el tipo concreto de `valueKey`).
69
+ */
70
+ loadByKeys?: (keys: any[]) => Observable<T[]>;
71
+ /** Milisegundos de espera tras la última tecla antes de buscar. Por defecto, 400. */
72
+ searchDebounce?: number;
73
+ /** Caracteres mínimos para buscar (con menos, se mantiene la lista y se avisa). Por defecto, 1. */
74
+ minSearchLength?: number;
56
75
  }
57
76
 
58
77
  interface PaginatedItems<T> {
@@ -482,6 +501,17 @@ interface NgxEiffageTexts {
482
501
  dateRangeEnd: string;
483
502
  totalPerPage: string;
484
503
  totalGeneral: string;
504
+ /** Exportar en ngx-basic-table: todos los registros filtrados, no solo la página. */
505
+ exportExcelAll: string;
506
+ exportPdfAll: string;
507
+ /** Casilla de selección de una fila (lectores de pantalla). */
508
+ selectRow: string;
509
+ /** Casilla de la cabecera: seleccionar las filas de la página. */
510
+ selectPage: string;
511
+ expandRow: string;
512
+ collapseRow: string;
513
+ /** Nombre del filtro de columna en la opción «Sin …» de los selects de filtro. */
514
+ columnFilter: string;
485
515
  };
486
516
  /** Diálogo de ordenar y mostrar columnas de las tablas. */
487
517
  columnsDialog: {
@@ -537,6 +567,8 @@ interface NgxEiffageTexts {
537
567
  select: {
538
568
  noResults: string;
539
569
  showMore: string;
570
+ /** Etiqueta accesible del botón X que quita la selección (clearable). */
571
+ clear: string;
540
572
  removeOption: (optionName: string) => string;
541
573
  resultsCount: (count: number) => string;
542
574
  };
@@ -554,6 +586,18 @@ interface NgxEiffageTexts {
554
586
  retry: string;
555
587
  selectedCount: (selected: number, total: number) => string;
556
588
  resultsCount: (total: number) => string;
589
+ /** Etiqueta accesible del botón que quita un elemento seleccionado (chips). */
590
+ removeItem: (label: string) => string;
591
+ /** Texto accesible del indicador «+N» de chips que no caben. */
592
+ moreSelected: (count: number) => string;
593
+ /** Resumen de la selección en modo texto: las primeras etiquetas y cuántas más hay. */
594
+ summary: (labels: string[], rest: number) => string;
595
+ /** Aviso al cerrar el panel múltiple con cambios sin confirmar. */
596
+ discardChanges: string;
597
+ discard: string;
598
+ keepEditing: string;
599
+ /** Búsqueda demasiado corta (minSearchLength). */
600
+ minSearch: (min: number) => string;
557
601
  };
558
602
  /** NgxDialogService y ngx-dialog (botones por defecto). */
559
603
  dialog: {
@@ -1010,7 +1054,7 @@ interface ResolvedOption<T> {
1010
1054
  disabled: boolean;
1011
1055
  visible: boolean;
1012
1056
  }
1013
- declare class NgxBasicSelect<T> implements ControlValueAccessor {
1057
+ declare class NgxBasicSelect<T> implements ControlValueAccessor, AfterViewInit, DoCheck {
1014
1058
  readonly texts: _angular_core.Signal<ngx_eiffage_material.NgxEiffageTexts>;
1015
1059
  /**
1016
1060
  * Se auto-registra como ControlValueAccessor del control del formulario.
@@ -1025,19 +1069,21 @@ declare class NgxBasicSelect<T> implements ControlValueAccessor {
1025
1069
  readonly label: _angular_core.InputSignal<string>;
1026
1070
  readonly options: _angular_core.InputSignal<T[]>;
1027
1071
  readonly basicSelectConfig: _angular_core.InputSignal<BasicSelectConfig<T>>;
1028
- readonly isLoading: _angular_core.InputSignal<boolean>;
1072
+ readonly isLoading: _angular_core.InputSignalWithTransform<boolean, unknown>;
1029
1073
  readonly placeholder: _angular_core.InputSignal<string>;
1030
1074
  readonly subscriptSizing: _angular_core.InputSignal<SubscriptSizing>;
1031
1075
  readonly appearance: _angular_core.InputSignal<"fill" | "outline">;
1032
- readonly multiple: _angular_core.InputSignal<boolean>;
1033
- readonly disabled: _angular_core.InputSignal<boolean>;
1034
- readonly clearable: _angular_core.InputSignal<boolean>;
1076
+ readonly multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
1077
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
1078
+ readonly clearable: _angular_core.InputSignalWithTransform<boolean, unknown>;
1035
1079
  readonly error: _angular_core.InputSignal<string>;
1036
1080
  readonly class: _angular_core.InputSignal<string>;
1037
1081
  /** Emite el/los valor(es) de `valueKey` al cambiar la selección. */
1038
1082
  selectionChange: _angular_core.OutputEmitterRef<T[keyof T] | T[keyof T][] | null>;
1039
1083
  readonly matSelect: _angular_core.Signal<MatSelect>;
1040
1084
  readonly searchInput: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
1085
+ /** Igual que matSelect, pero sin fallar antes de crear la vista (ngDoCheck se llama antes). */
1086
+ private readonly _matSelectRef;
1041
1087
  /** FormControl interno que gobierna el mat-select (independiente del control del form). */
1042
1088
  protected readonly innerControl: FormControl<any>;
1043
1089
  /** Copia del valor como signal, para leerlo reactivamente en plantilla (OnPush). */
@@ -1046,6 +1092,8 @@ declare class NgxBasicSelect<T> implements ControlValueAccessor {
1046
1092
  private readonly cvaDisabled;
1047
1093
  /** Estado del buscador (signal, no el DOM, para funcionar en zoneless). */
1048
1094
  protected readonly searchQuery: _angular_core.WritableSignal<string>;
1095
+ /** Anchos (en %) de las filas fantasma mientras se carga: distintos para que parezca texto. */
1096
+ protected readonly skeletonWidths: number[];
1049
1097
  private onChange;
1050
1098
  private onTouched;
1051
1099
  /** Deshabilitado efectivo: input `disabled` o el que llega del formulario. */
@@ -1056,6 +1104,8 @@ declare class NgxBasicSelect<T> implements ControlValueAccessor {
1056
1104
  * pudiendo pintar la etiqueta del valor seleccionado aunque esté filtrado.
1057
1105
  */
1058
1106
  protected readonly resolvedOptions: _angular_core.Signal<ResolvedOption<T>[]>;
1107
+ /** Buscador visible según `basicSelectConfig.search` (true, false o número mínimo de opciones). */
1108
+ protected readonly showSearch: _angular_core.Signal<boolean>;
1059
1109
  /** Hay datos de entrada (con independencia del buscador). */
1060
1110
  protected readonly hasData: _angular_core.Signal<boolean>;
1061
1111
  /**
@@ -1080,14 +1130,17 @@ declare class NgxBasicSelect<T> implements ControlValueAccessor {
1080
1130
  */
1081
1131
  protected readonly errorStateMatcher: ErrorStateMatcher;
1082
1132
  /**
1083
- * Obligatorio si el control del formulario tiene el validador `required`.
1084
- * Se propaga al mat-select interno para que el mat-form-field pinte el
1085
- * asterisco, igual que hace Material con un `<input matInput>`.
1133
+ * Obligatorio si el control del formulario tiene el validador `required`. Se propaga al
1134
+ * mat-select interno para que el mat-form-field pinte el asterisco. Es un signal (no un
1135
+ * método en plantilla): se actualiza con los eventos del control y en cada ngDoCheck.
1086
1136
  */
1087
- protected isRequired(): boolean;
1137
+ protected readonly isRequired: _angular_core.WritableSignal<boolean>;
1088
1138
  /** true cuando el formulario contenedor ya ha intentado enviarse. */
1089
1139
  private _isParentFormSubmitted;
1090
1140
  constructor();
1141
+ ngAfterViewInit(): void;
1142
+ ngDoCheck(): void;
1143
+ private _syncFormState;
1091
1144
  writeValue(value: any): void;
1092
1145
  registerOnChange(fn: (value: any) => void): void;
1093
1146
  registerOnTouched(fn: () => void): void;
@@ -1194,17 +1247,19 @@ declare class NgxPaginatedTable<T, U extends PaginatedFilter<T>> implements OnDe
1194
1247
  private readonly dialog;
1195
1248
  private readonly dialogService;
1196
1249
  private readonly datosPantallaService;
1250
+ private readonly _host;
1251
+ private readonly _destroyRef;
1197
1252
  readonly texts: Signal<ngx_eiffage_material.NgxEiffageTexts>;
1198
1253
  protected isDesktop: Signal<boolean>;
1199
1254
  endpoint: _angular_core.InputSignal<(filters: U) => Observable<PaginatedItems<T>>>;
1200
1255
  filters: _angular_core.InputSignal<WritableSignal<U>>;
1201
1256
  config: _angular_core.InputSignal<WritableSignal<PaginatedTableConfig<T>>>;
1202
- protected createClick: _angular_core.OutputEmitterRef<void>;
1203
- protected updateClick: _angular_core.OutputEmitterRef<T>;
1204
- protected deleteClick: _angular_core.OutputEmitterRef<T>;
1205
- protected rowActionClick: _angular_core.OutputEmitterRef<RowActionClickEvent<T>>;
1206
- protected expandedItemChange: _angular_core.OutputEmitterRef<T | null>;
1207
- protected selectionActionEvent: _angular_core.OutputEmitterRef<SelectionActionEvent<T>>;
1257
+ readonly createClick: _angular_core.OutputEmitterRef<void>;
1258
+ readonly updateClick: _angular_core.OutputEmitterRef<T>;
1259
+ readonly deleteClick: _angular_core.OutputEmitterRef<T>;
1260
+ readonly rowActionClick: _angular_core.OutputEmitterRef<RowActionClickEvent<T>>;
1261
+ readonly expandedItemChange: _angular_core.OutputEmitterRef<T | null>;
1262
+ readonly selectionActionEvent: _angular_core.OutputEmitterRef<SelectionActionEvent<T>>;
1208
1263
  protected readonly filterKeyPrefix = "filter";
1209
1264
  protected readonly nameOfActionsColumn = "actionsPerRow";
1210
1265
  protected readonly generalFooterKeyPrefix = "footer";
@@ -1222,21 +1277,30 @@ declare class NgxPaginatedTable<T, U extends PaginatedFilter<T>> implements OnDe
1222
1277
  protected showActionsColumn: Signal<boolean>;
1223
1278
  protected showTotalPerPageFooter: Signal<boolean>;
1224
1279
  protected showTotalGeneralFooter: Signal<boolean>;
1280
+ /** Texto del buscador (para la X de borrar; antes se leía el DOM desde la plantilla). */
1281
+ protected readonly queryText: WritableSignal<string>;
1282
+ /** Texto de cada celda de la página (sin componente ni plantilla), calculado una vez. */
1283
+ protected readonly cellTexts: Signal<Map<T, Record<keyof T, string>>>;
1284
+ /** Total por página (de lo cargado) y general (lo da el consumidor con getTotalGeneral), ya formateados. */
1285
+ protected readonly pageTotals: Signal<Record<string, string>>;
1286
+ protected readonly generalTotals: Signal<Record<string, string>>;
1287
+ /** Descripción del filtro avanzado aplicado (HTML). */
1288
+ protected readonly advancedFilterLabel: Signal<string>;
1225
1289
  protected queryTimeout: number | undefined;
1226
1290
  protected timeoutsByKey: Partial<Record<keyof T, number>>;
1227
1291
  protected advancedFilters: Signal<AdvancedFilter<T>[]>;
1228
1292
  protected readonly expandableColumnDef = "expandedDetail";
1229
1293
  protected expandedItem: WritableSignal<T | null>;
1230
1294
  protected selection: WritableSignal<T[]>;
1295
+ /** Claves de las filas seleccionadas: comprobar una fila es O(1). */
1296
+ private readonly _selectedKeys;
1297
+ protected readonly allPageSelected: Signal<boolean>;
1231
1298
  protected isFullScreen: WritableSignal<boolean>;
1232
1299
  private readonly overlay;
1233
- private readonly overlayContainer;
1234
1300
  private readonly viewContainerRef;
1235
1301
  tableContentTemplate: Signal<TemplateRef<any> | undefined>;
1236
1302
  private overlayRef?;
1237
- private portal?;
1238
1303
  protected defaultFiltersForPaginatedFilterOptions: WritableSignal<PaginatedFilter<FilterOption>>;
1239
- onEscape(): void;
1240
1304
  ngOnDestroy(): void;
1241
1305
  private includeInColumnConfig;
1242
1306
  protected getKeyAsString: (columnKey: keyof T | string) => string;
@@ -1261,34 +1325,32 @@ declare class NgxPaginatedTable<T, U extends PaginatedFilter<T>> implements OnDe
1261
1325
  protected getSearchableSelectValueOfColumnFilter(key: keyof T): string | string[] | undefined;
1262
1326
  protected getDateRangeValueOfColumnFilter(key: keyof T, type: 'start' | 'end'): moment.Moment | null;
1263
1327
  protected onEditColumns(): void;
1264
- protected applyColumnPipes(value: any, pipes?: ColumnPipe | ColumnPipe[]): any;
1265
1328
  protected onNewAdvancedFiltersClick(): void;
1266
1329
  protected onApplyTemplateClick(advancedFilter?: AdvancedFilter<T>): void;
1267
1330
  protected onSelectedAdvancedFilterUpdate(event: Event): void;
1268
1331
  protected onAdvancedFilterUpdate(event: Event, advancedFilter: AdvancedFilter<T>, advancedFiltersMenuTrigger?: MatMenuTrigger): void;
1269
1332
  protected onAdvancedFilterDelete(event: Event, advancedFiltersMenuTrigger: MatMenuTrigger, advancedFilter: AdvancedFilter<T>): void;
1270
1333
  protected onQuitAdvancedFilter(event: Event): void;
1271
- protected getAdvancedFilterLabel(): string;
1334
+ /** Por clave y no por referencia: el detalle sigue abierto si la página se recarga. */
1272
1335
  protected rowIsExpanded(row: T): boolean;
1273
1336
  protected expandableToggle(row: T): void;
1274
- protected getTotalOfColum(columnKey: keyof T): number;
1275
- protected areEqualByKeys(record1: T, record2: T): boolean;
1337
+ /** Lo que se pinta en una celda sin componente ni plantilla: valueGetter, o el valor con sus pipes, o «-». */
1338
+ private displayText;
1339
+ private totalsText;
1276
1340
  protected isRowSelected(row: T): boolean;
1277
1341
  protected toggleRowSelection(row: T): void;
1278
- protected isAllPageRowSelected(): boolean;
1279
1342
  protected toggleAllPageRowSelection(): void;
1280
1343
  private getSelectableRows;
1281
1344
  protected getRowSelectionAction(): RowSelectionAction<T>[];
1282
1345
  protected uncheckAllSelection(): void;
1283
1346
  protected onRowSelectionActionClick(actionId: string): void;
1284
- private getDocumentHeaders;
1285
- private getDocumentRows;
1347
+ /** Exporta la página cargada, con las columnas visibles y en el orden elegido. */
1286
1348
  protected exportToCsvCurrentPage(): void;
1287
1349
  protected exportToPdfCurrentPage(): void;
1350
+ private exportOptions;
1288
1351
  protected onToggleFullScreen(): void;
1289
1352
  private enterFullscreen;
1290
1353
  private exitFullscreen;
1291
- private isMyOverlayOnTop;
1292
1354
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxPaginatedTable<any, any>, never>;
1293
1355
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxPaginatedTable<any, any>, "ngx-paginated-table", never, { "endpoint": { "alias": "endpoint"; "required": true; "isSignal": true; }; "filters": { "alias": "filters"; "required": false; "isSignal": true; }; "config": { "alias": "config"; "required": true; "isSignal": true; }; }, { "createClick": "createClick"; "updateClick": "updateClick"; "deleteClick": "deleteClick"; "rowActionClick": "rowActionClick"; "expandedItemChange": "expandedItemChange"; "selectionActionEvent": "selectionActionEvent"; }, never, ["[icon-buttons]", "[more-filters]", "[extra-header-content]", "[end-container]"], true, never>;
1294
1356
  }
@@ -1298,6 +1360,8 @@ declare class NgxBasicTable<T, U extends BasicFilter<T>> {
1298
1360
  private readonly dialog;
1299
1361
  private readonly dialogService;
1300
1362
  private readonly datosPantallaService;
1363
+ private readonly _host;
1364
+ private readonly _destroyRef;
1301
1365
  readonly texts: _angular_core.Signal<ngx_eiffage_material.NgxEiffageTexts>;
1302
1366
  protected isDesktop: _angular_core.Signal<boolean>;
1303
1367
  filters: _angular_core.InputSignal<WritableSignal<U>>;
@@ -1306,14 +1370,22 @@ declare class NgxBasicTable<T, U extends BasicFilter<T>> {
1306
1370
  loading: _angular_core.InputSignal<boolean>;
1307
1371
  queryFilter: _angular_core.InputSignal<((query: string, data: T[]) => T[]) | undefined>;
1308
1372
  moreFilters: _angular_core.InputSignal<(data: T[], filters: U) => T[]>;
1309
- protected createClick: _angular_core.OutputEmitterRef<void>;
1310
- protected updateClick: _angular_core.OutputEmitterRef<T>;
1311
- protected deleteClick: _angular_core.OutputEmitterRef<T>;
1312
- protected rowActionClick: _angular_core.OutputEmitterRef<RowActionClickEvent<T>>;
1313
- protected expandedItemChange: _angular_core.OutputEmitterRef<T | null>;
1314
- protected selectionActionEvent: _angular_core.OutputEmitterRef<SelectionActionEvent<T>>;
1373
+ readonly createClick: _angular_core.OutputEmitterRef<void>;
1374
+ readonly updateClick: _angular_core.OutputEmitterRef<T>;
1375
+ readonly deleteClick: _angular_core.OutputEmitterRef<T>;
1376
+ readonly rowActionClick: _angular_core.OutputEmitterRef<RowActionClickEvent<T>>;
1377
+ readonly expandedItemChange: _angular_core.OutputEmitterRef<T | null>;
1378
+ readonly selectionActionEvent: _angular_core.OutputEmitterRef<SelectionActionEvent<T>>;
1379
+ protected paginator: _angular_core.Signal<MatPaginator | undefined>;
1380
+ /** Búsqueda, orden, filtros de columna y moreFilters aplicados: lo que se pagina y se exporta. */
1381
+ protected readonly filteredData: _angular_core.Signal<T[]>;
1315
1382
  dataSource: _angular_core.Signal<MatTableDataSource<T, MatPaginator>>;
1316
- filtersEffect: _angular_core.EffectRef;
1383
+ private readonly _syncData;
1384
+ /** Filas de la página visible (cambia con el paginador): totales por página y «seleccionar página». */
1385
+ protected readonly pageRows: _angular_core.Signal<T[]>;
1386
+ /** Al cambiar la búsqueda, el orden o un filtro se vuelve a la primera página. */
1387
+ private _lastFilters?;
1388
+ private readonly _resetPage;
1317
1389
  protected columnConfig: _angular_core.Signal<ColumnConfig<T>[]>;
1318
1390
  protected readonly filterKeyPrefix = "filter";
1319
1391
  protected readonly nameOfActionsColumn = "actionsPerRow";
@@ -1328,29 +1400,39 @@ declare class NgxBasicTable<T, U extends BasicFilter<T>> {
1328
1400
  protected showTotalPerPageFooter: _angular_core.Signal<boolean>;
1329
1401
  protected showTotalGeneralFooter: _angular_core.Signal<boolean>;
1330
1402
  protected showQueryFilter: _angular_core.Signal<boolean>;
1403
+ /** Texto del buscador (para la X de borrar; antes se leía el DOM desde la plantilla). */
1404
+ protected readonly queryText: WritableSignal<string>;
1405
+ /** Texto de cada celda de la página (sin componente ni plantilla), calculado una vez. */
1406
+ protected readonly cellTexts: _angular_core.Signal<Map<T, Record<keyof T, string>>>;
1407
+ /** Totales por página y generales ya formateados, por clave de columna. */
1408
+ protected readonly pageTotals: _angular_core.Signal<Record<string, string>>;
1409
+ protected readonly generalTotals: _angular_core.Signal<Record<string, string>>;
1331
1410
  protected tableContentTemplate: _angular_core.Signal<TemplateRef<any> | undefined>;
1332
1411
  protected isFullScreen: WritableSignal<boolean>;
1333
1412
  private overlayRef?;
1334
- private portal?;
1335
1413
  private readonly overlay;
1336
- private readonly overlayContainer;
1337
1414
  private readonly viewContainerRef;
1338
1415
  protected selection: WritableSignal<T[]>;
1416
+ /** Claves de las filas seleccionadas: comprobar una fila es O(1). */
1417
+ private readonly _selectedKeys;
1418
+ protected readonly allPageSelected: _angular_core.Signal<boolean>;
1339
1419
  protected readonly expandableColumnDef = "expandedDetail";
1340
1420
  protected expandedItem: WritableSignal<T | null>;
1341
- protected paginator: _angular_core.Signal<MatPaginator | undefined>;
1342
1421
  protected defaultFiltersForPaginatedFilterOptions: WritableSignal<PaginatedFilter<FilterOption>>;
1422
+ constructor();
1343
1423
  protected getKeyAsString: (columnKey: keyof T | string) => string;
1344
1424
  private includeInColumnConfig;
1345
- protected onEscape(): void;
1346
1425
  private someColumnFilterable;
1426
+ /** Busca en el texto que se ve de cada columna buscable (también números, fechas con pipe y valueGetter). */
1347
1427
  private applyInputFilter;
1348
1428
  private applySort;
1349
1429
  private applyColumnFilter;
1430
+ /** Lo que se pinta en una celda sin componente ni plantilla: valueGetter, o el valor con sus pipes, o «-». */
1431
+ private displayText;
1432
+ private totalsText;
1350
1433
  protected onToggleFullScreen(): void;
1351
1434
  private enterFullscreen;
1352
1435
  private exitFullscreen;
1353
- private isMyOverlayOnTop;
1354
1436
  protected onNewClick(): void;
1355
1437
  protected onUpdateClick(row: T, event: Event): void;
1356
1438
  protected onRowClick(row: T): void;
@@ -1361,22 +1443,16 @@ declare class NgxBasicTable<T, U extends BasicFilter<T>> {
1361
1443
  protected getRowSelectionAction(): RowSelectionAction<T>[];
1362
1444
  protected uncheckAllSelection(): void;
1363
1445
  protected onRowSelectionActionClick(actionId: string): void;
1364
- private getDocumentHeaders;
1365
- private getDocumentRows;
1446
+ /** Exporta todos los registros filtrados, con las columnas visibles y en el orden elegido. */
1366
1447
  protected exportToCsv(): void;
1367
1448
  protected exportToPdf(): void;
1449
+ private exportOptions;
1368
1450
  protected onQueryChange(inputElement: HTMLInputElement): void;
1369
1451
  protected onQueryReset(inputElement: HTMLInputElement): void;
1370
1452
  protected onSortChange(sort: Sort): void;
1371
1453
  protected toggleAllPageRowSelection(): void;
1372
- protected isAllPageRowSelected(): boolean;
1373
- protected areEqualByKeys(record1: T, record2: T): boolean;
1374
1454
  protected isRowSelected(row: T): boolean;
1375
1455
  protected toggleRowSelection(row: T): void;
1376
- protected applyColumnPipes(value: any, pipes?: ColumnPipe | ColumnPipe[]): any;
1377
- protected getTotalPerPageOfColum(columnKey: keyof T): number;
1378
- protected getDataOfCurrentPage(): T[];
1379
- protected getTotalOfColum(columnKey: keyof T): number;
1380
1456
  protected getValueOfColumnFilter(key: keyof T): ColumnValue;
1381
1457
  protected getPaginatedSearchableSelectValueOfColumnFilter(key: keyof T): FilterOption | FilterOption[] | undefined;
1382
1458
  protected getSearchableSelectValueOfColumnFilter(key: keyof T): string | string[] | undefined;
@@ -1387,6 +1463,7 @@ declare class NgxBasicTable<T, U extends BasicFilter<T>> {
1387
1463
  protected onDateFilterChange(column: BasicTableColumn<T>, value: moment.Moment | null): void;
1388
1464
  protected onDateRangeFilterChange(column: BasicTableColumn<T>, value: DateRange<moment.Moment | null> | null): void;
1389
1465
  private onColumnFilterChange;
1466
+ /** Por clave y no por referencia: el detalle sigue abierto si los datos se recargan. */
1390
1467
  protected rowIsExpanded(row: T): boolean;
1391
1468
  protected expandableToggle(row: T): void;
1392
1469
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxBasicTable<any, any>, never>;
@@ -1527,7 +1604,7 @@ declare class NgxAlert {
1527
1604
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxAlert, "ngx-alert", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "hideIcon": { "alias": "hideIcon"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; "dismissLabel": { "alias": "dismissLabel"; "required": false; "isSignal": true; }; "politeness": { "alias": "politeness"; "required": false; "isSignal": true; }; }, { "dismissed": "dismissed"; }, never, ["*", "[alertActions]"], true, never>;
1528
1605
  }
1529
1606
 
1530
- declare class NgxPaginatedSelect<T, U extends PaginatedFilter<T>> implements ControlValueAccessor {
1607
+ declare class NgxPaginatedSelect<T, U extends PaginatedFilter<T>> implements ControlValueAccessor, AfterViewInit, DoCheck {
1531
1608
  private readonly _bottomSheet;
1532
1609
  /** Se auto-registra como CVA (self/optional para leer validación y no fallar sin form). */
1533
1610
  private readonly _ngControl;
@@ -1535,6 +1612,8 @@ declare class NgxPaginatedSelect<T, U extends PaginatedFilter<T>> implements Con
1535
1612
  private readonly _parentFormGroup;
1536
1613
  private readonly _parentForm;
1537
1614
  private readonly _changeDetectorRef;
1615
+ private readonly _destroyRef;
1616
+ private readonly _host;
1538
1617
  readonly texts: _angular_core.Signal<ngx_eiffage_material.NgxEiffageTexts>;
1539
1618
  /** Label that floats on the form field */
1540
1619
  readonly label: _angular_core.InputSignal<string>;
@@ -1614,28 +1693,52 @@ declare class NgxPaginatedSelect<T, U extends PaginatedFilter<T>> implements Con
1614
1693
  private _suppressEmit;
1615
1694
  /** Huella de la última selección aplicada desde el input `selectedItems`. */
1616
1695
  private _lastSyncedSelection;
1696
+ /** Primera página de la última apertura: la siguiente se pinta al instante mientras recarga. */
1697
+ private readonly _pageCache;
1698
+ /** Claves ya pedidas a config.loadByKeys (no se repiten aunque fallen). */
1699
+ private readonly _requestedKeys;
1700
+ /** Resolviendo etiquetas con config.loadByKeys. */
1701
+ protected readonly isResolving: WritableSignal<boolean>;
1617
1702
  protected readonly isDisabled: _angular_core.Signal<boolean>;
1703
+ /** Todas las etiquetas seleccionadas, separadas por comas (tooltip del modo texto). */
1704
+ protected readonly fullLabel: _angular_core.Signal<string>;
1705
+ /** Lo que se ve en el modo texto: en múltiple, las 3 primeras y «y N más». */
1618
1706
  protected readonly selectedLabel: _angular_core.Signal<string>;
1619
1707
  protected readonly hasSelection: _angular_core.Signal<boolean>;
1620
1708
  protected readonly showChips: _angular_core.Signal<boolean>;
1621
1709
  protected readonly displayedChips: _angular_core.Signal<Partial<T>[]>;
1710
+ /**
1711
+ * En fila (chipsDirection="row"), cuántos de los chips mostrados caben enteros en el ancho del
1712
+ * campo; null = sin medir. Los que no caben se ocultan y pasan a contar en el «+N», en vez de
1713
+ * quedar cortados a medias.
1714
+ */
1715
+ private readonly _fittingChips;
1716
+ /** Chips visibles de verdad: los de maxChipsDisplayed que caben (en fila) o todos (en columna). */
1717
+ protected readonly visibleChipCount: _angular_core.Signal<number>;
1622
1718
  protected readonly remainingChipsCount: _angular_core.Signal<number>;
1623
1719
  /** ErrorStateMatcher que refleja el estado del control del formulario. */
1624
1720
  protected readonly errorStateMatcher: ErrorStateMatcher;
1625
1721
  /** true cuando el formulario contenedor ya ha intentado enviarse. */
1626
1722
  private _isParentFormSubmitted;
1627
1723
  /**
1628
- * Obligatorio si el control del formulario tiene el validador `required`.
1629
- * Se propaga al input interno para que el mat-form-field pinte el asterisco,
1630
- * igual que hace Material con un `<input matInput>` normal.
1724
+ * Obligatorio si el control del formulario tiene el validador `required`: el mat-form-field pinta
1725
+ * el asterisco. Signal (no método en plantilla) que se actualiza en ngDoCheck.
1631
1726
  */
1632
- protected isRequired(): boolean;
1727
+ protected readonly isRequired: WritableSignal<boolean>;
1728
+ /** Control visible según el modo (chips o texto), para recalcular su error con OnPush. */
1729
+ private readonly _chipGrid;
1730
+ private readonly _textInput;
1633
1731
  protected readonly effectiveSearchPlaceholder: _angular_core.Signal<string>;
1634
1732
  protected readonly effectiveNoResults: _angular_core.Signal<string>;
1635
1733
  protected readonly effectiveConfirmLabel: _angular_core.Signal<string>;
1636
1734
  protected readonly effectiveResetLabel: _angular_core.Signal<string>;
1637
1735
  protected readonly effectiveSelectAllLabel: _angular_core.Signal<string>;
1638
1736
  constructor();
1737
+ ngAfterViewInit(): void;
1738
+ ngDoCheck(): void;
1739
+ /** Cuenta los chips que acaban dentro del ancho visible del grid (al menos uno). */
1740
+ private _measureChips;
1741
+ private _syncFormState;
1639
1742
  writeValue(value: T[keyof T] | T[keyof T][] | null): void;
1640
1743
  registerOnChange(fn: (value: T[keyof T] | T[keyof T][] | null) => void): void;
1641
1744
  registerOnTouched(fn: () => void): void;
@@ -1649,6 +1752,8 @@ declare class NgxPaginatedSelect<T, U extends PaginatedFilter<T>> implements Con
1649
1752
  * `String(item[valueKey])` so partial objects never throw.
1650
1753
  */
1651
1754
  protected getLabel(item: Partial<T>): string;
1755
+ /** Pide a config.loadByKeys los elementos de los que solo se conoce la clave. */
1756
+ private _resolvePartials;
1652
1757
  openBottomSheet(event: Event): void;
1653
1758
  /** Abrir el bottom sheet desde el teclado (Enter / Espacio / flecha abajo). */
1654
1759
  onTriggerKeydown(event: KeyboardEvent): void;
@@ -1658,6 +1763,36 @@ declare class NgxPaginatedSelect<T, U extends PaginatedFilter<T>> implements Con
1658
1763
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxPaginatedSelect<any, any>, "ngx-paginated-select", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "endpoint": { "alias": "endpoint"; "required": true; "isSignal": true; }; "config": { "alias": "config"; "required": true; "isSignal": true; }; "filters": { "alias": "filters"; "required": false; "isSignal": true; }; "selectedItems": { "alias": "selectedItems"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "displayMode": { "alias": "displayMode"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "noResultsMessage": { "alias": "noResultsMessage"; "required": false; "isSignal": true; }; "confirmLabel": { "alias": "confirmLabel"; "required": false; "isSignal": true; }; "resetLabel": { "alias": "resetLabel"; "required": false; "isSignal": true; }; "subscriptSizing": { "alias": "subscriptSizing"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "optionTemplate": { "alias": "optionTemplate"; "required": false; "isSignal": true; }; "extraFiltersTemplate": { "alias": "extraFiltersTemplate"; "required": false; "isSignal": true; }; "maxChipsDisplayed": { "alias": "maxChipsDisplayed"; "required": false; "isSignal": true; }; "chipsDirection": { "alias": "chipsDirection"; "required": false; "isSignal": true; }; "showSelectAll": { "alias": "showSelectAll"; "required": false; "isSignal": true; }; "selectAllLabel": { "alias": "selectAllLabel"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "selectionChange": "selectionChange"; }, never, never, true, never>;
1659
1764
  }
1660
1765
 
1766
+ /** Trozo de una etiqueta: `match` = coincide con la búsqueda (se resalta). */
1767
+ interface LabelPart {
1768
+ text: string;
1769
+ match: boolean;
1770
+ }
1771
+ /** Estado ya resuelto de cada fila: se calcula una vez por cambio, no en cada pasada de la plantilla. */
1772
+ interface OptionView<T> {
1773
+ item: T;
1774
+ key: unknown;
1775
+ index: number;
1776
+ id: string;
1777
+ label: string;
1778
+ labelParts: LabelPart[];
1779
+ subtitle: string | null;
1780
+ disabled: boolean;
1781
+ selected: boolean;
1782
+ /** Seleccionada que no está en las páginas cargadas: se fija arriba para que se vea al abrir. */
1783
+ pinned: boolean;
1784
+ avatarImage: string | null;
1785
+ avatarText: string;
1786
+ /** Tono del avatar de texto (0-3), estable para cada elemento. */
1787
+ avatarTone: number;
1788
+ }
1789
+ /** Primera página guardada entre aperturas: se muestra al instante mientras se recarga. */
1790
+ interface NgxPaginatedSelectPageCache<T> {
1791
+ value: {
1792
+ fingerprint: string;
1793
+ page: PaginatedItems<T>;
1794
+ } | null;
1795
+ }
1661
1796
  interface NgxPaginatedSelectBottomSheetData<T, U extends PaginatedFilter<T>> {
1662
1797
  title: string;
1663
1798
  config: PaginatedSelectConfig<T>;
@@ -1677,18 +1812,33 @@ interface NgxPaginatedSelectBottomSheetData<T, U extends PaginatedFilter<T>> {
1677
1812
  extraFiltersTemplate: TemplateRef<void> | null;
1678
1813
  showSelectAll: boolean;
1679
1814
  selectAllLabel: string;
1815
+ /** Primera página de aperturas anteriores (opcional). */
1816
+ cache?: NgxPaginatedSelectPageCache<T>;
1680
1817
  }
1681
1818
  declare class NgxPaginatedSelectBottomSheetComponent<T, U extends PaginatedFilter<T>> {
1682
1819
  private readonly _ref;
1683
1820
  private readonly _destroy;
1821
+ private readonly _host;
1822
+ private readonly _injector;
1684
1823
  readonly data: NgxPaginatedSelectBottomSheetData<T, U>;
1685
1824
  readonly texts: _angular_core.Signal<ngx_eiffage_material.NgxEiffageTexts>;
1825
+ /** Prefijo de ids para aria-activedescendant. */
1826
+ readonly listId: string;
1827
+ private readonly _key;
1828
+ /** Mínimo de caracteres para lanzar una búsqueda. */
1829
+ readonly minSearch: number;
1686
1830
  /** Raw input value — updates on every keystroke, does NOT trigger the resource */
1687
1831
  readonly query: WritableSignal<string | undefined>;
1832
+ /** Claves de items cuya imagen de avatar falló al cargar (para el fallback). */
1833
+ private readonly failedImages;
1688
1834
  /** Holds Partial<T> initially; items get upgraded to full T when toggled from the list */
1689
1835
  readonly selectedItems: WritableSignal<Partial<T>[]>;
1836
+ /** Claves seleccionadas al abrir: para saber si hay cambios sin confirmar. */
1837
+ private readonly _initialKeys;
1838
+ /** Aviso «¿Descartar los cambios?» visible (múltiple). */
1839
+ readonly confirmDiscard: WritableSignal<boolean>;
1690
1840
  /**
1691
- * Subject used to bypass the 400 ms debounce (e.g. when the user clears
1841
+ * Subject used to bypass the debounce (e.g. when the user clears
1692
1842
  * the search field — we want an immediate response).
1693
1843
  */
1694
1844
  private readonly _immediateQuery$;
@@ -1704,6 +1854,20 @@ declare class NgxPaginatedSelectBottomSheetComponent<T, U extends PaginatedFilte
1704
1854
  readonly options: _angular_core.Signal<T[]>;
1705
1855
  readonly hasError: _angular_core.Signal<boolean>;
1706
1856
  readonly selectedCount: _angular_core.Signal<number>;
1857
+ /** Claves seleccionadas en un Set: comprobar si una opción está elegida es O(1). */
1858
+ private readonly _selectedKeys;
1859
+ /** Hay cambios respecto a la selección con la que se abrió el panel. */
1860
+ readonly isDirty: _angular_core.Signal<boolean>;
1861
+ /** Búsqueda escrita pero más corta que minSearchLength. */
1862
+ readonly searchTooShort: _angular_core.Signal<boolean>;
1863
+ /** Opción activa del teclado (índice en optionViews); -1 = ninguna. */
1864
+ readonly activeIndex: WritableSignal<number>;
1865
+ readonly activeId: _angular_core.Signal<string | null>;
1866
+ /**
1867
+ * Todo lo que pinta cada fila, resuelto de una vez. En simple, si lo seleccionado no está en
1868
+ * las páginas cargadas y no se está buscando, se fija arriba para que se vea al abrir.
1869
+ */
1870
+ readonly optionViews: _angular_core.Signal<OptionView<T>[]>;
1707
1871
  /**
1708
1872
  * Total como signal, actualizado SOLO cuando el recurso no está cargando. Durante
1709
1873
  * la carga por scroll, resource.value() pasa transitoriamente al defaultValue
@@ -1714,9 +1878,9 @@ declare class NgxPaginatedSelectBottomSheetComponent<T, U extends PaginatedFilte
1714
1878
  private readonly _total;
1715
1879
  readonly total: _angular_core.Signal<number>;
1716
1880
  private readonly _totalEffect;
1717
- /** Cargando la PRIMERA página (lista vacía) → se muestran skeletons. */
1881
+ /** Cargando la PRIMERA página sin nada que enseñar → skeletons. */
1718
1882
  readonly isInitialLoading: _angular_core.Signal<boolean>;
1719
- /** Cargando MÁS páginas (scroll) → fila inline "cargando más…", sin barra superior. */
1883
+ /** Cargando MÁS páginas (scroll) → fila «cargando más…». Recargar la primera (caché) no la muestra. */
1720
1884
  readonly isLoadingMore: _angular_core.Signal<boolean>;
1721
1885
  /** Ya se han cargado todos los resultados disponibles. */
1722
1886
  readonly allLoaded: _angular_core.Signal<boolean>;
@@ -1727,19 +1891,12 @@ declare class NgxPaginatedSelectBottomSheetComponent<T, U extends PaginatedFilte
1727
1891
  /**
1728
1892
  * Reactively depends ONLY on `resource.value()`. The filter snapshot is read
1729
1893
  * via `untracked` so external filter changes (parent-driven, e.g. an extra
1730
- * filters panel) do NOT create a reactive dependency here — that would make
1731
- * the effect re-run on scroll page increments with stale resource data,
1732
- * duplicating items and breaking `onScroll` (see original limitation).
1894
+ * filters panel) do NOT create a reactive dependency here.
1733
1895
  *
1734
1896
  * Reset logic:
1735
1897
  * - Fingerprint the current filter identity (everything except `pageNumber`).
1736
- * - If the fingerprint changed since the previous fetch, this fetch belongs
1737
- * to a different filter set → replace the accumulated array.
1898
+ * - If the fingerprint changed since the previous fetch, or this is page 1 → replace.
1738
1899
  * - If only `pageNumber` moved, this is a scroll-load-more → append.
1739
- *
1740
- * This is what allows callers to mutate `data.filters` from outside (extra
1741
- * filter selects, checkboxes, etc.) and have the list refresh cleanly
1742
- * without the previous page's items lingering.
1743
1900
  */
1744
1901
  private _lastFilterFingerprint;
1745
1902
  private readonly _accumEffect;
@@ -1751,14 +1908,24 @@ declare class NgxPaginatedSelectBottomSheetComponent<T, U extends PaginatedFilte
1751
1908
  */
1752
1909
  getLabel(item: Partial<T>): string;
1753
1910
  getAvatarText(item: Partial<T>): string;
1754
- /** Claves de items cuya imagen de avatar falló al cargar (para el fallback). */
1755
- private readonly failedImages;
1756
1911
  /** URL de imagen del avatar, o null si no hay o si falló al cargar. */
1757
1912
  getAvatarImage(item: Partial<T>): string | null | undefined;
1758
1913
  /** Marca la imagen como fallida para caer al texto/icono. */
1759
1914
  onAvatarError(item: Partial<T>): void;
1760
1915
  toggleItem(item: T): void;
1761
1916
  removeSelectedChip(item: Partial<T>): void;
1917
+ /**
1918
+ * Patrón combobox: el foco se queda en el buscador (se puede seguir escribiendo) y la opción
1919
+ * activa se marca con aria-activedescendant. Flechas y RePág/AvPág la mueven; Intro elige.
1920
+ */
1921
+ onSearchKeydown(event: KeyboardEvent): void;
1922
+ /** Sin buscador, la propia lista recibe el foco: además, Inicio/Fin y Espacio. */
1923
+ onListKeydown(event: KeyboardEvent): void;
1924
+ onOptionClick(view: OptionView<T>): void;
1925
+ private _moveActive;
1926
+ private _chooseActive;
1927
+ /** Activa una opción y la trae a la vista (si es de las últimas, el scroll carga la siguiente página). */
1928
+ private _setActive;
1762
1929
  onQueryInput(event: Event, container: HTMLElement): void;
1763
1930
  clearQuery(container?: HTMLElement): void;
1764
1931
  onScroll(container: HTMLElement): void;
@@ -1767,7 +1934,16 @@ declare class NgxPaginatedSelectBottomSheetComponent<T, U extends PaginatedFilte
1767
1934
  toggleSelectAll(): void;
1768
1935
  confirm(): void;
1769
1936
  reset(): void;
1937
+ /** Cierra sin aplicar cambios (botón X). En múltiple con cambios, pregunta antes. */
1770
1938
  close(): void;
1939
+ /** Cerrar desde la X, Escape o el fondo: si hay cambios sin confirmar, avisa primero. */
1940
+ requestClose(): void;
1941
+ discardChanges(): void;
1942
+ keepEditing(): void;
1943
+ /** Identidad de unos filtros sin la página: misma huella = misma lista. */
1944
+ private _fingerprint;
1945
+ /** Las funciones de config pueden fallar con objetos parciales (solo valueKey): se tratan como vacías. */
1946
+ private _safe;
1771
1947
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxPaginatedSelectBottomSheetComponent<any, any>, never>;
1772
1948
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxPaginatedSelectBottomSheetComponent<any, any>, "ngx-paginated-select-bottom-sheet", never, {}, {}, never, never, true, never>;
1773
1949
  }
@@ -2041,4 +2217,4 @@ declare const includeNoSensible: (cadena: string, query: string) => boolean;
2041
2217
  declare const base64ToUtf8: (str: string) => string;
2042
2218
 
2043
2219
  export { AdvancedFilterService, AdvancedFilterUtils, ColumnConfigService, DatosPantallaService, DialogBodyType, DynamicHostDirective, NGX_EIFFAGE_DEFAULT_TEXTS, NGX_EIFFAGE_TEXTS, NgxAlert, NgxBasicSelect, NgxBasicTable, NgxConfirmDialogComponent, NgxDialog, NgxDialogContext, NgxDialogHeader, NgxDialogService, NgxFileInput, NgxInputFile, NgxLoadingButton, NgxPaginatedSelect, NgxPaginatedSelectBottomSheetComponent, NgxPaginatedTable, NgxSkeleton, NgxTablesIntl, NgxTexts, OPERATOR_BY_FILTER_TYPE, PaginatedSearchableSelectComponent, SearchableSelectComponent, USER_ID_FACTORY, base64ToUtf8, includeNoSensible, isFilterOption, provideNgxEiffageTexts };
2044
- export type { AdvancedFilter, AlertAppearance, AlertType, BasicFilter, BasicSelectConfig, BasicTableColumn, BasicTableConfig, ColumnConfig, ColumnPipe, ColumnValue, ConfigureTableColumnData, ConfirmDialogData, DeleteConfirm, DialogBodyConfig, DialogConfig, DynamicFilter, FilterConnector, FilterGroup, FilterOperator, FilterOption, FilterRule, FilterType, LoadingButtonAppearance, LoadingButtonColor, NgxDialogTemplateContext, NgxEiffageTexts, NgxEiffageTextsOverrides, NgxEiffageTextsSource, NgxFileError, NgxFileErrorCode, NgxFileInputVariant, NgxFileItem, NgxPaginatedSelectBottomSheetData, PaginatedFilter, PaginatedItems, PaginatedSelectConfig, PaginatedTableColumn, PaginatedTableConfig, Pantalla, RowActionClickEvent, RowActionIconColor, RowSelectionAction, SelectionActionEvent, SendType, SkeletonAnimation, SkeletonVariant, SortBy, SortType, TableBasicAction, TableRowAction, TipoPantalla };
2220
+ export type { AdvancedFilter, AlertAppearance, AlertType, BasicFilter, BasicSelectConfig, BasicTableColumn, BasicTableConfig, ColumnConfig, ColumnPipe, ColumnValue, ConfigureTableColumnData, ConfirmDialogData, DeleteConfirm, DialogBodyConfig, DialogConfig, DynamicFilter, FilterConnector, FilterGroup, FilterOperator, FilterOption, FilterRule, FilterType, LoadingButtonAppearance, LoadingButtonColor, NgxDialogTemplateContext, NgxEiffageTexts, NgxEiffageTextsOverrides, NgxEiffageTextsSource, NgxFileError, NgxFileErrorCode, NgxFileInputVariant, NgxFileItem, NgxPaginatedSelectBottomSheetData, NgxPaginatedSelectPageCache, PaginatedFilter, PaginatedItems, PaginatedSelectConfig, PaginatedTableColumn, PaginatedTableConfig, Pantalla, RowActionClickEvent, RowActionIconColor, RowSelectionAction, SelectionActionEvent, SendType, SkeletonAnimation, SkeletonVariant, SortBy, SortType, TableBasicAction, TableRowAction, TipoPantalla };