ngx-eiffage-material 0.4.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 +902 -433
- package/fesm2022/ngx-eiffage-material.mjs.map +1 -1
- package/index.d.ts +282 -69
- 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;
|
|
@@ -1124,7 +1177,6 @@ declare class NgxDialog<T = any, R = unknown> implements NgxDialogContext<R> {
|
|
|
1124
1177
|
readonly destructive: boolean;
|
|
1125
1178
|
/** La X no tiene sentido en un diálogo con disableClose (está pensado para no poder cerrarse sin decidir). */
|
|
1126
1179
|
readonly showClose: boolean;
|
|
1127
|
-
readonly closeLabel: string;
|
|
1128
1180
|
readonly cancelText: string;
|
|
1129
1181
|
readonly confirmText: string;
|
|
1130
1182
|
readonly result: _angular_core.WritableSignal<R | undefined>;
|
|
@@ -1138,6 +1190,44 @@ declare class NgxDialog<T = any, R = unknown> implements NgxDialogContext<R> {
|
|
|
1138
1190
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxDialog<any, any>, "ngx-dialog", never, {}, {}, never, never, true, never>;
|
|
1139
1191
|
}
|
|
1140
1192
|
|
|
1193
|
+
/**
|
|
1194
|
+
* Encabezado de diálogo con botón X para cerrar: el mismo que usa ngx-dialog, para diálogos propios
|
|
1195
|
+
* abiertos con MatDialog. Va en lugar de `<h2 mat-dialog-title>`:
|
|
1196
|
+
*
|
|
1197
|
+
* ```html
|
|
1198
|
+
* <ngx-dialog-header [title]="'Editar proyecto'" icon="edit" />
|
|
1199
|
+
* <!-- o con contenido propio -->
|
|
1200
|
+
* <ngx-dialog-header>{{ (isNew ? 'PROJECTS.create' : 'PROJECTS.edit') | translate }}</ngx-dialog-header>
|
|
1201
|
+
* ```
|
|
1202
|
+
*/
|
|
1203
|
+
declare class NgxDialogHeader implements DoCheck {
|
|
1204
|
+
private readonly _dialogRef;
|
|
1205
|
+
protected readonly texts: _angular_core.Signal<ngx_eiffage_material.NgxEiffageTexts>;
|
|
1206
|
+
/** Título. También se puede poner como contenido (`<ngx-dialog-header>…</ngx-dialog-header>`). */
|
|
1207
|
+
readonly title: _angular_core.InputSignal<string | undefined>;
|
|
1208
|
+
/** Línea secundaria bajo el título. */
|
|
1209
|
+
readonly subtitle: _angular_core.InputSignal<string | undefined>;
|
|
1210
|
+
/** Icono de Material Symbols delante del título. */
|
|
1211
|
+
readonly icon: _angular_core.InputSignal<string | undefined>;
|
|
1212
|
+
/** Color del icono (p. ej. `var(--mat-sys-error)`). */
|
|
1213
|
+
readonly iconColor: _angular_core.InputSignal<string | undefined>;
|
|
1214
|
+
/**
|
|
1215
|
+
* Muestra la X. Sin indicar, se ve mientras el diálogo se pueda cerrar: se oculta si el diálogo tiene
|
|
1216
|
+
* `disableClose` (también si se activa después, p. ej. durante una subida) y vuelve al quitarlo.
|
|
1217
|
+
*/
|
|
1218
|
+
readonly showClose: _angular_core.InputSignal<boolean | undefined>;
|
|
1219
|
+
/** Valor con el que se cierra al pulsar la X. Por defecto `undefined`, igual que con Esc o al pulsar fuera. */
|
|
1220
|
+
readonly closeResult: _angular_core.InputSignal<unknown>;
|
|
1221
|
+
/** disableClose es una propiedad normal del MatDialogRef: se lee en cada comprobación. */
|
|
1222
|
+
private readonly _closable;
|
|
1223
|
+
protected readonly closeVisible: _angular_core.Signal<boolean>;
|
|
1224
|
+
ngDoCheck(): void;
|
|
1225
|
+
/** Cierra el diálogo con `closeResult`. */
|
|
1226
|
+
close(): void;
|
|
1227
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxDialogHeader, never>;
|
|
1228
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxDialogHeader, "ngx-dialog-header", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconColor": { "alias": "iconColor"; "required": false; "isSignal": true; }; "showClose": { "alias": "showClose"; "required": false; "isSignal": true; }; "closeResult": { "alias": "closeResult"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
1229
|
+
}
|
|
1230
|
+
|
|
1141
1231
|
/**
|
|
1142
1232
|
* @deprecated Usar `NgxDialogService.confirm()` (o `template()` con contenido propio), que tiene el
|
|
1143
1233
|
* encabezado, el botón X y la opción `destructive` de ngx-dialog. Las tablas ya no lo usan; se
|
|
@@ -1157,17 +1247,19 @@ declare class NgxPaginatedTable<T, U extends PaginatedFilter<T>> implements OnDe
|
|
|
1157
1247
|
private readonly dialog;
|
|
1158
1248
|
private readonly dialogService;
|
|
1159
1249
|
private readonly datosPantallaService;
|
|
1250
|
+
private readonly _host;
|
|
1251
|
+
private readonly _destroyRef;
|
|
1160
1252
|
readonly texts: Signal<ngx_eiffage_material.NgxEiffageTexts>;
|
|
1161
1253
|
protected isDesktop: Signal<boolean>;
|
|
1162
1254
|
endpoint: _angular_core.InputSignal<(filters: U) => Observable<PaginatedItems<T>>>;
|
|
1163
1255
|
filters: _angular_core.InputSignal<WritableSignal<U>>;
|
|
1164
1256
|
config: _angular_core.InputSignal<WritableSignal<PaginatedTableConfig<T>>>;
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
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>>;
|
|
1171
1263
|
protected readonly filterKeyPrefix = "filter";
|
|
1172
1264
|
protected readonly nameOfActionsColumn = "actionsPerRow";
|
|
1173
1265
|
protected readonly generalFooterKeyPrefix = "footer";
|
|
@@ -1185,21 +1277,30 @@ declare class NgxPaginatedTable<T, U extends PaginatedFilter<T>> implements OnDe
|
|
|
1185
1277
|
protected showActionsColumn: Signal<boolean>;
|
|
1186
1278
|
protected showTotalPerPageFooter: Signal<boolean>;
|
|
1187
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>;
|
|
1188
1289
|
protected queryTimeout: number | undefined;
|
|
1189
1290
|
protected timeoutsByKey: Partial<Record<keyof T, number>>;
|
|
1190
1291
|
protected advancedFilters: Signal<AdvancedFilter<T>[]>;
|
|
1191
1292
|
protected readonly expandableColumnDef = "expandedDetail";
|
|
1192
1293
|
protected expandedItem: WritableSignal<T | null>;
|
|
1193
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>;
|
|
1194
1298
|
protected isFullScreen: WritableSignal<boolean>;
|
|
1195
1299
|
private readonly overlay;
|
|
1196
|
-
private readonly overlayContainer;
|
|
1197
1300
|
private readonly viewContainerRef;
|
|
1198
1301
|
tableContentTemplate: Signal<TemplateRef<any> | undefined>;
|
|
1199
1302
|
private overlayRef?;
|
|
1200
|
-
private portal?;
|
|
1201
1303
|
protected defaultFiltersForPaginatedFilterOptions: WritableSignal<PaginatedFilter<FilterOption>>;
|
|
1202
|
-
onEscape(): void;
|
|
1203
1304
|
ngOnDestroy(): void;
|
|
1204
1305
|
private includeInColumnConfig;
|
|
1205
1306
|
protected getKeyAsString: (columnKey: keyof T | string) => string;
|
|
@@ -1224,34 +1325,32 @@ declare class NgxPaginatedTable<T, U extends PaginatedFilter<T>> implements OnDe
|
|
|
1224
1325
|
protected getSearchableSelectValueOfColumnFilter(key: keyof T): string | string[] | undefined;
|
|
1225
1326
|
protected getDateRangeValueOfColumnFilter(key: keyof T, type: 'start' | 'end'): moment.Moment | null;
|
|
1226
1327
|
protected onEditColumns(): void;
|
|
1227
|
-
protected applyColumnPipes(value: any, pipes?: ColumnPipe | ColumnPipe[]): any;
|
|
1228
1328
|
protected onNewAdvancedFiltersClick(): void;
|
|
1229
1329
|
protected onApplyTemplateClick(advancedFilter?: AdvancedFilter<T>): void;
|
|
1230
1330
|
protected onSelectedAdvancedFilterUpdate(event: Event): void;
|
|
1231
1331
|
protected onAdvancedFilterUpdate(event: Event, advancedFilter: AdvancedFilter<T>, advancedFiltersMenuTrigger?: MatMenuTrigger): void;
|
|
1232
1332
|
protected onAdvancedFilterDelete(event: Event, advancedFiltersMenuTrigger: MatMenuTrigger, advancedFilter: AdvancedFilter<T>): void;
|
|
1233
1333
|
protected onQuitAdvancedFilter(event: Event): void;
|
|
1234
|
-
|
|
1334
|
+
/** Por clave y no por referencia: el detalle sigue abierto si la página se recarga. */
|
|
1235
1335
|
protected rowIsExpanded(row: T): boolean;
|
|
1236
1336
|
protected expandableToggle(row: T): void;
|
|
1237
|
-
|
|
1238
|
-
|
|
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;
|
|
1239
1340
|
protected isRowSelected(row: T): boolean;
|
|
1240
1341
|
protected toggleRowSelection(row: T): void;
|
|
1241
|
-
protected isAllPageRowSelected(): boolean;
|
|
1242
1342
|
protected toggleAllPageRowSelection(): void;
|
|
1243
1343
|
private getSelectableRows;
|
|
1244
1344
|
protected getRowSelectionAction(): RowSelectionAction<T>[];
|
|
1245
1345
|
protected uncheckAllSelection(): void;
|
|
1246
1346
|
protected onRowSelectionActionClick(actionId: string): void;
|
|
1247
|
-
|
|
1248
|
-
private getDocumentRows;
|
|
1347
|
+
/** Exporta la página cargada, con las columnas visibles y en el orden elegido. */
|
|
1249
1348
|
protected exportToCsvCurrentPage(): void;
|
|
1250
1349
|
protected exportToPdfCurrentPage(): void;
|
|
1350
|
+
private exportOptions;
|
|
1251
1351
|
protected onToggleFullScreen(): void;
|
|
1252
1352
|
private enterFullscreen;
|
|
1253
1353
|
private exitFullscreen;
|
|
1254
|
-
private isMyOverlayOnTop;
|
|
1255
1354
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxPaginatedTable<any, any>, never>;
|
|
1256
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>;
|
|
1257
1356
|
}
|
|
@@ -1261,6 +1360,8 @@ declare class NgxBasicTable<T, U extends BasicFilter<T>> {
|
|
|
1261
1360
|
private readonly dialog;
|
|
1262
1361
|
private readonly dialogService;
|
|
1263
1362
|
private readonly datosPantallaService;
|
|
1363
|
+
private readonly _host;
|
|
1364
|
+
private readonly _destroyRef;
|
|
1264
1365
|
readonly texts: _angular_core.Signal<ngx_eiffage_material.NgxEiffageTexts>;
|
|
1265
1366
|
protected isDesktop: _angular_core.Signal<boolean>;
|
|
1266
1367
|
filters: _angular_core.InputSignal<WritableSignal<U>>;
|
|
@@ -1269,14 +1370,22 @@ declare class NgxBasicTable<T, U extends BasicFilter<T>> {
|
|
|
1269
1370
|
loading: _angular_core.InputSignal<boolean>;
|
|
1270
1371
|
queryFilter: _angular_core.InputSignal<((query: string, data: T[]) => T[]) | undefined>;
|
|
1271
1372
|
moreFilters: _angular_core.InputSignal<(data: T[], filters: U) => T[]>;
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
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[]>;
|
|
1278
1382
|
dataSource: _angular_core.Signal<MatTableDataSource<T, MatPaginator>>;
|
|
1279
|
-
|
|
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;
|
|
1280
1389
|
protected columnConfig: _angular_core.Signal<ColumnConfig<T>[]>;
|
|
1281
1390
|
protected readonly filterKeyPrefix = "filter";
|
|
1282
1391
|
protected readonly nameOfActionsColumn = "actionsPerRow";
|
|
@@ -1291,29 +1400,39 @@ declare class NgxBasicTable<T, U extends BasicFilter<T>> {
|
|
|
1291
1400
|
protected showTotalPerPageFooter: _angular_core.Signal<boolean>;
|
|
1292
1401
|
protected showTotalGeneralFooter: _angular_core.Signal<boolean>;
|
|
1293
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>>;
|
|
1294
1410
|
protected tableContentTemplate: _angular_core.Signal<TemplateRef<any> | undefined>;
|
|
1295
1411
|
protected isFullScreen: WritableSignal<boolean>;
|
|
1296
1412
|
private overlayRef?;
|
|
1297
|
-
private portal?;
|
|
1298
1413
|
private readonly overlay;
|
|
1299
|
-
private readonly overlayContainer;
|
|
1300
1414
|
private readonly viewContainerRef;
|
|
1301
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>;
|
|
1302
1419
|
protected readonly expandableColumnDef = "expandedDetail";
|
|
1303
1420
|
protected expandedItem: WritableSignal<T | null>;
|
|
1304
|
-
protected paginator: _angular_core.Signal<MatPaginator | undefined>;
|
|
1305
1421
|
protected defaultFiltersForPaginatedFilterOptions: WritableSignal<PaginatedFilter<FilterOption>>;
|
|
1422
|
+
constructor();
|
|
1306
1423
|
protected getKeyAsString: (columnKey: keyof T | string) => string;
|
|
1307
1424
|
private includeInColumnConfig;
|
|
1308
|
-
protected onEscape(): void;
|
|
1309
1425
|
private someColumnFilterable;
|
|
1426
|
+
/** Busca en el texto que se ve de cada columna buscable (también números, fechas con pipe y valueGetter). */
|
|
1310
1427
|
private applyInputFilter;
|
|
1311
1428
|
private applySort;
|
|
1312
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;
|
|
1313
1433
|
protected onToggleFullScreen(): void;
|
|
1314
1434
|
private enterFullscreen;
|
|
1315
1435
|
private exitFullscreen;
|
|
1316
|
-
private isMyOverlayOnTop;
|
|
1317
1436
|
protected onNewClick(): void;
|
|
1318
1437
|
protected onUpdateClick(row: T, event: Event): void;
|
|
1319
1438
|
protected onRowClick(row: T): void;
|
|
@@ -1324,22 +1443,16 @@ declare class NgxBasicTable<T, U extends BasicFilter<T>> {
|
|
|
1324
1443
|
protected getRowSelectionAction(): RowSelectionAction<T>[];
|
|
1325
1444
|
protected uncheckAllSelection(): void;
|
|
1326
1445
|
protected onRowSelectionActionClick(actionId: string): void;
|
|
1327
|
-
|
|
1328
|
-
private getDocumentRows;
|
|
1446
|
+
/** Exporta todos los registros filtrados, con las columnas visibles y en el orden elegido. */
|
|
1329
1447
|
protected exportToCsv(): void;
|
|
1330
1448
|
protected exportToPdf(): void;
|
|
1449
|
+
private exportOptions;
|
|
1331
1450
|
protected onQueryChange(inputElement: HTMLInputElement): void;
|
|
1332
1451
|
protected onQueryReset(inputElement: HTMLInputElement): void;
|
|
1333
1452
|
protected onSortChange(sort: Sort): void;
|
|
1334
1453
|
protected toggleAllPageRowSelection(): void;
|
|
1335
|
-
protected isAllPageRowSelected(): boolean;
|
|
1336
|
-
protected areEqualByKeys(record1: T, record2: T): boolean;
|
|
1337
1454
|
protected isRowSelected(row: T): boolean;
|
|
1338
1455
|
protected toggleRowSelection(row: T): void;
|
|
1339
|
-
protected applyColumnPipes(value: any, pipes?: ColumnPipe | ColumnPipe[]): any;
|
|
1340
|
-
protected getTotalPerPageOfColum(columnKey: keyof T): number;
|
|
1341
|
-
protected getDataOfCurrentPage(): T[];
|
|
1342
|
-
protected getTotalOfColum(columnKey: keyof T): number;
|
|
1343
1456
|
protected getValueOfColumnFilter(key: keyof T): ColumnValue;
|
|
1344
1457
|
protected getPaginatedSearchableSelectValueOfColumnFilter(key: keyof T): FilterOption | FilterOption[] | undefined;
|
|
1345
1458
|
protected getSearchableSelectValueOfColumnFilter(key: keyof T): string | string[] | undefined;
|
|
@@ -1350,6 +1463,7 @@ declare class NgxBasicTable<T, U extends BasicFilter<T>> {
|
|
|
1350
1463
|
protected onDateFilterChange(column: BasicTableColumn<T>, value: moment.Moment | null): void;
|
|
1351
1464
|
protected onDateRangeFilterChange(column: BasicTableColumn<T>, value: DateRange<moment.Moment | null> | null): void;
|
|
1352
1465
|
private onColumnFilterChange;
|
|
1466
|
+
/** Por clave y no por referencia: el detalle sigue abierto si los datos se recargan. */
|
|
1353
1467
|
protected rowIsExpanded(row: T): boolean;
|
|
1354
1468
|
protected expandableToggle(row: T): void;
|
|
1355
1469
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxBasicTable<any, any>, never>;
|
|
@@ -1490,7 +1604,7 @@ declare class NgxAlert {
|
|
|
1490
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>;
|
|
1491
1605
|
}
|
|
1492
1606
|
|
|
1493
|
-
declare class NgxPaginatedSelect<T, U extends PaginatedFilter<T>> implements ControlValueAccessor {
|
|
1607
|
+
declare class NgxPaginatedSelect<T, U extends PaginatedFilter<T>> implements ControlValueAccessor, AfterViewInit, DoCheck {
|
|
1494
1608
|
private readonly _bottomSheet;
|
|
1495
1609
|
/** Se auto-registra como CVA (self/optional para leer validación y no fallar sin form). */
|
|
1496
1610
|
private readonly _ngControl;
|
|
@@ -1498,6 +1612,8 @@ declare class NgxPaginatedSelect<T, U extends PaginatedFilter<T>> implements Con
|
|
|
1498
1612
|
private readonly _parentFormGroup;
|
|
1499
1613
|
private readonly _parentForm;
|
|
1500
1614
|
private readonly _changeDetectorRef;
|
|
1615
|
+
private readonly _destroyRef;
|
|
1616
|
+
private readonly _host;
|
|
1501
1617
|
readonly texts: _angular_core.Signal<ngx_eiffage_material.NgxEiffageTexts>;
|
|
1502
1618
|
/** Label that floats on the form field */
|
|
1503
1619
|
readonly label: _angular_core.InputSignal<string>;
|
|
@@ -1577,28 +1693,52 @@ declare class NgxPaginatedSelect<T, U extends PaginatedFilter<T>> implements Con
|
|
|
1577
1693
|
private _suppressEmit;
|
|
1578
1694
|
/** Huella de la última selección aplicada desde el input `selectedItems`. */
|
|
1579
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>;
|
|
1580
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». */
|
|
1581
1706
|
protected readonly selectedLabel: _angular_core.Signal<string>;
|
|
1582
1707
|
protected readonly hasSelection: _angular_core.Signal<boolean>;
|
|
1583
1708
|
protected readonly showChips: _angular_core.Signal<boolean>;
|
|
1584
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>;
|
|
1585
1718
|
protected readonly remainingChipsCount: _angular_core.Signal<number>;
|
|
1586
1719
|
/** ErrorStateMatcher que refleja el estado del control del formulario. */
|
|
1587
1720
|
protected readonly errorStateMatcher: ErrorStateMatcher;
|
|
1588
1721
|
/** true cuando el formulario contenedor ya ha intentado enviarse. */
|
|
1589
1722
|
private _isParentFormSubmitted;
|
|
1590
1723
|
/**
|
|
1591
|
-
* Obligatorio si el control del formulario tiene el validador `required
|
|
1592
|
-
*
|
|
1593
|
-
* 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.
|
|
1594
1726
|
*/
|
|
1595
|
-
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;
|
|
1596
1731
|
protected readonly effectiveSearchPlaceholder: _angular_core.Signal<string>;
|
|
1597
1732
|
protected readonly effectiveNoResults: _angular_core.Signal<string>;
|
|
1598
1733
|
protected readonly effectiveConfirmLabel: _angular_core.Signal<string>;
|
|
1599
1734
|
protected readonly effectiveResetLabel: _angular_core.Signal<string>;
|
|
1600
1735
|
protected readonly effectiveSelectAllLabel: _angular_core.Signal<string>;
|
|
1601
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;
|
|
1602
1742
|
writeValue(value: T[keyof T] | T[keyof T][] | null): void;
|
|
1603
1743
|
registerOnChange(fn: (value: T[keyof T] | T[keyof T][] | null) => void): void;
|
|
1604
1744
|
registerOnTouched(fn: () => void): void;
|
|
@@ -1612,6 +1752,8 @@ declare class NgxPaginatedSelect<T, U extends PaginatedFilter<T>> implements Con
|
|
|
1612
1752
|
* `String(item[valueKey])` so partial objects never throw.
|
|
1613
1753
|
*/
|
|
1614
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;
|
|
1615
1757
|
openBottomSheet(event: Event): void;
|
|
1616
1758
|
/** Abrir el bottom sheet desde el teclado (Enter / Espacio / flecha abajo). */
|
|
1617
1759
|
onTriggerKeydown(event: KeyboardEvent): void;
|
|
@@ -1621,6 +1763,36 @@ declare class NgxPaginatedSelect<T, U extends PaginatedFilter<T>> implements Con
|
|
|
1621
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>;
|
|
1622
1764
|
}
|
|
1623
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
|
+
}
|
|
1624
1796
|
interface NgxPaginatedSelectBottomSheetData<T, U extends PaginatedFilter<T>> {
|
|
1625
1797
|
title: string;
|
|
1626
1798
|
config: PaginatedSelectConfig<T>;
|
|
@@ -1640,18 +1812,33 @@ interface NgxPaginatedSelectBottomSheetData<T, U extends PaginatedFilter<T>> {
|
|
|
1640
1812
|
extraFiltersTemplate: TemplateRef<void> | null;
|
|
1641
1813
|
showSelectAll: boolean;
|
|
1642
1814
|
selectAllLabel: string;
|
|
1815
|
+
/** Primera página de aperturas anteriores (opcional). */
|
|
1816
|
+
cache?: NgxPaginatedSelectPageCache<T>;
|
|
1643
1817
|
}
|
|
1644
1818
|
declare class NgxPaginatedSelectBottomSheetComponent<T, U extends PaginatedFilter<T>> {
|
|
1645
1819
|
private readonly _ref;
|
|
1646
1820
|
private readonly _destroy;
|
|
1821
|
+
private readonly _host;
|
|
1822
|
+
private readonly _injector;
|
|
1647
1823
|
readonly data: NgxPaginatedSelectBottomSheetData<T, U>;
|
|
1648
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;
|
|
1649
1830
|
/** Raw input value — updates on every keystroke, does NOT trigger the resource */
|
|
1650
1831
|
readonly query: WritableSignal<string | undefined>;
|
|
1832
|
+
/** Claves de items cuya imagen de avatar falló al cargar (para el fallback). */
|
|
1833
|
+
private readonly failedImages;
|
|
1651
1834
|
/** Holds Partial<T> initially; items get upgraded to full T when toggled from the list */
|
|
1652
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>;
|
|
1653
1840
|
/**
|
|
1654
|
-
* Subject used to bypass the
|
|
1841
|
+
* Subject used to bypass the debounce (e.g. when the user clears
|
|
1655
1842
|
* the search field — we want an immediate response).
|
|
1656
1843
|
*/
|
|
1657
1844
|
private readonly _immediateQuery$;
|
|
@@ -1667,6 +1854,20 @@ declare class NgxPaginatedSelectBottomSheetComponent<T, U extends PaginatedFilte
|
|
|
1667
1854
|
readonly options: _angular_core.Signal<T[]>;
|
|
1668
1855
|
readonly hasError: _angular_core.Signal<boolean>;
|
|
1669
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>[]>;
|
|
1670
1871
|
/**
|
|
1671
1872
|
* Total como signal, actualizado SOLO cuando el recurso no está cargando. Durante
|
|
1672
1873
|
* la carga por scroll, resource.value() pasa transitoriamente al defaultValue
|
|
@@ -1677,9 +1878,9 @@ declare class NgxPaginatedSelectBottomSheetComponent<T, U extends PaginatedFilte
|
|
|
1677
1878
|
private readonly _total;
|
|
1678
1879
|
readonly total: _angular_core.Signal<number>;
|
|
1679
1880
|
private readonly _totalEffect;
|
|
1680
|
-
/** Cargando la PRIMERA página
|
|
1881
|
+
/** Cargando la PRIMERA página sin nada que enseñar → skeletons. */
|
|
1681
1882
|
readonly isInitialLoading: _angular_core.Signal<boolean>;
|
|
1682
|
-
/** 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. */
|
|
1683
1884
|
readonly isLoadingMore: _angular_core.Signal<boolean>;
|
|
1684
1885
|
/** Ya se han cargado todos los resultados disponibles. */
|
|
1685
1886
|
readonly allLoaded: _angular_core.Signal<boolean>;
|
|
@@ -1690,19 +1891,12 @@ declare class NgxPaginatedSelectBottomSheetComponent<T, U extends PaginatedFilte
|
|
|
1690
1891
|
/**
|
|
1691
1892
|
* Reactively depends ONLY on `resource.value()`. The filter snapshot is read
|
|
1692
1893
|
* via `untracked` so external filter changes (parent-driven, e.g. an extra
|
|
1693
|
-
* filters panel) do NOT create a reactive dependency here
|
|
1694
|
-
* the effect re-run on scroll page increments with stale resource data,
|
|
1695
|
-
* duplicating items and breaking `onScroll` (see original limitation).
|
|
1894
|
+
* filters panel) do NOT create a reactive dependency here.
|
|
1696
1895
|
*
|
|
1697
1896
|
* Reset logic:
|
|
1698
1897
|
* - Fingerprint the current filter identity (everything except `pageNumber`).
|
|
1699
|
-
* - If the fingerprint changed since the previous fetch, this
|
|
1700
|
-
* to a different filter set → replace the accumulated array.
|
|
1898
|
+
* - If the fingerprint changed since the previous fetch, or this is page 1 → replace.
|
|
1701
1899
|
* - If only `pageNumber` moved, this is a scroll-load-more → append.
|
|
1702
|
-
*
|
|
1703
|
-
* This is what allows callers to mutate `data.filters` from outside (extra
|
|
1704
|
-
* filter selects, checkboxes, etc.) and have the list refresh cleanly
|
|
1705
|
-
* without the previous page's items lingering.
|
|
1706
1900
|
*/
|
|
1707
1901
|
private _lastFilterFingerprint;
|
|
1708
1902
|
private readonly _accumEffect;
|
|
@@ -1714,14 +1908,24 @@ declare class NgxPaginatedSelectBottomSheetComponent<T, U extends PaginatedFilte
|
|
|
1714
1908
|
*/
|
|
1715
1909
|
getLabel(item: Partial<T>): string;
|
|
1716
1910
|
getAvatarText(item: Partial<T>): string;
|
|
1717
|
-
/** Claves de items cuya imagen de avatar falló al cargar (para el fallback). */
|
|
1718
|
-
private readonly failedImages;
|
|
1719
1911
|
/** URL de imagen del avatar, o null si no hay o si falló al cargar. */
|
|
1720
1912
|
getAvatarImage(item: Partial<T>): string | null | undefined;
|
|
1721
1913
|
/** Marca la imagen como fallida para caer al texto/icono. */
|
|
1722
1914
|
onAvatarError(item: Partial<T>): void;
|
|
1723
1915
|
toggleItem(item: T): void;
|
|
1724
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;
|
|
1725
1929
|
onQueryInput(event: Event, container: HTMLElement): void;
|
|
1726
1930
|
clearQuery(container?: HTMLElement): void;
|
|
1727
1931
|
onScroll(container: HTMLElement): void;
|
|
@@ -1730,7 +1934,16 @@ declare class NgxPaginatedSelectBottomSheetComponent<T, U extends PaginatedFilte
|
|
|
1730
1934
|
toggleSelectAll(): void;
|
|
1731
1935
|
confirm(): void;
|
|
1732
1936
|
reset(): void;
|
|
1937
|
+
/** Cierra sin aplicar cambios (botón X). En múltiple con cambios, pregunta antes. */
|
|
1733
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;
|
|
1734
1947
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxPaginatedSelectBottomSheetComponent<any, any>, never>;
|
|
1735
1948
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxPaginatedSelectBottomSheetComponent<any, any>, "ngx-paginated-select-bottom-sheet", never, {}, {}, never, never, true, never>;
|
|
1736
1949
|
}
|
|
@@ -2003,5 +2216,5 @@ declare class DynamicHostDirective<T> {
|
|
|
2003
2216
|
declare const includeNoSensible: (cadena: string, query: string) => boolean;
|
|
2004
2217
|
declare const base64ToUtf8: (str: string) => string;
|
|
2005
2218
|
|
|
2006
|
-
export { AdvancedFilterService, AdvancedFilterUtils, ColumnConfigService, DatosPantallaService, DialogBodyType, DynamicHostDirective, NGX_EIFFAGE_DEFAULT_TEXTS, NGX_EIFFAGE_TEXTS, NgxAlert, NgxBasicSelect, NgxBasicTable, NgxConfirmDialogComponent, NgxDialog, NgxDialogContext, NgxDialogService, NgxFileInput, NgxInputFile, NgxLoadingButton, NgxPaginatedSelect, NgxPaginatedSelectBottomSheetComponent, NgxPaginatedTable, NgxSkeleton, NgxTablesIntl, NgxTexts, OPERATOR_BY_FILTER_TYPE, PaginatedSearchableSelectComponent, SearchableSelectComponent, USER_ID_FACTORY, base64ToUtf8, includeNoSensible, isFilterOption, provideNgxEiffageTexts };
|
|
2007
|
-
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 };
|
|
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 };
|
|
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 };
|