@esfaenza/es-table 20.3.17 → 20.3.19

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
@@ -2452,6 +2452,8 @@ declare class EsTable2Component implements ControlValueAccessor, AfterContentIni
2452
2452
  thDirectives?: QueryList<EsThDirective>;
2453
2453
  tdDirectives?: QueryList<EsTdDirective>;
2454
2454
  editorDirectives?: QueryList<EsTdEditorDirective>;
2455
+ /** Provider `td_th_provider` annidati dentro `<es-table2>` */
2456
+ thTdProviders?: QueryList<ThTdProvider>;
2455
2457
  /** Context menu (ngx-contextmenu) collegato al click destro sulle righe */
2456
2458
  ContextMenu?: ContextMenuComponent;
2457
2459
  /** Menu vuoto di default, usato quando il consumer non fornisce un **ContextMenu** */
@@ -2550,7 +2552,11 @@ declare class EsTable2Component implements ControlValueAccessor, AfterContentIni
2550
2552
  HasHeaderGroup: _angular_core.InputSignal<boolean>;
2551
2553
  HasSecondaryHeaderGroup: _angular_core.InputSignal<boolean>;
2552
2554
  SearchView: _angular_core.InputSignal<AppSearch<any>>;
2555
+ /** Abilita il "patacchino" di auto-aggiornamento (toggle + intervallo) in alto a destra */
2553
2556
  readonly _AutoUpdate: _angular_core.InputSignal<boolean>;
2557
+ AutoUpdate: _angular_core.WritableSignal<boolean>;
2558
+ /** Provider esterno di `*th`/`*td` (pattern `td_th_provider`), passato per riferimento */
2559
+ EsThTdProvider?: ThTdProvider;
2554
2560
  onOrderChanged: EventEmitter<AppOrdering>;
2555
2561
  onSearchRequest: EventEmitter<any>;
2556
2562
  onSelectionChanged: EventEmitter<ItemsSelection<any>>;
@@ -2609,6 +2615,8 @@ declare class EsTable2Component implements ControlValueAccessor, AfterContentIni
2609
2615
  private directiveColumns;
2610
2616
  /** Definizioni Multi da srotolare sui dati (`*th Multi:true`) */
2611
2617
  private multiDefs;
2618
+ /** true quando le colonne Multi sono state generate almeno una volta (per il gating delle prefs) */
2619
+ private multiColumnsBuilt;
2612
2620
  hostClass: boolean;
2613
2621
  get denseClass(): boolean;
2614
2622
  /** Colonne visibili, con le colonne pinnate spostate in testa (stabile) */
@@ -2634,6 +2642,12 @@ declare class EsTable2Component implements ControlValueAccessor, AfterContentIni
2634
2642
  headerGroupRows: _angular_core.Signal<Est2HeaderGroupCell[][]>;
2635
2643
  /** true se ci sono header-group da renderizzare */
2636
2644
  hasHeaderGroups: _angular_core.Signal<boolean>;
2645
+ /**
2646
+ * Indici (in visibleColumns) delle colonne che aprono un nuovo gruppo-colonna,
2647
+ * cioè dove il gruppo padre immediato cambia rispetto alla colonna precedente.
2648
+ * Serve a disegnare i confini dei gruppi anche nel corpo della tabella.
2649
+ */
2650
+ columnGroupBoundaries: _angular_core.Signal<Set<number>>;
2637
2651
  /** Numero di elementi totali (per il pager) */
2638
2652
  totalCount: _angular_core.Signal<any>;
2639
2653
  /** Pagina corrente per il pager */
@@ -2650,6 +2664,11 @@ declare class EsTable2Component implements ControlValueAccessor, AfterContentIni
2650
2664
  /** Risoluzione input: valore esplicito || default di progetto || hard default */
2651
2665
  private io;
2652
2666
  ngAfterContentInit(): void;
2667
+ /** Provider `td_th_provider` attivi: quello passato via `[EsThTdProvider]` + quelli annidati */
2668
+ private collectProviders;
2669
+ private providerSubs;
2670
+ /** (Ri)aggancia i provider: ricostruisce colonne quando caricano o cambiano i loro `*th`/`*td` */
2671
+ private wireProviders;
2653
2672
  /** Timeout di debounce del writeValue in modalità EsTableHandledSearch */
2654
2673
  private searchCallTimeout;
2655
2674
  writeValue(obj: any, throttle?: boolean): void;
@@ -2663,6 +2682,10 @@ declare class EsTable2Component implements ControlValueAccessor, AfterContentIni
2663
2682
  * imposta il guard `selfsearch` così il writeValue di rientro non ri-cerca.
2664
2683
  */
2665
2684
  private emitSearchRequest;
2685
+ /** Interval attivo quando `autoUpdate` è on (in modalità `[AutoUpdate]`) */
2686
+ private updateTimer;
2687
+ /** (Ri)avvia/ferma il polling in base al toggle `autoUpdate` e a `seconds` */
2688
+ autoUpdateChanged(): void;
2666
2689
  private changed;
2667
2690
  private detectMode;
2668
2691
  private buildColumns;
@@ -2898,16 +2921,41 @@ declare class EsTable2Component implements ControlValueAccessor, AfterContentIni
2898
2921
  label: string;
2899
2922
  visible: boolean;
2900
2923
  pinned: boolean;
2924
+ grouped: boolean;
2901
2925
  }[]>;
2902
2926
  /** Etichetta leggibile di una colonna (header statico o id) */
2903
2927
  columnLabel(col: Est2Column): string;
2928
+ /** true se la colonna appartiene a un gruppo (multi o `Parent`): non è pinnabile */
2929
+ isGrouped(col: Est2Column): boolean;
2930
+ /**
2931
+ * Etichetta della dialog: testo header renderizzato (letto dal DOM, così
2932
+ * rispetta casing/contenuto) preceduto dal percorso dei gruppi, es.
2933
+ * `( Energia - Attiva ) Fascia F1`.
2934
+ */
2935
+ private dialogLabelFor;
2904
2936
  openColumnsDialog(): void;
2905
2937
  closeColumnsDialog(): void;
2906
2938
  dialogToggle(i: number): void;
2907
2939
  dialogTogglePin(i: number): void;
2908
2940
  dialogSetAll(visible: boolean): void;
2941
+ /**
2942
+ * Spostamento gruppo-consapevole nella dialog: i gruppi restano SEMPRE contigui
2943
+ * anche durante l'editing (non solo all'Applica). Se la colonna adiacente è nello
2944
+ * stesso gruppo → swap semplice (riordino interno); se è oltre il confine del
2945
+ * gruppo → si sposta l'INTERO blocco del gruppo (al livello di divergenza).
2946
+ */
2909
2947
  dialogMove(i: number, dir: -1 | 1): void;
2910
2948
  applyColumnsDialog(): void;
2949
+ /**
2950
+ * Riordina gli id in modo che i membri di ogni gruppo-colonna restino contigui,
2951
+ * rispettando il più possibile l'ordine scelto dall'utente: ordina per chiave
2952
+ * = [prima-apparizione di ogni antenato (root→foglia), poi indice proprio].
2953
+ * Così due colonne dello stesso gruppo non possono essere interlacciate con
2954
+ * colonne esterne.
2955
+ */
2956
+ /** Catena degli antenati-gruppo (root→padre immediato) di una colonna; `[]` se non raggruppata */
2957
+ private columnChain;
2958
+ private enforceGroupContiguity;
2911
2959
  resetColumnsDialog(): void;
2912
2960
  exportMenuOpen: _angular_core.WritableSignal<boolean>;
2913
2961
  cornerMenuOpen: _angular_core.WritableSignal<boolean>;
@@ -2942,7 +2990,7 @@ declare class EsTable2Component implements ControlValueAccessor, AfterContentIni
2942
2990
  trackRow: (i: number, item: any) => any;
2943
2991
  trackCol: (_: number, col: Est2Column) => string;
2944
2992
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EsTable2Component, [{ optional: true; self: true; }, null, null, { optional: true; }, { optional: true; }, { optional: true; }, { optional: true; }]>;
2945
- 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>;
2993
+ 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; }; "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>;
2946
2994
  }
2947
2995
 
2948
2996
  /** 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.17",
3
+ "version": "20.3.19",
4
4
  "dependencies": {
5
5
  "tslib": "^2.0.0"
6
6
  },