@esfaenza/es-table 20.3.29 → 20.3.31

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
@@ -2417,6 +2417,12 @@ interface Est2Column {
2417
2417
  rendererName?: string | null;
2418
2418
  /** true se la colonna è "pinnata" (sticky a sinistra durante lo scroll orizzontale) */
2419
2419
  pinned?: boolean;
2420
+ /**
2421
+ * true se la colonna è FIXED (`*th Fixed:true` o `*th Group:true`): non può essere
2422
+ * nascosta né riposizionata e resta ancorata in testa alla tabella. Solo le colonne
2423
+ * pinnate possono precederla. Stesso contratto dell'es-table originale.
2424
+ */
2425
+ fixed?: boolean;
2420
2426
  /** larghezza in px di DEFAULT della colonna pinnata (dal `PinnedWidth` della direttiva) */
2421
2427
  pinnedWidth?: number | null;
2422
2428
  /** larghezza in px IMPOSTATA dall'utente via resize (qualsiasi colonna); sovrascrive l'auto/pinnedWidth */
@@ -2427,6 +2433,29 @@ interface Est2Column {
2427
2433
  multiIndex?: number | null;
2428
2434
  }
2429
2435
 
2436
+ /**
2437
+ * Riga della dialog "Visibilità e ordine colonne". `label` è il fallback testuale
2438
+ * (percorso dei gruppi + testo header letto dal DOM, o l'id); `tmpl` è il template
2439
+ * dell'`*th` ed è valorizzato SOLO quando la colonna non è renderizzata — è l'unico
2440
+ * modo di etichettare una colonna `Visible:false` o nascosta, che nel DOM non esiste.
2441
+ */
2442
+ interface Est2DialogColumn {
2443
+ id: string;
2444
+ /** etichetta testuale completa (prefisso gruppi incluso) */
2445
+ label: string;
2446
+ /** prefisso col percorso dei gruppi, es. `( Energia - Attiva )` — vuoto se nessun gruppo */
2447
+ prefix: string;
2448
+ /** template dell'header, usato quando la colonna non è renderizzata */
2449
+ tmpl: TemplateRef<any> | null;
2450
+ /** contesto del template (colonne Multi: `{ $implicit: header }`) */
2451
+ tmplCtx: any;
2452
+ visible: boolean;
2453
+ pinned: boolean;
2454
+ /** appartiene a un header-group (o è Multi): non pinnabile */
2455
+ grouped: boolean;
2456
+ /** colonna `Fixed`: sempre visibile e non riposizionabile */
2457
+ fixed: boolean;
2458
+ }
2430
2459
  /**
2431
2460
  * Riga della tabella. Oltre ai dati aperti del consumer (index signature) porta
2432
2461
  * un insieme FISSO di flag interni iniettati da grouping/hierarchy/selezione. Tiparli
@@ -2502,10 +2531,18 @@ declare class EsTable2Component implements ControlValueAccessor, AfterContentIni
2502
2531
  private ctxMenuSub?;
2503
2532
  /** Altezza dell'header (misurata): la barra di selezione la usa per coprirlo esattamente */
2504
2533
  selbarHeight: _angular_core.WritableSignal<number>;
2534
+ /**
2535
+ * Larghezza (misurata) della colonna "chrome" sticky a destra. La barra di selezione
2536
+ * si ferma prima di essa: altrimenti "Azzera selezione" finirebbe SOTTO la colonna
2537
+ * sticky (che sta più in alto nello stacking per restare cliccabile durante la selezione).
2538
+ */
2539
+ chromeWidth: _angular_core.WritableSignal<number>;
2505
2540
  private headerEl?;
2506
2541
  private headerRO?;
2507
- /** ViewChild-setter: (ri)osserva l'header appena compare/cambia, mantenendo `selbarHeight` allineata */
2542
+ /** ViewChild-setter: (ri)osserva l'header appena compare/cambia, mantenendo le misure allineate */
2508
2543
  set theadRef(ref: ElementRef<HTMLElement> | undefined);
2544
+ /** Misura header (altezza) e colonna chrome (larghezza) per il posizionamento della select-bar */
2545
+ private measureHeader;
2509
2546
  readonly _Selection: _angular_core.InputSignal<boolean>;
2510
2547
  Selection: _angular_core.WritableSignal<boolean>;
2511
2548
  SingleSelection: _angular_core.InputSignal<boolean>;
@@ -2670,6 +2707,13 @@ declare class EsTable2Component implements ControlValueAccessor, AfterContentIni
2670
2707
  get denseClass(): boolean;
2671
2708
  /** Colonne visibili, con le colonne pinnate spostate in testa (stabile) */
2672
2709
  visibleColumns: _angular_core.Signal<Est2Column[]>;
2710
+ /**
2711
+ * Ordinamento STRUTTURALE delle colonne, parità con l'es-table originale
2712
+ * (`ColumnMetadataHandler`): prima le colonne pinnate, poi le `Fixed` non pinnate,
2713
+ * poi tutte le altre — mantenendo stabile l'ordine relativo dentro ogni blocco.
2714
+ * Una colonna `Fixed` resta quindi sempre in testa e solo una pinnata può precederla.
2715
+ */
2716
+ private sortStructural;
2673
2717
  /** Numero di colonne pinnate visibili */
2674
2718
  pinnedCount: _angular_core.Signal<number>;
2675
2719
  /** true se c'è almeno una colonna pinnata */
@@ -2954,6 +2998,8 @@ declare class EsTable2Component implements ControlValueAccessor, AfterContentIni
2954
2998
  private columnPrefs;
2955
2999
  /** Applica ordine + visibilità + pin + larghezze delle preferenze a una lista di colonne appena costruita */
2956
3000
  private setColumns;
3001
+ /** Mappa `{id: px}` delle larghezze impostate dall'utente (resize), da conservare nelle prefs in memoria */
3002
+ private currentWidths;
2957
3003
  /** true una volta caricate le preferenze dal server (evita retrieve multipli) */
2958
3004
  private prefsLoaded;
2959
3005
  /**
@@ -2973,17 +3019,33 @@ declare class EsTable2Component implements ControlValueAccessor, AfterContentIni
2973
3019
  * `{ columns (visibili), column_ordering (ordine), orders (ordinamenti) }`.
2974
3020
  */
2975
3021
  private saveColumnPrefs;
3022
+ /**
3023
+ * Imposta in maniera programmatica la visibilità di un header — o di un header di
3024
+ * GRUPPO, nel qual caso la modifica scende in cascata su tutti i `*th` che lo
3025
+ * dichiarano come `Parent`. Parità di firma con l'es-table originale.
3026
+ *
3027
+ * Le colonne `Fixed` sono ignorate (per contratto sempre visibili). La modifica
3028
+ * aggiorna anche le preferenze IN MEMORIA, così sopravvive ai rebuild delle colonne
3029
+ * (paginazione, refresh, nuovi dati); non viene persistita sul server.
3030
+ *
3031
+ * @param {string} groupOrHeader Id dell'header (o del gruppo) di cui settare la visibilità
3032
+ * @param {boolean} visibility Visibilità da impostare
3033
+ * @param {boolean} refresh Se `true` (default) aggiorna la tabella dopo la modifica
3034
+ * @param {boolean} relaunchSearch Se `true` (default) in viewmode rilancia la ricerca
3035
+ */
3036
+ setHeaderVisibility(groupOrHeader: string, visibility: boolean, refresh?: boolean, relaunchSearch?: boolean): void;
3037
+ /**
3038
+ * Applica la visibilità a una colonna e, se `id` è un header di gruppo, ricorsivamente
3039
+ * a tutti i suoi figli.
3040
+ *
3041
+ * @returns {boolean} `true` se almeno una colonna è stata modificata
3042
+ */
3043
+ private applyHeaderVisibility;
2976
3044
  /** Attiva/disattiva il pin di una colonna e persiste (dall'indicatore in testata) */
2977
3045
  togglePin(col: Est2Column, ev?: Event): void;
2978
3046
  columnsDialogOpen: _angular_core.WritableSignal<boolean>;
2979
3047
  /** Lista di lavoro della dialog (copia, per poter annullare) */
2980
- dialogCols: _angular_core.WritableSignal<{
2981
- id: string;
2982
- label: string;
2983
- visible: boolean;
2984
- pinned: boolean;
2985
- grouped: boolean;
2986
- }[]>;
3048
+ dialogCols: _angular_core.WritableSignal<Est2DialogColumn[]>;
2987
3049
  /** Etichetta leggibile di una colonna (header statico o id) */
2988
3050
  columnLabel(col: Est2Column): string;
2989
3051
  /** true se la colonna appartiene a un gruppo (multi o `Parent`): non è pinnabile */
@@ -2993,6 +3055,8 @@ declare class EsTable2Component implements ControlValueAccessor, AfterContentIni
2993
3055
  * rispetta casing/contenuto) preceduto dal percorso dei gruppi, es.
2994
3056
  * `( Energia - Attiva ) Fascia F1`.
2995
3057
  */
3058
+ private dialogGroupPrefix;
3059
+ /** Etichetta testuale completa di una colonna nella dialog (prefisso gruppi + foglia) */
2996
3060
  private dialogLabelFor;
2997
3061
  openColumnsDialog(): void;
2998
3062
  closeColumnsDialog(): void;
@@ -3006,6 +3070,11 @@ declare class EsTable2Component implements ControlValueAccessor, AfterContentIni
3006
3070
  * gruppo → si sposta l'INTERO blocco del gruppo (al livello di divergenza).
3007
3071
  */
3008
3072
  dialogMove(i: number, dir: -1 | 1): void;
3073
+ /** true se la riga della dialog è riposizionabile: pinnate e `Fixed` sono ancorate in testa */
3074
+ canReorder(c: {
3075
+ pinned: boolean;
3076
+ fixed: boolean;
3077
+ }): boolean;
3009
3078
  /** Indice della riga trascinata (o null) */
3010
3079
  dragIndex: _angular_core.WritableSignal<number>;
3011
3080
  /** Indice della riga sotto il cursore durante il drag (per l'indicatore) */
@@ -3403,4 +3472,4 @@ declare const EST2_EXPORT_GLOBAL_ACL: InjectionToken<string>;
3403
3472
  declare const EST2_DEFAULTS: InjectionToken<EsTableDefaultable>;
3404
3473
 
3405
3474
  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 };
3406
- export type { Est2Column, Est2HeaderGroupCell, Est2Row, InputType };
3475
+ export type { Est2Column, Est2DialogColumn, Est2HeaderGroupCell, Est2Row, InputType };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@esfaenza/es-table",
3
- "version": "20.3.29",
3
+ "version": "20.3.31",
4
4
  "dependencies": {
5
5
  "tslib": "^2.0.0"
6
6
  },