@esfaenza/forms-and-validations 12.2.28 → 13.1.3

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 (118) hide show
  1. package/esfaenza-forms-and-validations.d.ts +1 -12
  2. package/esm2020/esfaenza-forms-and-validations.mjs +5 -0
  3. package/esm2020/lib/forms/base-form-control.mjs +482 -0
  4. package/esm2020/lib/forms/form-adaptive/form-adaptive.component.loc.mjs +28 -0
  5. package/esm2020/lib/forms/form-adaptive/form-adaptive.component.mjs +294 -0
  6. package/esm2020/lib/forms/form-autocomplete/form-autocomplete.component.loc.mjs +26 -0
  7. package/esm2020/lib/forms/form-autocomplete/form-autocomplete.component.mjs +200 -0
  8. package/esm2020/lib/forms/form-checkbox/form-checkbox.component.mjs +52 -0
  9. package/esm2020/lib/forms/form-date/form-date.component.mjs +59 -0
  10. package/esm2020/lib/forms/form-datetime/form-datetime.component.mjs +59 -0
  11. package/esm2020/lib/forms/form-empty/form-empty.component.mjs +36 -0
  12. package/esm2020/lib/forms/form-error/form-error.component.mjs +52 -0
  13. package/esm2020/lib/forms/form-file/form-file.component.loc.mjs +28 -0
  14. package/esm2020/lib/forms/form-file/form-file.component.mjs +119 -0
  15. package/esm2020/lib/forms/form-info/form-info.component.mjs +52 -0
  16. package/esm2020/lib/forms/form-input/form-input.component.mjs +93 -0
  17. package/esm2020/lib/forms/form-multiselect/form-multiselect.component.loc.mjs +29 -0
  18. package/esm2020/lib/forms/form-multiselect/form-multiselect.component.mjs +159 -0
  19. package/esm2020/lib/forms/form-select/form-select.component.loc.mjs +26 -0
  20. package/esm2020/lib/forms/form-select/form-select.component.mjs +129 -0
  21. package/esm2020/lib/forms/form-template/form-template.component.mjs +71 -0
  22. package/esm2020/lib/forms/form-textarea/form-textarea.component.mjs +54 -0
  23. package/esm2020/lib/forms/form-time/form-time.component.mjs +131 -0
  24. package/esm2020/lib/forms-and-validations.module.mjs +203 -0
  25. package/{esm2015/lib/models/AppFile.js → esm2020/lib/models/AppFile.mjs} +0 -0
  26. package/{esm2015/lib/models/FormsAndValidationsModuleConfig.js → esm2020/lib/models/FormsAndValidationsModuleConfig.mjs} +0 -0
  27. package/esm2020/lib/models/dayjs-adapter/dayjs-date-adapter.mjs +89 -0
  28. package/{esm2015/lib/tokens.js → esm2020/lib/tokens.mjs} +0 -0
  29. package/esm2020/lib/validations/base-validation.loc.mjs +28 -0
  30. package/esm2020/lib/validations/base-validation.mjs +232 -0
  31. package/esm2020/lib/validations/customValidators/CustomRequiredDirective.mjs +41 -0
  32. package/esm2020/lib/validations/validation-autocomplete/validation-autocomplete.component.mjs +168 -0
  33. package/esm2020/lib/validations/validation-currency/validation-currency.component.mjs +61 -0
  34. package/esm2020/lib/validations/validation-date/validation-date.component.mjs +177 -0
  35. package/esm2020/lib/validations/validation-datetime/validation-datetime.component.mjs +206 -0
  36. package/esm2020/lib/validations/validation-input/validation-input.component.mjs +207 -0
  37. package/esm2020/lib/validations/validation-select/validation-select.component.mjs +184 -0
  38. package/esm2020/lib/validations/validation-text-area/validation-text-area.component.mjs +64 -0
  39. package/esm2020/public-api.mjs +35 -0
  40. package/fesm2015/esfaenza-forms-and-validations.mjs +3620 -0
  41. package/fesm2015/esfaenza-forms-and-validations.mjs.map +1 -0
  42. package/fesm2020/esfaenza-forms-and-validations.mjs +3562 -0
  43. package/fesm2020/esfaenza-forms-and-validations.mjs.map +1 -0
  44. package/lib/forms/base-form-control.d.ts +3 -0
  45. package/lib/forms/form-adaptive/form-adaptive.component.d.ts +3 -0
  46. package/lib/forms/form-adaptive/form-adaptive.component.loc.d.ts +3 -0
  47. package/lib/forms/form-autocomplete/form-autocomplete.component.d.ts +3 -0
  48. package/lib/forms/form-autocomplete/form-autocomplete.component.loc.d.ts +3 -0
  49. package/lib/forms/form-checkbox/form-checkbox.component.d.ts +3 -0
  50. package/lib/forms/form-date/form-date.component.d.ts +3 -0
  51. package/lib/forms/form-datetime/form-datetime.component.d.ts +3 -0
  52. package/lib/forms/form-empty/form-empty.component.d.ts +3 -0
  53. package/lib/forms/form-error/form-error.component.d.ts +3 -0
  54. package/lib/forms/form-file/form-file.component.d.ts +3 -0
  55. package/lib/forms/form-file/form-file.component.loc.d.ts +3 -0
  56. package/lib/forms/form-info/form-info.component.d.ts +3 -0
  57. package/lib/forms/form-input/form-input.component.d.ts +3 -0
  58. package/lib/forms/form-multiselect/form-multiselect.component.d.ts +4 -0
  59. package/lib/forms/form-multiselect/form-multiselect.component.loc.d.ts +3 -0
  60. package/lib/forms/form-select/form-select.component.d.ts +3 -0
  61. package/lib/forms/form-select/form-select.component.loc.d.ts +3 -0
  62. package/lib/forms/form-template/form-template.component.d.ts +3 -0
  63. package/lib/forms/form-textarea/form-textarea.component.d.ts +3 -0
  64. package/lib/forms/form-time/form-time.component.d.ts +3 -0
  65. package/lib/forms-and-validations.module.d.ts +38 -0
  66. package/lib/models/dayjs-adapter/dayjs-date-adapter.d.ts +3 -0
  67. package/lib/validations/base-validation.d.ts +3 -0
  68. package/lib/validations/base-validation.loc.d.ts +3 -0
  69. package/lib/validations/customValidators/CustomRequiredDirective.d.ts +3 -0
  70. package/lib/validations/validation-autocomplete/validation-autocomplete.component.d.ts +3 -0
  71. package/lib/validations/validation-currency/validation-currency.component.d.ts +3 -0
  72. package/lib/validations/validation-date/validation-date.component.d.ts +3 -0
  73. package/lib/validations/validation-datetime/validation-datetime.component.d.ts +3 -0
  74. package/lib/validations/validation-input/validation-input.component.d.ts +3 -0
  75. package/lib/validations/validation-select/validation-select.component.d.ts +3 -0
  76. package/lib/validations/validation-text-area/validation-text-area.component.d.ts +3 -0
  77. package/package.json +31 -19
  78. package/public-api.d.ts +2 -0
  79. package/bundles/esfaenza-forms-and-validations.umd.js +0 -3753
  80. package/bundles/esfaenza-forms-and-validations.umd.js.map +0 -1
  81. package/esfaenza-forms-and-validations.metadata.json +0 -1
  82. package/esm2015/esfaenza-forms-and-validations.js +0 -17
  83. package/esm2015/lib/forms/base-form-control.js +0 -460
  84. package/esm2015/lib/forms/form-adaptive/form-adaptive.component.js +0 -277
  85. package/esm2015/lib/forms/form-adaptive/form-adaptive.component.loc.js +0 -23
  86. package/esm2015/lib/forms/form-autocomplete/form-autocomplete.component.js +0 -187
  87. package/esm2015/lib/forms/form-autocomplete/form-autocomplete.component.loc.js +0 -21
  88. package/esm2015/lib/forms/form-checkbox/form-checkbox.component.js +0 -41
  89. package/esm2015/lib/forms/form-date/form-date.component.js +0 -49
  90. package/esm2015/lib/forms/form-datetime/form-datetime.component.js +0 -49
  91. package/esm2015/lib/forms/form-empty/form-empty.component.js +0 -34
  92. package/esm2015/lib/forms/form-error/form-error.component.js +0 -49
  93. package/esm2015/lib/forms/form-file/form-file.component.js +0 -109
  94. package/esm2015/lib/forms/form-file/form-file.component.loc.js +0 -23
  95. package/esm2015/lib/forms/form-info/form-info.component.js +0 -49
  96. package/esm2015/lib/forms/form-input/form-input.component.js +0 -76
  97. package/esm2015/lib/forms/form-multiselect/form-multiselect.component.js +0 -153
  98. package/esm2015/lib/forms/form-multiselect/form-multiselect.component.loc.js +0 -24
  99. package/esm2015/lib/forms/form-select/form-select.component.js +0 -114
  100. package/esm2015/lib/forms/form-select/form-select.component.loc.js +0 -21
  101. package/esm2015/lib/forms/form-template/form-template.component.js +0 -64
  102. package/esm2015/lib/forms/form-textarea/form-textarea.component.js +0 -44
  103. package/esm2015/lib/forms/form-time/form-time.component.js +0 -117
  104. package/esm2015/lib/forms-and-validations.module.js +0 -144
  105. package/esm2015/lib/models/dayjs-adapter/dayjs-date-adapter.js +0 -86
  106. package/esm2015/lib/validations/base-validation.js +0 -208
  107. package/esm2015/lib/validations/base-validation.loc.js +0 -23
  108. package/esm2015/lib/validations/customValidators/CustomRequiredDirective.js +0 -35
  109. package/esm2015/lib/validations/validation-autocomplete/validation-autocomplete.component.js +0 -151
  110. package/esm2015/lib/validations/validation-currency/validation-currency.component.js +0 -48
  111. package/esm2015/lib/validations/validation-date/validation-date.component.js +0 -165
  112. package/esm2015/lib/validations/validation-datetime/validation-datetime.component.js +0 -193
  113. package/esm2015/lib/validations/validation-input/validation-input.component.js +0 -186
  114. package/esm2015/lib/validations/validation-select/validation-select.component.js +0 -166
  115. package/esm2015/lib/validations/validation-text-area/validation-text-area.component.js +0 -52
  116. package/esm2015/public-api.js +0 -32
  117. package/fesm2015/esfaenza-forms-and-validations.js +0 -3261
  118. package/fesm2015/esfaenza-forms-and-validations.js.map +0 -1
@@ -0,0 +1,119 @@
1
+ // Angular
2
+ import { ChangeDetectionStrategy, Component, Inject, Input, Optional, Self, ViewChild } from "@angular/core";
3
+ import { NG_VALIDATORS } from "@angular/forms";
4
+ import { LocalizationService } from "@esfaenza/localizations";
5
+ // Applicazione
6
+ import { BaseFormControl } from "../base-form-control";
7
+ // Modelli
8
+ import { AppFile } from "../../models/AppFile";
9
+ // Configurazioni
10
+ import { ACO_CUSTOMKEY } from '../../tokens';
11
+ import { FormFileComponentLoc } from "./form-file.component.loc";
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "@esfaenza/extensions";
14
+ import * as i2 from "@angular/forms";
15
+ import * as i3 from "@esfaenza/access-control";
16
+ import * as i4 from "@esfaenza/localizations";
17
+ import * as i5 from "@angular/common";
18
+ /**
19
+ * Componente che permette all'utente di caricare/scaricare un file all'interno di un campo Input
20
+ */
21
+ export class FormFileComponent extends BaseFormControl {
22
+ /**
23
+ * Costruttore
24
+ *
25
+ * @ignore
26
+ */
27
+ constructor(cdr, utiExts, ngControl, _validators, ac, AppContext, ACO_CUSTOMKEY, lc) {
28
+ super(cdr, ngControl, _validators, ac, AppContext, ACO_CUSTOMKEY);
29
+ this.utiExts = utiExts;
30
+ this.lc = lc;
31
+ /**
32
+ * Permette di caricare file multipli
33
+ */
34
+ this.Multiple = false;
35
+ /**
36
+ * Permette di scaricare l'eventuale file selezionato
37
+ */
38
+ this.AllowDownload = true;
39
+ //Per questo componente non posso permettermi che il modello sia nullo
40
+ this.Model = new AppFile();
41
+ }
42
+ /**
43
+ * @ignore
44
+ */
45
+ writeValue(obj) {
46
+ var model = obj == null ? new AppFile() : obj;
47
+ super.writeValue(model);
48
+ if (obj == null)
49
+ this.changed();
50
+ }
51
+ /**
52
+ * Helper per gestire la modifica del file attualmente bindato
53
+ *
54
+ * @param {boolean} clear Indica se bisogna svuotare l'input o meno
55
+ */
56
+ fileChange(clear = false) {
57
+ let files = [];
58
+ let model = this.Model;
59
+ let ne = this.inputEl.nativeElement;
60
+ if (clear) {
61
+ model.filename = "";
62
+ ne.value = "";
63
+ }
64
+ else {
65
+ for (let i = 0; i < ne.files.length; i++)
66
+ files.push(ne.files.item(i));
67
+ if (ne.files.length == 1)
68
+ model.filename = ne.files[0].name;
69
+ if (ne.files.length > 1)
70
+ model.filename = ne.files.length + " " + this.lc.loc("Files Selected");
71
+ model.nativefiles = files;
72
+ model.fileb64 = null;
73
+ }
74
+ this.changed(null, true);
75
+ }
76
+ /**
77
+ * Permette di scaricare l'eventuale file selezionato
78
+ */
79
+ downloadAttachment() {
80
+ let model = this.Model;
81
+ this.utiExts.saveFile(model.fileb64, model.filename);
82
+ }
83
+ /**
84
+ * @ignore
85
+ */
86
+ onNotNullValueSet() { }
87
+ }
88
+ FormFileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FormFileComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.UtilityService }, { token: i2.NgControl, optional: true, self: true }, { token: NG_VALIDATORS, optional: true }, { token: i3.AccessControlService, optional: true }, { token: i3.ComponentContext, optional: true }, { token: ACO_CUSTOMKEY, optional: true }, { token: i4.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
89
+ FormFileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: FormFileComponent, selector: "form-file", inputs: { Multiple: "Multiple", AllowDownload: "AllowDownload" }, providers: [{ provide: LocalizationService, useClass: FormFileComponentLoc }], viewQueries: [{ propertyName: "inputEl", first: true, predicate: ["fileInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"!FormLayout\">\r\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\r\n</ng-container>\r\n\r\n<div *ngIf=\"FormLayout\" class=\"form-group row {{FormGroupClass}}\" [class.app-margin-bottom-0]=\"Last\">\r\n <label class=\"col-md-{{LabelColWidth}} m-t-5\">{{Label}}{{Required ? '*' : ''}}:</label>\r\n <div class=\"col-md-{{InputColWidth}}\">\r\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n</div>\r\n\r\n<ng-template #controlTemplate>\r\n <div class=\"input-group file-upload\">\r\n <input type=\"file\" (change)=\"fileChange()\" #fileInput class=\"file-upload-btn app-pointer\" [multiple]=\"Multiple ? true : null\" />\r\n <input type=\"text\" [class.frm-padding-left-22]=\"AllowDownload && Model.filename && Model.fileb64\" class=\"form-control checking-field\" placeholder=\"{{'Select a file' | localize : lc}}...\" [(ngModel)]=\"Model.filename\" name=\"dsfile\" #validationControl=\"ngModel\" [required]=\"Required ? true : null\" />\r\n\r\n <a class=\"fa fa-download app-pointer app-input-icon\" *ngIf=\"AllowDownload && Model.filename && Model.fileb64\" (click)=\"downloadAttachment()\"></a>\r\n <i class=\"fa fa-times delete-file\" (click)=\"fileChange(true)\" *ngIf=\"Model.filename\"></i>\r\n <span class=\"input-group-btn\">\r\n <button class=\"btn btn-primary btn-file-upload\" type=\"button\"><i class=\"fa fa-upload\"></i></button>\r\n </span>\r\n </div>\r\n</ng-template>", styles: [".frm-padding-left-22{padding-left:22px}\n"], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }], pipes: { "localize": i4.LocalizePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
90
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FormFileComponent, decorators: [{
91
+ type: Component,
92
+ args: [{ selector: "form-file", providers: [{ provide: LocalizationService, useClass: FormFileComponentLoc }], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"!FormLayout\">\r\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\r\n</ng-container>\r\n\r\n<div *ngIf=\"FormLayout\" class=\"form-group row {{FormGroupClass}}\" [class.app-margin-bottom-0]=\"Last\">\r\n <label class=\"col-md-{{LabelColWidth}} m-t-5\">{{Label}}{{Required ? '*' : ''}}:</label>\r\n <div class=\"col-md-{{InputColWidth}}\">\r\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n</div>\r\n\r\n<ng-template #controlTemplate>\r\n <div class=\"input-group file-upload\">\r\n <input type=\"file\" (change)=\"fileChange()\" #fileInput class=\"file-upload-btn app-pointer\" [multiple]=\"Multiple ? true : null\" />\r\n <input type=\"text\" [class.frm-padding-left-22]=\"AllowDownload && Model.filename && Model.fileb64\" class=\"form-control checking-field\" placeholder=\"{{'Select a file' | localize : lc}}...\" [(ngModel)]=\"Model.filename\" name=\"dsfile\" #validationControl=\"ngModel\" [required]=\"Required ? true : null\" />\r\n\r\n <a class=\"fa fa-download app-pointer app-input-icon\" *ngIf=\"AllowDownload && Model.filename && Model.fileb64\" (click)=\"downloadAttachment()\"></a>\r\n <i class=\"fa fa-times delete-file\" (click)=\"fileChange(true)\" *ngIf=\"Model.filename\"></i>\r\n <span class=\"input-group-btn\">\r\n <button class=\"btn btn-primary btn-file-upload\" type=\"button\"><i class=\"fa fa-upload\"></i></button>\r\n </span>\r\n </div>\r\n</ng-template>", styles: [".frm-padding-left-22{padding-left:22px}\n"] }]
93
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.UtilityService }, { type: i2.NgControl, decorators: [{
94
+ type: Optional
95
+ }, {
96
+ type: Self
97
+ }] }, { type: Array, decorators: [{
98
+ type: Optional
99
+ }, {
100
+ type: Inject,
101
+ args: [NG_VALIDATORS]
102
+ }] }, { type: i3.AccessControlService, decorators: [{
103
+ type: Optional
104
+ }] }, { type: i3.ComponentContext, decorators: [{
105
+ type: Optional
106
+ }] }, { type: undefined, decorators: [{
107
+ type: Optional
108
+ }, {
109
+ type: Inject,
110
+ args: [ACO_CUSTOMKEY]
111
+ }] }, { type: i4.LocalizationService }]; }, propDecorators: { Multiple: [{
112
+ type: Input
113
+ }], AllowDownload: [{
114
+ type: Input
115
+ }], inputEl: [{
116
+ type: ViewChild,
117
+ args: ["fileInput", { static: false }]
118
+ }] } });
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm1zLWFuZC12YWxpZGF0aW9ucy9zcmMvbGliL2Zvcm1zL2Zvcm0tZmlsZS9mb3JtLWZpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvZm9ybXMvZm9ybS1maWxlL2Zvcm0tZmlsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBaUMsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1SSxPQUFPLEVBQXdCLGFBQWEsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBSWhGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRzlELGVBQWU7QUFDZixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFdkQsVUFBVTtBQUNWLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUvQyxpQkFBaUI7QUFDakIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7OztBQUVqRTs7R0FFRztBQVFILE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxlQUFlO0lBaUJsRDs7OztPQUlHO0lBQ0gsWUFBWSxHQUFzQixFQUFVLE9BQXVCLEVBQXNCLFNBQW9CLEVBQXFDLFdBQXVCLEVBQWMsRUFBd0IsRUFBYyxVQUE0QixFQUFxQyxhQUFxQixFQUFTLEVBQXVCO1FBQy9VLEtBQUssQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLFdB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S0FBSzswQkFBcEQsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxhQUFhOzswQkFBNEIsUUFBUTs7MEJBQThCLFFBQVE7OzBCQUFrQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGFBQWE7OEVBakJuUixRQUFRO3NCQUFoQixLQUFLO2dCQUtHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBS3FDLE9BQU87c0JBQWpELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIEVsZW1lbnRSZWYsIEluamVjdCwgSW5wdXQsIE9wdGlvbmFsLCBTZWxmLCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMSURBVE9SUywgTmdDb250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG4vLyBFc2ZhZW56YVxyXG5pbXBvcnQgeyBBY2Nlc3NDb250cm9sU2VydmljZSwgQ29tcG9uZW50Q29udGV4dCB9IGZyb20gJ0Blc2ZhZW56YS9hY2Nlc3MtY29udHJvbCc7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2xvY2FsaXphdGlvbnNcIjtcclxuaW1wb3J0IHsgVXRpbGl0eVNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2V4dGVuc2lvbnNcIjtcclxuXHJcbi8vIEFwcGxpY2F6aW9uZVxyXG5pbXBvcnQgeyBCYXNlRm9ybUNvbnRyb2wgfSBmcm9tIFwiLi4vYmFzZS1mb3JtLWNvbnRyb2xcIjtcclxuXHJcbi8vIE1vZGVsbGlcclxuaW1wb3J0IHsgQXBwRmlsZSB9IGZyb20gXCIuLi8uLi9tb2RlbHMvQXBwRmlsZVwiO1xyXG5cclxuLy8gQ29uZmlndXJhemlvbmlcclxuaW1wb3J0IHsgQUNPX0NVU1RPTUtFWSB9IGZyb20gJy4uLy4uL3Rva2Vucyc7XHJcbmltcG9ydCB7IEZvcm1GaWxlQ29tcG9uZW50TG9jIH0gZnJvbSBcIi4vZm9ybS1maWxlLmNvbXBvbmVudC5sb2NcIjtcclxuXHJcbi8qKlxyXG4gKiBDb21wb25lbnRlIGNoZSBwZXJtZXR0ZSBhbGwndXRlbnRlIGRpIGNhcmljYXJlL3NjYXJpY2FyZSB1biBmaWxlIGFsbCdpbnRlcm5vIGRpIHVuIGNhbXBvIElucHV0XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImZvcm0tZmlsZVwiLFxyXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBMb2NhbGl6YXRpb25TZXJ2aWNlLCB1c2VDbGFzczogRm9ybUZpbGVDb21wb25lbnRMb2MgfV0sXHJcbiAgICBzdHlsZVVybHM6IFtcImZvcm0tZmlsZS5jb21wb25lbnQuY3NzXCJdLFxyXG4gICAgdGVtcGxhdGVVcmw6IFwiZm9ybS1maWxlLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybUZpbGVDb21wb25lbnQgZXh0ZW5kcyBCYXNlRm9ybUNvbnRyb2wgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQZXJtZXR0ZSBkaSBjYXJpY2FyZSBmaWxlIG11bHRpcGxpXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIE11bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQZXJtZXR0ZSBkaSBzY2FyaWNhcmUgbCdldmVudHVhbGUgZmlsZSBzZWxlemlvbmF0b1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBBbGxvd0Rvd25sb2FkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJpZmVyaW1lbnRvIGFsbCdlbGVtZW50byBpbnB1dCBkaSB0aXBvIGZpbGVcclxuICAgICAqL1xyXG4gICAgQFZpZXdDaGlsZChcImZpbGVJbnB1dFwiLCB7IHN0YXRpYzogZmFsc2UgfSkgaW5wdXRFbDogRWxlbWVudFJlZjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvc3RydXR0b3JlIFxyXG4gICAgICogXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgdXRpRXh0czogVXRpbGl0eVNlcnZpY2UsIEBPcHRpb25hbCgpIEBTZWxmKCkgbmdDb250cm9sOiBOZ0NvbnRyb2wsIEBPcHRpb25hbCgpIEBJbmplY3QoTkdfVkFMSURBVE9SUykgX3ZhbGlkYXRvcnM6IEFycmF5PGFueT4sIEBPcHRpb25hbCgpIGFjOiBBY2Nlc3NDb250cm9sU2VydmljZSwgQE9wdGlvbmFsKCkgQXBwQ29udGV4dDogQ29tcG9uZW50Q29udGV4dCwgQE9wdGlvbmFsKCkgQEluamVjdChBQ09fQ1VTVE9NS0VZKSBBQ09fQ1VTVE9NS0VZOiBzdHJpbmcsIHB1YmxpYyBsYzogTG9jYWxpemF0aW9uU2VydmljZSkge1xyXG4gICAgICAgIHN1cGVyKGNkciwgbmdDb250cm9sLCBfdmFsaWRhdG9ycywgYWMsIEFwcENvbnRleHQsQUNPX0NVU1RPTUtFWSk7XHJcblxyXG4gICAgICAgIC8vUGVyIHF1ZXN0byBjb21wb25lbnRlIG5vbiBwb3NzbyBwZXJtZXR0ZXJtaSBjaGUgaWwgbW9kZWxsbyBzaWEgbnVsbG9cclxuICAgICAgICB0aGlzLk1vZGVsID0gbmV3IEFwcEZpbGUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgd3JpdGVWYWx1ZShvYmo6IEFwcEZpbGUpOiB2b2lkIHtcclxuICAgICAgICB2YXIgbW9kZWwgPSBvYmogPT0gbnVsbCA/IG5ldyBBcHBGaWxlKCkgOiBvYmo7XHJcbiAgICAgICAgc3VwZXIud3JpdGVWYWx1ZShtb2RlbCk7XHJcblxyXG4gICAgICAgIGlmKG9iaiA9PSBudWxsKVxyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZWQoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhlbHBlciBwZXIgZ2VzdGlyZSBsYSBtb2RpZmljYSBkZWwgZmlsZSBhdHR1YWxtZW50ZSBiaW5kYXRvXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gY2xlYXIgSW5kaWNhIHNlIGJpc29nbmEgc3Z1b3RhcmUgbCdpbnB1dCBvIG1lbm8gXHJcbiAgICAgKi9cclxuICAgIGZpbGVDaGFuZ2UoY2xlYXI6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgICAgIGxldCBmaWxlczogRmlsZVtdID0gW107XHJcbiAgICAgICAgbGV0IG1vZGVsID0gKDxBcHBGaWxlPnRoaXMuTW9kZWwpO1xyXG4gICAgICAgIGxldCBuZTogSFRNTElucHV0RWxlbWVudCA9IHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50O1xyXG5cclxuICAgICAgICBpZiAoY2xlYXIpIHtcclxuICAgICAgICAgICAgbW9kZWwuZmlsZW5hbWUgPSBcIlwiO1xyXG4gICAgICAgICAgICBuZS52YWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5lLmZpbGVzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgICAgICAgICAgZmlsZXMucHVzaChuZS5maWxlcy5pdGVtKGkpKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChuZS5maWxlcy5sZW5ndGggPT0gMSlcclxuICAgICAgICAgICAgICAgIG1vZGVsLmZpbGVuYW1lID0gbmUuZmlsZXNbMF0ubmFtZTtcclxuICAgICAgICAgICAgaWYgKG5lLmZpbGVzLmxlbmd0aCA+IDEpXHJcbiAgICAgICAgICAgICAgICBtb2RlbC5maWxlbmFtZSA9IG5lLmZpbGVzLmxlbmd0aCArIFwiIFwiICsgdGhpcy5sYy5sb2MoXCJGaWxlcyBTZWxlY3RlZFwiKTtcclxuICAgICAgICAgICAgbW9kZWwubmF0aXZlZmlsZXMgPSBmaWxlcztcclxuICAgICAgICAgICAgbW9kZWwuZmlsZWI2NCA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMuY2hhbmdlZChudWxsLCB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFBlcm1ldHRlIGRpIHNjYXJpY2FyZSBsJ2V2ZW50dWFsZSBmaWxlIHNlbGV6aW9uYXRvXHJcbiAgICAgKi9cclxuICAgIGRvd25sb2FkQXR0YWNobWVudCgpIHtcclxuICAgICAgICBsZXQgbW9kZWwgPSAoPEFwcEZpbGU+dGhpcy5Nb2RlbCk7XHJcbiAgICAgICAgdGhpcy51dGlFeHRzLnNhdmVGaWxlKG1vZGVsLmZpbGViNjQsIG1vZGVsLmZpbGVuYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgb25Ob3ROdWxsVmFsdWVTZXQoKTogdm9pZCB7IH1cclxufSIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIhRm9ybUxheW91dFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRyb2xUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG48L25nLWNvbnRhaW5lcj5cclxuXHJcbjxkaXYgKm5nSWY9XCJGb3JtTGF5b3V0XCIgY2xhc3M9XCJmb3JtLWdyb3VwIHJvdyB7e0Zvcm1Hcm91cENsYXNzfX1cIiBbY2xhc3MuYXBwLW1hcmdpbi1ib3R0b20tMF09XCJMYXN0XCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQte3tMYWJlbENvbFdpZHRofX0gbS10LTVcIj57e0xhYmVsfX17e1JlcXVpcmVkID8gJyonIDogJyd9fTo8L2xhYmVsPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC17e0lucHV0Q29sV2lkdGh9fVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250cm9sVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNsZWFyZml4XCI+PC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNjb250cm9sVGVtcGxhdGU+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgZmlsZS11cGxvYWRcIj5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiAoY2hhbmdlKT1cImZpbGVDaGFuZ2UoKVwiICNmaWxlSW5wdXQgY2xhc3M9XCJmaWxlLXVwbG9hZC1idG4gYXBwLXBvaW50ZXJcIiBbbXVsdGlwbGVdPVwiTXVsdGlwbGUgPyB0cnVlIDogbnVsbFwiIC8+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgW2NsYXNzLmZybS1wYWRkaW5nLWxlZnQtMjJdPVwiQWxsb3dEb3dubG9hZCAmJiBNb2RlbC5maWxlbmFtZSAmJiBNb2RlbC5maWxlYjY0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgY2hlY2tpbmctZmllbGRcIiBwbGFjZWhvbGRlcj1cInt7J1NlbGVjdCBhIGZpbGUnIHwgbG9jYWxpemUgOiBsY319Li4uXCIgWyhuZ01vZGVsKV09XCJNb2RlbC5maWxlbmFtZVwiIG5hbWU9XCJkc2ZpbGVcIiAjdmFsaWRhdGlvbkNvbnRyb2w9XCJuZ01vZGVsXCIgW3JlcXVpcmVkXT1cIlJlcXVpcmVkID8gdHJ1ZSA6IG51bGxcIiAvPlxyXG5cclxuICAgICAgICA8YSBjbGFzcz1cImZhIGZhLWRvd25sb2FkIGFwcC1wb2ludGVyIGFwcC1pbnB1dC1pY29uXCIgKm5nSWY9XCJBbGxvd0Rvd25sb2FkICYmIE1vZGVsLmZpbGVuYW1lICYmIE1vZGVsLmZpbGViNjRcIiAoY2xpY2spPVwiZG93bmxvYWRBdHRhY2htZW50KClcIj48L2E+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lcyBkZWxldGUtZmlsZVwiIChjbGljayk9XCJmaWxlQ2hhbmdlKHRydWUpXCIgKm5nSWY9XCJNb2RlbC5maWxlbmFtZVwiPjwvaT5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLWJ0blwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1maWxlLXVwbG9hZFwiIHR5cGU9XCJidXR0b25cIj48aSBjbGFzcz1cImZhIGZhLXVwbG9hZFwiPjwvaT48L2J1dHRvbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
@@ -0,0 +1,52 @@
1
+ // Angular
2
+ import { ChangeDetectionStrategy, Component, Input } from "@angular/core";
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Componente placeholder per la creazione dei form che rappresenta un blocchetto di informazioni,
6
+ * al posto del quale possono poi comparire dei componenti form senza incasinare la grafica
7
+ */
8
+ export class FormInfoComponent {
9
+ constructor() {
10
+ /**
11
+ * col-md-X per la label (Che in questoc aso è vuota)
12
+ */
13
+ this.LabelColWidth = 4;
14
+ /**
15
+ * col-md-X per l'input (che in questo caso contiene il messaggio d'errore proiettato nell'HTML)
16
+ */
17
+ this.InputColWidth = 8;
18
+ /**
19
+ * Indica se è l'ultimo componente di un form (serve per rimuovere il margine finale)
20
+ */
21
+ this.Last = false;
22
+ /**
23
+ * Classe extra per il form-group in cui viene wrappato l'input
24
+ */
25
+ this.FormGroupClass = "";
26
+ }
27
+ /**
28
+ * Permette di settare in una volta solo gli input LabelColWidth e InputColWidth, basta scriverlo con la sintassi "X Y"
29
+ */
30
+ set LabelInputRatio(input) {
31
+ var ratio = input.split(/\s/);
32
+ this.LabelColWidth = parseInt(ratio[0]);
33
+ this.InputColWidth = parseInt(ratio[1]);
34
+ }
35
+ }
36
+ FormInfoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FormInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
37
+ FormInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: FormInfoComponent, selector: "form-info", inputs: { LabelColWidth: "LabelColWidth", InputColWidth: "InputColWidth", Last: "Last", FormGroupClass: "FormGroupClass", LabelInputRatio: "LabelInputRatio" }, ngImport: i0, template: "<div class=\"form-group row {{FormGroupClass}}\" [class.app-margin-bottom-0]=\"Last\">\r\n <label class=\"app-hidden-view col-md-{{LabelColWidth}} m-t-5\"></label>\r\n <span class=\"help-block col-md-{{InputColWidth}}\">\r\n <ng-content></ng-content>\r\n </span>\r\n <div class=\"clearfix\"></div>\r\n</div>", changeDetection: i0.ChangeDetectionStrategy.OnPush });
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FormInfoComponent, decorators: [{
39
+ type: Component,
40
+ args: [{ selector: "form-info", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-group row {{FormGroupClass}}\" [class.app-margin-bottom-0]=\"Last\">\r\n <label class=\"app-hidden-view col-md-{{LabelColWidth}} m-t-5\"></label>\r\n <span class=\"help-block col-md-{{InputColWidth}}\">\r\n <ng-content></ng-content>\r\n </span>\r\n <div class=\"clearfix\"></div>\r\n</div>" }]
41
+ }], propDecorators: { LabelColWidth: [{
42
+ type: Input
43
+ }], InputColWidth: [{
44
+ type: Input
45
+ }], Last: [{
46
+ type: Input
47
+ }], FormGroupClass: [{
48
+ type: Input
49
+ }], LabelInputRatio: [{
50
+ type: Input
51
+ }] } });
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1pbmZvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm1zLWFuZC12YWxpZGF0aW9ucy9zcmMvbGliL2Zvcm1zL2Zvcm0taW5mby9mb3JtLWluZm8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvZm9ybXMvZm9ybS1pbmZvL2Zvcm0taW5mby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTFFOzs7R0FHRztBQU1ILE1BQU0sT0FBTyxpQkFBaUI7SUFMOUI7UUFNSzs7VUFFRTtRQUNRLGtCQUFhLEdBQVcsQ0FBQyxDQUFDO1FBRW5DOztXQUVHO1FBQ00sa0JBQWEsR0FBVyxDQUFDLENBQUM7UUFFbkM7O1dBRUc7UUFDTSxTQUFJLEdBQVksS0FBSyxDQUFDO1FBRS9COztXQUVHO1FBQ00sbUJBQWMsR0FBVyxFQUFFLENBQUM7S0FVMUM7SUFSSzs7T0FFRztJQUNILElBQWEsZUFBZSxDQUFDLEtBQWE7UUFDdEMsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDOzs4R0E1Qk0saUJBQWlCO2tHQUFqQixpQkFBaUIsaU5DWjlCLHdVQU1NOzJGRE1PLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDSSxXQUFXLG1CQUVKLHVCQUF1QixDQUFDLE1BQU07OEJBTXBDLGFBQWE7c0JBQXJCLEtBQUs7Z0JBS0csYUFBYTtzQkFBckIsS0FBSztnQkFLRyxJQUFJO3NCQUFaLEtBQUs7Z0JBS0csY0FBYztzQkFBdEIsS0FBSztnQkFLTyxlQUFlO3NCQUEzQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vKipcclxuICogQ29tcG9uZW50ZSBwbGFjZWhvbGRlciBwZXIgbGEgY3JlYXppb25lIGRlaSBmb3JtIGNoZSByYXBwcmVzZW50YSB1biBibG9jY2hldHRvIGRpIGluZm9ybWF6aW9uaSwgXHJcbiAqIGFsIHBvc3RvIGRlbCBxdWFsZSBwb3Nzb25vIHBvaSBjb21wYXJpcmUgZGVpIGNvbXBvbmVudGkgZm9ybSBzZW56YSBpbmNhc2luYXJlIGxhIGdyYWZpY2FcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwiZm9ybS1pbmZvXCIsXHJcbiAgICB0ZW1wbGF0ZVVybDogXCJmb3JtLWluZm8uY29tcG9uZW50Lmh0bWxcIixcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtSW5mb0NvbXBvbmVudCB7XHJcbiAgICAgLyoqXHJcbiAgICAgKiBjb2wtbWQtWCBwZXIgbGEgbGFiZWwgKENoZSBpbiBxdWVzdG9jIGFzbyDDqCB2dW90YSlcclxuICAgICAqL1xyXG4gICAgICBASW5wdXQoKSBMYWJlbENvbFdpZHRoOiBudW1iZXIgPSA0O1xyXG5cclxuICAgICAgLyoqXHJcbiAgICAgICAqIGNvbC1tZC1YIHBlciBsJ2lucHV0IChjaGUgaW4gcXVlc3RvIGNhc28gY29udGllbmUgaWwgbWVzc2FnZ2lvIGQnZXJyb3JlIHByb2lldHRhdG8gbmVsbCdIVE1MKVxyXG4gICAgICAgKi9cclxuICAgICAgQElucHV0KCkgSW5wdXRDb2xXaWR0aDogbnVtYmVyID0gODtcclxuICBcclxuICAgICAgLyoqXHJcbiAgICAgICAqIEluZGljYSBzZSDDqCBsJ3VsdGltbyBjb21wb25lbnRlIGRpIHVuIGZvcm0gKHNlcnZlIHBlciByaW11b3ZlcmUgaWwgbWFyZ2luZSBmaW5hbGUpXHJcbiAgICAgICAqL1xyXG4gICAgICBASW5wdXQoKSBMYXN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgXHJcbiAgICAgIC8qKlxyXG4gICAgICAgKiBDbGFzc2UgZXh0cmEgcGVyIGlsIGZvcm0tZ3JvdXAgaW4gY3VpIHZpZW5lIHdyYXBwYXRvIGwnaW5wdXRcclxuICAgICAgICovXHJcbiAgICAgIEBJbnB1dCgpIEZvcm1Hcm91cENsYXNzOiBzdHJpbmcgPSBcIlwiO1xyXG4gIFxyXG4gICAgICAvKipcclxuICAgICAgICogUGVybWV0dGUgZGkgc2V0dGFyZSBpbiB1bmEgdm9sdGEgc29sbyBnbGkgaW5wdXQgTGFiZWxDb2xXaWR0aCBlIElucHV0Q29sV2lkdGgsIGJhc3RhIHNjcml2ZXJsbyBjb24gbGEgc2ludGFzc2kgXCJYIFlcIlxyXG4gICAgICAgKi9cclxuICAgICAgQElucHV0KCkgc2V0IExhYmVsSW5wdXRSYXRpbyhpbnB1dDogc3RyaW5nKSB7XHJcbiAgICAgICAgICB2YXIgcmF0aW8gPSBpbnB1dC5zcGxpdCgvXFxzLyk7XHJcbiAgICAgICAgICB0aGlzLkxhYmVsQ29sV2lkdGggPSBwYXJzZUludChyYXRpb1swXSk7XHJcbiAgICAgICAgICB0aGlzLklucHV0Q29sV2lkdGggPSBwYXJzZUludChyYXRpb1sxXSk7XHJcbiAgICAgIH1cclxufSIsIjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHJvdyB7e0Zvcm1Hcm91cENsYXNzfX1cIiBbY2xhc3MuYXBwLW1hcmdpbi1ib3R0b20tMF09XCJMYXN0XCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJhcHAtaGlkZGVuLXZpZXcgY29sLW1kLXt7TGFiZWxDb2xXaWR0aH19IG0tdC01XCI+PC9sYWJlbD5cclxuICAgIDxzcGFuIGNsYXNzPVwiaGVscC1ibG9jayBjb2wtbWQte3tJbnB1dENvbFdpZHRofX1cIj5cclxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICA8L3NwYW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2xlYXJmaXhcIj48L2Rpdj5cclxuPC9kaXY+Il19
@@ -0,0 +1,93 @@
1
+ // Angular
2
+ import { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, Inject, Input, Optional, Output, Self } from "@angular/core";
3
+ import { NG_VALIDATORS } from "@angular/forms";
4
+ // Applicazione
5
+ import { BaseFormControl } from "../base-form-control";
6
+ import { ACO_CUSTOMKEY } from '../../tokens';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/forms";
9
+ import * as i2 from "@esfaenza/access-control";
10
+ import * as i3 from "../../validations/validation-input/validation-input.component";
11
+ import * as i4 from "@angular/common";
12
+ import * as i5 from "@angular/material/form-field";
13
+ /**
14
+ * Semplice componente di Input testuale, con eventuale prefisso/suffisso
15
+ */
16
+ export class FormInputComponent extends BaseFormControl {
17
+ /**
18
+ * Costruttore
19
+ *
20
+ * @ignore
21
+ */
22
+ constructor(cdr, ngControl, _validators, ac, AppContext, ACO_CUSTOMKEY) {
23
+ super(cdr, ngControl, _validators, ac, AppContext, ACO_CUSTOMKEY);
24
+ /**
25
+ * Indica se l'input relativo è di tipo Password
26
+ */
27
+ this.Password = false;
28
+ /**
29
+ * Delegato per l'esecuzione di un'operazione al click del suffisso
30
+ */
31
+ this.onSuffixAction = new EventEmitter();
32
+ /**
33
+ * Delegato per l'esecuzione di un'operazione al click del prefisso
34
+ */
35
+ this.onPrefixAction = new EventEmitter();
36
+ /**
37
+ * Indica la presenza o meno di un suffisso, si basa sulla "truthiness" della proiezione **suffix**
38
+ */
39
+ this.HasSuffix = false;
40
+ /**
41
+ * Indica la presenza o meno di un prefisso, si basa sulla "truthiness" della proiezione **prefix**
42
+ */
43
+ this.HasPrefix = false;
44
+ }
45
+ /**
46
+ * @ignore
47
+ */
48
+ ngAfterContentInit() {
49
+ this.HasSuffix = !!this.suffix;
50
+ this.HasPrefix = !!this.prefix;
51
+ }
52
+ /**
53
+ * @ignore
54
+ */
55
+ onNotNullValueSet() { }
56
+ }
57
+ FormInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FormInputComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.NgControl, optional: true, self: true }, { token: NG_VALIDATORS, optional: true }, { token: i2.AccessControlService, optional: true }, { token: i2.ComponentContext, optional: true }, { token: ACO_CUSTOMKEY, optional: true }], target: i0.ɵɵFactoryTarget.Component });
58
+ FormInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: FormInputComponent, selector: "form-input", inputs: { Password: "Password" }, outputs: { onSuffixAction: "onSuffixAction", onPrefixAction: "onPrefixAction" }, queries: [{ propertyName: "suffix", first: true, predicate: ["suffix"], descendants: true }, { propertyName: "prefix", first: true, predicate: ["prefix"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"!FormLayout\">\r\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\r\n</ng-container>\r\n\r\n<div *ngIf=\"FormLayout\" class=\"form-group row {{FormGroupClass}}\" [class.app-margin-bottom-0]=\"Last\">\r\n <label class=\"col-md-{{LabelColWidth}} m-t-5\">{{Label}}{{Required ? '*' : ''}}:</label>\r\n <div class=\"col-md-{{InputColWidth}}\">\r\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n</div>\r\n\r\n<ng-template #controlTemplate>\r\n <val-input [noValidate]=\"!Validation\"\r\n [submitted]=\"Form?.submitted\"\r\n [readonly]=\"Readonly\"\r\n [forceInvalid]=\"ForcedError\"\r\n type=\"text\"\r\n [(ngModel)]=\"Model\"\r\n name=\"{{GeneratedName}}\"\r\n autocomplete=\"off\"\r\n #validationControl=\"ngModel\"\r\n (inputChange)=\"changed();\"\r\n [placeholder]=\"Placeholder\"\r\n [validationFailed]=\"FailedValidationMessage\"\r\n [Password]=\"Password\">\r\n <ng-container *ngIf=\"HasSuffix\">\r\n <ng-template #suffix_internal>\r\n <button type=\"button\" class=\"mat-button mat-icon-button mat-button-base mat-icon-button-override mat-icon-button-override-suffix\"\r\n matSuffix (click)=\"onSuffixAction.emit(); $event.stopPropagation(); $event.preventDefault();\">\r\n <ng-container *ngTemplateOutlet=\"suffix\"></ng-container>\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngIf=\"HasPrefix\">\r\n <ng-template #prefix_internal>\r\n <button type=\"button\" class=\"mat-button mat-icon-button mat-button-base mat-icon-button-override mat-icon-button-override-prefix\"\r\n matPrefix (click)=\"onPrefixAction.emit(); $event.stopPropagation(); $event.preventDefault();\">\r\n <ng-container *ngTemplateOutlet=\"prefix\"></ng-container>\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n </val-input>\r\n</ng-template>", components: [{ type: i3.ValidationInputComponent, selector: "val-input", inputs: ["Password", "showWarning", "warningTitle", "warningClass", "value"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i5.MatSuffix, selector: "[matSuffix]" }, { type: i5.MatPrefix, selector: "[matPrefix]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FormInputComponent, decorators: [{
60
+ type: Component,
61
+ args: [{ selector: "form-input", changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"!FormLayout\">\r\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\r\n</ng-container>\r\n\r\n<div *ngIf=\"FormLayout\" class=\"form-group row {{FormGroupClass}}\" [class.app-margin-bottom-0]=\"Last\">\r\n <label class=\"col-md-{{LabelColWidth}} m-t-5\">{{Label}}{{Required ? '*' : ''}}:</label>\r\n <div class=\"col-md-{{InputColWidth}}\">\r\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n</div>\r\n\r\n<ng-template #controlTemplate>\r\n <val-input [noValidate]=\"!Validation\"\r\n [submitted]=\"Form?.submitted\"\r\n [readonly]=\"Readonly\"\r\n [forceInvalid]=\"ForcedError\"\r\n type=\"text\"\r\n [(ngModel)]=\"Model\"\r\n name=\"{{GeneratedName}}\"\r\n autocomplete=\"off\"\r\n #validationControl=\"ngModel\"\r\n (inputChange)=\"changed();\"\r\n [placeholder]=\"Placeholder\"\r\n [validationFailed]=\"FailedValidationMessage\"\r\n [Password]=\"Password\">\r\n <ng-container *ngIf=\"HasSuffix\">\r\n <ng-template #suffix_internal>\r\n <button type=\"button\" class=\"mat-button mat-icon-button mat-button-base mat-icon-button-override mat-icon-button-override-suffix\"\r\n matSuffix (click)=\"onSuffixAction.emit(); $event.stopPropagation(); $event.preventDefault();\">\r\n <ng-container *ngTemplateOutlet=\"suffix\"></ng-container>\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngIf=\"HasPrefix\">\r\n <ng-template #prefix_internal>\r\n <button type=\"button\" class=\"mat-button mat-icon-button mat-button-base mat-icon-button-override mat-icon-button-override-prefix\"\r\n matPrefix (click)=\"onPrefixAction.emit(); $event.stopPropagation(); $event.preventDefault();\">\r\n <ng-container *ngTemplateOutlet=\"prefix\"></ng-container>\r\n </button>\r\n </ng-template>\r\n </ng-container>\r\n </val-input>\r\n</ng-template>" }]
62
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.NgControl, decorators: [{
63
+ type: Optional
64
+ }, {
65
+ type: Self
66
+ }] }, { type: Array, decorators: [{
67
+ type: Optional
68
+ }, {
69
+ type: Inject,
70
+ args: [NG_VALIDATORS]
71
+ }] }, { type: i2.AccessControlService, decorators: [{
72
+ type: Optional
73
+ }] }, { type: i2.ComponentContext, decorators: [{
74
+ type: Optional
75
+ }] }, { type: undefined, decorators: [{
76
+ type: Optional
77
+ }, {
78
+ type: Inject,
79
+ args: [ACO_CUSTOMKEY]
80
+ }] }]; }, propDecorators: { Password: [{
81
+ type: Input
82
+ }], onSuffixAction: [{
83
+ type: Output
84
+ }], onPrefixAction: [{
85
+ type: Output
86
+ }], suffix: [{
87
+ type: ContentChild,
88
+ args: ["suffix", { static: false }]
89
+ }], prefix: [{
90
+ type: ContentChild,
91
+ args: ["prefix", { static: false }]
92
+ }] } });
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3Jtcy1hbmQtdmFsaWRhdGlvbnMvc3JjL2xpYi9mb3Jtcy9mb3JtLWlucHV0L2Zvcm0taW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvZm9ybXMvZm9ybS1pbnB1dC9mb3JtLWlucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0SSxPQUFPLEVBQXdCLGFBQWEsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBRWhGLGVBQWU7QUFDZixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFJdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7OztBQUc3Qzs7R0FFRztBQU1ILE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxlQUFlO0lBcUNuRDs7OztPQUlHO0lBQ0gsWUFBWSxHQUFzQixFQUFzQixTQUFvQixFQUFxQyxXQUF1QixFQUFjLEVBQXdCLEVBQWMsVUFBNEIsRUFBcUMsYUFBcUI7UUFDOVEsS0FBSyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUMsYUFBYSxDQUFDLENBQUM7UUF6Q3JFOztXQUVHO1FBQ2EsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUUxQzs7V0FFRztRQUNPLG1CQUFjLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFeEU7O1dBRUc7UUFDTyxtQkFBYyxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBWXhFOztXQUVHO1FBQ0ksY0FBUyxHQUFZLEtBQUssQ0FBQztRQUVsQzs7V0FFRztRQUNJLGNBQVMsR0FBWSxLQUFLLENBQUM7SUFTbEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7T0FFRztJQUNILGlCQUFpQixLQUFXLENBQUM7OytHQXpEcEIsa0JBQWtCLHdHQTBDdUUsYUFBYSxpSUFBK0gsYUFBYTttR0ExQ2xQLGtCQUFrQiw2V0NwQi9CLHV1RUEyQ2M7MkZEdkJELGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDSSxZQUFZLG1CQUVMLHVCQUF1QixDQUFDLE1BQU07OzBCQTRDVixRQUFROzswQkFBSSxJQUFJOzhCQUF5RSxLQUFLOzBCQUFwRCxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGFBQWE7OzBCQUE0QixRQUFROzswQkFBOEIsUUFBUTs7MEJBQWtDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsYUFBYTs0Q0FyQzNPLFFBQVE7c0JBQXZCLEtBQUs7Z0JBS0ksY0FBYztzQkFBdkIsTUFBTTtnQkFLRyxjQUFjO3NCQUF2QixNQUFNO2dCQUtvQyxNQUFNO3NCQUFoRCxZQUFZO3VCQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBS0UsTUFBTTtzQkFBaEQsWUFBWTt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT3B0aW9uYWwsIE91dHB1dCwgU2VsZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxJREFUT1JTLCBOZ0NvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbi8vIEFwcGxpY2F6aW9uZVxyXG5pbXBvcnQgeyBCYXNlRm9ybUNvbnRyb2wgfSBmcm9tIFwiLi4vYmFzZS1mb3JtLWNvbnRyb2xcIjtcclxuXHJcbi8vIENvbmZpZ3VyYXppb25pXHJcbmltcG9ydCB7IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlLCBDb21wb25lbnRDb250ZXh0IH0gZnJvbSAnQGVzZmFlbnphL2FjY2Vzcy1jb250cm9sJztcclxuaW1wb3J0IHsgQUNPX0NVU1RPTUtFWSB9IGZyb20gJy4uLy4uL3Rva2Vucyc7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8qKlxyXG4gKiBTZW1wbGljZSBjb21wb25lbnRlIGRpIElucHV0IHRlc3R1YWxlLCBjb24gZXZlbnR1YWxlIHByZWZpc3NvL3N1ZmZpc3NvXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImZvcm0taW5wdXRcIixcclxuICAgIHRlbXBsYXRlVXJsOiBcImZvcm0taW5wdXQuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtSW5wdXRDb21wb25lbnQgZXh0ZW5kcyBCYXNlRm9ybUNvbnRyb2wgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2Egc2UgbCdpbnB1dCByZWxhdGl2byDDqCBkaSB0aXBvIFBhc3N3b3JkXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBQYXNzd29yZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRGVsZWdhdG8gcGVyIGwnZXNlY3V6aW9uZSBkaSB1bidvcGVyYXppb25lIGFsIGNsaWNrIGRlbCBzdWZmaXNzb1xyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgb25TdWZmaXhBY3Rpb246IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIERlbGVnYXRvIHBlciBsJ2VzZWN1emlvbmUgZGkgdW4nb3BlcmF6aW9uZSBhbCBjbGljayBkZWwgcHJlZmlzc29cclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIG9uUHJlZml4QWN0aW9uOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFbGVtZW50byBjaGUgY29udGllbmUgbGEgcHJvaWV6aW9uZSBkZWxsJ0hUTUwgZGVsIHN1ZmZpc3NvXHJcbiAgICAgKi9cclxuICAgIEBDb250ZW50Q2hpbGQoXCJzdWZmaXhcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIHN1ZmZpeDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEVsZW1lbnRvIGNoZSBjb250aWVuZSBsYSBwcm9pZXppb25lIGRlbGwnSFRNTCBkZWwgcHJlZmlzc29cclxuICAgICAqL1xyXG4gICAgQENvbnRlbnRDaGlsZChcInByZWZpeFwiLCB7IHN0YXRpYzogZmFsc2UgfSkgcHJlZml4O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhIGxhIHByZXNlbnphIG8gbWVubyBkaSB1biBzdWZmaXNzbywgc2kgYmFzYSBzdWxsYSBcInRydXRoaW5lc3NcIiBkZWxsYSBwcm9pZXppb25lICoqc3VmZml4KipcclxuICAgICAqL1xyXG4gICAgcHVibGljIEhhc1N1ZmZpeDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhIGxhIHByZXNlbnphIG8gbWVubyBkaSB1biBwcmVmaXNzbywgc2kgYmFzYSBzdWxsYSBcInRydXRoaW5lc3NcIiBkZWxsYSBwcm9pZXppb25lICoqcHJlZml4KipcclxuICAgICAqL1xyXG4gICAgcHVibGljIEhhc1ByZWZpeDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29zdHJ1dHRvcmUgXHJcbiAgICAgKiBcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgQE9wdGlvbmFsKCkgQFNlbGYoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbCwgQE9wdGlvbmFsKCkgQEluamVjdChOR19WQUxJREFUT1JTKSBfdmFsaWRhdG9yczogQXJyYXk8YW55PiwgQE9wdGlvbmFsKCkgYWM6IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlLCBAT3B0aW9uYWwoKSBBcHBDb250ZXh0OiBDb21wb25lbnRDb250ZXh0LCBAT3B0aW9uYWwoKSBASW5qZWN0KEFDT19DVVNUT01LRVkpIEFDT19DVVNUT01LRVk6IHN0cmluZykge1xyXG4gICAgICAgIHN1cGVyKGNkciwgbmdDb250cm9sLCBfdmFsaWRhdG9ycywgYWMsIEFwcENvbnRleHQsQUNPX0NVU1RPTUtFWSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcclxuICAgICAgICB0aGlzLkhhc1N1ZmZpeCA9ICEhdGhpcy5zdWZmaXg7XHJcbiAgICAgICAgdGhpcy5IYXNQcmVmaXggPSAhIXRoaXMucHJlZml4O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBvbk5vdE51bGxWYWx1ZVNldCgpOiB2b2lkIHsgfVxyXG59IiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFGb3JtTGF5b3V0XCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udHJvbFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPGRpdiAqbmdJZj1cIkZvcm1MYXlvdXRcIiBjbGFzcz1cImZvcm0tZ3JvdXAgcm93IHt7Rm9ybUdyb3VwQ2xhc3N9fVwiIFtjbGFzcy5hcHAtbWFyZ2luLWJvdHRvbS0wXT1cIkxhc3RcIj5cclxuICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC17e0xhYmVsQ29sV2lkdGh9fSBtLXQtNVwiPnt7TGFiZWx9fXt7UmVxdWlyZWQgPyAnKicgOiAnJ319OjwvbGFiZWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLXt7SW5wdXRDb2xXaWR0aH19XCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRyb2xUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2xlYXJmaXhcIj48L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2NvbnRyb2xUZW1wbGF0ZT5cclxuICAgIDx2YWwtaW5wdXQgW25vVmFsaWRhdGVdPVwiIVZhbGlkYXRpb25cIlxyXG4gICAgICAgICAgICAgICBbc3VibWl0dGVkXT1cIkZvcm0/LnN1Ym1pdHRlZFwiXHJcbiAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgIFtmb3JjZUludmFsaWRdPVwiRm9yY2VkRXJyb3JcIlxyXG4gICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiTW9kZWxcIlxyXG4gICAgICAgICAgICAgICBuYW1lPVwie3tHZW5lcmF0ZWROYW1lfX1cIlxyXG4gICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAjdmFsaWRhdGlvbkNvbnRyb2w9XCJuZ01vZGVsXCJcclxuICAgICAgICAgICAgICAgKGlucHV0Q2hhbmdlKT1cImNoYW5nZWQoKTtcIlxyXG4gICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiUGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICBbdmFsaWRhdGlvbkZhaWxlZF09XCJGYWlsZWRWYWxpZGF0aW9uTWVzc2FnZVwiXHJcbiAgICAgICAgICAgICAgIFtQYXNzd29yZF09XCJQYXNzd29yZFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJIYXNTdWZmaXhcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzdWZmaXhfaW50ZXJuYWw+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm1hdC1idXR0b24gbWF0LWljb24tYnV0dG9uIG1hdC1idXR0b24tYmFzZSBtYXQtaWNvbi1idXR0b24tb3ZlcnJpZGUgbWF0LWljb24tYnV0dG9uLW92ZXJyaWRlLXN1ZmZpeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdFN1ZmZpeCAoY2xpY2spPVwib25TdWZmaXhBY3Rpb24uZW1pdCgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdWZmaXhcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJIYXNQcmVmaXhcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNwcmVmaXhfaW50ZXJuYWw+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm1hdC1idXR0b24gbWF0LWljb24tYnV0dG9uIG1hdC1idXR0b24tYmFzZSBtYXQtaWNvbi1idXR0b24tb3ZlcnJpZGUgbWF0LWljb24tYnV0dG9uLW92ZXJyaWRlLXByZWZpeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdFByZWZpeCAoY2xpY2spPVwib25QcmVmaXhBY3Rpb24uZW1pdCgpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7ICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcmVmaXhcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC92YWwtaW5wdXQ+XHJcbjwvbmctdGVtcGxhdGU+Il19
@@ -0,0 +1,29 @@
1
+ import { Injectable, Inject, Optional } from "@angular/core";
2
+ import { LocalizationService } from "@esfaenza/localizations";
3
+ import { FAV_LOCALE } from '../../tokens';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Classe di localizzazione per il componente **FormMultiSelectComponent**
7
+ */
8
+ export class FormMultiSelectComponentLoc extends LocalizationService {
9
+ /**
10
+ * @ignore
11
+ */
12
+ constructor(LOC_LOCALE) {
13
+ super(LOC_LOCALE ?? 'it-IT');
14
+ super.set("en->it", "Select everything", ["Seleziona tutto"]);
15
+ super.set("en->it", "Deselect everything", ["Deseleziona tutto"]);
16
+ super.set("en->it", "Select one or more values...", ["Seleziona uno o più valori..."]);
17
+ }
18
+ }
19
+ FormMultiSelectComponentLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FormMultiSelectComponentLoc, deps: [{ token: FAV_LOCALE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
20
+ FormMultiSelectComponentLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FormMultiSelectComponentLoc });
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FormMultiSelectComponentLoc, decorators: [{
22
+ type: Injectable
23
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
24
+ type: Optional
25
+ }, {
26
+ type: Inject,
27
+ args: [FAV_LOCALE]
28
+ }] }]; } });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1tdWx0aXNlbGVjdC5jb21wb25lbnQubG9jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvZm9ybXMvZm9ybS1tdWx0aXNlbGVjdC9mb3JtLW11bHRpc2VsZWN0LmNvbXBvbmVudC5sb2MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRTFDOztHQUVHO0FBRUgsTUFBTSxPQUFPLDJCQUE0QixTQUFRLG1CQUFtQjtJQUVoRTs7T0FFRztJQUNILFlBQTRDLFVBQWtCO1FBQzFELEtBQUssQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLENBQUM7UUFFN0IsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7UUFDOUQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7UUFDbEUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsOEJBQThCLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLENBQUM7SUFDM0YsQ0FBQzs7d0hBWFEsMkJBQTJCLGtCQUtKLFVBQVU7NEhBTGpDLDJCQUEyQjsyRkFBM0IsMkJBQTJCO2tCQUR2QyxVQUFVOzswQkFNTSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvbG9jYWxpemF0aW9uc1wiO1xyXG5pbXBvcnQgeyBGQVZfTE9DQUxFIH0gZnJvbSAnLi4vLi4vdG9rZW5zJztcclxuXHJcbi8qKlxyXG4gKiBDbGFzc2UgZGkgbG9jYWxpenphemlvbmUgcGVyIGlsIGNvbXBvbmVudGUgKipGb3JtTXVsdGlTZWxlY3RDb21wb25lbnQqKlxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRm9ybU11bHRpU2VsZWN0Q29tcG9uZW50TG9jIGV4dGVuZHMgTG9jYWxpemF0aW9uU2VydmljZSB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoRkFWX0xPQ0FMRSkgTE9DX0xPQ0FMRTogc3RyaW5nKSB7XHJcbiAgICAgICAgc3VwZXIoTE9DX0xPQ0FMRSA/PyAnaXQtSVQnKTtcclxuXHJcbiAgICAgICAgc3VwZXIuc2V0KFwiZW4tPml0XCIsIFwiU2VsZWN0IGV2ZXJ5dGhpbmdcIiwgW1wiU2VsZXppb25hIHR1dHRvXCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJlbi0+aXRcIiwgXCJEZXNlbGVjdCBldmVyeXRoaW5nXCIsIFtcIkRlc2VsZXppb25hIHR1dHRvXCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJlbi0+aXRcIiwgXCJTZWxlY3Qgb25lIG9yIG1vcmUgdmFsdWVzLi4uXCIsIFtcIlNlbGV6aW9uYSB1bm8gbyBwacO5IHZhbG9yaS4uLlwiXSk7XHJcbiAgICB9XHJcbn0iXX0=
@@ -0,0 +1,159 @@
1
+ // Angular
2
+ import { ChangeDetectionStrategy, Component, Inject, Input, Optional, Self, ViewEncapsulation } from "@angular/core";
3
+ import { NG_VALIDATORS } from "@angular/forms";
4
+ // Configurazioni
5
+ import { LocalizationService } from "@esfaenza/localizations";
6
+ import { ACO_CUSTOMKEY } from '../../tokens';
7
+ // Applicazione
8
+ import { BaseFormControl } from "../base-form-control";
9
+ import { FormMultiSelectComponentLoc } from "./form-multiselect.component.loc";
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@esfaenza/localizations";
12
+ import * as i2 from "@angular/forms";
13
+ import * as i3 from "@esfaenza/access-control";
14
+ import * as i4 from "angular2-multiselect-dropdown";
15
+ import * as i5 from "@angular/common";
16
+ /**
17
+ * Componente che permette di effettuare una selezione multipla fra gli oggetti passati nell'Input **Source**
18
+ *
19
+ * N.B: Al contrario degli altri componenti form-* questo viene tenuto con **changeDetection: ChangeDetectionStrategy.Default** in quanto il componente
20
+ * utilizzato internamente (angular2-multiselect) non è stato assolutamente pensato per essere usato con **ChangeDetectionStrategy.OnPush**
21
+ */
22
+ export class FormMultiSelectComponent extends BaseFormControl {
23
+ /**
24
+ * Costruttore
25
+ *
26
+ * @ignore
27
+ */
28
+ constructor(cdr, lc, ngControl, _validators, ac, AppContext, ACO_CUSTOMKEY) {
29
+ super(cdr, ngControl, _validators, ac, AppContext, ACO_CUSTOMKEY);
30
+ this.lc = lc;
31
+ /**
32
+ * Modello temporaneo **NON** compatibile in maniera diretta con il componente **angular2-multiselect** usato internamente
33
+ *
34
+ * Serve da appoggio per effettuare un re-bind qualora la sorgente cambiasse e qualora **RebindModelAfterSource** fosse true
35
+ */
36
+ this.TmpModel = [];
37
+ /**
38
+ * Indica se la prossima modifica alla Source deve anche effettuare un re-bind del modello. Serve se la **BoundSource** passa da non avere oggetti ad averne
39
+ */
40
+ this.RebindModelAfterSource = false;
41
+ /**
42
+ * Permette di specificare il testo della Label flottante material-style
43
+ */
44
+ this.SelectLabel = "";
45
+ /**
46
+ * Permette al componente di gestire come modello non una lista di chiavi, ma una lista di KeyValue
47
+ */
48
+ this.UseKeyValues = false;
49
+ /**
50
+ * Impostazioni del componente interno **angular2-multiselect**
51
+ */
52
+ this.Settings = null;
53
+ // Default dei settings per evitare che siano mai nulli, altrimenti il cazzo di CuppaLab salta in araia che è veramente una bellezza
54
+ this.evaluateSettings(false);
55
+ }
56
+ /**
57
+ * @ignore
58
+ */
59
+ async ngOnChanges(changes) {
60
+ const newSource = changes["Source"];
61
+ if (newSource) {
62
+ this.tryBindSourceDisplay();
63
+ if (this.RebindModelAfterSource) {
64
+ this.writeValue(this.TmpModel);
65
+ this.RebindModelAfterSource = false;
66
+ }
67
+ }
68
+ const readonly = changes["Readonly"];
69
+ this.evaluateSettings(readonly ? readonly.currentValue ?? false : this.Readonly ?? false);
70
+ }
71
+ /**
72
+ * Scrive i nuovi settings per il componente
73
+ *
74
+ * @param {boolean} disabled Indica se il componente dev'essere disabilitato o meno
75
+ */
76
+ evaluateSettings(disabled) {
77
+ this.Settings = {
78
+ selectAllText: this.lc.loc("Select everything"),
79
+ unSelectAllText: this.lc.loc("Deselect everything"),
80
+ text: this.SelectLabel || this.lc.loc("Select one or more values..."),
81
+ enableCheckAll: true,
82
+ disabled: disabled,
83
+ labelKey: "description",
84
+ tagToBody: false
85
+ };
86
+ }
87
+ /**
88
+ * @ignore
89
+ */
90
+ onNotNullValueSet() { }
91
+ /**
92
+ * Indica se il comopnente in questione è in grado di gestire ngControl nulli.
93
+ * In questo componente è normale che sia così quindi restituisce semplicemente **true**
94
+ *
95
+ * @returns {boolean} **true** se gestisco ngControl nulli, **false** altrimenti
96
+ */
97
+ handleNullNgControl() {
98
+ return true;
99
+ }
100
+ /**
101
+ * @ignore Override per gestire input in ingresso
102
+ */
103
+ writeValue(obj) {
104
+ this.TmpModel = obj;
105
+ let toPass = [];
106
+ //Qui arrivano solo gli id, o {id: x, description: y} in caso sono in UseKeyValues,
107
+ //devo tirare fuori gli oggetti relativi e piazzarli come lista per il Model
108
+ if (obj && obj.length > 0) {
109
+ obj.forEach(t => {
110
+ let item = this.BoundSource.find(o => o.id == (this.UseKeyValues ? t.id : t));
111
+ if (item)
112
+ toPass.push(JSON.parse(JSON.stringify(item)));
113
+ else if (!this.BoundSource || this.BoundSource.length == 0)
114
+ this.RebindModelAfterSource = true;
115
+ });
116
+ }
117
+ super.writeValue(toPass);
118
+ }
119
+ /**
120
+ * @ignore Override per gestire input in uscita
121
+ */
122
+ changed() {
123
+ let toEmit = null;
124
+ if (!this.UseKeyValues)
125
+ toEmit = this.Model.map(m => m.id);
126
+ else
127
+ toEmit = this.Model.map(m => ({ id: m.id, description: m.itemName }));
128
+ super.changed(toEmit);
129
+ }
130
+ }
131
+ FormMultiSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FormMultiSelectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.LocalizationService }, { token: i2.NgControl, optional: true, self: true }, { token: NG_VALIDATORS, optional: true }, { token: i3.AccessControlService, optional: true }, { token: i3.ComponentContext, optional: true }, { token: ACO_CUSTOMKEY, optional: true }], target: i0.ɵɵFactoryTarget.Component });
132
+ FormMultiSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: FormMultiSelectComponent, selector: "form-multiselect", inputs: { SelectLabel: "SelectLabel", UseKeyValues: "UseKeyValues" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!FormLayout\">\r\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\r\n</ng-container>\r\n\r\n<div *ngIf=\"FormLayout && BoundSource\" class=\"form-group row {{FormGroupClass}}\" [class.app-margin-bottom-0]=\"Last\">\r\n <label class=\"col-md-{{LabelColWidth}} m-t-5\">{{Label}}{{Required ? '*' : ''}}:</label>\r\n <div class=\"col-md-{{InputColWidth}}\">\r\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n</div>\r\n\r\n<ng-template #controlTemplate>\r\n <div [class.ms-placeholder]=\"!Model || Model.length == 0\">\r\n <angular2-multiselect #validationControl=\"ngModel\" type=\"text\"\r\n [(ngModel)]=\"Model\" name=\"{{GeneratedName}}\"\r\n [settings]=\"Settings\" [data]=\"BoundSource\"\r\n (onSelect)=\"changed();\" \r\n (onDeSelect)=\"changed();\" \r\n (onSelectAll)=\"changed();\"\r\n (onDeSelectAll)=\"changed();\" \r\n (onDeSelectAll)=\"Model = []; changed();\">\r\n </angular2-multiselect>\r\n </div>\r\n</ng-template>", styles: [".c-btn{background:#fff;border:1px solid #ccc;color:#333}.selected-list .c-list .c-token{background:#415269}.selected-list .c-list .c-token .c-label{color:#fff}.selected-list .c-list .c-token .c-remove svg{fill:#fff}.selected-list .c-angle-down svg,.selected-list .c-angle-up svg{fill:#333}.dropdown-list ul li:hover{background:#f5f5f5}.arrow-up,.arrow-down{border-bottom:15px solid #fff}.arrow-2{border-bottom:15px solid #ccc}.list-area{border:1px solid #ccc;background:#fff;box-shadow:0 1px 5px #959595}.select-all,.list-filter{border-bottom:1px solid #ccc}.list-filter .c-search svg{fill:#888}.list-filter .c-clear svg{fill:#888}.pure-checkbox input[type=checkbox]:focus+label:before,.pure-checkbox input[type=checkbox]:hover+label:before{border-color:#415269;background-color:#f2f2f2}.pure-checkbox input[type=checkbox]+label{color:#000}.pure-checkbox input[type=checkbox]+label:before{color:#415269;border:1px solid #415269}.pure-checkbox input[type=checkbox]+label:after{background-color:#415269}.pure-checkbox input[type=checkbox]:disabled+label:before{border-color:#ccc}.pure-checkbox input[type=checkbox]:disabled:checked+label:before{background-color:#ccc}.pure-checkbox input[type=checkbox]+label:after{border-color:#fff}.pure-checkbox input[type=radio]:checked+label:before{background-color:#fff}.pure-checkbox input[type=checkbox]:checked+label:before{background:#415269}.single-select-mode .pure-checkbox input[type=checkbox]:focus+label:before,.single-select-mode .pure-checkbox input[type=checkbox]:hover+label:before{border-color:#415269;background-color:#f2f2f2}.single-select-mode .pure-checkbox input[type=checkbox]+label{color:#000}.single-select-mode .pure-checkbox input[type=checkbox]+label:before{color:transparent!important;border:0px solid #415269}.single-select-mode .pure-checkbox input[type=checkbox]+label:after{background-color:transparent!important}.single-select-mode .pure-checkbox input[type=checkbox]:disabled+label:before{border-color:#ccc}.single-select-mode .pure-checkbox input[type=checkbox]:disabled:checked+label:before{background-color:#ccc}.single-select-mode .pure-checkbox input[type=checkbox]+label:after{border-color:#415269}.single-select-mode .pure-checkbox input[type=radio]:checked+label:before{background-color:#fff}.single-select-mode .pure-checkbox input[type=checkbox]:checked+label:before{background:none!important}.selected-item{background:#e9f4ff}.btn-iceblue{background:#415269;border:1px solid #ccc;color:#fff}.cuppa-dropdown{margin-top:2px;min-width:200px}.cuppa-dropdown .c-btn{min-height:34px}.cuppa-dropdown .c-angle-down,.cuppa-dropdown .c-angle-up{margin-top:-2px}.selected-list .c-list{width:auto!important;padding-right:35px!important;margin-top:-2px!important}.selected-list .c-list .c-token{padding:3px 22px 3px 8px!important}.ms-placeholder .cuppa-dropdown .selected-list>div>span{color:#aaa}\n"], components: [{ type: i4.AngularMultiSelect, selector: "angular2-multiselect", inputs: ["settings", "data", "loading"], outputs: ["onSelect", "onDeSelect", "onSelectAll", "onDeSelectAll", "onOpen", "onClose", "onScrollToEnd", "onFilterSelectAll", "onFilterDeSelectAll", "onAddFilterNewItem", "onGroupSelect", "onGroupDeSelect"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], viewProviders: [{ provide: LocalizationService, useClass: FormMultiSelectComponentLoc }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
133
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FormMultiSelectComponent, decorators: [{
134
+ type: Component,
135
+ args: [{ selector: "form-multiselect", viewProviders: [{ provide: LocalizationService, useClass: FormMultiSelectComponentLoc }], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, template: "<ng-container *ngIf=\"!FormLayout\">\r\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\r\n</ng-container>\r\n\r\n<div *ngIf=\"FormLayout && BoundSource\" class=\"form-group row {{FormGroupClass}}\" [class.app-margin-bottom-0]=\"Last\">\r\n <label class=\"col-md-{{LabelColWidth}} m-t-5\">{{Label}}{{Required ? '*' : ''}}:</label>\r\n <div class=\"col-md-{{InputColWidth}}\">\r\n <ng-container *ngTemplateOutlet=\"controlTemplate\"></ng-container>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n</div>\r\n\r\n<ng-template #controlTemplate>\r\n <div [class.ms-placeholder]=\"!Model || Model.length == 0\">\r\n <angular2-multiselect #validationControl=\"ngModel\" type=\"text\"\r\n [(ngModel)]=\"Model\" name=\"{{GeneratedName}}\"\r\n [settings]=\"Settings\" [data]=\"BoundSource\"\r\n (onSelect)=\"changed();\" \r\n (onDeSelect)=\"changed();\" \r\n (onSelectAll)=\"changed();\"\r\n (onDeSelectAll)=\"changed();\" \r\n (onDeSelectAll)=\"Model = []; changed();\">\r\n </angular2-multiselect>\r\n </div>\r\n</ng-template>", styles: [".c-btn{background:#fff;border:1px solid #ccc;color:#333}.selected-list .c-list .c-token{background:#415269}.selected-list .c-list .c-token .c-label{color:#fff}.selected-list .c-list .c-token .c-remove svg{fill:#fff}.selected-list .c-angle-down svg,.selected-list .c-angle-up svg{fill:#333}.dropdown-list ul li:hover{background:#f5f5f5}.arrow-up,.arrow-down{border-bottom:15px solid #fff}.arrow-2{border-bottom:15px solid #ccc}.list-area{border:1px solid #ccc;background:#fff;box-shadow:0 1px 5px #959595}.select-all,.list-filter{border-bottom:1px solid #ccc}.list-filter .c-search svg{fill:#888}.list-filter .c-clear svg{fill:#888}.pure-checkbox input[type=checkbox]:focus+label:before,.pure-checkbox input[type=checkbox]:hover+label:before{border-color:#415269;background-color:#f2f2f2}.pure-checkbox input[type=checkbox]+label{color:#000}.pure-checkbox input[type=checkbox]+label:before{color:#415269;border:1px solid #415269}.pure-checkbox input[type=checkbox]+label:after{background-color:#415269}.pure-checkbox input[type=checkbox]:disabled+label:before{border-color:#ccc}.pure-checkbox input[type=checkbox]:disabled:checked+label:before{background-color:#ccc}.pure-checkbox input[type=checkbox]+label:after{border-color:#fff}.pure-checkbox input[type=radio]:checked+label:before{background-color:#fff}.pure-checkbox input[type=checkbox]:checked+label:before{background:#415269}.single-select-mode .pure-checkbox input[type=checkbox]:focus+label:before,.single-select-mode .pure-checkbox input[type=checkbox]:hover+label:before{border-color:#415269;background-color:#f2f2f2}.single-select-mode .pure-checkbox input[type=checkbox]+label{color:#000}.single-select-mode .pure-checkbox input[type=checkbox]+label:before{color:transparent!important;border:0px solid #415269}.single-select-mode .pure-checkbox input[type=checkbox]+label:after{background-color:transparent!important}.single-select-mode .pure-checkbox input[type=checkbox]:disabled+label:before{border-color:#ccc}.single-select-mode .pure-checkbox input[type=checkbox]:disabled:checked+label:before{background-color:#ccc}.single-select-mode .pure-checkbox input[type=checkbox]+label:after{border-color:#415269}.single-select-mode .pure-checkbox input[type=radio]:checked+label:before{background-color:#fff}.single-select-mode .pure-checkbox input[type=checkbox]:checked+label:before{background:none!important}.selected-item{background:#e9f4ff}.btn-iceblue{background:#415269;border:1px solid #ccc;color:#fff}.cuppa-dropdown{margin-top:2px;min-width:200px}.cuppa-dropdown .c-btn{min-height:34px}.cuppa-dropdown .c-angle-down,.cuppa-dropdown .c-angle-up{margin-top:-2px}.selected-list .c-list{width:auto!important;padding-right:35px!important;margin-top:-2px!important}.selected-list .c-list .c-token{padding:3px 22px 3px 8px!important}.ms-placeholder .cuppa-dropdown .selected-list>div>span{color:#aaa}\n"] }]
136
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.LocalizationService }, { type: i2.NgControl, decorators: [{
137
+ type: Optional
138
+ }, {
139
+ type: Self
140
+ }] }, { type: Array, decorators: [{
141
+ type: Optional
142
+ }, {
143
+ type: Inject,
144
+ args: [NG_VALIDATORS]
145
+ }] }, { type: i3.AccessControlService, decorators: [{
146
+ type: Optional
147
+ }] }, { type: i3.ComponentContext, decorators: [{
148
+ type: Optional
149
+ }] }, { type: undefined, decorators: [{
150
+ type: Optional
151
+ }, {
152
+ type: Inject,
153
+ args: [ACO_CUSTOMKEY]
154
+ }] }]; }, propDecorators: { SelectLabel: [{
155
+ type: Input
156
+ }], UseKeyValues: [{
157
+ type: Input
158
+ }] } });
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1tdWx0aXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3Jtcy1hbmQtdmFsaWRhdGlvbnMvc3JjL2xpYi9mb3Jtcy9mb3JtLW11bHRpc2VsZWN0L2Zvcm0tbXVsdGlzZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvZm9ybXMvZm9ybS1tdWx0aXNlbGVjdC9mb3JtLW11bHRpc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBaUIsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEksT0FBTyxFQUF3QixhQUFhLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRixpQkFBaUI7QUFDakIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU3QyxlQUFlO0FBQ2YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7O0FBRy9FOzs7OztHQUtHO0FBU0gsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGVBQWU7SUE2QnpEOzs7O09BSUc7SUFDSCxZQUFZLEdBQXNCLEVBQVMsRUFBdUIsRUFBc0IsU0FBb0IsRUFBcUMsV0FBdUIsRUFBYyxFQUF3QixFQUFjLFVBQTRCLEVBQXFDLGFBQXFCO1FBQzlTLEtBQUssQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsVUFBVSxF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QWE7NENBakJsUixXQUFXO3NCQUFuQixLQUFLO2dCQUtHLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEluamVjdCwgSW5wdXQsIE9wdGlvbmFsLCBTZWxmLCBTaW1wbGVDaGFuZ2VzLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxJREFUT1JTLCBOZ0NvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbi8vIENvbmZpZ3VyYXppb25pXHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2xvY2FsaXphdGlvbnNcIjtcclxuaW1wb3J0IHsgQWNjZXNzQ29udHJvbFNlcnZpY2UsIENvbXBvbmVudENvbnRleHQgfSBmcm9tICdAZXNmYWVuemEvYWNjZXNzLWNvbnRyb2wnO1xyXG5pbXBvcnQgeyBBQ09fQ1VTVE9NS0VZIH0gZnJvbSAnLi4vLi4vdG9rZW5zJztcclxuXHJcbi8vIEFwcGxpY2F6aW9uZVxyXG5pbXBvcnQgeyBCYXNlRm9ybUNvbnRyb2wgfSBmcm9tIFwiLi4vYmFzZS1mb3JtLWNvbnRyb2xcIjtcclxuaW1wb3J0IHsgRm9ybU11bHRpU2VsZWN0Q29tcG9uZW50TG9jIH0gZnJvbSBcIi4vZm9ybS1tdWx0aXNlbGVjdC5jb21wb25lbnQubG9jXCI7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8qKlxyXG4gKiBDb21wb25lbnRlIGNoZSBwZXJtZXR0ZSBkaSBlZmZldHR1YXJlIHVuYSBzZWxlemlvbmUgbXVsdGlwbGEgZnJhIGdsaSBvZ2dldHRpIHBhc3NhdGkgbmVsbCdJbnB1dCAqKlNvdXJjZSoqXHJcbiAqIFxyXG4gKiBOLkI6IEFsIGNvbnRyYXJpbyBkZWdsaSBhbHRyaSBjb21wb25lbnRpIGZvcm0tKiBxdWVzdG8gdmllbmUgdGVudXRvIGNvbiAqKmNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCoqIGluIHF1YW50byBpbCBjb21wb25lbnRlIFxyXG4gKiB1dGlsaXp6YXRvIGludGVybmFtZW50ZSAoYW5ndWxhcjItbXVsdGlzZWxlY3QpIG5vbiDDqCBzdGF0byBhc3NvbHV0YW1lbnRlIHBlbnNhdG8gcGVyIGVzc2VyZSB1c2F0byBjb24gKipDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gqKlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJmb3JtLW11bHRpc2VsZWN0XCIsXHJcbiAgICB2aWV3UHJvdmlkZXJzOiBbeyBwcm92aWRlOiBMb2NhbGl6YXRpb25TZXJ2aWNlLCB1c2VDbGFzczogRm9ybU11bHRpU2VsZWN0Q29tcG9uZW50TG9jIH1dLFxyXG4gICAgdGVtcGxhdGVVcmw6IFwiZm9ybS1tdWx0aXNlbGVjdC5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgc3R5bGVVcmxzOiBbXCJmb3JtLW11bHRpc2VsZWN0LmNvbXBvbmVudC5jc3NcIl0sXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0XHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtTXVsdGlTZWxlY3RDb21wb25lbnQgZXh0ZW5kcyBCYXNlRm9ybUNvbnRyb2wgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNb2RlbGxvIHRlbXBvcmFuZW8gKipOT04qKiBjb21wYXRpYmlsZSBpbiBtYW5pZXJhIGRpcmV0dGEgY29uIGlsIGNvbXBvbmVudGUgKiphbmd1bGFyMi1tdWx0aXNlbGVjdCoqIHVzYXRvIGludGVybmFtZW50ZVxyXG4gICAgICogXHJcbiAgICAgKiBTZXJ2ZSBkYSBhcHBvZ2dpbyBwZXIgZWZmZXR0dWFyZSB1biByZS1iaW5kIHF1YWxvcmEgbGEgc29yZ2VudGUgY2FtYmlhc3NlIGUgcXVhbG9yYSAqKlJlYmluZE1vZGVsQWZ0ZXJTb3VyY2UqKiBmb3NzZSB0cnVlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgVG1wTW9kZWw6IHN0cmluZ1tdIHwge2lkOiBzdHJpbmcsIGRlc2NyaXB0aW9uOiBzdHJpbmd9W10gPSBbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYSBzZSBsYSBwcm9zc2ltYSBtb2RpZmljYSBhbGxhIFNvdXJjZSBkZXZlIGFuY2hlIGVmZmV0dHVhcmUgdW4gcmUtYmluZCBkZWwgbW9kZWxsby4gU2VydmUgc2UgbGEgKipCb3VuZFNvdXJjZSoqIHBhc3NhIGRhIG5vbiBhdmVyZSBvZ2dldHRpIGFkIGF2ZXJuZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIFJlYmluZE1vZGVsQWZ0ZXJTb3VyY2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFBlcm1ldHRlIGRpIHNwZWNpZmljYXJlIGlsIHRlc3RvIGRlbGxhIExhYmVsIGZsb3R0YW50ZSBtYXRlcmlhbC1zdHlsZVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBTZWxlY3RMYWJlbDogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFBlcm1ldHRlIGFsIGNvbXBvbmVudGUgZGkgZ2VzdGlyZSBjb21lIG1vZGVsbG8gbm9uIHVuYSBsaXN0YSBkaSBjaGlhdmksIG1hIHVuYSBsaXN0YSBkaSBLZXlWYWx1ZVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBVc2VLZXlWYWx1ZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEltcG9zdGF6aW9uaSBkZWwgY29tcG9uZW50ZSBpbnRlcm5vICoqYW5ndWxhcjItbXVsdGlzZWxlY3QqKlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgU2V0dGluZ3M6IHsgc2VsZWN0QWxsVGV4dDogc3RyaW5nLCB1blNlbGVjdEFsbFRleHQ6IHN0cmluZywgdGV4dDogc3RyaW5nLCBlbmFibGVDaGVja0FsbDogYm9vbGVhbiwgZGlzYWJsZWQ6IGJvb2xlYW4sIGxhYmVsS2V5OiBzdHJpbmcsIHRhZ1RvQm9keTogYm9vbGVhbiB9ID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvc3RydXR0b3JlIFxyXG4gICAgICogXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHB1YmxpYyBsYzogTG9jYWxpemF0aW9uU2VydmljZSwgQE9wdGlvbmFsKCkgQFNlbGYoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbCwgQE9wdGlvbmFsKCkgQEluamVjdChOR19WQUxJREFUT1JTKSBfdmFsaWRhdG9yczogQXJyYXk8YW55PiwgQE9wdGlvbmFsKCkgYWM6IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlLCBAT3B0aW9uYWwoKSBBcHBDb250ZXh0OiBDb21wb25lbnRDb250ZXh0LCBAT3B0aW9uYWwoKSBASW5qZWN0KEFDT19DVVNUT01LRVkpIEFDT19DVVNUT01LRVk6IHN0cmluZykge1xyXG4gICAgICAgIHN1cGVyKGNkciwgbmdDb250cm9sLCBfdmFsaWRhdG9ycywgYWMsIEFwcENvbnRleHQsIEFDT19DVVNUT01LRVkpO1xyXG5cclxuICAgICAgICAvLyBEZWZhdWx0IGRlaSBzZXR0aW5ncyBwZXIgZXZpdGFyZSBjaGUgc2lhbm8gbWFpIG51bGxpLCBhbHRyaW1lbnRpIGlsIGNhenpvIGRpIEN1cHBhTGFiIHNhbHRhIGluIGFyYWlhIGNoZSDDqCB2ZXJhbWVudGUgdW5hIGJlbGxlenphXHJcbiAgICAgICAgdGhpcy5ldmFsdWF0ZVNldHRpbmdzKGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGFzeW5jIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgICBjb25zdCBuZXdTb3VyY2UgPSBjaGFuZ2VzW1wiU291cmNlXCJdO1xyXG4gICAgICAgIGlmIChuZXdTb3VyY2UpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLnRyeUJpbmRTb3VyY2VEaXNwbGF5KCk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLlJlYmluZE1vZGVsQWZ0ZXJTb3VyY2UpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLlRtcE1vZGVsKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuUmViaW5kTW9kZWxBZnRlclNvdXJjZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCByZWFkb25seSA9IGNoYW5nZXNbXCJSZWFkb25seVwiXTtcclxuICAgICAgICB0aGlzLmV2YWx1YXRlU2V0dGluZ3MocmVhZG9ubHkgPyByZWFkb25seS5jdXJyZW50VmFsdWUgPz8gZmFsc2UgOiB0aGlzLlJlYWRvbmx5ID8/IGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNjcml2ZSBpIG51b3ZpIHNldHRpbmdzIHBlciBpbCBjb21wb25lbnRlXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gZGlzYWJsZWQgSW5kaWNhIHNlIGlsIGNvbXBvbmVudGUgZGV2J2Vzc2VyZSBkaXNhYmlsaXRhdG8gbyBtZW5vXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZXZhbHVhdGVTZXR0aW5ncyhkaXNhYmxlZDogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuU2V0dGluZ3MgPSB7XHJcbiAgICAgICAgICAgIHNlbGVjdEFsbFRleHQ6IHRoaXMubGMubG9jKFwiU2VsZWN0IGV2ZXJ5dGhpbmdcIiksXHJcbiAgICAgICAgICAgIHVuU2VsZWN0QWxsVGV4dDogdGhpcy5sYy5sb2MoXCJEZXNlbGVjdCBldmVyeXRoaW5nXCIpLFxyXG4gICAgICAgICAgICB0ZXh0OiB0aGlzLlNlbGVjdExhYmVsIHx8IHRoaXMubGMubG9jKFwiU2VsZWN0IG9uZSBvciBtb3JlIHZhbHVlcy4uLlwiKSxcclxuICAgICAgICAgICAgZW5hYmxlQ2hlY2tBbGw6IHRydWUsXHJcbiAgICAgICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcclxuICAgICAgICAgICAgbGFiZWxLZXk6IFwiZGVzY3JpcHRpb25cIixcclxuICAgICAgICAgICAgdGFnVG9Cb2R5OiBmYWxzZVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIG9uTm90TnVsbFZhbHVlU2V0KCk6IHZvaWQgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2Egc2UgaWwgY29tb3BuZW50ZSBpbiBxdWVzdGlvbmUgw6ggaW4gZ3JhZG8gZGkgZ2VzdGlyZSBuZ0NvbnRyb2wgbnVsbGkuIFxyXG4gICAgICogSW4gcXVlc3RvIGNvbXBvbmVudGUgw6ggbm9ybWFsZSBjaGUgc2lhIGNvc8OsIHF1aW5kaSByZXN0aXR1aXNjZSBzZW1wbGljZW1lbnRlICoqdHJ1ZSoqXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSAqKnRydWUqKiBzZSBnZXN0aXNjbyBuZ0NvbnRyb2wgbnVsbGksICoqZmFsc2UqKiBhbHRyaW1lbnRpXHJcbiAgICAgKi9cclxuICAgIGhhbmRsZU51bGxOZ0NvbnRyb2woKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlIE92ZXJyaWRlIHBlciBnZXN0aXJlIGlucHV0IGluIGluZ3Jlc3NvXHJcbiAgICAgKi9cclxuICAgIHdyaXRlVmFsdWUob2JqOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuVG1wTW9kZWwgPSBvYmo7XHJcbiAgICAgICAgbGV0IHRvUGFzczogeyBpZDogc3RyaW5nLCBpdGVtTmFtZTogc3RyaW5nIH1bXSA9IFtdO1xyXG5cclxuICAgICAgICAvL1F1aSBhcnJpdmFubyBzb2xvIGdsaSBpZCwgbyB7aWQ6IHgsIGRlc2NyaXB0aW9uOiB5fSBpbiBjYXNvIHNvbm8gaW4gVXNlS2V5VmFsdWVzLCBcclxuICAgICAgICAvL2Rldm8gdGlyYXJlIGZ1b3JpIGdsaSBvZ2dldHRpIHJlbGF0aXZpIGUgcGlhenphcmxpIGNvbWUgbGlzdGEgcGVyIGlsIE1vZGVsXHJcbiAgICAgICAgaWYgKG9iaiAmJiBvYmoubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBvYmouZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBpdGVtID0gdGhpcy5Cb3VuZFNvdXJjZS5maW5kKG8gPT4gby5pZCA9PSAodGhpcy5Vc2VLZXlWYWx1ZXMgPyB0LmlkIDogdCkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0pXHJcbiAgICAgICAgICAgICAgICAgICAgdG9QYXNzLnB1c2goSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShpdGVtKSkpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXRoaXMuQm91bmRTb3VyY2UgfHwgdGhpcy5Cb3VuZFNvdXJjZS5sZW5ndGggPT0gMClcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlJlYmluZE1vZGVsQWZ0ZXJTb3VyY2UgPSB0cnVlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHN1cGVyLndyaXRlVmFsdWUodG9QYXNzKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmUgT3ZlcnJpZGUgcGVyIGdlc3RpcmUgaW5wdXQgaW4gdXNjaXRhXHJcbiAgICAgKi9cclxuICAgIGNoYW5nZWQoKSB7XHJcbiAgICAgICAgbGV0IHRvRW1pdCA9IG51bGw7XHJcbiAgICAgICAgaWYgKCF0aGlzLlVzZUtleVZhbHVlcylcclxuICAgICAgICAgICAgdG9FbWl0ID0gKDxhbnlbXT50aGlzLk1vZGVsKS5tYXAobSA9PiBtLmlkKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRvRW1pdCA9ICg8YW55W10+dGhpcy5Nb2RlbCkubWFwKG0gPT4gKHsgaWQ6IG0uaWQsIGRlc2NyaXB0aW9uOiBtLml0ZW1OYW1lIH0pKTtcclxuXHJcbiAgICAgICAgc3VwZXIuY2hhbmdlZCh0b0VtaXQpO1xyXG4gICAgfVxyXG59IiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFGb3JtTGF5b3V0XCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udHJvbFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPGRpdiAqbmdJZj1cIkZvcm1MYXlvdXQgJiYgQm91bmRTb3VyY2VcIiBjbGFzcz1cImZvcm0tZ3JvdXAgcm93IHt7Rm9ybUdyb3VwQ2xhc3N9fVwiIFtjbGFzcy5hcHAtbWFyZ2luLWJvdHRvbS0wXT1cIkxhc3RcIj5cclxuICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC17e0xhYmVsQ29sV2lkdGh9fSBtLXQtNVwiPnt7TGFiZWx9fXt7UmVxdWlyZWQgPyAnKicgOiAnJ319OjwvbGFiZWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLXt7SW5wdXRDb2xXaWR0aH19XCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRyb2xUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2xlYXJmaXhcIj48L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2NvbnRyb2xUZW1wbGF0ZT5cclxuICAgIDxkaXYgW2NsYXNzLm1zLXBsYWNlaG9sZGVyXT1cIiFNb2RlbCB8fCBNb2RlbC5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgIDxhbmd1bGFyMi1tdWx0aXNlbGVjdCAjdmFsaWRhdGlvbkNvbnRyb2w9XCJuZ01vZGVsXCIgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cIk1vZGVsXCIgbmFtZT1cInt7R2VuZXJhdGVkTmFtZX19XCJcclxuICAgICAgICAgICAgW3NldHRpbmdzXT1cIlNldHRpbmdzXCIgW2RhdGFdPVwiQm91bmRTb3VyY2VcIlxyXG4gICAgICAgICAgICAob25TZWxlY3QpPVwiY2hhbmdlZCgpO1wiIFxyXG4gICAgICAgICAgICAob25EZVNlbGVjdCk9XCJjaGFuZ2VkKCk7XCIgXHJcbiAgICAgICAgICAgIChvblNlbGVjdEFsbCk9XCJjaGFuZ2VkKCk7XCJcclxuICAgICAgICAgICAgKG9uRGVTZWxlY3RBbGwpPVwiY2hhbmdlZCgpO1wiIFxyXG4gICAgICAgICAgICAob25EZVNlbGVjdEFsbCk9XCJNb2RlbCA9IFtdOyBjaGFuZ2VkKCk7XCI+XHJcbiAgICAgICAgPC9hbmd1bGFyMi1tdWx0aXNlbGVjdD5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
@@ -0,0 +1,26 @@
1
+ import { Injectable, Inject, Optional } from "@angular/core";
2
+ import { LocalizationService } from "@esfaenza/localizations";
3
+ import { FAV_LOCALE } from '../../tokens';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Classe di localizzazione per il componente **FormSelectComponent**
7
+ */
8
+ export class FormSelectComponentLoc extends LocalizationService {
9
+ /**
10
+ * @ignore
11
+ */
12
+ constructor(LOC_LOCALE) {
13
+ super(LOC_LOCALE ?? 'it-IT');
14
+ }
15
+ }
16
+ FormSelectComponentLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FormSelectComponentLoc, deps: [{ token: FAV_LOCALE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
17
+ FormSelectComponentLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FormSelectComponentLoc });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FormSelectComponentLoc, decorators: [{
19
+ type: Injectable
20
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
21
+ type: Optional
22
+ }, {
23
+ type: Inject,
24
+ args: [FAV_LOCALE]
25
+ }] }]; } });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zZWxlY3QuY29tcG9uZW50LmxvYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm1zLWFuZC12YWxpZGF0aW9ucy9zcmMvbGliL2Zvcm1zL2Zvcm0tc2VsZWN0L2Zvcm0tc2VsZWN0LmNvbXBvbmVudC5sb2MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBRTFDOztHQUVHO0FBRUgsTUFBTSxPQUFPLHNCQUF1QixTQUFRLG1CQUFtQjtJQUUzRDs7T0FFRztJQUNILFlBQTRDLFVBQWtCO1FBQzFELEtBQUssQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLENBQUM7SUFDakMsQ0FBQzs7bUhBUFEsc0JBQXNCLGtCQUtDLFVBQVU7dUhBTGpDLHNCQUFzQjsyRkFBdEIsc0JBQXNCO2tCQURsQyxVQUFVOzswQkFNTSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvbG9jYWxpemF0aW9uc1wiO1xyXG5pbXBvcnQgeyBGQVZfTE9DQUxFIH0gZnJvbSAnLi4vLi4vdG9rZW5zJztcclxuXHJcbi8qKlxyXG4gKiBDbGFzc2UgZGkgbG9jYWxpenphemlvbmUgcGVyIGlsIGNvbXBvbmVudGUgKipGb3JtU2VsZWN0Q29tcG9uZW50KipcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEZvcm1TZWxlY3RDb21wb25lbnRMb2MgZXh0ZW5kcyBMb2NhbGl6YXRpb25TZXJ2aWNlIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChGQVZfTE9DQUxFKSBMT0NfTE9DQUxFOiBzdHJpbmcpIHtcclxuICAgICAgICBzdXBlcihMT0NfTE9DQUxFID8/ICdpdC1JVCcpO1xyXG4gICAgfVxyXG59Il19