@esfaenza/es-table 20.3.53 → 20.3.55

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
@@ -794,8 +794,13 @@ declare class EsThDirective {
794
794
  _multi_content: string;
795
795
  /** Id della colonna, dev'essere lo stesso per tutti i **td** relativi */
796
796
  th: string;
797
- /** Indica se la colonna è pinnata o no */
797
+ /** Indica se la colonna è pinnata o no (bloccata a SINISTRA) */
798
798
  thPinned: boolean;
799
+ /**
800
+ * Indica se la colonna è bloccata a DESTRA, in coda alla tabella. Usato solo
801
+ * dall'`<es-table2>`: la tabella originale ignora questo input.
802
+ */
803
+ thPinnedRight: boolean;
799
804
  /** Indica se la colonna è pinnabile o no */
800
805
  thPinnable: boolean;
801
806
  /** Indica le dimensioni che deve avere questa colonna quando viene pinnata, senza questo tutte le colonne mi collasserebbero l'una sull'altra */
@@ -873,7 +878,7 @@ declare class EsThDirective {
873
878
  /** @ignore */
874
879
  constructor(Template: TemplateRef<any> | null);
875
880
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EsThDirective, [{ self: true; }]>;
876
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<EsThDirective, "[th]", never, { "th": { "alias": "th"; "required": false; }; "thPinned": { "alias": "thPinned"; "required": false; }; "thPinnable": { "alias": "thPinnable"; "required": false; }; "thPinnedWidth": { "alias": "thPinnedWidth"; "required": false; }; "thVisible": { "alias": "thVisible"; "required": false; }; "thFixed": { "alias": "thFixed"; "required": false; }; "thParent": { "alias": "thParent"; "required": false; }; "thOrder": { "alias": "thOrder"; "required": false; }; "thOrderable": { "alias": "thOrderable"; "required": false; }; "thWrap": { "alias": "thWrap"; "required": false; }; "thResizable": { "alias": "thResizable"; "required": false; }; "thClass": { "alias": "thClass"; "required": false; }; "thShrink": { "alias": "thShrink"; "required": false; }; "thGroupClass": { "alias": "thGroupClass"; "required": false; }; "thIf": { "alias": "thIf"; "required": false; }; "thEmpty": { "alias": "thEmpty"; "required": false; }; "thGroup": { "alias": "thGroup"; "required": false; }; "thAggregation": { "alias": "thAggregation"; "required": false; }; "thProperty": { "alias": "thProperty"; "required": false; }; "thType": { "alias": "thType"; "required": false; }; "thSource": { "alias": "thSource"; "required": false; }; "thMulti": { "alias": "thMulti"; "required": false; }; "thStaticContent": { "alias": "thStaticContent"; "required": false; }; "thBackgroundColor": { "alias": "thBackgroundColor"; "required": false; }; "thAlignment": { "alias": "thAlignment"; "required": false; }; "thFormat": { "alias": "thFormat"; "required": false; }; "thEditorName": { "alias": "thEditorName"; "required": false; }; "thEditorOptions": { "alias": "thEditorOptions"; "required": false; }; "thRendererName": { "alias": "thRendererName"; "required": false; }; "thRoutePath": { "alias": "thRoutePath"; "required": false; }; "thRouteParameterProperties": { "alias": "thRouteParameterProperties"; "required": false; }; }, {}, never, never, false, never>;
881
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<EsThDirective, "[th]", never, { "th": { "alias": "th"; "required": false; }; "thPinned": { "alias": "thPinned"; "required": false; }; "thPinnedRight": { "alias": "thPinnedRight"; "required": false; }; "thPinnable": { "alias": "thPinnable"; "required": false; }; "thPinnedWidth": { "alias": "thPinnedWidth"; "required": false; }; "thVisible": { "alias": "thVisible"; "required": false; }; "thFixed": { "alias": "thFixed"; "required": false; }; "thParent": { "alias": "thParent"; "required": false; }; "thOrder": { "alias": "thOrder"; "required": false; }; "thOrderable": { "alias": "thOrderable"; "required": false; }; "thWrap": { "alias": "thWrap"; "required": false; }; "thResizable": { "alias": "thResizable"; "required": false; }; "thClass": { "alias": "thClass"; "required": false; }; "thShrink": { "alias": "thShrink"; "required": false; }; "thGroupClass": { "alias": "thGroupClass"; "required": false; }; "thIf": { "alias": "thIf"; "required": false; }; "thEmpty": { "alias": "thEmpty"; "required": false; }; "thGroup": { "alias": "thGroup"; "required": false; }; "thAggregation": { "alias": "thAggregation"; "required": false; }; "thProperty": { "alias": "thProperty"; "required": false; }; "thType": { "alias": "thType"; "required": false; }; "thSource": { "alias": "thSource"; "required": false; }; "thMulti": { "alias": "thMulti"; "required": false; }; "thStaticContent": { "alias": "thStaticContent"; "required": false; }; "thBackgroundColor": { "alias": "thBackgroundColor"; "required": false; }; "thAlignment": { "alias": "thAlignment"; "required": false; }; "thFormat": { "alias": "thFormat"; "required": false; }; "thEditorName": { "alias": "thEditorName"; "required": false; }; "thEditorOptions": { "alias": "thEditorOptions"; "required": false; }; "thRendererName": { "alias": "thRendererName"; "required": false; }; "thRoutePath": { "alias": "thRoutePath"; "required": false; }; "thRouteParameterProperties": { "alias": "thRouteParameterProperties"; "required": false; }; }, {}, never, never, false, never>;
877
882
  }
878
883
 
879
884
  /** Direttiva che rappresenta il template dell'editor di una cella all'interno della tabella */
@@ -2415,8 +2420,14 @@ interface Est2Column {
2415
2420
  routeParams?: string[] | null;
2416
2421
  /** nome del renderer custom da risolvere tra i `*td` (dinamica) */
2417
2422
  rendererName?: string | null;
2418
- /** true se la colonna è "pinnata" (sticky a sinistra durante lo scroll orizzontale) */
2423
+ /** true se la colonna è "pinnata" (sticky a SINISTRA durante lo scroll orizzontale) */
2419
2424
  pinned?: boolean;
2425
+ /**
2426
+ * true se la colonna è bloccata a DESTRA: sticky in coda alla tabella, subito a
2427
+ * sinistra delle colonne di servizio (rimozione e chrome). Mutuamente esclusiva
2428
+ * con `pinned`.
2429
+ */
2430
+ pinnedRight?: boolean;
2420
2431
  /**
2421
2432
  * true se la colonna è FIXED (`*th Fixed:true` o `*th Group:true`): non può essere
2422
2433
  * nascosta né riposizionata e resta ancorata in testa alla tabella. Solo le colonne
@@ -2462,7 +2473,10 @@ interface Est2DialogColumn {
2462
2473
  /** contesto del template (colonne Multi: `{ $implicit: header }`) */
2463
2474
  tmplCtx: any;
2464
2475
  visible: boolean;
2476
+ /** bloccata a sinistra */
2465
2477
  pinned: boolean;
2478
+ /** bloccata a destra (in coda alla tabella) */
2479
+ pinnedRight: boolean;
2466
2480
  /** appartiene a un header-group (o è Multi): non pinnabile */
2467
2481
  grouped: boolean;
2468
2482
  /** colonna `Fixed`: sempre visibile e non riposizionabile */
@@ -2555,7 +2569,12 @@ declare class EsTable2Component implements ControlValueAccessor, AfterContentIni
2555
2569
  private headerRO?;
2556
2570
  /** ViewChild-setter: (ri)osserva l'header appena compare/cambia, mantenendo le misure allineate */
2557
2571
  set theadRef(ref: ElementRef<HTMLElement> | undefined);
2558
- /** Misura header (altezza) e colonna chrome (larghezza) per il posizionamento della select-bar */
2572
+ /**
2573
+ * Larghezza totale (px) delle colonne di SERVIZIO in coda alla tabella (rimozione
2574
+ * e chrome). È il punto da cui partono gli offset delle colonne bloccate a destra.
2575
+ */
2576
+ trailingWidth: _angular_core.WritableSignal<number>;
2577
+ /** Misura header (altezza) e colonne di coda (larghezze) per select-bar e pin a destra */
2559
2578
  private measureHeader;
2560
2579
  readonly _Selection: _angular_core.InputSignal<boolean>;
2561
2580
  Selection: _angular_core.WritableSignal<boolean>;
@@ -2787,6 +2806,7 @@ declare class EsTable2Component implements ControlValueAccessor, AfterContentIni
2787
2806
  colStyles: _angular_core.Signal<{
2788
2807
  width: number | null;
2789
2808
  left: number | null;
2809
+ right: number | null;
2790
2810
  groupStart: boolean;
2791
2811
  }[]>;
2792
2812
  /** Righe extra rese sopra e sotto il viewport, per non vedere il vuoto durante lo scroll */
@@ -2851,6 +2871,16 @@ declare class EsTable2Component implements ControlValueAccessor, AfterContentIni
2851
2871
  pinnedOffsets: _angular_core.Signal<number[]>;
2852
2872
  /** Offset `left` (px) di una colonna sticky all'indice `ci` in visibleColumns */
2853
2873
  pinnedLeftPx(ci: number): number;
2874
+ /**
2875
+ * Offset `right` (px) cumulativi delle colonne bloccate a DESTRA, memoizzati come
2876
+ * i corrispettivi di sinistra. Si parte da `trailingWidth()` — la larghezza delle
2877
+ * colonne di servizio in coda (rimozione e chrome), che sono già sticky a destra —
2878
+ * e si risale verso sinistra, così le colonne bloccate si impilano appena prima di
2879
+ * quelle e non ci finiscono sopra.
2880
+ */
2881
+ pinnedRightOffsets: _angular_core.Signal<number[]>;
2882
+ /** true se almeno una colonna visibile è bloccata a destra */
2883
+ hasPinnedRight: _angular_core.Signal<boolean>;
2854
2884
  /** true se la tabella renderizza colonne strutturate (direttive/dinamica/report), non template semplici */
2855
2885
  usesColumns: _angular_core.Signal<boolean>;
2856
2886
  /**
@@ -3041,6 +3071,19 @@ declare class EsTable2Component implements ControlValueAccessor, AfterContentIni
3041
3071
  private emitSelection;
3042
3072
  /** Click su una riga: espande/collassa un gruppo, oppure gestisce la selezione. */
3043
3073
  handleRowClick(item: any, event?: MouseEvent): void;
3074
+ /**
3075
+ * true se l'utente ha appena EVIDENZIATO DEL TESTO dentro questa tabella.
3076
+ *
3077
+ * Serve a non trasformare un trascinamento fatto per copiare il contenuto di una
3078
+ * cella in una selezione di riga. Funziona per come il browser ordina gli eventi:
3079
+ * il `mousedown` azzera la selezione corrente, quindi su un click SEMPLICE qui la
3080
+ * selezione è sempre collassata e la riga si seleziona come prima; dopo un
3081
+ * trascinamento invece c'è del testo selezionato e il click viene ignorato.
3082
+ *
3083
+ * Il controllo sul nodo di ancoraggio evita che una selezione lasciata da qualche
3084
+ * altra parte nella pagina blocchi i click di riga di questa tabella.
3085
+ */
3086
+ private textSelectionActive;
3044
3087
  /**
3045
3088
  * Shift/Ctrl+click stile Esplora risorse, attivo solo con `[ShiftClick]`.
3046
3089
  *
@@ -3381,6 +3424,17 @@ declare class EsTable2Component implements ControlValueAccessor, AfterContentIni
3381
3424
  */
3382
3425
  private applyHeaderVisibility;
3383
3426
  /** Attiva/disattiva il pin di una colonna e persiste (dall'indicatore in testata) */
3427
+ /**
3428
+ * Prossimo stato nel ciclo di blocco di una colonna: libera → sinistra → destra →
3429
+ * libera. Un comando solo invece di due interruttori, perché i due lati sono
3430
+ * esclusivi e chi usa la tabella ragiona su "dove la voglio", non su due flag.
3431
+ */
3432
+ pinCycleNext(col: {
3433
+ pinned?: boolean;
3434
+ pinnedRight?: boolean;
3435
+ }): 'left' | 'right' | 'none';
3436
+ /** Etichetta (sorgente inglese, poi localizzata) di cosa farà il prossimo click sul pin */
3437
+ pinTitleFor(col: Est2Column): string;
3384
3438
  togglePin(col: Est2Column, ev?: Event): void;
3385
3439
  /** `AppEmbeddingExtensions` risolto pigramente: `providedIn:'root'` ma le sue
3386
3440
  * dipendenze possono mancare in setup isolati, quindi `get` può lanciare. */
@@ -3422,6 +3476,8 @@ declare class EsTable2Component implements ControlValueAccessor, AfterContentIni
3422
3476
  openColumnsDialog(): void;
3423
3477
  closeColumnsDialog(): void;
3424
3478
  dialogToggle(i: number): void;
3479
+ /** Come `pinTitleFor`, per la riga della dialog (che ha anche i casi non pinnabili) */
3480
+ dialogPinTitle(c: Est2DialogColumn): string;
3425
3481
  dialogTogglePin(i: number): void;
3426
3482
  dialogSetAll(visible: boolean): void;
3427
3483
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@esfaenza/es-table",
3
- "version": "20.3.53",
3
+ "version": "20.3.55",
4
4
  "dependencies": {
5
5
  "tslib": "^2.0.0"
6
6
  },