@esfaenza/es-table 16.2.28 → 17.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 (123) hide show
  1. package/esm2022/esfaenza-es-table.mjs +4 -4
  2. package/esm2022/lib/components/es-table/es_table.component.loc.mjs +38 -38
  3. package/esm2022/lib/components/es-table/es_table.component.mjs +1891 -1891
  4. package/esm2022/lib/components/es-td/es_td.component.mjs +40 -40
  5. package/esm2022/lib/components/es-th/es_th.component.mjs +176 -176
  6. package/esm2022/lib/components/pager/table_pager.component.loc.mjs +20 -20
  7. package/esm2022/lib/components/pager/table_pager.component.mjs +111 -111
  8. package/esm2022/lib/components/pipes/est-format.pipe.mjs +44 -44
  9. package/esm2022/lib/components/pipes/est-lookup.pipe.mjs +19 -19
  10. package/esm2022/lib/components/pipes/est-propinsensitive.pipe.mjs +19 -19
  11. package/esm2022/lib/components/pipes/est-renderer.pipe.mjs +36 -36
  12. package/esm2022/lib/components/pipes/est-routerlink.pipe.mjs +41 -41
  13. package/esm2022/lib/components/pipes/est_editor.pipe.mjs +36 -36
  14. package/esm2022/lib/core/CopyPasteDetector.mjs +27 -27
  15. package/esm2022/lib/core/Logger.mjs +25 -25
  16. package/esm2022/lib/core/handlers/ColumnMetadataHandler.mjs +835 -835
  17. package/esm2022/lib/core/handlers/DynamicModeHandler.mjs +109 -109
  18. package/esm2022/lib/core/handlers/ExportHandler.mjs +32 -32
  19. package/esm2022/lib/core/handlers/HierarchyModeHandler.mjs +136 -136
  20. package/esm2022/lib/core/handlers/ItemsHandler.mjs +119 -119
  21. package/esm2022/lib/core/handlers/ReportModeHandler.mjs +60 -60
  22. package/esm2022/lib/core/handlers/RowGroupingHandler.mjs +480 -480
  23. package/esm2022/lib/core/handlers/SelectionHandler.mjs +778 -778
  24. package/esm2022/lib/core/handlers/UtilitiesHandler.mjs +151 -151
  25. package/esm2022/lib/directives/es_td.directive.mjs +54 -54
  26. package/esm2022/lib/directives/es_td_editor.directive.mjs +24 -24
  27. package/esm2022/lib/directives/es_th.directive.mjs +130 -130
  28. package/esm2022/lib/directives/es_th_td_provider.directive.mjs +34 -34
  29. package/esm2022/lib/domain/configuration/EsTableDefaultable.mjs +3 -3
  30. package/esm2022/lib/domain/configuration/EsTableModuleConfig.mjs +3 -3
  31. package/esm2022/lib/domain/externals/CornerMenuOption.mjs +3 -3
  32. package/esm2022/lib/domain/externals/EsTableColumnsDefinition.mjs +47 -47
  33. package/esm2022/lib/domain/externals/EsTableModelChange.mjs +18 -18
  34. package/esm2022/lib/domain/externals/EsTableOperationDefinition.mjs +21 -21
  35. package/esm2022/lib/domain/externals/ItemPropEditableReference.mjs +3 -3
  36. package/esm2022/lib/domain/externals/appsearch/AppOrdering.mjs +15 -15
  37. package/esm2022/lib/domain/externals/appsearch/AppSearch.mjs +65 -65
  38. package/esm2022/lib/domain/externals/appsearch/EsTableMultiValue.mjs +24 -24
  39. package/esm2022/lib/domain/externals/appsearch/GenericItem.mjs +10 -10
  40. package/esm2022/lib/domain/externals/appsearch/Group.mjs +16 -16
  41. package/esm2022/lib/domain/externals/appsearch/GroupAggregation.mjs +15 -15
  42. package/esm2022/lib/domain/externals/appsearch/GroupFilter.mjs +13 -13
  43. package/esm2022/lib/domain/externals/appsearch/GroupOrAggregation.mjs +15 -15
  44. package/esm2022/lib/domain/externals/appsearch/ItemsSelection.mjs +22 -22
  45. package/esm2022/lib/domain/externals/report/ReportColumn.mjs +3 -3
  46. package/esm2022/lib/domain/externals/report/ReportParam.mjs +3 -3
  47. package/esm2022/lib/domain/externals/report/ReportRow.mjs +3 -3
  48. package/esm2022/lib/domain/internals/CacheTriptic.mjs +15 -15
  49. package/esm2022/lib/domain/internals/EsTableColumn.mjs +31 -31
  50. package/esm2022/lib/domain/internals/GroupPager.mjs +22 -22
  51. package/esm2022/lib/domain/internals/GroupRouteFragment.mjs +16 -16
  52. package/esm2022/lib/domain/internals/PagerInfos.mjs +14 -14
  53. package/esm2022/lib/domain/internals/TdElement.mjs +1 -1
  54. package/esm2022/lib/domain/internals/ThAggregation.mjs +15 -15
  55. package/esm2022/lib/domain/internals/ThElement.mjs +1 -1
  56. package/esm2022/lib/domain/internals/ThGroup.mjs +1 -1
  57. package/esm2022/lib/domain/types.mjs +1 -1
  58. package/esm2022/lib/es-table.module.mjs +124 -124
  59. package/esm2022/lib/tokens.mjs +5 -5
  60. package/esm2022/public-api.mjs +27 -27
  61. package/fesm2022/esfaenza-es-table.mjs +5771 -5771
  62. package/fesm2022/esfaenza-es-table.mjs.map +1 -1
  63. package/index.d.ts +5 -5
  64. package/lib/components/es-table/es_table.component.d.ts +738 -738
  65. package/lib/components/es-table/es_table.component.loc.d.ts +10 -10
  66. package/lib/components/es-td/es_td.component.d.ts +26 -26
  67. package/lib/components/es-th/es_th.component.d.ts +92 -92
  68. package/lib/components/pager/table_pager.component.d.ts +56 -56
  69. package/lib/components/pager/table_pager.component.loc.d.ts +10 -10
  70. package/lib/components/pipes/est-format.pipe.d.ts +10 -10
  71. package/lib/components/pipes/est-lookup.pipe.d.ts +13 -13
  72. package/lib/components/pipes/est-propinsensitive.pipe.d.ts +7 -7
  73. package/lib/components/pipes/est-renderer.pipe.d.ts +15 -15
  74. package/lib/components/pipes/est-routerlink.pipe.d.ts +20 -20
  75. package/lib/components/pipes/est_editor.pipe.d.ts +15 -15
  76. package/lib/core/CopyPasteDetector.d.ts +15 -15
  77. package/lib/core/Logger.d.ts +10 -10
  78. package/lib/core/handlers/ColumnMetadataHandler.d.ts +189 -189
  79. package/lib/core/handlers/DynamicModeHandler.d.ts +22 -22
  80. package/lib/core/handlers/ExportHandler.d.ts +18 -18
  81. package/lib/core/handlers/HierarchyModeHandler.d.ts +40 -40
  82. package/lib/core/handlers/ItemsHandler.d.ts +35 -35
  83. package/lib/core/handlers/ReportModeHandler.d.ts +27 -27
  84. package/lib/core/handlers/RowGroupingHandler.d.ts +118 -118
  85. package/lib/core/handlers/SelectionHandler.d.ts +230 -230
  86. package/lib/core/handlers/UtilitiesHandler.d.ts +57 -57
  87. package/lib/directives/es_td.directive.d.ts +42 -42
  88. package/lib/directives/es_td_editor.directive.d.ts +14 -14
  89. package/lib/directives/es_th.directive.d.ts +107 -107
  90. package/lib/directives/es_th_td_provider.directive.d.ts +15 -15
  91. package/lib/domain/configuration/EsTableDefaultable.d.ts +21 -21
  92. package/lib/domain/configuration/EsTableModuleConfig.d.ts +8 -8
  93. package/lib/domain/externals/CornerMenuOption.d.ts +7 -7
  94. package/lib/domain/externals/EsTableColumnsDefinition.d.ts +56 -56
  95. package/lib/domain/externals/EsTableModelChange.d.ts +17 -17
  96. package/lib/domain/externals/EsTableOperationDefinition.d.ts +20 -20
  97. package/lib/domain/externals/ItemPropEditableReference.d.ts +34 -34
  98. package/lib/domain/externals/appsearch/AppOrdering.d.ts +14 -14
  99. package/lib/domain/externals/appsearch/AppSearch.d.ts +100 -100
  100. package/lib/domain/externals/appsearch/EsTableMultiValue.d.ts +22 -22
  101. package/lib/domain/externals/appsearch/GenericItem.d.ts +13 -13
  102. package/lib/domain/externals/appsearch/Group.d.ts +17 -17
  103. package/lib/domain/externals/appsearch/GroupAggregation.d.ts +14 -14
  104. package/lib/domain/externals/appsearch/GroupFilter.d.ts +12 -12
  105. package/lib/domain/externals/appsearch/GroupOrAggregation.d.ts +14 -14
  106. package/lib/domain/externals/appsearch/ItemsSelection.d.ts +22 -22
  107. package/lib/domain/externals/report/ReportColumn.d.ts +19 -19
  108. package/lib/domain/externals/report/ReportParam.d.ts +40 -40
  109. package/lib/domain/externals/report/ReportRow.d.ts +9 -9
  110. package/lib/domain/internals/CacheTriptic.d.ts +14 -14
  111. package/lib/domain/internals/EsTableColumn.d.ts +41 -41
  112. package/lib/domain/internals/GroupPager.d.ts +26 -26
  113. package/lib/domain/internals/GroupRouteFragment.d.ts +15 -15
  114. package/lib/domain/internals/PagerInfos.d.ts +13 -13
  115. package/lib/domain/internals/TdElement.d.ts +57 -57
  116. package/lib/domain/internals/ThAggregation.d.ts +14 -14
  117. package/lib/domain/internals/ThElement.d.ts +24 -24
  118. package/lib/domain/internals/ThGroup.d.ts +10 -10
  119. package/lib/domain/types.d.ts +2 -2
  120. package/lib/es-table.module.d.ts +35 -35
  121. package/lib/tokens.d.ts +6 -6
  122. package/package.json +14 -14
  123. package/public-api.d.ts +27 -27
@@ -1,111 +1,111 @@
1
- // Angular
2
- import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from "@angular/core";
3
- // Configurazioni
4
- import { LocalizationService } from "@esfaenza/localizations";
5
- // Applicazione
6
- import { TablePagerLoc } from "./table_pager.component.loc";
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@esfaenza/extensions";
9
- import * as i2 from "@esfaenza/localizations";
10
- import * as i3 from "@angular/common";
11
- import * as i4 from "@angular/forms";
12
- import * as i5 from "@angular/material/legacy-form-field";
13
- import * as i6 from "@angular/material/legacy-input";
14
- /** Componente che si occupa della paginazione di una tabella */
15
- export class TablePagerComponent {
16
- /** @ignore */
17
- constructor(msgExts, lc, cdr) {
18
- this.msgExts = msgExts;
19
- this.lc = lc;
20
- this.cdr = cdr;
21
- /** Indica se deve mostrare un warning quando si cercano di solezionare come elementi da visualizzare "Tutti" */
22
- this.WarnOnAll = true;
23
- /** Indica se dare la possibilità o meno di selezionare "Tutti" nelle opzioni di paginazione */
24
- this.AllSearch = true;
25
- /** Placeholder che identifica il "Tutti" */
26
- this.DefaultAll = 999999;
27
- /** Indica se attivare la modalità gruppo con stili più snelli per apparire sotto ai raggruppamenti */
28
- this.GroupMode = false;
29
- /** Indica se utilizzare il conteggio dei gruppi o degli oggetti */
30
- this.GroupCount = false;
31
- /** Indica il testo che va a sostituire "Oggetti Visualizzati" in caso si stia facendo qualcosa di custom, Ignorato in caso di gruppi */
32
- this.CountLabel = null;
33
- /** Indica se visualizzare il numero totale di oggeti presenti */
34
- this.ShowCount = true;
35
- /** Indica se visualizzare il numero totale di oggeti presenti */
36
- this.ShowPaging = true;
37
- /** Output invocato quando il numero di elementi per pagina viene modificato da un click utente */
38
- this.pagingSelected = new EventEmitter();
39
- /** Opzioni di paginazione */
40
- this.PagingOptions = [5, 10, 15, 30, 45, 100];
41
- }
42
- /** @ignore */
43
- ngOnInit() {
44
- this.Model = this.View ? (this.View.itemsperpageoverride || 15) : this.CurrentPageSize;
45
- if (this.AllSearch)
46
- this.PagingOptions.push(this.DefaultAll);
47
- }
48
- /** @ignore */
49
- ngOnChanges(changes) {
50
- let newView = changes['View'];
51
- let newCPS = changes['CurrentPageSize'];
52
- if ((newView && !newView.firstChange) || (newCPS && !newCPS.firstChange))
53
- this.Model = newView?.currentValue ? (newView.currentValue.itemsperpageoverride || 15) : newCPS?.currentValue ? newCPS.currentValue : null;
54
- }
55
- /**
56
- * Funzione richiamata dal template quando un utente clicca su un numero di paginazione.
57
- *
58
- * Cliccare 2 volte sullo stesso numero causa comunque un refresh dei dati
59
- *
60
- * @param {number} pageSize Dimensione selezionata lato UI
61
- */
62
- choice(pageSize) {
63
- if (pageSize == this.DefaultAll && this.WarnOnAll) {
64
- this.msgExts.simpleWarningWithChoice(this.lc.loc("Are you sure you want to retrieve all results?"), this.lc.loc("This might slow down the page and possibly crash the entire application"), () => { this.pagingSelected.emit(pageSize); this.Model = pageSize; }, () => {
65
- // Dio solo sa perché mi tocca fare sta roba... qui dentro per qualche motivo la CD non prende
66
- let prevModel = this.Model;
67
- this.Model = null;
68
- this.cdr.detectChanges();
69
- this.Model = prevModel;
70
- this.cdr.detectChanges();
71
- });
72
- }
73
- else {
74
- this.pagingSelected.emit(pageSize);
75
- this.Model = pageSize;
76
- }
77
- }
78
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TablePagerComponent, deps: [{ token: i1.MessageService }, { token: i2.LocalizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
79
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TablePagerComponent, selector: "app-paging", inputs: { CurrentPageSize: "CurrentPageSize", View: "View", WarnOnAll: "WarnOnAll", AllSearch: "AllSearch", DefaultAll: "DefaultAll", GroupMode: "GroupMode", GroupCount: "GroupCount", CountLabel: "CountLabel", ShowCount: "ShowCount", ShowPaging: "ShowPaging", PagerCount: "PagerCount", Hidden: "Hidden" }, outputs: { pagingSelected: "pagingSelected" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!Hidden\">\r\n <span class=\"est-fs-14\"> {{CountLabel && !GroupMode ? CountLabel : ((GroupMode ? 'Shown Groups' : 'Shown Elements') | localize : lc)}}:&nbsp;</span>\r\n <ng-container *ngIf=\"ShowPaging && Model && PagerCount > 10\">\r\n <mat-form-field [appearance]=\"'legacy'\" class=\"mat-paginator-page-size-select est-fs-14 est-ipp-bold\">\r\n <select matNativeControl [ngModel]=\"Model\" name=\"input\" (ngModelChange)=\"choice($event)\">\r\n <ng-container *ngFor=\"let pOpt of PagingOptions; let i = index\">\r\n <option *ngIf=\"pOpt == DefaultAll || PagerCount >= pOpt || PagerCount == -1 || (i > 0 && PagerCount >= PagingOptions[i-1])\" [value]=\"pOpt\">{{ pOpt == DefaultAll ? ('All' | localize : lc) : pOpt.toString()}}</option>\r\n </ng-container>\r\n </select>\r\n </mat-form-field>\r\n <span class=\"est-fs-14 est-ipp-bold\" *ngIf=\"ShowCount && PagerCount != -1\">&nbsp;/&nbsp;</span>\r\n </ng-container>\r\n <span class=\"est-fs-14 est-ipp-bold\" *ngIf=\"ShowCount && PagerCount != -1\">{{PagerCount | number : '0.0-0' : lc.Locale}}</span>\r\n</ng-container>", styles: [".est-rg-ipp-sel-all,.est-rg-ipp-sel,.est-ipp-sel-all,.est-ipp-sel{color:#0275d8!important;cursor:pointer;text-decoration:none;display:block;display:inline}.est-ipp-bold{font-weight:700}.mat-paginator-page-size-select{margin:6px 4px 0;width:50px}.mat-paginator-page-size-select .mat-form-field-wrapper{height:52px!important;margin-top:-15px!important;padding:0!important}.mat-form-field-type-mat-native-select .mat-form-field-infix:after{margin-top:-5.5px!important}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLegacyInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", exportAs: ["matInput"] }, { kind: "pipe", type: i3.DecimalPipe, name: "number" }, { kind: "pipe", type: i2.LocalizePipe, name: "localize" }], viewProviders: [{ provide: LocalizationService, useClass: TablePagerLoc }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
80
- }
81
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TablePagerComponent, decorators: [{
82
- type: Component,
83
- args: [{ selector: "app-paging", viewProviders: [{ provide: LocalizationService, useClass: TablePagerLoc }], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"!Hidden\">\r\n <span class=\"est-fs-14\"> {{CountLabel && !GroupMode ? CountLabel : ((GroupMode ? 'Shown Groups' : 'Shown Elements') | localize : lc)}}:&nbsp;</span>\r\n <ng-container *ngIf=\"ShowPaging && Model && PagerCount > 10\">\r\n <mat-form-field [appearance]=\"'legacy'\" class=\"mat-paginator-page-size-select est-fs-14 est-ipp-bold\">\r\n <select matNativeControl [ngModel]=\"Model\" name=\"input\" (ngModelChange)=\"choice($event)\">\r\n <ng-container *ngFor=\"let pOpt of PagingOptions; let i = index\">\r\n <option *ngIf=\"pOpt == DefaultAll || PagerCount >= pOpt || PagerCount == -1 || (i > 0 && PagerCount >= PagingOptions[i-1])\" [value]=\"pOpt\">{{ pOpt == DefaultAll ? ('All' | localize : lc) : pOpt.toString()}}</option>\r\n </ng-container>\r\n </select>\r\n </mat-form-field>\r\n <span class=\"est-fs-14 est-ipp-bold\" *ngIf=\"ShowCount && PagerCount != -1\">&nbsp;/&nbsp;</span>\r\n </ng-container>\r\n <span class=\"est-fs-14 est-ipp-bold\" *ngIf=\"ShowCount && PagerCount != -1\">{{PagerCount | number : '0.0-0' : lc.Locale}}</span>\r\n</ng-container>", styles: [".est-rg-ipp-sel-all,.est-rg-ipp-sel,.est-ipp-sel-all,.est-ipp-sel{color:#0275d8!important;cursor:pointer;text-decoration:none;display:block;display:inline}.est-ipp-bold{font-weight:700}.mat-paginator-page-size-select{margin:6px 4px 0;width:50px}.mat-paginator-page-size-select .mat-form-field-wrapper{height:52px!important;margin-top:-15px!important;padding:0!important}.mat-form-field-type-mat-native-select .mat-form-field-infix:after{margin-top:-5.5px!important}\n"] }]
84
- }], ctorParameters: function () { return [{ type: i1.MessageService }, { type: i2.LocalizationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { CurrentPageSize: [{
85
- type: Input
86
- }], View: [{
87
- type: Input
88
- }], WarnOnAll: [{
89
- type: Input
90
- }], AllSearch: [{
91
- type: Input
92
- }], DefaultAll: [{
93
- type: Input
94
- }], GroupMode: [{
95
- type: Input
96
- }], GroupCount: [{
97
- type: Input
98
- }], CountLabel: [{
99
- type: Input
100
- }], ShowCount: [{
101
- type: Input
102
- }], ShowPaging: [{
103
- type: Input
104
- }], PagerCount: [{
105
- type: Input
106
- }], Hidden: [{
107
- type: Input
108
- }], pagingSelected: [{
109
- type: Output
110
- }] } });
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGVfcGFnZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtdGFibGUvc3JjL2xpYi9jb21wb25lbnRzL3BhZ2VyL3RhYmxlX3BhZ2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLXRhYmxlL3NyYy9saWIvY29tcG9uZW50cy9wYWdlci90YWJsZV9wYWdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFVLEtBQUssRUFBWSxNQUFNLEVBQWlCLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZLLGlCQUFpQjtBQUNqQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUc5RCxlQUFlO0FBQ2YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7OztBQUU1RCxnRUFBZ0U7QUFTaEUsTUFBTSxPQUFPLG1CQUFtQjtJQXlDNUIsY0FBYztJQUNkLFlBQW9CLE9BQXVCLEVBQVMsRUFBdUIsRUFBUyxHQUFzQjtRQUF0RixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUFTLE9BQUUsR0FBRixFQUFFLENBQXFCO1FBQVMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFsQzFHLGdIQUFnSDtRQUN2RyxjQUFTLEdBQVksSUFBSSxDQUFDO1FBRW5DLCtGQUErRjtRQUN0RixjQUFTLEdBQVksSUFBSSxDQUFDO1FBRW5DLDRDQUE0QztRQUNuQyxlQUFVLEdBQUcsTUFBTSxDQUFDO1FBRTdCLHNHQUFzRztRQUM3RixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRTNCLG1FQUFtRTtRQUMxRCxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRTVCLHdJQUF3STtRQUMvSCxlQUFVLEdBQVcsSUFBSSxDQUFD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USxFQUFFLGFBQWEsRUFBRSxDQUFDLGlCQUczRCxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNO3VLQUt0QyxlQUFlO3NCQUF2QixLQUFLO2dCQUdHLElBQUk7c0JBQVosS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSztnQkFHRyxNQUFNO3NCQUFkLEtBQUs7Z0JBR0ksY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT3B0aW9uYWwsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcywgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLy8gQ29uZmlndXJhemlvbmlcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvbG9jYWxpemF0aW9uc1wiO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvZXh0ZW5zaW9uc1wiO1xyXG5cclxuLy8gQXBwbGljYXppb25lXHJcbmltcG9ydCB7IFRhYmxlUGFnZXJMb2MgfSBmcm9tIFwiLi90YWJsZV9wYWdlci5jb21wb25lbnQubG9jXCI7XHJcblxyXG4vKiogQ29tcG9uZW50ZSBjaGUgc2kgb2NjdXBhIGRlbGxhIHBhZ2luYXppb25lIGRpIHVuYSB0YWJlbGxhICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwiYXBwLXBhZ2luZ1wiLFxyXG4gICAgdmlld1Byb3ZpZGVyczogW3sgcHJvdmlkZTogTG9jYWxpemF0aW9uU2VydmljZSwgdXNlQ2xhc3M6IFRhYmxlUGFnZXJMb2MgfV0sXHJcbiAgICBzdHlsZVVybHM6IFsnLi90YWJsZV9wYWdlci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgdGVtcGxhdGVVcmw6IFwiLi90YWJsZV9wYWdlci5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJsZVBhZ2VyQ29tcG9uZW50IHtcclxuXHJcbiAgICAvKiogRGltZW5zaW9uZSBkaSBwYWdpbmEgYXR0dWFsZSAqL1xyXG4gICAgQElucHV0KCkgQ3VycmVudFBhZ2VTaXplOiBhbnk7XHJcblxyXG4gICAgLyoqIFZpZXcgZ2VzdGl0YSwgY2hlIHB1w7IgZXNzZXJlIHVuIElBcHBTZWFyY2ggbyB1bmEgUmVwb3J0VmlldyAqL1xyXG4gICAgQElucHV0KCkgVmlldzogYW55O1xyXG5cclxuICAgIC8qKiBJbmRpY2Egc2UgZGV2ZSBtb3N0cmFyZSB1biB3YXJuaW5nIHF1YW5kbyBzaSBjZXJjYW5vIGRpIHNvbGV6aW9uYXJlIGNvbWUgZWxlbWVudGkgZGEgdmlzdWFsaXp6YXJlIFwiVHV0dGlcIiAqL1xyXG4gICAgQElucHV0KCkgV2Fybk9uQWxsOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICAvKiogSW5kaWNhIHNlIGRhcmUgbGEgcG9zc2liaWxpdMOgIG8gbWVubyBkaSBzZWxlemlvbmFyZSBcIlR1dHRpXCIgbmVsbGUgb3B6aW9uaSBkaSBwYWdpbmF6aW9uZSAqL1xyXG4gICAgQElucHV0KCkgQWxsU2VhcmNoOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIFxyXG4gICAgLyoqIFBsYWNlaG9sZGVyIGNoZSBpZGVudGlmaWNhIGlsIFwiVHV0dGlcIiAqL1xyXG4gICAgQElucHV0KCkgRGVmYXVsdEFsbCA9IDk5OTk5OTtcclxuICAgIFxyXG4gICAgLyoqIEluZGljYSBzZSBhdHRpdmFyZSBsYSBtb2RhbGl0w6AgZ3J1cHBvIGNvbiBzdGlsaSBwacO5IHNuZWxsaSBwZXIgYXBwYXJpcmUgc290dG8gYWkgcmFnZ3J1cHBhbWVudGkgKi9cclxuICAgIEBJbnB1dCgpIEdyb3VwTW9kZSA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBJbmRpY2Egc2UgdXRpbGl6emFyZSBpbCBjb250ZWdnaW8gZGVpIGdydXBwaSBvIGRlZ2xpIG9nZ2V0dGkgKi9cclxuICAgIEBJbnB1dCgpIEdyb3VwQ291bnQgPSBmYWxzZTtcclxuXHJcbiAgICAvKiogSW5kaWNhIGlsIHRlc3RvIGNoZSB2YSBhIHNvc3RpdHVpcmUgXCJPZ2dldHRpIFZpc3VhbGl6emF0aVwiIGluIGNhc28gc2kgc3RpYSBmYWNlbmRvIHF1YWxjb3NhIGRpIGN1c3RvbSwgSWdub3JhdG8gaW4gY2FzbyBkaSBncnVwcGkgKi9cclxuICAgIEBJbnB1dCgpIENvdW50TGFiZWw6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gICAgLyoqIEluZGljYSBzZSB2aXN1YWxpenphcmUgaWwgbnVtZXJvIHRvdGFsZSBkaSBvZ2dldGkgcHJlc2VudGkgKi9cclxuICAgIEBJbnB1dCgpIFNob3dDb3VudDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgLyoqIEluZGljYSBzZSB2aXN1YWxpenphcmUgaWwgbnVtZXJvIHRvdGFsZSBkaSBvZ2dldGkgcHJlc2VudGkgKi9cclxuICAgIEBJbnB1dCgpIFNob3dQYWdpbmc6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIC8qKiBJbmRpY2EgaWwgbnVtZXJvIHRvdGFsZSBkaSBvZ2dldGkgcHJlc2VudGkgKi9cclxuICAgIEBJbnB1dCgpIFBhZ2VyQ291bnQ6IG51bWJlcjtcclxuXHJcbiAgICAvKiogSW5kaWNhIHNlIG1vc3RyYXJlIG8gbWVubyBpbCBjb250ZW51dG8gQGRlcHJlY2F0ZWQgdXNhdGEgc29sbyBkYSBNYXRyaXhWYWx1ZXNDb21wb25lbnQgbmVsbGEgbGliIHJlbGF0aXZhICovXHJcbiAgICBASW5wdXQoKSBIaWRkZW46IGJvb2xlYW47XHJcblxyXG4gICAgLyoqIE91dHB1dCBpbnZvY2F0byBxdWFuZG8gaWwgbnVtZXJvIGRpIGVsZW1lbnRpIHBlciBwYWdpbmEgdmllbmUgbW9kaWZpY2F0byBkYSB1biBjbGljayB1dGVudGUgKi9cclxuICAgIEBPdXRwdXQoKSBwYWdpbmdTZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1zZ0V4dHM6IE1lc3NhZ2VTZXJ2aWNlLCBwdWJsaWMgbGM6IExvY2FsaXphdGlvblNlcnZpY2UsIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cclxuXHJcbiAgICAvKiogTW9kZWxsbyBzdSBjdWkgbGEgc2VsZWN0IGVmZmV0dHVhIG9wZXJhemlvbmkgZGkgc2VsZXppb25lICovXHJcbiAgICBwdWJsaWMgTW9kZWw6IG51bWJlcjtcclxuXHJcbiAgICAvKiogT3B6aW9uaSBkaSBwYWdpbmF6aW9uZSAqL1xyXG4gICAgcHVibGljIFBhZ2luZ09wdGlvbnM6IG51bWJlcltdID0gWzUsIDEwLCAxNSwgMzAsIDQ1LCAxMDAgXTtcclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5Nb2RlbCA9IHRoaXMuVmlldyA/ICh0aGlzLlZpZXcuaXRlbXNwZXJwYWdlb3ZlcnJpZGUgfHwgMTUpIDogdGhpcy5DdXJyZW50UGFnZVNpemU7XHJcbiAgICAgICAgaWYgKHRoaXMuQWxsU2VhcmNoKVxyXG4gICAgICAgICAgICB0aGlzLlBhZ2luZ09wdGlvbnMucHVzaCh0aGlzLkRlZmF1bHRBbGwpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICAgICAgbGV0IG5ld1ZpZXcgPSBjaGFuZ2VzWydWaWV3J107XHJcbiAgICAgICAgbGV0IG5ld0NQUyA9IGNoYW5nZXNbJ0N1cnJlbnRQYWdlU2l6ZSddO1xyXG5cclxuICAgICAgICBpZiAoKG5ld1ZpZXcgJiYgIW5ld1ZpZXcuZmlyc3RDaGFuZ2UpIHx8IChuZXdDUFMgJiYgIW5ld0NQUy5maXJzdENoYW5nZSkpXHJcbiAgICAgICAgICAgIHRoaXMuTW9kZWwgPSBuZXdWaWV3Py5jdXJyZW50VmFsdWUgPyAobmV3Vmlldy5jdXJyZW50VmFsdWUuaXRlbXNwZXJwYWdlb3ZlcnJpZGUgfHwgMTUpIDogbmV3Q1BTPy5jdXJyZW50VmFsdWUgPyBuZXdDUFMuY3VycmVudFZhbHVlIDogbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEZ1bnppb25lIHJpY2hpYW1hdGEgZGFsIHRlbXBsYXRlIHF1YW5kbyB1biB1dGVudGUgY2xpY2NhIHN1IHVuIG51bWVybyBkaSBwYWdpbmF6aW9uZS5cclxuICAgICAqIFxyXG4gICAgICogQ2xpY2NhcmUgMiB2b2x0ZSBzdWxsbyBzdGVzc28gbnVtZXJvIGNhdXNhIGNvbXVucXVlIHVuIHJlZnJlc2ggZGVpIGRhdGlcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHBhZ2VTaXplIERpbWVuc2lvbmUgc2VsZXppb25hdGEgbGF0byBVSVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2hvaWNlKHBhZ2VTaXplOiBudW1iZXIpIHtcclxuICAgICAgICBpZiAocGFnZVNpemUgPT0gdGhpcy5EZWZhdWx0QWxsICYmIHRoaXMuV2Fybk9uQWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVXYXJuaW5nV2l0aENob2ljZShcclxuICAgICAgICAgICAgICAgIHRoaXMubGMubG9jKFwiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJldHJpZXZlIGFsbCByZXN1bHRzP1wiKSxcclxuICAgICAgICAgICAgICAgIHRoaXMubGMubG9jKFwiVGhpcyBtaWdodCBzbG93IGRvd24gdGhlIHBhZ2UgYW5kIHBvc3NpYmx5IGNyYXNoIHRoZSBlbnRpcmUgYXBwbGljYXRpb25cIiksXHJcbiAgICAgICAgICAgICAgICAoKSA9PiB7IHRoaXMucGFnaW5nU2VsZWN0ZWQuZW1pdChwYWdlU2l6ZSk7IHRoaXMuTW9kZWwgPSBwYWdlU2l6ZTsgfSxcclxuICAgICAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBEaW8gc29sbyBzYSBwZXJjaMOpIG1pIHRvY2NhIGZhcmUgc3RhIHJvYmEuLi4gcXVpIGRlbnRybyBwZXIgcXVhbGNoZSBtb3Rpdm8gbGEgQ0Qgbm9uIHByZW5kZVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwcmV2TW9kZWwgPSB0aGlzLk1vZGVsO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuTW9kZWwgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLk1vZGVsID0gcHJldk1vZGVsO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5wYWdpbmdTZWxlY3RlZC5lbWl0KHBhZ2VTaXplKTtcclxuICAgICAgICAgICAgdGhpcy5Nb2RlbCA9IHBhZ2VTaXplO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIhSGlkZGVuXCI+XHJcbiAgPHNwYW4gY2xhc3M9XCJlc3QtZnMtMTRcIj4ge3tDb3VudExhYmVsICYmICFHcm91cE1vZGUgPyBDb3VudExhYmVsIDogKChHcm91cE1vZGUgPyAnU2hvd24gR3JvdXBzJyA6ICdTaG93biBFbGVtZW50cycpIHwgbG9jYWxpemUgOiBsYyl9fTombmJzcDs8L3NwYW4+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlNob3dQYWdpbmcgJiYgTW9kZWwgJiYgUGFnZXJDb3VudCA+IDEwXCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgW2FwcGVhcmFuY2VdPVwiJ2xlZ2FjeSdcIiBjbGFzcz1cIm1hdC1wYWdpbmF0b3ItcGFnZS1zaXplLXNlbGVjdCBlc3QtZnMtMTQgZXN0LWlwcC1ib2xkXCI+XHJcbiAgICAgIDxzZWxlY3QgbWF0TmF0aXZlQ29udHJvbCBbbmdNb2RlbF09XCJNb2RlbFwiIG5hbWU9XCJpbnB1dFwiIChuZ01vZGVsQ2hhbmdlKT1cImNob2ljZSgkZXZlbnQpXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcE9wdCBvZiBQYWdpbmdPcHRpb25zOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICA8b3B0aW9uICpuZ0lmPVwicE9wdCA9PSBEZWZhdWx0QWxsIHx8IFBhZ2VyQ291bnQgPj0gcE9wdCB8fCBQYWdlckNvdW50ID09IC0xIHx8IChpID4gMCAmJiBQYWdlckNvdW50ID49IFBhZ2luZ09wdGlvbnNbaS0xXSlcIiBbdmFsdWVdPVwicE9wdFwiPnt7IHBPcHQgPT0gRGVmYXVsdEFsbCA/ICgnQWxsJyB8IGxvY2FsaXplIDogbGMpIDogcE9wdC50b1N0cmluZygpfX08L29wdGlvbj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9zZWxlY3Q+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJlc3QtZnMtMTQgZXN0LWlwcC1ib2xkXCIgKm5nSWY9XCJTaG93Q291bnQgJiYgUGFnZXJDb3VudCAhPSAtMVwiPiZuYnNwOy8mbmJzcDs8L3NwYW4+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPHNwYW4gY2xhc3M9XCJlc3QtZnMtMTQgZXN0LWlwcC1ib2xkXCIgKm5nSWY9XCJTaG93Q291bnQgJiYgUGFnZXJDb3VudCAhPSAtMVwiPnt7UGFnZXJDb3VudCB8IG51bWJlciA6ICcwLjAtMCcgOiBsYy5Mb2NhbGV9fTwvc3Bhbj5cclxuPC9uZy1jb250YWluZXI+Il19
1
+ // Angular
2
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation } from "@angular/core";
3
+ // Configurazioni
4
+ import { LocalizationService } from "@esfaenza/localizations";
5
+ // Applicazione
6
+ import { TablePagerLoc } from "./table_pager.component.loc";
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@esfaenza/extensions";
9
+ import * as i2 from "@esfaenza/localizations";
10
+ import * as i3 from "@angular/common";
11
+ import * as i4 from "@angular/forms";
12
+ import * as i5 from "@angular/material/legacy-form-field";
13
+ import * as i6 from "@angular/material/legacy-input";
14
+ /** Componente che si occupa della paginazione di una tabella */
15
+ export class TablePagerComponent {
16
+ /** @ignore */
17
+ constructor(msgExts, lc, cdr) {
18
+ this.msgExts = msgExts;
19
+ this.lc = lc;
20
+ this.cdr = cdr;
21
+ /** Indica se deve mostrare un warning quando si cercano di solezionare come elementi da visualizzare "Tutti" */
22
+ this.WarnOnAll = true;
23
+ /** Indica se dare la possibilità o meno di selezionare "Tutti" nelle opzioni di paginazione */
24
+ this.AllSearch = true;
25
+ /** Placeholder che identifica il "Tutti" */
26
+ this.DefaultAll = 999999;
27
+ /** Indica se attivare la modalità gruppo con stili più snelli per apparire sotto ai raggruppamenti */
28
+ this.GroupMode = false;
29
+ /** Indica se utilizzare il conteggio dei gruppi o degli oggetti */
30
+ this.GroupCount = false;
31
+ /** Indica il testo che va a sostituire "Oggetti Visualizzati" in caso si stia facendo qualcosa di custom, Ignorato in caso di gruppi */
32
+ this.CountLabel = null;
33
+ /** Indica se visualizzare il numero totale di oggeti presenti */
34
+ this.ShowCount = true;
35
+ /** Indica se visualizzare il numero totale di oggeti presenti */
36
+ this.ShowPaging = true;
37
+ /** Output invocato quando il numero di elementi per pagina viene modificato da un click utente */
38
+ this.pagingSelected = new EventEmitter();
39
+ /** Opzioni di paginazione */
40
+ this.PagingOptions = [5, 10, 15, 30, 45, 100];
41
+ }
42
+ /** @ignore */
43
+ ngOnInit() {
44
+ this.Model = this.View ? (this.View.itemsperpageoverride || 15) : this.CurrentPageSize;
45
+ if (this.AllSearch)
46
+ this.PagingOptions.push(this.DefaultAll);
47
+ }
48
+ /** @ignore */
49
+ ngOnChanges(changes) {
50
+ let newView = changes['View'];
51
+ let newCPS = changes['CurrentPageSize'];
52
+ if ((newView && !newView.firstChange) || (newCPS && !newCPS.firstChange))
53
+ this.Model = newView?.currentValue ? (newView.currentValue.itemsperpageoverride || 15) : newCPS?.currentValue ? newCPS.currentValue : null;
54
+ }
55
+ /**
56
+ * Funzione richiamata dal template quando un utente clicca su un numero di paginazione.
57
+ *
58
+ * Cliccare 2 volte sullo stesso numero causa comunque un refresh dei dati
59
+ *
60
+ * @param {number} pageSize Dimensione selezionata lato UI
61
+ */
62
+ choice(pageSize) {
63
+ if (pageSize == this.DefaultAll && this.WarnOnAll) {
64
+ this.msgExts.simpleWarningWithChoice(this.lc.loc("Are you sure you want to retrieve all results?"), this.lc.loc("This might slow down the page and possibly crash the entire application"), () => { this.pagingSelected.emit(pageSize); this.Model = pageSize; }, () => {
65
+ // Dio solo sa perché mi tocca fare sta roba... qui dentro per qualche motivo la CD non prende
66
+ let prevModel = this.Model;
67
+ this.Model = null;
68
+ this.cdr.detectChanges();
69
+ this.Model = prevModel;
70
+ this.cdr.detectChanges();
71
+ });
72
+ }
73
+ else {
74
+ this.pagingSelected.emit(pageSize);
75
+ this.Model = pageSize;
76
+ }
77
+ }
78
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TablePagerComponent, deps: [{ token: i1.MessageService }, { token: i2.LocalizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
79
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TablePagerComponent, selector: "app-paging", inputs: { CurrentPageSize: "CurrentPageSize", View: "View", WarnOnAll: "WarnOnAll", AllSearch: "AllSearch", DefaultAll: "DefaultAll", GroupMode: "GroupMode", GroupCount: "GroupCount", CountLabel: "CountLabel", ShowCount: "ShowCount", ShowPaging: "ShowPaging", PagerCount: "PagerCount", Hidden: "Hidden" }, outputs: { pagingSelected: "pagingSelected" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!Hidden\">\r\n <span class=\"est-fs-14\"> {{CountLabel && !GroupMode ? CountLabel : ((GroupMode ? 'Shown Groups' : 'Shown Elements') | localize : lc)}}:&nbsp;</span>\r\n <ng-container *ngIf=\"ShowPaging && Model && PagerCount > 10\">\r\n <mat-form-field [appearance]=\"'legacy'\" class=\"mat-paginator-page-size-select est-fs-14 est-ipp-bold\">\r\n <select matNativeControl [ngModel]=\"Model\" name=\"input\" (ngModelChange)=\"choice($event)\">\r\n <ng-container *ngFor=\"let pOpt of PagingOptions; let i = index\">\r\n <option *ngIf=\"pOpt == DefaultAll || PagerCount >= pOpt || PagerCount == -1 || (i > 0 && PagerCount >= PagingOptions[i-1])\" [value]=\"pOpt\">{{ pOpt == DefaultAll ? ('All' | localize : lc) : pOpt.toString()}}</option>\r\n </ng-container>\r\n </select>\r\n </mat-form-field>\r\n <span class=\"est-fs-14 est-ipp-bold\" *ngIf=\"ShowCount && PagerCount != -1\">&nbsp;/&nbsp;</span>\r\n </ng-container>\r\n <span class=\"est-fs-14 est-ipp-bold\" *ngIf=\"ShowCount && PagerCount != -1\">{{PagerCount | number : '0.0-0' : lc.Locale}}</span>\r\n</ng-container>", styles: [".est-rg-ipp-sel-all,.est-rg-ipp-sel,.est-ipp-sel-all,.est-ipp-sel{color:#0275d8!important;cursor:pointer;text-decoration:none;display:block;display:inline}.est-ipp-bold{font-weight:700}.mat-paginator-page-size-select{margin:6px 4px 0;width:50px}.mat-paginator-page-size-select .mat-form-field-wrapper{height:52px!important;margin-top:-15px!important;padding:0!important}.mat-form-field-type-mat-native-select .mat-form-field-infix:after{margin-top:-5.5px!important}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLegacyInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", exportAs: ["matInput"] }, { kind: "pipe", type: i3.DecimalPipe, name: "number" }, { kind: "pipe", type: i2.LocalizePipe, name: "localize" }], viewProviders: [{ provide: LocalizationService, useClass: TablePagerLoc }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
80
+ }
81
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TablePagerComponent, decorators: [{
82
+ type: Component,
83
+ args: [{ selector: "app-paging", viewProviders: [{ provide: LocalizationService, useClass: TablePagerLoc }], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"!Hidden\">\r\n <span class=\"est-fs-14\"> {{CountLabel && !GroupMode ? CountLabel : ((GroupMode ? 'Shown Groups' : 'Shown Elements') | localize : lc)}}:&nbsp;</span>\r\n <ng-container *ngIf=\"ShowPaging && Model && PagerCount > 10\">\r\n <mat-form-field [appearance]=\"'legacy'\" class=\"mat-paginator-page-size-select est-fs-14 est-ipp-bold\">\r\n <select matNativeControl [ngModel]=\"Model\" name=\"input\" (ngModelChange)=\"choice($event)\">\r\n <ng-container *ngFor=\"let pOpt of PagingOptions; let i = index\">\r\n <option *ngIf=\"pOpt == DefaultAll || PagerCount >= pOpt || PagerCount == -1 || (i > 0 && PagerCount >= PagingOptions[i-1])\" [value]=\"pOpt\">{{ pOpt == DefaultAll ? ('All' | localize : lc) : pOpt.toString()}}</option>\r\n </ng-container>\r\n </select>\r\n </mat-form-field>\r\n <span class=\"est-fs-14 est-ipp-bold\" *ngIf=\"ShowCount && PagerCount != -1\">&nbsp;/&nbsp;</span>\r\n </ng-container>\r\n <span class=\"est-fs-14 est-ipp-bold\" *ngIf=\"ShowCount && PagerCount != -1\">{{PagerCount | number : '0.0-0' : lc.Locale}}</span>\r\n</ng-container>", styles: [".est-rg-ipp-sel-all,.est-rg-ipp-sel,.est-ipp-sel-all,.est-ipp-sel{color:#0275d8!important;cursor:pointer;text-decoration:none;display:block;display:inline}.est-ipp-bold{font-weight:700}.mat-paginator-page-size-select{margin:6px 4px 0;width:50px}.mat-paginator-page-size-select .mat-form-field-wrapper{height:52px!important;margin-top:-15px!important;padding:0!important}.mat-form-field-type-mat-native-select .mat-form-field-infix:after{margin-top:-5.5px!important}\n"] }]
84
+ }], ctorParameters: () => [{ type: i1.MessageService }, { type: i2.LocalizationService }, { type: i0.ChangeDetectorRef }], propDecorators: { CurrentPageSize: [{
85
+ type: Input
86
+ }], View: [{
87
+ type: Input
88
+ }], WarnOnAll: [{
89
+ type: Input
90
+ }], AllSearch: [{
91
+ type: Input
92
+ }], DefaultAll: [{
93
+ type: Input
94
+ }], GroupMode: [{
95
+ type: Input
96
+ }], GroupCount: [{
97
+ type: Input
98
+ }], CountLabel: [{
99
+ type: Input
100
+ }], ShowCount: [{
101
+ type: Input
102
+ }], ShowPaging: [{
103
+ type: Input
104
+ }], PagerCount: [{
105
+ type: Input
106
+ }], Hidden: [{
107
+ type: Input
108
+ }], pagingSelected: [{
109
+ type: Output
110
+ }] } });
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGVfcGFnZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtdGFibGUvc3JjL2xpYi9jb21wb25lbnRzL3BhZ2VyL3RhYmxlX3BhZ2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLXRhYmxlL3NyYy9saWIvY29tcG9uZW50cy9wYWdlci90YWJsZV9wYWdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFVLEtBQUssRUFBWSxNQUFNLEVBQWlCLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZLLGlCQUFpQjtBQUNqQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUc5RCxlQUFlO0FBQ2YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7OztBQUU1RCxnRUFBZ0U7QUFTaEUsTUFBTSxPQUFPLG1CQUFtQjtJQXlDNUIsY0FBYztJQUNkLFlBQW9CLE9BQXVCLEVBQVMsRUFBdUIsRUFBUyxHQUFzQjtRQUF0RixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUFTLE9BQUUsR0FBRixFQUFFLENBQXFCO1FBQVMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFsQzFHLGdIQUFnSDtRQUN2RyxjQUFTLEdBQVksSUFBSSxDQUFDO1FBRW5DLCtGQUErRjtRQUN0RixjQUFTLEdBQVksSUFBSSxDQUFDO1FBRW5DLDRDQUE0QztRQUNuQyxlQUFVLEdBQUcsTUFBTSxDQUFDO1FBRTdCLHNHQUFzRztRQUM3RixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRTNCLG1FQUFtRTtRQUMxRCxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRTVCLHdJQUF3STtRQUMvSCxlQUFVLEdBQVcsSUFBSSxDQUFD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RUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLENBQUMsaUJBRzNELGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07cUpBS3RDLGVBQWU7c0JBQXZCLEtBQUs7Z0JBR0csSUFBSTtzQkFBWixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csVUFBVTtzQkFBbEIsS0FBSztnQkFHRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdHLE1BQU07c0JBQWQsS0FBSztnQkFHSSxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPcHRpb25hbCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vLyBDb25maWd1cmF6aW9uaVxyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25TZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9sb2NhbGl6YXRpb25zXCI7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9leHRlbnNpb25zXCI7XHJcblxyXG4vLyBBcHBsaWNhemlvbmVcclxuaW1wb3J0IHsgVGFibGVQYWdlckxvYyB9IGZyb20gXCIuL3RhYmxlX3BhZ2VyLmNvbXBvbmVudC5sb2NcIjtcclxuXHJcbi8qKiBDb21wb25lbnRlIGNoZSBzaSBvY2N1cGEgZGVsbGEgcGFnaW5hemlvbmUgZGkgdW5hIHRhYmVsbGEgKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJhcHAtcGFnaW5nXCIsXHJcbiAgICB2aWV3UHJvdmlkZXJzOiBbeyBwcm92aWRlOiBMb2NhbGl6YXRpb25TZXJ2aWNlLCB1c2VDbGFzczogVGFibGVQYWdlckxvYyB9XSxcclxuICAgIHN0eWxlVXJsczogWycuL3RhYmxlX3BhZ2VyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICB0ZW1wbGF0ZVVybDogXCIuL3RhYmxlX3BhZ2VyLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYmxlUGFnZXJDb21wb25lbnQge1xyXG5cclxuICAgIC8qKiBEaW1lbnNpb25lIGRpIHBhZ2luYSBhdHR1YWxlICovXHJcbiAgICBASW5wdXQoKSBDdXJyZW50UGFnZVNpemU6IGFueTtcclxuXHJcbiAgICAvKiogVmlldyBnZXN0aXRhLCBjaGUgcHXDsiBlc3NlcmUgdW4gSUFwcFNlYXJjaCBvIHVuYSBSZXBvcnRWaWV3ICovXHJcbiAgICBASW5wdXQoKSBWaWV3OiBhbnk7XHJcblxyXG4gICAgLyoqIEluZGljYSBzZSBkZXZlIG1vc3RyYXJlIHVuIHdhcm5pbmcgcXVhbmRvIHNpIGNlcmNhbm8gZGkgc29sZXppb25hcmUgY29tZSBlbGVtZW50aSBkYSB2aXN1YWxpenphcmUgXCJUdXR0aVwiICovXHJcbiAgICBASW5wdXQoKSBXYXJuT25BbGw6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIC8qKiBJbmRpY2Egc2UgZGFyZSBsYSBwb3NzaWJpbGl0w6AgbyBtZW5vIGRpIHNlbGV6aW9uYXJlIFwiVHV0dGlcIiBuZWxsZSBvcHppb25pIGRpIHBhZ2luYXppb25lICovXHJcbiAgICBASW5wdXQoKSBBbGxTZWFyY2g6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgXHJcbiAgICAvKiogUGxhY2Vob2xkZXIgY2hlIGlkZW50aWZpY2EgaWwgXCJUdXR0aVwiICovXHJcbiAgICBASW5wdXQoKSBEZWZhdWx0QWxsID0gOTk5OTk5O1xyXG4gICAgXHJcbiAgICAvKiogSW5kaWNhIHNlIGF0dGl2YXJlIGxhIG1vZGFsaXTDoCBncnVwcG8gY29uIHN0aWxpIHBpw7kgc25lbGxpIHBlciBhcHBhcmlyZSBzb3R0byBhaSByYWdncnVwcGFtZW50aSAqL1xyXG4gICAgQElucHV0KCkgR3JvdXBNb2RlID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIEluZGljYSBzZSB1dGlsaXp6YXJlIGlsIGNvbnRlZ2dpbyBkZWkgZ3J1cHBpIG8gZGVnbGkgb2dnZXR0aSAqL1xyXG4gICAgQElucHV0KCkgR3JvdXBDb3VudCA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBJbmRpY2EgaWwgdGVzdG8gY2hlIHZhIGEgc29zdGl0dWlyZSBcIk9nZ2V0dGkgVmlzdWFsaXp6YXRpXCIgaW4gY2FzbyBzaSBzdGlhIGZhY2VuZG8gcXVhbGNvc2EgZGkgY3VzdG9tLCBJZ25vcmF0byBpbiBjYXNvIGRpIGdydXBwaSAqL1xyXG4gICAgQElucHV0KCkgQ291bnRMYWJlbDogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgICAvKiogSW5kaWNhIHNlIHZpc3VhbGl6emFyZSBpbCBudW1lcm8gdG90YWxlIGRpIG9nZ2V0aSBwcmVzZW50aSAqL1xyXG4gICAgQElucHV0KCkgU2hvd0NvdW50OiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICAvKiogSW5kaWNhIHNlIHZpc3VhbGl6emFyZSBpbCBudW1lcm8gdG90YWxlIGRpIG9nZ2V0aSBwcmVzZW50aSAqL1xyXG4gICAgQElucHV0KCkgU2hvd1BhZ2luZzogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgLyoqIEluZGljYSBpbCBudW1lcm8gdG90YWxlIGRpIG9nZ2V0aSBwcmVzZW50aSAqL1xyXG4gICAgQElucHV0KCkgUGFnZXJDb3VudDogbnVtYmVyO1xyXG5cclxuICAgIC8qKiBJbmRpY2Egc2UgbW9zdHJhcmUgbyBtZW5vIGlsIGNvbnRlbnV0byBAZGVwcmVjYXRlZCB1c2F0YSBzb2xvIGRhIE1hdHJpeFZhbHVlc0NvbXBvbmVudCBuZWxsYSBsaWIgcmVsYXRpdmEgKi9cclxuICAgIEBJbnB1dCgpIEhpZGRlbjogYm9vbGVhbjtcclxuXHJcbiAgICAvKiogT3V0cHV0IGludm9jYXRvIHF1YW5kbyBpbCBudW1lcm8gZGkgZWxlbWVudGkgcGVyIHBhZ2luYSB2aWVuZSBtb2RpZmljYXRvIGRhIHVuIGNsaWNrIHV0ZW50ZSAqL1xyXG4gICAgQE91dHB1dCgpIHBhZ2luZ1NlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgbXNnRXh0czogTWVzc2FnZVNlcnZpY2UsIHB1YmxpYyBsYzogTG9jYWxpemF0aW9uU2VydmljZSwgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHsgfVxyXG5cclxuICAgIC8qKiBNb2RlbGxvIHN1IGN1aSBsYSBzZWxlY3QgZWZmZXR0dWEgb3BlcmF6aW9uaSBkaSBzZWxlemlvbmUgKi9cclxuICAgIHB1YmxpYyBNb2RlbDogbnVtYmVyO1xyXG5cclxuICAgIC8qKiBPcHppb25pIGRpIHBhZ2luYXppb25lICovXHJcbiAgICBwdWJsaWMgUGFnaW5nT3B0aW9uczogbnVtYmVyW10gPSBbNSwgMTAsIDE1LCAzMCwgNDUsIDEwMCBdO1xyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLk1vZGVsID0gdGhpcy5WaWV3ID8gKHRoaXMuVmlldy5pdGVtc3BlcnBhZ2VvdmVycmlkZSB8fCAxNSkgOiB0aGlzLkN1cnJlbnRQYWdlU2l6ZTtcclxuICAgICAgICBpZiAodGhpcy5BbGxTZWFyY2gpXHJcbiAgICAgICAgICAgIHRoaXMuUGFnaW5nT3B0aW9ucy5wdXNoKHRoaXMuRGVmYXVsdEFsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgICBsZXQgbmV3VmlldyA9IGNoYW5nZXNbJ1ZpZXcnXTtcclxuICAgICAgICBsZXQgbmV3Q1BTID0gY2hhbmdlc1snQ3VycmVudFBhZ2VTaXplJ107XHJcblxyXG4gICAgICAgIGlmICgobmV3VmlldyAmJiAhbmV3Vmlldy5maXJzdENoYW5nZSkgfHwgKG5ld0NQUyAmJiAhbmV3Q1BTLmZpcnN0Q2hhbmdlKSlcclxuICAgICAgICAgICAgdGhpcy5Nb2RlbCA9IG5ld1ZpZXc/LmN1cnJlbnRWYWx1ZSA/IChuZXdWaWV3LmN1cnJlbnRWYWx1ZS5pdGVtc3BlcnBhZ2VvdmVycmlkZSB8fCAxNSkgOiBuZXdDUFM/LmN1cnJlbnRWYWx1ZSA/IG5ld0NQUy5jdXJyZW50VmFsdWUgOiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRnVuemlvbmUgcmljaGlhbWF0YSBkYWwgdGVtcGxhdGUgcXVhbmRvIHVuIHV0ZW50ZSBjbGljY2Egc3UgdW4gbnVtZXJvIGRpIHBhZ2luYXppb25lLlxyXG4gICAgICogXHJcbiAgICAgKiBDbGljY2FyZSAyIHZvbHRlIHN1bGxvIHN0ZXNzbyBudW1lcm8gY2F1c2EgY29tdW5xdWUgdW4gcmVmcmVzaCBkZWkgZGF0aVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcGFnZVNpemUgRGltZW5zaW9uZSBzZWxlemlvbmF0YSBsYXRvIFVJXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjaG9pY2UocGFnZVNpemU6IG51bWJlcikge1xyXG4gICAgICAgIGlmIChwYWdlU2l6ZSA9PSB0aGlzLkRlZmF1bHRBbGwgJiYgdGhpcy5XYXJuT25BbGwpIHtcclxuICAgICAgICAgICAgdGhpcy5tc2dFeHRzLnNpbXBsZVdhcm5pbmdXaXRoQ2hvaWNlKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5sYy5sb2MoXCJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmV0cmlldmUgYWxsIHJlc3VsdHM/XCIpLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5sYy5sb2MoXCJUaGlzIG1pZ2h0IHNsb3cgZG93biB0aGUgcGFnZSBhbmQgcG9zc2libHkgY3Jhc2ggdGhlIGVudGlyZSBhcHBsaWNhdGlvblwiKSxcclxuICAgICAgICAgICAgICAgICgpID0+IHsgdGhpcy5wYWdpbmdTZWxlY3RlZC5lbWl0KHBhZ2VTaXplKTsgdGhpcy5Nb2RlbCA9IHBhZ2VTaXplOyB9LFxyXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIERpbyBzb2xvIHNhIHBlcmNow6kgbWkgdG9jY2EgZmFyZSBzdGEgcm9iYS4uLiBxdWkgZGVudHJvIHBlciBxdWFsY2hlIG1vdGl2byBsYSBDRCBub24gcHJlbmRlXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHByZXZNb2RlbCA9IHRoaXMuTW9kZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5Nb2RlbCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuTW9kZWwgPSBwcmV2TW9kZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnBhZ2luZ1NlbGVjdGVkLmVtaXQocGFnZVNpemUpO1xyXG4gICAgICAgICAgICB0aGlzLk1vZGVsID0gcGFnZVNpemU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59IiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFIaWRkZW5cIj5cclxuICA8c3BhbiBjbGFzcz1cImVzdC1mcy0xNFwiPiB7e0NvdW50TGFiZWwgJiYgIUdyb3VwTW9kZSA/IENvdW50TGFiZWwgOiAoKEdyb3VwTW9kZSA/ICdTaG93biBHcm91cHMnIDogJ1Nob3duIEVsZW1lbnRzJykgfCBsb2NhbGl6ZSA6IGxjKX19OiZuYnNwOzwvc3Bhbj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiU2hvd1BhZ2luZyAmJiBNb2RlbCAmJiBQYWdlckNvdW50ID4gMTBcIj5cclxuICAgIDxtYXQtZm9ybS1maWVsZCBbYXBwZWFyYW5jZV09XCInbGVnYWN5J1wiIGNsYXNzPVwibWF0LXBhZ2luYXRvci1wYWdlLXNpemUtc2VsZWN0IGVzdC1mcy0xNCBlc3QtaXBwLWJvbGRcIj5cclxuICAgICAgPHNlbGVjdCBtYXROYXRpdmVDb250cm9sIFtuZ01vZGVsXT1cIk1vZGVsXCIgbmFtZT1cImlucHV0XCIgKG5nTW9kZWxDaGFuZ2UpPVwiY2hvaWNlKCRldmVudClcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwT3B0IG9mIFBhZ2luZ09wdGlvbnM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgIDxvcHRpb24gKm5nSWY9XCJwT3B0ID09IERlZmF1bHRBbGwgfHwgUGFnZXJDb3VudCA+PSBwT3B0IHx8IFBhZ2VyQ291bnQgPT0gLTEgfHwgKGkgPiAwICYmIFBhZ2VyQ291bnQgPj0gUGFnaW5nT3B0aW9uc1tpLTFdKVwiIFt2YWx1ZV09XCJwT3B0XCI+e3sgcE9wdCA9PSBEZWZhdWx0QWxsID8gKCdBbGwnIHwgbG9jYWxpemUgOiBsYykgOiBwT3B0LnRvU3RyaW5nKCl9fTwvb3B0aW9uPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L3NlbGVjdD5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8c3BhbiBjbGFzcz1cImVzdC1mcy0xNCBlc3QtaXBwLWJvbGRcIiAqbmdJZj1cIlNob3dDb3VudCAmJiBQYWdlckNvdW50ICE9IC0xXCI+Jm5ic3A7LyZuYnNwOzwvc3Bhbj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8c3BhbiBjbGFzcz1cImVzdC1mcy0xNCBlc3QtaXBwLWJvbGRcIiAqbmdJZj1cIlNob3dDb3VudCAmJiBQYWdlckNvdW50ICE9IC0xXCI+e3tQYWdlckNvdW50IHwgbnVtYmVyIDogJzAuMC0wJyA6IGxjLkxvY2FsZX19PC9zcGFuPlxyXG48L25nLWNvbnRhaW5lcj4iXX0=
@@ -1,44 +1,44 @@
1
- // Angular
2
- import { Pipe } from "@angular/core";
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@esfaenza/extensions";
5
- export class EstFormatPipe {
6
- constructor(dates) {
7
- this.dates = dates;
8
- }
9
- transform(value, format) {
10
- if (!format) {
11
- // Se è un formato data mi assicuro di non stampare mai una data 00:00:00 altrimenti in esportazione viene uno schifo
12
- return value ? this.dates.trimSeconds(value.toString()) : "";
13
- }
14
- else {
15
- // Caso formato numerico
16
- if (format.startsWith("F")) {
17
- if (!value)
18
- return "";
19
- if (format.length != 2)
20
- return value.toString().replace(/,/, "").replace(".", ",");
21
- else {
22
- let tmp = parseFloat(value);
23
- let cifre = parseInt(format[1]);
24
- if (isNaN(tmp) || isNaN(cifre))
25
- return "";
26
- return (Math.trunc(tmp * Math.pow(10, cifre)) / Math.pow(10, cifre)).toString();
27
- }
28
- }
29
- else {
30
- // Se ho un formato data trasformo in dayjs, formatto ed esporto
31
- // Per la trasformazione in dayjs provo prima a passargli la stringa di netto, sperando la riconosca
32
- // Se non funziona provo a definirgli la formattazione standard del metering per quel linguaggio
33
- return this.dates.getFormatted(value, format.length <= 10, format.length > 16);
34
- }
35
- }
36
- }
37
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EstFormatPipe, deps: [{ token: i1.DateService }], target: i0.ɵɵFactoryTarget.Pipe }); }
38
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: EstFormatPipe, name: "est_format" }); }
39
- }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EstFormatPipe, decorators: [{
41
- type: Pipe,
42
- args: [{ name: 'est_format' }]
43
- }], ctorParameters: function () { return [{ type: i1.DateService }]; } });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXN0LWZvcm1hdC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtdGFibGUvc3JjL2xpYi9jb21wb25lbnRzL3BpcGVzL2VzdC1mb3JtYXQucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7OztBQUlwRCxNQUFNLE9BQU8sYUFBYTtJQUV0QixZQUFvQixLQUFrQjtRQUFsQixVQUFLLEdBQUwsS0FBSyxDQUFhO0lBQUksQ0FBQztJQUUzQyxTQUFTLENBQUMsS0FBYSxFQUFFLE1BQWM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULHFIQUFxSDtZQUNySCxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNoRTthQUFNO1lBQ0gsd0JBQXdCO1lBQ3hCLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDeEIsSUFBSSxDQUFDLEtBQUs7b0JBQ04sT0FBTyxFQUFFLENBQUM7Z0JBRWQsSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUM7b0JBQ2xCLE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztxQkFFMUQ7b0JBQ0QsSUFBSSxHQUFHLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUM1QixJQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2hDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUM7d0JBQUUsT0FBTyxFQUFFLENBQUM7b0JBRTFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7aUJBQ25GO2FBQ0o7aUJBQU07Z0JBQ0gsZ0VBQWdFO2dCQUNoRSxvR0FBb0c7Z0JBQ3BHLGdHQUFnRztnQkFDaEcsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLE1BQU0sSUFBSSxFQUFFLEVBQUUsTUFBTSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQzthQUNsRjtTQUNKO0lBQ0wsQ0FBQzsrR0EvQlEsYUFBYTs2R0FBYixhQUFhOzs0RkFBYixhQUFhO2tCQUR6QixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IERhdGVTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9leHRlbnNpb25zXCI7XHJcblxyXG5AUGlwZSh7IG5hbWU6ICdlc3RfZm9ybWF0JyB9KVxyXG5leHBvcnQgY2xhc3MgRXN0Rm9ybWF0UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0ZXM6IERhdGVTZXJ2aWNlKSB7IH1cclxuXHJcbiAgICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZywgZm9ybWF0OiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAoIWZvcm1hdCkge1xyXG4gICAgICAgICAgICAvLyBTZSDDqCB1biBmb3JtYXRvIGRhdGEgbWkgYXNzaWN1cm8gZGkgbm9uIHN0YW1wYXJlIG1haSB1bmEgZGF0YSAwMDowMDowMCBhbHRyaW1lbnRpIGluIGVzcG9ydGF6aW9uZSB2aWVuZSB1bm8gc2NoaWZvXHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZSA/IHRoaXMuZGF0ZXMudHJpbVNlY29uZHModmFsdWUudG9TdHJpbmcoKSkgOiBcIlwiO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIENhc28gZm9ybWF0byBudW1lcmljb1xyXG4gICAgICAgICAgICBpZiAoZm9ybWF0LnN0YXJ0c1dpdGgoXCJGXCIpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChmb3JtYXQubGVuZ3RoICE9IDIpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCkucmVwbGFjZSgvLC8sIFwiXCIpLnJlcGxhY2UoXCIuXCIsIFwiLFwiKTtcclxuXHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdG1wID0gcGFyc2VGbG9hdCh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNpZnJlID0gcGFyc2VJbnQoZm9ybWF0WzFdKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNOYU4odG1wKSB8fCBpc05hTihjaWZyZSkpIHJldHVybiBcIlwiO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKE1hdGgudHJ1bmModG1wICogTWF0aC5wb3coMTAsIGNpZnJlKSkgLyBNYXRoLnBvdygxMCwgY2lmcmUpKS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gU2UgaG8gdW4gZm9ybWF0byBkYXRhIHRyYXNmb3JtbyBpbiBkYXlqcywgZm9ybWF0dG8gZWQgZXNwb3J0b1xyXG4gICAgICAgICAgICAgICAgLy8gUGVyIGxhIHRyYXNmb3JtYXppb25lIGluIGRheWpzIHByb3ZvIHByaW1hIGEgcGFzc2FyZ2xpIGxhIHN0cmluZ2EgZGkgbmV0dG8sIHNwZXJhbmRvIGxhIHJpY29ub3NjYVxyXG4gICAgICAgICAgICAgICAgLy8gU2Ugbm9uIGZ1bnppb25hIHByb3ZvIGEgZGVmaW5pcmdsaSBsYSBmb3JtYXR0YXppb25lIHN0YW5kYXJkIGRlbCBtZXRlcmluZyBwZXIgcXVlbCBsaW5ndWFnZ2lvXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRlcy5nZXRGb3JtYXR0ZWQodmFsdWUsIGZvcm1hdC5sZW5ndGggPD0gMTAsIGZvcm1hdC5sZW5ndGggPiAxNik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iXX0=
1
+ // Angular
2
+ import { Pipe } from "@angular/core";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@esfaenza/extensions";
5
+ export class EstFormatPipe {
6
+ constructor(dates) {
7
+ this.dates = dates;
8
+ }
9
+ transform(value, format) {
10
+ if (!format) {
11
+ // Se è un formato data mi assicuro di non stampare mai una data 00:00:00 altrimenti in esportazione viene uno schifo
12
+ return value ? this.dates.trimSeconds(value.toString()) : "";
13
+ }
14
+ else {
15
+ // Caso formato numerico
16
+ if (format.startsWith("F")) {
17
+ if (!value)
18
+ return "";
19
+ if (format.length != 2)
20
+ return value.toString().replace(/,/, "").replace(".", ",");
21
+ else {
22
+ let tmp = parseFloat(value);
23
+ let cifre = parseInt(format[1]);
24
+ if (isNaN(tmp) || isNaN(cifre))
25
+ return "";
26
+ return (Math.trunc(tmp * Math.pow(10, cifre)) / Math.pow(10, cifre)).toString();
27
+ }
28
+ }
29
+ else {
30
+ // Se ho un formato data trasformo in dayjs, formatto ed esporto
31
+ // Per la trasformazione in dayjs provo prima a passargli la stringa di netto, sperando la riconosca
32
+ // Se non funziona provo a definirgli la formattazione standard del metering per quel linguaggio
33
+ return this.dates.getFormatted(value, format.length <= 10, format.length > 16);
34
+ }
35
+ }
36
+ }
37
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EstFormatPipe, deps: [{ token: i1.DateService }], target: i0.ɵɵFactoryTarget.Pipe }); }
38
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: EstFormatPipe, name: "est_format" }); }
39
+ }
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EstFormatPipe, decorators: [{
41
+ type: Pipe,
42
+ args: [{ name: 'est_format' }]
43
+ }], ctorParameters: () => [{ type: i1.DateService }] });
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXN0LWZvcm1hdC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtdGFibGUvc3JjL2xpYi9jb21wb25lbnRzL3BpcGVzL2VzdC1mb3JtYXQucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7OztBQUlwRCxNQUFNLE9BQU8sYUFBYTtJQUV0QixZQUFvQixLQUFrQjtRQUFsQixVQUFLLEdBQUwsS0FBSyxDQUFhO0lBQUksQ0FBQztJQUUzQyxTQUFTLENBQUMsS0FBYSxFQUFFLE1BQWM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1YscUhBQXFIO1lBQ3JILE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2pFLENBQUM7YUFBTSxDQUFDO1lBQ0osd0JBQXdCO1lBQ3hCLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsS0FBSztvQkFDTixPQUFPLEVBQUUsQ0FBQztnQkFFZCxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQztvQkFDbEIsT0FBTyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO3FCQUUxRCxDQUFDO29CQUNGLElBQUksR0FBRyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDNUIsSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNoQyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDO3dCQUFFLE9BQU8sRUFBRSxDQUFDO29CQUUxQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNwRixDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLGdFQUFnRTtnQkFDaEUsb0dBQW9HO2dCQUNwRyxnR0FBZ0c7Z0JBQ2hHLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLElBQUksRUFBRSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDbkYsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDOytHQS9CUSxhQUFhOzZHQUFiLGFBQWE7OzRGQUFiLGFBQWE7a0JBRHpCLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRGF0ZVNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2V4dGVuc2lvbnNcIjtcclxuXHJcbkBQaXBlKHsgbmFtZTogJ2VzdF9mb3JtYXQnIH0pXHJcbmV4cG9ydCBjbGFzcyBFc3RGb3JtYXRQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRlczogRGF0ZVNlcnZpY2UpIHsgfVxyXG5cclxuICAgIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nLCBmb3JtYXQ6IHN0cmluZykge1xyXG4gICAgICAgIGlmICghZm9ybWF0KSB7XHJcbiAgICAgICAgICAgIC8vIFNlIMOoIHVuIGZvcm1hdG8gZGF0YSBtaSBhc3NpY3VybyBkaSBub24gc3RhbXBhcmUgbWFpIHVuYSBkYXRhIDAwOjAwOjAwIGFsdHJpbWVudGkgaW4gZXNwb3J0YXppb25lIHZpZW5lIHVubyBzY2hpZm9cclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlID8gdGhpcy5kYXRlcy50cmltU2Vjb25kcyh2YWx1ZS50b1N0cmluZygpKSA6IFwiXCI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy8gQ2FzbyBmb3JtYXRvIG51bWVyaWNvXHJcbiAgICAgICAgICAgIGlmIChmb3JtYXQuc3RhcnRzV2l0aChcIkZcIikpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdmFsdWUpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGZvcm1hdC5sZW5ndGggIT0gMilcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKS5yZXBsYWNlKC8sLywgXCJcIikucmVwbGFjZShcIi5cIiwgXCIsXCIpO1xyXG5cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB0bXAgPSBwYXJzZUZsb2F0KHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY2lmcmUgPSBwYXJzZUludChmb3JtYXRbMV0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc05hTih0bXApIHx8IGlzTmFOKGNpZnJlKSkgcmV0dXJuIFwiXCI7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoTWF0aC50cnVuYyh0bXAgKiBNYXRoLnBvdygxMCwgY2lmcmUpKSAvIE1hdGgucG93KDEwLCBjaWZyZSkpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBTZSBobyB1biBmb3JtYXRvIGRhdGEgdHJhc2Zvcm1vIGluIGRheWpzLCBmb3JtYXR0byBlZCBlc3BvcnRvXHJcbiAgICAgICAgICAgICAgICAvLyBQZXIgbGEgdHJhc2Zvcm1hemlvbmUgaW4gZGF5anMgcHJvdm8gcHJpbWEgYSBwYXNzYXJnbGkgbGEgc3RyaW5nYSBkaSBuZXR0bywgc3BlcmFuZG8gbGEgcmljb25vc2NhXHJcbiAgICAgICAgICAgICAgICAvLyBTZSBub24gZnVuemlvbmEgcHJvdm8gYSBkZWZpbmlyZ2xpIGxhIGZvcm1hdHRhemlvbmUgc3RhbmRhcmQgZGVsIG1ldGVyaW5nIHBlciBxdWVsIGxpbmd1YWdnaW9cclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGVzLmdldEZvcm1hdHRlZCh2YWx1ZSwgZm9ybWF0Lmxlbmd0aCA8PSAxMCwgZm9ybWF0Lmxlbmd0aCA+IDE2KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==
@@ -1,19 +1,19 @@
1
- // Angular
2
- import { Pipe } from "@angular/core";
3
- import * as i0 from "@angular/core";
4
- export class EstLookupPipe {
5
- transform(value, source) {
6
- for (let i = 0; i < source.length; i++) {
7
- if (source[i].id == value)
8
- return source[i];
9
- }
10
- return { id: "", description: "" };
11
- }
12
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EstLookupPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
13
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: EstLookupPipe, name: "est_lookup" }); }
14
- }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EstLookupPipe, decorators: [{
16
- type: Pipe,
17
- args: [{ name: 'est_lookup' }]
18
- }] });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXN0LWxvb2t1cC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtdGFibGUvc3JjL2xpYi9jb21wb25lbnRzL3BpcGVzL2VzdC1sb29rdXAucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBR3BELE1BQU0sT0FBTyxhQUFhO0lBRXRCLFNBQVMsQ0FBQyxLQUFhLEVBQUUsTUFBNkM7UUFDbEUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDcEMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEtBQUs7Z0JBQ3JCLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3hCO1FBQ0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7K0dBUlEsYUFBYTs2R0FBYixhQUFhOzs0RkFBYixhQUFhO2tCQUR6QixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5AUGlwZSh7IG5hbWU6ICdlc3RfbG9va3VwJyB9KVxyXG5leHBvcnQgY2xhc3MgRXN0TG9va3VwUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cclxuICAgIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nLCBzb3VyY2U6IHsgaWQ6IHN0cmluZywgZGVzY3JpcHRpb246IHN0cmluZyB9W10pIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNvdXJjZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoc291cmNlW2ldLmlkID09IHZhbHVlKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNvdXJjZVtpXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHsgaWQ6IFwiXCIsIGRlc2NyaXB0aW9uOiBcIlwiIH07XHJcbiAgICB9XHJcbn0iXX0=
1
+ // Angular
2
+ import { Pipe } from "@angular/core";
3
+ import * as i0 from "@angular/core";
4
+ export class EstLookupPipe {
5
+ transform(value, source) {
6
+ for (let i = 0; i < source.length; i++) {
7
+ if (source[i].id == value)
8
+ return source[i];
9
+ }
10
+ return { id: "", description: "" };
11
+ }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EstLookupPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
13
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: EstLookupPipe, name: "est_lookup" }); }
14
+ }
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EstLookupPipe, decorators: [{
16
+ type: Pipe,
17
+ args: [{ name: 'est_lookup' }]
18
+ }] });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXN0LWxvb2t1cC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtdGFibGUvc3JjL2xpYi9jb21wb25lbnRzL3BpcGVzL2VzdC1sb29rdXAucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBR3BELE1BQU0sT0FBTyxhQUFhO0lBRXRCLFNBQVMsQ0FBQyxLQUFhLEVBQUUsTUFBNkM7UUFDbEUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNyQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksS0FBSztnQkFDckIsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekIsQ0FBQztRQUNELE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUN2QyxDQUFDOytHQVJRLGFBQWE7NkdBQWIsYUFBYTs7NEZBQWIsYUFBYTtrQkFEekIsSUFBSTttQkFBQyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuQFBpcGUoeyBuYW1lOiAnZXN0X2xvb2t1cCcgfSlcclxuZXhwb3J0IGNsYXNzIEVzdExvb2t1cFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcbiAgICB0cmFuc2Zvcm0odmFsdWU6IHN0cmluZywgc291cmNlOiB7IGlkOiBzdHJpbmcsIGRlc2NyaXB0aW9uOiBzdHJpbmcgfVtdKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3VyY2UubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHNvdXJjZVtpXS5pZCA9PSB2YWx1ZSlcclxuICAgICAgICAgICAgICAgIHJldHVybiBzb3VyY2VbaV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7IGlkOiBcIlwiLCBkZXNjcmlwdGlvbjogXCJcIiB9O1xyXG4gICAgfVxyXG59Il19
@@ -1,19 +1,19 @@
1
- // Angular
2
- import { Pipe } from "@angular/core";
3
- import * as i0 from "@angular/core";
4
- export class EstPropInsensitivePipe {
5
- transform(item, property) {
6
- for (let prop in item) {
7
- if (prop.toLowerCase() == property.toLowerCase())
8
- return item[prop];
9
- }
10
- return "";
11
- }
12
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EstPropInsensitivePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
13
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: EstPropInsensitivePipe, name: "est_propinsensitive" }); }
14
- }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EstPropInsensitivePipe, decorators: [{
16
- type: Pipe,
17
- args: [{ name: 'est_propinsensitive' }]
18
- }] });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXN0LXByb3BpbnNlbnNpdGl2ZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtdGFibGUvc3JjL2xpYi9jb21wb25lbnRzL3BpcGVzL2VzdC1wcm9waW5zZW5zaXRpdmUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBR3BELE1BQU0sT0FBTyxzQkFBc0I7SUFFL0IsU0FBUyxDQUFDLElBQVMsRUFBRSxRQUFnQjtRQUNqQyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksRUFBRTtZQUNuQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxRQUFRLENBQUMsV0FBVyxFQUFFO2dCQUM1QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN6QjtRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQzsrR0FSUSxzQkFBc0I7NkdBQXRCLHNCQUFzQjs7NEZBQXRCLHNCQUFzQjtrQkFEbEMsSUFBSTttQkFBQyxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG5AUGlwZSh7IG5hbWU6ICdlc3RfcHJvcGluc2Vuc2l0aXZlJyB9KVxyXG5leHBvcnQgY2xhc3MgRXN0UHJvcEluc2Vuc2l0aXZlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cclxuICAgIHRyYW5zZm9ybShpdGVtOiBhbnksIHByb3BlcnR5OiBzdHJpbmcpIHtcclxuICAgICAgICBmb3IgKGxldCBwcm9wIGluIGl0ZW0pIHtcclxuICAgICAgICAgICAgaWYgKHByb3AudG9Mb3dlckNhc2UoKSA9PSBwcm9wZXJ0eS50b0xvd2VyQ2FzZSgpKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1bcHJvcF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
1
+ // Angular
2
+ import { Pipe } from "@angular/core";
3
+ import * as i0 from "@angular/core";
4
+ export class EstPropInsensitivePipe {
5
+ transform(item, property) {
6
+ for (let prop in item) {
7
+ if (prop.toLowerCase() == property.toLowerCase())
8
+ return item[prop];
9
+ }
10
+ return "";
11
+ }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EstPropInsensitivePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
13
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: EstPropInsensitivePipe, name: "est_propinsensitive" }); }
14
+ }
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EstPropInsensitivePipe, decorators: [{
16
+ type: Pipe,
17
+ args: [{ name: 'est_propinsensitive' }]
18
+ }] });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXN0LXByb3BpbnNlbnNpdGl2ZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtdGFibGUvc3JjL2xpYi9jb21wb25lbnRzL3BpcGVzL2VzdC1wcm9waW5zZW5zaXRpdmUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBR3BELE1BQU0sT0FBTyxzQkFBc0I7SUFFL0IsU0FBUyxDQUFDLElBQVMsRUFBRSxRQUFnQjtRQUNqQyxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3BCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLFFBQVEsQ0FBQyxXQUFXLEVBQUU7Z0JBQzVDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7K0dBUlEsc0JBQXNCOzZHQUF0QixzQkFBc0I7OzRGQUF0QixzQkFBc0I7a0JBRGxDLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuQFBpcGUoeyBuYW1lOiAnZXN0X3Byb3BpbnNlbnNpdGl2ZScgfSlcclxuZXhwb3J0IGNsYXNzIEVzdFByb3BJbnNlbnNpdGl2ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcbiAgICB0cmFuc2Zvcm0oaXRlbTogYW55LCBwcm9wZXJ0eTogc3RyaW5nKSB7XHJcbiAgICAgICAgZm9yIChsZXQgcHJvcCBpbiBpdGVtKSB7XHJcbiAgICAgICAgICAgIGlmIChwcm9wLnRvTG93ZXJDYXNlKCkgPT0gcHJvcGVydHkudG9Mb3dlckNhc2UoKSlcclxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtW3Byb3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -1,36 +1,36 @@
1
- // Angular
2
- import { Pipe } from "@angular/core";
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "../../core/Logger";
5
- export class EstRendererPipe {
6
- constructor(logger) {
7
- this.logger = logger;
8
- }
9
- transform(propName, params) {
10
- var EsTd = null;
11
- // Perf. Version di `params.src.find((item) => params.name ? item.td === params.name : item.tdForProperty === propName);`
12
- for (let i = 0; i < params.src.length; i++) {
13
- let item = params.src.get(i);
14
- if (params.name && item.td === params.name ||
15
- !params.name && item.tdForProperty === propName) {
16
- EsTd = item;
17
- break;
18
- }
19
- }
20
- // Name non trovato, fallback al nome della colonna
21
- if (propName && params.name && !EsTd) {
22
- this.logger.log(`Renderer retrieved in a non performant way`);
23
- EsTd = params.src.find((item) => item.tdForProperty === propName);
24
- }
25
- this.logger.log(`Renderer ${EsTd ? 'found' : 'NOT found'} for '${propName}${params.name ? '/' + params.name : ''}'${!EsTd ? '. Using fallback renderer' : ''}`);
26
- var ret = EsTd ? EsTd.Template : params.fallback;
27
- return ret;
28
- }
29
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EstRendererPipe, deps: [{ token: i1.Logger }], target: i0.ɵɵFactoryTarget.Pipe }); }
30
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: EstRendererPipe, name: "est_renderer" }); }
31
- }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EstRendererPipe, decorators: [{
33
- type: Pipe,
34
- args: [{ name: 'est_renderer' }]
35
- }], ctorParameters: function () { return [{ type: i1.Logger }]; } });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXN0LXJlbmRlcmVyLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcy10YWJsZS9zcmMvbGliL2NvbXBvbmVudHMvcGlwZXMvZXN0LXJlbmRlcmVyLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxJQUFJLEVBQTRCLE1BQU0sZUFBZSxDQUFDOzs7QUFTL0QsTUFBTSxPQUFPLGVBQWU7SUFFeEIsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7SUFBSSxDQUFDO0lBRXZDLFNBQVMsQ0FBQyxRQUFnQixFQUFFLE1BQXNFO1FBRTlGLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztRQUNoQix5SEFBeUg7UUFDekgsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3hDLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdCLElBQUksTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLE1BQU0sQ0FBQyxJQUFJO2dCQUN0QyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxRQUFRLEVBQUU7Z0JBQ2pELElBQUksR0FBRyxJQUFJLENBQUM7Z0JBQ1osTUFBTTthQUNUO1NBQ0o7UUFFRCxtREFBbUQ7UUFDbkQsSUFBSSxRQUFRLElBQUksTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNsQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1lBQzlELElBQUksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsS0FBSyxRQUFRLENBQUMsQ0FBQztTQUNyRTtRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVcsU0FBUyxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDaEssSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBRWpELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQzsrR0EzQlEsZUFBZTs2R0FBZixlQUFlOzs0RkFBZixlQUFlO2tCQUQzQixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSwgUXVlcnlMaXN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8vIFNlcnZpY2VzXHJcbmltcG9ydCB7IExvZ2dlciB9IGZyb20gXCIuLi8uLi9jb3JlL0xvZ2dlclwiO1xyXG5cclxuLy8gQ29tcG9uZW50aSAvIERpcmV0dGl2ZVxyXG5pbXBvcnQgeyBFc1RkRGlyZWN0aXZlIH0gZnJvbSBcIi4uLy4uL2RpcmVjdGl2ZXMvZXNfdGQuZGlyZWN0aXZlXCI7XHJcblxyXG5AUGlwZSh7IG5hbWU6ICdlc3RfcmVuZGVyZXInIH0pXHJcbmV4cG9ydCBjbGFzcyBFc3RSZW5kZXJlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxvZ2dlcjogTG9nZ2VyKSB7IH1cclxuXHJcbiAgICB0cmFuc2Zvcm0ocHJvcE5hbWU6IHN0cmluZywgcGFyYW1zOiB7IG5hbWU6IHN0cmluZywgc3JjOiBRdWVyeUxpc3Q8RXNUZERpcmVjdGl2ZT4sIGZhbGxiYWNrOiBhbnkgfSkge1xyXG5cclxuICAgICAgICB2YXIgRXNUZCA9IG51bGw7XHJcbiAgICAgICAgLy8gUGVyZi4gVmVyc2lvbiBkaSBgcGFyYW1zLnNyYy5maW5kKChpdGVtKSA9PiBwYXJhbXMubmFtZSA/IGl0ZW0udGQgPT09IHBhcmFtcy5uYW1lIDogaXRlbS50ZEZvclByb3BlcnR5ID09PSBwcm9wTmFtZSk7YFxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFyYW1zLnNyYy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgaXRlbSA9IHBhcmFtcy5zcmMuZ2V0KGkpO1xyXG4gICAgICAgICAgICBpZiAocGFyYW1zLm5hbWUgJiYgaXRlbS50ZCA9PT0gcGFyYW1zLm5hbWUgfHxcclxuICAgICAgICAgICAgICAgICFwYXJhbXMubmFtZSAmJiBpdGVtLnRkRm9yUHJvcGVydHkgPT09IHByb3BOYW1lKSB7XHJcbiAgICAgICAgICAgICAgICBFc1RkID0gaXRlbTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBOYW1lIG5vbiB0cm92YXRvLCBmYWxsYmFjayBhbCBub21lIGRlbGxhIGNvbG9ubmFcclxuICAgICAgICBpZiAocHJvcE5hbWUgJiYgcGFyYW1zLm5hbWUgJiYgIUVzVGQpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKGBSZW5kZXJlciByZXRyaWV2ZWQgaW4gYSBub24gcGVyZm9ybWFudCB3YXlgKTtcclxuICAgICAgICAgICAgRXNUZCA9IHBhcmFtcy5zcmMuZmluZCgoaXRlbSkgPT4gaXRlbS50ZEZvclByb3BlcnR5ID09PSBwcm9wTmFtZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmxvZ2dlci5sb2coYFJlbmRlcmVyICR7RXNUZCA/ICdmb3VuZCcgOiAnTk9UIGZvdW5kJ30gZm9yICcke3Byb3BOYW1lfSR7cGFyYW1zLm5hbWUgPyAnLycgKyBwYXJhbXMubmFtZSA6ICcnfSckeyFFc1RkID8gJy4gVXNpbmcgZmFsbGJhY2sgcmVuZGVyZXInIDogJyd9YCk7XHJcbiAgICAgICAgdmFyIHJldCA9IEVzVGQgPyBFc1RkLlRlbXBsYXRlIDogcGFyYW1zLmZhbGxiYWNrO1xyXG5cclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG59Il19
1
+ // Angular
2
+ import { Pipe } from "@angular/core";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../core/Logger";
5
+ export class EstRendererPipe {
6
+ constructor(logger) {
7
+ this.logger = logger;
8
+ }
9
+ transform(propName, params) {
10
+ var EsTd = null;
11
+ // Perf. Version di `params.src.find((item) => params.name ? item.td === params.name : item.tdForProperty === propName);`
12
+ for (let i = 0; i < params.src.length; i++) {
13
+ let item = params.src.get(i);
14
+ if (params.name && item.td === params.name ||
15
+ !params.name && item.tdForProperty === propName) {
16
+ EsTd = item;
17
+ break;
18
+ }
19
+ }
20
+ // Name non trovato, fallback al nome della colonna
21
+ if (propName && params.name && !EsTd) {
22
+ this.logger.log(`Renderer retrieved in a non performant way`);
23
+ EsTd = params.src.find((item) => item.tdForProperty === propName);
24
+ }
25
+ this.logger.log(`Renderer ${EsTd ? 'found' : 'NOT found'} for '${propName}${params.name ? '/' + params.name : ''}'${!EsTd ? '. Using fallback renderer' : ''}`);
26
+ var ret = EsTd ? EsTd.Template : params.fallback;
27
+ return ret;
28
+ }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EstRendererPipe, deps: [{ token: i1.Logger }], target: i0.ɵɵFactoryTarget.Pipe }); }
30
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: EstRendererPipe, name: "est_renderer" }); }
31
+ }
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EstRendererPipe, decorators: [{
33
+ type: Pipe,
34
+ args: [{ name: 'est_renderer' }]
35
+ }], ctorParameters: () => [{ type: i1.Logger }] });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXN0LXJlbmRlcmVyLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lcy10YWJsZS9zcmMvbGliL2NvbXBvbmVudHMvcGlwZXMvZXN0LXJlbmRlcmVyLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxJQUFJLEVBQTRCLE1BQU0sZUFBZSxDQUFDOzs7QUFTL0QsTUFBTSxPQUFPLGVBQWU7SUFFeEIsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7SUFBSSxDQUFDO0lBRXZDLFNBQVMsQ0FBQyxRQUFnQixFQUFFLE1BQXNFO1FBRTlGLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztRQUNoQix5SEFBeUg7UUFDekgsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDekMsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0IsSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssTUFBTSxDQUFDLElBQUk7Z0JBQ3RDLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUNsRCxJQUFJLEdBQUcsSUFBSSxDQUFDO2dCQUNaLE1BQU07WUFDVixDQUFDO1FBQ0wsQ0FBQztRQUVELG1EQUFtRDtRQUNuRCxJQUFJLFFBQVEsSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsNENBQTRDLENBQUMsQ0FBQztZQUM5RCxJQUFJLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEtBQUssUUFBUSxDQUFDLENBQUM7UUFDdEUsQ0FBQztRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVcsU0FBUyxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDaEssSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBRWpELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQzsrR0EzQlEsZUFBZTs2R0FBZixlQUFlOzs0RkFBZixlQUFlO2tCQUQzQixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSwgUXVlcnlMaXN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8vIFNlcnZpY2VzXHJcbmltcG9ydCB7IExvZ2dlciB9IGZyb20gXCIuLi8uLi9jb3JlL0xvZ2dlclwiO1xyXG5cclxuLy8gQ29tcG9uZW50aSAvIERpcmV0dGl2ZVxyXG5pbXBvcnQgeyBFc1RkRGlyZWN0aXZlIH0gZnJvbSBcIi4uLy4uL2RpcmVjdGl2ZXMvZXNfdGQuZGlyZWN0aXZlXCI7XHJcblxyXG5AUGlwZSh7IG5hbWU6ICdlc3RfcmVuZGVyZXInIH0pXHJcbmV4cG9ydCBjbGFzcyBFc3RSZW5kZXJlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxvZ2dlcjogTG9nZ2VyKSB7IH1cclxuXHJcbiAgICB0cmFuc2Zvcm0ocHJvcE5hbWU6IHN0cmluZywgcGFyYW1zOiB7IG5hbWU6IHN0cmluZywgc3JjOiBRdWVyeUxpc3Q8RXNUZERpcmVjdGl2ZT4sIGZhbGxiYWNrOiBhbnkgfSkge1xyXG5cclxuICAgICAgICB2YXIgRXNUZCA9IG51bGw7XHJcbiAgICAgICAgLy8gUGVyZi4gVmVyc2lvbiBkaSBgcGFyYW1zLnNyYy5maW5kKChpdGVtKSA9PiBwYXJhbXMubmFtZSA/IGl0ZW0udGQgPT09IHBhcmFtcy5uYW1lIDogaXRlbS50ZEZvclByb3BlcnR5ID09PSBwcm9wTmFtZSk7YFxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFyYW1zLnNyYy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgaXRlbSA9IHBhcmFtcy5zcmMuZ2V0KGkpO1xyXG4gICAgICAgICAgICBpZiAocGFyYW1zLm5hbWUgJiYgaXRlbS50ZCA9PT0gcGFyYW1zLm5hbWUgfHxcclxuICAgICAgICAgICAgICAgICFwYXJhbXMubmFtZSAmJiBpdGVtLnRkRm9yUHJvcGVydHkgPT09IHByb3BOYW1lKSB7XHJcbiAgICAgICAgICAgICAgICBFc1RkID0gaXRlbTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBOYW1lIG5vbiB0cm92YXRvLCBmYWxsYmFjayBhbCBub21lIGRlbGxhIGNvbG9ubmFcclxuICAgICAgICBpZiAocHJvcE5hbWUgJiYgcGFyYW1zLm5hbWUgJiYgIUVzVGQpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKGBSZW5kZXJlciByZXRyaWV2ZWQgaW4gYSBub24gcGVyZm9ybWFudCB3YXlgKTtcclxuICAgICAgICAgICAgRXNUZCA9IHBhcmFtcy5zcmMuZmluZCgoaXRlbSkgPT4gaXRlbS50ZEZvclByb3BlcnR5ID09PSBwcm9wTmFtZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmxvZ2dlci5sb2coYFJlbmRlcmVyICR7RXNUZCA/ICdmb3VuZCcgOiAnTk9UIGZvdW5kJ30gZm9yICcke3Byb3BOYW1lfSR7cGFyYW1zLm5hbWUgPyAnLycgKyBwYXJhbXMubmFtZSA6ICcnfSckeyFFc1RkID8gJy4gVXNpbmcgZmFsbGJhY2sgcmVuZGVyZXInIDogJyd9YCk7XHJcbiAgICAgICAgdmFyIHJldCA9IEVzVGQgPyBFc1RkLlRlbXBsYXRlIDogcGFyYW1zLmZhbGxiYWNrO1xyXG5cclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG59Il19