@esfaenza/es-table 13.3.2 → 13.4.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 (81) hide show
  1. package/esm2020/lib/components/es-table/es_table.component.loc.mjs +7 -5
  2. package/esm2020/lib/components/es-table/es_table.component.mjs +547 -117
  3. package/esm2020/lib/components/es-table-template/es_table_template.component.mjs +21 -0
  4. package/esm2020/lib/components/es-td/es_td.component.mjs +23 -55
  5. package/esm2020/lib/components/es-th/es_th.component.mjs +5 -5
  6. package/esm2020/lib/components/pager/table_pager.component.loc.mjs +3 -3
  7. package/esm2020/lib/components/pager/table_pager.component.mjs +5 -5
  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 +28 -0
  14. package/esm2020/lib/core/Logger.mjs +26 -0
  15. package/esm2020/lib/core/handlers/ColumnMetadataHandler.mjs +75 -35
  16. package/esm2020/lib/core/handlers/DynamicModeHandler.mjs +80 -37
  17. package/esm2020/lib/core/handlers/ExportHandler.mjs +53 -14
  18. package/esm2020/lib/core/handlers/ItemsHandler.mjs +13 -5
  19. package/esm2020/lib/core/handlers/ReportModeHandler.mjs +15 -2
  20. package/esm2020/lib/core/handlers/SelectionHandler.mjs +267 -1
  21. package/esm2020/lib/core/handlers/UtilitiesHandler.mjs +7 -8
  22. package/esm2020/lib/directives/es_td.directive.mjs +24 -6
  23. package/esm2020/lib/directives/es_td_editor.directive.mjs +24 -0
  24. package/esm2020/lib/directives/es_th.directive.mjs +39 -9
  25. package/esm2020/lib/domain/configuration/EsTableDefaultable.mjs +1 -1
  26. package/esm2020/lib/domain/externals/EsTableColumnsDefinition.mjs +39 -22
  27. package/esm2020/lib/domain/externals/EsTableModelChange.mjs +19 -0
  28. package/esm2020/lib/domain/externals/ItemPropEditableReference.mjs +4 -0
  29. package/esm2020/lib/domain/externals/appsearch/AppSearch.mjs +33 -14
  30. package/esm2020/lib/domain/externals/report/ReportColumn.mjs +1 -1
  31. package/esm2020/lib/domain/externals/report/ReportRow.mjs +1 -1
  32. package/esm2020/lib/domain/internals/EsTableColumn.mjs +3 -2
  33. package/esm2020/lib/domain/internals/GroupPager.mjs +4 -3
  34. package/esm2020/lib/domain/internals/PagerInfos.mjs +15 -0
  35. package/esm2020/lib/domain/internals/TdElement.mjs +1 -1
  36. package/esm2020/lib/domain/internals/ThElement.mjs +1 -1
  37. package/esm2020/lib/domain/internals/ThGroup.mjs +2 -0
  38. package/esm2020/lib/domain/types.mjs +2 -0
  39. package/esm2020/lib/es-table.module.mjs +78 -37
  40. package/esm2020/public-api.mjs +6 -1
  41. package/fesm2015/esfaenza-es-table.mjs +1581 -361
  42. package/fesm2015/esfaenza-es-table.mjs.map +1 -1
  43. package/fesm2020/esfaenza-es-table.mjs +1560 -358
  44. package/fesm2020/esfaenza-es-table.mjs.map +1 -1
  45. package/lib/components/es-table/es_table.component.d.ts +173 -80
  46. package/lib/components/es-table-template/es_table_template.component.d.ts +18 -0
  47. package/lib/components/es-td/es_td.component.d.ts +14 -34
  48. package/lib/components/pipes/est-format.pipe.d.ts +10 -0
  49. package/lib/components/pipes/est-lookup.pipe.d.ts +13 -0
  50. package/lib/components/pipes/est-renderer.pipe.d.ts +15 -0
  51. package/lib/components/pipes/est-routerlink.pipe.d.ts +20 -0
  52. package/lib/components/pipes/est_editor.pipe.d.ts +15 -0
  53. package/lib/core/CopyPasteDetector.d.ts +15 -0
  54. package/lib/core/Logger.d.ts +10 -0
  55. package/lib/core/handlers/ColumnMetadataHandler.d.ts +8 -0
  56. package/lib/core/handlers/DynamicModeHandler.d.ts +13 -23
  57. package/lib/core/handlers/ExportHandler.d.ts +4 -0
  58. package/lib/core/handlers/ItemsHandler.d.ts +1 -1
  59. package/lib/core/handlers/ReportModeHandler.d.ts +9 -0
  60. package/lib/core/handlers/SelectionHandler.d.ts +90 -0
  61. package/lib/core/handlers/UtilitiesHandler.d.ts +4 -1
  62. package/lib/directives/es_td.directive.d.ts +18 -2
  63. package/lib/directives/es_td_editor.directive.d.ts +14 -0
  64. package/lib/directives/es_th.directive.d.ts +43 -11
  65. package/lib/domain/configuration/EsTableDefaultable.d.ts +1 -0
  66. package/lib/domain/externals/EsTableColumnsDefinition.d.ts +48 -23
  67. package/lib/domain/externals/EsTableModelChange.d.ts +17 -0
  68. package/lib/domain/externals/ItemPropEditableReference.d.ts +34 -0
  69. package/lib/domain/externals/appsearch/AppSearch.d.ts +15 -2
  70. package/lib/domain/externals/report/ReportColumn.d.ts +4 -0
  71. package/lib/domain/externals/report/ReportRow.d.ts +4 -0
  72. package/lib/domain/internals/EsTableColumn.d.ts +4 -1
  73. package/lib/domain/internals/GroupPager.d.ts +3 -2
  74. package/lib/domain/internals/PagerInfos.d.ts +13 -0
  75. package/lib/domain/internals/TdElement.d.ts +18 -5
  76. package/lib/domain/internals/ThElement.d.ts +6 -0
  77. package/lib/domain/internals/ThGroup.d.ts +10 -0
  78. package/lib/domain/types.d.ts +2 -0
  79. package/lib/es-table.module.d.ts +26 -19
  80. package/package.json +9 -10
  81. package/public-api.d.ts +5 -0
@@ -0,0 +1,15 @@
1
+ import { Subject } from "rxjs";
2
+ import * as i0 from "@angular/core";
3
+ /** Classe che fornisce dei metodi di estensione in grado di riconoscere e dispatchare l'evento copia e incolla lanciato su una pagina web */
4
+ export declare class CopyPasteDetector {
5
+ /** Dispatcher del Copia */
6
+ OnCopy: Subject<void>;
7
+ /** Dispatcher dell' Incolla */
8
+ OnPaste: Subject<void>;
9
+ /** Riferimento all'estable attiva per evitare di spammare copia incolla dove non servono */
10
+ ActiveEstReference: any;
11
+ /** @ignore */
12
+ constructor();
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<CopyPasteDetector, never>;
14
+ static ɵprov: i0.ɵɵInjectableDeclaration<CopyPasteDetector>;
15
+ }
@@ -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
+ }
@@ -24,6 +24,12 @@ export declare class ColumnMetadataHandler {
24
24
  * @param {'DESC' | 'ASC'} order Nuovo ordine selezionato per la colonna
25
25
  */
26
26
  handleTHOrderChange(id: string, order: 'DESC' | 'ASC'): void;
27
+ /**
28
+ * Registra le preference relative alla view passata come parametro
29
+ *
30
+ * @param {any} castedView View di cui salvare colonne e ordinamento colonne
31
+ */
32
+ registerViewPreferences(castedView: AppSearch<any>): boolean;
27
33
  /**
28
34
  * Partendo dagli **EsThs** estrappolo la lista di **EsTableColumn** che questa tabella dovrà eventualmente gestire per Visibilità e Ordine
29
35
  *
@@ -32,6 +38,7 @@ export declare class ColumnMetadataHandler {
32
38
  * @param {EsThDirective[]} ths Colonne della tabella
33
39
  */
34
40
  reviewColumnsList(ths: EsThDirective[]): void;
41
+ /** In caso siano configurati dei th "Multi" (vedere la descrizione del campo **thMulti** di **EsThDirective**) questo metodo li "srotola" in tutti i th/td che devono effettivamente diventare */
35
42
  expandMultiThsAndTds(ths: EsThDirective[], tds: EsTdDirective[], items: any[]): {
36
43
  expThs: EsThDirective[];
37
44
  expTds: EsTdDirective[];
@@ -47,6 +54,7 @@ export declare class ColumnMetadataHandler {
47
54
  * dell'allineamento delle informazioni fra le colonne calcolate internamente e le informazioni sulle colonne che arrivano dall'AppSearch
48
55
  *
49
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
50
58
  */
51
59
  alignColumnsIfLoadedView(view: AppSearch<any>): void;
52
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
  /**
@@ -31,5 +31,5 @@ export declare class ItemsHandler {
31
31
  /** Genera le informazioni di paginazione e taglia la View in modalità array per mostrare solo gli oggetti della pagina specificata */
32
32
  private adaptViewToPaging;
33
33
  /** Se in modalità array applica gli ordinamenti ASC-DESC delle colonne */
34
- arrayModeReviewOrderings(): void;
34
+ arrayModeReviewOrderings(items: any[]): any[];
35
35
  }
@@ -11,6 +11,15 @@ export declare class ReportModeHandler {
11
11
  constructor(est: EsTableComponent, utilities: UtilitiesHandler);
12
12
  /** Metodo che si occupa di gestire la grafica della tabella in base alle informazioni di ordinamento colonne e paginazione contenuti nel modello */
13
13
  reviewReportBindings(): void;
14
+ /**
15
+ * Data una AppSearch questo metodo genera la lista di th e td che si possono collegare al giro standard.
16
+ * Se non ci fosse questo passaggio intermedio la gestione della modalità report sarebbe 100% custom,
17
+ * come poi lo era prima che la facessi passare dal giro che fanno tutte le altre modalità
18
+ *
19
+ * @param {AppSearch<any>} view View in modalità report contenente le informazioni sulle colonne
20
+ *
21
+ * @returns {{ ths: EsThDirective[], tds: EsTdDirective[] }} Lista di direttive per gli header e per il body
22
+ */
14
23
  generateThsAndTdsFromView(view: AppSearch<any>): {
15
24
  ths: EsThDirective[];
16
25
  tds: EsTdDirective[];
@@ -1,5 +1,9 @@
1
1
  import { ItemsSelection } from "../../domain/externals/appsearch/ItemsSelection";
2
+ import { ItemPropEditableReference } from "../../domain/externals/ItemPropEditableReference";
3
+ import { EsTableColumnsDefinition } from "../../domain/externals/EsTableColumnsDefinition";
4
+ import { InputType } from '../../domain/types';
2
5
  import { EsTableComponent } from "../../components/es-table/es_table.component";
6
+ import { EsThDirective } from "../../directives/es_th.directive";
3
7
  import { RowGroupingHandler } from "./RowGroupingHandler";
4
8
  /** Classe che gestisce le selezioni degli oggetti */
5
9
  export declare class SelectionHandler {
@@ -21,6 +25,8 @@ export declare class SelectionHandler {
21
25
  private i_exclusionsCache;
22
26
  /** Cache di selezione Hash - Oggetto per la variabile **group_exclusions** dell'itemSelector. Facilita le operazioni di lookup via indice */
23
27
  private i_group_exclusionsCache;
28
+ /** Ultima cella selezionata singolarmente */
29
+ private lastSingleSelection;
24
30
  /** @ignore Costruttore */
25
31
  constructor(est: EsTableComponent, rgHandler: RowGroupingHandler);
26
32
  /** Ripulisce le cache di selezione */
@@ -32,6 +38,17 @@ export declare class SelectionHandler {
32
38
  * @param {ItemsSelection<any>} selectionItem Oggetti di selezione derivante dalla view o dall'oggetto per Array
33
39
  */
34
40
  evaluateSelection(items: any[], selectionItem: ItemsSelection<any>): void;
41
+ /**
42
+ * Precompila le informazioni sullo stato di selezione tutto a false per le celle della tabella
43
+ *
44
+ * @param {any[]} items Oggetti attualmente bindati sulla tabella
45
+ * @param {EsThDirective[]} ths Colonne su cui gli oggetti sono bindati
46
+ */
47
+ evaluateSingleCellSelection(items: any[], ths: EsThDirective[], dyn: EsTableColumnsDefinition[]): void;
48
+ /** @ignore */
49
+ private fillSelectionStatusByDynamicColumns;
50
+ /** @ignore */
51
+ private fillSelectionStatusByEsThs;
35
52
  /**
36
53
  * Implementazione agnostica della valutazione delle selezioni degli oggetti. Richiede gli oggetti della vista attuale e l'itemSelector
37
54
  *
@@ -146,4 +163,77 @@ export declare class SelectionHandler {
146
163
  private evaluateSelected;
147
164
  /** Gestisce il comando di "Seleziona tutto in tutte le pagine" o il suo contrario, cioè "Reimposta selezione" */
148
165
  selectAllOrResetSelection(): void;
166
+ /**
167
+ * @TODO Spostare in SelectionHandler
168
+ *
169
+ * Registra la selezione singola su una cella sulla combo di comandi "CTRL + Click".
170
+ * Se viene premuto anche il tasto Shift viene creato un range di selezione il cui status di "selezionato" viene salvato nella
171
+ * matrice virtuale **selectionStatus**
172
+ *
173
+ * @param {any} event Evento Javascript di Click
174
+ * @param {number} row Indice della riga. Non è l'indice vero e proprio ma è l'ordinale (.ordinal) dell'oggetto bindato su quella riga
175
+ * @param {number} column Indice della colonna preso banalmente dall'ngIf sui thElement
176
+ * @param {{ row: number, column: number }} firstSelectionOverride Permette di overridare il primo elemento selezionato
177
+ */
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: {
189
+ row: number;
190
+ column: number;
191
+ }): void;
192
+ /**
193
+ * Helper per ripulire lo stato di selezione delle singole celle della tabella, ad esclusione di una singola coordinata
194
+ *
195
+ * @param {{row: number, column: number}} exclusion Coordinata da escludere nella pulizia
196
+ */
197
+ clearSelectionStatusExcluding(exclusion?: {
198
+ row: number;
199
+ column: number;
200
+ }): void;
201
+ /**
202
+ * Helper che esamina la matrice **selectionStatus** e ne estrappola gli elementi selezionati in una comoda matrice
203
+ *
204
+ * @returns {{ value: string, type: InputType, val_setter: Function }[][]} Matrice di elementi selezionati con la loro informazione sul tipo
205
+ */
206
+ getSelectionStatusSelection(): ItemPropEditableReference[][];
207
+ /**
208
+ * Helper per ripulire la selezione lato HTML
209
+ *
210
+ * @param {any} event Evento nativo Javascript
211
+ */
212
+ clearTextSelection(event: {
213
+ view: any;
214
+ range: boolean;
215
+ }): boolean;
216
+ /**
217
+ * Data la matrice di selezione generata dal metodo **getSelectionStatusSelection** genera la strigna vera e propria da copiare nella Clipboard
218
+ *
219
+ * @param {{ value: string, type: InputType }[][]} sel Matrice di selezione con valori e tipi dei dati selezionati
220
+ *
221
+ * @returns {string} Stringa da copiare nella clipboard, le stringhe vengono wrappate fra doppi apici e fra un valore e l'altro viene messo un tab
222
+ * in modo che siano compatibili anche con la copia su Excel
223
+ */
224
+ getClipbardTextFromSelection(sel: {
225
+ value: string;
226
+ type: InputType | string;
227
+ }[][]): string;
228
+ /**
229
+ * Ottiene la rappresentazione stringa di un valore dato un tipo
230
+ *
231
+ * @param {{ value: string, type: InputType }} valType Oggetto Valore - Tipo da cui estrapolare la rappresentazione del dato in stringa
232
+ *
233
+ * @returns {string} Valore convertito in stringa in base al tipo
234
+ */
235
+ getValueByType(valType: {
236
+ value: string;
237
+ type: InputType | string;
238
+ }): string;
149
239
  }
@@ -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
  *
@@ -11,16 +11,32 @@ export declare class EsTdDirective {
11
11
  tdVisible: boolean;
12
12
  /** Id della colonna, fa riferimento al **th** padre */
13
13
  td: string;
14
+ /** Se questo td viene usato come renderer in questa proprietà è scritto il nome della proprietà dell'oggetto bindato per cui fare apparire il **Template** */
15
+ tdForProperty: string;
14
16
  /** Equivalente dell'NgIf sul td */
15
17
  tdIf: boolean;
16
18
  /** Eventuali classi da applicare al **td** generato */
17
19
  tdClass: string;
18
20
  /** In mancanza di **Template** indica qual è la proprietà dell'oggetto contenente le informazioni da mostrare */
19
21
  tdPropertyAccessor: string;
22
+ /** Allineamento dei valori della tabella */
23
+ tdAlignment: "Center" | "Left" | "Right";
24
+ /** Formato da applicare al valore se applicabile, utilizzabile solo se **tdPropertyAccessor** è valorizzato */
25
+ tdFormat: string;
26
+ /** Se il contenuto di questo td dev'essere un'immagine cliccabile, questa è la classe che la identifica */
27
+ tdIconClass: string;
28
+ /** Campo da controllare per fare apparire/sparire il contenuto di questa cella qualora fosse diverso da **tdConditionValue** */
29
+ tdConditionField: string;
30
+ /** Valore che deve assumere **tdConditionField** per mostrare il contenuto di questa cella */
31
+ tdConditionValue: string;
32
+ /** Titolo HTML di questa cella */
33
+ tdTitle: string;
34
+ /** Contenuto statico di questa cella */
35
+ tdContent: string;
20
36
  /**
21
37
  * @ignore
22
38
  */
23
39
  constructor(Template: TemplateRef<any>);
24
- static ɵfac: i0.ɵɵFactoryDeclaration<EsTdDirective, never>;
25
- static ɵdir: i0.ɵɵDirectiveDeclaration<EsTdDirective, "[td]", never, { "tdVisible": "tdVisible"; "td": "td"; "tdIf": "tdIf"; "tdClass": "tdClass"; "tdPropertyAccessor": "tdPropertyAccessor"; }, {}, never>;
40
+ static ɵfac: i0.ɵɵFactoryDeclaration<EsTdDirective, [{ self: true; }]>;
41
+ static ɵdir: i0.ɵɵDirectiveDeclaration<EsTdDirective, "[td]", never, { "tdVisible": "tdVisible"; "td": "td"; "tdForProperty": "tdForProperty"; "tdIf": "tdIf"; "tdClass": "tdClass"; "tdPropertyAccessor": "tdPropertyAccessor"; "tdAlignment": "tdAlignment"; "tdFormat": "tdFormat"; "tdIconClass": "tdIconClass"; "tdConditionField": "tdConditionField"; "tdConditionValue": "tdConditionValue"; "tdTitle": "tdTitle"; "tdContent": "tdContent"; }, {}, never>;
26
42
  }
@@ -0,0 +1,14 @@
1
+ import { TemplateRef } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /** Direttiva che rappresenta il template dell'editor di una cella all'interno della tabella */
4
+ export declare class EsTdEditorDirective {
5
+ Template: TemplateRef<any>;
6
+ /** Id dell'Editor */
7
+ editor: string;
8
+ /** In questa proprietà è scritto il nome della proprietà dell'oggetto bindato per cui fare apparire il **Template** */
9
+ editorForProperty: string;
10
+ /** @ignore */
11
+ constructor(Template: TemplateRef<any>);
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<EsTdEditorDirective, [{ optional: true; self: true; }]>;
13
+ static ɵdir: i0.ɵɵDirectiveDeclaration<EsTdEditorDirective, "[editor]", never, { "editor": "editor"; "editorForProperty": "editorForProperty"; }, {}, never>;
14
+ }
@@ -1,5 +1,7 @@
1
1
  import { TemplateRef } from "@angular/core";
2
+ import { AvailableOptions } from "@esfaenza/forms-and-validations";
2
3
  import { ThAggregation } from "../domain/internals/ThAggregation";
4
+ import { InputType } from "../domain/types";
3
5
  import * as i0 from "@angular/core";
4
6
  /** Direttiva per la dichiarazione snella di un EsTh da emettere come header */
5
7
  export declare class EsThDirective {
@@ -8,6 +10,7 @@ export declare class EsThDirective {
8
10
  _thAggregations: ThAggregation[];
9
11
  /** Variabile interna contenente in maniera ordinata i template dei padri */
10
12
  _thParents: {
13
+ id: string;
11
14
  tmpl?: TemplateRef<any>;
12
15
  content?: string;
13
16
  }[];
@@ -43,6 +46,8 @@ export declare class EsThDirective {
43
46
  thResizable: boolean;
44
47
  /** Classi da applicare all'Header della colonna */
45
48
  thClass: string;
49
+ /** Classi da applicare all'Header della colonna */
50
+ thShrink: boolean;
46
51
  /** Classi da applicare alle righe quando rappresentano un Gruppo */
47
52
  thGroupClass: string;
48
53
  /** Equivalente dell'NgIf sul th */
@@ -53,23 +58,50 @@ export declare class EsThDirective {
53
58
  thGroup: boolean;
54
59
  /** Indica che bisogna fare una aggregazione su questa colonna, a fronte di almeno un altra con un raggruppamento */
55
60
  thAggregation: string;
56
- /** Impostazioni per la modifica inline di questo campo: la **Property** di riferimento e il **Type** (a scelta fra quelli supportati dal form-adaptive) */
57
- thUserEdits: {
58
- Property: string;
59
- Type: 'string' | 'float' | 'date' | 'number' | 'int' | 'boolean' | 'enum' | 'autocomplete' | 'datetime' | 'time' | 'file' | 'currency';
60
- Source: {
61
- id: string;
62
- description: string;
63
- }[];
64
- };
61
+ /** Proprietà JS a cui si riferisce questa cella */
62
+ thProperty: string;
63
+ /** Tipo della proprietà JS a cui si riferisce questa cella. Se valorizzato l'utente la potrà modificare facendo doppio click */
64
+ thType: InputType | string;
65
+ /** Sorgente dei valori disponibili per questa cella se il **Type** è di tipo 'enum' */
66
+ thSource: {
67
+ id: string;
68
+ description: string;
69
+ }[];
65
70
  /** Indica che questo header deve essere emesso una volta per ogni valore presente nella lista di **EsTableMultiValue** alla proprietà **th** dell'oggetto corrente */
66
71
  thMulti: boolean;
67
72
  /** Indica un contenuto statico da mostrare piuttosto che utilizzare il **Template**. Serve in caso questo oggetto venga generato programmaticamente */
68
73
  thStaticContent: string;
69
74
  /** Colore del background della cella */
70
75
  thBackgroundColor: string;
76
+ /** Allineamento dei valori della tabella */
77
+ thAlignment: "Center" | "Left" | "Right";
78
+ /** Formato da applicare al valore se applicabile */
79
+ thFormat: string;
80
+ /** Nome dell'editor da utilizzare per la modifica di questo campo, ordine di priorità:
81
+ *
82
+ * 1. Editor con nome **thEditorName**
83
+ *
84
+ * 2. Editor riferito alla proprietà **thProperty**
85
+ *
86
+ * 3. Editor di default per **thType**
87
+ */
88
+ thEditorName: string;
89
+ /** Opzioni da applicare all'editor di questa colonna */
90
+ thEditorOptions: {
91
+ [id in AvailableOptions]?: any;
92
+ };
93
+ /** Nome del renderer da utilizzare per visualizzare questo campo. Utilizzato solo per le tabelle dinamiche */
94
+ thRendererName: string;
95
+ /** Route di navigazione. Es. "['/pages/mod/mod_detail', { 'idItem': '{0}', 'idItem2' : '{1}' }]" */
96
+ thRoutePath: string;
97
+ /**
98
+ * Proprietà da bindare a **routePath** per generare la route completa.
99
+ *
100
+ * L'indice scritto in **routePath** è l'indice di accesso a questo array. Es. ["idItem", "idItem2"]
101
+ */
102
+ thRouteParameterProperties: string[];
71
103
  /** @ignore */
72
104
  constructor(Template: TemplateRef<any>);
73
- static ɵfac: i0.ɵɵFactoryDeclaration<EsThDirective, never>;
74
- static ɵdir: i0.ɵɵDirectiveDeclaration<EsThDirective, "[th]", never, { "th": "th"; "thPinned": "thPinned"; "thPinnable": "thPinnable"; "thPinnedWidth": "thPinnedWidth"; "thVisible": "thVisible"; "thFixed": "thFixed"; "thParent": "thParent"; "thOrder": "thOrder"; "thOrderable": "thOrderable"; "thWrap": "thWrap"; "thResizable": "thResizable"; "thClass": "thClass"; "thGroupClass": "thGroupClass"; "thIf": "thIf"; "thEmpty": "thEmpty"; "thGroup": "thGroup"; "thAggregation": "thAggregation"; "thUserEdits": "thUserEdits"; "thMulti": "thMulti"; "thStaticContent": "thStaticContent"; "thBackgroundColor": "thBackgroundColor"; }, {}, never>;
105
+ static ɵfac: i0.ɵɵFactoryDeclaration<EsThDirective, [{ self: true; }]>;
106
+ static ɵdir: i0.ɵɵDirectiveDeclaration<EsThDirective, "[th]", never, { "th": "th"; "thPinned": "thPinned"; "thPinnable": "thPinnable"; "thPinnedWidth": "thPinnedWidth"; "thVisible": "thVisible"; "thFixed": "thFixed"; "thParent": "thParent"; "thOrder": "thOrder"; "thOrderable": "thOrderable"; "thWrap": "thWrap"; "thResizable": "thResizable"; "thClass": "thClass"; "thShrink": "thShrink"; "thGroupClass": "thGroupClass"; "thIf": "thIf"; "thEmpty": "thEmpty"; "thGroup": "thGroup"; "thAggregation": "thAggregation"; "thProperty": "thProperty"; "thType": "thType"; "thSource": "thSource"; "thMulti": "thMulti"; "thStaticContent": "thStaticContent"; "thBackgroundColor": "thBackgroundColor"; "thAlignment": "thAlignment"; "thFormat": "thFormat"; "thEditorName": "thEditorName"; "thEditorOptions": "thEditorOptions"; "thRendererName": "thRendererName"; "thRoutePath": "thRoutePath"; "thRouteParameterProperties": "thRouteParameterProperties"; }, {}, never>;
75
107
  }
@@ -17,4 +17,5 @@ export declare class EsTableDefaultable {
17
17
  /** @ignore Vedi **EsTableComponent** */ ShowItemGroupsColumns?: boolean;
18
18
  /** @ignore Vedi **EsTableComponent** */ ArraymodeItemsPerPage?: number;
19
19
  /** @ignore Vedi **EsTableComponent** */ ColumnsPinnable?: boolean;
20
+ /** @ignore Vedi **EsTableComponent** */ DefaultAlignment?: 'Left' | 'Center' | 'Right';
20
21
  }
@@ -1,31 +1,56 @@
1
+ import { InputType } from "../types";
2
+ import { AvailableOptions } from "@esfaenza/forms-and-validations";
1
3
  /** Classe che identifica una colonna. Utilizzata in modalità "Colonne dinamiche" */
2
4
  export declare class EsTableColumnsDefinition {
3
- description: string;
4
- propertyName: string;
5
- routePath: string;
6
- routeParameterProperties: string[];
7
- dataOrder: 'ASC' | 'DESC';
8
- columnOrder: number;
9
- visible: boolean;
10
- clss: string;
11
- orderable: boolean;
12
- headerWraps: boolean;
5
+ Description: string;
6
+ PropertyName: string;
7
+ RoutePath: string;
8
+ RouteParameterProperties: string[];
9
+ DataOrder: 'ASC' | 'DESC';
10
+ ColumnOrder: number;
11
+ Visible: boolean;
12
+ Clss: string;
13
+ Orderable: boolean;
14
+ HeaderWraps: boolean;
15
+ PropertyType: InputType | string;
16
+ PropertySource: {
17
+ id: string;
18
+ description: string;
19
+ }[];
20
+ EditorName: string;
21
+ RendererName: string;
22
+ EditorOptions: {
23
+ [id in AvailableOptions]?: any;
24
+ };
25
+ Pinned: boolean;
26
+ PinnedWidth: number;
27
+ Pinnable: boolean;
28
+ Grouping: string;
29
+ Shrink: boolean;
13
30
  /**
14
31
  * Costruttore
15
32
  *
16
- * @param {string} description Descrizione della colonna
17
- * @param {string} propertyName Nome della proprietà del modello in cui sono contenuti i dati da visualizzare per questa colonna
18
- * @param {string} routePath Route di navigazione. Es. "['/pages/mod/mod_detail', { 'idItem': '{0}', 'idItem2' : '{1}' }]"
19
- * @param {string[]} routeParameterProperties Proprietà da bindare a **routePath** per generare la route completa.
33
+ * @param {string} Description Descrizione della colonna
34
+ * @param {string} PropertyName Nome della proprietà del modello in cui sono contenuti i dati da visualizzare per questa colonna
35
+ * @param {string} RoutePath Route di navigazione. Es. "['/pages/mod/mod_detail', { 'idItem': '{0}', 'idItem2' : '{1}' }]"
36
+ * @param {string[]} RouteParameterProperties Proprietà da bindare a **routePath** per generare la route completa.
20
37
  * L'indice scritto in **routePath** è l'indice di accesso a questo array. Es. ["iditem", "iditem2"]
21
- * @param {'ASC' | 'DESC' } dataOrder Ordinamento dei dati presentati in questa colonna
22
- * @param {number} columnOrder Ordinamento di questa colonna
23
- * @param {boolean} visible Visibilità o meno della colonna
24
- * @param {string} clss Classe da applicare sia ai TD che ai TH relativi a questa colonna
25
- * @param {boolean} orderable Indica se la colonna è ordinabile o no (nel senso ASC / DESC / NONE)
26
- * @param {boolean} headerWraps Indica se il testo dell'header dev'essere wrappato all'interno del th. Di default no.
38
+ * @param {'ASC' | 'DESC' } DataOrder Ordinamento dei dati presentati in questa colonna
39
+ * @param {number} ColumnOrder Ordinamento di questa colonna
40
+ * @param {boolean} Visible Visibilità o meno della colonna
41
+ * @param {string} Clss Classe da applicare sia ai TD che ai TH relativi a questa colonna
42
+ * @param {boolean} Orderable Indica se la colonna è ordinabile o no (nel senso ASC / DESC / NONE)
43
+ * @param {boolean} HeaderWraps Indica se il testo dell'header dev'essere wrappato all'interno del th. Di default no.
44
+ * @param {InputType | string} PropertyType Indica il tipo della proprietà identificata da **propertyName**.
45
+ * @param {{id: string, description: string}[]} PropertySource Sorgente dati su cui autocompletare/scegliere il valore per la proprietà **propertyName**, ha senso solo per **propType** enum o autocomplete.
46
+ * @param {string} EditorName Nome dell'editor da utilizzare per la modifica di questo campo
47
+ * @param {string} RendererName Nome del renderer da utilizzare per visualizzare questo campo
27
48
  */
28
- constructor(description: string, propertyName: string, routePath?: string, routeParameterProperties?: string[], dataOrder?: 'ASC' | 'DESC', columnOrder?: number, visible?: boolean, clss?: string, orderable?: boolean, headerWraps?: boolean);
29
- /** Routerlink che verrà generato a runtime basandosi sulle informazioni di **routePath** e **routeParameterProperties** */
30
- routerLink: any;
49
+ constructor(Description: string, PropertyName: string, RoutePath?: string, RouteParameterProperties?: string[], DataOrder?: 'ASC' | 'DESC', ColumnOrder?: number, Visible?: boolean, Clss?: string, Orderable?: boolean, HeaderWraps?: boolean, PropertyType?: InputType | string, PropertySource?: {
50
+ id: string;
51
+ description: string;
52
+ }[], EditorName?: string, RendererName?: string, EditorOptions?: {
53
+ [id in AvailableOptions]?: any;
54
+ }, Pinned?: boolean, PinnedWidth?: number, Pinnable?: boolean, Grouping?: string, Shrink?: boolean);
55
+ static build(parsObj: any): EsTableColumnsDefinition;
31
56
  }
@@ -0,0 +1,17 @@
1
+ /** Classe che rappresenta la modifica ad un singolo oggetto in una singola proprietà */
2
+ export declare class EsTableModelChange {
3
+ item: any;
4
+ header: string;
5
+ property: string;
6
+ old_value: string;
7
+ new_value: string;
8
+ /**
9
+ * Costruttore
10
+ * @param {any} item Oggetto modificato
11
+ * @param {string} header Nome dell'Header che è stato modificato
12
+ * @param {string} property Nome della proprietà modificata
13
+ * @param {string} old_value Vecchio valore della proprietà **property** dell'oggetto **item**
14
+ * @param {string} new_value Nuovo valore della proprietà **property** dell'oggetto **item**
15
+ */
16
+ constructor(item: any, header: string, property: string, old_value: string, new_value: string);
17
+ }
@@ -0,0 +1,34 @@
1
+ import { InputType } from "../types";
2
+ /** Classe che rappresenta il riferimento ad una proprietà di un oggetto bindato sulla tabella */
3
+ export declare class ItemPropEditableReference {
4
+ /** Stato di selezione della cella relativa */
5
+ selected: boolean;
6
+ /** Oggetto relativo su cui si modificano le proprietà */
7
+ item: any;
8
+ /** ID dell'header in modifica (riferimento al TH relativo) */
9
+ header: string;
10
+ /** Proprietà Javascript effettivamente in modifica */
11
+ property: string;
12
+ /** Tipo dell'input */
13
+ type: InputType | string;
14
+ /** Valore attuale della proprietà **property** dell'oggetto **item** */
15
+ value: string;
16
+ /** Indica se la cella deve avere il bordino a sinistra */
17
+ lborder?: boolean;
18
+ /** Indica se la cella deve avere il bordino in alto */
19
+ tborder?: boolean;
20
+ /** Indica se la cella deve avere il bordino a destra */
21
+ rborder?: boolean;
22
+ /** Indica se la cella deve avere il bordino in basso */
23
+ bborder?: boolean;
24
+ /** Indica se il bordo a sinistra overlappa su un bordo di selezione destro della cella precedente */
25
+ loverlaps?: boolean;
26
+ /** Indica se il bordo a destra overlappa su un bordo di selezione sinistro della cella successiva */
27
+ roverlaps?: boolean;
28
+ /** Indica se il bordo in alto overlappa su un bordo di selezione basso della cella precedente */
29
+ toverlaps?: boolean;
30
+ /** Indica se il bordo in basso overlappa su un bordo di selezione in alto della cella successiva */
31
+ boverlaps?: boolean;
32
+ /** Funzione che imposta il nuovo valore della proprietà **property** dell'oggetto **item** ed aggiorna il **value** di questo oggetto */
33
+ val_setter?: (value: string) => any;
34
+ }
@@ -51,6 +51,8 @@ export declare class AppSearch<T> {
51
51
  savedstate: boolean;
52
52
  /** Indica se bisogna ancora effettuare la prima ricerca */
53
53
  firstsearch: boolean;
54
+ /** Indica se sto effettuando la ricerca post bind */
55
+ selfsearch: boolean;
54
56
  /**
55
57
  * Oggetto che indica la selezione corrente.
56
58
  *
@@ -75,7 +77,18 @@ export declare class AppSearch<T> {
75
77
  */
76
78
  requestedgroups: GroupFilter[];
77
79
  /**
78
- * Permette di resettare questo oggetto ai valori di default
80
+ * Permette di resettare un AppSearch ai valori di default.
81
+ * Reso statico perché fra una deserializzazione e l'altra si potrebbe perdere il prototype del costruttore
82
+ *
83
+ * @param {AppSearch<any>} aps AppSearch da resettare
84
+ */
85
+ static reset(aps: AppSearch<any>): void;
86
+ /**
87
+ * Permette di ottenere un nuovo riferimento all'AppSearch passata come parametro.
88
+ * Internamente utilizza il JSON.parse(JSON.stringify(X)) con la differenza che prima stacca il riferimento agli items per evitare di
89
+ * reserializzare potenzialmente centinaia di elementi. Il riferimento viene poi ricollegato alla nuova appsearch generata
90
+ *
91
+ * @param {AppSearch<any>} aps AppSearch di cui estrarre un nuovo riferimento equivalente
79
92
  */
80
- reset(): void;
93
+ static newref(aps: AppSearch<any>): any;
81
94
  }
@@ -12,4 +12,8 @@ export declare class ReportColumn {
12
12
  seq: number;
13
13
  /** Ordinamento dei dati presentati */
14
14
  order?: string;
15
+ /** Allineamento da tenere per questa colonna: **Center**, **Left** o **Right** */
16
+ alignment?: string;
17
+ /** Formato dei dati da presentare in questa colonna */
18
+ format?: string;
15
19
  }
@@ -2,4 +2,8 @@
2
2
  export declare class ReportRow {
3
3
  /** Valori dell'oggetto in ordine sequenziale */
4
4
  values: string[];
5
+ /** Colore di foreground per ogni cella */
6
+ forecolors?: string[];
7
+ /** Colore di background per ogni cella */
8
+ backcolors?: string[];
5
9
  }
@@ -10,6 +10,7 @@ export declare class EsTableColumn {
10
10
  pinnedWidth?: number;
11
11
  template?: TemplateRef<any>;
12
12
  parentTemplates?: {
13
+ id: string;
13
14
  tmpl?: TemplateRef<any>;
14
15
  content?: string;
15
16
  }[];
@@ -22,14 +23,16 @@ export declare class EsTableColumn {
22
23
  * @param {string} description Descrizione (Header)
23
24
  * @param {boolean} visible Indica se di default mostrarla o meno
24
25
  * @param {boolean} fixed Indica se è una colonna fixed
26
+ * @param {boolean} pinnable Indica se una colonna può essere pinnata
25
27
  * @param {boolean} pinned Indica se è una colonna pinnata
26
28
  * @param {number} pinnedWidth Indica la dimensione da assegnare a questa colonna quando è pinnata
27
29
  * @param {TemplateRef<any>} template Indica il template da usare per mostrare il testo dell'Header
28
- * @param {{ tmpl: TemplateRef<any>, content: string }[]} parentTemplates Indica la lista di template padri collegata a questo header, rappresentati come Template o come stringa qualora fosse generato automaticamente (caso **Multi**)
30
+ * @param {{ id: string, tmpl: TemplateRef<any>, content: string }[]} parentTemplates Indica la lista di template padri collegata a questo header, rappresentati come Template o come stringa qualora fosse generato automaticamente (caso **Multi**)
29
31
  * @param {boolean} multi Indica che la colonna deriva da una direttiva **Multi**
30
32
  * @param {string} multiContent Indica il contenuto della direttiva **Multi** per questa colonna
31
33
  */
32
34
  constructor(id: string, description: string, visible?: boolean, fixed?: boolean, pinned?: boolean, pinnable?: boolean, pinnedWidth?: number, template?: TemplateRef<any>, parentTemplates?: {
35
+ id: string;
33
36
  tmpl?: TemplateRef<any>;
34
37
  content?: string;
35
38
  }[], multi?: boolean, multiContent?: string);