@esfaenza/es-table 20.3.37 → 20.3.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -2564,6 +2564,13 @@ declare class EsTable2Component implements ControlValueAccessor, AfterContentIni
2564
2564
  readonly _SelectAll: _angular_core.InputSignal<boolean>;
2565
2565
  SelectAll: _angular_core.WritableSignal<boolean>;
2566
2566
  /** @deprecated NO-OP di parità v1 (cache selezione cross-pagina): dichiarato per il drop-in, non usato */
2567
+ /**
2568
+ * Identità di una riga per la cache di selezione: nome di una proprietà (es. id)
2569
+ * oppure una funzione. Senza, si ricade su un hash del CONTENUTO (parità con
2570
+ * l'originale): funziona, ma basta che il server cambi un campo perché la riga non
2571
+ * venga più riconosciuta. Con una chiave stabile il problema non si pone.
2572
+ */
2573
+ SelectionKey: _angular_core.InputSignal<string | ((item: any) => any)>;
2567
2574
  readonly _UseSelectionCache: _angular_core.InputSignal<boolean>;
2568
2575
  UseSelectionCache: _angular_core.WritableSignal<boolean>;
2569
2576
  readonly _ShiftClick: _angular_core.InputSignal<boolean>;
@@ -2879,6 +2886,14 @@ declare class EsTable2Component implements ControlValueAccessor, AfterContentIni
2879
2886
  /** Timeout di debounce del writeValue in modalità EsTableHandledSearch */
2880
2887
  private searchCallTimeout;
2881
2888
  writeValue(obj: any, throttle?: boolean): void;
2889
+ /**
2890
+ * Decide se la selezione sopravvive al modello appena arrivato. Parità con
2891
+ * l'originale: sopravvive solo alle ricerche INTERNE (cambio pagina, ordinamento,
2892
+ * elementi per pagina), che la tabella marca con `internalsearchrequest`. Una
2893
+ * ricerca dell'utente — filtri cambiati — riparte da selezione vuota, altrimenti
2894
+ * resterebbero selezionate righe che non fanno più parte del risultato.
2895
+ */
2896
+ private applySelectionCachePolicy;
2882
2897
  registerOnChange(fn: (v: any) => void): void;
2883
2898
  registerOnTouched(fn: () => void): void;
2884
2899
  setDisabledState?(): void;
@@ -2941,6 +2956,45 @@ declare class EsTable2Component implements ControlValueAccessor, AfterContentIni
2941
2956
  * In modalità **all** una riga è selezionata se NON è tra le esclusioni (vale anche
2942
2957
  * per le pagine non ancora visitate, dove tutte le righe risultano selezionate).
2943
2958
  */
2959
+ /** Attiva solo in viewmode: in array mode gli oggetti non cambiano identità */
2960
+ private selectionCacheOn;
2961
+ /**
2962
+ * Identità di una riga ai fini della selezione. A cache SPENTA restituisce
2963
+ * l'oggetto stesso, quindi ogni confronto resta per riferimento e il comportamento
2964
+ * è identico a prima.
2965
+ */
2966
+ private selKey;
2967
+ /**
2968
+ * Proprietà-identità RILEVATA dai dati, così la cache funziona senza configurare
2969
+ * nulla. Vale per tutta la vita della ricerca: viene ricalcolata solo quando la
2970
+ * selezione riparte, altrimenti una pagina "sfortunata" potrebbe cambiare criterio
2971
+ * a metà strada e far sballare i confronti.
2972
+ */
2973
+ private autoKeyProp;
2974
+ /** true quando la rilevazione è già stata fatta per la ricerca corrente */
2975
+ private autoKeyResolved;
2976
+ /**
2977
+ * Cerca una proprietà utilizzabile come identità: prima `[OwnKey]` (che il consumer
2978
+ * ha già dichiarato per la gerarchia), poi una proprietà chiamata `id`. La candidata
2979
+ * viene ACCETTATA solo se sulla pagina è valorizzata ovunque, primitiva e univoca;
2980
+ * altrimenti si ricade sull'hash del contenuto. Meglio nessuna chiave che una
2981
+ * sbagliata: una chiave duplicata selezionerebbe righe diverse insieme.
2982
+ */
2983
+ private resolveAutoKey;
2984
+ /** Rileva l'identità una volta per ricerca, prima di applicare i flag di selezione */
2985
+ private ensureAutoKey;
2986
+ /**
2987
+ * Hash stabile del contenuto della riga, ignorando i campi interni (`_selected`,
2988
+ * `_hash`, …). Le chiavi sono ordinate per non dipendere dall'ordine di
2989
+ * serializzazione. È il fallback di parità con l'originale: se il server cambia
2990
+ * anche un solo campo la riga non viene più riconosciuta, per questo conviene
2991
+ * fornire `[SelectionKey]`.
2992
+ */
2993
+ private contentHash;
2994
+ /** Aggiunge una riga a una lista di selezione, deduplicando per chiave */
2995
+ private selAdd;
2996
+ /** Rimuove una riga da una lista di selezione confrontando per chiave */
2997
+ private selRemove;
2944
2998
  private applySelectionFlags;
2945
2999
  /** Ricalcola il conteggio: in modalità **all** è (totale - esclusioni) */
2946
3000
  private refreshSelectionCount;
@@ -3292,6 +3346,22 @@ declare class EsTable2Component implements ControlValueAccessor, AfterContentIni
3292
3346
  private columnChain;
3293
3347
  /** Riordino group-contiguo — delega al motore `core/header-groups.ts` */
3294
3348
  private enforceGroupContiguity;
3349
+ /**
3350
+ * "Ripristina": riporta la tabella allo stato DICHIARATO dal consumer e, cosa più
3351
+ * importante, CANCELLA le preferenze salvate per questa tabella.
3352
+ *
3353
+ * È la via che l'utente ha per rimettersi a posto da solo: prima serviva un
3354
+ * intervento esterno sullo store delle preferenze, ora è un pulsante che si trova
3355
+ * in ogni tabella e che si impara una volta sola.
3356
+ *
3357
+ * Nell'ordine:
3358
+ * 1. rimuove la preferenza persistita (`removeItem`, locale + store definitivo);
3359
+ * 2. dimentica lo stato derivato: ordine, visibilità, pin, larghezze e ordinamenti;
3360
+ * 3. ricostruisce le colonne dalle direttive, cioè come le ha scritte il consumer;
3361
+ * 4. ripulisce i campi wire dell'AppSearch (`columns`, `column_ordering`, `orders`),
3362
+ * altrimenti il server continuerebbe a ricevere le scelte appena cancellate;
3363
+ * 5. rilancia la ricerca, così la tabella si ripresenta pulita.
3364
+ */
3295
3365
  resetColumnsDialog(): void;
3296
3366
  exportMenuOpen: _angular_core.WritableSignal<boolean>;
3297
3367
  cornerMenuOpen: _angular_core.WritableSignal<boolean>;
@@ -3371,7 +3441,7 @@ declare class EsTable2Component implements ControlValueAccessor, AfterContentIni
3371
3441
  trackRow: (i: number, item: any) => any;
3372
3442
  trackCol: (_: number, col: Est2Column) => string;
3373
3443
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EsTable2Component, [{ optional: true; self: true; }, null, null, { optional: true; }, null, null, { optional: true; }, { optional: true; }, { optional: true; }]>;
3374
- 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; }; "VirtualScroll": { "alias": "VirtualScroll"; "required": false; "isSignal": true; }; "VirtualRowHeight": { "alias": "VirtualRowHeight"; "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; }; "EsThTdProvider": { "alias": "EsThTdProvider"; "required": false; }; "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", "thTdProviders"], never, false, never>;
3444
+ 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; }; "SelectionKey": { "alias": "SelectionKey"; "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; }; "VirtualScroll": { "alias": "VirtualScroll"; "required": false; "isSignal": true; }; "VirtualRowHeight": { "alias": "VirtualRowHeight"; "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; }; "EsThTdProvider": { "alias": "EsThTdProvider"; "required": false; }; "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", "thTdProviders"], never, false, never>;
3375
3445
  }
3376
3446
 
3377
3447
  /** Componente rappresentante una Colonna della tabella */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@esfaenza/es-table",
3
- "version": "20.3.37",
3
+ "version": "20.3.39",
4
4
  "dependencies": {
5
5
  "tslib": "^2.0.0"
6
6
  },