@esfaenza/forms-and-validations 12.2.29 → 13.1.4
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.
- package/esfaenza-forms-and-validations.d.ts +1 -12
- package/esm2020/esfaenza-forms-and-validations.mjs +5 -0
- package/esm2020/lib/forms/base-form-control.mjs +482 -0
- package/esm2020/lib/forms/form-adaptive/form-adaptive.component.loc.mjs +28 -0
- package/esm2020/lib/forms/form-adaptive/form-adaptive.component.mjs +294 -0
- package/esm2020/lib/forms/form-autocomplete/form-autocomplete.component.loc.mjs +26 -0
- package/esm2020/lib/forms/form-autocomplete/form-autocomplete.component.mjs +200 -0
- package/esm2020/lib/forms/form-checkbox/form-checkbox.component.mjs +52 -0
- package/esm2020/lib/forms/form-date/form-date.component.mjs +59 -0
- package/esm2020/lib/forms/form-datetime/form-datetime.component.mjs +59 -0
- package/esm2020/lib/forms/form-empty/form-empty.component.mjs +36 -0
- package/esm2020/lib/forms/form-error/form-error.component.mjs +52 -0
- package/esm2020/lib/forms/form-file/form-file.component.loc.mjs +28 -0
- package/esm2020/lib/forms/form-file/form-file.component.mjs +119 -0
- package/esm2020/lib/forms/form-info/form-info.component.mjs +52 -0
- package/esm2020/lib/forms/form-input/form-input.component.mjs +93 -0
- package/esm2020/lib/forms/form-multiselect/form-multiselect.component.loc.mjs +29 -0
- package/esm2020/lib/forms/form-multiselect/form-multiselect.component.mjs +159 -0
- package/esm2020/lib/forms/form-select/form-select.component.loc.mjs +26 -0
- package/esm2020/lib/forms/form-select/form-select.component.mjs +129 -0
- package/esm2020/lib/forms/form-template/form-template.component.mjs +71 -0
- package/esm2020/lib/forms/form-textarea/form-textarea.component.mjs +54 -0
- package/esm2020/lib/forms/form-time/form-time.component.mjs +131 -0
- package/esm2020/lib/forms-and-validations.module.mjs +203 -0
- package/{esm2015/lib/models/AppFile.js → esm2020/lib/models/AppFile.mjs} +0 -0
- package/{esm2015/lib/models/FormsAndValidationsModuleConfig.js → esm2020/lib/models/FormsAndValidationsModuleConfig.mjs} +0 -0
- package/esm2020/lib/models/dayjs-adapter/dayjs-date-adapter.mjs +89 -0
- package/{esm2015/lib/tokens.js → esm2020/lib/tokens.mjs} +0 -0
- package/esm2020/lib/validations/base-validation.loc.mjs +28 -0
- package/esm2020/lib/validations/base-validation.mjs +238 -0
- package/esm2020/lib/validations/customValidators/CustomRequiredDirective.mjs +41 -0
- package/esm2020/lib/validations/validation-autocomplete/validation-autocomplete.component.mjs +168 -0
- package/esm2020/lib/validations/validation-currency/validation-currency.component.mjs +61 -0
- package/esm2020/lib/validations/validation-date/validation-date.component.mjs +177 -0
- package/esm2020/lib/validations/validation-datetime/validation-datetime.component.mjs +206 -0
- package/esm2020/lib/validations/validation-input/validation-input.component.mjs +207 -0
- package/esm2020/lib/validations/validation-select/validation-select.component.mjs +184 -0
- package/esm2020/lib/validations/validation-text-area/validation-text-area.component.mjs +64 -0
- package/esm2020/public-api.mjs +35 -0
- package/fesm2015/esfaenza-forms-and-validations.mjs +3626 -0
- package/fesm2015/esfaenza-forms-and-validations.mjs.map +1 -0
- package/fesm2020/esfaenza-forms-and-validations.mjs +3568 -0
- package/fesm2020/esfaenza-forms-and-validations.mjs.map +1 -0
- package/lib/forms/base-form-control.d.ts +3 -0
- package/lib/forms/form-adaptive/form-adaptive.component.d.ts +3 -0
- package/lib/forms/form-adaptive/form-adaptive.component.loc.d.ts +3 -0
- package/lib/forms/form-autocomplete/form-autocomplete.component.d.ts +3 -0
- package/lib/forms/form-autocomplete/form-autocomplete.component.loc.d.ts +3 -0
- package/lib/forms/form-checkbox/form-checkbox.component.d.ts +3 -0
- package/lib/forms/form-date/form-date.component.d.ts +3 -0
- package/lib/forms/form-datetime/form-datetime.component.d.ts +3 -0
- package/lib/forms/form-empty/form-empty.component.d.ts +3 -0
- package/lib/forms/form-error/form-error.component.d.ts +3 -0
- package/lib/forms/form-file/form-file.component.d.ts +3 -0
- package/lib/forms/form-file/form-file.component.loc.d.ts +3 -0
- package/lib/forms/form-info/form-info.component.d.ts +3 -0
- package/lib/forms/form-input/form-input.component.d.ts +3 -0
- package/lib/forms/form-multiselect/form-multiselect.component.d.ts +3 -0
- package/lib/forms/form-multiselect/form-multiselect.component.loc.d.ts +3 -0
- package/lib/forms/form-select/form-select.component.d.ts +3 -0
- package/lib/forms/form-select/form-select.component.loc.d.ts +3 -0
- package/lib/forms/form-template/form-template.component.d.ts +3 -0
- package/lib/forms/form-textarea/form-textarea.component.d.ts +3 -0
- package/lib/forms/form-time/form-time.component.d.ts +3 -0
- package/lib/forms-and-validations.module.d.ts +38 -0
- package/lib/models/dayjs-adapter/dayjs-date-adapter.d.ts +3 -0
- package/lib/validations/base-validation.d.ts +7 -0
- package/lib/validations/base-validation.loc.d.ts +3 -0
- package/lib/validations/customValidators/CustomRequiredDirective.d.ts +3 -0
- package/lib/validations/validation-autocomplete/validation-autocomplete.component.d.ts +3 -0
- package/lib/validations/validation-currency/validation-currency.component.d.ts +3 -0
- package/lib/validations/validation-date/validation-date.component.d.ts +3 -0
- package/lib/validations/validation-datetime/validation-datetime.component.d.ts +3 -0
- package/lib/validations/validation-input/validation-input.component.d.ts +3 -0
- package/lib/validations/validation-select/validation-select.component.d.ts +3 -0
- package/lib/validations/validation-text-area/validation-text-area.component.d.ts +3 -0
- package/package.json +31 -19
- package/public-api.d.ts +2 -0
- package/bundles/esfaenza-forms-and-validations.umd.js +0 -3754
- package/bundles/esfaenza-forms-and-validations.umd.js.map +0 -1
- package/esfaenza-forms-and-validations.metadata.json +0 -1
- package/esm2015/esfaenza-forms-and-validations.js +0 -17
- package/esm2015/lib/forms/base-form-control.js +0 -460
- package/esm2015/lib/forms/form-adaptive/form-adaptive.component.js +0 -277
- package/esm2015/lib/forms/form-adaptive/form-adaptive.component.loc.js +0 -23
- package/esm2015/lib/forms/form-autocomplete/form-autocomplete.component.js +0 -187
- package/esm2015/lib/forms/form-autocomplete/form-autocomplete.component.loc.js +0 -21
- package/esm2015/lib/forms/form-checkbox/form-checkbox.component.js +0 -41
- package/esm2015/lib/forms/form-date/form-date.component.js +0 -49
- package/esm2015/lib/forms/form-datetime/form-datetime.component.js +0 -49
- package/esm2015/lib/forms/form-empty/form-empty.component.js +0 -34
- package/esm2015/lib/forms/form-error/form-error.component.js +0 -49
- package/esm2015/lib/forms/form-file/form-file.component.js +0 -109
- package/esm2015/lib/forms/form-file/form-file.component.loc.js +0 -23
- package/esm2015/lib/forms/form-info/form-info.component.js +0 -49
- package/esm2015/lib/forms/form-input/form-input.component.js +0 -76
- package/esm2015/lib/forms/form-multiselect/form-multiselect.component.js +0 -154
- package/esm2015/lib/forms/form-multiselect/form-multiselect.component.loc.js +0 -24
- package/esm2015/lib/forms/form-select/form-select.component.js +0 -114
- package/esm2015/lib/forms/form-select/form-select.component.loc.js +0 -21
- package/esm2015/lib/forms/form-template/form-template.component.js +0 -64
- package/esm2015/lib/forms/form-textarea/form-textarea.component.js +0 -44
- package/esm2015/lib/forms/form-time/form-time.component.js +0 -117
- package/esm2015/lib/forms-and-validations.module.js +0 -144
- package/esm2015/lib/models/dayjs-adapter/dayjs-date-adapter.js +0 -86
- package/esm2015/lib/validations/base-validation.js +0 -208
- package/esm2015/lib/validations/base-validation.loc.js +0 -23
- package/esm2015/lib/validations/customValidators/CustomRequiredDirective.js +0 -35
- package/esm2015/lib/validations/validation-autocomplete/validation-autocomplete.component.js +0 -151
- package/esm2015/lib/validations/validation-currency/validation-currency.component.js +0 -48
- package/esm2015/lib/validations/validation-date/validation-date.component.js +0 -165
- package/esm2015/lib/validations/validation-datetime/validation-datetime.component.js +0 -193
- package/esm2015/lib/validations/validation-input/validation-input.component.js +0 -186
- package/esm2015/lib/validations/validation-select/validation-select.component.js +0 -166
- package/esm2015/lib/validations/validation-text-area/validation-text-area.component.js +0 -52
- package/esm2015/public-api.js +0 -32
- package/fesm2015/esfaenza-forms-and-validations.js +0 -3262
- package/fesm2015/esfaenza-forms-and-validations.js.map +0 -1
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
// Angular
|
|
3
|
-
import { ChangeDetectionStrategy, Component, Inject, Input, Optional, Self, ViewEncapsulation } from "@angular/core";
|
|
4
|
-
import { NG_VALIDATORS, NgControl } from "@angular/forms";
|
|
5
|
-
// Configurazioni
|
|
6
|
-
import { LocalizationService } from "@esfaenza/localizations";
|
|
7
|
-
import { AccessControlService, ComponentContext } from '@esfaenza/access-control';
|
|
8
|
-
import { ACO_CUSTOMKEY } from '../../tokens';
|
|
9
|
-
// Applicazione
|
|
10
|
-
import { BaseFormControl } from "../base-form-control";
|
|
11
|
-
import { FormMultiSelectComponentLoc } from "./form-multiselect.component.loc";
|
|
12
|
-
import { ChangeDetectorRef } from "@angular/core";
|
|
13
|
-
/**
|
|
14
|
-
* Componente che permette di effettuare una selezione multipla fra gli oggetti passati nell'Input **Source**
|
|
15
|
-
*
|
|
16
|
-
* N.B: Al contrario degli altri componenti form-* questo viene tenuto con **changeDetection: ChangeDetectionStrategy.Default** in quanto il componente
|
|
17
|
-
* utilizzato internamente (angular2-multiselect) non è stato assolutamente pensato per essere usato con **ChangeDetectionStrategy.OnPush**
|
|
18
|
-
*/
|
|
19
|
-
export class FormMultiSelectComponent extends BaseFormControl {
|
|
20
|
-
/**
|
|
21
|
-
* Costruttore
|
|
22
|
-
*
|
|
23
|
-
* @ignore
|
|
24
|
-
*/
|
|
25
|
-
constructor(cdr, lc, ngControl, _validators, ac, AppContext, ACO_CUSTOMKEY) {
|
|
26
|
-
super(cdr, ngControl, _validators, ac, AppContext, ACO_CUSTOMKEY);
|
|
27
|
-
this.lc = lc;
|
|
28
|
-
/**
|
|
29
|
-
* Modello temporaneo **NON** compatibile in maniera diretta con il componente **angular2-multiselect** usato internamente
|
|
30
|
-
*
|
|
31
|
-
* Serve da appoggio per effettuare un re-bind qualora la sorgente cambiasse e qualora **RebindModelAfterSource** fosse true
|
|
32
|
-
*/
|
|
33
|
-
this.TmpModel = [];
|
|
34
|
-
/**
|
|
35
|
-
* 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
|
|
36
|
-
*/
|
|
37
|
-
this.RebindModelAfterSource = false;
|
|
38
|
-
/**
|
|
39
|
-
* Permette di specificare il testo della Label flottante material-style
|
|
40
|
-
*/
|
|
41
|
-
this.SelectLabel = "";
|
|
42
|
-
/**
|
|
43
|
-
* Permette al componente di gestire come modello non una lista di chiavi, ma una lista di KeyValue
|
|
44
|
-
*/
|
|
45
|
-
this.UseKeyValues = false;
|
|
46
|
-
/**
|
|
47
|
-
* Impostazioni del componente interno **angular2-multiselect**
|
|
48
|
-
*/
|
|
49
|
-
this.Settings = null;
|
|
50
|
-
// Default dei settings per evitare che siano mai nulli, altrimenti il cazzo di CuppaLab salta in araia che è veramente una bellezza
|
|
51
|
-
this.evaluateSettings(false);
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* @ignore
|
|
55
|
-
*/
|
|
56
|
-
ngOnChanges(changes) {
|
|
57
|
-
var _a, _b;
|
|
58
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
59
|
-
const newSource = changes["Source"];
|
|
60
|
-
if (newSource) {
|
|
61
|
-
this.tryBindSourceDisplay();
|
|
62
|
-
if (this.RebindModelAfterSource) {
|
|
63
|
-
this.writeValue(this.TmpModel);
|
|
64
|
-
this.RebindModelAfterSource = false;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
const readonly = changes["Readonly"];
|
|
68
|
-
this.evaluateSettings(readonly ? (_a = readonly.currentValue) !== null && _a !== void 0 ? _a : false : (_b = this.Readonly) !== null && _b !== void 0 ? _b : false);
|
|
69
|
-
});
|
|
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.decorators = [
|
|
132
|
-
{ type: Component, args: [{
|
|
133
|
-
selector: "form-multiselect",
|
|
134
|
-
viewProviders: [{ provide: LocalizationService, useClass: FormMultiSelectComponentLoc }],
|
|
135
|
-
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>",
|
|
136
|
-
encapsulation: ViewEncapsulation.None,
|
|
137
|
-
changeDetection: ChangeDetectionStrategy.Default,
|
|
138
|
-
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{border-bottom:1px solid #ccc}.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{margin-top:-2px}.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"]
|
|
139
|
-
},] }
|
|
140
|
-
];
|
|
141
|
-
FormMultiSelectComponent.ctorParameters = () => [
|
|
142
|
-
{ type: ChangeDetectorRef },
|
|
143
|
-
{ type: LocalizationService },
|
|
144
|
-
{ type: NgControl, decorators: [{ type: Optional }, { type: Self }] },
|
|
145
|
-
{ type: Array, decorators: [{ type: Optional }, { type: Inject, args: [NG_VALIDATORS,] }] },
|
|
146
|
-
{ type: AccessControlService, decorators: [{ type: Optional }] },
|
|
147
|
-
{ type: ComponentContext, decorators: [{ type: Optional }] },
|
|
148
|
-
{ type: String, decorators: [{ type: Optional }, { type: Inject, args: [ACO_CUSTOMKEY,] }] }
|
|
149
|
-
];
|
|
150
|
-
FormMultiSelectComponent.propDecorators = {
|
|
151
|
-
SelectLabel: [{ type: Input }],
|
|
152
|
-
UseKeyValues: [{ type: Input }]
|
|
153
|
-
};
|
|
154
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1tdWx0aXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3Jtcy1hbmQtdmFsaWRhdGlvbnMvc3JjL2xpYi9mb3Jtcy9mb3JtLW11bHRpc2VsZWN0L2Zvcm0tbXVsdGlzZWxlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQWlCLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BJLE9BQU8sRUFBd0IsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhGLGlCQUFpQjtBQUNqQixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTdDLGVBQWU7QUFDZixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxEOzs7OztHQUtHO0FBU0gsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGVBQWU7SUE2QnpEOzs7O09BSUc7SUFDSCxZQUFZLEdBQXNCLEVBQVMsRUFBdUIsRUFBc0IsU0FBb0IsRUFBcUMsV0FBdUIsRUFBYyxFQUF3QixFQUFjLFVBQTRCLEVBQXFDLGFBQXFCO1FBQzlTLEtBQUssQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLGFBQWEs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dXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCwgT3B0aW9uYWwsIFNlbGYsIFNpbXBsZUNoYW5nZXMsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTElEQVRPUlMsIE5nQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuLy8gQ29uZmlndXJhemlvbmlcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvbG9jYWxpemF0aW9uc1wiO1xyXG5pbXBvcnQgeyBBY2Nlc3NDb250cm9sU2VydmljZSwgQ29tcG9uZW50Q29udGV4dCB9IGZyb20gJ0Blc2ZhZW56YS9hY2Nlc3MtY29udHJvbCc7XHJcbmltcG9ydCB7IEFDT19DVVNUT01LRVkgfSBmcm9tICcuLi8uLi90b2tlbnMnO1xyXG5cclxuLy8gQXBwbGljYXppb25lXHJcbmltcG9ydCB7IEJhc2VGb3JtQ29udHJvbCB9IGZyb20gXCIuLi9iYXNlLWZvcm0tY29udHJvbFwiO1xyXG5pbXBvcnQgeyBGb3JtTXVsdGlTZWxlY3RDb21wb25lbnRMb2MgfSBmcm9tIFwiLi9mb3JtLW11bHRpc2VsZWN0LmNvbXBvbmVudC5sb2NcIjtcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLyoqXHJcbiAqIENvbXBvbmVudGUgY2hlIHBlcm1ldHRlIGRpIGVmZmV0dHVhcmUgdW5hIHNlbGV6aW9uZSBtdWx0aXBsYSBmcmEgZ2xpIG9nZ2V0dGkgcGFzc2F0aSBuZWxsJ0lucHV0ICoqU291cmNlKipcclxuICogXHJcbiAqIE4uQjogQWwgY29udHJhcmlvIGRlZ2xpIGFsdHJpIGNvbXBvbmVudGkgZm9ybS0qIHF1ZXN0byB2aWVuZSB0ZW51dG8gY29uICoqY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0KiogaW4gcXVhbnRvIGlsIGNvbXBvbmVudGUgXHJcbiAqIHV0aWxpenphdG8gaW50ZXJuYW1lbnRlIChhbmd1bGFyMi1tdWx0aXNlbGVjdCkgbm9uIMOoIHN0YXRvIGFzc29sdXRhbWVudGUgcGVuc2F0byBwZXIgZXNzZXJlIHVzYXRvIGNvbiAqKkNoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCoqXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImZvcm0tbXVsdGlzZWxlY3RcIixcclxuICAgIHZpZXdQcm92aWRlcnM6IFt7IHByb3ZpZGU6IExvY2FsaXphdGlvblNlcnZpY2UsIHVzZUNsYXNzOiBGb3JtTXVsdGlTZWxlY3RDb21wb25lbnRMb2MgfV0sXHJcbiAgICB0ZW1wbGF0ZVVybDogXCJmb3JtLW11bHRpc2VsZWN0LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgICBzdHlsZVVybHM6IFtcImZvcm0tbXVsdGlzZWxlY3QuY29tcG9uZW50LmNzc1wiXSxcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHRcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1NdWx0aVNlbGVjdENvbXBvbmVudCBleHRlbmRzIEJhc2VGb3JtQ29udHJvbCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1vZGVsbG8gdGVtcG9yYW5lbyAqKk5PTioqIGNvbXBhdGliaWxlIGluIG1hbmllcmEgZGlyZXR0YSBjb24gaWwgY29tcG9uZW50ZSAqKmFuZ3VsYXIyLW11bHRpc2VsZWN0KiogdXNhdG8gaW50ZXJuYW1lbnRlXHJcbiAgICAgKiBcclxuICAgICAqIFNlcnZlIGRhIGFwcG9nZ2lvIHBlciBlZmZldHR1YXJlIHVuIHJlLWJpbmQgcXVhbG9yYSBsYSBzb3JnZW50ZSBjYW1iaWFzc2UgZSBxdWFsb3JhICoqUmViaW5kTW9kZWxBZnRlclNvdXJjZSoqIGZvc3NlIHRydWVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBUbXBNb2RlbDogc3RyaW5nW10gfCB7aWQ6IHN0cmluZywgZGVzY3JpcHRpb246IHN0cmluZ31bXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhIHNlIGxhIHByb3NzaW1hIG1vZGlmaWNhIGFsbGEgU291cmNlIGRldmUgYW5jaGUgZWZmZXR0dWFyZSB1biByZS1iaW5kIGRlbCBtb2RlbGxvLiBTZXJ2ZSBzZSBsYSAqKkJvdW5kU291cmNlKiogcGFzc2EgZGEgbm9uIGF2ZXJlIG9nZ2V0dGkgYWQgYXZlcm5lXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgUmViaW5kTW9kZWxBZnRlclNvdXJjZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUGVybWV0dGUgZGkgc3BlY2lmaWNhcmUgaWwgdGVzdG8gZGVsbGEgTGFiZWwgZmxvdHRhbnRlIG1hdGVyaWFsLXN0eWxlXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIFNlbGVjdExhYmVsOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUGVybWV0dGUgYWwgY29tcG9uZW50ZSBkaSBnZXN0aXJlIGNvbWUgbW9kZWxsbyBub24gdW5hIGxpc3RhIGRpIGNoaWF2aSwgbWEgdW5hIGxpc3RhIGRpIEtleVZhbHVlXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIFVzZUtleVZhbHVlczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW1wb3N0YXppb25pIGRlbCBjb21wb25lbnRlIGludGVybm8gKiphbmd1bGFyMi1tdWx0aXNlbGVjdCoqXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBTZXR0aW5nczogeyBzZWxlY3RBbGxUZXh0OiBzdHJpbmcsIHVuU2VsZWN0QWxsVGV4dDogc3RyaW5nLCB0ZXh0OiBzdHJpbmcsIGVuYWJsZUNoZWNrQWxsOiBib29sZWFuLCBkaXNhYmxlZDogYm9vbGVhbiwgbGFiZWxLZXk6IHN0cmluZywgdGFnVG9Cb2R5OiBib29sZWFuIH0gPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29zdHJ1dHRvcmUgXHJcbiAgICAgKiBcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHVibGljIGxjOiBMb2NhbGl6YXRpb25TZXJ2aWNlLCBAT3B0aW9uYWwoKSBAU2VsZigpIG5nQ29udHJvbDogTmdDb250cm9sLCBAT3B0aW9uYWwoKSBASW5qZWN0KE5HX1ZBTElEQVRPUlMpIF92YWxpZGF0b3JzOiBBcnJheTxhbnk+LCBAT3B0aW9uYWwoKSBhYzogQWNjZXNzQ29udHJvbFNlcnZpY2UsIEBPcHRpb25hbCgpIEFwcENvbnRleHQ6IENvbXBvbmVudENvbnRleHQsIEBPcHRpb25hbCgpIEBJbmplY3QoQUNPX0NVU1RPTUtFWSkgQUNPX0NVU1RPTUtFWTogc3RyaW5nKSB7XHJcbiAgICAgICAgc3VwZXIoY2RyLCBuZ0NvbnRyb2wsIF92YWxpZGF0b3JzLCBhYywgQXBwQ29udGV4dCwgQUNPX0NVU1RPTUtFWSk7XHJcblxyXG4gICAgICAgIC8vIERlZmF1bHQgZGVpIHNldHRpbmdzIHBlciBldml0YXJlIGNoZSBzaWFubyBtYWkgbnVsbGksIGFsdHJpbWVudGkgaWwgY2F6em8gZGkgQ3VwcGFMYWIgc2FsdGEgaW4gYXJhaWEgY2hlIMOoIHZlcmFtZW50ZSB1bmEgYmVsbGV6emFcclxuICAgICAgICB0aGlzLmV2YWx1YXRlU2V0dGluZ3MoZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYXN5bmMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgICAgIGNvbnN0IG5ld1NvdXJjZSA9IGNoYW5nZXNbXCJTb3VyY2VcIl07XHJcbiAgICAgICAgaWYgKG5ld1NvdXJjZSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMudHJ5QmluZFNvdXJjZURpc3BsYXkoKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuUmViaW5kTW9kZWxBZnRlclNvdXJjZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlKHRoaXMuVG1wTW9kZWwpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5SZWJpbmRNb2RlbEFmdGVyU291cmNlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHJlYWRvbmx5ID0gY2hhbmdlc1tcIlJlYWRvbmx5XCJdO1xyXG4gICAgICAgIHRoaXMuZXZhbHVhdGVTZXR0aW5ncyhyZWFkb25seSA/IHJlYWRvbmx5LmN1cnJlbnRWYWx1ZSA/PyBmYWxzZSA6IHRoaXMuUmVhZG9ubHkgPz8gZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2NyaXZlIGkgbnVvdmkgc2V0dGluZ3MgcGVyIGlsIGNvbXBvbmVudGVcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBkaXNhYmxlZCBJbmRpY2Egc2UgaWwgY29tcG9uZW50ZSBkZXYnZXNzZXJlIGRpc2FiaWxpdGF0byBvIG1lbm9cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBldmFsdWF0ZVNldHRpbmdzKGRpc2FibGVkOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5TZXR0aW5ncyA9IHtcclxuICAgICAgICAgICAgc2VsZWN0QWxsVGV4dDogdGhpcy5sYy5sb2MoXCJTZWxlY3QgZXZlcnl0aGluZ1wiKSxcclxuICAgICAgICAgICAgdW5TZWxlY3RBbGxUZXh0OiB0aGlzLmxjLmxvYyhcIkRlc2VsZWN0IGV2ZXJ5dGhpbmdcIiksXHJcbiAgICAgICAgICAgIHRleHQ6IHRoaXMuU2VsZWN0TGFiZWwgfHwgdGhpcy5sYy5sb2MoXCJTZWxlY3Qgb25lIG9yIG1vcmUgdmFsdWVzLi4uXCIpLFxyXG4gICAgICAgICAgICBlbmFibGVDaGVja0FsbDogdHJ1ZSxcclxuICAgICAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxyXG4gICAgICAgICAgICBsYWJlbEtleTogXCJkZXNjcmlwdGlvblwiLFxyXG4gICAgICAgICAgICB0YWdUb0JvZHk6IGZhbHNlXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgb25Ob3ROdWxsVmFsdWVTZXQoKTogdm9pZCB7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYSBzZSBpbCBjb21vcG5lbnRlIGluIHF1ZXN0aW9uZSDDqCBpbiBncmFkbyBkaSBnZXN0aXJlIG5nQ29udHJvbCBudWxsaS4gXHJcbiAgICAgKiBJbiBxdWVzdG8gY29tcG9uZW50ZSDDqCBub3JtYWxlIGNoZSBzaWEgY29zw6wgcXVpbmRpIHJlc3RpdHVpc2NlIHNlbXBsaWNlbWVudGUgKip0cnVlKipcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59ICoqdHJ1ZSoqIHNlIGdlc3Rpc2NvIG5nQ29udHJvbCBudWxsaSwgKipmYWxzZSoqIGFsdHJpbWVudGlcclxuICAgICAqL1xyXG4gICAgaGFuZGxlTnVsbE5nQ29udHJvbCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmUgT3ZlcnJpZGUgcGVyIGdlc3RpcmUgaW5wdXQgaW4gaW5ncmVzc29cclxuICAgICAqL1xyXG4gICAgd3JpdGVWYWx1ZShvYmo6IGFueVtdKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5UbXBNb2RlbCA9IG9iajtcclxuICAgICAgICBsZXQgdG9QYXNzOiB7IGlkOiBzdHJpbmcsIGl0ZW1OYW1lOiBzdHJpbmcgfVtdID0gW107XHJcblxyXG4gICAgICAgIC8vUXVpIGFycml2YW5vIHNvbG8gZ2xpIGlkLCBvIHtpZDogeCwgZGVzY3JpcHRpb246IHl9IGluIGNhc28gc29ubyBpbiBVc2VLZXlWYWx1ZXMsIFxyXG4gICAgICAgIC8vZGV2byB0aXJhcmUgZnVvcmkgZ2xpIG9nZ2V0dGkgcmVsYXRpdmkgZSBwaWF6emFybGkgY29tZSBsaXN0YSBwZXIgaWwgTW9kZWxcclxuICAgICAgICBpZiAob2JqICYmIG9iai5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIG9iai5mb3JFYWNoKHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IGl0ZW0gPSB0aGlzLkJvdW5kU291cmNlLmZpbmQobyA9PiBvLmlkID09ICh0aGlzLlVzZUtleVZhbHVlcyA/IHQuaWQgOiB0KSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXRlbSlcclxuICAgICAgICAgICAgICAgICAgICB0b1Bhc3MucHVzaChKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGl0ZW0pKSk7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICghdGhpcy5Cb3VuZFNvdXJjZSB8fCB0aGlzLkJvdW5kU291cmNlLmxlbmd0aCA9PSAwKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuUmViaW5kTW9kZWxBZnRlclNvdXJjZSA9IHRydWU7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3VwZXIud3JpdGVWYWx1ZSh0b1Bhc3MpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZSBPdmVycmlkZSBwZXIgZ2VzdGlyZSBpbnB1dCBpbiB1c2NpdGFcclxuICAgICAqL1xyXG4gICAgY2hhbmdlZCgpIHtcclxuICAgICAgICBsZXQgdG9FbWl0ID0gbnVsbDtcclxuICAgICAgICBpZiAoIXRoaXMuVXNlS2V5VmFsdWVzKVxyXG4gICAgICAgICAgICB0b0VtaXQgPSAoPGFueVtdPnRoaXMuTW9kZWwpLm1hcChtID0+IG0uaWQpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdG9FbWl0ID0gKDxhbnlbXT50aGlzLk1vZGVsKS5tYXAobSA9PiAoeyBpZDogbS5pZCwgZGVzY3JpcHRpb246IG0uaXRlbU5hbWUgfSkpO1xyXG5cclxuICAgICAgICBzdXBlci5jaGFuZ2VkKHRvRW1pdCk7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { Injectable, Inject, Optional } from "@angular/core";
|
|
2
|
-
import { LocalizationService } from "@esfaenza/localizations";
|
|
3
|
-
import { FAV_LOCALE } from '../../tokens';
|
|
4
|
-
/**
|
|
5
|
-
* Classe di localizzazione per il componente **FormMultiSelectComponent**
|
|
6
|
-
*/
|
|
7
|
-
export class FormMultiSelectComponentLoc extends LocalizationService {
|
|
8
|
-
/**
|
|
9
|
-
* @ignore
|
|
10
|
-
*/
|
|
11
|
-
constructor(LOC_LOCALE) {
|
|
12
|
-
super(LOC_LOCALE !== null && LOC_LOCALE !== void 0 ? LOC_LOCALE : 'it-IT');
|
|
13
|
-
super.set("en->it", "Select everything", ["Seleziona tutto"]);
|
|
14
|
-
super.set("en->it", "Deselect everything", ["Deseleziona tutto"]);
|
|
15
|
-
super.set("en->it", "Select one or more values...", ["Seleziona uno o più valori..."]);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
FormMultiSelectComponentLoc.decorators = [
|
|
19
|
-
{ type: Injectable }
|
|
20
|
-
];
|
|
21
|
-
FormMultiSelectComponentLoc.ctorParameters = () => [
|
|
22
|
-
{ type: String, decorators: [{ type: Optional }, { type: Inject, args: [FAV_LOCALE,] }] }
|
|
23
|
-
];
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1tdWx0aXNlbGVjdC5jb21wb25lbnQubG9jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvZm9ybXMvZm9ybS1tdWx0aXNlbGVjdC9mb3JtLW11bHRpc2VsZWN0LmNvbXBvbmVudC5sb2MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFMUM7O0dBRUc7QUFFSCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsbUJBQW1CO0lBRWhFOztPQUVHO0lBQ0gsWUFBNEMsVUFBa0I7UUFDMUQsS0FBSyxDQUFDLFVBQVUsYUFBVixVQUFVLGNBQVYsVUFBVSxHQUFJLE9BQU8sQ0FBQyxDQUFDO1FBRTdCLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLG1CQUFtQixFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQzlELEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLHFCQUFxQixFQUFFLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLDhCQUE4QixFQUFFLENBQUMsK0JBQStCLENBQUMsQ0FBQyxDQUFDO0lBQzNGLENBQUM7OztZQVpKLFVBQVU7Ozt5Q0FNTSxRQUFRLFlBQUksTUFBTSxTQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvbG9jYWxpemF0aW9uc1wiO1xyXG5pbXBvcnQgeyBGQVZfTE9DQUxFIH0gZnJvbSAnLi4vLi4vdG9rZW5zJztcclxuXHJcbi8qKlxyXG4gKiBDbGFzc2UgZGkgbG9jYWxpenphemlvbmUgcGVyIGlsIGNvbXBvbmVudGUgKipGb3JtTXVsdGlTZWxlY3RDb21wb25lbnQqKlxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRm9ybU11bHRpU2VsZWN0Q29tcG9uZW50TG9jIGV4dGVuZHMgTG9jYWxpemF0aW9uU2VydmljZSB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoRkFWX0xPQ0FMRSkgTE9DX0xPQ0FMRTogc3RyaW5nKSB7XHJcbiAgICAgICAgc3VwZXIoTE9DX0xPQ0FMRSA/PyAnaXQtSVQnKTtcclxuXHJcbiAgICAgICAgc3VwZXIuc2V0KFwiZW4tPml0XCIsIFwiU2VsZWN0IGV2ZXJ5dGhpbmdcIiwgW1wiU2VsZXppb25hIHR1dHRvXCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJlbi0+aXRcIiwgXCJEZXNlbGVjdCBldmVyeXRoaW5nXCIsIFtcIkRlc2VsZXppb25hIHR1dHRvXCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJlbi0+aXRcIiwgXCJTZWxlY3Qgb25lIG9yIG1vcmUgdmFsdWVzLi4uXCIsIFtcIlNlbGV6aW9uYSB1bm8gbyBwacO5IHZhbG9yaS4uLlwiXSk7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
// Angular
|
|
2
|
-
import { ChangeDetectionStrategy, Component, Inject, Input, Optional, Self, ChangeDetectorRef } from "@angular/core";
|
|
3
|
-
import { NG_VALIDATORS, NgControl } from "@angular/forms";
|
|
4
|
-
// Configurazioni
|
|
5
|
-
import { LocalizationService } from "@esfaenza/localizations";
|
|
6
|
-
import { AccessControlService, ComponentContext } from '@esfaenza/access-control';
|
|
7
|
-
import { ACO_CUSTOMKEY } from '../../tokens';
|
|
8
|
-
// Applicazione
|
|
9
|
-
import { BaseFormControl } from "../base-form-control";
|
|
10
|
-
import { FormSelectComponentLoc } from "./form-select.component.loc";
|
|
11
|
-
/**
|
|
12
|
-
* Componente che permette di selezionare un valore da una lista di valori disponibili
|
|
13
|
-
*/
|
|
14
|
-
export class FormSelectComponent extends BaseFormControl {
|
|
15
|
-
/**
|
|
16
|
-
* Costruttore
|
|
17
|
-
*
|
|
18
|
-
* @ignore
|
|
19
|
-
*/
|
|
20
|
-
constructor(cdr, lc, ngControl, _validators, ac, AppContext, ACO_CUSTOMKEY) {
|
|
21
|
-
super(cdr, ngControl, _validators, ac, AppContext, ACO_CUSTOMKEY);
|
|
22
|
-
this.lc = lc;
|
|
23
|
-
/**
|
|
24
|
-
* Permette di specificare il testo della Label flottante material-style
|
|
25
|
-
*/
|
|
26
|
-
this.SelectLabel = "";
|
|
27
|
-
/**
|
|
28
|
-
* Permette al componente di considerare questo valore come "valore placeholder"
|
|
29
|
-
*
|
|
30
|
-
* Si consiglia di mantenere il default
|
|
31
|
-
*/
|
|
32
|
-
this.PlaceholderValue = '';
|
|
33
|
-
/**
|
|
34
|
-
* Override del placeholder per select requried
|
|
35
|
-
*/
|
|
36
|
-
this.RequiredPlaceholder = null;
|
|
37
|
-
/**
|
|
38
|
-
* Permette al componente di considerare questo valore come "valore vuoto"
|
|
39
|
-
*
|
|
40
|
-
* Si consiglia di mantenere il default
|
|
41
|
-
*/
|
|
42
|
-
this.EmptyFieldValue = '-2';
|
|
43
|
-
/**
|
|
44
|
-
* Se **true** rimuove il simbolino di validazione (croce rossa o tick verde)
|
|
45
|
-
*/
|
|
46
|
-
this.ShowValidationSymbol = true;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* @ignore
|
|
50
|
-
*/
|
|
51
|
-
ngOnChanges(changes) {
|
|
52
|
-
let newSource = changes["Source"];
|
|
53
|
-
if (!newSource)
|
|
54
|
-
return;
|
|
55
|
-
let curr = newSource.currentValue;
|
|
56
|
-
let prev = newSource.previousValue;
|
|
57
|
-
// Se manca curr vuol dire che non ho un valore e posso ignorare (alla peggio deve arrivarmi un array vuoto)
|
|
58
|
-
if (!curr)
|
|
59
|
-
return;
|
|
60
|
-
// Se manca prev vuol dire che è la prima assegnazione, lo considero un array vuoto e proseguo... ogni tanto viene chiamato una sola volta
|
|
61
|
-
// ogni tanto viene chiamato due volte... è un pelo arbitrario ma vabbè
|
|
62
|
-
if (!prev)
|
|
63
|
-
prev = [];
|
|
64
|
-
// Considero di aver ricevuto una nuova sorgente se:
|
|
65
|
-
// 1: La sorgente nuova ha un numero di elementi diverso dalla sorgente vecchia
|
|
66
|
-
// 2: Sia la sorgente nuova che vecchia hanno almeno un elemento e l'id del primo elemento della sorgente nuova è diverso dall'id del primo elemento della sorgente vecchia
|
|
67
|
-
if (newSource && (curr.length != prev.length || (curr.length > 0 && curr[0][this.IdField] != prev[0][this.IdField]))) {
|
|
68
|
-
/*
|
|
69
|
-
* NGBUG:
|
|
70
|
-
* Uso questo escamotage per distruggere il val-select e ricrearlo
|
|
71
|
-
* Purtroppo una volta bindato a una sorgente, cambiargliela sotto significa mandare in palla material
|
|
72
|
-
* che si mette a far floattare la label anche se il valore e' vuoto
|
|
73
|
-
* Distruggendo il componente e ricreandolo material riparte da 0 e non da' problemi.
|
|
74
|
-
* Ovviamente lo faccio solo quando ho una SelectLabel, altrimenti non ho problemi di floattamenti
|
|
75
|
-
*/
|
|
76
|
-
if (!this.SourceFirstBind && this.SelectLabel) {
|
|
77
|
-
this.BoundSource = null;
|
|
78
|
-
setTimeout(() => { this.tryBindSourceDisplay(); this.cdr.detectChanges(); });
|
|
79
|
-
}
|
|
80
|
-
else
|
|
81
|
-
this.tryBindSourceDisplay();
|
|
82
|
-
this.cdr.markForCheck();
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* @ignore
|
|
87
|
-
*/
|
|
88
|
-
onNotNullValueSet() { }
|
|
89
|
-
}
|
|
90
|
-
FormSelectComponent.decorators = [
|
|
91
|
-
{ type: Component, args: [{
|
|
92
|
-
selector: "form-select",
|
|
93
|
-
providers: [{ provide: LocalizationService, useClass: FormSelectComponentLoc }],
|
|
94
|
-
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\r\n <!-- Select vuota per quando non ho Sorgenti dati da cui selezionare. Uguale identica alla piena ma senza option\r\n Purtroppo devono essere due componenti distinti perch\u00E9 una select una volta creata non riesce pi\u00F9 ad adattarsi ai cambi di options -->\r\n <val-select *ngIf=\"!BoundSource || BoundSource.length == 0\"\r\n [required]=\"Required ? 'required' : null\"\r\n [noValidate]=\"!Validation\"\r\n [readonly]=\"Readonly\"\r\n [forceInvalid]=\"ForcedError\"\r\n [label]=\"SelectLabel\"\r\n [validationFailed]=\"FailedValidationMessage\"\r\n [placeholder]=\"Required ? ((RequiredPlaceholder != null ? RequiredPlaceholder : ('Select' | localize : lc) + '...')) : Placeholder\"\r\n [placeHolderValue]=\"PlaceholderValue\"\r\n [submitted]=\"Form?.submitted\"\r\n [emptyFieldValue]=\"Required || Placeholder || SelectLabel ? EmptyFieldValue : ''\"\r\n [(ngModel)]=\"Model\"\r\n [showValidationSymbol]=\"ShowValidationSymbol\"\r\n name=\"{{GeneratedName}}\"\r\n (inputChange)=\"Model = $event == EmptyFieldValue ? (Required? PlaceholderValue : '') : $event; changed();\"\r\n #validationControl=\"ngModel\">\r\n </val-select>\r\n\r\n <!-- Select vera e propria per quando arrivano i dati -->\r\n <val-select *ngIf=\"BoundSource && BoundSource.length > 0\"\r\n [required]=\"Required ? 'required' : null\"\r\n [noValidate]=\"!Validation\"\r\n [readonly]=\"Readonly\"\r\n [forceInvalid]=\"ForcedError\"\r\n [label]=\"SelectLabel\"\r\n [validationFailed]=\"FailedValidationMessage\"\r\n [showValidationSymbol]=\"ShowValidationSymbol\"\r\n [placeholder]=\"Required ? ((RequiredPlaceholder != null ? RequiredPlaceholder : ('Select' | localize : lc) + '...')) : Placeholder\"\r\n [placeHolderValue]=\"PlaceholderValue\"\r\n [submitted]=\"Form?.submitted\"\r\n [emptyFieldValue]=\"Required || Placeholder || SelectLabel ? EmptyFieldValue : ''\"\r\n [(ngModel)]=\"Model\"\r\n name=\"{{GeneratedName}}\"\r\n (inputChange)=\"Model = $event == EmptyFieldValue ? (Required? PlaceholderValue : '') : $event; changed();\"\r\n #validationControl=\"ngModel\">\r\n <option *ngFor=\"let obj of BoundSource\" [value]=\"obj.id\">{{obj.description}}</option>\r\n </val-select>\r\n</ng-template>",
|
|
95
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
|
96
|
-
},] }
|
|
97
|
-
];
|
|
98
|
-
FormSelectComponent.ctorParameters = () => [
|
|
99
|
-
{ type: ChangeDetectorRef },
|
|
100
|
-
{ type: LocalizationService },
|
|
101
|
-
{ type: NgControl, decorators: [{ type: Optional }, { type: Self }] },
|
|
102
|
-
{ type: Array, decorators: [{ type: Optional }, { type: Inject, args: [NG_VALIDATORS,] }] },
|
|
103
|
-
{ type: AccessControlService, decorators: [{ type: Optional }] },
|
|
104
|
-
{ type: ComponentContext, decorators: [{ type: Optional }] },
|
|
105
|
-
{ type: String, decorators: [{ type: Optional }, { type: Inject, args: [ACO_CUSTOMKEY,] }] }
|
|
106
|
-
];
|
|
107
|
-
FormSelectComponent.propDecorators = {
|
|
108
|
-
SelectLabel: [{ type: Input }],
|
|
109
|
-
PlaceholderValue: [{ type: Input }],
|
|
110
|
-
RequiredPlaceholder: [{ type: Input }],
|
|
111
|
-
EmptyFieldValue: [{ type: Input }],
|
|
112
|
-
ShowValidationSymbol: [{ type: Input }]
|
|
113
|
-
};
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvZm9ybXMvZm9ybS1zZWxlY3QvZm9ybS1zZWxlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBaUIsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEksT0FBTyxFQUF3QixhQUFhLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEYsaUJBQWlCO0FBQ2pCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0MsZUFBZTtBQUNmLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUVyRTs7R0FFRztBQU9ILE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxlQUFlO0lBK0JwRDs7OztPQUlHO0lBQ0gsWUFBWSxHQUFzQixFQUFTLEVBQXVCLEVBQXNCLFNBQW9CLEVBQXFDLFdBQXVCLEVBQWMsRUFBd0IsRUFBYyxVQUE0QixFQUFxQyxhQUFxQjtRQUM5UyxLQUFLLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUQzQixPQUFFLEdBQUYsRUFBRSxDQUFxQjtRQWxDbEU7O1dBRUc7UUFDTSxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUVsQzs7OztXQUlHO1FBQ00scUJBQWdCLEdBQVcsRUFBRSxDQUFDO1FBRXZDOztXQUVHO1FBQ00sd0JBQW1CLEdBQVcsSUFBSSxDQUFDO1FBRTVDOzs7O1dBSUc7UUFDTSxvQkFBZSxHQUFXLElBQUksQ0FBQztRQUV4Qzs7V0FFRztRQUNNLHlCQUFvQixHQUFZLElBQUksQ0FBQztJQVM5QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxXQUFXLENBQUMsT0FBc0I7UUFDckMsSUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xDLElBQUcsQ0FBQyxTQUFTO1lBQ1QsT0FBTztRQUVYLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUM7UUFDbEMsSUFBSSxJQUFJLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQztRQUVuQyw0R0FBNEc7UUFDNUcsSUFBSSxDQUFDLElBQUk7WUFDTCxPQUFPO1FBRVgsMElBQTBJO1FBQzFJLHVFQUF1RTtRQUN2RSxJQUFJLENBQUMsSUFBSTtZQUNMLElBQUksR0FBRyxFQUFFLENBQUM7UUFFZCxvREFBb0Q7UUFDcEQsK0VBQStFO1FBQy9FLDJLQUEySztRQUMzSyxJQUFJLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDbEg7Ozs7Ozs7ZUFPRztZQUNILElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQzNDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUN4QixVQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDaEY7O2dCQUVHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBRWhDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDM0I7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxpQkFBaUIsS0FBVyxDQUFDOzs7WUE1RmhDLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsYUFBYTtnQkFDdkIsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLENBQUM7Z0JBQy9FLCtyR0FBeUM7Z0JBQ3pDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2FBQ2xEOzs7WUFwQjBGLGlCQUFpQjtZQUluRyxtQkFBbUI7WUFIa0IsU0FBUyx1QkF3RGtCLFFBQVEsWUFBSSxJQUFJO1lBQXlFLEtBQUssdUJBQXBELFFBQVEsWUFBSSxNQUFNLFNBQUMsYUFBYTtZQXBEMUksb0JBQW9CLHVCQW9Ea0osUUFBUTtZQXBEeEosZ0JBQWdCLHVCQW9Ec0ssUUFBUTt5Q0FBa0MsUUFBUSxZQUFJLE1BQU0sU0FBQyxhQUFhOzs7MEJBL0IxUixLQUFLOytCQU9MLEtBQUs7a0NBS0wsS0FBSzs4QkFPTCxLQUFLO21DQUtMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEluamVjdCwgSW5wdXQsIE9wdGlvbmFsLCBTZWxmLCBTaW1wbGVDaGFuZ2VzLCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxJREFUT1JTLCBOZ0NvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbi8vIENvbmZpZ3VyYXppb25pXHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2xvY2FsaXphdGlvbnNcIjtcclxuaW1wb3J0IHsgQWNjZXNzQ29udHJvbFNlcnZpY2UsIENvbXBvbmVudENvbnRleHQgfSBmcm9tICdAZXNmYWVuemEvYWNjZXNzLWNvbnRyb2wnO1xyXG5pbXBvcnQgeyBBQ09fQ1VTVE9NS0VZIH0gZnJvbSAnLi4vLi4vdG9rZW5zJztcclxuXHJcbi8vIEFwcGxpY2F6aW9uZVxyXG5pbXBvcnQgeyBCYXNlRm9ybUNvbnRyb2wgfSBmcm9tIFwiLi4vYmFzZS1mb3JtLWNvbnRyb2xcIjtcclxuaW1wb3J0IHsgRm9ybVNlbGVjdENvbXBvbmVudExvYyB9IGZyb20gXCIuL2Zvcm0tc2VsZWN0LmNvbXBvbmVudC5sb2NcIjtcclxuXHJcbi8qKlxyXG4gKiBDb21wb25lbnRlIGNoZSBwZXJtZXR0ZSBkaSBzZWxlemlvbmFyZSB1biB2YWxvcmUgZGEgdW5hIGxpc3RhIGRpIHZhbG9yaSBkaXNwb25pYmlsaVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJmb3JtLXNlbGVjdFwiLFxyXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBMb2NhbGl6YXRpb25TZXJ2aWNlLCB1c2VDbGFzczogRm9ybVNlbGVjdENvbXBvbmVudExvYyB9XSxcclxuICAgIHRlbXBsYXRlVXJsOiBcImZvcm0tc2VsZWN0LmNvbXBvbmVudC5odG1sXCIsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybVNlbGVjdENvbXBvbmVudCBleHRlbmRzIEJhc2VGb3JtQ29udHJvbCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFBlcm1ldHRlIGRpIHNwZWNpZmljYXJlIGlsIHRlc3RvIGRlbGxhIExhYmVsIGZsb3R0YW50ZSBtYXRlcmlhbC1zdHlsZVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBTZWxlY3RMYWJlbDogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFBlcm1ldHRlIGFsIGNvbXBvbmVudGUgZGkgY29uc2lkZXJhcmUgcXVlc3RvIHZhbG9yZSBjb21lIFwidmFsb3JlIHBsYWNlaG9sZGVyXCJcclxuICAgICAqIFxyXG4gICAgICogU2kgY29uc2lnbGlhIGRpIG1hbnRlbmVyZSBpbCBkZWZhdWx0XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIFBsYWNlaG9sZGVyVmFsdWU6IHN0cmluZyA9ICcnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogT3ZlcnJpZGUgZGVsIHBsYWNlaG9sZGVyIHBlciBzZWxlY3QgcmVxdXJpZWRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgUmVxdWlyZWRQbGFjZWhvbGRlcjogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFBlcm1ldHRlIGFsIGNvbXBvbmVudGUgZGkgY29uc2lkZXJhcmUgcXVlc3RvIHZhbG9yZSBjb21lIFwidmFsb3JlIHZ1b3RvXCJcclxuICAgICAqIFxyXG4gICAgICogU2kgY29uc2lnbGlhIGRpIG1hbnRlbmVyZSBpbCBkZWZhdWx0XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIEVtcHR5RmllbGRWYWx1ZTogc3RyaW5nID0gJy0yJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNlICoqdHJ1ZSoqIHJpbXVvdmUgaWwgc2ltYm9saW5vIGRpIHZhbGlkYXppb25lIChjcm9jZSByb3NzYSBvIHRpY2sgdmVyZGUpXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIFNob3dWYWxpZGF0aW9uU3ltYm9sOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvc3RydXR0b3JlIFxyXG4gICAgICogXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHB1YmxpYyBsYzogTG9jYWxpemF0aW9uU2VydmljZSwgQE9wdGlvbmFsKCkgQFNlbGYoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbCwgQE9wdGlvbmFsKCkgQEluamVjdChOR19WQUxJREFUT1JTKSBfdmFsaWRhdG9yczogQXJyYXk8YW55PiwgQE9wdGlvbmFsKCkgYWM6IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlLCBAT3B0aW9uYWwoKSBBcHBDb250ZXh0OiBDb21wb25lbnRDb250ZXh0LCBAT3B0aW9uYWwoKSBASW5qZWN0KEFDT19DVVNUT01LRVkpIEFDT19DVVNUT01LRVk6IHN0cmluZykge1xyXG4gICAgICAgIHN1cGVyKGNkciwgbmdDb250cm9sLCBfdmFsaWRhdG9ycywgYWMsIEFwcENvbnRleHQsIEFDT19DVVNUT01LRVkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgICAgIGxldCBuZXdTb3VyY2UgPSBjaGFuZ2VzW1wiU291cmNlXCJdO1xyXG4gICAgICAgIGlmKCFuZXdTb3VyY2UpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgbGV0IGN1cnIgPSBuZXdTb3VyY2UuY3VycmVudFZhbHVlO1xyXG4gICAgICAgIGxldCBwcmV2ID0gbmV3U291cmNlLnByZXZpb3VzVmFsdWU7XHJcblxyXG4gICAgICAgIC8vIFNlIG1hbmNhIGN1cnIgdnVvbCBkaXJlIGNoZSBub24gaG8gdW4gdmFsb3JlIGUgcG9zc28gaWdub3JhcmUgKGFsbGEgcGVnZ2lvIGRldmUgYXJyaXZhcm1pIHVuIGFycmF5IHZ1b3RvKVxyXG4gICAgICAgIGlmICghY3VycilcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICAvLyBTZSBtYW5jYSBwcmV2IHZ1b2wgZGlyZSBjaGUgw6ggbGEgcHJpbWEgYXNzZWduYXppb25lLCBsbyBjb25zaWRlcm8gdW4gYXJyYXkgdnVvdG8gZSBwcm9zZWd1by4uLiBvZ25pIHRhbnRvIHZpZW5lIGNoaWFtYXRvIHVuYSBzb2xhIHZvbHRhXHJcbiAgICAgICAgLy8gb2duaSB0YW50byB2aWVuZSBjaGlhbWF0byBkdWUgdm9sdGUuLi4gw6ggdW4gcGVsbyBhcmJpdHJhcmlvIG1hIHZhYmLDqFxyXG4gICAgICAgIGlmICghcHJldilcclxuICAgICAgICAgICAgcHJldiA9IFtdO1xyXG5cclxuICAgICAgICAvLyBDb25zaWRlcm8gZGkgYXZlciByaWNldnV0byB1bmEgbnVvdmEgc29yZ2VudGUgc2U6XHJcbiAgICAgICAgLy8gMTogTGEgc29yZ2VudGUgbnVvdmEgaGEgdW4gbnVtZXJvIGRpIGVsZW1lbnRpIGRpdmVyc28gZGFsbGEgc29yZ2VudGUgdmVjY2hpYVxyXG4gICAgICAgIC8vIDI6IFNpYSBsYSBzb3JnZW50ZSBudW92YSBjaGUgdmVjY2hpYSBoYW5ubyBhbG1lbm8gdW4gZWxlbWVudG8gZSBsJ2lkIGRlbCBwcmltbyBlbGVtZW50byBkZWxsYSBzb3JnZW50ZSBudW92YSDDqCBkaXZlcnNvIGRhbGwnaWQgZGVsIHByaW1vIGVsZW1lbnRvIGRlbGxhIHNvcmdlbnRlIHZlY2NoaWFcclxuICAgICAgICBpZiAobmV3U291cmNlICYmIChjdXJyLmxlbmd0aCAhPSBwcmV2Lmxlbmd0aCB8fCAoY3Vyci5sZW5ndGggPiAwICYmIGN1cnJbMF1bdGhpcy5JZEZpZWxkXSAhPSBwcmV2WzBdW3RoaXMuSWRGaWVsZF0pKSkge1xyXG4gICAgICAgICAgICAvKlxyXG4gICAgICAgICAgICAgKiBOR0JVRzpcclxuICAgICAgICAgICAgICogVXNvIHF1ZXN0byBlc2NhbW90YWdlIHBlciBkaXN0cnVnZ2VyZSBpbCB2YWwtc2VsZWN0IGUgcmljcmVhcmxvXHJcbiAgICAgICAgICAgICAqIFB1cnRyb3BwbyB1bmEgdm9sdGEgYmluZGF0byBhIHVuYSBzb3JnZW50ZSwgY2FtYmlhcmdsaWVsYSBzb3R0byBzaWduaWZpY2EgbWFuZGFyZSBpbiBwYWxsYSBtYXRlcmlhbFxyXG4gICAgICAgICAgICAgKiBjaGUgc2kgbWV0dGUgYSBmYXIgZmxvYXR0YXJlIGxhIGxhYmVsIGFuY2hlIHNlIGlsIHZhbG9yZSBlJyB2dW90b1xyXG4gICAgICAgICAgICAgKiBEaXN0cnVnZ2VuZG8gaWwgY29tcG9uZW50ZSBlIHJpY3JlYW5kb2xvIG1hdGVyaWFsIHJpcGFydGUgZGEgMCBlIG5vbiBkYScgcHJvYmxlbWkuXHJcbiAgICAgICAgICAgICAqIE92dmlhbWVudGUgbG8gZmFjY2lvIHNvbG8gcXVhbmRvIGhvIHVuYSBTZWxlY3RMYWJlbCwgYWx0cmltZW50aSBub24gaG8gcHJvYmxlbWkgZGkgZmxvYXR0YW1lbnRpXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuU291cmNlRmlyc3RCaW5kICYmIHRoaXMuU2VsZWN0TGFiZWwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuQm91bmRTb3VyY2UgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IHRoaXMudHJ5QmluZFNvdXJjZURpc3BsYXkoKTsgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpOyB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICB0aGlzLnRyeUJpbmRTb3VyY2VEaXNwbGF5KCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIG9uTm90TnVsbFZhbHVlU2V0KCk6IHZvaWQgeyB9XHJcbn0iXX0=
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { Injectable, Inject, Optional } from "@angular/core";
|
|
2
|
-
import { LocalizationService } from "@esfaenza/localizations";
|
|
3
|
-
import { FAV_LOCALE } from '../../tokens';
|
|
4
|
-
/**
|
|
5
|
-
* Classe di localizzazione per il componente **FormSelectComponent**
|
|
6
|
-
*/
|
|
7
|
-
export class FormSelectComponentLoc extends LocalizationService {
|
|
8
|
-
/**
|
|
9
|
-
* @ignore
|
|
10
|
-
*/
|
|
11
|
-
constructor(LOC_LOCALE) {
|
|
12
|
-
super(LOC_LOCALE !== null && LOC_LOCALE !== void 0 ? LOC_LOCALE : 'it-IT');
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
FormSelectComponentLoc.decorators = [
|
|
16
|
-
{ type: Injectable }
|
|
17
|
-
];
|
|
18
|
-
FormSelectComponentLoc.ctorParameters = () => [
|
|
19
|
-
{ type: String, decorators: [{ type: Optional }, { type: Inject, args: [FAV_LOCALE,] }] }
|
|
20
|
-
];
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zZWxlY3QuY29tcG9uZW50LmxvYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm1zLWFuZC12YWxpZGF0aW9ucy9zcmMvbGliL2Zvcm1zL2Zvcm0tc2VsZWN0L2Zvcm0tc2VsZWN0LmNvbXBvbmVudC5sb2MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFMUM7O0dBRUc7QUFFSCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsbUJBQW1CO0lBRTNEOztPQUVHO0lBQ0gsWUFBNEMsVUFBa0I7UUFDMUQsS0FBSyxDQUFDLFVBQVUsYUFBVixVQUFVLGNBQVYsVUFBVSxHQUFJLE9BQU8sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7OztZQVJKLFVBQVU7Ozt5Q0FNTSxRQUFRLFlBQUksTUFBTSxTQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvbG9jYWxpemF0aW9uc1wiO1xyXG5pbXBvcnQgeyBGQVZfTE9DQUxFIH0gZnJvbSAnLi4vLi4vdG9rZW5zJztcclxuXHJcbi8qKlxyXG4gKiBDbGFzc2UgZGkgbG9jYWxpenphemlvbmUgcGVyIGlsIGNvbXBvbmVudGUgKipGb3JtU2VsZWN0Q29tcG9uZW50KipcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEZvcm1TZWxlY3RDb21wb25lbnRMb2MgZXh0ZW5kcyBMb2NhbGl6YXRpb25TZXJ2aWNlIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgQEluamVjdChGQVZfTE9DQUxFKSBMT0NfTE9DQUxFOiBzdHJpbmcpIHtcclxuICAgICAgICBzdXBlcihMT0NfTE9DQUxFID8/ICdpdC1JVCcpO1xyXG4gICAgfVxyXG59Il19
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
// Angular
|
|
2
|
-
import { ChangeDetectionStrategy, Component, Input } from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* Componente da utilizzare quando l'implementazione dell'input non è disponibile nella libreria,
|
|
5
|
-
* fornisce la struttura standard di un form-component ma l'input vero e proprio viene proiettato dall'esterno
|
|
6
|
-
*/
|
|
7
|
-
export class FormTemplateComponent {
|
|
8
|
-
constructor() {
|
|
9
|
-
/**
|
|
10
|
-
* Indica se l'input è obbligatorio o no
|
|
11
|
-
*/
|
|
12
|
-
this.Required = false;
|
|
13
|
-
/**
|
|
14
|
-
* Mostra un testo a sinistra dell'input, **FormLayout** permettendo
|
|
15
|
-
*/
|
|
16
|
-
this.Label = "";
|
|
17
|
-
/**
|
|
18
|
-
* Utilizza o meno il Layout di un form (Label con input di fianco), se false mostra solo l'input
|
|
19
|
-
*/
|
|
20
|
-
this.FormLayout = true;
|
|
21
|
-
/**
|
|
22
|
-
* col-md-X per la label
|
|
23
|
-
*/
|
|
24
|
-
this.LabelColWidth = 4;
|
|
25
|
-
/**
|
|
26
|
-
* col-md-X per l'input
|
|
27
|
-
*/
|
|
28
|
-
this.InputColWidth = 8;
|
|
29
|
-
/**
|
|
30
|
-
* Indica se è l'ultimo componente di un form (serve per rimuovere il margine finale)
|
|
31
|
-
*/
|
|
32
|
-
this.Last = false;
|
|
33
|
-
/**
|
|
34
|
-
* Classe extra per il form-group in cui viene wrappato l'input
|
|
35
|
-
*/
|
|
36
|
-
this.FormGroupClass = "";
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Permette di settare in una volta solo gli input LabelColWidth e InputColWidth, basta scriverlo con la sintassi "X Y"
|
|
40
|
-
*/
|
|
41
|
-
set LabelInputRatio(input) {
|
|
42
|
-
var ratio = input.split(/\s/);
|
|
43
|
-
this.LabelColWidth = parseInt(ratio[0]);
|
|
44
|
-
this.InputColWidth = parseInt(ratio[1]);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
FormTemplateComponent.decorators = [
|
|
48
|
-
{ type: Component, args: [{
|
|
49
|
-
selector: "form-template",
|
|
50
|
-
template: "<ng-container *ngIf=\"!FormLayout\">\r\n <ng-content></ng-content>\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-content></ng-content>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n</div>",
|
|
51
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
|
52
|
-
},] }
|
|
53
|
-
];
|
|
54
|
-
FormTemplateComponent.propDecorators = {
|
|
55
|
-
Required: [{ type: Input }],
|
|
56
|
-
Label: [{ type: Input }],
|
|
57
|
-
FormLayout: [{ type: Input }],
|
|
58
|
-
LabelColWidth: [{ type: Input }],
|
|
59
|
-
InputColWidth: [{ type: Input }],
|
|
60
|
-
Last: [{ type: Input }],
|
|
61
|
-
FormGroupClass: [{ type: Input }],
|
|
62
|
-
LabelInputRatio: [{ type: Input }]
|
|
63
|
-
};
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS10ZW1wbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3Jtcy1hbmQtdmFsaWRhdGlvbnMvc3JjL2xpYi9mb3Jtcy9mb3JtLXRlbXBsYXRlL2Zvcm0tdGVtcGxhdGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRTs7O0dBR0c7QUFNSCxNQUFNLE9BQU8scUJBQXFCO0lBTGxDO1FBT0k7O1dBRUc7UUFDTSxhQUFRLEdBQVksS0FBSyxDQUFDO1FBRW5DOztXQUVHO1FBQ00sVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUU1Qjs7V0FFRztRQUNNLGVBQVUsR0FBWSxJQUFJLENBQUM7UUFFcEM7O1dBRUc7UUFDTSxrQkFBYSxHQUFXLENBQUMsQ0FBQztRQUVuQzs7V0FFRztRQUNNLGtCQUFhLEdBQVcsQ0FBQyxDQUFDO1FBRW5DOztXQUVHO1FBQ00sU0FBSSxHQUFZLEtBQUssQ0FBQztRQUUvQjs7V0FFRztRQUNNLG1CQUFjLEdBQVcsRUFBRSxDQUFDO0lBVXpDLENBQUM7SUFSRzs7T0FFRztJQUNILElBQWEsZUFBZSxDQUFDLEtBQWE7UUFDdEMsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDOzs7WUFqREosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxlQUFlO2dCQUN6QiwyY0FBMkM7Z0JBQzNDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2FBQ2xEOzs7dUJBTUksS0FBSztvQkFLTCxLQUFLO3lCQUtMLEtBQUs7NEJBS0wsS0FBSzs0QkFLTCxLQUFLO21CQUtMLEtBQUs7NkJBS0wsS0FBSzs4QkFLTCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vKipcclxuICogQ29tcG9uZW50ZSBkYSB1dGlsaXp6YXJlIHF1YW5kbyBsJ2ltcGxlbWVudGF6aW9uZSBkZWxsJ2lucHV0IG5vbiDDqCBkaXNwb25pYmlsZSBuZWxsYSBsaWJyZXJpYSwgIFxyXG4gKiBmb3JuaXNjZSBsYSBzdHJ1dHR1cmEgc3RhbmRhcmQgZGkgdW4gZm9ybS1jb21wb25lbnQgbWEgbCdpbnB1dCB2ZXJvIGUgcHJvcHJpbyB2aWVuZSBwcm9pZXR0YXRvIGRhbGwnZXN0ZXJub1xyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJmb3JtLXRlbXBsYXRlXCIsXHJcbiAgICB0ZW1wbGF0ZVVybDogXCJmb3JtLXRlbXBsYXRlLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybVRlbXBsYXRlQ29tcG9uZW50IHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYSBzZSBsJ2lucHV0IMOoIG9iYmxpZ2F0b3JpbyBvIG5vXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIFJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNb3N0cmEgdW4gdGVzdG8gYSBzaW5pc3RyYSBkZWxsJ2lucHV0LCAqKkZvcm1MYXlvdXQqKiBwZXJtZXR0ZW5kb1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBMYWJlbDogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFV0aWxpenphIG8gbWVubyBpbCBMYXlvdXQgZGkgdW4gZm9ybSAoTGFiZWwgY29uIGlucHV0IGRpIGZpYW5jbyksIHNlIGZhbHNlIG1vc3RyYSBzb2xvIGwnaW5wdXRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgRm9ybUxheW91dDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBjb2wtbWQtWCBwZXIgbGEgbGFiZWxcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgTGFiZWxDb2xXaWR0aDogbnVtYmVyID0gNDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGNvbC1tZC1YIHBlciBsJ2lucHV0XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIElucHV0Q29sV2lkdGg6IG51bWJlciA9IDg7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2Egc2Ugw6ggbCd1bHRpbW8gY29tcG9uZW50ZSBkaSB1biBmb3JtIChzZXJ2ZSBwZXIgcmltdW92ZXJlIGlsIG1hcmdpbmUgZmluYWxlKVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBMYXN0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDbGFzc2UgZXh0cmEgcGVyIGlsIGZvcm0tZ3JvdXAgaW4gY3VpIHZpZW5lIHdyYXBwYXRvIGwnaW5wdXRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgRm9ybUdyb3VwQ2xhc3M6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQZXJtZXR0ZSBkaSBzZXR0YXJlIGluIHVuYSB2b2x0YSBzb2xvIGdsaSBpbnB1dCBMYWJlbENvbFdpZHRoIGUgSW5wdXRDb2xXaWR0aCwgYmFzdGEgc2NyaXZlcmxvIGNvbiBsYSBzaW50YXNzaSBcIlggWVwiXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHNldCBMYWJlbElucHV0UmF0aW8oaW5wdXQ6IHN0cmluZykge1xyXG4gICAgICAgIHZhciByYXRpbyA9IGlucHV0LnNwbGl0KC9cXHMvKTtcclxuICAgICAgICB0aGlzLkxhYmVsQ29sV2lkdGggPSBwYXJzZUludChyYXRpb1swXSk7XHJcbiAgICAgICAgdGhpcy5JbnB1dENvbFdpZHRoID0gcGFyc2VJbnQocmF0aW9bMV0pO1xyXG4gICAgfVxyXG59Il19
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
// Angular
|
|
2
|
-
import { NG_VALIDATORS, NgControl } from "@angular/forms";
|
|
3
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, Optional, Self } from "@angular/core";
|
|
4
|
-
// Applicazione
|
|
5
|
-
import { BaseFormControl } from "../base-form-control";
|
|
6
|
-
// Configurazioni
|
|
7
|
-
import { AccessControlService, ComponentContext } from '@esfaenza/access-control';
|
|
8
|
-
import { ACO_CUSTOMKEY } from '../../tokens';
|
|
9
|
-
/**
|
|
10
|
-
* Componente che presenta una casella di testo tipicamente utilizzata per scrivere delle note o del log breve
|
|
11
|
-
*/
|
|
12
|
-
export class FormTextareaComponent extends BaseFormControl {
|
|
13
|
-
/**
|
|
14
|
-
* Costruttore
|
|
15
|
-
*
|
|
16
|
-
* @ignore
|
|
17
|
-
*/
|
|
18
|
-
constructor(cdr, ngControl, _validators, ac, AppContext, ACO_CUSTOMKEY) {
|
|
19
|
-
super(cdr, ngControl, _validators, ac, AppContext, ACO_CUSTOMKEY);
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* @ignore
|
|
23
|
-
*/
|
|
24
|
-
onNotNullValueSet() { }
|
|
25
|
-
}
|
|
26
|
-
FormTextareaComponent.decorators = [
|
|
27
|
-
{ type: Component, args: [{
|
|
28
|
-
selector: "form-textarea",
|
|
29
|
-
template: "<div 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 <val-textarea [noValidate]=\"!Validation\"\r\n [submitted]=\"Form?.submitted\"\r\n [forceInvalid]=\"ForcedError\"\r\n [rows]=\"Rows\"\r\n [readonly]=\"Readonly\"\r\n [class]=\"Readonly ? 'app-bg-lightgrey app-no-resize' : 'app-no-resize'\"\r\n [(ngModel)]=\"Model\"\r\n name=\"{{GeneratedName}}\"\r\n autocomplete=\"off\"\r\n [placeholder]=\"Placeholder\"\r\n [validationFailed]=\"FailedValidationMessage\"\r\n #validationControl=\"ngModel\"\r\n (inputChange)=\"changed();\">\r\n </val-textarea>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n</div>",
|
|
30
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
|
31
|
-
},] }
|
|
32
|
-
];
|
|
33
|
-
FormTextareaComponent.ctorParameters = () => [
|
|
34
|
-
{ type: ChangeDetectorRef },
|
|
35
|
-
{ type: NgControl, decorators: [{ type: Optional }, { type: Self }] },
|
|
36
|
-
{ type: Array, decorators: [{ type: Optional }, { type: Inject, args: [NG_VALIDATORS,] }] },
|
|
37
|
-
{ type: AccessControlService, decorators: [{ type: Optional }] },
|
|
38
|
-
{ type: ComponentContext, decorators: [{ type: Optional }] },
|
|
39
|
-
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [ACO_CUSTOMKEY,] }] }
|
|
40
|
-
];
|
|
41
|
-
FormTextareaComponent.propDecorators = {
|
|
42
|
-
Rows: [{ type: Input }]
|
|
43
|
-
};
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS10ZXh0YXJlYS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3Jtcy1hbmQtdmFsaWRhdGlvbnMvc3JjL2xpYi9mb3Jtcy9mb3JtLXRleHRhcmVhL2Zvcm0tdGV4dGFyZWEuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQXdCLGFBQWEsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVySCxlQUFlO0FBQ2YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXZELGlCQUFpQjtBQUNqQixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTdDOztHQUVHO0FBTUgsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGVBQWU7SUFPdEQ7Ozs7T0FJRztJQUNILFlBQVksR0FBc0IsRUFBc0IsU0FBb0IsRUFBcUMsV0FBdUIsRUFBYyxFQUF3QixFQUFjLFVBQTRCLEVBQW9DLGFBQWE7UUFDclEsS0FBSyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUMsYUFBYSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsaUJBQWlCLEtBQVcsQ0FBQzs7O1lBeEJoQyxTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLGVBQWU7Z0JBQ3pCLCtpQ0FBMkM7Z0JBQzNDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2FBQ2xEOzs7WUFoQmlDLGlCQUFpQjtZQURMLFNBQVMsdUJBOEJkLFFBQVEsWUFBSSxJQUFJO1lBQXlFLEtBQUssdUJBQXBELFFBQVEsWUFBSSxNQUFNLFNBQUMsYUFBYTtZQXZCMUcsb0JBQW9CLHVCQXVCa0gsUUFBUTtZQXZCeEgsZ0JBQWdCLHVCQXVCc0ksUUFBUTs0Q0FBa0MsUUFBUSxZQUFHLE1BQU0sU0FBQyxhQUFhOzs7bUJBUHpQLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxJREFUT1JTLCBOZ0NvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEluamVjdCwgSW5wdXQsIE9wdGlvbmFsLCBTZWxmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbi8vIEFwcGxpY2F6aW9uZVxyXG5pbXBvcnQgeyBCYXNlRm9ybUNvbnRyb2wgfSBmcm9tIFwiLi4vYmFzZS1mb3JtLWNvbnRyb2xcIjtcclxuXHJcbi8vIENvbmZpZ3VyYXppb25pXHJcbmltcG9ydCB7IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlLCBDb21wb25lbnRDb250ZXh0IH0gZnJvbSAnQGVzZmFlbnphL2FjY2Vzcy1jb250cm9sJztcclxuaW1wb3J0IHsgQUNPX0NVU1RPTUtFWSB9IGZyb20gJy4uLy4uL3Rva2Vucyc7XHJcblxyXG4vKipcclxuICogQ29tcG9uZW50ZSBjaGUgcHJlc2VudGEgdW5hIGNhc2VsbGEgZGkgdGVzdG8gdGlwaWNhbWVudGUgdXRpbGl6emF0YSBwZXIgc2NyaXZlcmUgZGVsbGUgbm90ZSBvIGRlbCBsb2cgYnJldmVcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwiZm9ybS10ZXh0YXJlYVwiLFxyXG4gICAgdGVtcGxhdGVVcmw6IFwiZm9ybS10ZXh0YXJlYS5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1UZXh0YXJlYUNvbXBvbmVudCBleHRlbmRzIEJhc2VGb3JtQ29udHJvbCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE51bWVybyBkaSByaWdoZSBkYSB2aXN1YWxpenphcmUgZGkgZGVmYXVsdFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBSb3dzOiBudW1iZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb3N0cnV0dG9yZSBcclxuICAgICAqIFxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihjZHI6IENoYW5nZURldGVjdG9yUmVmLCBAT3B0aW9uYWwoKSBAU2VsZigpIG5nQ29udHJvbDogTmdDb250cm9sLCBAT3B0aW9uYWwoKSBASW5qZWN0KE5HX1ZBTElEQVRPUlMpIF92YWxpZGF0b3JzOiBBcnJheTxhbnk+LCBAT3B0aW9uYWwoKSBhYzogQWNjZXNzQ29udHJvbFNlcnZpY2UsIEBPcHRpb25hbCgpIEFwcENvbnRleHQ6IENvbXBvbmVudENvbnRleHQsIEBPcHRpb25hbCgpQEluamVjdChBQ09fQ1VTVE9NS0VZKSBBQ09fQ1VTVE9NS0VZKSB7XHJcbiAgICAgICAgc3VwZXIoY2RyLCBuZ0NvbnRyb2wsIF92YWxpZGF0b3JzLCBhYywgQXBwQ29udGV4dCxBQ09fQ1VTVE9NS0VZKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgb25Ob3ROdWxsVmFsdWVTZXQoKTogdm9pZCB7IH1cclxufSJdfQ==
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
// Angular
|
|
2
|
-
import { NG_VALIDATORS, NgControl } from "@angular/forms";
|
|
3
|
-
import { Component, Inject, Optional, Self, Host, Input, ChangeDetectorRef, ChangeDetectionStrategy } from "@angular/core";
|
|
4
|
-
import { NgxMatDateAdapter } from "@angular-material-components/datetime-picker";
|
|
5
|
-
// Esfaenza
|
|
6
|
-
import { AccessControlService, ComponentContext } from '@esfaenza/access-control';
|
|
7
|
-
// Applicazione
|
|
8
|
-
import { BaseFormControl } from "../base-form-control";
|
|
9
|
-
import { ACO_CUSTOMKEY } from '../../tokens';
|
|
10
|
-
/**
|
|
11
|
-
* Componente che identifica la selezione di un orario
|
|
12
|
-
*/
|
|
13
|
-
export class FormTimeComponent extends BaseFormControl {
|
|
14
|
-
/**
|
|
15
|
-
* @ignore
|
|
16
|
-
*/
|
|
17
|
-
constructor(cdr, dateAdapter, ngControl, _validators, ac, AppContext, ACO_CUSTOMKEY) {
|
|
18
|
-
super(cdr, ngControl, _validators, ac, AppContext, ACO_CUSTOMKEY, true);
|
|
19
|
-
this.dateAdapter = dateAdapter;
|
|
20
|
-
/**
|
|
21
|
-
* Mostra o meno gli spinner dove cliccare per aumentare/diminuire le componenti dell'orologio (ore, minuti e secondi)
|
|
22
|
-
*/
|
|
23
|
-
this.ShowSpinners = false;
|
|
24
|
-
/**
|
|
25
|
-
* Imposta lo step (minimo avanzamento) per la cella "ore"
|
|
26
|
-
*/
|
|
27
|
-
this.StepHour = 1;
|
|
28
|
-
/**
|
|
29
|
-
* Imposta lo step (minimo avanzamento) per la cella "minuti"
|
|
30
|
-
*/
|
|
31
|
-
this.StepMinute = 1;
|
|
32
|
-
/**
|
|
33
|
-
* Imposta lo step (minimo avanzamento) per la cella "secondi"
|
|
34
|
-
*/
|
|
35
|
-
this.StepSecond = 5;
|
|
36
|
-
/**
|
|
37
|
-
* Indica se mostrare i secondi o meno
|
|
38
|
-
*/
|
|
39
|
-
this.ShowSeconds = false;
|
|
40
|
-
/**
|
|
41
|
-
* Indica il formato da utilizzare sia in Input che in Output
|
|
42
|
-
*
|
|
43
|
-
* 1. Se date vengono utilizzate le Date di Javascript
|
|
44
|
-
*
|
|
45
|
-
* 2. Se timestring vengono utilizzate stringhe del tipo '00:00:00'
|
|
46
|
-
*
|
|
47
|
-
* 3. Se dayjs viene utilizzato, appunto, dayjs
|
|
48
|
-
*/
|
|
49
|
-
this.InOutFormat = 'timestring';
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* @ignore Override per gestire input in ingresso
|
|
53
|
-
*/
|
|
54
|
-
writeValue(obj) {
|
|
55
|
-
const [hours, minutes, seconds] = (obj || "0:0:0").split(":");
|
|
56
|
-
//Qualsiasi cosa mi arrivi devo ricondurla a un dayjs
|
|
57
|
-
switch (this.InOutFormat) {
|
|
58
|
-
case 'date':
|
|
59
|
-
obj = dayjs(obj);
|
|
60
|
-
break;
|
|
61
|
-
case 'timestring':
|
|
62
|
-
obj = dayjs().hour(hours !== null && hours !== void 0 ? hours : 0).minute(minutes !== null && minutes !== void 0 ? minutes : 0).second(seconds !== null && seconds !== void 0 ? seconds : 0);
|
|
63
|
-
break;
|
|
64
|
-
case 'dayjs':
|
|
65
|
-
obj = obj;
|
|
66
|
-
break;
|
|
67
|
-
}
|
|
68
|
-
super.writeValue(obj);
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* @ignore Override per gestire input in uscita
|
|
72
|
-
*/
|
|
73
|
-
changed() {
|
|
74
|
-
var toEmit = this.dateAdapter.clone(this.Model);
|
|
75
|
-
switch (this.InOutFormat) {
|
|
76
|
-
case 'date':
|
|
77
|
-
toEmit = toEmit.toDate();
|
|
78
|
-
break;
|
|
79
|
-
case 'timestring':
|
|
80
|
-
toEmit = toEmit.format("HH:mm" + (this.ShowSeconds ? ":ss" : ""));
|
|
81
|
-
break;
|
|
82
|
-
case 'dayjs':
|
|
83
|
-
toEmit = toEmit;
|
|
84
|
-
break;
|
|
85
|
-
}
|
|
86
|
-
super.changed(toEmit);
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* @ignore
|
|
90
|
-
*/
|
|
91
|
-
onNotNullValueSet() { }
|
|
92
|
-
}
|
|
93
|
-
FormTimeComponent.decorators = [
|
|
94
|
-
{ type: Component, args: [{
|
|
95
|
-
selector: "form-time",
|
|
96
|
-
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}} m-t-5\">\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\r\n <ngx-mat-timepicker name=\"val-time\" #elementRef #baseInput=\"ngModel\" [(ngModel)]=\"Model\" [disabled]=\"Readonly\"\r\n [showSpinners]=\"ShowSpinners\" [stepHour]=\"StepHour\" [stepMinute]=\"StepMinute\" [stepSecond]=\"StepSecond\"\r\n [showSeconds]=\"ShowSeconds\" (ngModelChange)=\"changed()\" #validationControl=\"ngModel\">\r\n </ngx-mat-timepicker>\r\n\r\n</ng-template>",
|
|
97
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
|
98
|
-
},] }
|
|
99
|
-
];
|
|
100
|
-
FormTimeComponent.ctorParameters = () => [
|
|
101
|
-
{ type: ChangeDetectorRef },
|
|
102
|
-
{ type: NgxMatDateAdapter },
|
|
103
|
-
{ type: NgControl, decorators: [{ type: Optional }, { type: Self }] },
|
|
104
|
-
{ type: Array, decorators: [{ type: Optional }, { type: Host }, { type: Inject, args: [NG_VALIDATORS,] }] },
|
|
105
|
-
{ type: AccessControlService },
|
|
106
|
-
{ type: ComponentContext, decorators: [{ type: Optional }] },
|
|
107
|
-
{ type: String, decorators: [{ type: Optional }, { type: Inject, args: [ACO_CUSTOMKEY,] }] }
|
|
108
|
-
];
|
|
109
|
-
FormTimeComponent.propDecorators = {
|
|
110
|
-
ShowSpinners: [{ type: Input }],
|
|
111
|
-
StepHour: [{ type: Input }],
|
|
112
|
-
StepMinute: [{ type: Input }],
|
|
113
|
-
StepSecond: [{ type: Input }],
|
|
114
|
-
ShowSeconds: [{ type: Input }],
|
|
115
|
-
InOutFormat: [{ type: Input }]
|
|
116
|
-
};
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS10aW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm1zLWFuZC12YWxpZGF0aW9ucy9zcmMvbGliL2Zvcm1zL2Zvcm0tdGltZS9mb3JtLXRpbWUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQXdCLGFBQWEsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0gsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFakYsV0FBVztBQUNYLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRWxGLGVBQWU7QUFDZixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQVE3Qzs7R0FFRztBQU1ILE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxlQUFlO0lBc0NsRDs7T0FFRztJQUNILFlBQVksR0FBc0IsRUFBVSxXQUFtQyxFQUFzQixTQUFvQixFQUE2QyxXQUF1QixFQUFFLEVBQXdCLEVBQWMsVUFBNEIsRUFBcUMsYUFBcUI7UUFDdlQsS0FBSyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRGhDLGdCQUFXLEdBQVgsV0FBVyxDQUF3QjtRQXZDL0U7O1dBRUc7UUFDTSxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUV2Qzs7V0FFRztRQUNNLGFBQVEsR0FBVyxDQUFDLENBQUM7UUFFOUI7O1dBRUc7UUFDTSxlQUFVLEdBQVcsQ0FBQyxDQUFDO1FBRWhDOztXQUVHO1FBQ00sZUFBVSxHQUFXLENBQUMsQ0FBQztRQUVoQzs7V0FFRztRQUNNLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBRXRDOzs7Ozs7OztXQVFHO1FBQ00sZ0JBQVcsR0FBb0MsWUFBWSxDQUFDO0lBT3JFLENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVUsQ0FBQyxHQUFRO1FBRWYsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTlELHFEQUFxRDtRQUNyRCxRQUFRLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDdEIsS0FBSyxNQUFNO2dCQUNQLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2pCLE1BQU07WUFDVixLQUFLLFlBQVk7Z0JBQ2IsR0FBRyxHQUFHLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLGFBQUwsS0FBSyxjQUFMLEtBQUssR0FBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxhQUFQLE9BQU8sY0FBUCxPQUFPLEdBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sYUFBUCxPQUFPLGNBQVAsT0FBTyxHQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUN6RSxNQUFNO1lBQ1YsS0FBSyxPQUFPO2dCQUNSLEdBQUcsR0FBRyxHQUFHLENBQUM7Z0JBQ1YsTUFBTTtTQUNiO1FBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPO1FBQ0gsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWhELFFBQVEsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUN0QixLQUFLLE1BQU07Z0JBQ1AsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDekIsTUFBTTtZQUNWLEtBQUssWUFBWTtnQkFDYixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xFLE1BQU07WUFDVixLQUFLLE9BQU87Z0JBQ1IsTUFBTSxHQUFHLE1BQU0sQ0FBQztnQkFDaEIsTUFBTTtTQUNiO1FBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxpQkFBaUIsS0FBVyxDQUFDOzs7WUFqR2hDLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsV0FBVztnQkFDckIsaytCQUF1QztnQkFDdkMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07YUFDbEQ7OztZQXhCd0QsaUJBQWlCO1lBRWpFLGlCQUFpQjtZQUhvQixTQUFTLHVCQW1FK0IsUUFBUSxZQUFJLElBQUk7WUFBaUYsS0FBSyx1QkFBNUQsUUFBUSxZQUFJLElBQUksWUFBSSxNQUFNLFNBQUMsYUFBYTtZQTdEL0osb0JBQW9CO1lBQUUsZ0JBQWdCLHVCQTZEK0ssUUFBUTt5Q0FBa0MsUUFBUSxZQUFJLE1BQU0sU0FBQyxhQUFhOzs7MkJBcENuUyxLQUFLO3VCQUtMLEtBQUs7eUJBS0wsS0FBSzt5QkFLTCxLQUFLOzBCQUtMLEtBQUs7MEJBV0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTElEQVRPUlMsIE5nQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT3B0aW9uYWwsIFNlbGYsIEhvc3QsIElucHV0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuaW1wb3J0IHsgTmd4TWF0RGF0ZUFkYXB0ZXIgfSBmcm9tIFwiQGFuZ3VsYXItbWF0ZXJpYWwtY29tcG9uZW50cy9kYXRldGltZS1waWNrZXJcIjtcclxuXHJcbi8vIEVzZmFlbnphXHJcbmltcG9ydCB7IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlLCBDb21wb25lbnRDb250ZXh0IH0gZnJvbSAnQGVzZmFlbnphL2FjY2Vzcy1jb250cm9sJztcclxuXHJcbi8vIEFwcGxpY2F6aW9uZVxyXG5pbXBvcnQgeyBCYXNlRm9ybUNvbnRyb2wgfSBmcm9tIFwiLi4vYmFzZS1mb3JtLWNvbnRyb2xcIjtcclxuaW1wb3J0IHsgQUNPX0NVU1RPTUtFWSB9IGZyb20gJy4uLy4uL3Rva2Vucyc7XHJcblxyXG4vKipcclxuICogRGljaGlhcmF6aW9uZSBkZWxsYSB2YXJpYWJpbGUgZ2xvYmFsZSBkYXlqcy4gTCdvbmVyZSBkaSBcImNyZWFybGFcIiDDqCBhZmZpZGF0byBhbGwnYXBwbGljYXppb25lIGNoZSB1dGlsaXp6YSBxdWVzdGEgbGlicmVyaWEsIFxyXG4gKiBjaGUgZG92csOgIGltcG9ydGFyZSBsbyBzY3JpcHQgZ2xvYmFsZSBkaSBkYXlqcyBuZWxsYSBDTElcclxuICovXHJcbmRlY2xhcmUgdmFyIGRheWpzOiBhbnk7XHJcblxyXG4vKipcclxuICogQ29tcG9uZW50ZSBjaGUgaWRlbnRpZmljYSBsYSBzZWxlemlvbmUgZGkgdW4gb3JhcmlvXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcImZvcm0tdGltZVwiLFxyXG4gICAgdGVtcGxhdGVVcmw6IFwiZm9ybS10aW1lLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybVRpbWVDb21wb25lbnQgZXh0ZW5kcyBCYXNlRm9ybUNvbnRyb2wgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNb3N0cmEgbyBtZW5vIGdsaSBzcGlubmVyIGRvdmUgY2xpY2NhcmUgcGVyIGF1bWVudGFyZS9kaW1pbnVpcmUgbGUgY29tcG9uZW50aSBkZWxsJ29yb2xvZ2lvIChvcmUsIG1pbnV0aSBlIHNlY29uZGkpXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIFNob3dTcGlubmVyczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW1wb3N0YSBsbyBzdGVwIChtaW5pbW8gYXZhbnphbWVudG8pIHBlciBsYSBjZWxsYSBcIm9yZVwiXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIFN0ZXBIb3VyOiBudW1iZXIgPSAxO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW1wb3N0YSBsbyBzdGVwIChtaW5pbW8gYXZhbnphbWVudG8pIHBlciBsYSBjZWxsYSBcIm1pbnV0aVwiXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIFN0ZXBNaW51dGU6IG51bWJlciA9IDE7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbXBvc3RhIGxvIHN0ZXAgKG1pbmltbyBhdmFuemFtZW50bykgcGVyIGxhIGNlbGxhIFwic2Vjb25kaVwiXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIFN0ZXBTZWNvbmQ6IG51bWJlciA9IDU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2Egc2UgbW9zdHJhcmUgaSBzZWNvbmRpIG8gbWVub1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBTaG93U2Vjb25kczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhIGlsIGZvcm1hdG8gZGEgdXRpbGl6emFyZSBzaWEgaW4gSW5wdXQgY2hlIGluIE91dHB1dFxyXG4gICAgICogXHJcbiAgICAgKiAxLiBTZSBkYXRlIHZlbmdvbm8gdXRpbGl6emF0ZSBsZSBEYXRlIGRpIEphdmFzY3JpcHRcclxuICAgICAqIFxyXG4gICAgICogMi4gU2UgdGltZXN0cmluZyB2ZW5nb25vIHV0aWxpenphdGUgc3RyaW5naGUgZGVsIHRpcG8gJzAwOjAwOjAwJ1xyXG4gICAgICogXHJcbiAgICAgKiAzLiBTZSBkYXlqcyB2aWVuZSB1dGlsaXp6YXRvLCBhcHB1bnRvLCBkYXlqc1xyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBJbk91dEZvcm1hdDogJ2RhdGUnIHwgJ3RpbWVzdHJpbmcnIHwgJ2RheWpzJyA9ICd0aW1lc3RyaW5nJztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSBkYXRlQWRhcHRlcjogTmd4TWF0RGF0ZUFkYXB0ZXI8YW55PiwgQE9wdGlvbmFsKCkgQFNlbGYoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbCwgQE9wdGlvbmFsKCkgQEhvc3QoKSBASW5qZWN0KE5HX1ZBTElEQVRPUlMpIF92YWxpZGF0b3JzOiBBcnJheTxhbnk+LCBhYzogQWNjZXNzQ29udHJvbFNlcnZpY2UsIEBPcHRpb25hbCgpIEFwcENvbnRleHQ6IENvbXBvbmVudENvbnRleHQsIEBPcHRpb25hbCgpIEBJbmplY3QoQUNPX0NVU1RPTUtFWSkgQUNPX0NVU1RPTUtFWTogc3RyaW5nKSB7XHJcbiAgICAgICAgc3VwZXIoY2RyLCBuZ0NvbnRyb2wsIF92YWxpZGF0b3JzLCBhYywgQXBwQ29udGV4dCwgQUNPX0NVU1RPTUtFWSwgdHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlIE92ZXJyaWRlIHBlciBnZXN0aXJlIGlucHV0IGluIGluZ3Jlc3NvXHJcbiAgICAgKi9cclxuICAgIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcclxuXHJcbiAgICAgICAgY29uc3QgW2hvdXJzLCBtaW51dGVzLCBzZWNvbmRzXSA9IChvYmogfHwgXCIwOjA6MFwiKS5zcGxpdChcIjpcIik7XHJcblxyXG4gICAgICAgIC8vUXVhbHNpYXNpIGNvc2EgbWkgYXJyaXZpIGRldm8gcmljb25kdXJsYSBhIHVuIGRheWpzXHJcbiAgICAgICAgc3dpdGNoICh0aGlzLkluT3V0Rm9ybWF0KSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ2RhdGUnOlxyXG4gICAgICAgICAgICAgICAgb2JqID0gZGF5anMob2JqKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICd0aW1lc3RyaW5nJzpcclxuICAgICAgICAgICAgICAgIG9iaiA9IGRheWpzKCkuaG91cihob3VycyA/PyAwKS5taW51dGUobWludXRlcyA/PyAwKS5zZWNvbmQoc2Vjb25kcyA/PyAwKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdkYXlqcyc6XHJcbiAgICAgICAgICAgICAgICBvYmogPSBvYmo7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHN1cGVyLndyaXRlVmFsdWUob2JqKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmUgT3ZlcnJpZGUgcGVyIGdlc3RpcmUgaW5wdXQgaW4gdXNjaXRhXHJcbiAgICAgKi9cclxuICAgIGNoYW5nZWQoKSB7XHJcbiAgICAgICAgdmFyIHRvRW1pdCA9IHRoaXMuZGF0ZUFkYXB0ZXIuY2xvbmUodGhpcy5Nb2RlbCk7XHJcblxyXG4gICAgICAgIHN3aXRjaCAodGhpcy5Jbk91dEZvcm1hdCkge1xyXG4gICAgICAgICAgICBjYXNlICdkYXRlJzpcclxuICAgICAgICAgICAgICAgIHRvRW1pdCA9IHRvRW1pdC50b0RhdGUoKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICd0aW1lc3RyaW5nJzpcclxuICAgICAgICAgICAgICAgIHRvRW1pdCA9IHRvRW1pdC5mb3JtYXQoXCJISDptbVwiICsgKHRoaXMuU2hvd1NlY29uZHMgPyBcIjpzc1wiIDogXCJcIikpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ2RheWpzJzpcclxuICAgICAgICAgICAgICAgIHRvRW1pdCA9IHRvRW1pdDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3VwZXIuY2hhbmdlZCh0b0VtaXQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBvbk5vdE51bGxWYWx1ZVNldCgpOiB2b2lkIHsgfVxyXG59Il19
|