@esfaenza/es-table 20.3.13 → 20.3.15
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/esfaenza-es-table.mjs +2707 -78
- package/fesm2022/esfaenza-es-table.mjs.map +1 -1
- package/index.d.ts +678 -18
- package/package.json +8 -2
package/index.d.ts
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { ChangeDetectorRef, EventEmitter, WritableSignal, Signal, TemplateRef, ElementRef, QueryList, NgZone, Renderer2, Type, PipeTransform, ModuleWithProviders, InjectionToken } from '@angular/core';
|
|
3
|
-
import * as
|
|
2
|
+
import { ChangeDetectorRef, EventEmitter, WritableSignal, Signal, TemplateRef, ElementRef, QueryList, NgZone, Renderer2, Type, AfterContentInit, OnDestroy, PipeTransform, ModuleWithProviders, InjectionToken } from '@angular/core';
|
|
3
|
+
import * as i22 from '@esfaenza/localizations';
|
|
4
4
|
import { LocalizationService } from '@esfaenza/localizations';
|
|
5
|
-
import * as
|
|
5
|
+
import * as i23 from '@esfaenza/extensions';
|
|
6
6
|
import { MessageService, ExportService, UtilityService, DateService, HashingService, ClipboardService, AppEmbeddingExtensions } from '@esfaenza/extensions';
|
|
7
|
-
import * as
|
|
7
|
+
import * as i20 from '@angular/forms';
|
|
8
8
|
import { ControlValueAccessor, NgControl } from '@angular/forms';
|
|
9
9
|
import { PreferencesService } from '@esfaenza/preferences';
|
|
10
|
-
import * as
|
|
10
|
+
import * as i26 from '@esfaenza/ngx-contextmenu';
|
|
11
11
|
import { ContextMenuComponent } from '@esfaenza/ngx-contextmenu';
|
|
12
|
-
import * as
|
|
12
|
+
import * as i24 from 'ngx-bootstrap/modal';
|
|
13
13
|
import { ModalDirective } from 'ngx-bootstrap/modal';
|
|
14
14
|
import { SafeHtml } from '@angular/platform-browser';
|
|
15
15
|
import { ReplaySubject, Subject } from 'rxjs';
|
|
16
|
-
import * as
|
|
16
|
+
import * as i27 from '@angular/cdk/drag-drop';
|
|
17
17
|
import { CdkDragDrop, CdkDrag } from '@angular/cdk/drag-drop';
|
|
18
|
-
import * as
|
|
19
|
-
import * as
|
|
20
|
-
import * as
|
|
21
|
-
import * as
|
|
22
|
-
import * as
|
|
23
|
-
import * as
|
|
24
|
-
import * as
|
|
18
|
+
import * as i19 from '@angular/common';
|
|
19
|
+
import * as i21 from '@angular/router';
|
|
20
|
+
import * as i25 from 'ngx-bootstrap/dropdown';
|
|
21
|
+
import * as i28 from '@esfaenza/forms-and-validations';
|
|
22
|
+
import * as i29 from 'primeng/tooltip';
|
|
23
|
+
import * as i30 from '@esfaenza/access-control';
|
|
24
|
+
import * as i31 from 'primeng/select';
|
|
25
25
|
|
|
26
26
|
/** Componente che si occupa della paginazione di una tabella */
|
|
27
27
|
declare class EsTablePagerComponent {
|
|
@@ -1617,7 +1617,13 @@ declare class Logger {
|
|
|
1617
1617
|
debugMode: boolean;
|
|
1618
1618
|
/** @ignore */
|
|
1619
1619
|
constructor(debugMode: boolean);
|
|
1620
|
-
|
|
1620
|
+
/**
|
|
1621
|
+
* Emette un log a console solo se la modalità debug è attiva.
|
|
1622
|
+
*
|
|
1623
|
+
* Il testo può essere passato come funzione (**lazy**): in tal caso viene valutato solo quando il debug è attivo,
|
|
1624
|
+
* evitando di costruire stringhe costose (es. interpolazioni per-cella) quando i log sono disabilitati.
|
|
1625
|
+
*/
|
|
1626
|
+
log(text: string | (() => string)): void;
|
|
1621
1627
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Logger, [{ optional: true; }]>;
|
|
1622
1628
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<Logger>;
|
|
1623
1629
|
}
|
|
@@ -2346,6 +2352,587 @@ declare class EsTableModuleConfig {
|
|
|
2346
2352
|
globalExportAclExpression?: string;
|
|
2347
2353
|
}
|
|
2348
2354
|
|
|
2355
|
+
/** Specifica di una singola aggregazione estratta da un template `{func:format}` */
|
|
2356
|
+
interface Est2AggSpec {
|
|
2357
|
+
/** Colonna su cui calcolare l'aggregazione */
|
|
2358
|
+
column: string;
|
|
2359
|
+
/** Funzione di aggregazione */
|
|
2360
|
+
func: 'min' | 'max' | 'sum';
|
|
2361
|
+
/** Formato di visualizzazione (F0-F9 per numeri, small/long/verylong per date) */
|
|
2362
|
+
format: string;
|
|
2363
|
+
/** Testo esatto del token da rimpiazzare nel template (es. `{sum:F2}`) */
|
|
2364
|
+
match: string;
|
|
2365
|
+
/** Tipo di dato dedotto dal formato */
|
|
2366
|
+
datatype: 'string' | 'date' | 'number';
|
|
2367
|
+
}
|
|
2368
|
+
|
|
2369
|
+
/** Modello interno di colonna. Può derivare da direttive `*th`/`*td`, da una
|
|
2370
|
+
* `EsTableColumnsDefinition` (modalità dinamica) o da una `ReportColumn` (report). */
|
|
2371
|
+
interface Est2Column {
|
|
2372
|
+
id: string;
|
|
2373
|
+
/** direttiva header, se la colonna deriva da `*th` */
|
|
2374
|
+
header?: EsThDirective;
|
|
2375
|
+
/** direttiva cella, se la colonna deriva da `*td` */
|
|
2376
|
+
cell?: EsTdDirective;
|
|
2377
|
+
visible: boolean;
|
|
2378
|
+
orderable: boolean;
|
|
2379
|
+
alignment: 'left' | 'right' | 'center';
|
|
2380
|
+
property: string | null;
|
|
2381
|
+
type: string | null;
|
|
2382
|
+
source: {
|
|
2383
|
+
id: any;
|
|
2384
|
+
description: string;
|
|
2385
|
+
}[] | null;
|
|
2386
|
+
format: string | null;
|
|
2387
|
+
cssClass: string;
|
|
2388
|
+
wrap: boolean;
|
|
2389
|
+
/** true se questa colonna è una chiave di raggruppamento (`thGroup`) */
|
|
2390
|
+
isGroup: boolean;
|
|
2391
|
+
/** specifiche di aggregazione parseate dal template `thAggregation` */
|
|
2392
|
+
aggSpecs: Est2AggSpec[];
|
|
2393
|
+
/** testo statico dell'header (modalità dinamica/report; direttive senza template) */
|
|
2394
|
+
headerText?: string | null;
|
|
2395
|
+
/** colore di sfondo dell'header (report) */
|
|
2396
|
+
headerBg?: string | null;
|
|
2397
|
+
/** accesso al valore per indice: report → indice colonna in `values[]` */
|
|
2398
|
+
propAccessor?: string | null;
|
|
2399
|
+
/** indice per il lookup dei colori per-cella (`forecolors[i]`/`backcolors[i]`) in report e dinamica */
|
|
2400
|
+
colorIndex?: number | null;
|
|
2401
|
+
/** route di navigazione per la cella (dinamica) */
|
|
2402
|
+
routePath?: string | null;
|
|
2403
|
+
routeParams?: string[] | null;
|
|
2404
|
+
/** nome del renderer custom da risolvere tra i `*td` (dinamica) */
|
|
2405
|
+
rendererName?: string | null;
|
|
2406
|
+
/** true se la colonna è "pinnata" (sticky a sinistra durante lo scroll orizzontale) */
|
|
2407
|
+
pinned?: boolean;
|
|
2408
|
+
/** larghezza in px della colonna pinnata (usata per calcolare gli offset sticky) */
|
|
2409
|
+
pinnedWidth?: number | null;
|
|
2410
|
+
/** colonna Multi: nome della proprietà-array sull'item (es. `touvalues`) */
|
|
2411
|
+
multiProp?: string | null;
|
|
2412
|
+
/** colonna Multi: indice dell'entry dentro l'array della proprietà */
|
|
2413
|
+
multiIndex?: number | null;
|
|
2414
|
+
}
|
|
2415
|
+
/** Cella di una riga di header-group multi-livello (span su N colonne-dato). */
|
|
2416
|
+
interface Est2HeaderGroupCell {
|
|
2417
|
+
/** id del gruppo, o chiave sintetica per gli spacer */
|
|
2418
|
+
id: string;
|
|
2419
|
+
/** numero di colonne-dato coperte */
|
|
2420
|
+
span: number;
|
|
2421
|
+
/** true se è un vero header di gruppo (ha contenuto), false se spacer vuoto */
|
|
2422
|
+
isGroup: boolean;
|
|
2423
|
+
/** etichetta di fallback (quando non c'è un template proiettato) */
|
|
2424
|
+
label: string;
|
|
2425
|
+
/** template proiettato dell'header di gruppo (contenuto del `*th`) */
|
|
2426
|
+
template: TemplateRef<any> | null;
|
|
2427
|
+
}
|
|
2428
|
+
/**
|
|
2429
|
+
* es-table2 — riscrittura 2026 dell'es-table.
|
|
2430
|
+
*
|
|
2431
|
+
* Mantiene la superficie pubblica (Input/Output/direttive `*th`/`*td`) dell'es-table
|
|
2432
|
+
* originale ma con implementazione basata su signal, control-flow moderno e un design
|
|
2433
|
+
* system a token (tema chiaro/scuro).
|
|
2434
|
+
*
|
|
2435
|
+
* FASE 1: modalità view/array, celle template + direttive, ordinamento, paginazione,
|
|
2436
|
+
* selezione singola/multipla. Le modalità avanzate (grouping, hierarchy, dynamic,
|
|
2437
|
+
* report, range-paste, export) sono dichiarate nella superficie ma verranno collegate
|
|
2438
|
+
* nelle fasi successive.
|
|
2439
|
+
*/
|
|
2440
|
+
declare class EsTable2Component implements ControlValueAccessor, AfterContentInit, OnDestroy {
|
|
2441
|
+
ngControl: NgControl;
|
|
2442
|
+
cdr: ChangeDetectorRef;
|
|
2443
|
+
private hostEl;
|
|
2444
|
+
private prefService;
|
|
2445
|
+
private defaults;
|
|
2446
|
+
debugMode: boolean;
|
|
2447
|
+
exportGlobalAcl: string;
|
|
2448
|
+
/** Modalità "template semplice": riga di `<th>` */
|
|
2449
|
+
headerRef?: TemplateRef<any>;
|
|
2450
|
+
/** Modalità "template semplice": riga di `<td>` con `let-item` */
|
|
2451
|
+
bodyRef?: TemplateRef<any>;
|
|
2452
|
+
thDirectives?: QueryList<EsThDirective>;
|
|
2453
|
+
tdDirectives?: QueryList<EsTdDirective>;
|
|
2454
|
+
editorDirectives?: QueryList<EsTdEditorDirective>;
|
|
2455
|
+
/** Context menu (ngx-contextmenu) collegato al click destro sulle righe */
|
|
2456
|
+
ContextMenu?: ContextMenuComponent;
|
|
2457
|
+
/** Menu vuoto di default, usato quando il consumer non fornisce un **ContextMenu** */
|
|
2458
|
+
tableEmptyMenu?: ContextMenuComponent;
|
|
2459
|
+
private ctxMenuSub?;
|
|
2460
|
+
/** Altezza dell'header (misurata): la barra di selezione la usa per coprirlo esattamente */
|
|
2461
|
+
selbarHeight: _angular_core.WritableSignal<number>;
|
|
2462
|
+
private headerEl?;
|
|
2463
|
+
private headerRO?;
|
|
2464
|
+
/** ViewChild-setter: (ri)osserva l'header appena compare/cambia, mantenendo `selbarHeight` allineata */
|
|
2465
|
+
set theadRef(ref: ElementRef<HTMLElement> | undefined);
|
|
2466
|
+
protected readonly _Selection: _angular_core.InputSignal<boolean>;
|
|
2467
|
+
Selection: _angular_core.WritableSignal<boolean>;
|
|
2468
|
+
SingleSelection: _angular_core.InputSignal<boolean>;
|
|
2469
|
+
SelectionDisabled: _angular_core.InputSignal<boolean>;
|
|
2470
|
+
protected readonly _SelectAll: _angular_core.InputSignal<boolean>;
|
|
2471
|
+
SelectAll: _angular_core.WritableSignal<boolean>;
|
|
2472
|
+
protected readonly _UseSelectionCache: _angular_core.InputSignal<boolean>;
|
|
2473
|
+
UseSelectionCache: _angular_core.WritableSignal<boolean>;
|
|
2474
|
+
protected readonly _ShiftClick: _angular_core.InputSignal<boolean>;
|
|
2475
|
+
ShiftClick: _angular_core.WritableSignal<boolean>;
|
|
2476
|
+
protected readonly _OrderByColumn: _angular_core.InputSignal<boolean>;
|
|
2477
|
+
OrderByColumn: _angular_core.WritableSignal<boolean>;
|
|
2478
|
+
MultipleOrderingDirectives: _angular_core.InputSignal<boolean>;
|
|
2479
|
+
Removal: _angular_core.InputSignal<boolean>;
|
|
2480
|
+
RemovalCondition: _angular_core.InputSignal<string>;
|
|
2481
|
+
RowClassAssigner?: (item: any) => string;
|
|
2482
|
+
protected readonly _HidePaging: _angular_core.InputSignal<boolean>;
|
|
2483
|
+
HidePaging: _angular_core.WritableSignal<boolean>;
|
|
2484
|
+
protected readonly _HidePagingCount: _angular_core.InputSignal<boolean>;
|
|
2485
|
+
HidePagingCount: _angular_core.WritableSignal<boolean>;
|
|
2486
|
+
protected readonly _HidePagingButtons: _angular_core.InputSignal<boolean>;
|
|
2487
|
+
HidePagingButtons: _angular_core.WritableSignal<boolean>;
|
|
2488
|
+
protected readonly _AllSearch: _angular_core.InputSignal<boolean>;
|
|
2489
|
+
AllSearch: _angular_core.WritableSignal<boolean>;
|
|
2490
|
+
protected readonly _PagingStyle: _angular_core.InputSignal<"top" | "bottom" | "both">;
|
|
2491
|
+
PagingStyle: _angular_core.WritableSignal<"top" | "bottom" | "both">;
|
|
2492
|
+
protected readonly _ArraymodeItemsPerPage: _angular_core.InputSignal<number>;
|
|
2493
|
+
ArraymodeItemsPerPage: _angular_core.WritableSignal<number>;
|
|
2494
|
+
protected readonly _UseArrayModePaging: _angular_core.InputSignal<boolean>;
|
|
2495
|
+
UseArrayModePaging: _angular_core.WritableSignal<boolean>;
|
|
2496
|
+
CountLabel: _angular_core.InputSignal<string>;
|
|
2497
|
+
Height: _angular_core.InputSignal<string>;
|
|
2498
|
+
MaxHeight: _angular_core.InputSignal<number>;
|
|
2499
|
+
EmptySpaceBackgroundColor: _angular_core.InputSignal<string>;
|
|
2500
|
+
HighCellDensity: _angular_core.InputSignal<boolean>;
|
|
2501
|
+
HeaderHidden: _angular_core.InputSignal<boolean>;
|
|
2502
|
+
BodyHidden: _angular_core.InputSignal<boolean>;
|
|
2503
|
+
ShowLoadingOnBootstrap: _angular_core.InputSignal<boolean>;
|
|
2504
|
+
protected readonly _DefaultAlignment: _angular_core.InputSignal<"Left" | "Center" | "Right">;
|
|
2505
|
+
DefaultAlignment: _angular_core.WritableSignal<"Left" | "Center" | "Right">;
|
|
2506
|
+
protected readonly _TableClass: _angular_core.InputSignal<string>;
|
|
2507
|
+
TableClass: _angular_core.WritableSignal<string>;
|
|
2508
|
+
protected readonly _ContainerClass: _angular_core.InputSignal<string>;
|
|
2509
|
+
ContainerClass: _angular_core.WritableSignal<string>;
|
|
2510
|
+
EsTableHandledSearch: _angular_core.InputSignal<boolean>;
|
|
2511
|
+
SearchThrottle: _angular_core.InputSignal<number>;
|
|
2512
|
+
protected readonly _ColumnsResizable: _angular_core.InputSignal<boolean>;
|
|
2513
|
+
ColumnsResizable: _angular_core.WritableSignal<boolean>;
|
|
2514
|
+
protected readonly _ColumnsPinnable: _angular_core.InputSignal<boolean>;
|
|
2515
|
+
ColumnsPinnable: _angular_core.WritableSignal<boolean>;
|
|
2516
|
+
protected readonly _HiddenColumns: _angular_core.InputSignal<boolean>;
|
|
2517
|
+
HiddenColumns: _angular_core.WritableSignal<boolean>;
|
|
2518
|
+
protected readonly _ColumnsOrdering: _angular_core.InputSignal<boolean>;
|
|
2519
|
+
ColumnsOrdering: _angular_core.WritableSignal<boolean>;
|
|
2520
|
+
protected readonly _Export: _angular_core.InputSignal<boolean>;
|
|
2521
|
+
Export: _angular_core.WritableSignal<boolean>;
|
|
2522
|
+
XLSXExport: _angular_core.InputSignal<boolean>;
|
|
2523
|
+
CSVExport: _angular_core.InputSignal<boolean>;
|
|
2524
|
+
ExportFileName: _angular_core.InputSignal<string>;
|
|
2525
|
+
ExportOnlyVisibleColumns: _angular_core.InputSignal<boolean>;
|
|
2526
|
+
ExportFunction?: (callback: (data: any[], type: Type<any>) => void, format: 'CSV' | 'XLSX') => void;
|
|
2527
|
+
CornerMenuOptions: _angular_core.InputSignal<CornerMenuOption[]>;
|
|
2528
|
+
DynamicOperations: _angular_core.InputSignal<EsTableOperationDefinition[]>;
|
|
2529
|
+
protected readonly _DynamicRowColumnsDefinition: _angular_core.InputSignal<EsTableColumnsDefinition[]>;
|
|
2530
|
+
Hierarchy: _angular_core.InputSignal<boolean>;
|
|
2531
|
+
protected readonly _ParentKey: _angular_core.InputSignal<string>;
|
|
2532
|
+
ParentKey: _angular_core.WritableSignal<string>;
|
|
2533
|
+
protected readonly _OwnKey: _angular_core.InputSignal<string>;
|
|
2534
|
+
OwnKey: _angular_core.WritableSignal<string>;
|
|
2535
|
+
protected readonly _AutoSortHierarchy: _angular_core.InputSignal<boolean>;
|
|
2536
|
+
AutoSortHierarchy: _angular_core.WritableSignal<boolean>;
|
|
2537
|
+
StartsExpanded: _angular_core.InputSignal<boolean>;
|
|
2538
|
+
/** In modalità gerarchica: selezionando un nodo si selezionano tutti i discendenti, e un padre
|
|
2539
|
+
* risulta selezionato quando tutti i figli lo sono (indeterminato se solo alcuni). */
|
|
2540
|
+
CascadeSelection: _angular_core.InputSignal<boolean>;
|
|
2541
|
+
protected readonly _SavePreferences: _angular_core.InputSignal<boolean>;
|
|
2542
|
+
SavePreferences: _angular_core.WritableSignal<boolean>;
|
|
2543
|
+
/** Nome della tabella: chiave per la persistenza delle preferenze colonne (localStorage) */
|
|
2544
|
+
Name: _angular_core.InputSignal<string>;
|
|
2545
|
+
protected readonly _RowGroupingPagingStyle: _angular_core.InputSignal<"left" | "right">;
|
|
2546
|
+
protected readonly _ShowItemGroupsColumns: _angular_core.InputSignal<boolean>;
|
|
2547
|
+
Editable: _angular_core.InputSignal<boolean>;
|
|
2548
|
+
RangeSelection: _angular_core.InputSignal<boolean>;
|
|
2549
|
+
ItemSourceProperty: _angular_core.InputSignal<string>;
|
|
2550
|
+
HasHeaderGroup: _angular_core.InputSignal<boolean>;
|
|
2551
|
+
HasSecondaryHeaderGroup: _angular_core.InputSignal<boolean>;
|
|
2552
|
+
SearchView: _angular_core.InputSignal<AppSearch<any>>;
|
|
2553
|
+
protected readonly _AutoUpdate: _angular_core.InputSignal<boolean>;
|
|
2554
|
+
onOrderChanged: EventEmitter<AppOrdering>;
|
|
2555
|
+
onSearchRequest: EventEmitter<any>;
|
|
2556
|
+
onSelectionChanged: EventEmitter<ItemsSelection<any>>;
|
|
2557
|
+
onRemoval: EventEmitter<any>;
|
|
2558
|
+
onAbortRemoval: EventEmitter<any>;
|
|
2559
|
+
onModelChange: EventEmitter<EsTableModelChange[]>;
|
|
2560
|
+
onOpenContextMenu: EventEmitter<void>;
|
|
2561
|
+
onCornerAction: EventEmitter<{
|
|
2562
|
+
id: string;
|
|
2563
|
+
estable: any;
|
|
2564
|
+
}>;
|
|
2565
|
+
onDynamicOperation: EventEmitter<{
|
|
2566
|
+
id: string;
|
|
2567
|
+
item: any;
|
|
2568
|
+
}>;
|
|
2569
|
+
globalCheck: _angular_core.ModelSignal<boolean>;
|
|
2570
|
+
autoUpdate: _angular_core.ModelSignal<boolean>;
|
|
2571
|
+
seconds: _angular_core.ModelSignal<string>;
|
|
2572
|
+
researchInProgress: _angular_core.ModelSignal<boolean>;
|
|
2573
|
+
/** Locale usato dal renderer di default (undefined = locale del browser) */
|
|
2574
|
+
locale?: string;
|
|
2575
|
+
/** Modello bindato: AppSearch (viewMode) oppure any[] (arrayMode) */
|
|
2576
|
+
view: _angular_core.WritableSignal<any>;
|
|
2577
|
+
viewMode: _angular_core.WritableSignal<boolean>;
|
|
2578
|
+
arrayMode: _angular_core.WritableSignal<boolean>;
|
|
2579
|
+
firstBind: _angular_core.WritableSignal<boolean>;
|
|
2580
|
+
/** Righe attualmente visualizzate (già paginate/ordinate) */
|
|
2581
|
+
boundSource: _angular_core.WritableSignal<any[]>;
|
|
2582
|
+
/** Colonne derivate dalle direttive `*th`/`*td` */
|
|
2583
|
+
columns: _angular_core.WritableSignal<Est2Column[]>;
|
|
2584
|
+
/** true se la tabella è pilotata dalle direttive (`*th`), false se template semplice */
|
|
2585
|
+
directivesBased: _angular_core.WritableSignal<boolean>;
|
|
2586
|
+
/** true se è attivo il raggruppamento client-side (array mode con colonne `thGroup`) */
|
|
2587
|
+
grouped: _angular_core.WritableSignal<boolean>;
|
|
2588
|
+
/** true se le colonne provengono da `DynamicRowColumnsDefinition` */
|
|
2589
|
+
dynamicMode: _angular_core.WritableSignal<boolean>;
|
|
2590
|
+
/** true se il modello è una view report (`report_columns`) */
|
|
2591
|
+
reportMode: _angular_core.WritableSignal<boolean>;
|
|
2592
|
+
/** Definizione colonne dinamica: risolta dall'input, ma scrivibile (auto-derivata dagli item generici) */
|
|
2593
|
+
DynamicRowColumnsDefinition: _angular_core.WritableSignal<EsTableColumnsDefinition[]>;
|
|
2594
|
+
/** Se true mostra i valori delle colonne di gruppo anche nelle righe-oggetto */
|
|
2595
|
+
ShowItemGroupsColumns: _angular_core.WritableSignal<boolean>;
|
|
2596
|
+
/** Mappa ownKey(string) -> figli diretti, per la modalità gerarchica */
|
|
2597
|
+
private hierChildren;
|
|
2598
|
+
/** Paginazione arrayMode */
|
|
2599
|
+
private arrayPage;
|
|
2600
|
+
/** Ordinamenti attivi (id -> 'ASC'|'DESC') */
|
|
2601
|
+
private orders;
|
|
2602
|
+
/** Header-group: mappa id→direttiva th (inclusi i gruppi) e insieme degli id-gruppo */
|
|
2603
|
+
private hgThById;
|
|
2604
|
+
private hgParentIds;
|
|
2605
|
+
/** Base (solo direttive) di hgThById/hgParentIds, per ri-espandere i Multi a ogni refresh */
|
|
2606
|
+
private baseThById;
|
|
2607
|
+
private baseParentIds;
|
|
2608
|
+
/** Colonne derivate dalle direttive (senza le Multi, che dipendono dai dati) */
|
|
2609
|
+
private directiveColumns;
|
|
2610
|
+
/** Definizioni Multi da srotolare sui dati (`*th Multi:true`) */
|
|
2611
|
+
private multiDefs;
|
|
2612
|
+
hostClass: boolean;
|
|
2613
|
+
get denseClass(): boolean;
|
|
2614
|
+
/** Colonne visibili, con le colonne pinnate spostate in testa (stabile) */
|
|
2615
|
+
visibleColumns: _angular_core.Signal<Est2Column[]>;
|
|
2616
|
+
/** Numero di colonne pinnate visibili */
|
|
2617
|
+
pinnedCount: _angular_core.Signal<number>;
|
|
2618
|
+
/** true se c'è almeno una colonna pinnata */
|
|
2619
|
+
hasPinned: _angular_core.Signal<boolean>;
|
|
2620
|
+
/** Larghezza (px) della colonna di selezione quando sticky */
|
|
2621
|
+
private readonly SEL_STICKY_W;
|
|
2622
|
+
/** Offset `left` (px) di una colonna sticky all'indice `ci` in visibleColumns */
|
|
2623
|
+
pinnedLeftPx(ci: number): number;
|
|
2624
|
+
/** true se la tabella renderizza colonne strutturate (direttive/dinamica/report), non template semplici */
|
|
2625
|
+
usesColumns: _angular_core.Signal<boolean>;
|
|
2626
|
+
/**
|
|
2627
|
+
* Righe di header-group multi-livello, dall'alto (root) verso il basso (padre
|
|
2628
|
+
* immediato). Ricalcolate automaticamente su riordino/visibilità colonne.
|
|
2629
|
+
*
|
|
2630
|
+
* Ogni gruppo si allinea in BASSO: il padre immediato di una colonna sta sempre
|
|
2631
|
+
* nella riga direttamente sopra la colonna; gli antenati più alti salgono. Le
|
|
2632
|
+
* colonne senza gruppo (o con catena più corta) hanno celle-spacer vuote in alto.
|
|
2633
|
+
*/
|
|
2634
|
+
headerGroupRows: _angular_core.Signal<Est2HeaderGroupCell[][]>;
|
|
2635
|
+
/** true se ci sono header-group da renderizzare */
|
|
2636
|
+
hasHeaderGroups: _angular_core.Signal<boolean>;
|
|
2637
|
+
/** Numero di elementi totali (per il pager) */
|
|
2638
|
+
totalCount: _angular_core.Signal<any>;
|
|
2639
|
+
/** Pagina corrente per il pager */
|
|
2640
|
+
currentPage: _angular_core.Signal<any>;
|
|
2641
|
+
/** Numero totale di pagine per il pager */
|
|
2642
|
+
totalPages: _angular_core.Signal<any>;
|
|
2643
|
+
private readonly effectiveAllValue;
|
|
2644
|
+
private inited;
|
|
2645
|
+
private onChange;
|
|
2646
|
+
private onTouched;
|
|
2647
|
+
constructor(ngControl: NgControl, cdr: ChangeDetectorRef, hostEl: ElementRef<HTMLElement>, prefService: PreferencesService, defaults: EsTableDefaultable, debugMode: boolean, exportGlobalAcl: string);
|
|
2648
|
+
ngOnInit(): void;
|
|
2649
|
+
ngOnDestroy(): void;
|
|
2650
|
+
/** Risoluzione input: valore esplicito || default di progetto || hard default */
|
|
2651
|
+
private io;
|
|
2652
|
+
ngAfterContentInit(): void;
|
|
2653
|
+
writeValue(obj: any): void;
|
|
2654
|
+
registerOnChange(fn: (v: any) => void): void;
|
|
2655
|
+
registerOnTouched(fn: () => void): void;
|
|
2656
|
+
setDisabledState?(): void;
|
|
2657
|
+
private changed;
|
|
2658
|
+
private detectMode;
|
|
2659
|
+
private buildColumns;
|
|
2660
|
+
/**
|
|
2661
|
+
* Srotola le colonne `*th Multi:true` sui dati: ogni entry unica
|
|
2662
|
+
* `(header_group, header)` della proprietà-array diventa una colonna sintetica,
|
|
2663
|
+
* e i livelli di `header_group` (separati da ">") alimentano gli header-group.
|
|
2664
|
+
*/
|
|
2665
|
+
private buildMultiColumns;
|
|
2666
|
+
/** Costruisce le colonne da una `EsTableColumnsDefinition[]` (modalità dinamica) */
|
|
2667
|
+
private buildDynamicColumns;
|
|
2668
|
+
/** Costruisce le colonne da `report_columns` (modalità report): il valore è preso per indice */
|
|
2669
|
+
private buildReportColumns;
|
|
2670
|
+
/** Sceglie la sorgente delle colonne in base al modello: report → dinamica → direttive */
|
|
2671
|
+
private resolveColumns;
|
|
2672
|
+
/** Visibilità di un'operazione su una riga (gate conditionField/conditionValue, case-insensitive) */
|
|
2673
|
+
operationVisible(op: EsTableOperationDefinition, item: any): boolean;
|
|
2674
|
+
dynamicOperation(item: any, id: string): void;
|
|
2675
|
+
/** Valore di una cella report: `values[indice]` (fallback su accesso diretto) */
|
|
2676
|
+
reportCellValue(item: any, col: Est2Column): any;
|
|
2677
|
+
/** Colore per-cella (fore/back) da `forecolors[i]`/`backcolors[i]`; vale sia report che dinamica */
|
|
2678
|
+
cellColor(item: any, col: Est2Column, kind: 'fore' | 'back'): string | null;
|
|
2679
|
+
/** Valore report formattato (usa il formatter delle aggregazioni: F0-9 / small-long-verylong) */
|
|
2680
|
+
reportCellDisplay(item: any, col: Est2Column): string;
|
|
2681
|
+
/** Costruisce il routerLink di una cella dinamica da `RoutePath` + `RouteParameterProperties` */
|
|
2682
|
+
routerLinkFor(item: any, col: Est2Column): any;
|
|
2683
|
+
private refresh;
|
|
2684
|
+
/** Colonne chiave di raggruppamento, nell'ordine di dichiarazione */
|
|
2685
|
+
private groupColumns;
|
|
2686
|
+
/** Tutte le specifiche di aggregazione, appiattite su tutte le colonne */
|
|
2687
|
+
private aggregationSpecs;
|
|
2688
|
+
private clientSort;
|
|
2689
|
+
orderOf(id: string): 'ASC' | 'DESC' | null;
|
|
2690
|
+
orderIndex(id: string): number;
|
|
2691
|
+
toggleSort(col: Est2Column): void;
|
|
2692
|
+
private syncOrdersFromView;
|
|
2693
|
+
goToPage(p: number): void;
|
|
2694
|
+
changeItemsPerPage(n: number): void;
|
|
2695
|
+
private arraySelection?;
|
|
2696
|
+
/** Ancora per la selezione a range stile Windows (Shift+click) */
|
|
2697
|
+
private selectionAnchor;
|
|
2698
|
+
private currentSelection;
|
|
2699
|
+
/** Righe realmente selezionabili: esclude le righe-gruppo quando il raggruppamento è attivo */
|
|
2700
|
+
private selectableRows;
|
|
2701
|
+
/**
|
|
2702
|
+
* Applica il flag _selected alle righe correnti in base allo stato di selezione.
|
|
2703
|
+
* In modalità **all** una riga è selezionata se NON è tra le esclusioni (vale anche
|
|
2704
|
+
* per le pagine non ancora visitate, dove tutte le righe risultano selezionate).
|
|
2705
|
+
*/
|
|
2706
|
+
private applySelectionFlags;
|
|
2707
|
+
/** Ricalcola il conteggio: in modalità **all** è (totale - esclusioni) */
|
|
2708
|
+
private refreshSelectionCount;
|
|
2709
|
+
/** Toggle della selezione di una singola riga (checkbox, click su riga o click destro) */
|
|
2710
|
+
toggleRow(item: any): void;
|
|
2711
|
+
/**
|
|
2712
|
+
* Checkbox globale in testata: seleziona/azzera la **pagina corrente**.
|
|
2713
|
+
* Per estendere la selezione a tutte le pagine si usa `selectEverything()`
|
|
2714
|
+
* (link mostrato nella barra di selezione).
|
|
2715
|
+
*/
|
|
2716
|
+
toggleAll(): void;
|
|
2717
|
+
/** Estende la selezione a TUTTI gli elementi, anche quelli delle altre pagine (`selection.all`) */
|
|
2718
|
+
selectEverything(): void;
|
|
2719
|
+
/** Azzera completamente la selezione */
|
|
2720
|
+
clearSelection(): void;
|
|
2721
|
+
private clearSelectionState;
|
|
2722
|
+
private syncGlobalCheck;
|
|
2723
|
+
private emitSelection;
|
|
2724
|
+
/** Click su una riga: espande/collassa un gruppo, oppure gestisce la selezione. */
|
|
2725
|
+
handleRowClick(item: any, event?: MouseEvent): void;
|
|
2726
|
+
/** Selezione a click stile Esplora risorse: plain=solo questo, Ctrl=toggle, Shift=range dall'ancora */
|
|
2727
|
+
private windowsSelect;
|
|
2728
|
+
/** Pipe riusate per il testo di copia (dependency-free) */
|
|
2729
|
+
private fmt;
|
|
2730
|
+
private lk;
|
|
2731
|
+
/** Owner globale del range attivo: solo la tabella "attiva" reagisce a Ctrl+C/V */
|
|
2732
|
+
private static activeRangeOwner;
|
|
2733
|
+
/** Range di celle: ancora (a) + fuoco (f), indici in boundSource() / visibleColumns() */
|
|
2734
|
+
rangeSel: _angular_core.WritableSignal<{
|
|
2735
|
+
a: {
|
|
2736
|
+
r: number;
|
|
2737
|
+
c: number;
|
|
2738
|
+
};
|
|
2739
|
+
f: {
|
|
2740
|
+
r: number;
|
|
2741
|
+
c: number;
|
|
2742
|
+
};
|
|
2743
|
+
}>;
|
|
2744
|
+
/** true durante il trascinamento (per disabilitare la selezione testo via CSS) */
|
|
2745
|
+
rangeDragging: _angular_core.WritableSignal<boolean>;
|
|
2746
|
+
/** Cella attualmente in editing (indici r/c) */
|
|
2747
|
+
editing: _angular_core.WritableSignal<{
|
|
2748
|
+
r: number;
|
|
2749
|
+
c: number;
|
|
2750
|
+
}>;
|
|
2751
|
+
/** Bozza del valore in editing */
|
|
2752
|
+
editDraft: any;
|
|
2753
|
+
/** true se la modalità range è realmente utilizzabile (colonne strutturate, no gruppi/gerarchia) */
|
|
2754
|
+
rangeActive: _angular_core.Signal<boolean>;
|
|
2755
|
+
/** Rettangolo normalizzato del range corrente (o null) */
|
|
2756
|
+
rangeRect: _angular_core.Signal<{
|
|
2757
|
+
top: number;
|
|
2758
|
+
bottom: number;
|
|
2759
|
+
left: number;
|
|
2760
|
+
right: number;
|
|
2761
|
+
}>;
|
|
2762
|
+
/** true se la cella (r,c) è dentro il range */
|
|
2763
|
+
inRange(r: number, c: number): boolean;
|
|
2764
|
+
/** Estrae gli indici r/c dal `<td data-r data-c>` più vicino al target */
|
|
2765
|
+
private cellCoords;
|
|
2766
|
+
/** mousedown sulla griglia: apre un nuovo range sulla cella-ancora */
|
|
2767
|
+
onGridMouseDown(event: MouseEvent): void;
|
|
2768
|
+
/** mouseover durante il drag: estende il range (solo se la cella cambia davvero) */
|
|
2769
|
+
onGridMouseOver(event: MouseEvent): void;
|
|
2770
|
+
onDocMouseUp(): void;
|
|
2771
|
+
/** Avviso transitorio mostrato in un piccolo toast (es. incolla incompatibile) */
|
|
2772
|
+
notice: _angular_core.WritableSignal<string>;
|
|
2773
|
+
private noticeTimer;
|
|
2774
|
+
private flashNotice;
|
|
2775
|
+
private clearTextSelection;
|
|
2776
|
+
onDocCopy(event: ClipboardEvent): void;
|
|
2777
|
+
onDocPaste(event: ClipboardEvent): void;
|
|
2778
|
+
/** true se il target dell'evento è un campo di input (copia/incolla nativi) */
|
|
2779
|
+
private isFieldTarget;
|
|
2780
|
+
/** Celle (item+colonna) comprese nel rettangolo di selezione */
|
|
2781
|
+
private rangeCells;
|
|
2782
|
+
private applyPaste;
|
|
2783
|
+
/** Template di editor custom (`*editor`) per una colonna, se fornito dal consumer */
|
|
2784
|
+
editorFor(col: Est2Column): TemplateRef<any> | null;
|
|
2785
|
+
/** Contesto passato ai template `*editor` custom */
|
|
2786
|
+
editorContext(item: any, col: Est2Column): any;
|
|
2787
|
+
isEditing(r: number, c: number): boolean;
|
|
2788
|
+
/** Tipo dell'`<input>` di default in base al tipo di colonna */
|
|
2789
|
+
editorInputType(type: string | null): string;
|
|
2790
|
+
onCellDblClick(item: any, col: Est2Column, r: number, c: number): void;
|
|
2791
|
+
commitEdit(item: any, col: Est2Column): void;
|
|
2792
|
+
cancelEdit(): void;
|
|
2793
|
+
/** Valore grezzo su cui operano editing/paste (gestisce gli oggetti `properties`) */
|
|
2794
|
+
private rawCellValue;
|
|
2795
|
+
/** Scrive un valore GIÀ convertito e restituisce l'eventuale EsTableModelChange */
|
|
2796
|
+
private applyCoerced;
|
|
2797
|
+
/**
|
|
2798
|
+
* Converte una stringa (digitata/incollata) nel tipo della colonna, segnalando
|
|
2799
|
+
* se è compatibile. `ok:false` = valore incompatibile col tipo (es. testo in una
|
|
2800
|
+
* colonna numerica) → chi chiama avvisa e non scrive. Una stringa vuota è sempre
|
|
2801
|
+
* valida e azzera il valore (null).
|
|
2802
|
+
*/
|
|
2803
|
+
private coerceValue;
|
|
2804
|
+
/** Parsing numerico tollerante (separatori di migliaia + virgola/punto decimale). `NaN` = non numerico */
|
|
2805
|
+
private toNumber;
|
|
2806
|
+
/** Parsing date tollerante: `dd/MM/yyyy [HH:mm[:ss]]` o formati nativi. `null` = non valida */
|
|
2807
|
+
private parseDateLoose;
|
|
2808
|
+
/** Testo visualizzato di una cella (usato dalla copia) */
|
|
2809
|
+
cellDisplayText(item: any, col: Est2Column): string;
|
|
2810
|
+
/** true se `childKey` è `ancestorKey` stesso o un suo discendente (senza collisioni di prefisso) */
|
|
2811
|
+
private isDescendantKey;
|
|
2812
|
+
/** Espande/collassa un gruppo agendo solo sui flag `_visible` (nessuna ricostruzione) */
|
|
2813
|
+
toggleGroup(group: any): void;
|
|
2814
|
+
/** Item (foglia) appartenenti a un gruppo, a qualsiasi profondità */
|
|
2815
|
+
private groupItems;
|
|
2816
|
+
/** Stato di selezione aggregato di un gruppo, per la sua checkbox */
|
|
2817
|
+
groupSelectionState(group: any): 'all' | 'some' | 'none';
|
|
2818
|
+
/** Seleziona/deseleziona tutti gli item di un gruppo */
|
|
2819
|
+
toggleGroupSelection(group: any): void;
|
|
2820
|
+
/** Testo da mostrare nella cella `col` per una riga-gruppo */
|
|
2821
|
+
groupCellDisplay(group: any, col: Est2Column): string;
|
|
2822
|
+
/** true se la cella di una riga-oggetto va lasciata vuota (colonna di gruppo nascosta) */
|
|
2823
|
+
itemCellHidden(col: Est2Column): boolean;
|
|
2824
|
+
/** Indentazione (px) della cella-chiave in base al livello di gruppo */
|
|
2825
|
+
groupIndent(group: any): number;
|
|
2826
|
+
/** Auto-rileva ownKey/parentKey ('id'/'parentid') se non specificati */
|
|
2827
|
+
private autoDetectHierarchyKeys;
|
|
2828
|
+
/** Costruisce l'albero e applica la selezione; se mancano le chiavi torna la lista invariata */
|
|
2829
|
+
private applyHierarchy;
|
|
2830
|
+
private directChildren;
|
|
2831
|
+
private hierDescendants;
|
|
2832
|
+
/** Selezione in cascata: propaga lo stato al sottoalbero e ricalcola gli antenati */
|
|
2833
|
+
private cascadeSelection;
|
|
2834
|
+
/** Ricostruisce ItemsSelection dai flag `_selected` correnti (usato dalla cascade) */
|
|
2835
|
+
private rebuildSelectionFromFlags;
|
|
2836
|
+
/** Stato indeterminato di una riga-padre in cascade (alcuni discendenti selezionati) */
|
|
2837
|
+
hierarchyIndeterminate(item: any): boolean;
|
|
2838
|
+
/** Espande/collassa un nodo dell'albero */
|
|
2839
|
+
toggleHierarchyNode(item: any): void;
|
|
2840
|
+
/** Indentazione (px) di una riga dell'albero in base al livello */
|
|
2841
|
+
hierarchyIndent(item: any): number;
|
|
2842
|
+
/** Apertura context menu: se la riga non è selezionata la seleziona (solo lei), poi notifica */
|
|
2843
|
+
private onContextMenuOpen;
|
|
2844
|
+
/** Indeterminato: alcune ma non tutte le righe selezionate (per la checkbox globale) */
|
|
2845
|
+
get selectionIndeterminate(): boolean;
|
|
2846
|
+
/** Numero di elementi selezionati (per la barra) */
|
|
2847
|
+
get selectedCount(): number;
|
|
2848
|
+
/** true se c'è almeno un elemento selezionato (mostra la barra) */
|
|
2849
|
+
get hasSelection(): boolean;
|
|
2850
|
+
/** true se sono selezionati TUTTI gli elementi (all senza esclusioni) */
|
|
2851
|
+
get allSelected(): boolean;
|
|
2852
|
+
/** true se ha senso proporre "seleziona tutti": pagina piena, non in all, e ci sono altre pagine */
|
|
2853
|
+
get canSelectEverything(): boolean;
|
|
2854
|
+
canRemove(item: any): boolean;
|
|
2855
|
+
removeItem(item: any): void;
|
|
2856
|
+
abortRemoval(item: any): void;
|
|
2857
|
+
/** Preferenze colonne in memoria (ordine + nascoste). Persistite se `SavePreferences`. */
|
|
2858
|
+
private columnPrefs;
|
|
2859
|
+
/** Applica ordine + visibilità + pin delle preferenze a una lista di colonne appena costruita */
|
|
2860
|
+
private setColumns;
|
|
2861
|
+
/** true una volta caricate le preferenze dal server (evita retrieve multipli) */
|
|
2862
|
+
private prefsLoaded;
|
|
2863
|
+
/**
|
|
2864
|
+
* Chiave di persistenza delle preferenze. Identica all'originale: il `name`
|
|
2865
|
+
* del controllo (ngModel/formControlName). In fallback usa `[Name]`.
|
|
2866
|
+
*/
|
|
2867
|
+
private prefsKey;
|
|
2868
|
+
/**
|
|
2869
|
+
* Carica le preferenze dal `PreferencesService` (stesso formato dell'es-table
|
|
2870
|
+
* originale: `{ columns, column_ordering, orders }`). Chiamata una volta sola,
|
|
2871
|
+
* quando esistono già le colonne correnti per poter validare la coerenza.
|
|
2872
|
+
*/
|
|
2873
|
+
private ensurePrefsLoaded;
|
|
2874
|
+
private applyLoadedPrefs;
|
|
2875
|
+
/**
|
|
2876
|
+
* Persiste le preferenze correnti nel formato originale
|
|
2877
|
+
* `{ columns (visibili), column_ordering (ordine), orders (ordinamenti) }`.
|
|
2878
|
+
*/
|
|
2879
|
+
private saveColumnPrefs;
|
|
2880
|
+
/** Attiva/disattiva il pin di una colonna e persiste (dall'indicatore in testata) */
|
|
2881
|
+
togglePin(col: Est2Column, ev?: Event): void;
|
|
2882
|
+
columnsDialogOpen: _angular_core.WritableSignal<boolean>;
|
|
2883
|
+
/** Lista di lavoro della dialog (copia, per poter annullare) */
|
|
2884
|
+
dialogCols: _angular_core.WritableSignal<{
|
|
2885
|
+
id: string;
|
|
2886
|
+
label: string;
|
|
2887
|
+
visible: boolean;
|
|
2888
|
+
pinned: boolean;
|
|
2889
|
+
}[]>;
|
|
2890
|
+
/** Etichetta leggibile di una colonna (header statico o id) */
|
|
2891
|
+
columnLabel(col: Est2Column): string;
|
|
2892
|
+
openColumnsDialog(): void;
|
|
2893
|
+
closeColumnsDialog(): void;
|
|
2894
|
+
dialogToggle(i: number): void;
|
|
2895
|
+
dialogTogglePin(i: number): void;
|
|
2896
|
+
dialogSetAll(visible: boolean): void;
|
|
2897
|
+
dialogMove(i: number, dir: -1 | 1): void;
|
|
2898
|
+
applyColumnsDialog(): void;
|
|
2899
|
+
resetColumnsDialog(): void;
|
|
2900
|
+
exportMenuOpen: _angular_core.WritableSignal<boolean>;
|
|
2901
|
+
cornerMenuOpen: _angular_core.WritableSignal<boolean>;
|
|
2902
|
+
toggleExportMenu(): void;
|
|
2903
|
+
toggleCornerMenu(): void;
|
|
2904
|
+
/** Chiude i menu a tendina del chrome quando si clicca fuori */
|
|
2905
|
+
onDocClick(): void;
|
|
2906
|
+
/** Colonne da esportare (tutte o solo visibili) e con dato testuale */
|
|
2907
|
+
private exportColumns;
|
|
2908
|
+
/** Righe-dato correnti (esclude righe-gruppo) */
|
|
2909
|
+
private exportRows;
|
|
2910
|
+
/** Matrice [header, ...righe] con i valori visualizzati */
|
|
2911
|
+
private buildExportMatrix;
|
|
2912
|
+
export(format?: 'CSV' | 'XLSX'): void;
|
|
2913
|
+
/** Esporta dati forniti dal consumer (via ExportFunction): li mappa sulle colonne correnti */
|
|
2914
|
+
private exportData;
|
|
2915
|
+
private exportCsv;
|
|
2916
|
+
private exportXlsx;
|
|
2917
|
+
/** Nome file rispettando l'estensione richiesta */
|
|
2918
|
+
private exportFileName;
|
|
2919
|
+
private downloadBlob;
|
|
2920
|
+
cornerAction(id: string): void;
|
|
2921
|
+
rowClass(item: any): string;
|
|
2922
|
+
hasChrome(): boolean;
|
|
2923
|
+
/** Colspan totale per righe a piena larghezza (stato vuoto) */
|
|
2924
|
+
totalColspan(): number;
|
|
2925
|
+
/** Valore grezzo di una proprietà, gestendo gli oggetti "generic" con `properties` */
|
|
2926
|
+
cellValue(item: any, col: Est2Column): any;
|
|
2927
|
+
/** Entry Multi corrispondente a una cella (`item[multiProp][multiIndex]`) */
|
|
2928
|
+
multiCell(item: any, col: Est2Column): any;
|
|
2929
|
+
trackByIndex: (i: number) => number;
|
|
2930
|
+
trackRow: (i: number, item: any) => any;
|
|
2931
|
+
trackCol: (_: number, col: Est2Column) => string;
|
|
2932
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<EsTable2Component, [{ optional: true; self: true; }, null, null, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }]>;
|
|
2933
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<EsTable2Component, "es-table2", never, { "ContextMenu": { "alias": "ContextMenu"; "required": false; }; "_Selection": { "alias": "Selection"; "required": false; "isSignal": true; }; "SingleSelection": { "alias": "SingleSelection"; "required": false; "isSignal": true; }; "SelectionDisabled": { "alias": "SelectionDisabled"; "required": false; "isSignal": true; }; "_SelectAll": { "alias": "SelectAll"; "required": false; "isSignal": true; }; "_UseSelectionCache": { "alias": "UseSelectionCache"; "required": false; "isSignal": true; }; "_ShiftClick": { "alias": "ShiftClick"; "required": false; "isSignal": true; }; "_OrderByColumn": { "alias": "OrderByColumn"; "required": false; "isSignal": true; }; "MultipleOrderingDirectives": { "alias": "MultipleOrderingDirectives"; "required": false; "isSignal": true; }; "Removal": { "alias": "Removal"; "required": false; "isSignal": true; }; "RemovalCondition": { "alias": "RemovalCondition"; "required": false; "isSignal": true; }; "RowClassAssigner": { "alias": "RowClassAssigner"; "required": false; }; "_HidePaging": { "alias": "HidePaging"; "required": false; "isSignal": true; }; "_HidePagingCount": { "alias": "HidePagingCount"; "required": false; "isSignal": true; }; "_HidePagingButtons": { "alias": "HidePagingButtons"; "required": false; "isSignal": true; }; "_AllSearch": { "alias": "AllSearch"; "required": false; "isSignal": true; }; "_PagingStyle": { "alias": "PagingStyle"; "required": false; "isSignal": true; }; "_ArraymodeItemsPerPage": { "alias": "ArraymodeItemsPerPage"; "required": false; "isSignal": true; }; "_UseArrayModePaging": { "alias": "UseArrayModePaging"; "required": false; "isSignal": true; }; "CountLabel": { "alias": "CountLabel"; "required": false; "isSignal": true; }; "Height": { "alias": "Height"; "required": false; "isSignal": true; }; "MaxHeight": { "alias": "MaxHeight"; "required": false; "isSignal": true; }; "EmptySpaceBackgroundColor": { "alias": "EmptySpaceBackgroundColor"; "required": false; "isSignal": true; }; "HighCellDensity": { "alias": "HighCellDensity"; "required": false; "isSignal": true; }; "HeaderHidden": { "alias": "HeaderHidden"; "required": false; "isSignal": true; }; "BodyHidden": { "alias": "BodyHidden"; "required": false; "isSignal": true; }; "ShowLoadingOnBootstrap": { "alias": "ShowLoadingOnBootstrap"; "required": false; "isSignal": true; }; "_DefaultAlignment": { "alias": "DefaultAlignment"; "required": false; "isSignal": true; }; "_TableClass": { "alias": "TableClass"; "required": false; "isSignal": true; }; "_ContainerClass": { "alias": "ContainerClass"; "required": false; "isSignal": true; }; "EsTableHandledSearch": { "alias": "EsTableHandledSearch"; "required": false; "isSignal": true; }; "SearchThrottle": { "alias": "SearchThrottle"; "required": false; "isSignal": true; }; "_ColumnsResizable": { "alias": "ColumnsResizable"; "required": false; "isSignal": true; }; "_ColumnsPinnable": { "alias": "ColumnsPinnable"; "required": false; "isSignal": true; }; "_HiddenColumns": { "alias": "HiddenColumns"; "required": false; "isSignal": true; }; "_ColumnsOrdering": { "alias": "ColumnsOrdering"; "required": false; "isSignal": true; }; "_Export": { "alias": "Export"; "required": false; "isSignal": true; }; "XLSXExport": { "alias": "XLSXExport"; "required": false; "isSignal": true; }; "CSVExport": { "alias": "CSVExport"; "required": false; "isSignal": true; }; "ExportFileName": { "alias": "ExportFileName"; "required": false; "isSignal": true; }; "ExportOnlyVisibleColumns": { "alias": "ExportOnlyVisibleColumns"; "required": false; "isSignal": true; }; "ExportFunction": { "alias": "ExportFunction"; "required": false; }; "CornerMenuOptions": { "alias": "CornerMenuOptions"; "required": false; "isSignal": true; }; "DynamicOperations": { "alias": "DynamicOperations"; "required": false; "isSignal": true; }; "_DynamicRowColumnsDefinition": { "alias": "DynamicRowColumnsDefinition"; "required": false; "isSignal": true; }; "Hierarchy": { "alias": "Hierarchy"; "required": false; "isSignal": true; }; "_ParentKey": { "alias": "ParentKey"; "required": false; "isSignal": true; }; "_OwnKey": { "alias": "OwnKey"; "required": false; "isSignal": true; }; "_AutoSortHierarchy": { "alias": "AutoSortHierarchy"; "required": false; "isSignal": true; }; "StartsExpanded": { "alias": "StartsExpanded"; "required": false; "isSignal": true; }; "CascadeSelection": { "alias": "CascadeSelection"; "required": false; "isSignal": true; }; "_SavePreferences": { "alias": "SavePreferences"; "required": false; "isSignal": true; }; "Name": { "alias": "Name"; "required": false; "isSignal": true; }; "_RowGroupingPagingStyle": { "alias": "RowGroupingPagingStyle"; "required": false; "isSignal": true; }; "_ShowItemGroupsColumns": { "alias": "ShowItemGroupsColumns"; "required": false; "isSignal": true; }; "Editable": { "alias": "Editable"; "required": false; "isSignal": true; }; "RangeSelection": { "alias": "RangeSelection"; "required": false; "isSignal": true; }; "ItemSourceProperty": { "alias": "ItemSourceProperty"; "required": false; "isSignal": true; }; "HasHeaderGroup": { "alias": "HasHeaderGroup"; "required": false; "isSignal": true; }; "HasSecondaryHeaderGroup": { "alias": "HasSecondaryHeaderGroup"; "required": false; "isSignal": true; }; "SearchView": { "alias": "SearchView"; "required": false; "isSignal": true; }; "_AutoUpdate": { "alias": "AutoUpdate"; "required": false; "isSignal": true; }; "globalCheck": { "alias": "globalCheck"; "required": false; "isSignal": true; }; "autoUpdate": { "alias": "autoUpdate"; "required": false; "isSignal": true; }; "seconds": { "alias": "seconds"; "required": false; "isSignal": true; }; "researchInProgress": { "alias": "researchInProgress"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; }; }, { "onOrderChanged": "onOrderChanged"; "onSearchRequest": "onSearchRequest"; "onSelectionChanged": "onSelectionChanged"; "onRemoval": "onRemoval"; "onAbortRemoval": "onAbortRemoval"; "onModelChange": "onModelChange"; "onOpenContextMenu": "onOpenContextMenu"; "onCornerAction": "onCornerAction"; "onDynamicOperation": "onDynamicOperation"; "globalCheck": "globalCheckChange"; "autoUpdate": "autoUpdateChange"; "seconds": "secondsChange"; "researchInProgress": "researchInProgressChange"; }, ["headerRef", "bodyRef", "thDirectives", "tdDirectives", "editorDirectives"], never, false, never>;
|
|
2934
|
+
}
|
|
2935
|
+
|
|
2349
2936
|
/** Componente rappresentante una Colonna della tabella */
|
|
2350
2937
|
declare class EsTh {
|
|
2351
2938
|
private myself;
|
|
@@ -2502,10 +3089,76 @@ declare class EstPropInsensitivePipe implements PipeTransform {
|
|
|
2502
3089
|
static ɵpipe: _angular_core.ɵɵPipeDeclaration<EstPropInsensitivePipe, "est_propinsensitive", false>;
|
|
2503
3090
|
}
|
|
2504
3091
|
|
|
3092
|
+
/**
|
|
3093
|
+
* Paginatore dell'es-table2.
|
|
3094
|
+
*
|
|
3095
|
+
* Componente di sola presentazione: riceve lo stato di paginazione via input e
|
|
3096
|
+
* notifica le intenzioni dell'utente via output. Non conosce il concetto di
|
|
3097
|
+
* viewMode/arrayMode — la logica di applicazione vive nel componente padre.
|
|
3098
|
+
*/
|
|
3099
|
+
declare class EsTable2PagerComponent {
|
|
3100
|
+
/** Valore convenzionale di items-per-page che rappresenta "Tutti" */
|
|
3101
|
+
readonly allValue = 999999;
|
|
3102
|
+
page: _angular_core.InputSignal<number>;
|
|
3103
|
+
pages: _angular_core.InputSignal<number>;
|
|
3104
|
+
total: _angular_core.InputSignal<number>;
|
|
3105
|
+
itemsPerPage: _angular_core.InputSignal<number>;
|
|
3106
|
+
countLabel: _angular_core.InputSignal<string>;
|
|
3107
|
+
showCount: _angular_core.InputSignal<boolean>;
|
|
3108
|
+
showButtons: _angular_core.InputSignal<boolean>;
|
|
3109
|
+
showPagingOptions: _angular_core.InputSignal<boolean>;
|
|
3110
|
+
allowAll: _angular_core.InputSignal<boolean>;
|
|
3111
|
+
pageChange: _angular_core.OutputEmitterRef<number>;
|
|
3112
|
+
itemsPerPageChange: _angular_core.OutputEmitterRef<number>;
|
|
3113
|
+
/** Opzioni della select di items-per-page (con eventuale "Tutti") */
|
|
3114
|
+
ippOptions: _angular_core.Signal<number[]>;
|
|
3115
|
+
/** Finestra di pagine visibili con ellissi (1 … n-1 n n+1 … tot) */
|
|
3116
|
+
visiblePages: _angular_core.Signal<{
|
|
3117
|
+
key: string;
|
|
3118
|
+
page: number;
|
|
3119
|
+
}[]>;
|
|
3120
|
+
goto(p: number): void;
|
|
3121
|
+
onIppChange(ev: Event): void;
|
|
3122
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<EsTable2PagerComponent, never>;
|
|
3123
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<EsTable2PagerComponent, "es-table2-pager", never, { "page": { "alias": "page"; "required": false; "isSignal": true; }; "pages": { "alias": "pages"; "required": false; "isSignal": true; }; "total": { "alias": "total"; "required": false; "isSignal": true; }; "itemsPerPage": { "alias": "itemsPerPage"; "required": false; "isSignal": true; }; "countLabel": { "alias": "countLabel"; "required": false; "isSignal": true; }; "showCount": { "alias": "showCount"; "required": false; "isSignal": true; }; "showButtons": { "alias": "showButtons"; "required": false; "isSignal": true; }; "showPagingOptions": { "alias": "showPagingOptions"; "required": false; "isSignal": true; }; "allowAll": { "alias": "allowAll"; "required": false; "isSignal": true; }; }, { "pageChange": "pageChange"; "itemsPerPageChange": "itemsPerPageChange"; }, never, never, false, never>;
|
|
3124
|
+
}
|
|
3125
|
+
|
|
3126
|
+
/**
|
|
3127
|
+
* Formattazione di presentazione per il renderer di default (celle senza template).
|
|
3128
|
+
* Self-contained (Intl / Date nativi) per non trascinare dipendenze esterne.
|
|
3129
|
+
*
|
|
3130
|
+
* `format` opzionale sovrascrive il default per tipo:
|
|
3131
|
+
* - numerici → "F2" = 2 decimali fissi
|
|
3132
|
+
* - date → pattern accettato da Intl (fallback a locale corto)
|
|
3133
|
+
*/
|
|
3134
|
+
declare class Est2FormatPipe implements PipeTransform {
|
|
3135
|
+
transform(value: any, type?: InputType | string | null, format?: string | null, locale?: string): string;
|
|
3136
|
+
private num;
|
|
3137
|
+
private date;
|
|
3138
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Est2FormatPipe, never>;
|
|
3139
|
+
static ɵpipe: _angular_core.ɵɵPipeDeclaration<Est2FormatPipe, "est2_format", false>;
|
|
3140
|
+
}
|
|
3141
|
+
|
|
3142
|
+
/**
|
|
3143
|
+
* Risolve un valore verso il suo `{ id, description }` in una sorgente enum.
|
|
3144
|
+
* Pura: ricalcola solo quando cambiano `value` o `source`.
|
|
3145
|
+
*/
|
|
3146
|
+
declare class Est2LookupPipe implements PipeTransform {
|
|
3147
|
+
transform(value: unknown, source?: {
|
|
3148
|
+
id: any;
|
|
3149
|
+
description: string;
|
|
3150
|
+
}[] | null): {
|
|
3151
|
+
id: any;
|
|
3152
|
+
description: string;
|
|
3153
|
+
};
|
|
3154
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Est2LookupPipe, never>;
|
|
3155
|
+
static ɵpipe: _angular_core.ɵɵPipeDeclaration<Est2LookupPipe, "est2_lookup", false>;
|
|
3156
|
+
}
|
|
3157
|
+
|
|
2505
3158
|
declare class EsTableModule {
|
|
2506
3159
|
static forRoot(config?: EsTableModuleConfig): ModuleWithProviders<EsTableModule>;
|
|
2507
3160
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<EsTableModule, never>;
|
|
2508
|
-
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<EsTableModule, [typeof EsTdDirective, typeof EsThDirective, typeof EsTdEditorDirective, typeof EsTableComponent, typeof EsTablePagerComponent, typeof ThTdProvider, typeof EsTh, typeof EsTd, typeof EstFormatPipe, typeof EstLookupPipe, typeof EstRouterLinkPipe, typeof EstRendererPipe, typeof EstEditorPipe, typeof EstPropInsensitivePipe], [typeof
|
|
3161
|
+
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<EsTableModule, [typeof EsTdDirective, typeof EsThDirective, typeof EsTdEditorDirective, typeof EsTableComponent, typeof EsTablePagerComponent, typeof ThTdProvider, typeof EsTable2Component, typeof EsTh, typeof EsTd, typeof EstFormatPipe, typeof EstLookupPipe, typeof EstRouterLinkPipe, typeof EstRendererPipe, typeof EstEditorPipe, typeof EstPropInsensitivePipe, typeof EsTable2PagerComponent, typeof Est2FormatPipe, typeof Est2LookupPipe], [typeof i19.CommonModule, typeof i20.FormsModule, typeof i21.RouterModule, typeof i22.LocalizationModule, typeof i23.ExtensionsModule, typeof i24.ModalModule, typeof i25.BsDropdownModule, typeof i26.ContextMenuModule, typeof i27.DragDropModule, typeof i28.FormsAndValidationsModule, typeof i29.TooltipModule, typeof i30.AccessControlModule, typeof i31.SelectModule], [typeof EsTdDirective, typeof EsThDirective, typeof EsTdEditorDirective, typeof EsTableComponent, typeof EsTablePagerComponent, typeof ThTdProvider, typeof EsTable2Component]>;
|
|
2509
3162
|
static ɵinj: _angular_core.ɵɵInjectorDeclaration<EsTableModule>;
|
|
2510
3163
|
}
|
|
2511
3164
|
|
|
@@ -2563,5 +3216,12 @@ declare const EST_EXPORT_GLOBAL_ACL: InjectionToken<string>;
|
|
|
2563
3216
|
/** Token che indica i default da assegnare agli Input */
|
|
2564
3217
|
declare const EST_DEFAULTS: InjectionToken<EsTableDefaultable>;
|
|
2565
3218
|
|
|
2566
|
-
|
|
2567
|
-
|
|
3219
|
+
/** Abilita il logging a console */
|
|
3220
|
+
declare const EST2_DEBUG: InjectionToken<boolean>;
|
|
3221
|
+
/** Espressione ACL globale che abilita/disabilita l'export */
|
|
3222
|
+
declare const EST2_EXPORT_GLOBAL_ACL: InjectionToken<string>;
|
|
3223
|
+
/** Valori di default per-progetto degli Input */
|
|
3224
|
+
declare const EST2_DEFAULTS: InjectionToken<EsTableDefaultable>;
|
|
3225
|
+
|
|
3226
|
+
export { AppOrdering, AppSearch, CornerMenuOption, EST2_DEBUG, EST2_DEFAULTS, EST2_EXPORT_GLOBAL_ACL, EST_DEBUG, EST_DEFAULTS, EST_EXPORT_GLOBAL_ACL, EsTable2Component, EsTableColumnsDefinition, EsTableComponent, EsTableDefaultable, EsTableModelChange, EsTableModule, EsTableModuleConfig, EsTableMultiValue, EsTableOperationDefinition, EsTablePagerComponent, EsTdDirective, EsTdEditorDirective, EsThDirective, GenericItem, Group, GroupAggregation, GroupFilter, GroupOrAggregation, ItemPropEditableReference, ItemsSelection, ReportColumn, ReportParam, ReportRow, ThTdProvider };
|
|
3227
|
+
export type { Est2Column, Est2HeaderGroupCell, InputType };
|