@esfaenza/es-table 14.2.0 → 14.3.0

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.
Files changed (67) hide show
  1. package/esm2020/lib/components/es-table/es_table.component.loc.mjs +4 -4
  2. package/esm2020/lib/components/es-table/es_table.component.mjs +313 -116
  3. package/esm2020/lib/components/es-table-template/es_table_template.component.mjs +4 -4
  4. package/esm2020/lib/components/es-td/es_td.component.mjs +12 -56
  5. package/esm2020/lib/components/es-th/es_th.component.mjs +5 -5
  6. package/esm2020/lib/components/pager/table_pager.component.loc.mjs +4 -4
  7. package/esm2020/lib/components/pager/table_pager.component.mjs +4 -4
  8. package/esm2020/lib/components/pipes/est-format.pipe.mjs +44 -0
  9. package/esm2020/lib/components/pipes/est-lookup.pipe.mjs +19 -0
  10. package/esm2020/lib/components/pipes/est-renderer.pipe.mjs +36 -0
  11. package/esm2020/lib/components/pipes/est-routerlink.pipe.mjs +41 -0
  12. package/esm2020/lib/components/pipes/est_editor.pipe.mjs +36 -0
  13. package/esm2020/lib/core/CopyPasteDetector.mjs +8 -5
  14. package/esm2020/lib/core/Logger.mjs +26 -0
  15. package/esm2020/lib/core/handlers/ColumnMetadataHandler.mjs +46 -25
  16. package/esm2020/lib/core/handlers/DynamicModeHandler.mjs +80 -37
  17. package/esm2020/lib/core/handlers/ExportHandler.mjs +53 -23
  18. package/esm2020/lib/core/handlers/ReportModeHandler.mjs +6 -2
  19. package/esm2020/lib/core/handlers/SelectionHandler.mjs +54 -50
  20. package/esm2020/lib/core/handlers/UtilitiesHandler.mjs +5 -8
  21. package/esm2020/lib/directives/es_td.directive.mjs +18 -4
  22. package/esm2020/lib/directives/es_td_editor.directive.mjs +4 -4
  23. package/esm2020/lib/directives/es_th.directive.mjs +24 -4
  24. package/esm2020/lib/domain/configuration/EsTableDefaultable.mjs +1 -1
  25. package/esm2020/lib/domain/externals/EsTableColumnsDefinition.mjs +9 -4
  26. package/esm2020/lib/domain/externals/ItemPropEditableReference.mjs +1 -1
  27. package/esm2020/lib/domain/externals/appsearch/AppSearch.mjs +2 -1
  28. package/esm2020/lib/domain/externals/report/ReportColumn.mjs +1 -1
  29. package/esm2020/lib/domain/externals/report/ReportRow.mjs +1 -1
  30. package/esm2020/lib/domain/internals/EsTableColumn.mjs +2 -2
  31. package/esm2020/lib/domain/internals/PagerInfos.mjs +15 -0
  32. package/esm2020/lib/domain/internals/TdElement.mjs +1 -1
  33. package/esm2020/lib/domain/internals/ThElement.mjs +1 -1
  34. package/esm2020/lib/domain/internals/ThGroup.mjs +2 -0
  35. package/esm2020/lib/es-table.module.mjs +74 -39
  36. package/fesm2015/esfaenza-es-table.mjs +903 -382
  37. package/fesm2015/esfaenza-es-table.mjs.map +1 -1
  38. package/fesm2020/esfaenza-es-table.mjs +892 -376
  39. package/fesm2020/esfaenza-es-table.mjs.map +1 -1
  40. package/lib/components/es-table/es_table.component.d.ts +91 -71
  41. package/lib/components/es-td/es_td.component.d.ts +7 -35
  42. package/lib/components/pipes/est-format.pipe.d.ts +10 -0
  43. package/lib/components/pipes/est-lookup.pipe.d.ts +13 -0
  44. package/lib/components/pipes/est-renderer.pipe.d.ts +15 -0
  45. package/lib/components/pipes/est-routerlink.pipe.d.ts +20 -0
  46. package/lib/components/pipes/est_editor.pipe.d.ts +15 -0
  47. package/lib/core/CopyPasteDetector.d.ts +2 -0
  48. package/lib/core/Logger.d.ts +10 -0
  49. package/lib/core/handlers/ColumnMetadataHandler.d.ts +1 -0
  50. package/lib/core/handlers/DynamicModeHandler.d.ts +13 -23
  51. package/lib/core/handlers/ExportHandler.d.ts +4 -0
  52. package/lib/core/handlers/SelectionHandler.d.ts +16 -3
  53. package/lib/core/handlers/UtilitiesHandler.d.ts +4 -1
  54. package/lib/directives/es_td.directive.d.ts +15 -1
  55. package/lib/directives/es_th.directive.d.ts +32 -1
  56. package/lib/domain/configuration/EsTableDefaultable.d.ts +1 -0
  57. package/lib/domain/externals/EsTableColumnsDefinition.d.ts +11 -8
  58. package/lib/domain/externals/ItemPropEditableReference.d.ts +4 -0
  59. package/lib/domain/externals/report/ReportColumn.d.ts +4 -0
  60. package/lib/domain/externals/report/ReportRow.d.ts +4 -0
  61. package/lib/domain/internals/EsTableColumn.d.ts +3 -1
  62. package/lib/domain/internals/PagerInfos.d.ts +13 -0
  63. package/lib/domain/internals/TdElement.d.ts +8 -0
  64. package/lib/domain/internals/ThElement.d.ts +1 -0
  65. package/lib/domain/internals/ThGroup.d.ts +10 -0
  66. package/lib/es-table.module.d.ts +26 -22
  67. package/package.json +12 -14
@@ -13,12 +13,15 @@ import { EsTableColumn } from "../../domain/internals/EsTableColumn";
13
13
  import { GroupPager } from "../../domain/internals/GroupPager";
14
14
  import { GroupRouteFragment } from "../../domain/internals/GroupRouteFragment";
15
15
  import { ThElement } from "../../domain/internals/ThElement";
16
+ import { PagerInfos } from "../../domain/internals/PagerInfos";
17
+ import { ThGroup } from "../../domain/internals/ThGroup";
16
18
  import { TdElement } from "../../domain/internals/TdElement";
17
19
  import { ItemsSelection } from '../../domain/externals/appsearch/ItemsSelection';
18
20
  import { Group } from "../../domain/externals/appsearch/Group";
19
21
  import { EsTableModelChange } from '../../domain/externals/EsTableModelChange';
20
22
  import { ItemPropEditableReference } from '../../domain/externals/ItemPropEditableReference';
21
23
  import { EsTableDefaultable } from '../../domain/configuration/EsTableDefaultable';
24
+ import { EsTd } from '../es-td/es_td.component';
22
25
  import { EsTdDirective } from '../../directives/es_td.directive';
23
26
  import { EsThDirective } from '../../directives/es_th.directive';
24
27
  import { EsTdEditorDirective } from '../../directives/es_td_editor.directive';
@@ -33,8 +36,8 @@ import { RowGroupingHandler } from "../../core/handlers/RowGroupingHandler";
33
36
  import { SelectionHandler } from "../../core/handlers/SelectionHandler";
34
37
  import { UtilitiesHandler } from "../../core/handlers/UtilitiesHandler";
35
38
  import { CopyPasteDetector } from '../../core/CopyPasteDetector';
39
+ import { Logger } from '../../core/Logger';
36
40
  import { Subject } from 'rxjs';
37
- import { EsTd } from '../es-td/es_td.component';
38
41
  import * as i0 from "@angular/core";
39
42
  /** Componente che permette di rappresentare una griglia di valori */
40
43
  export declare class EsTableComponent implements ControlValueAccessor, OnChanges {
@@ -51,6 +54,7 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
51
54
  private msgExts;
52
55
  private copyPasteDetector;
53
56
  private clipboardService;
57
+ private logger;
54
58
  /** @ignore */ export_H: ExportHandler;
55
59
  /** @ignore */ columnMetadata_H: ColumnMetadataHandler;
56
60
  /** @ignore */ dynamicMode_H: DynamicModeHandler;
@@ -62,7 +66,7 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
62
66
  /** @ignore */ private copySubscription;
63
67
  /** @ignore */ private pasteSubscription;
64
68
  /** @ignore */
65
- constructor(ngControl: NgControl, prefService: PreferencesService, deafults: EsTableDefaultable, locale: string, lc: LocalizationService, cdr: ChangeDetectorRef, utilities_H: UtilitiesHandler, utiExts: UtilityService, expExts: ExportService, dateExts: DateService, msgExts: MessageService, copyPasteDetector: CopyPasteDetector, clipboardService: ClipboardService);
69
+ constructor(ngControl: NgControl, prefService: PreferencesService, deafults: EsTableDefaultable, locale: string, lc: LocalizationService, cdr: ChangeDetectorRef, utilities_H: UtilitiesHandler, utiExts: UtilityService, expExts: ExportService, dateExts: DateService, msgExts: MessageService, copyPasteDetector: CopyPasteDetector, clipboardService: ClipboardService, logger: Logger);
66
70
  /** Subject utilizzato internamente lato EsTable per causare il Focus lato componente di Input */
67
71
  FocusSubject: Subject<void>;
68
72
  /** Timer che verrà impostato a **doubleClickBufferMs** per capire se è stato effettuato un click singolo o un doubleclick */
@@ -72,7 +76,10 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
72
76
  /** View finale su cui bindarsi lato Frontend, il tipo può essere IAppSearch<any> (per la **viewMode**), any[] (per l'**arrayMode**) */
73
77
  View: any;
74
78
  /** Modello da cui l'es-table mostra i pulsanti di paginazione in basso a destra */
75
- arrayPulsanti: any;
79
+ arrayPulsanti: {
80
+ val: number;
81
+ cssClass: string;
82
+ }[];
76
83
  /** Indica se l'es-table deve mostrare il check globale nell'header per fare il "seleziona tutto" */
77
84
  globalCheck: boolean;
78
85
  /** Tiene da conto l'ultimo elemento selezionato in modo da poter effettuare il SHIFT+CLICK */
@@ -92,9 +99,9 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
92
99
  boundSource: any[];
93
100
  /** Stessa cosa della **boundSource**, utilizzata come appoggio temporaneo interno */
94
101
  TMPBoundSource: any[];
95
- /** "Fetta" di oggetti utilizzata nell'endless scroll, ogni elemento di questo array è un blocchetto di 100 elementi */
102
+ /** @deprecated "Fetta" di oggetti utilizzata nell'endless scroll, ogni elemento di questo array è un blocchetto di 100 elementi */
96
103
  boundSubSources: any[];
97
- /** Questa funge da indicatore per gli slice inseriti, la lunghezza dovrebbe essere corrispondente a **boundSubSources** */
104
+ /** @deprecated Questa funge da indicatore per gli slice inseriti, la lunghezza dovrebbe essere corrispondente a **boundSubSources** */
98
105
  addedSlices: number[];
99
106
  /** Variabile che identifica il valore del "seleziona Tutto" nella paginazione */
100
107
  defaultAllPageOverride: number;
@@ -108,32 +115,24 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
108
115
  updateTimer: any;
109
116
  /** Impostata a true ogni volta che viene avviata una ricerca, e a false ogni volta che un nuovo valore viene ricevuto */
110
117
  researchInProgress: boolean;
118
+ /** Modello di appoggio temporaneo per i **RowTDs** */
119
+ TMPRowTDs: {
120
+ [context: string]: TdElement[];
121
+ };
111
122
  /** Modello rappresentante un dizionario di righe della tabella, con chiave l'hash e valore la lista di celle */
112
123
  RowTDs: {
113
124
  [context: string]: TdElement[];
114
125
  };
115
126
  /** Indica se **RowTDs** è un oggetto vuoto o meno */
116
127
  EmptyRowTds: boolean;
117
- /** Modello di appoggio temporaneo per i **RowTDs** */
118
- TMPRowTDs: {
119
- [context: string]: TdElement[];
120
- };
121
- /** Modello rappresentante un singolo th della tabella, generato in base alle configurazioni e agli oggetti ricevuti */
122
- RowTHs: ThElement[];
123
128
  /** Modello di appoggio temporaneo per i **RowTHs** */
124
129
  TMPRowTHs: ThElement[];
130
+ /** Modello rappresentante un singolo th della tabella, generato in base alle configurazioni e agli oggetti ricevuti */
131
+ RowTHs: ThElement[];
125
132
  /** Modello di appoggio temporaneo per i **RowThGroups** */
126
- TMPRowThGroups: {
127
- Span: number;
128
- Template: TemplateRef<any>;
129
- }[][];
133
+ TMPRowThGroups: ThGroup[][];
130
134
  /** Modello rappresentante un singolo header group della tabella. Questa lista è già ordinata e pronta per essere utilizzata in ngFor */
131
- RowThGroups: {
132
- Span: number;
133
- Template: TemplateRef<any>;
134
- }[][];
135
- /** Cache per i routerLink generati nelle tabelle dinamiche */
136
- DynamicTableRouterLinkCache: {};
135
+ RowThGroups: ThGroup[][];
137
136
  /**
138
137
  * Lista dei contesti. Un contesto non è altro che un hash particolare calcolato su un oggetto che identifica univocamente tale oggetto.
139
138
  *
@@ -144,6 +143,19 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
144
143
  OrderDirectives: string[];
145
144
  /** Codice dell'ultimo oggetto solezionato */
146
145
  lastSelectedItemID: any;
146
+ /**
147
+ * Decide se utilizzare o meno le CustomCells. Impostandolo a **true** l'es-table diventa in grado di gestire nativamente:
148
+ *
149
+ * 1) Ordinamento e visibilità delle colonne
150
+ *
151
+ * 2) Ordinamento dei dati
152
+ *
153
+ * 3) Modalità Gerarchica
154
+ *
155
+ * ecc...
156
+ * viene dedotto dal sistema in automatico
157
+ */
158
+ UseCustomCells: boolean;
147
159
  /**
148
160
  * Indica se oltre alle colonne dinamiche specifiche di un tipo di oggetto ci sono anche colonne dinamiche aggiunte dall'utente
149
161
  *
@@ -170,11 +182,11 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
170
182
  bodyRef: any;
171
183
  /** Query per recuperare le informazioni dell'header (punto della tabella dove vengono mostrate le intestazioni delle righe) */
172
184
  headerRef: any;
173
- /** Query per recuperare le informazioni sul raggruppamento degli header */
185
+ /** @deprecated Query per recuperare le informazioni sul raggruppamento degli header */
174
186
  headerGroupRef: any;
175
- /** Query per recuperare le informazioni sul raggruppamento di secondo livello degli header */
187
+ /** @deprecated Query per recuperare le informazioni sul raggruppamento di secondo livello degli header */
176
188
  secondaryHeaderGroupRef: any;
177
- /** Query per recuperare il campo di Input attuale. Dopo un doppio click lo becco e lo focusso appena termina la chagne detection */
189
+ /** Query per recuperare il campo di Input attuale. Dopo un doppio click lo becco e lo focusso appena termina la change detection */
178
190
  inputField: ElementRef;
179
191
  /** Opzioni extra che devono apparire nel Menù contestuale in alto a destra, richiamato dai 3 pallini verticali */
180
192
  CornerMenuOptions: CornerMenuOption[];
@@ -184,24 +196,12 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
184
196
  ColumnsPinnable: boolean;
185
197
  /** Indica se dev'essere disponibile il sistema di aggiornamento automatico */
186
198
  AutoUpdate: boolean;
187
- /**
188
- * @experimental Indica se dev'essere l'estable a gestire la ricerca, anche la prima.
189
- *
190
- * **ATTENZIONE: RICHIEDE MODIFICHE NON TRIVIALI ALLA PAGINA DI RICERCA CHE UTILIZZA QUESTO TIPO DI ES-TABLE. NON UTILIZZARE SE NON SI SA CIO' CHE SI STA FACENDO**
191
- **/
199
+ /** Indica l'altezza cablata che deve assumere la tabella. Es: "100px" | "100%" ... */
200
+ Height: string;
201
+ /** Indica il colore di sfondo dello spazio vuoto (non ricoperto da dati). Particolarmente utile da impostare in caso di **Height** diverso da null */
202
+ EmptySpaceBackgroundColor: string;
203
+ /** Indica se dev'essere l'estable a gestire la ricerca, anche la prima. **/
192
204
  EsTableHandledSearch: boolean;
193
- /**
194
- * Decide se utilizzare o meno le CustomCells. Impostandolo a **true** l'es-table diventa in grado di gestire nativamente:
195
- *
196
- * 1) Ordinamento e visibilità delle colonne
197
- *
198
- * 2) Ordinamento dei dati
199
- *
200
- * 3) Modalità Gerarchica
201
- *
202
- * ecc...
203
- */
204
- UseCustomCells: boolean;
205
205
  /** Permette di impostare l'altezza massima della tabella. Se null la dimensione si adatta al numero di elementi attualmente in visualizzazione */
206
206
  MaxHeight: number;
207
207
  /** Classi da applicare al contenitore della tabella */
@@ -250,9 +250,11 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
250
250
  * Nel formato "View" ha come parametro una callback con i dati completi da esportare (dato che di default la ricerca è paginata)
251
251
  */
252
252
  ExportFunction: any;
253
- /** Indica la presenza di raggruppamenti a livello di header */
253
+ /** Indica di esportare solo le colonne attualmente visibili della view */
254
+ ExportOnlyVisibleColumns: boolean;
255
+ /** @deprecated Indica la presenza di raggruppamenti a livello di header */
254
256
  HasHeaderGroup: boolean;
255
- /** Indica la presenza di raggruppamenti a livello del raggruppamento precedentemente esistente, chiaramente è insensata senza **HasHeaderGroup** */
257
+ /** @deprecated Indica la presenza di raggruppamenti a livello del raggruppamento precedentemente esistente, chiaramente è insensata senza **HasHeaderGroup** */
256
258
  HasSecondaryHeaderGroup: boolean;
257
259
  /** Indica se nascondere gli Header della tabella */
258
260
  HeaderHidden: boolean;
@@ -278,7 +280,7 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
278
280
  HiddenColumns: boolean;
279
281
  /** Permette di riordinare le colonne in base alle impostazioni effettuate dal Menù contestuale in alto a destra */
280
282
  ColumnsOrdering: boolean;
281
- /** Eventuale supporto alle ricerche applicate alla modalità Array */
283
+ /** @deprecated Eventuale supporto alle ricerche applicate alla modalità Array */
282
284
  SearchView: AppSearch<any>;
283
285
  /** Abilita o disabilita il sistema che permette di selezionare tutti gli elementi nella vista */
284
286
  SelectAll: boolean;
@@ -298,6 +300,8 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
298
300
  StartsExpanded: boolean;
299
301
  /** Indica se effettuare il salvataggio delle preferenze di ricerca */
300
302
  SavePreferences: boolean;
303
+ /** Allineamento di default per celle e headers */
304
+ DefaultAlignment: 'Left' | 'Right' | 'Center';
301
305
  /** Indica dove visualizzare le informazioni di paginazione, se sopra, sotto o in entrambi */
302
306
  PagingStyle: 'both' | 'top' | 'bottom';
303
307
  /** Indica dove visualizzare le informazioni di paginazione, se sopra, sotto o in entrambi */
@@ -334,6 +338,8 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
334
338
  onAbortRemoval: EventEmitter<any>;
335
339
  /** Evento richiamato alla modifica dei modelli bindati */
336
340
  onModelChange: EventEmitter<EsTableModelChange[]>;
341
+ /** Evento richiamato all'apertura del menù contestuale */
342
+ onOpenContextMenu: EventEmitter<void>;
337
343
  /** Evento richiamato quando si clicca su un opzione definita nelle **CornerMenuOptions** */
338
344
  onCornerAction: EventEmitter<{
339
345
  id: string;
@@ -423,18 +429,19 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
423
429
  };
424
430
  /** Chiamata reale al writeValue dopo il passaggio di **SearchThrottle** millisecondi. Solo modalità EsTableHandledSearch */
425
431
  private callTimeout;
432
+ /** Cache dei th piuttosto che ricalcolarseli di continuo */
433
+ private thsCache;
434
+ /** Indica quando la cache dei th è stata fillata almeno la prima volta */
435
+ private thsCacheSet;
436
+ /**
437
+ * Flag che, se **true**, per un giro di binding mantiene la visibilità impostata localmente, piuttosto che allineare alla View bindata.
438
+ * Usata per modificare in maniera programmatica la visibilità delle colonne dal metodo **setHeaderVisibility**,
439
+ *
440
+ * Disclaimer: **NON MODIFICARE**
441
+ **/
442
+ useLocalVisibility: boolean;
426
443
  /** Opzioni di paginazione */
427
- PagerOptions: {
428
- PagerCount: number;
429
- ShowCount: boolean;
430
- ShowPaging: boolean;
431
- UsesView: boolean;
432
- ShowButtons: boolean;
433
- ShowPagingOptions: boolean;
434
- View: any;
435
- Ready: boolean;
436
- Searches: 'items' | 'groups';
437
- };
444
+ PagerOptions: PagerInfos;
438
445
  /** @ignore */
439
446
  ngOnInit(): void;
440
447
  /** @ignore */
@@ -454,7 +461,15 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
454
461
  /** @ignore */
455
462
  writeValue(obj: any, throttle?: boolean): Promise<void>;
456
463
  /** Funzione di trackby per il body che dovrebbe evitare il 90% delle change detection */
457
- bodyTrackBy: (index: number, item: any) => any;
464
+ bodyTrackBy: (_: number, item: any) => any;
465
+ /** Funzione di trackby generica per tutti gli oggetti che hanno il campo id */
466
+ idTrackBy: (_: number, item: any) => any;
467
+ /** Funzione di trackby generica per tutti gli oggetti che hanno il campo PropertyName */
468
+ PropertyNameTrackBy: (_: number, item: any) => any;
469
+ /** Funzione di trackby generica per tutti gli oggetti che hanno il campo ID */
470
+ IDTrackBy: (_: number, item: any) => any;
471
+ /** Funzione di trackby generica per tutti gli oggetti che hanno il campo ID */
472
+ valTrackBy: (_: number, item: any) => any;
458
473
  /**
459
474
  * Successivamente al bind del nuovo input questa funzione si occupa di finalizzare tutti i parametri di funzionamento dell'es-table
460
475
  * in base a Input - Modello, e qualsiasi altra cosa possa servire
@@ -645,16 +660,22 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
645
660
  */
646
661
  internalWriteValue(): void;
647
662
  /** Metodo eventualmente richiamabile anche dal componente esterno che permette di forzare un refresh della tabella */
648
- forceRefresh(): void;
663
+ forceRefresh(relaunchSearch?: boolean): void;
664
+ /**
665
+ * Imposta la visibilità di un header e di eventuali header collegati se questo header è un gruppo, dopodiché aggiorna l'es-table
666
+ *
667
+ * @param {string} groupOrHeader Header di cui settare la visibilità
668
+ * @param {boolean} visibility Visibilità da impostare
669
+ **/
670
+ setHeaderVisibility(groupOrHeader: string, visibility: boolean, refresh?: boolean, relaunchSearch?: boolean): void;
649
671
  /**
650
672
  * Funzione che in base ai click su una cella capisce se sto effettuando un'operazione di selezione o se sto entrando nell'edit di una cella con un doppio click
651
673
  *
652
674
  * @param {any} $event Evento nativo javascript
653
675
  * @param {TdElement} rowItem Riferimento a binder della riga
654
676
  * @param {any} item Item che rappresenta il contesto su cui è stato effettuato un click
655
- * @param {number} rowIndex Indice della riga
656
677
  */
657
- dbClickEditOrSingleClickRowSelection($event: any, rowItem: TdElement, item: any, rowIndex: number): void;
678
+ dbClickEditOrSingleClickRowSelection($event: MouseEvent, rowItem: TdElement, item: any): void;
658
679
  /** Evento che gestisce il comando "Copia" buttando i valori selezionati nella clipboard in base al loro tipo */
659
680
  private handleCopy;
660
681
  /** Evento che gestisce il comando "Incolla" prendendo i dati della clipboard e applicandoli al range di selezione attuale in base al tipo delle celle sotto */
@@ -670,6 +691,10 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
670
691
  * @param {boolean} internalCall Indica se la chiamata a questa funzione è interna: permette di skippare i check sulle CustomCells
671
692
  */
672
693
  handleRowClick($event: any, item: any, selection: boolean, internalCall?: boolean): boolean;
694
+ /**
695
+ * Gestione del click destro sull'es-table
696
+ */
697
+ onRightClick(): void;
673
698
  /**
674
699
  * La modifica dell'utente è iniziata. Si imposta la variabile relativa a "true" in modo da mostrare l'input di testo
675
700
  *
@@ -687,23 +712,18 @@ export declare class EsTableComponent implements ControlValueAccessor, OnChanges
687
712
  * @param {number} columnIndex Indice della colonna su cui è avvenuta la modifica
688
713
  */
689
714
  finalizeUserEdit(rowItem: TdElement, item: any, columnIndex: number): void;
690
- getSelected(source: {
691
- id: string;
692
- description: string;
693
- }[], value: string): {
694
- id: string;
695
- description: string;
696
- };
697
715
  private mouseIsDown;
716
+ private rangeSelected;
717
+ private rangeStartWasIgnored;
698
718
  private firstCoordinates;
699
- mousedown(event: MouseEvent, rowItem: any, item: any): void;
719
+ mousedown(event: MouseEvent, rowItem: any, _: any): void;
700
720
  mouseenter(event: MouseEvent): void;
701
- mouseup(event: any): void;
702
- private EsTdsList;
721
+ mouseup(event: MouseEvent): void;
722
+ private EsTdsCache;
703
723
  getCellReference(object: any, column: string): EsTd;
704
724
  registerCell(event: EsTdReference): void;
705
- static ɵfac: i0.ɵɵFactoryDeclaration<EsTableComponent, [{ optional: true; self: true; }, { optional: true; }, { optional: true; }, { optional: true; }, null, null, null, null, null, null, null, null, null]>;
706
- static ɵcmp: i0.ɵɵComponentDeclaration<EsTableComponent, "es-table", never, { "EsTableTemplate": "EsTableTemplate"; "CornerMenuOptions": "CornerMenuOptions"; "ColumnsResizable": "ColumnsResizable"; "ColumnsPinnable": "ColumnsPinnable"; "AutoUpdate": "AutoUpdate"; "EsTableHandledSearch": "EsTableHandledSearch"; "UseCustomCells": "UseCustomCells"; "MaxHeight": "MaxHeight"; "ContainerClass": "ContainerClass"; "XLSXExport": "XLSXExport"; "CSVExport": "CSVExport"; "AllSearch": "AllSearch"; "HighCellDensity": "HighCellDensity"; "Selection": "Selection"; "ShowLoadingOnBootstrap": "ShowLoadingOnBootstrap"; "Removal": "Removal"; "RemovalCondition": "RemovalCondition"; "Export": "Export"; "ShiftClick": "ShiftClick"; "CountLabel": "CountLabel"; "HidePaging": "HidePaging"; "HidePagingCount": "HidePagingCount"; "HidePagingButtons": "HidePagingButtons"; "ContextMenu": "ContextMenu"; "ExportFileName": "ExportFileName"; "TableClass": "TableClass"; "ExportFunction": "ExportFunction"; "HasHeaderGroup": "HasHeaderGroup"; "HasSecondaryHeaderGroup": "HasSecondaryHeaderGroup"; "HeaderHidden": "HeaderHidden"; "BodyHidden": "BodyHidden"; "SelectionDisabled": "SelectionDisabled"; "SingleSelection": "SingleSelection"; "RowClassAssigner": "RowClassAssigner"; "OrderByColumn": "OrderByColumn"; "MultipleOrderingDirectives": "MultipleOrderingDirectives"; "HiddenColumns": "HiddenColumns"; "ColumnsOrdering": "ColumnsOrdering"; "SearchView": "SearchView"; "SelectAll": "SelectAll"; "UseArrayModePaging": "UseArrayModePaging"; "DynamicRowColumnsDefinition": "DynamicRowColumnsDefinition"; "DynamicOperations": "DynamicOperations"; "Hierarchy": "Hierarchy"; "ParentKey": "ParentKey"; "OwnKey": "OwnKey"; "StartsExpanded": "StartsExpanded"; "SavePreferences": "SavePreferences"; "PagingStyle": "PagingStyle"; "RowGroupingPagingStyle": "RowGroupingPagingStyle"; "ItemSourceProperty": "ItemSourceProperty"; "UseSelectionCache": "UseSelectionCache"; "ShowItemGroupsColumns": "ShowItemGroupsColumns"; "Editable": "Editable"; "RangeSelection": "RangeSelection"; "SearchThrottle": "SearchThrottle"; "ArraymodeItemsPerPage": "ArraymodeItemsPerPage"; }, { "onOrderChanged": "onOrderChanged"; "onSearchRequest": "onSearchRequest"; "onSelectionChanged": "onSelectionChanged"; "onRemoval": "onRemoval"; "onAbortRemoval": "onAbortRemoval"; "onModelChange": "onModelChange"; "onCornerAction": "onCornerAction"; "onDynamicOperation": "onDynamicOperation"; }, ["bodyRef", "headerRef", "headerGroupRef", "secondaryHeaderGroupRef", "EsTdEditorDirectives", "EsTdsDirective", "EsThsDirective"], never, false>;
725
+ static ɵfac: i0.ɵɵFactoryDeclaration<EsTableComponent, [{ optional: true; self: true; }, { optional: true; }, { optional: true; }, { optional: true; }, null, null, null, null, null, null, null, null, null, null]>;
726
+ static ɵcmp: i0.ɵɵComponentDeclaration<EsTableComponent, "es-table", never, { "EsTableTemplate": "EsTableTemplate"; "CornerMenuOptions": "CornerMenuOptions"; "ColumnsResizable": "ColumnsResizable"; "ColumnsPinnable": "ColumnsPinnable"; "AutoUpdate": "AutoUpdate"; "Height": "Height"; "EmptySpaceBackgroundColor": "EmptySpaceBackgroundColor"; "EsTableHandledSearch": "EsTableHandledSearch"; "MaxHeight": "MaxHeight"; "ContainerClass": "ContainerClass"; "XLSXExport": "XLSXExport"; "CSVExport": "CSVExport"; "AllSearch": "AllSearch"; "HighCellDensity": "HighCellDensity"; "Selection": "Selection"; "ShowLoadingOnBootstrap": "ShowLoadingOnBootstrap"; "Removal": "Removal"; "RemovalCondition": "RemovalCondition"; "Export": "Export"; "ShiftClick": "ShiftClick"; "CountLabel": "CountLabel"; "HidePaging": "HidePaging"; "HidePagingCount": "HidePagingCount"; "HidePagingButtons": "HidePagingButtons"; "ContextMenu": "ContextMenu"; "ExportFileName": "ExportFileName"; "TableClass": "TableClass"; "ExportFunction": "ExportFunction"; "ExportOnlyVisibleColumns": "ExportOnlyVisibleColumns"; "HasHeaderGroup": "HasHeaderGroup"; "HasSecondaryHeaderGroup": "HasSecondaryHeaderGroup"; "HeaderHidden": "HeaderHidden"; "BodyHidden": "BodyHidden"; "SelectionDisabled": "SelectionDisabled"; "SingleSelection": "SingleSelection"; "RowClassAssigner": "RowClassAssigner"; "OrderByColumn": "OrderByColumn"; "MultipleOrderingDirectives": "MultipleOrderingDirectives"; "HiddenColumns": "HiddenColumns"; "ColumnsOrdering": "ColumnsOrdering"; "SearchView": "SearchView"; "SelectAll": "SelectAll"; "UseArrayModePaging": "UseArrayModePaging"; "DynamicRowColumnsDefinition": "DynamicRowColumnsDefinition"; "DynamicOperations": "DynamicOperations"; "Hierarchy": "Hierarchy"; "ParentKey": "ParentKey"; "OwnKey": "OwnKey"; "StartsExpanded": "StartsExpanded"; "SavePreferences": "SavePreferences"; "DefaultAlignment": "DefaultAlignment"; "PagingStyle": "PagingStyle"; "RowGroupingPagingStyle": "RowGroupingPagingStyle"; "ItemSourceProperty": "ItemSourceProperty"; "UseSelectionCache": "UseSelectionCache"; "ShowItemGroupsColumns": "ShowItemGroupsColumns"; "Editable": "Editable"; "RangeSelection": "RangeSelection"; "SearchThrottle": "SearchThrottle"; "ArraymodeItemsPerPage": "ArraymodeItemsPerPage"; }, { "onOrderChanged": "onOrderChanged"; "onSearchRequest": "onSearchRequest"; "onSelectionChanged": "onSelectionChanged"; "onRemoval": "onRemoval"; "onAbortRemoval": "onAbortRemoval"; "onModelChange": "onModelChange"; "onOpenContextMenu": "onOpenContextMenu"; "onCornerAction": "onCornerAction"; "onDynamicOperation": "onDynamicOperation"; }, ["bodyRef", "headerRef", "headerGroupRef", "secondaryHeaderGroupRef", "EsTdEditorDirectives", "EsTdsDirective", "EsThsDirective"], never, false>;
707
727
  }
708
728
  export declare class EsTdReference {
709
729
  id: string;
@@ -1,26 +1,10 @@
1
- import { Renderer2, ElementRef, EventEmitter, ChangeDetectorRef } from "@angular/core";
2
- import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
1
+ import { EventEmitter, ChangeDetectorRef } from "@angular/core";
3
2
  import * as i0 from "@angular/core";
4
3
  /** Componente rappresentante una singola cella del body della tabella */
5
4
  export declare class EsTd {
6
5
  private cdr;
7
- private myself;
8
- private renderer;
9
- protected sanitizer: DomSanitizer;
10
6
  /** Id della cella, dev'essere lo stesso della colonna **EsTh** relativa */
11
7
  ID: string;
12
- /** Indica se è una cella interna (rigenerata programmaticamente) o no */
13
- Internal?: boolean;
14
- /** RouterLink qualora il click su questa cella debba navigare da qualche parte */
15
- RouterLink?: any;
16
- /** Valore da mostrare all'interno della cella. Se omesso verrà proiettato il contenuto dal template in cui è stata usata */
17
- Display?: string;
18
- /** Template Angular da istanziare per questo TD */
19
- Template?: any;
20
- /** Classi da applicare alla cella */
21
- Class?: string;
22
- /** Contenuto da mostrare proiettato dal componente padre */
23
- Content?: SafeHtml;
24
8
  /** Contesto dell'oggetto a cui si riferisce il dato visualizzato. Contiene l'hash dell'oggetto in questione */
25
9
  Context: string;
26
10
  /** Quando questa cella viene generata questo evento permette di dire "ehi, sono nato!" */
@@ -29,26 +13,14 @@ export declare class EsTd {
29
13
  hash: string;
30
14
  self: EsTd;
31
15
  }>;
32
- /** Indicazioni sulla visibilità della cella */
33
- private _Visible?;
16
+ /** Errore attualmente presente sulla cella */
17
+ ValidationError: string;
34
18
  /** @ignore */
35
- constructor(cdr: ChangeDetectorRef, myself: ElementRef, renderer: Renderer2, sanitizer: DomSanitizer);
36
- /**
37
- * Imposta la visibilità o meno della cella, si traduce nell'applicazione o rimozione della classe **app-display-none**
38
- *
39
- * @param {boolean} expression Indicazione della visibilità
40
- */
41
- set Visible(expression: boolean);
42
- /**
43
- * Restituisce lo stato di Visibilità della cella in oggetto
44
- *
45
- * @returns {boolean} **true** se visibile, **false** altrimenti
46
- */
47
- get Visible(): boolean;
19
+ constructor(cdr: ChangeDetectorRef);
48
20
  /** @ignore */
49
21
  ngAfterViewInit(): void;
50
- ValidationError: string;
51
- validationError(isError: boolean, error?: string): void;
22
+ /** Api per impostare un "errore" su questa cella in maniera programmatica */
23
+ validationError(error?: string): void;
52
24
  static ɵfac: i0.ɵɵFactoryDeclaration<EsTd, never>;
53
- static ɵcmp: i0.ɵɵComponentDeclaration<EsTd, "[es-td]", never, { "ID": "es-td"; "Internal": "Internal"; "RouterLink": "RouterLink"; "Display": "Display"; "Template": "Template"; "Context": "Context"; "Visible": "Visible"; }, { "onCellGeneration": "onCellGeneration"; }, never, ["*"], false>;
25
+ static ɵcmp: i0.ɵɵComponentDeclaration<EsTd, "[es-td]", never, { "ID": "es-td"; "Context": "Context"; }, { "onCellGeneration": "onCellGeneration"; }, never, ["*"], false>;
54
26
  }
@@ -0,0 +1,10 @@
1
+ import { PipeTransform } from "@angular/core";
2
+ import { DateService } from "@esfaenza/extensions";
3
+ import * as i0 from "@angular/core";
4
+ export declare class EstFormatPipe implements PipeTransform {
5
+ private dates;
6
+ constructor(dates: DateService);
7
+ transform(value: string, format: string): string;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<EstFormatPipe, never>;
9
+ static ɵpipe: i0.ɵɵPipeDeclaration<EstFormatPipe, "est_format", false>;
10
+ }
@@ -0,0 +1,13 @@
1
+ import { PipeTransform } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ export declare class EstLookupPipe implements PipeTransform {
4
+ transform(value: string, source: {
5
+ id: string;
6
+ description: string;
7
+ }[]): {
8
+ id: string;
9
+ description: string;
10
+ };
11
+ static ɵfac: i0.ɵɵFactoryDeclaration<EstLookupPipe, never>;
12
+ static ɵpipe: i0.ɵɵPipeDeclaration<EstLookupPipe, "est_lookup", false>;
13
+ }
@@ -0,0 +1,15 @@
1
+ import { PipeTransform, QueryList } from "@angular/core";
2
+ import { Logger } from "../../core/Logger";
3
+ import { EsTdDirective } from "../../directives/es_td.directive";
4
+ import * as i0 from "@angular/core";
5
+ export declare class EstRendererPipe implements PipeTransform {
6
+ private logger;
7
+ constructor(logger: Logger);
8
+ transform(propName: string, params: {
9
+ name: string;
10
+ src: QueryList<EsTdDirective>;
11
+ fallback: any;
12
+ }): any;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<EstRendererPipe, never>;
14
+ static ɵpipe: i0.ɵɵPipeDeclaration<EstRendererPipe, "est_renderer", false>;
15
+ }
@@ -0,0 +1,20 @@
1
+ import { PipeTransform } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ export declare class EstRouterLinkPipe implements PipeTransform {
4
+ /** Cache per i routerLink generati nelle tabelle dinamiche */
5
+ routerLinksCache: {};
6
+ transform(item: any, path: string, parameters: string[]): any;
7
+ /**
8
+ * Crea un router link
9
+ *
10
+ * @param {string} path Path su cui navigare con eventuali parametri riferiti all'oggetto cotnestuale come {0}, {1}, ecc...
11
+ * @param {string[]} pars Lista posizionale delle proprietà a cui bindare i riferimenti del parametro **path**
12
+ * Es. Il valore dela proprietà all'indice 0 di questo array verrà sostituita al valore {0} del parametro **path**
13
+ * @param {any} item Oggetto collegato a questo contesto. Può essere un oggetto generico (con "properties") o un oggetto ben definito
14
+ *
15
+ * @returns {any} Router link generato in base al parametri
16
+ */
17
+ private getRouterLink;
18
+ static ɵfac: i0.ɵɵFactoryDeclaration<EstRouterLinkPipe, never>;
19
+ static ɵpipe: i0.ɵɵPipeDeclaration<EstRouterLinkPipe, "est_routerlink", false>;
20
+ }
@@ -0,0 +1,15 @@
1
+ import { PipeTransform, QueryList } from "@angular/core";
2
+ import { Logger } from "../../core/Logger";
3
+ import { EsTdEditorDirective } from "../../directives/es_td_editor.directive";
4
+ import * as i0 from "@angular/core";
5
+ export declare class EstEditorPipe implements PipeTransform {
6
+ private logger;
7
+ constructor(logger: Logger);
8
+ transform(propName: string, params: {
9
+ name: string;
10
+ src: QueryList<EsTdEditorDirective>;
11
+ fallback: any;
12
+ }): any;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<EstEditorPipe, never>;
14
+ static ɵpipe: i0.ɵɵPipeDeclaration<EstEditorPipe, "est_editor", false>;
15
+ }
@@ -6,6 +6,8 @@ export declare class CopyPasteDetector {
6
6
  OnCopy: Subject<void>;
7
7
  /** Dispatcher dell' Incolla */
8
8
  OnPaste: Subject<void>;
9
+ /** Riferimento all'estable attiva per evitare di spammare copia incolla dove non servono */
10
+ ActiveEstReference: any;
9
11
  /** @ignore */
10
12
  constructor();
11
13
  static ɵfac: i0.ɵɵFactoryDeclaration<CopyPasteDetector, never>;
@@ -0,0 +1,10 @@
1
+ import * as i0 from "@angular/core";
2
+ /** Classe che fornisce dei metodi di estensione in grado di riconoscere e dispatchare l'evento copia e incolla lanciato su una pagina web */
3
+ export declare class Logger {
4
+ debugMode: boolean;
5
+ /** @ignore */
6
+ constructor(debugMode: boolean);
7
+ log(text: string): void;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<Logger, [{ optional: true; }]>;
9
+ static ɵprov: i0.ɵɵInjectableDeclaration<Logger>;
10
+ }
@@ -54,6 +54,7 @@ export declare class ColumnMetadataHandler {
54
54
  * dell'allineamento delle informazioni fra le colonne calcolate internamente e le informazioni sulle colonne che arrivano dall'AppSearch
55
55
  *
56
56
  * @param {AppSearch<any>} view AppSearch da utilizzare per questa operazione
57
+ * @param {boolean} useLocalVisibility Indica di utilizzare le impostazioni di visibilità locali senza allinearle alla view
57
58
  */
58
59
  alignColumnsIfLoadedView(view: AppSearch<any>): void;
59
60
  /**
@@ -1,32 +1,22 @@
1
1
  import { EsTableComponent } from "../../components/es-table/es_table.component";
2
- import { GenericItem } from "../../domain/externals/appsearch/GenericItem";
2
+ import { EsTdDirective } from "../../directives/es_td.directive";
3
+ import { EsThDirective } from "../../directives/es_th.directive";
3
4
  /** Classe contenente le gestioni particolari della modalità dinamica dell'es-table */
4
5
  export declare class DynamicModeHandler {
5
6
  private est;
6
7
  /** @ignore Costruttore*/
7
8
  constructor(est: EsTableComponent);
8
- /**
9
- * Metodo di supporto alla creazione di un router link parametrizzato all'oggetto corrente utilizzato nella modalità dinamica
10
- *
11
- * @param {string} path Path su cui navigare con eventuali parametri riferiti all'oggetto cotnestuale come {0}, {1}, ecc...
12
- * @param {string[]} parameterProps Lista posizionale delle proprietà a cui bindare i riferimenti del parametro **path**
13
- * Es. Il valore dela proprietà all'indice 0 di questo array verrà sostituita al valore {0} del parametro **path**
14
- * @param {GenericItem} item Oggetto generico collegato a questo contesto
15
- *
16
- * @returns {any} Router link generato in base al parametri
17
- */
18
- generateRouterLink(path: string, parameterProps: string[], item: GenericItem): any;
19
- /**
20
- * Crea un router link
21
- *
22
- * @param {string} path Path su cui navigare con eventuali parametri riferiti all'oggetto cotnestuale come {0}, {1}, ecc...
23
- * @param {string[]} pars Lista posizionale delle proprietà a cui bindare i riferimenti del parametro **path**
24
- * Es. Il valore dela proprietà all'indice 0 di questo array verrà sostituita al valore {0} del parametro **path**
25
- * @param {GenericItem} item Oggetto generico collegato a questo contesto
26
- *
27
- * @returns {any} Router link generato in base al parametri
28
- */
29
- private getRouterLink;
30
9
  /** Se non ho l'Input **DynamicRowColumnsDefinition** in modalità dinamica lo riempio con il default nome della colonna = testo della colonna */
31
10
  eventuallyReviewDynamicColumns(): void;
11
+ /** Genera partendo dalle **DynamicRowColumnsDefinition** la lista di **EsThDirective** e **EsTdDirective** che servono per la tabella */
12
+ emitThsAndTdsBasedOnDynamicDefinition(): {
13
+ ths: EsThDirective[];
14
+ tds: EsTdDirective[];
15
+ };
16
+ /** @ignore Helper */
17
+ private getThFromOperation;
18
+ private getTdFromOperation;
19
+ private getThFromColumnDef;
20
+ /** @ignore Helper */
21
+ private getTdFromColumnDef;
32
22
  }
@@ -17,6 +17,10 @@ export declare class ExportHandler {
17
17
  * @param {string} format Formato di esportazione. Letto solo in modalità Report della tabella
18
18
  */
19
19
  tryExport(format?: string): void;
20
+ /** Effettua l'esportazione in file CSV, va a sostituire quel coso inutile di @ctrl/ngx-csv */
21
+ private exportCSV;
22
+ /** Generazione specifica del CSV */
23
+ private convertToCSV;
20
24
  /** Effettua l'esportazione del file Excel basandosi sul modulo **ExcelJS**, sugli header **this.est.headers** e sui dati **this.est.data** */
21
25
  private exportExcel;
22
26
  /**
@@ -175,7 +175,17 @@ export declare class SelectionHandler {
175
175
  * @param {number} column Indice della colonna preso banalmente dall'ngIf sui thElement
176
176
  * @param {{ row: number, column: number }} firstSelectionOverride Permette di overridare il primo elemento selezionato
177
177
  */
178
- singleCellSelection(event: any, row: number, column: number, firstSelectionOverride?: {
178
+ singleCellSelection(event: {
179
+ view: any;
180
+ range: boolean;
181
+ }, row: number, column: number, firstSelectionOverride?: {
182
+ row: number;
183
+ column: number;
184
+ }): void;
185
+ setSelectionStatusBorders(from: {
186
+ row: number;
187
+ column: number;
188
+ }, to: {
179
189
  row: number;
180
190
  column: number;
181
191
  }): void;
@@ -184,7 +194,7 @@ export declare class SelectionHandler {
184
194
  *
185
195
  * @param {{row: number, column: number}} exclusion Coordinata da escludere nella pulizia
186
196
  */
187
- clearSelectionStatus(exclusion?: {
197
+ clearSelectionStatusExcluding(exclusion?: {
188
198
  row: number;
189
199
  column: number;
190
200
  }): void;
@@ -199,7 +209,10 @@ export declare class SelectionHandler {
199
209
  *
200
210
  * @param {any} event Evento nativo Javascript
201
211
  */
202
- clearTextSelection(event: any): boolean;
212
+ clearTextSelection(event: {
213
+ view: any;
214
+ range: boolean;
215
+ }): boolean;
203
216
  /**
204
217
  * Data la matrice di selezione generata dal metodo **getSelectionStatusSelection** genera la strigna vera e propria da copiare nella Clipboard
205
218
  *
@@ -34,7 +34,10 @@ export declare class UtilitiesHandler {
34
34
  *
35
35
  * @returns {any[]} Pseudo-array di pulsanti a cui ci si può bindare lato HTML
36
36
  */
37
- getPagesArray(maxBtns: number, page: number, lastPage: number, actualCount?: number, ipp?: number): any[];
37
+ getPagesArray(maxBtns: number, page: number, lastPage: number, actualCount?: number, ipp?: number): {
38
+ val: number;
39
+ cssClass: string;
40
+ }[];
38
41
  /**
39
42
  * Calcola l'hash di un oggetto qualsiasi
40
43
  *