@esfaenza/es-table 16.2.29 → 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,40 +1,40 @@
1
- // Angular
2
- import { Component, Input, ChangeDetectionStrategy, EventEmitter, Output } from "@angular/core";
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/material/legacy-tooltip";
5
- /** Componente rappresentante una singola cella del body della tabella */
6
- export class EsTd {
7
- /** @ignore */
8
- constructor(cdr) {
9
- this.cdr = cdr;
10
- /** Id della cella, dev'essere lo stesso della colonna **EsTh** relativa */
11
- this.ID = "";
12
- /** Quando questa cella viene generata questo evento permette di dire "ehi, sono nato!" */
13
- this.onCellGeneration = new EventEmitter();
14
- /** Errore attualmente presente sulla cella */
15
- this.ValidationError = "";
16
- }
17
- /** @ignore */
18
- ngAfterViewInit() {
19
- this.onCellGeneration.emit({ id: this.ID, hash: this.Context, self: this });
20
- }
21
- /** Api per impostare un "errore" su questa cella in maniera programmatica */
22
- validationError(error) {
23
- this.ValidationError = error;
24
- this.cdr.markForCheck();
25
- }
26
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EsTd, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
27
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EsTd, selector: "[es-td]", inputs: { ID: ["es-td", "ID"], Context: "Context" }, outputs: { onCellGeneration: "onCellGeneration" }, ngImport: i0, template: "<div class=\"td-content\" [class.td-error]=\"!!ValidationError\" [matTooltip]=\"ValidationError\">\r\n <ng-content></ng-content>\r\n</div>", styles: [".td-error{background-color:#f003;box-shadow:inset 0 0 0 1px red}.td-content{padding:.3rem;margin:-.3rem;box-sizing:border-box!important}\n"], dependencies: [{ kind: "directive", type: i1.MatLegacyTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
28
- }
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EsTd, decorators: [{
30
- type: Component,
31
- args: [{ selector: "[es-td]", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"td-content\" [class.td-error]=\"!!ValidationError\" [matTooltip]=\"ValidationError\">\r\n <ng-content></ng-content>\r\n</div>", styles: [".td-error{background-color:#f003;box-shadow:inset 0 0 0 1px red}.td-content{padding:.3rem;margin:-.3rem;box-sizing:border-box!important}\n"] }]
32
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { ID: [{
33
- type: Input,
34
- args: ['es-td']
35
- }], Context: [{
36
- type: Input
37
- }], onCellGeneration: [{
38
- type: Output
39
- }] } });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNfdGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtdGFibGUvc3JjL2xpYi9jb21wb25lbnRzL2VzLXRkL2VzX3RkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLXRhYmxlL3NyYy9saWIvY29tcG9uZW50cy9lcy10ZC9lc190ZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBcUIsTUFBTSxlQUFlLENBQUM7OztBQUVuSCx5RUFBeUU7QUFPekUsTUFBTSxPQUFPLElBQUk7SUFjYixjQUFjO0lBQ2QsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFiMUMsMkVBQTJFO1FBQzNELE9BQUUsR0FBVyxFQUFFLENBQUM7UUFLaEMsMkZBQTJGO1FBQ2pGLHFCQUFnQixHQUF5RCxJQUFJLFlBQVksRUFBMEMsQ0FBQztRQUU5SSw4Q0FBOEM7UUFDdkMsb0JBQWUsR0FBVyxFQUFFLENBQUM7SUFHVSxDQUFDO0lBRS9DLGNBQWM7SUFDZCxlQUFlO1FBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFRCw2RUFBNkU7SUFDdEUsZUFBZSxDQUFDLEtBQWM7UUFDakMsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM1QixDQUFDOytHQTFCUSxJQUFJO21HQUFKLElBQUksdUpDVmpCLCtJQUVNOzs0RkRRTyxJQUFJO2tCQU5oQixTQUFTOytCQUNJLFNBQVMsbUJBRUYsdUJBQXVCLENBQUMsTUFBTTt3R0FNL0IsRUFBRTtzQkFBakIsS0FBSzt1QkFBQyxPQUFPO2dCQUdMLE9BQU87c0JBQWYsS0FBSztnQkFHSSxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLyoqIENvbXBvbmVudGUgcmFwcHJlc2VudGFudGUgdW5hIHNpbmdvbGEgY2VsbGEgZGVsIGJvZHkgZGVsbGEgdGFiZWxsYSAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcIltlcy10ZF1cIixcclxuICAgIHRlbXBsYXRlVXJsOiBcIi4vZXNfdGQuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3R5bGVVcmxzOiBbXCJlc190ZC5jb21wb25lbnQuc2Nzc1wiXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXNUZCB7XHJcblxyXG4gICAgLyoqIElkIGRlbGxhIGNlbGxhLCBkZXYnZXNzZXJlIGxvIHN0ZXNzbyBkZWxsYSBjb2xvbm5hICoqRXNUaCoqIHJlbGF0aXZhICovXHJcbiAgICBASW5wdXQoJ2VzLXRkJykgSUQ6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gICAgLyoqIENvbnRlc3RvIGRlbGwnb2dnZXR0byBhIGN1aSBzaSByaWZlcmlzY2UgaWwgZGF0byB2aXN1YWxpenphdG8uIENvbnRpZW5lIGwnaGFzaCBkZWxsJ29nZ2V0dG8gaW4gcXVlc3Rpb25lICovXHJcbiAgICBASW5wdXQoKSBDb250ZXh0OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqIFF1YW5kbyBxdWVzdGEgY2VsbGEgdmllbmUgZ2VuZXJhdGEgcXVlc3RvIGV2ZW50byBwZXJtZXR0ZSBkaSBkaXJlIFwiZWhpLCBzb25vIG5hdG8hXCIgICovXHJcbiAgICBAT3V0cHV0KCkgb25DZWxsR2VuZXJhdGlvbjogRXZlbnRFbWl0dGVyPHtpZDogc3RyaW5nLCBoYXNoOiBzdHJpbmcsIHNlbGY6IEVzVGR9PiA9IG5ldyBFdmVudEVtaXR0ZXI8e2lkOiBzdHJpbmcsIGhhc2g6IHN0cmluZywgc2VsZjogRXNUZH0+KCk7XHJcblxyXG4gICAgLyoqIEVycm9yZSBhdHR1YWxtZW50ZSBwcmVzZW50ZSBzdWxsYSBjZWxsYSAqL1xyXG4gICAgcHVibGljIFZhbGlkYXRpb25FcnJvcjogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICAgIHRoaXMub25DZWxsR2VuZXJhdGlvbi5lbWl0KHsgaWQ6IHRoaXMuSUQsIGhhc2g6IHRoaXMuQ29udGV4dCwgc2VsZjogdGhpcyB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQXBpIHBlciBpbXBvc3RhcmUgdW4gXCJlcnJvcmVcIiBzdSBxdWVzdGEgY2VsbGEgaW4gbWFuaWVyYSBwcm9ncmFtbWF0aWNhICovXHJcbiAgICBwdWJsaWMgdmFsaWRhdGlvbkVycm9yKGVycm9yPzogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5WYWxpZGF0aW9uRXJyb3IgPSBlcnJvcjtcclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxufSIsIjxkaXYgY2xhc3M9XCJ0ZC1jb250ZW50XCIgW2NsYXNzLnRkLWVycm9yXT1cIiEhVmFsaWRhdGlvbkVycm9yXCIgW21hdFRvb2x0aXBdPVwiVmFsaWRhdGlvbkVycm9yXCI+XHJcbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbjwvZGl2PiJdfQ==
1
+ // Angular
2
+ import { Component, Input, ChangeDetectionStrategy, EventEmitter, Output } from "@angular/core";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/material/legacy-tooltip";
5
+ /** Componente rappresentante una singola cella del body della tabella */
6
+ export class EsTd {
7
+ /** @ignore */
8
+ constructor(cdr) {
9
+ this.cdr = cdr;
10
+ /** Id della cella, dev'essere lo stesso della colonna **EsTh** relativa */
11
+ this.ID = "";
12
+ /** Quando questa cella viene generata questo evento permette di dire "ehi, sono nato!" */
13
+ this.onCellGeneration = new EventEmitter();
14
+ /** Errore attualmente presente sulla cella */
15
+ this.ValidationError = "";
16
+ }
17
+ /** @ignore */
18
+ ngAfterViewInit() {
19
+ this.onCellGeneration.emit({ id: this.ID, hash: this.Context, self: this });
20
+ }
21
+ /** Api per impostare un "errore" su questa cella in maniera programmatica */
22
+ validationError(error) {
23
+ this.ValidationError = error;
24
+ this.cdr.markForCheck();
25
+ }
26
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EsTd, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
27
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: EsTd, selector: "[es-td]", inputs: { ID: ["es-td", "ID"], Context: "Context" }, outputs: { onCellGeneration: "onCellGeneration" }, ngImport: i0, template: "<div class=\"td-content\" [class.td-error]=\"!!ValidationError\" [matTooltip]=\"ValidationError\">\r\n <ng-content></ng-content>\r\n</div>", styles: [".td-error{background-color:#f003;-webkit-box-shadow:inset 0px 0px 0px 1px #f00;-moz-box-shadow:inset 0px 0px 0px 1px #f00;box-shadow:inset 0 0 0 1px red}.td-content{padding:.3rem;margin:-.3rem;box-sizing:border-box!important}\n"], dependencies: [{ kind: "directive", type: i1.MatLegacyTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
28
+ }
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EsTd, decorators: [{
30
+ type: Component,
31
+ args: [{ selector: "[es-td]", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"td-content\" [class.td-error]=\"!!ValidationError\" [matTooltip]=\"ValidationError\">\r\n <ng-content></ng-content>\r\n</div>", styles: [".td-error{background-color:#f003;-webkit-box-shadow:inset 0px 0px 0px 1px #f00;-moz-box-shadow:inset 0px 0px 0px 1px #f00;box-shadow:inset 0 0 0 1px red}.td-content{padding:.3rem;margin:-.3rem;box-sizing:border-box!important}\n"] }]
32
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { ID: [{
33
+ type: Input,
34
+ args: ['es-td']
35
+ }], Context: [{
36
+ type: Input
37
+ }], onCellGeneration: [{
38
+ type: Output
39
+ }] } });
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNfdGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtdGFibGUvc3JjL2xpYi9jb21wb25lbnRzL2VzLXRkL2VzX3RkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLXRhYmxlL3NyYy9saWIvY29tcG9uZW50cy9lcy10ZC9lc190ZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBcUIsTUFBTSxlQUFlLENBQUM7OztBQUVuSCx5RUFBeUU7QUFPekUsTUFBTSxPQUFPLElBQUk7SUFjYixjQUFjO0lBQ2QsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFiMUMsMkVBQTJFO1FBQzNELE9BQUUsR0FBVyxFQUFFLENBQUM7UUFLaEMsMkZBQTJGO1FBQ2pGLHFCQUFnQixHQUF5RCxJQUFJLFlBQVksRUFBMEMsQ0FBQztRQUU5SSw4Q0FBOEM7UUFDdkMsb0JBQWUsR0FBVyxFQUFFLENBQUM7SUFHVSxDQUFDO0lBRS9DLGNBQWM7SUFDZCxlQUFlO1FBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFRCw2RUFBNkU7SUFDdEUsZUFBZSxDQUFDLEtBQWM7UUFDakMsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM1QixDQUFDOytHQTFCUSxJQUFJO21HQUFKLElBQUksdUpDVmpCLCtJQUVNOzs0RkRRTyxJQUFJO2tCQU5oQixTQUFTOytCQUNJLFNBQVMsbUJBRUYsdUJBQXVCLENBQUMsTUFBTTtzRkFNL0IsRUFBRTtzQkFBakIsS0FBSzt1QkFBQyxPQUFPO2dCQUdMLE9BQU87c0JBQWYsS0FBSztnQkFHSSxnQkFBZ0I7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLyoqIENvbXBvbmVudGUgcmFwcHJlc2VudGFudGUgdW5hIHNpbmdvbGEgY2VsbGEgZGVsIGJvZHkgZGVsbGEgdGFiZWxsYSAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcIltlcy10ZF1cIixcclxuICAgIHRlbXBsYXRlVXJsOiBcIi4vZXNfdGQuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3R5bGVVcmxzOiBbXCJlc190ZC5jb21wb25lbnQuc2Nzc1wiXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXNUZCB7XHJcblxyXG4gICAgLyoqIElkIGRlbGxhIGNlbGxhLCBkZXYnZXNzZXJlIGxvIHN0ZXNzbyBkZWxsYSBjb2xvbm5hICoqRXNUaCoqIHJlbGF0aXZhICovXHJcbiAgICBASW5wdXQoJ2VzLXRkJykgSUQ6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gICAgLyoqIENvbnRlc3RvIGRlbGwnb2dnZXR0byBhIGN1aSBzaSByaWZlcmlzY2UgaWwgZGF0byB2aXN1YWxpenphdG8uIENvbnRpZW5lIGwnaGFzaCBkZWxsJ29nZ2V0dG8gaW4gcXVlc3Rpb25lICovXHJcbiAgICBASW5wdXQoKSBDb250ZXh0OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqIFF1YW5kbyBxdWVzdGEgY2VsbGEgdmllbmUgZ2VuZXJhdGEgcXVlc3RvIGV2ZW50byBwZXJtZXR0ZSBkaSBkaXJlIFwiZWhpLCBzb25vIG5hdG8hXCIgICovXHJcbiAgICBAT3V0cHV0KCkgb25DZWxsR2VuZXJhdGlvbjogRXZlbnRFbWl0dGVyPHtpZDogc3RyaW5nLCBoYXNoOiBzdHJpbmcsIHNlbGY6IEVzVGR9PiA9IG5ldyBFdmVudEVtaXR0ZXI8e2lkOiBzdHJpbmcsIGhhc2g6IHN0cmluZywgc2VsZjogRXNUZH0+KCk7XHJcblxyXG4gICAgLyoqIEVycm9yZSBhdHR1YWxtZW50ZSBwcmVzZW50ZSBzdWxsYSBjZWxsYSAqL1xyXG4gICAgcHVibGljIFZhbGlkYXRpb25FcnJvcjogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICAgIHRoaXMub25DZWxsR2VuZXJhdGlvbi5lbWl0KHsgaWQ6IHRoaXMuSUQsIGhhc2g6IHRoaXMuQ29udGV4dCwgc2VsZjogdGhpcyB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQXBpIHBlciBpbXBvc3RhcmUgdW4gXCJlcnJvcmVcIiBzdSBxdWVzdGEgY2VsbGEgaW4gbWFuaWVyYSBwcm9ncmFtbWF0aWNhICovXHJcbiAgICBwdWJsaWMgdmFsaWRhdGlvbkVycm9yKGVycm9yPzogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5WYWxpZGF0aW9uRXJyb3IgPSBlcnJvcjtcclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxufSIsIjxkaXYgY2xhc3M9XCJ0ZC1jb250ZW50XCIgW2NsYXNzLnRkLWVycm9yXT1cIiEhVmFsaWRhdGlvbkVycm9yXCIgW21hdFRvb2x0aXBdPVwiVmFsaWRhdGlvbkVycm9yXCI+XHJcbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbjwvZGl2PiJdfQ==
@@ -1,176 +1,176 @@
1
- //Angular
2
- import { Component, Input, Output, EventEmitter, ViewChild, HostListener, ChangeDetectionStrategy } from "@angular/core";
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- /** Componente rappresentante una Colonna della tabella */
6
- export class EsTh {
7
- /** @ignore */
8
- constructor(myself, renderer) {
9
- this.myself = myself;
10
- this.renderer = renderer;
11
- /** Dizionario di mappatura con ordinamento attuale e ordinamento successivo per gestire i passaggi di stato */
12
- this.orderNext = { "NONE": "DESC", "DESC": "ASC", "ASC": null };
13
- /** Indica se si sta effettuando un'operazione di resize su questa colonna */
14
- this.resizingThis = false;
15
- /**
16
- * Storicizza l'offset di partenza del resize dell'elemento HTML per poter calcolare la nuova dimensione richiesta durente il resize
17
- *
18
- * nuova width = startOffset + posizione X del mouse
19
- */
20
- this.startOffset = null;
21
- /** Id della colonna, dev'essere lo stesso per tutti gli **EsTd** relativi */
22
- this.ID = "";
23
- /** Indica se questa colonna è ordinabile o meno */
24
- this.Orderable = true;
25
- /** Valore da mostrare all'interno della colonna. Se omesso verrà proiettato il contenuto dal template in cui è stata usata */
26
- this.Display = "";
27
- /** Indica se le dimnsioni di questa colonna sono modificabili o meno */
28
- this.Resizable = false;
29
- /** Indica se questo header è pinnato. In caso lo fosse presenta il tastino per effettuare lo spinning */
30
- this.Pinned = false;
31
- /**
32
- * Indica se sta venendo eseguita una operazione di ricerca o meno, serve per evitare l'esecuzione di eventuale codice che potrebbe dare fastidio
33
- * come ad esempio l'escuzione di un ordinamento durante il caricamento di dati nuovi
34
- */
35
- this.SearchInProgress = false;
36
- /** Indica se il testo presente in questo Header può andare a capo o meno, di default non può */
37
- this.Wrap = false;
38
- /** Indica se la colonna è fixed, cioè se non può né essere nascosta, né riposizionata. Solo le prime colonne possono essere Fixed */
39
- this.Fixed = false;
40
- /** Template Angular da istanziare per questo TH */
41
- this.Template = null;
42
- /** Evento emesso al cambio di ordinamento effettuato su questa colonna */
43
- this.onOrderChange = new EventEmitter();
44
- /** Evento emesso all'unpinning della colonna */
45
- this.onUnpinning = new EventEmitter();
46
- /** Impostato dall'**EsTable**, per controllare che ci sia almeno un TD che utilizzi quest'header */
47
- this._referenced = false;
48
- }
49
- /**
50
- * Imposta la visibilità o meno della colonna, si traduce nell'applicazione o rimozione della classe **app-display-none**
51
- *
52
- * @param {boolean} expression Indicazione della visibilità
53
- */
54
- set Visible(expression) {
55
- this._Visible = expression;
56
- if (expression)
57
- this.renderer.removeClass(this.myself.nativeElement, "app-display-none");
58
- else
59
- this.renderer.addClass(this.myself.nativeElement, "app-display-none");
60
- }
61
- /**
62
- * Restituisce lo stato di Visibilità della colonna in oggetto
63
- *
64
- * @returns {boolean} **true** se visibile, **false** altrimenti
65
- */
66
- get Visible() {
67
- if (this._Visible == undefined)
68
- this._Visible = true;
69
- return this._Visible;
70
- }
71
- /** @ignore */
72
- ngAfterViewInit() {
73
- //Assegnare direttamente il content è più veloce che passare dal native element per qualche motivo
74
- this.Description = this.Display === null || this.Display === "" ? this.content.nativeElement.innerText : this.Display;
75
- this.Class = this.myself.nativeElement.className.replace("app-display-none", "");
76
- //Resize
77
- if (this.Resizable)
78
- this.renderer.addClass(this.myself.nativeElement, "app-relative");
79
- }
80
- /** Emette l'evento di unpinning */
81
- unpin() {
82
- this.onUnpinning.emit(this.ID);
83
- }
84
- /** Gestisce la modifica dell'ordinamento qualora venisse cliccato su questa colonna */
85
- setupNextOrderAndNotify() {
86
- if (!this.ID) {
87
- console.log("Attempt to order a column without ID. Operation ignored");
88
- return;
89
- }
90
- if (this.SearchInProgress) {
91
- console.log("Attempt to order a column during a search. Operation ignored");
92
- return;
93
- }
94
- if (!this.OrderBy || !this.Orderable)
95
- return;
96
- var nextOrder = this.orderNext[this.Order || "NONE"];
97
- this.Order = nextOrder;
98
- this.onOrderChange.emit(this.Order);
99
- }
100
- /**
101
- * Evento di inizio resize della colonna
102
- *
103
- * @param {any} ev Evento MouseDown
104
- */
105
- onResizeStart(ev) {
106
- if (!this.Resizable)
107
- return;
108
- this.resizingThis = true;
109
- this.startOffset = this.myself.nativeElement.offsetWidth - ev.pageX;
110
- }
111
- /** Listener per la fine dell'operazione di resize */
112
- onMouseUp() {
113
- if (!this.Resizable)
114
- return;
115
- this.resizingThis = false;
116
- }
117
- /**
118
- * Listener per gestire il movimento del mouse qualora un'operazione di resize fosse in esecuzione
119
- *
120
- * @param {$event} ev Evento MouseMove
121
- */
122
- onMouseMove($event) {
123
- if (!this.Resizable || !this.resizingThis)
124
- return;
125
- //Uso jquery per non dover far partire un intero ciclo di change detection solo per fare un resize del cazzo
126
- //(anche perché viene lanciato ogni 0.1 secondo quindi not a good idea)
127
- this.myself.nativeElement.style.width = (this.startOffset + $event.pageX) + "px";
128
- //Fermo il bubbling per non fare cose strane
129
- $event.preventDefault();
130
- }
131
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EsTh, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
132
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EsTh, selector: "[es-th]", inputs: { ID: ["es-th", "ID"], Order: "Order", Orderable: "Orderable", Display: "Display", Resizable: "Resizable", Pinned: "Pinned", SearchInProgress: "SearchInProgress", OrderBy: "OrderBy", Wrap: "Wrap", Fixed: "Fixed", Template: "Template", Visible: "Visible" }, outputs: { onOrderChange: "onOrderChange", onUnpinning: "onUnpinning" }, host: { listeners: { "window:mouseup.out-zone": "onMouseUp()", "window:mousemove.out-zone": "onMouseMove($event)" } }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: "<span (click)=\"setupNextOrderAndNotify()\" [class.app-no-selection]=\"!!ID && Orderable\" [class.app-pointer]=\"!!ID && Orderable\">\r\n <span #content>\r\n <ng-container *ngIf=\"!!Template\">\r\n <ng-container *ngTemplateOutlet=\"Template\"></ng-container>\r\n </ng-container>\r\n <ng-content *ngIf=\"!Template\"></ng-content>\r\n </span>&nbsp;\r\n <span class=\"fa\" [class.fa-chevron-down]=\"Order == 'DESC'\" [class.fa-chevron-up]=\"Order == 'ASC'\"></span>\r\n</span>\r\n<span *ngIf=\"Pinned && !Fixed\" class=\"app-pointer fa fa-thumb-tack est-quick-unpin\" (click)=\"unpin()\"></span>\r\n<div [hidden]=\"!Resizable || Fixed || Pinned\" class=\"est-head-resizer\" (mousedown)=\"onResizeStart($event)\">\r\n <div class=\"est-head-resizer-internal\"></div>\r\n</div>", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
133
- }
134
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EsTh, decorators: [{
135
- type: Component,
136
- args: [{ selector: "[es-th]", changeDetection: ChangeDetectionStrategy.OnPush, template: "<span (click)=\"setupNextOrderAndNotify()\" [class.app-no-selection]=\"!!ID && Orderable\" [class.app-pointer]=\"!!ID && Orderable\">\r\n <span #content>\r\n <ng-container *ngIf=\"!!Template\">\r\n <ng-container *ngTemplateOutlet=\"Template\"></ng-container>\r\n </ng-container>\r\n <ng-content *ngIf=\"!Template\"></ng-content>\r\n </span>&nbsp;\r\n <span class=\"fa\" [class.fa-chevron-down]=\"Order == 'DESC'\" [class.fa-chevron-up]=\"Order == 'ASC'\"></span>\r\n</span>\r\n<span *ngIf=\"Pinned && !Fixed\" class=\"app-pointer fa fa-thumb-tack est-quick-unpin\" (click)=\"unpin()\"></span>\r\n<div [hidden]=\"!Resizable || Fixed || Pinned\" class=\"est-head-resizer\" (mousedown)=\"onResizeStart($event)\">\r\n <div class=\"est-head-resizer-internal\"></div>\r\n</div>" }]
137
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { ID: [{
138
- type: Input,
139
- args: ['es-th']
140
- }], Order: [{
141
- type: Input
142
- }], Orderable: [{
143
- type: Input
144
- }], Display: [{
145
- type: Input
146
- }], Resizable: [{
147
- type: Input
148
- }], Pinned: [{
149
- type: Input
150
- }], SearchInProgress: [{
151
- type: Input
152
- }], OrderBy: [{
153
- type: Input
154
- }], Wrap: [{
155
- type: Input
156
- }], Fixed: [{
157
- type: Input
158
- }], Template: [{
159
- type: Input
160
- }], onOrderChange: [{
161
- type: Output
162
- }], onUnpinning: [{
163
- type: Output
164
- }], content: [{
165
- type: ViewChild,
166
- args: ["content", { static: false }]
167
- }], Visible: [{
168
- type: Input
169
- }], onMouseUp: [{
170
- type: HostListener,
171
- args: ['window:mouseup.out-zone']
172
- }], onMouseMove: [{
173
- type: HostListener,
174
- args: ['window:mousemove.out-zone', ['$event']]
175
- }] } });
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNfdGguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtdGFibGUvc3JjL2xpYi9jb21wb25lbnRzL2VzLXRoL2VzX3RoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLXRhYmxlL3NyYy9saWIvY29tcG9uZW50cy9lcy10aC9lc190aC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTO0FBQ1QsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBYyxTQUFTLEVBQWEsWUFBWSxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFFaEosMERBQTBEO0FBTTFELE1BQU0sT0FBTyxJQUFJO0lBd0ViLGNBQWM7SUFDZCxZQUFvQixNQUFrQixFQUFVLFFBQW1CO1FBQS9DLFdBQU0sR0FBTixNQUFNLENBQVk7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBdkVuRSwrR0FBK0c7UUFDdkcsY0FBUyxHQUErQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFLL0csNkVBQTZFO1FBQ3JFLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBRXRDOzs7O1dBSUc7UUFDSyxnQkFBVyxHQUFXLElBQUksQ0FBQztRQUVuQyw2RUFBNkU7UUFDN0QsT0FBRSxHQUFXLEVBQUUsQ0FBQztRQUtoQyxtREFBbUQ7UUFDMUMsY0FBUyxHQUFZLElBQUksQ0FBQztRQUVuQyw4SEFBOEg7UUFDckgsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUU5Qix3RUFBd0U7UUFDL0QsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUVwQyx5R0FBeUc7UUFDaEcsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUVqQzs7O1dBR0c7UUFDTSxxQkFBZ0IsR0FB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c0JBQS9DLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFtQjFCLE9BQU87c0JBQW5CLEtBQUs7Z0JBMEVDLFNBQVM7c0JBRGYsWUFBWTt1QkFBQyx5QkFBeUI7Z0JBY2hDLFdBQVc7c0JBRGpCLFlBQVk7dUJBQUMsMkJBQTJCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvL0FuZ3VsYXJcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgUmVuZGVyZXIyLCBIb3N0TGlzdGVuZXIsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8qKiBDb21wb25lbnRlIHJhcHByZXNlbnRhbnRlIHVuYSBDb2xvbm5hIGRlbGxhIHRhYmVsbGEgKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJbZXMtdGhdXCIsXHJcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2VzX3RoLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRXNUaCB7XHJcblxyXG4gICAgLyoqIERpemlvbmFyaW8gZGkgbWFwcGF0dXJhIGNvbiBvcmRpbmFtZW50byBhdHR1YWxlIGUgb3JkaW5hbWVudG8gc3VjY2Vzc2l2byBwZXIgZ2VzdGlyZSBpIHBhc3NhZ2dpIGRpIHN0YXRvICovXHJcbiAgICBwcml2YXRlIG9yZGVyTmV4dDogeyBbaW5kZXg6IHN0cmluZ106ICdERVNDJyB8ICdBU0MnIHwgbnVsbCB9ID0geyBcIk5PTkVcIjogXCJERVNDXCIsIFwiREVTQ1wiOiBcIkFTQ1wiLCBcIkFTQ1wiOiBudWxsIH07XHJcblxyXG4gICAgLyoqIEluZGljYXppb25lIHN1bGxhIHZpc2liaWxpdMOgIGRlbGxhIGNvbG9ubmEgKi9cclxuICAgIHByaXZhdGUgX1Zpc2libGU6IGJvb2xlYW47XHJcblxyXG4gICAgLyoqIEluZGljYSBzZSBzaSBzdGEgZWZmZXR0dWFuZG8gdW4nb3BlcmF6aW9uZSBkaSByZXNpemUgc3UgcXVlc3RhIGNvbG9ubmEgKi9cclxuICAgIHByaXZhdGUgcmVzaXppbmdUaGlzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTdG9yaWNpenphIGwnb2Zmc2V0IGRpIHBhcnRlbnphIGRlbCByZXNpemUgZGVsbCdlbGVtZW50byBIVE1MIHBlciBwb3RlciBjYWxjb2xhcmUgbGEgbnVvdmEgZGltZW5zaW9uZSByaWNoaWVzdGEgZHVyZW50ZSBpbCByZXNpemUgXHJcbiAgICAgKiBcclxuICAgICAqIG51b3ZhIHdpZHRoID0gc3RhcnRPZmZzZXQgKyBwb3NpemlvbmUgWCBkZWwgbW91c2VcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzdGFydE9mZnNldDogbnVtYmVyID0gbnVsbDtcclxuXHJcbiAgICAvKiogSWQgZGVsbGEgY29sb25uYSwgZGV2J2Vzc2VyZSBsbyBzdGVzc28gcGVyIHR1dHRpIGdsaSAqKkVzVGQqKiByZWxhdGl2aSAqL1xyXG4gICAgQElucHV0KCdlcy10aCcpIElEOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAgIC8qKiBPcmRpbmFtZW50byBhdHR1YWxlIGRlbGxhIGNvbG9ubmEgKi9cclxuICAgIEBJbnB1dCgpIE9yZGVyPzogJ0RFU0MnIHwgJ0FTQyc7XHJcblxyXG4gICAgLyoqIEluZGljYSBzZSBxdWVzdGEgY29sb25uYSDDqCBvcmRpbmFiaWxlIG8gbWVubyAqL1xyXG4gICAgQElucHV0KCkgT3JkZXJhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICAvKiogVmFsb3JlIGRhIG1vc3RyYXJlIGFsbCdpbnRlcm5vIGRlbGxhIGNvbG9ubmEuIFNlIG9tZXNzbyB2ZXJyw6AgcHJvaWV0dGF0byBpbCBjb250ZW51dG8gZGFsIHRlbXBsYXRlIGluIGN1aSDDqCBzdGF0YSB1c2F0YSAqL1xyXG4gICAgQElucHV0KCkgRGlzcGxheTogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgICAvKiogSW5kaWNhIHNlIGxlIGRpbW5zaW9uaSBkaSBxdWVzdGEgY29sb25uYSBzb25vIG1vZGlmaWNhYmlsaSBvIG1lbm8gKi9cclxuICAgIEBJbnB1dCgpIFJlc2l6YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBJbmRpY2Egc2UgcXVlc3RvIGhlYWRlciDDqCBwaW5uYXRvLiBJbiBjYXNvIGxvIGZvc3NlIHByZXNlbnRhIGlsIHRhc3Rpbm8gcGVyIGVmZmV0dHVhcmUgbG8gc3Bpbm5pbmcgKi9cclxuICAgIEBJbnB1dCgpIFBpbm5lZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhIHNlIHN0YSB2ZW5lbmRvIGVzZWd1aXRhIHVuYSBvcGVyYXppb25lIGRpIHJpY2VyY2EgbyBtZW5vLCBzZXJ2ZSBwZXIgZXZpdGFyZSBsJ2VzZWN1emlvbmUgZGkgZXZlbnR1YWxlIGNvZGljZSBjaGUgcG90cmViYmUgZGFyZSBmYXN0aWRpbyBcclxuICAgICAqIGNvbWUgYWQgZXNlbXBpbyBsJ2VzY3V6aW9uZSBkaSB1biBvcmRpbmFtZW50byBkdXJhbnRlIGlsIGNhcmljYW1lbnRvIGRpIGRhdGkgbnVvdmlcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgU2VhcmNoSW5Qcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBJbXBvc3RhdG8gZGFsbCcqKkVzVGFibGUqKiwgc2VydmUgcGVyIHBlcm1ldHRlcmUgbyBtZW5vIGRpIGVmZmV0dHVhcmUgb3JkaW5hbWVudGkgZGF0aSBzdSBxdWVzdGEgY29sb25uYSAqL1xyXG4gICAgQElucHV0KCkgT3JkZXJCeTogYm9vbGVhbjtcclxuXHJcbiAgICAvKiogSW5kaWNhIHNlIGlsIHRlc3RvIHByZXNlbnRlIGluIHF1ZXN0byBIZWFkZXIgcHXDsiBhbmRhcmUgYSBjYXBvIG8gbWVubywgZGkgZGVmYXVsdCBub24gcHXDsiAqL1xyXG4gICAgQElucHV0KCkgV3JhcDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBJbmRpY2Egc2UgbGEgY29sb25uYSDDqCBmaXhlZCwgY2lvw6ggc2Ugbm9uIHB1w7IgbsOpIGVzc2VyZSBuYXNjb3N0YSwgbsOpIHJpcG9zaXppb25hdGEuIFNvbG8gbGUgcHJpbWUgY29sb25uZSBwb3Nzb25vIGVzc2VyZSBGaXhlZCAqL1xyXG4gICAgQElucHV0KCkgRml4ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKiogVGVtcGxhdGUgQW5ndWxhciBkYSBpc3RhbnppYXJlIHBlciBxdWVzdG8gVEggKi9cclxuICAgIEBJbnB1dCgpIFRlbXBsYXRlPzogYW55ID0gbnVsbDtcclxuXHJcbiAgICAvKiogRXZlbnRvIGVtZXNzbyBhbCBjYW1iaW8gZGkgb3JkaW5hbWVudG8gZWZmZXR0dWF0byBzdSBxdWVzdGEgY29sb25uYSAqL1xyXG4gICAgQE91dHB1dCgpIHB1YmxpYyBvbk9yZGVyQ2hhbmdlOiBFdmVudEVtaXR0ZXI8J0RFU0MnIHwgJ0FTQycgfCBudWxsPiA9IG5ldyBFdmVudEVtaXR0ZXI8J0RFU0MnIHwgJ0FTQycgfCBudWxsPigpO1xyXG5cclxuICAgIC8qKiBFdmVudG8gZW1lc3NvIGFsbCd1bnBpbm5pbmcgZGVsbGEgY29sb25uYSAqL1xyXG4gICAgQE91dHB1dCgpIHB1YmxpYyBvblVucGlubmluZzogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgICAvKiogUHJvaWV6aW9uZSBkZWwgY29udGVudXRvIGRpIHF1ZXN0YSBjb2xvbm5hICovXHJcbiAgICBAVmlld0NoaWxkKFwiY29udGVudFwiLCB7IHN0YXRpYzogZmFsc2UgfSkgY29udGVudDogRWxlbWVudFJlZjtcclxuXHJcbiAgICAvKiogQ2xhc3NpIGRhIGFwcGxpY2FyZSBhbGxhIGNvbG9ubmEgKi9cclxuICAgIHB1YmxpYyBDbGFzczogc3RyaW5nO1xyXG5cclxuICAgIC8qKiBJbXBvc3RhdG8gZGFsbCcqKkVzVGFibGUqKiwgcGVyIGNvbnRyb2xsYXJlIGNoZSBjaSBzaWEgYWxtZW5vIHVuIFREIGNoZSB1dGlsaXp6aSBxdWVzdCdoZWFkZXIgKi9cclxuICAgIHB1YmxpYyBfcmVmZXJlbmNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBWYXJpYWJpbGUgZmluYWxlIHN1IGN1aSDDqCBiaW5kYXRvIGlsIGNvbnRlbnV0byBkZWxsYSBjZWxsYS4gU2Fyw6AgdmFsb3JpenphdG8gYSAqKkRpc3BsYXkqKiBzZSBzcGVjaWZpY2F0bywgYWxsJyoqaW5uZXJIVE1MKiogZGVsbCdlbGVtZW50byBwcm9pZXR0YXRvIGFsdHJpbWVudGkgKi9cclxuICAgIHB1YmxpYyBEZXNjcmlwdGlvbjogc3RyaW5nO1xyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG15c2VsZjogRWxlbWVudFJlZiwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEltcG9zdGEgbGEgdmlzaWJpbGl0w6AgbyBtZW5vIGRlbGxhIGNvbG9ubmEsIHNpIHRyYWR1Y2UgbmVsbCdhcHBsaWNhemlvbmUgbyByaW1vemlvbmUgZGVsbGEgY2xhc3NlICoqYXBwLWRpc3BsYXktbm9uZSoqXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gZXhwcmVzc2lvbiBJbmRpY2F6aW9uZSBkZWxsYSB2aXNpYmlsaXTDoFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBzZXQgVmlzaWJsZShleHByZXNzaW9uOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fVmlzaWJsZSA9IGV4cHJlc3Npb247XHJcblxyXG4gICAgICAgIGlmIChleHByZXNzaW9uKVxyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMubXlzZWxmLm5hdGl2ZUVsZW1lbnQsIFwiYXBwLWRpc3BsYXktbm9uZVwiKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5teXNlbGYubmF0aXZlRWxlbWVudCwgXCJhcHAtZGlzcGxheS1ub25lXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVzdGl0dWlzY2UgbG8gc3RhdG8gZGkgVmlzaWJpbGl0w6AgZGVsbGEgY29sb25uYSBpbiBvZ2dldHRvXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSAqKnRydWUqKiBzZSB2aXNpYmlsZSwgKipmYWxzZSoqIGFsdHJpbWVudGlcclxuICAgICAqL1xyXG4gICAgZ2V0IFZpc2libGUoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHRoaXMuX1Zpc2libGUgPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgICAgICB0aGlzLl9WaXNpYmxlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX1Zpc2libGU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICAvL0Fzc2VnbmFyZSBkaXJldHRhbWVudGUgaWwgY29udGVudCDDqCBwacO5IHZlbG9jZSBjaGUgcGFzc2FyZSBkYWwgbmF0aXZlIGVsZW1lbnQgcGVyIHF1YWxjaGUgbW90aXZvXHJcbiAgICAgICAgdGhpcy5EZXNjcmlwdGlvbiA9IHRoaXMuRGlzcGxheSA9PT0gbnVsbCB8fCB0aGlzLkRpc3BsYXkgPT09IFwiXCIgPyB0aGlzLmNvbnRlbnQubmF0aXZlRWxlbWVudC5pbm5lclRleHQgOiB0aGlzLkRpc3BsYXk7XHJcblxyXG4gICAgICAgIHRoaXMuQ2xhc3MgPSB0aGlzLm15c2VsZi5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZS5yZXBsYWNlKFwiYXBwLWRpc3BsYXktbm9uZVwiLCBcIlwiKTtcclxuXHJcbiAgICAgICAgLy9SZXNpemVcclxuICAgICAgICBpZiAodGhpcy5SZXNpemFibGUpXHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5teXNlbGYubmF0aXZlRWxlbWVudCwgXCJhcHAtcmVsYXRpdmVcIik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEVtZXR0ZSBsJ2V2ZW50byBkaSB1bnBpbm5pbmcgKi9cclxuICAgIHVucGluKCkge1xyXG4gICAgICAgIHRoaXMub25VbnBpbm5pbmcuZW1pdCh0aGlzLklEKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogR2VzdGlzY2UgbGEgbW9kaWZpY2EgZGVsbCdvcmRpbmFtZW50byBxdWFsb3JhIHZlbmlzc2UgY2xpY2NhdG8gc3UgcXVlc3RhIGNvbG9ubmEgKi9cclxuICAgIHNldHVwTmV4dE9yZGVyQW5kTm90aWZ5KCkge1xyXG4gICAgICAgIGlmICghdGhpcy5JRCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkF0dGVtcHQgdG8gb3JkZXIgYSBjb2x1bW4gd2l0aG91dCBJRC4gT3BlcmF0aW9uIGlnbm9yZWRcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLlNlYXJjaEluUHJvZ3Jlc3MpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJBdHRlbXB0IHRvIG9yZGVyIGEgY29sdW1uIGR1cmluZyBhIHNlYXJjaC4gT3BlcmF0aW9uIGlnbm9yZWRcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5PcmRlckJ5IHx8ICF0aGlzLk9yZGVyYWJsZSlcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICB2YXIgbmV4dE9yZGVyID0gdGhpcy5vcmRlck5leHRbdGhpcy5PcmRlciB8fCBcIk5PTkVcIl07XHJcbiAgICAgICAgdGhpcy5PcmRlciA9IG5leHRPcmRlcjtcclxuXHJcbiAgICAgICAgdGhpcy5vbk9yZGVyQ2hhbmdlLmVtaXQodGhpcy5PcmRlcik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudG8gZGkgaW5pemlvIHJlc2l6ZSBkZWxsYSBjb2xvbm5hXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7YW55fSBldiBFdmVudG8gTW91c2VEb3duXHJcbiAgICAgKi9cclxuICAgIG9uUmVzaXplU3RhcnQoZXYpIHtcclxuICAgICAgICBpZiAoIXRoaXMuUmVzaXphYmxlKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMucmVzaXppbmdUaGlzID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnN0YXJ0T2Zmc2V0ID0gdGhpcy5teXNlbGYubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCAtIGV2LnBhZ2VYO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBMaXN0ZW5lciBwZXIgbGEgZmluZSBkZWxsJ29wZXJhemlvbmUgZGkgcmVzaXplICovXHJcbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bW91c2V1cC5vdXQtem9uZScpXHJcbiAgICBwdWJsaWMgb25Nb3VzZVVwKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5SZXNpemFibGUpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5yZXNpemluZ1RoaXMgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIExpc3RlbmVyIHBlciBnZXN0aXJlIGlsIG1vdmltZW50byBkZWwgbW91c2UgcXVhbG9yYSB1bidvcGVyYXppb25lIGRpIHJlc2l6ZSBmb3NzZSBpbiBlc2VjdXppb25lXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7JGV2ZW50fSBldiBFdmVudG8gTW91c2VNb3ZlXHJcbiAgICAgKi9cclxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzptb3VzZW1vdmUub3V0LXpvbmUnLCBbJyRldmVudCddKVxyXG4gICAgcHVibGljIG9uTW91c2VNb3ZlKCRldmVudCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5SZXNpemFibGUgfHwgIXRoaXMucmVzaXppbmdUaGlzKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIC8vVXNvIGpxdWVyeSBwZXIgbm9uIGRvdmVyIGZhciBwYXJ0aXJlIHVuIGludGVybyBjaWNsbyBkaSBjaGFuZ2UgZGV0ZWN0aW9uIHNvbG8gcGVyIGZhcmUgdW4gcmVzaXplIGRlbCBjYXp6b1xyXG4gICAgICAgIC8vKGFuY2hlIHBlcmNow6kgdmllbmUgbGFuY2lhdG8gb2duaSAwLjEgc2Vjb25kbyBxdWluZGkgbm90IGEgZ29vZCBpZGVhKVxyXG4gICAgICAgIHRoaXMubXlzZWxmLm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGggPSAodGhpcy5zdGFydE9mZnNldCArICRldmVudC5wYWdlWCkgKyBcInB4XCI7XHJcblxyXG4gICAgICAgIC8vRmVybW8gaWwgYnViYmxpbmcgcGVyIG5vbiBmYXJlIGNvc2Ugc3RyYW5lXHJcbiAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbn0iLCI8c3BhbiAoY2xpY2spPVwic2V0dXBOZXh0T3JkZXJBbmROb3RpZnkoKVwiIFtjbGFzcy5hcHAtbm8tc2VsZWN0aW9uXT1cIiEhSUQgJiYgT3JkZXJhYmxlXCIgW2NsYXNzLmFwcC1wb2ludGVyXT1cIiEhSUQgJiYgT3JkZXJhYmxlXCI+XHJcbiAgICA8c3BhbiAjY29udGVudD5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiISFUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGVudCAqbmdJZj1cIiFUZW1wbGF0ZVwiPjwvbmctY29udGVudD5cclxuICAgIDwvc3Bhbj4mbmJzcDtcclxuICAgIDxzcGFuIGNsYXNzPVwiZmFcIiBbY2xhc3MuZmEtY2hldnJvbi1kb3duXT1cIk9yZGVyID09ICdERVNDJ1wiIFtjbGFzcy5mYS1jaGV2cm9uLXVwXT1cIk9yZGVyID09ICdBU0MnXCI+PC9zcGFuPlxyXG48L3NwYW4+XHJcbjxzcGFuICpuZ0lmPVwiUGlubmVkICYmICFGaXhlZFwiIGNsYXNzPVwiYXBwLXBvaW50ZXIgZmEgZmEtdGh1bWItdGFjayBlc3QtcXVpY2stdW5waW5cIiAoY2xpY2spPVwidW5waW4oKVwiPjwvc3Bhbj5cclxuPGRpdiBbaGlkZGVuXT1cIiFSZXNpemFibGUgfHwgRml4ZWQgfHwgUGlubmVkXCIgY2xhc3M9XCJlc3QtaGVhZC1yZXNpemVyXCIgKG1vdXNlZG93bik9XCJvblJlc2l6ZVN0YXJ0KCRldmVudClcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJlc3QtaGVhZC1yZXNpemVyLWludGVybmFsXCI+PC9kaXY+XHJcbjwvZGl2PiJdfQ==
1
+ //Angular
2
+ import { Component, Input, Output, EventEmitter, ViewChild, HostListener, ChangeDetectionStrategy } from "@angular/core";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ /** Componente rappresentante una Colonna della tabella */
6
+ export class EsTh {
7
+ /** @ignore */
8
+ constructor(myself, renderer) {
9
+ this.myself = myself;
10
+ this.renderer = renderer;
11
+ /** Dizionario di mappatura con ordinamento attuale e ordinamento successivo per gestire i passaggi di stato */
12
+ this.orderNext = { "NONE": "DESC", "DESC": "ASC", "ASC": null };
13
+ /** Indica se si sta effettuando un'operazione di resize su questa colonna */
14
+ this.resizingThis = false;
15
+ /**
16
+ * Storicizza l'offset di partenza del resize dell'elemento HTML per poter calcolare la nuova dimensione richiesta durente il resize
17
+ *
18
+ * nuova width = startOffset + posizione X del mouse
19
+ */
20
+ this.startOffset = null;
21
+ /** Id della colonna, dev'essere lo stesso per tutti gli **EsTd** relativi */
22
+ this.ID = "";
23
+ /** Indica se questa colonna è ordinabile o meno */
24
+ this.Orderable = true;
25
+ /** Valore da mostrare all'interno della colonna. Se omesso verrà proiettato il contenuto dal template in cui è stata usata */
26
+ this.Display = "";
27
+ /** Indica se le dimnsioni di questa colonna sono modificabili o meno */
28
+ this.Resizable = false;
29
+ /** Indica se questo header è pinnato. In caso lo fosse presenta il tastino per effettuare lo spinning */
30
+ this.Pinned = false;
31
+ /**
32
+ * Indica se sta venendo eseguita una operazione di ricerca o meno, serve per evitare l'esecuzione di eventuale codice che potrebbe dare fastidio
33
+ * come ad esempio l'escuzione di un ordinamento durante il caricamento di dati nuovi
34
+ */
35
+ this.SearchInProgress = false;
36
+ /** Indica se il testo presente in questo Header può andare a capo o meno, di default non può */
37
+ this.Wrap = false;
38
+ /** Indica se la colonna è fixed, cioè se non può né essere nascosta, né riposizionata. Solo le prime colonne possono essere Fixed */
39
+ this.Fixed = false;
40
+ /** Template Angular da istanziare per questo TH */
41
+ this.Template = null;
42
+ /** Evento emesso al cambio di ordinamento effettuato su questa colonna */
43
+ this.onOrderChange = new EventEmitter();
44
+ /** Evento emesso all'unpinning della colonna */
45
+ this.onUnpinning = new EventEmitter();
46
+ /** Impostato dall'**EsTable**, per controllare che ci sia almeno un TD che utilizzi quest'header */
47
+ this._referenced = false;
48
+ }
49
+ /**
50
+ * Imposta la visibilità o meno della colonna, si traduce nell'applicazione o rimozione della classe **app-display-none**
51
+ *
52
+ * @param {boolean} expression Indicazione della visibilità
53
+ */
54
+ set Visible(expression) {
55
+ this._Visible = expression;
56
+ if (expression)
57
+ this.renderer.removeClass(this.myself.nativeElement, "app-display-none");
58
+ else
59
+ this.renderer.addClass(this.myself.nativeElement, "app-display-none");
60
+ }
61
+ /**
62
+ * Restituisce lo stato di Visibilità della colonna in oggetto
63
+ *
64
+ * @returns {boolean} **true** se visibile, **false** altrimenti
65
+ */
66
+ get Visible() {
67
+ if (this._Visible == undefined)
68
+ this._Visible = true;
69
+ return this._Visible;
70
+ }
71
+ /** @ignore */
72
+ ngAfterViewInit() {
73
+ //Assegnare direttamente il content è più veloce che passare dal native element per qualche motivo
74
+ this.Description = this.Display === null || this.Display === "" ? this.content.nativeElement.innerText : this.Display;
75
+ this.Class = this.myself.nativeElement.className.replace("app-display-none", "");
76
+ //Resize
77
+ if (this.Resizable)
78
+ this.renderer.addClass(this.myself.nativeElement, "app-relative");
79
+ }
80
+ /** Emette l'evento di unpinning */
81
+ unpin() {
82
+ this.onUnpinning.emit(this.ID);
83
+ }
84
+ /** Gestisce la modifica dell'ordinamento qualora venisse cliccato su questa colonna */
85
+ setupNextOrderAndNotify() {
86
+ if (!this.ID) {
87
+ console.log("Attempt to order a column without ID. Operation ignored");
88
+ return;
89
+ }
90
+ if (this.SearchInProgress) {
91
+ console.log("Attempt to order a column during a search. Operation ignored");
92
+ return;
93
+ }
94
+ if (!this.OrderBy || !this.Orderable)
95
+ return;
96
+ var nextOrder = this.orderNext[this.Order || "NONE"];
97
+ this.Order = nextOrder;
98
+ this.onOrderChange.emit(this.Order);
99
+ }
100
+ /**
101
+ * Evento di inizio resize della colonna
102
+ *
103
+ * @param {any} ev Evento MouseDown
104
+ */
105
+ onResizeStart(ev) {
106
+ if (!this.Resizable)
107
+ return;
108
+ this.resizingThis = true;
109
+ this.startOffset = this.myself.nativeElement.offsetWidth - ev.pageX;
110
+ }
111
+ /** Listener per la fine dell'operazione di resize */
112
+ onMouseUp() {
113
+ if (!this.Resizable)
114
+ return;
115
+ this.resizingThis = false;
116
+ }
117
+ /**
118
+ * Listener per gestire il movimento del mouse qualora un'operazione di resize fosse in esecuzione
119
+ *
120
+ * @param {$event} ev Evento MouseMove
121
+ */
122
+ onMouseMove($event) {
123
+ if (!this.Resizable || !this.resizingThis)
124
+ return;
125
+ //Uso jquery per non dover far partire un intero ciclo di change detection solo per fare un resize del cazzo
126
+ //(anche perché viene lanciato ogni 0.1 secondo quindi not a good idea)
127
+ this.myself.nativeElement.style.width = (this.startOffset + $event.pageX) + "px";
128
+ //Fermo il bubbling per non fare cose strane
129
+ $event.preventDefault();
130
+ }
131
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EsTh, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
132
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: EsTh, selector: "[es-th]", inputs: { ID: ["es-th", "ID"], Order: "Order", Orderable: "Orderable", Display: "Display", Resizable: "Resizable", Pinned: "Pinned", SearchInProgress: "SearchInProgress", OrderBy: "OrderBy", Wrap: "Wrap", Fixed: "Fixed", Template: "Template", Visible: "Visible" }, outputs: { onOrderChange: "onOrderChange", onUnpinning: "onUnpinning" }, host: { listeners: { "window:mouseup.out-zone": "onMouseUp()", "window:mousemove.out-zone": "onMouseMove($event)" } }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: "<span (click)=\"setupNextOrderAndNotify()\" [class.app-no-selection]=\"!!ID && Orderable\" [class.app-pointer]=\"!!ID && Orderable\">\r\n <span #content>\r\n <ng-container *ngIf=\"!!Template\">\r\n <ng-container *ngTemplateOutlet=\"Template\"></ng-container>\r\n </ng-container>\r\n <ng-content *ngIf=\"!Template\"></ng-content>\r\n </span>&nbsp;\r\n <span class=\"fa\" [class.fa-chevron-down]=\"Order == 'DESC'\" [class.fa-chevron-up]=\"Order == 'ASC'\"></span>\r\n</span>\r\n<span *ngIf=\"Pinned && !Fixed\" class=\"app-pointer fa fa-thumb-tack est-quick-unpin\" (click)=\"unpin()\"></span>\r\n<div [hidden]=\"!Resizable || Fixed || Pinned\" class=\"est-head-resizer\" (mousedown)=\"onResizeStart($event)\">\r\n <div class=\"est-head-resizer-internal\"></div>\r\n</div>", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
133
+ }
134
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EsTh, decorators: [{
135
+ type: Component,
136
+ args: [{ selector: "[es-th]", changeDetection: ChangeDetectionStrategy.OnPush, template: "<span (click)=\"setupNextOrderAndNotify()\" [class.app-no-selection]=\"!!ID && Orderable\" [class.app-pointer]=\"!!ID && Orderable\">\r\n <span #content>\r\n <ng-container *ngIf=\"!!Template\">\r\n <ng-container *ngTemplateOutlet=\"Template\"></ng-container>\r\n </ng-container>\r\n <ng-content *ngIf=\"!Template\"></ng-content>\r\n </span>&nbsp;\r\n <span class=\"fa\" [class.fa-chevron-down]=\"Order == 'DESC'\" [class.fa-chevron-up]=\"Order == 'ASC'\"></span>\r\n</span>\r\n<span *ngIf=\"Pinned && !Fixed\" class=\"app-pointer fa fa-thumb-tack est-quick-unpin\" (click)=\"unpin()\"></span>\r\n<div [hidden]=\"!Resizable || Fixed || Pinned\" class=\"est-head-resizer\" (mousedown)=\"onResizeStart($event)\">\r\n <div class=\"est-head-resizer-internal\"></div>\r\n</div>" }]
137
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { ID: [{
138
+ type: Input,
139
+ args: ['es-th']
140
+ }], Order: [{
141
+ type: Input
142
+ }], Orderable: [{
143
+ type: Input
144
+ }], Display: [{
145
+ type: Input
146
+ }], Resizable: [{
147
+ type: Input
148
+ }], Pinned: [{
149
+ type: Input
150
+ }], SearchInProgress: [{
151
+ type: Input
152
+ }], OrderBy: [{
153
+ type: Input
154
+ }], Wrap: [{
155
+ type: Input
156
+ }], Fixed: [{
157
+ type: Input
158
+ }], Template: [{
159
+ type: Input
160
+ }], onOrderChange: [{
161
+ type: Output
162
+ }], onUnpinning: [{
163
+ type: Output
164
+ }], content: [{
165
+ type: ViewChild,
166
+ args: ["content", { static: false }]
167
+ }], Visible: [{
168
+ type: Input
169
+ }], onMouseUp: [{
170
+ type: HostListener,
171
+ args: ['window:mouseup.out-zone']
172
+ }], onMouseMove: [{
173
+ type: HostListener,
174
+ args: ['window:mousemove.out-zone', ['$event']]
175
+ }] } });
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNfdGguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXMtdGFibGUvc3JjL2xpYi9jb21wb25lbnRzL2VzLXRoL2VzX3RoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLXRhYmxlL3NyYy9saWIvY29tcG9uZW50cy9lcy10aC9lc190aC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxTQUFTO0FBQ1QsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBYyxTQUFTLEVBQWEsWUFBWSxFQUFFLHVCQUF1QixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFFaEosMERBQTBEO0FBTTFELE1BQU0sT0FBTyxJQUFJO0lBd0ViLGNBQWM7SUFDZCxZQUFvQixNQUFrQixFQUFVLFFBQW1CO1FBQS9DLFdBQU0sR0FBTixNQUFNLENBQVk7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBdkVuRSwrR0FBK0c7UUFDdkcsY0FBUyxHQUErQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFLL0csNkVBQTZFO1FBQ3JFLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBRXRDOzs7O1dBSUc7UUFDSyxnQkFBVyxHQUFXLElBQUksQ0FBQztRQUVuQyw2RUFBNkU7UUFDN0QsT0FBRSxHQUFXLEVBQUUsQ0FBQztRQUtoQyxtREFBbUQ7UUFDMUMsY0FBUyxHQUFZLElBQUksQ0FBQztRQUVuQyw4SEFBOEg7UUFDckgsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUU5Qix3RUFBd0U7UUFDL0QsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUVwQyx5R0FBeUc7UUFDaEcsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUVqQzs7O1dBR0c7UUFDTSxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFLM0MsZ0dBQWdHO1FBQ3ZGLFNBQUksR0FBWSxLQUFLLENBQUM7UUFFL0IscUlBQXFJO1FBQzVILFVBQUssR0FBWSxLQUFLLENBQUM7UUFFaEMsbURBQW1EO1FBQzFDLGFBQVEsR0FBUyxJQUFJLENBQUM7UUFFL0IsMEVBQTBFO1FBQ3pELGtCQUFhLEdBQXdDLElBQUksWUFBWSxFQUF5QixDQUFDO1FBRWhILGdEQUFnRDtRQUMvQixnQkFBVyxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBUWhGLG9HQUFvRztRQUM3RixnQkFBVyxHQUFZLEtBQUssQ0FBQztJQU1tQyxDQUFDO0lBRXhFOzs7O09BSUc7SUFDSCxJQUFhLE9BQU8sQ0FBQyxVQUFtQjtRQUNwQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztRQUUzQixJQUFJLFVBQVU7WUFDVixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDOztZQUV6RSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxPQUFPO1FBQ1AsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLFNBQVM7WUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFFekIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxjQUFjO0lBQ2QsZUFBZTtRQUNYLGtHQUFrRztRQUNsRyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFFdEgsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpGLFFBQVE7UUFDUixJQUFJLElBQUksQ0FBQyxTQUFTO1lBQ2QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELG1DQUFtQztJQUNuQyxLQUFLO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCx1RkFBdUY7SUFDdkYsdUJBQXVCO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDWCxPQUFPLENBQUMsR0FBRyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7WUFDdkUsT0FBTztRQUNYLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsOERBQThELENBQUMsQ0FBQztZQUM1RSxPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVM7WUFDaEMsT0FBTztRQUVYLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztRQUV2QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxhQUFhLENBQUMsRUFBRTtRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUztZQUNmLE9BQU87UUFFWCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxxREFBcUQ7SUFFOUMsU0FBUztRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUztZQUNmLE9BQU87UUFFWCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUVJLFdBQVcsQ0FBQyxNQUFNO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVk7WUFDckMsT0FBTztRQUVYLDRHQUE0RztRQUM1Ryx1RUFBdUU7UUFDdkUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQztRQUVqRiw0Q0FBNEM7UUFDNUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQzVCLENBQUM7K0dBakxRLElBQUk7bUdBQUosSUFBSSw0bEJDVGpCLGl6QkFZTTs7NEZESE8sSUFBSTtrQkFMaEIsU0FBUzsrQkFDSSxTQUFTLG1CQUVGLHVCQUF1QixDQUFDLE1BQU07dUdBcUIvQixFQUFFO3NCQUFqQixLQUFLO3VCQUFDLE9BQU87Z0JBR0wsS0FBSztzQkFBYixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csT0FBTztzQkFBZixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csTUFBTTtzQkFBZCxLQUFLO2dCQU1HLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFHRyxPQUFPO3NCQUFmLEtBQUs7Z0JBR0csSUFBSTtzQkFBWixLQUFLO2dCQUdHLEtBQUs7c0JBQWIsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUdXLGFBQWE7c0JBQTdCLE1BQU07Z0JBR1UsV0FBVztzQkFBM0IsTUFBTTtnQkFHa0MsT0FBTztzQkFBL0MsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQW1CMUIsT0FBTztzQkFBbkIsS0FBSztnQkEwRUMsU0FBUztzQkFEZixZQUFZO3VCQUFDLHlCQUF5QjtnQkFjaEMsV0FBVztzQkFEakIsWUFBWTt1QkFBQywyQkFBMkIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vQW5ndWxhclxyXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBSZW5kZXJlcjIsIEhvc3RMaXN0ZW5lciwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLyoqIENvbXBvbmVudGUgcmFwcHJlc2VudGFudGUgdW5hIENvbG9ubmEgZGVsbGEgdGFiZWxsYSAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcIltlcy10aF1cIixcclxuICAgIHRlbXBsYXRlVXJsOiBcIi4vZXNfdGguY29tcG9uZW50Lmh0bWxcIixcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFc1RoIHtcclxuXHJcbiAgICAvKiogRGl6aW9uYXJpbyBkaSBtYXBwYXR1cmEgY29uIG9yZGluYW1lbnRvIGF0dHVhbGUgZSBvcmRpbmFtZW50byBzdWNjZXNzaXZvIHBlciBnZXN0aXJlIGkgcGFzc2FnZ2kgZGkgc3RhdG8gKi9cclxuICAgIHByaXZhdGUgb3JkZXJOZXh0OiB7IFtpbmRleDogc3RyaW5nXTogJ0RFU0MnIHwgJ0FTQycgfCBudWxsIH0gPSB7IFwiTk9ORVwiOiBcIkRFU0NcIiwgXCJERVNDXCI6IFwiQVNDXCIsIFwiQVNDXCI6IG51bGwgfTtcclxuXHJcbiAgICAvKiogSW5kaWNhemlvbmUgc3VsbGEgdmlzaWJpbGl0w6AgZGVsbGEgY29sb25uYSAqL1xyXG4gICAgcHJpdmF0ZSBfVmlzaWJsZTogYm9vbGVhbjtcclxuXHJcbiAgICAvKiogSW5kaWNhIHNlIHNpIHN0YSBlZmZldHR1YW5kbyB1bidvcGVyYXppb25lIGRpIHJlc2l6ZSBzdSBxdWVzdGEgY29sb25uYSAqL1xyXG4gICAgcHJpdmF0ZSByZXNpemluZ1RoaXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFN0b3JpY2l6emEgbCdvZmZzZXQgZGkgcGFydGVuemEgZGVsIHJlc2l6ZSBkZWxsJ2VsZW1lbnRvIEhUTUwgcGVyIHBvdGVyIGNhbGNvbGFyZSBsYSBudW92YSBkaW1lbnNpb25lIHJpY2hpZXN0YSBkdXJlbnRlIGlsIHJlc2l6ZSBcclxuICAgICAqIFxyXG4gICAgICogbnVvdmEgd2lkdGggPSBzdGFydE9mZnNldCArIHBvc2l6aW9uZSBYIGRlbCBtb3VzZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHN0YXJ0T2Zmc2V0OiBudW1iZXIgPSBudWxsO1xyXG5cclxuICAgIC8qKiBJZCBkZWxsYSBjb2xvbm5hLCBkZXYnZXNzZXJlIGxvIHN0ZXNzbyBwZXIgdHV0dGkgZ2xpICoqRXNUZCoqIHJlbGF0aXZpICovXHJcbiAgICBASW5wdXQoJ2VzLXRoJykgSUQ6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gICAgLyoqIE9yZGluYW1lbnRvIGF0dHVhbGUgZGVsbGEgY29sb25uYSAqL1xyXG4gICAgQElucHV0KCkgT3JkZXI/OiAnREVTQycgfCAnQVNDJztcclxuXHJcbiAgICAvKiogSW5kaWNhIHNlIHF1ZXN0YSBjb2xvbm5hIMOoIG9yZGluYWJpbGUgbyBtZW5vICovXHJcbiAgICBASW5wdXQoKSBPcmRlcmFibGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIC8qKiBWYWxvcmUgZGEgbW9zdHJhcmUgYWxsJ2ludGVybm8gZGVsbGEgY29sb25uYS4gU2Ugb21lc3NvIHZlcnLDoCBwcm9pZXR0YXRvIGlsIGNvbnRlbnV0byBkYWwgdGVtcGxhdGUgaW4gY3VpIMOoIHN0YXRhIHVzYXRhICovXHJcbiAgICBASW5wdXQoKSBEaXNwbGF5OiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAgIC8qKiBJbmRpY2Egc2UgbGUgZGltbnNpb25pIGRpIHF1ZXN0YSBjb2xvbm5hIHNvbm8gbW9kaWZpY2FiaWxpIG8gbWVubyAqL1xyXG4gICAgQElucHV0KCkgUmVzaXphYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIEluZGljYSBzZSBxdWVzdG8gaGVhZGVyIMOoIHBpbm5hdG8uIEluIGNhc28gbG8gZm9zc2UgcHJlc2VudGEgaWwgdGFzdGlubyBwZXIgZWZmZXR0dWFyZSBsbyBzcGlubmluZyAqL1xyXG4gICAgQElucHV0KCkgUGlubmVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2Egc2Ugc3RhIHZlbmVuZG8gZXNlZ3VpdGEgdW5hIG9wZXJhemlvbmUgZGkgcmljZXJjYSBvIG1lbm8sIHNlcnZlIHBlciBldml0YXJlIGwnZXNlY3V6aW9uZSBkaSBldmVudHVhbGUgY29kaWNlIGNoZSBwb3RyZWJiZSBkYXJlIGZhc3RpZGlvIFxyXG4gICAgICogY29tZSBhZCBlc2VtcGlvIGwnZXNjdXppb25lIGRpIHVuIG9yZGluYW1lbnRvIGR1cmFudGUgaWwgY2FyaWNhbWVudG8gZGkgZGF0aSBudW92aVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBTZWFyY2hJblByb2dyZXNzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIEltcG9zdGF0byBkYWxsJyoqRXNUYWJsZSoqLCBzZXJ2ZSBwZXIgcGVybWV0dGVyZSBvIG1lbm8gZGkgZWZmZXR0dWFyZSBvcmRpbmFtZW50aSBkYXRpIHN1IHF1ZXN0YSBjb2xvbm5hICovXHJcbiAgICBASW5wdXQoKSBPcmRlckJ5OiBib29sZWFuO1xyXG5cclxuICAgIC8qKiBJbmRpY2Egc2UgaWwgdGVzdG8gcHJlc2VudGUgaW4gcXVlc3RvIEhlYWRlciBwdcOyIGFuZGFyZSBhIGNhcG8gbyBtZW5vLCBkaSBkZWZhdWx0IG5vbiBwdcOyICovXHJcbiAgICBASW5wdXQoKSBXcmFwOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIEluZGljYSBzZSBsYSBjb2xvbm5hIMOoIGZpeGVkLCBjaW/DqCBzZSBub24gcHXDsiBuw6kgZXNzZXJlIG5hc2Nvc3RhLCBuw6kgcmlwb3NpemlvbmF0YS4gU29sbyBsZSBwcmltZSBjb2xvbm5lIHBvc3Nvbm8gZXNzZXJlIEZpeGVkICovXHJcbiAgICBASW5wdXQoKSBGaXhlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKiBUZW1wbGF0ZSBBbmd1bGFyIGRhIGlzdGFuemlhcmUgcGVyIHF1ZXN0byBUSCAqL1xyXG4gICAgQElucHV0KCkgVGVtcGxhdGU/OiBhbnkgPSBudWxsO1xyXG5cclxuICAgIC8qKiBFdmVudG8gZW1lc3NvIGFsIGNhbWJpbyBkaSBvcmRpbmFtZW50byBlZmZldHR1YXRvIHN1IHF1ZXN0YSBjb2xvbm5hICovXHJcbiAgICBAT3V0cHV0KCkgcHVibGljIG9uT3JkZXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjwnREVTQycgfCAnQVNDJyB8IG51bGw+ID0gbmV3IEV2ZW50RW1pdHRlcjwnREVTQycgfCAnQVNDJyB8IG51bGw+KCk7XHJcblxyXG4gICAgLyoqIEV2ZW50byBlbWVzc28gYWxsJ3VucGlubmluZyBkZWxsYSBjb2xvbm5hICovXHJcbiAgICBAT3V0cHV0KCkgcHVibGljIG9uVW5waW5uaW5nOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICAgIC8qKiBQcm9pZXppb25lIGRlbCBjb250ZW51dG8gZGkgcXVlc3RhIGNvbG9ubmEgKi9cclxuICAgIEBWaWV3Q2hpbGQoXCJjb250ZW50XCIsIHsgc3RhdGljOiBmYWxzZSB9KSBjb250ZW50OiBFbGVtZW50UmVmO1xyXG5cclxuICAgIC8qKiBDbGFzc2kgZGEgYXBwbGljYXJlIGFsbGEgY29sb25uYSAqL1xyXG4gICAgcHVibGljIENsYXNzOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqIEltcG9zdGF0byBkYWxsJyoqRXNUYWJsZSoqLCBwZXIgY29udHJvbGxhcmUgY2hlIGNpIHNpYSBhbG1lbm8gdW4gVEQgY2hlIHV0aWxpenppIHF1ZXN0J2hlYWRlciAqL1xyXG4gICAgcHVibGljIF9yZWZlcmVuY2VkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqIFZhcmlhYmlsZSBmaW5hbGUgc3UgY3VpIMOoIGJpbmRhdG8gaWwgY29udGVudXRvIGRlbGxhIGNlbGxhLiBTYXLDoCB2YWxvcml6emF0byBhICoqRGlzcGxheSoqIHNlIHNwZWNpZmljYXRvLCBhbGwnKippbm5lckhUTUwqKiBkZWxsJ2VsZW1lbnRvIHByb2lldHRhdG8gYWx0cmltZW50aSAqL1xyXG4gICAgcHVibGljIERlc2NyaXB0aW9uOiBzdHJpbmc7XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgKi9cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgbXlzZWxmOiBFbGVtZW50UmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW1wb3N0YSBsYSB2aXNpYmlsaXTDoCBvIG1lbm8gZGVsbGEgY29sb25uYSwgc2kgdHJhZHVjZSBuZWxsJ2FwcGxpY2F6aW9uZSBvIHJpbW96aW9uZSBkZWxsYSBjbGFzc2UgKiphcHAtZGlzcGxheS1ub25lKipcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBleHByZXNzaW9uIEluZGljYXppb25lIGRlbGxhIHZpc2liaWxpdMOgXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHNldCBWaXNpYmxlKGV4cHJlc3Npb246IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLl9WaXNpYmxlID0gZXhwcmVzc2lvbjtcclxuXHJcbiAgICAgICAgaWYgKGV4cHJlc3Npb24pXHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5teXNlbGYubmF0aXZlRWxlbWVudCwgXCJhcHAtZGlzcGxheS1ub25lXCIpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLm15c2VsZi5uYXRpdmVFbGVtZW50LCBcImFwcC1kaXNwbGF5LW5vbmVcIik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXN0aXR1aXNjZSBsbyBzdGF0byBkaSBWaXNpYmlsaXTDoCBkZWxsYSBjb2xvbm5hIGluIG9nZ2V0dG9cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59ICoqdHJ1ZSoqIHNlIHZpc2liaWxlLCAqKmZhbHNlKiogYWx0cmltZW50aVxyXG4gICAgICovXHJcbiAgICBnZXQgVmlzaWJsZSgpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodGhpcy5fVmlzaWJsZSA9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgIHRoaXMuX1Zpc2libGUgPSB0cnVlO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5fVmlzaWJsZTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGlnbm9yZSAqL1xyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICAgIC8vQXNzZWduYXJlIGRpcmV0dGFtZW50ZSBpbCBjb250ZW50IMOoIHBpw7kgdmVsb2NlIGNoZSBwYXNzYXJlIGRhbCBuYXRpdmUgZWxlbWVudCBwZXIgcXVhbGNoZSBtb3Rpdm9cclxuICAgICAgICB0aGlzLkRlc2NyaXB0aW9uID0gdGhpcy5EaXNwbGF5ID09PSBudWxsIHx8IHRoaXMuRGlzcGxheSA9PT0gXCJcIiA/IHRoaXMuY29udGVudC5uYXRpdmVFbGVtZW50LmlubmVyVGV4dCA6IHRoaXMuRGlzcGxheTtcclxuXHJcbiAgICAgICAgdGhpcy5DbGFzcyA9IHRoaXMubXlzZWxmLm5hdGl2ZUVsZW1lbnQuY2xhc3NOYW1lLnJlcGxhY2UoXCJhcHAtZGlzcGxheS1ub25lXCIsIFwiXCIpO1xyXG5cclxuICAgICAgICAvL1Jlc2l6ZVxyXG4gICAgICAgIGlmICh0aGlzLlJlc2l6YWJsZSlcclxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLm15c2VsZi5uYXRpdmVFbGVtZW50LCBcImFwcC1yZWxhdGl2ZVwiKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogRW1ldHRlIGwnZXZlbnRvIGRpIHVucGlubmluZyAqL1xyXG4gICAgdW5waW4oKSB7XHJcbiAgICAgICAgdGhpcy5vblVucGlubmluZy5lbWl0KHRoaXMuSUQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBHZXN0aXNjZSBsYSBtb2RpZmljYSBkZWxsJ29yZGluYW1lbnRvIHF1YWxvcmEgdmVuaXNzZSBjbGljY2F0byBzdSBxdWVzdGEgY29sb25uYSAqL1xyXG4gICAgc2V0dXBOZXh0T3JkZXJBbmROb3RpZnkoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLklEKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQXR0ZW1wdCB0byBvcmRlciBhIGNvbHVtbiB3aXRob3V0IElELiBPcGVyYXRpb24gaWdub3JlZFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuU2VhcmNoSW5Qcm9ncmVzcykge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkF0dGVtcHQgdG8gb3JkZXIgYSBjb2x1bW4gZHVyaW5nIGEgc2VhcmNoLiBPcGVyYXRpb24gaWdub3JlZFwiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLk9yZGVyQnkgfHwgIXRoaXMuT3JkZXJhYmxlKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIHZhciBuZXh0T3JkZXIgPSB0aGlzLm9yZGVyTmV4dFt0aGlzLk9yZGVyIHx8IFwiTk9ORVwiXTtcclxuICAgICAgICB0aGlzLk9yZGVyID0gbmV4dE9yZGVyO1xyXG5cclxuICAgICAgICB0aGlzLm9uT3JkZXJDaGFuZ2UuZW1pdCh0aGlzLk9yZGVyKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEV2ZW50byBkaSBpbml6aW8gcmVzaXplIGRlbGxhIGNvbG9ubmFcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHthbnl9IGV2IEV2ZW50byBNb3VzZURvd25cclxuICAgICAqL1xyXG4gICAgb25SZXNpemVTdGFydChldikge1xyXG4gICAgICAgIGlmICghdGhpcy5SZXNpemFibGUpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5yZXNpemluZ1RoaXMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc3RhcnRPZmZzZXQgPSB0aGlzLm15c2VsZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIC0gZXYucGFnZVg7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIExpc3RlbmVyIHBlciBsYSBmaW5lIGRlbGwnb3BlcmF6aW9uZSBkaSByZXNpemUgKi9cclxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzptb3VzZXVwLm91dC16b25lJylcclxuICAgIHB1YmxpYyBvbk1vdXNlVXAoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLlJlc2l6YWJsZSlcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLnJlc2l6aW5nVGhpcyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTGlzdGVuZXIgcGVyIGdlc3RpcmUgaWwgbW92aW1lbnRvIGRlbCBtb3VzZSBxdWFsb3JhIHVuJ29wZXJhemlvbmUgZGkgcmVzaXplIGZvc3NlIGluIGVzZWN1emlvbmVcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHskZXZlbnR9IGV2IEV2ZW50byBNb3VzZU1vdmVcclxuICAgICAqL1xyXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1vdXNlbW92ZS5vdXQtem9uZScsIFsnJGV2ZW50J10pXHJcbiAgICBwdWJsaWMgb25Nb3VzZU1vdmUoJGV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLlJlc2l6YWJsZSB8fCAhdGhpcy5yZXNpemluZ1RoaXMpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgLy9Vc28ganF1ZXJ5IHBlciBub24gZG92ZXIgZmFyIHBhcnRpcmUgdW4gaW50ZXJvIGNpY2xvIGRpIGNoYW5nZSBkZXRlY3Rpb24gc29sbyBwZXIgZmFyZSB1biByZXNpemUgZGVsIGNhenpvXHJcbiAgICAgICAgLy8oYW5jaGUgcGVyY2jDqSB2aWVuZSBsYW5jaWF0byBvZ25pIDAuMSBzZWNvbmRvIHF1aW5kaSBub3QgYSBnb29kIGlkZWEpXHJcbiAgICAgICAgdGhpcy5teXNlbGYubmF0aXZlRWxlbWVudC5zdHlsZS53aWR0aCA9ICh0aGlzLnN0YXJ0T2Zmc2V0ICsgJGV2ZW50LnBhZ2VYKSArIFwicHhcIjtcclxuXHJcbiAgICAgICAgLy9GZXJtbyBpbCBidWJibGluZyBwZXIgbm9uIGZhcmUgY29zZSBzdHJhbmVcclxuICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxufSIsIjxzcGFuIChjbGljayk9XCJzZXR1cE5leHRPcmRlckFuZE5vdGlmeSgpXCIgW2NsYXNzLmFwcC1uby1zZWxlY3Rpb25dPVwiISFJRCAmJiBPcmRlcmFibGVcIiBbY2xhc3MuYXBwLXBvaW50ZXJdPVwiISFJRCAmJiBPcmRlcmFibGVcIj5cclxuICAgIDxzcGFuICNjb250ZW50PlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhIVRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250ZW50ICpuZ0lmPVwiIVRlbXBsYXRlXCI+PC9uZy1jb250ZW50PlxyXG4gICAgPC9zcGFuPiZuYnNwO1xyXG4gICAgPHNwYW4gY2xhc3M9XCJmYVwiIFtjbGFzcy5mYS1jaGV2cm9uLWRvd25dPVwiT3JkZXIgPT0gJ0RFU0MnXCIgW2NsYXNzLmZhLWNoZXZyb24tdXBdPVwiT3JkZXIgPT0gJ0FTQydcIj48L3NwYW4+XHJcbjwvc3Bhbj5cclxuPHNwYW4gKm5nSWY9XCJQaW5uZWQgJiYgIUZpeGVkXCIgY2xhc3M9XCJhcHAtcG9pbnRlciBmYSBmYS10aHVtYi10YWNrIGVzdC1xdWljay11bnBpblwiIChjbGljayk9XCJ1bnBpbigpXCI+PC9zcGFuPlxyXG48ZGl2IFtoaWRkZW5dPVwiIVJlc2l6YWJsZSB8fCBGaXhlZCB8fCBQaW5uZWRcIiBjbGFzcz1cImVzdC1oZWFkLXJlc2l6ZXJcIiAobW91c2Vkb3duKT1cIm9uUmVzaXplU3RhcnQoJGV2ZW50KVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImVzdC1oZWFkLXJlc2l6ZXItaW50ZXJuYWxcIj48L2Rpdj5cclxuPC9kaXY+Il19
@@ -1,21 +1,21 @@
1
- import { Injectable } from "@angular/core";
2
- import { LocalizationService } from "@esfaenza/localizations";
3
- import * as i0 from "@angular/core";
4
- /** Classe di localizzazione per il componente **TablePagerComponent** */
5
- export class TablePagerLoc extends LocalizationService {
6
- /** @ignore */
7
- constructor(injector) {
8
- super(injector);
9
- super.set("en->it", "All", ["Tutto"]);
10
- super.set("en->it", "Shown Elements", ["Elementi visualizzati"]);
11
- super.set("en->it", "Shown Groups", ["Gruppi visualizzati"]);
12
- super.set("en->it", "Are you sure you want to retrieve all results?", ["Si è sicuri di voler caricare tutti i risultati?"]);
13
- super.set("en->it", "This might slow down the page and possibly crash the entire application", ["L'operazione potrebbe rallentare la pagina fino al crash dell'applicazione"]);
14
- }
15
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TablePagerLoc, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
16
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TablePagerLoc }); }
17
- }
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TablePagerLoc, decorators: [{
19
- type: Injectable
20
- }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
1
+ import { Injectable } from "@angular/core";
2
+ import { LocalizationService } from "@esfaenza/localizations";
3
+ import * as i0 from "@angular/core";
4
+ /** Classe di localizzazione per il componente **TablePagerComponent** */
5
+ export class TablePagerLoc extends LocalizationService {
6
+ /** @ignore */
7
+ constructor(injector) {
8
+ super(injector);
9
+ super.set("en->it", "All", ["Tutto"]);
10
+ super.set("en->it", "Shown Elements", ["Elementi visualizzati"]);
11
+ super.set("en->it", "Shown Groups", ["Gruppi visualizzati"]);
12
+ super.set("en->it", "Are you sure you want to retrieve all results?", ["Si è sicuri di voler caricare tutti i risultati?"]);
13
+ super.set("en->it", "This might slow down the page and possibly crash the entire application", ["L'operazione potrebbe rallentare la pagina fino al crash dell'applicazione"]);
14
+ }
15
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TablePagerLoc, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
16
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TablePagerLoc }); }
17
+ }
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TablePagerLoc, decorators: [{
19
+ type: Injectable
20
+ }], ctorParameters: () => [{ type: i0.Injector }] });
21
21
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGVfcGFnZXIuY29tcG9uZW50LmxvYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VzLXRhYmxlL3NyYy9saWIvY29tcG9uZW50cy9wYWdlci90YWJsZV9wYWdlci5jb21wb25lbnQubG9jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBRTlELHlFQUF5RTtBQUV6RSxNQUFNLE9BQU8sYUFBYyxTQUFRLG1CQUFtQjtJQUVsRCxjQUFjO0lBQ2QsWUFBWSxRQUFrQjtRQUMxQixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN0QyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQztRQUNqRSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxjQUFjLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7UUFDN0QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsZ0RBQWdELEVBQUUsQ0FBQyxrREFBa0QsQ0FBQyxDQUFDLENBQUM7UUFDNUgsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUseUVBQXlFLEVBQUUsQ0FBQyw0RUFBNEUsQ0FBQyxDQUFDLENBQUM7SUFDbkwsQ0FBQzsrR0FWUSxhQUFhO21IQUFiLGFBQWE7OzRGQUFiLGFBQWE7a0JBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2xvY2FsaXphdGlvbnNcIjtcclxuXHJcbi8qKiBDbGFzc2UgZGkgbG9jYWxpenphemlvbmUgcGVyIGlsIGNvbXBvbmVudGUgKipUYWJsZVBhZ2VyQ29tcG9uZW50KiogKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVGFibGVQYWdlckxvYyBleHRlbmRzIExvY2FsaXphdGlvblNlcnZpY2Uge1xyXG5cclxuICAgIC8qKiBAaWdub3JlICovXHJcbiAgICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgICAgICBzdXBlcihpbmplY3Rvcik7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiZW4tPml0XCIsIFwiQWxsXCIsIFtcIlR1dHRvXCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJlbi0+aXRcIiwgXCJTaG93biBFbGVtZW50c1wiLCBbXCJFbGVtZW50aSB2aXN1YWxpenphdGlcIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcImVuLT5pdFwiLCBcIlNob3duIEdyb3Vwc1wiLCBbXCJHcnVwcGkgdmlzdWFsaXp6YXRpXCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJlbi0+aXRcIiwgXCJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmV0cmlldmUgYWxsIHJlc3VsdHM/XCIsIFtcIlNpIMOoIHNpY3VyaSBkaSB2b2xlciBjYXJpY2FyZSB0dXR0aSBpIHJpc3VsdGF0aT9cIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcImVuLT5pdFwiLCBcIlRoaXMgbWlnaHQgc2xvdyBkb3duIHRoZSBwYWdlIGFuZCBwb3NzaWJseSBjcmFzaCB0aGUgZW50aXJlIGFwcGxpY2F0aW9uXCIsIFtcIkwnb3BlcmF6aW9uZSBwb3RyZWJiZSByYWxsZW50YXJlIGxhIHBhZ2luYSBmaW5vIGFsIGNyYXNoIGRlbGwnYXBwbGljYXppb25lXCJdKTtcclxuICAgIH1cclxufSJdfQ==