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/fesm2022/ngx-eiffage-material.mjs +852 -426
- package/fesm2022/ngx-eiffage-material.mjs.map +1 -1
- package/index.d.ts +243 -67
- package/package.json +1 -1
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.
|
|
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.
|
|
1033
|
-
readonly disabled: _angular_core.
|
|
1034
|
-
readonly clearable: _angular_core.
|
|
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
|
-
*
|
|
1085
|
-
*
|
|
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
|
|
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
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1275
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
*
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 };
|