@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.
- 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 +232 -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 +3620 -0
- package/fesm2015/esfaenza-forms-and-validations.mjs.map +1 -0
- package/fesm2020/esfaenza-forms-and-validations.mjs +3562 -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 +4 -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 +3 -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 -3753
- 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 -153
- 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 -3261
- package/fesm2015/esfaenza-forms-and-validations.js.map +0 -1
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
// Angular
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { FormsModule } from '@angular/forms';
|
|
5
|
+
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
6
|
+
import { MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
7
|
+
import { MatInputModule } from "@angular/material/input";
|
|
8
|
+
import { MAT_DATE_LOCALE, MAT_DATE_FORMATS } from "@angular/material/core";
|
|
9
|
+
// Es
|
|
10
|
+
import { LocalizationModule } from "@esfaenza/localizations";
|
|
11
|
+
import { MatDayjsDateModule } from '@esfaenza/material-dayjs-adapter';
|
|
12
|
+
import { CurrencyMaskModule } from '@esfaenza/ngx-currency-mask';
|
|
13
|
+
// Librerie / Modelli
|
|
14
|
+
import { AngularMultiSelectModule } from "angular2-multiselect-dropdown";
|
|
15
|
+
import { NgxMatDateAdapter, NgxMatDatetimePickerModule, NGX_MAT_DATE_FORMATS, NgxMatTimepickerModule } from '@angular-material-components/datetime-picker';
|
|
16
|
+
import { TooltipModule } from 'ngx-bootstrap/tooltip';
|
|
17
|
+
import { FAV_LOCALE, ACO_CUSTOMKEY } from './tokens';
|
|
18
|
+
import { CustomRequiredDirective } from './validations/customValidators/CustomRequiredDirective';
|
|
19
|
+
import { NgxExpandedDayJsDateAdapter } from './models/dayjs-adapter/dayjs-date-adapter';
|
|
20
|
+
// Validations
|
|
21
|
+
import { ValidationSelectComponent } from './validations/validation-select/validation-select.component';
|
|
22
|
+
import { ValidationDateComponent } from './validations/validation-date/validation-date.component';
|
|
23
|
+
import { ValidationCurrencyComponent } from './validations/validation-currency/validation-currency.component';
|
|
24
|
+
import { ValidationTextAreaComponent } from './validations/validation-text-area/validation-text-area.component';
|
|
25
|
+
import { ValidationInputComponent } from './validations/validation-input/validation-input.component';
|
|
26
|
+
import { ValidationDateTimeComponent } from './validations/validation-datetime/validation-datetime.component';
|
|
27
|
+
import { ValidationAutocompleteComponent } from './validations/validation-autocomplete/validation-autocomplete.component';
|
|
28
|
+
// Forms
|
|
29
|
+
import { FormFileComponent } from './forms/form-file/form-file.component';
|
|
30
|
+
import { FormDateTimeComponent } from './forms/form-datetime/form-datetime.component';
|
|
31
|
+
import { FormAdaptiveComponent } from './forms/form-adaptive/form-adaptive.component';
|
|
32
|
+
import { FormEmptyComponent } from './forms/form-empty/form-empty.component';
|
|
33
|
+
import { FormTemplateComponent } from './forms/form-template/form-template.component';
|
|
34
|
+
import { FormErrorComponent } from './forms/form-error/form-error.component';
|
|
35
|
+
import { FormInfoComponent } from './forms/form-info/form-info.component';
|
|
36
|
+
import { FormCheckboxComponent } from './forms/form-checkbox/form-checkbox.component';
|
|
37
|
+
import { FormDateComponent } from './forms/form-date/form-date.component';
|
|
38
|
+
import { FormInputComponent } from './forms/form-input/form-input.component';
|
|
39
|
+
import { FormSelectComponent } from './forms/form-select/form-select.component';
|
|
40
|
+
import { FormMultiSelectComponent } from './forms/form-multiselect/form-multiselect.component';
|
|
41
|
+
import { FormTextareaComponent } from './forms/form-textarea/form-textarea.component';
|
|
42
|
+
import { FormAutocompleteComponent } from './forms/form-autocomplete/form-autocomplete.component';
|
|
43
|
+
import { FormTimeComponent } from './forms/form-time/form-time.component';
|
|
44
|
+
import * as i0 from "@angular/core";
|
|
45
|
+
/**
|
|
46
|
+
* Formato in display (modalità breve, senza ore, minuti e secondi) delle date per tutti i componenti che utilizzino input data.
|
|
47
|
+
*
|
|
48
|
+
* Da convenzione è sempre quello italiano quindi viene cablato
|
|
49
|
+
*/
|
|
50
|
+
const formats = {
|
|
51
|
+
parse: { dateInput: 'DD/MM/YYYY' },
|
|
52
|
+
display: {
|
|
53
|
+
dateInput: 'DD/MM/YYYY',
|
|
54
|
+
monthYearLabel: 'MM YYYY',
|
|
55
|
+
dateA11yLabel: 'DD/MM/YYYY',
|
|
56
|
+
monthYearA11yLabel: 'MM YYYY',
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Formato in display (modalità lunga, con ore, minuti e secondi) delle date per tutti i componenti che utilizzino input data.
|
|
61
|
+
*
|
|
62
|
+
* Da convenzione è sempre quello italiano quindi viene cablato
|
|
63
|
+
*/
|
|
64
|
+
const formats_long = {
|
|
65
|
+
parse: { dateInput: 'DD/MM/YYYY HH:mm:ss' },
|
|
66
|
+
display: {
|
|
67
|
+
dateInput: 'DD/MM/YYYY HH:mm:ss',
|
|
68
|
+
monthYearLabel: 'MM YYYY',
|
|
69
|
+
dateA11yLabel: 'DD/MM/YYYY HH:mm:ss',
|
|
70
|
+
monthYearA11yLabel: 'MM YYYY',
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Componenti Dichiarati ed esportati dalla libreria
|
|
75
|
+
*/
|
|
76
|
+
const COMPONENTS = [
|
|
77
|
+
ValidationInputComponent,
|
|
78
|
+
ValidationSelectComponent,
|
|
79
|
+
ValidationDateComponent,
|
|
80
|
+
CustomRequiredDirective,
|
|
81
|
+
ValidationCurrencyComponent,
|
|
82
|
+
ValidationTextAreaComponent,
|
|
83
|
+
FormCheckboxComponent,
|
|
84
|
+
FormDateComponent,
|
|
85
|
+
FormEmptyComponent,
|
|
86
|
+
FormInputComponent,
|
|
87
|
+
FormSelectComponent,
|
|
88
|
+
FormTextareaComponent,
|
|
89
|
+
FormTemplateComponent,
|
|
90
|
+
FormErrorComponent,
|
|
91
|
+
FormInfoComponent,
|
|
92
|
+
FormAdaptiveComponent,
|
|
93
|
+
FormMultiSelectComponent,
|
|
94
|
+
FormFileComponent,
|
|
95
|
+
ValidationAutocompleteComponent,
|
|
96
|
+
FormAutocompleteComponent,
|
|
97
|
+
FormDateTimeComponent,
|
|
98
|
+
ValidationDateTimeComponent,
|
|
99
|
+
FormTimeComponent
|
|
100
|
+
];
|
|
101
|
+
/**
|
|
102
|
+
* Moduli utilizzati solo dalla libreria
|
|
103
|
+
*/
|
|
104
|
+
const MODULES = [
|
|
105
|
+
CommonModule,
|
|
106
|
+
FormsModule,
|
|
107
|
+
LocalizationModule,
|
|
108
|
+
MatInputModule,
|
|
109
|
+
MatDatepickerModule,
|
|
110
|
+
MatDayjsDateModule,
|
|
111
|
+
TooltipModule,
|
|
112
|
+
CurrencyMaskModule,
|
|
113
|
+
MatAutocompleteModule,
|
|
114
|
+
NgxMatDatetimePickerModule,
|
|
115
|
+
NgxMatTimepickerModule
|
|
116
|
+
];
|
|
117
|
+
/**
|
|
118
|
+
* Moduli utilizzati dalla libreria e che devono essere esposti all'esterno
|
|
119
|
+
*/
|
|
120
|
+
const MODULES_TO_EXPORT = [
|
|
121
|
+
AngularMultiSelectModule
|
|
122
|
+
];
|
|
123
|
+
export class FormsAndValidationsModule {
|
|
124
|
+
static forRoot(config) {
|
|
125
|
+
return {
|
|
126
|
+
ngModule: FormsAndValidationsModule,
|
|
127
|
+
providers: [
|
|
128
|
+
{ provide: FAV_LOCALE, useValue: config?.locale || 'it-IT' },
|
|
129
|
+
{ provide: ACO_CUSTOMKEY, useValue: config?.acocustom || null },
|
|
130
|
+
{ provide: MAT_DATE_LOCALE, useValue: 'it' },
|
|
131
|
+
{ provide: MAT_DATE_FORMATS, useValue: formats },
|
|
132
|
+
{ provide: NGX_MAT_DATE_FORMATS, useValue: formats_long },
|
|
133
|
+
{ provide: NgxMatDateAdapter, useClass: NgxExpandedDayJsDateAdapter },
|
|
134
|
+
]
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
FormsAndValidationsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FormsAndValidationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
139
|
+
FormsAndValidationsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FormsAndValidationsModule, declarations: [ValidationInputComponent,
|
|
140
|
+
ValidationSelectComponent,
|
|
141
|
+
ValidationDateComponent,
|
|
142
|
+
CustomRequiredDirective,
|
|
143
|
+
ValidationCurrencyComponent,
|
|
144
|
+
ValidationTextAreaComponent,
|
|
145
|
+
FormCheckboxComponent,
|
|
146
|
+
FormDateComponent,
|
|
147
|
+
FormEmptyComponent,
|
|
148
|
+
FormInputComponent,
|
|
149
|
+
FormSelectComponent,
|
|
150
|
+
FormTextareaComponent,
|
|
151
|
+
FormTemplateComponent,
|
|
152
|
+
FormErrorComponent,
|
|
153
|
+
FormInfoComponent,
|
|
154
|
+
FormAdaptiveComponent,
|
|
155
|
+
FormMultiSelectComponent,
|
|
156
|
+
FormFileComponent,
|
|
157
|
+
ValidationAutocompleteComponent,
|
|
158
|
+
FormAutocompleteComponent,
|
|
159
|
+
FormDateTimeComponent,
|
|
160
|
+
ValidationDateTimeComponent,
|
|
161
|
+
FormTimeComponent], imports: [CommonModule,
|
|
162
|
+
FormsModule,
|
|
163
|
+
LocalizationModule,
|
|
164
|
+
MatInputModule,
|
|
165
|
+
MatDatepickerModule,
|
|
166
|
+
MatDayjsDateModule,
|
|
167
|
+
TooltipModule,
|
|
168
|
+
CurrencyMaskModule,
|
|
169
|
+
MatAutocompleteModule,
|
|
170
|
+
NgxMatDatetimePickerModule,
|
|
171
|
+
NgxMatTimepickerModule, AngularMultiSelectModule], exports: [AngularMultiSelectModule, ValidationInputComponent,
|
|
172
|
+
ValidationSelectComponent,
|
|
173
|
+
ValidationDateComponent,
|
|
174
|
+
CustomRequiredDirective,
|
|
175
|
+
ValidationCurrencyComponent,
|
|
176
|
+
ValidationTextAreaComponent,
|
|
177
|
+
FormCheckboxComponent,
|
|
178
|
+
FormDateComponent,
|
|
179
|
+
FormEmptyComponent,
|
|
180
|
+
FormInputComponent,
|
|
181
|
+
FormSelectComponent,
|
|
182
|
+
FormTextareaComponent,
|
|
183
|
+
FormTemplateComponent,
|
|
184
|
+
FormErrorComponent,
|
|
185
|
+
FormInfoComponent,
|
|
186
|
+
FormAdaptiveComponent,
|
|
187
|
+
FormMultiSelectComponent,
|
|
188
|
+
FormFileComponent,
|
|
189
|
+
ValidationAutocompleteComponent,
|
|
190
|
+
FormAutocompleteComponent,
|
|
191
|
+
FormDateTimeComponent,
|
|
192
|
+
ValidationDateTimeComponent,
|
|
193
|
+
FormTimeComponent] });
|
|
194
|
+
FormsAndValidationsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FormsAndValidationsModule, imports: [[...MODULES, ...MODULES_TO_EXPORT], AngularMultiSelectModule] });
|
|
195
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: FormsAndValidationsModule, decorators: [{
|
|
196
|
+
type: NgModule,
|
|
197
|
+
args: [{
|
|
198
|
+
imports: [...MODULES, ...MODULES_TO_EXPORT],
|
|
199
|
+
declarations: [...COMPONENTS],
|
|
200
|
+
exports: [...MODULES_TO_EXPORT, ...COMPONENTS]
|
|
201
|
+
}]
|
|
202
|
+
}] });
|
|
203
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMtYW5kLXZhbGlkYXRpb25zLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm1zLWFuZC12YWxpZGF0aW9ucy9zcmMvbGliL2Zvcm1zLWFuZC12YWxpZGF0aW9ucy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUzRSxLQUFLO0FBQ0wsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFakUscUJBQXFCO0FBQ3JCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSwwQkFBMEIsRUFBRSxvQkFBb0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzNKLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVyRCxP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IEFuZ3VsYXJcclxuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdERhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcclxuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcclxuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXRcIjtcclxuaW1wb3J0IHsgTUFUX0RBVEVfTE9DQUxFLCBNQVRfREFURV9GT1JNQVRTIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcclxuXHJcbi8vIEVzXHJcbmltcG9ydCB7IExvY2FsaXphdGlvbk1vZHVsZSB9IGZyb20gXCJAZXNmYWVuemEvbG9jYWxpemF0aW9uc1wiO1xyXG5pbXBvcnQgeyBNYXREYXlqc0RhdGVNb2R1bGUgfSBmcm9tICdAZXNmYWVuemEvbWF0ZXJpYWwtZGF5anMtYWRhcHRlcic7XHJcbmltcG9ydCB7IEN1cnJlbmN5TWFza01vZHVsZSB9IGZyb20gJ0Blc2ZhZW56YS9uZ3gtY3VycmVuY3ktbWFzayc7XHJcblxyXG4vLyBMaWJyZXJpZSAvIE1vZGVsbGlcclxuaW1wb3J0IHsgQW5ndWxhck11bHRpU2VsZWN0TW9kdWxlIH0gZnJvbSBcImFuZ3VsYXIyLW11bHRpc2VsZWN0LWRyb3Bkb3duXCI7XHJcbmltcG9ydCB7IE5neE1hdERhdGVBZGFwdGVyLCBOZ3hNYXREYXRldGltZVBpY2tlck1vZHVsZSwgTkdYX01BVF9EQVRFX0ZPUk1BVFMsIE5neE1hdFRpbWVwaWNrZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci1tYXRlcmlhbC1jb21wb25lbnRzL2RhdGV0aW1lLXBpY2tlcic7XHJcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3Rvb2x0aXAnO1xyXG5cclxuaW1wb3J0IHsgRkFWX0xPQ0FMRSwgQUNPX0NVU1RPTUtFWSB9IGZyb20gJy4vdG9rZW5zJztcclxuaW1wb3J0IHsgRm9ybXNBbmRWYWxpZGF0aW9uc01vZHVsZUNvbmZpZyB9IGZyb20gJy4vbW9kZWxzL0Zvcm1zQW5kVmFsaWRhdGlvbnNNb2R1bGVDb25maWcnO1xyXG5pbXBvcnQgeyBDdXN0b21SZXF1aXJlZERpcmVjdGl2ZSB9IGZyb20gJy4vdmFsaWRhdGlvbnMvY3VzdG9tVmFsaWRhdG9ycy9DdXN0b21SZXF1aXJlZERpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE5neEV4cGFuZGVkRGF5SnNEYXRlQWRhcHRlciB9IGZyb20gJy4vbW9kZWxzL2RheWpzLWFkYXB0ZXIvZGF5anMtZGF0ZS1hZGFwdGVyJztcclxuXHJcbi8vIFZhbGlkYXRpb25zXHJcbmltcG9ydCB7IFZhbGlkYXRpb25TZWxlY3RDb21wb25lbnQgfSBmcm9tICcuL3ZhbGlkYXRpb25zL3ZhbGlkYXRpb24tc2VsZWN0L3ZhbGlkYXRpb24tc2VsZWN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb25EYXRlQ29tcG9uZW50IH0gZnJvbSAnLi92YWxpZGF0aW9ucy92YWxpZGF0aW9uLWRhdGUvdmFsaWRhdGlvbi1kYXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb25DdXJyZW5jeUNvbXBvbmVudCB9IGZyb20gJy4vdmFsaWRhdGlvbnMvdmFsaWRhdGlvbi1jdXJyZW5jeS92YWxpZGF0aW9uLWN1cnJlbmN5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb25UZXh0QXJlYUNvbXBvbmVudCB9IGZyb20gJy4vdmFsaWRhdGlvbnMvdmFsaWRhdGlvbi10ZXh0LWFyZWEvdmFsaWRhdGlvbi10ZXh0LWFyZWEuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbklucHV0Q29tcG9uZW50IH0gZnJvbSAnLi92YWxpZGF0aW9ucy92YWxpZGF0aW9uLWlucHV0L3ZhbGlkYXRpb24taW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbkRhdGVUaW1lQ29tcG9uZW50IH0gZnJvbSAnLi92YWxpZGF0aW9ucy92YWxpZGF0aW9uLWRhdGV0aW1lL3ZhbGlkYXRpb24tZGF0ZXRpbWUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbkF1dG9jb21wbGV0ZUNvbXBvbmVudCB9IGZyb20gJy4vdmFsaWRhdGlvbnMvdmFsaWRhdGlvbi1hdXRvY29tcGxldGUvdmFsaWRhdGlvbi1hdXRvY29tcGxldGUuY29tcG9uZW50JztcclxuXHJcbi8vIEZvcm1zXHJcbmltcG9ydCB7IEZvcm1GaWxlQ29tcG9uZW50IH0gZnJvbSAnLi9mb3Jtcy9mb3JtLWZpbGUvZm9ybS1maWxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1EYXRlVGltZUNvbXBvbmVudCB9IGZyb20gJy4vZm9ybXMvZm9ybS1kYXRldGltZS9mb3JtLWRhdGV0aW1lLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1BZGFwdGl2ZUNvbXBvbmVudCB9IGZyb20gJy4vZm9ybXMvZm9ybS1hZGFwdGl2ZS9mb3JtLWFkYXB0aXZlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1FbXB0eUNvbXBvbmVudCB9IGZyb20gJy4vZm9ybXMvZm9ybS1lbXB0eS9mb3JtLWVtcHR5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1UZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vZm9ybXMvZm9ybS10ZW1wbGF0ZS9mb3JtLXRlbXBsYXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1FcnJvckNvbXBvbmVudCB9IGZyb20gJy4vZm9ybXMvZm9ybS1lcnJvci9mb3JtLWVycm9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1JbmZvQ29tcG9uZW50IH0gZnJvbSAnLi9mb3Jtcy9mb3JtLWluZm8vZm9ybS1pbmZvLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1DaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4vZm9ybXMvZm9ybS1jaGVja2JveC9mb3JtLWNoZWNrYm94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1EYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9mb3Jtcy9mb3JtLWRhdGUvZm9ybS1kYXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1JbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZm9ybXMvZm9ybS1pbnB1dC9mb3JtLWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1TZWxlY3RDb21wb25lbnQgfSBmcm9tICcuL2Zvcm1zL2Zvcm0tc2VsZWN0L2Zvcm0tc2VsZWN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1NdWx0aVNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4vZm9ybXMvZm9ybS1tdWx0aXNlbGVjdC9mb3JtLW11bHRpc2VsZWN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1UZXh0YXJlYUNvbXBvbmVudCB9IGZyb20gJy4vZm9ybXMvZm9ybS10ZXh0YXJlYS9mb3JtLXRleHRhcmVhLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1BdXRvY29tcGxldGVDb21wb25lbnQgfSBmcm9tICcuL2Zvcm1zL2Zvcm0tYXV0b2NvbXBsZXRlL2Zvcm0tYXV0b2NvbXBsZXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1UaW1lQ29tcG9uZW50IH0gZnJvbSAnLi9mb3Jtcy9mb3JtLXRpbWUvZm9ybS10aW1lLmNvbXBvbmVudCc7XHJcblxyXG4vKipcclxuICogRm9ybWF0byBpbiBkaXNwbGF5IChtb2RhbGl0w6AgYnJldmUsIHNlbnphIG9yZSwgbWludXRpIGUgc2Vjb25kaSkgZGVsbGUgZGF0ZSBwZXIgdHV0dGkgaSBjb21wb25lbnRpIGNoZSB1dGlsaXp6aW5vIGlucHV0IGRhdGEuXHJcbiAqIFxyXG4gKiBEYSBjb252ZW56aW9uZSDDqCBzZW1wcmUgcXVlbGxvIGl0YWxpYW5vIHF1aW5kaSB2aWVuZSBjYWJsYXRvXHJcbiAqL1xyXG5jb25zdCBmb3JtYXRzID0ge1xyXG4gIHBhcnNlOiB7IGRhdGVJbnB1dDogJ0REL01NL1lZWVknIH0sXHJcbiAgZGlzcGxheToge1xyXG4gICAgZGF0ZUlucHV0OiAnREQvTU0vWVlZWScsXHJcbiAgICBtb250aFllYXJMYWJlbDogJ01NIFlZWVknLFxyXG4gICAgZGF0ZUExMXlMYWJlbDogJ0REL01NL1lZWVknLFxyXG4gICAgbW9udGhZZWFyQTExeUxhYmVsOiAnTU0gWVlZWScsXHJcbiAgfVxyXG59O1xyXG5cclxuLyoqXHJcbiAqIEZvcm1hdG8gaW4gZGlzcGxheSAobW9kYWxpdMOgIGx1bmdhLCBjb24gb3JlLCBtaW51dGkgZSBzZWNvbmRpKSBkZWxsZSBkYXRlIHBlciB0dXR0aSBpIGNvbXBvbmVudGkgY2hlIHV0aWxpenppbm8gaW5wdXQgZGF0YS5cclxuICogXHJcbiAqIERhIGNvbnZlbnppb25lIMOoIHNlbXByZSBxdWVsbG8gaXRhbGlhbm8gcXVpbmRpIHZpZW5lIGNhYmxhdG9cclxuICovXHJcbmNvbnN0IGZvcm1hdHNfbG9uZyA9IHtcclxuICBwYXJzZTogeyBkYXRlSW5wdXQ6ICdERC9NTS9ZWVlZIEhIOm1tOnNzJyB9LFxyXG4gIGRpc3BsYXk6IHtcclxuICAgIGRhdGVJbnB1dDogJ0REL01NL1lZWVkgSEg6bW06c3MnLFxyXG4gICAgbW9udGhZZWFyTGFiZWw6ICdNTSBZWVlZJyxcclxuICAgIGRhdGVBMTF5TGFiZWw6ICdERC9NTS9ZWVlZIEhIOm1tOnNzJyxcclxuICAgIG1vbnRoWWVhckExMXlMYWJlbDogJ01NIFlZWVknLFxyXG4gIH1cclxufTtcclxuXHJcbi8qKlxyXG4gKiBDb21wb25lbnRpIERpY2hpYXJhdGkgZWQgZXNwb3J0YXRpIGRhbGxhIGxpYnJlcmlhXHJcbiAqL1xyXG5jb25zdCBDT01QT05FTlRTID0gW1xyXG4gIFZhbGlkYXRpb25JbnB1dENvbXBvbmVudCxcclxuICBWYWxpZGF0aW9uU2VsZWN0Q29tcG9uZW50LFxyXG4gIFZhbGlkYXRpb25EYXRlQ29tcG9uZW50LFxyXG4gIEN1c3RvbVJlcXVpcmVkRGlyZWN0aXZlLFxyXG4gIFZhbGlkYXRpb25DdXJyZW5jeUNvbXBvbmVudCxcclxuICBWYWxpZGF0aW9uVGV4dEFyZWFDb21wb25lbnQsXHJcbiAgRm9ybUNoZWNrYm94Q29tcG9uZW50LFxyXG4gIEZvcm1EYXRlQ29tcG9uZW50LFxyXG4gIEZvcm1FbXB0eUNvbXBvbmVudCxcclxuICBGb3JtSW5wdXRDb21wb25lbnQsXHJcbiAgRm9ybVNlbGVjdENvbXBvbmVudCxcclxuICBGb3JtVGV4dGFyZWFDb21wb25lbnQsXHJcbiAgRm9ybVRlbXBsYXRlQ29tcG9uZW50LFxyXG4gIEZvcm1FcnJvckNvbXBvbmVudCxcclxuICBGb3JtSW5mb0NvbXBvbmVudCxcclxuICBGb3JtQWRhcHRpdmVDb21wb25lbnQsXHJcbiAgRm9ybU11bHRpU2VsZWN0Q29tcG9uZW50LFxyXG4gIEZvcm1GaWxlQ29tcG9uZW50LFxyXG4gIFZhbGlkYXRpb25BdXRvY29tcGxldGVDb21wb25lbnQsXHJcbiAgRm9ybUF1dG9jb21wbGV0ZUNvbXBvbmVudCxcclxuICBGb3JtRGF0ZVRpbWVDb21wb25lbnQsXHJcbiAgVmFsaWRhdGlvbkRhdGVUaW1lQ29tcG9uZW50LFxyXG4gIEZvcm1UaW1lQ29tcG9uZW50XHJcbl07XHJcblxyXG4vKipcclxuICogTW9kdWxpIHV0aWxpenphdGkgc29sbyBkYWxsYSBsaWJyZXJpYVxyXG4gKi9cclxuY29uc3QgTU9EVUxFUyA9IFtcclxuICBDb21tb25Nb2R1bGUsXHJcbiAgRm9ybXNNb2R1bGUsXHJcbiAgTG9jYWxpemF0aW9uTW9kdWxlLFxyXG4gIE1hdElucHV0TW9kdWxlLFxyXG4gIE1hdERhdGVwaWNrZXJNb2R1bGUsXHJcbiAgTWF0RGF5anNEYXRlTW9kdWxlLFxyXG4gIFRvb2x0aXBNb2R1bGUsXHJcbiAgQ3VycmVuY3lNYXNrTW9kdWxlLFxyXG4gIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcclxuICBOZ3hNYXREYXRldGltZVBpY2tlck1vZHVsZSxcclxuICBOZ3hNYXRUaW1lcGlja2VyTW9kdWxlXHJcbl07XHJcblxyXG4vKipcclxuICogTW9kdWxpIHV0aWxpenphdGkgZGFsbGEgbGlicmVyaWEgZSBjaGUgZGV2b25vIGVzc2VyZSBlc3Bvc3RpIGFsbCdlc3Rlcm5vXHJcbiAqL1xyXG5jb25zdCBNT0RVTEVTX1RPX0VYUE9SVCA9IFtcclxuICBBbmd1bGFyTXVsdGlTZWxlY3RNb2R1bGVcclxuXTtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogWy4uLk1PRFVMRVMsIC4uLk1PRFVMRVNfVE9fRVhQT1JUXSxcclxuICBkZWNsYXJhdGlvbnM6IFsuLi5DT01QT05FTlRTXSxcclxuICBleHBvcnRzOiBbLi4uTU9EVUxFU19UT19FWFBPUlQsIC4uLkNPTVBPTkVOVFNdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3Jtc0FuZFZhbGlkYXRpb25zTW9kdWxlIHtcclxuICBzdGF0aWMgZm9yUm9vdChjb25maWc/OiBGb3Jtc0FuZFZhbGlkYXRpb25zTW9kdWxlQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxGb3Jtc0FuZFZhbGlkYXRpb25zTW9kdWxlPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogRm9ybXNBbmRWYWxpZGF0aW9uc01vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgeyBwcm92aWRlOiBGQVZfTE9DQUxFLCB1c2VWYWx1ZTogY29uZmlnPy5sb2NhbGUgfHwgJ2l0LUlUJyB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogQUNPX0NVU1RPTUtFWSwgdXNlVmFsdWU6IGNvbmZpZz8uYWNvY3VzdG9tIHx8IG51bGwgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX0xPQ0FMRSwgdXNlVmFsdWU6ICdpdCcgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiBmb3JtYXRzIH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBOR1hfTUFUX0RBVEVfRk9STUFUUywgdXNlVmFsdWU6IGZvcm1hdHNfbG9uZyB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogTmd4TWF0RGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBOZ3hFeHBhbmRlZERheUpzRGF0ZUFkYXB0ZXIgfSxcclxuICAgICAgXVxyXG4gICAgfTtcclxuICB9XHJcbn0iXX0=
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
//Angular
|
|
2
|
+
import { Inject, Injectable } from "@angular/core";
|
|
3
|
+
import { MAT_DATE_LOCALE } from "@angular/material/core";
|
|
4
|
+
//Libreria
|
|
5
|
+
// Questa non è più usata, la tengo qui per crosscheck in caso di updates
|
|
6
|
+
//import { NgxMatDateAdapter } from "@angular-material-components/datetime-picker";
|
|
7
|
+
import { DayJsDateAdapter } from "@esfaenza/material-dayjs-adapter";
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
/**
|
|
10
|
+
* Espansione dell'adapter di default di DayJs già utilizzato per i bind base su Material.
|
|
11
|
+
*
|
|
12
|
+
* Questa versione serve unicamente per i controlli **datetime-picker**, ma dato che io l'adapter già lo avevo lato **esfaenza/material-dayjs-adapter**
|
|
13
|
+
* qui devo semplicemente aggiungere le funzioni non presenti nella mia implementazione che servono al **datetime-picker**
|
|
14
|
+
*/
|
|
15
|
+
export class NgxExpandedDayJsDateAdapter extends DayJsDateAdapter {
|
|
16
|
+
/**
|
|
17
|
+
* @ignore
|
|
18
|
+
*/
|
|
19
|
+
constructor(dateLocale) {
|
|
20
|
+
super(dateLocale);
|
|
21
|
+
}
|
|
22
|
+
// Espando il mio DayJsDateAdapter con i metodi extra del NgxMatDateAdapter che servono per il material timepicker
|
|
23
|
+
// Non potendo fare "extends" da due classi mi tocca tenerlo così senza type safety....
|
|
24
|
+
/**
|
|
25
|
+
* Identifica se due date hanno lo stesso orario
|
|
26
|
+
*
|
|
27
|
+
* @param {DayJs} a Primo elemento del controllo
|
|
28
|
+
* @param {DayJs} b Secondo elemento del controllo
|
|
29
|
+
* @returns **true** se hanno lo stess orario, **false** altrimenti
|
|
30
|
+
*/
|
|
31
|
+
isSameTime(a, b) {
|
|
32
|
+
if (a == null || b == null)
|
|
33
|
+
return true;
|
|
34
|
+
return this.getHour(a) === this.getHour(b)
|
|
35
|
+
&& this.getMinute(a) === this.getMinute(b)
|
|
36
|
+
&& this.getSecond(a) === this.getSecond(b);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Copia dell'orario da una data all'altra, Modifica direttamente l'oggetto **toDate**
|
|
40
|
+
*
|
|
41
|
+
* @param {DayJs} toDate Data in cui copiare l'orario
|
|
42
|
+
* @param {DayJs} fromDate Data da cui copiare l'orario
|
|
43
|
+
*/
|
|
44
|
+
copyTime(toDate, fromDate) {
|
|
45
|
+
this.setHour(toDate, this.getHour(fromDate));
|
|
46
|
+
this.setMinute(toDate, this.getMinute(fromDate));
|
|
47
|
+
this.setSecond(toDate, this.getSecond(fromDate));
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Mette a confronto due date
|
|
51
|
+
* @param {Dayjs} first Prima data da confrontare
|
|
52
|
+
* @param {Dayjs} second Seconda data da confrontare
|
|
53
|
+
* @param {boolean} showSeconds Indica se considerare anche i secondi, di default no
|
|
54
|
+
* @returns {number} 0 se le due date sono uguali, un numero minore di 0 se la prima data è precedente alla seconda e un numero maggiore di 0 altrimenti
|
|
55
|
+
*/
|
|
56
|
+
compareDateWithTime(first, second, showSeconds) {
|
|
57
|
+
let res = super.compareDate(first, second) ||
|
|
58
|
+
this.getHour(first) - this.getHour(second) ||
|
|
59
|
+
this.getMinute(first) - this.getMinute(second);
|
|
60
|
+
if (showSeconds)
|
|
61
|
+
res = res || this.getSecond(first) - this.getSecond(second);
|
|
62
|
+
return res;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Assegna a una data i valori di ore, minuti e secondi di default.
|
|
66
|
+
*
|
|
67
|
+
* Se non specificati vengono assegnati degli '0'
|
|
68
|
+
*
|
|
69
|
+
* @param {DayJs} date Data a cui assegnare i valori di default
|
|
70
|
+
* @param {number[]} defaultTime Valori di default per ore, minuti e secondi, considerati 0 se non presenti
|
|
71
|
+
*/
|
|
72
|
+
setTimeByDefaultValues(date, defaultTime) {
|
|
73
|
+
if (!Array.isArray(defaultTime)) {
|
|
74
|
+
throw Error('@Input DefaultTime should be an array');
|
|
75
|
+
}
|
|
76
|
+
this.setHour(date, defaultTime[0] || 0);
|
|
77
|
+
this.setMinute(date, defaultTime[1] || 0);
|
|
78
|
+
this.setSecond(date, defaultTime[2] || 0);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
NgxExpandedDayJsDateAdapter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxExpandedDayJsDateAdapter, deps: [{ token: MAT_DATE_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
82
|
+
NgxExpandedDayJsDateAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxExpandedDayJsDateAdapter });
|
|
83
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxExpandedDayJsDateAdapter, decorators: [{
|
|
84
|
+
type: Injectable
|
|
85
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
86
|
+
type: Inject,
|
|
87
|
+
args: [MAT_DATE_LOCALE]
|
|
88
|
+
}] }]; } });
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5anMtZGF0ZS1hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvbW9kZWxzL2RheWpzLWFkYXB0ZXIvZGF5anMtZGF0ZS1hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVM7QUFDVCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQW9CLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTNFLFVBQVU7QUFDVix5RUFBeUU7QUFDekUsbUZBQW1GO0FBQ25GLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOztBQUdwRTs7Ozs7R0FLRztBQUVILE1BQU0sT0FBTywyQkFBNEIsU0FBUSxnQkFBZ0I7SUFFN0Q7O09BRUc7SUFDSCxZQUFxQyxVQUFrQjtRQUNuRCxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVELGtIQUFrSDtJQUNsSCx3RkFBd0Y7SUFFeEY7Ozs7OztPQU1HO0lBQ0gsVUFBVSxDQUFDLENBQVEsRUFBRSxDQUFRO1FBQ3pCLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztlQUNuQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2VBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxRQUFRLENBQUMsTUFBYSxFQUFFLFFBQWU7UUFDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILG1CQUFtQixDQUFDLEtBQVksRUFBRSxNQUFhLEVBQUUsV0FBcUI7UUFDbEUsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDMUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRW5ELElBQUksV0FBVztZQUNYLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWhFLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxzQkFBc0IsQ0FBQyxJQUFXLEVBQUUsV0FBcUI7UUFDckQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDN0IsTUFBTSxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQztTQUN4RDtRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7O3dIQXZFUSwyQkFBMkIsa0JBS2hCLGVBQWU7NEhBTDFCLDJCQUEyQjsyRkFBM0IsMkJBQTJCO2tCQUR2QyxVQUFVOzswQkFNTSxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyIvL0FuZ3VsYXJcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTUFUX0RBVEVfRk9STUFUUywgTUFUX0RBVEVfTE9DQUxFIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcclxuXHJcbi8vTGlicmVyaWFcclxuLy8gUXVlc3RhIG5vbiDDqCBwacO5IHVzYXRhLCBsYSB0ZW5nbyBxdWkgcGVyIGNyb3NzY2hlY2sgaW4gY2FzbyBkaSB1cGRhdGVzXHJcbi8vaW1wb3J0IHsgTmd4TWF0RGF0ZUFkYXB0ZXIgfSBmcm9tIFwiQGFuZ3VsYXItbWF0ZXJpYWwtY29tcG9uZW50cy9kYXRldGltZS1waWNrZXJcIjtcclxuaW1wb3J0IHsgRGF5SnNEYXRlQWRhcHRlciB9IGZyb20gXCJAZXNmYWVuemEvbWF0ZXJpYWwtZGF5anMtYWRhcHRlclwiO1xyXG5pbXBvcnQgeyBEYXlqcyB9IGZyb20gXCJkYXlqc1wiO1xyXG5cclxuLyoqXHJcbiAqIEVzcGFuc2lvbmUgZGVsbCdhZGFwdGVyIGRpIGRlZmF1bHQgZGkgRGF5SnMgZ2nDoCB1dGlsaXp6YXRvIHBlciBpIGJpbmQgYmFzZSBzdSBNYXRlcmlhbC5cclxuICogXHJcbiAqIFF1ZXN0YSB2ZXJzaW9uZSBzZXJ2ZSB1bmljYW1lbnRlIHBlciBpIGNvbnRyb2xsaSAqKmRhdGV0aW1lLXBpY2tlcioqLCBtYSBkYXRvIGNoZSBpbyBsJ2FkYXB0ZXIgZ2nDoCBsbyBhdmV2byBsYXRvICoqZXNmYWVuemEvbWF0ZXJpYWwtZGF5anMtYWRhcHRlcioqIFxyXG4gKiBxdWkgZGV2byBzZW1wbGljZW1lbnRlIGFnZ2l1bmdlcmUgbGUgZnVuemlvbmkgbm9uIHByZXNlbnRpIG5lbGxhIG1pYSBpbXBsZW1lbnRhemlvbmUgY2hlIHNlcnZvbm8gYWwgKipkYXRldGltZS1waWNrZXIqKlxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTmd4RXhwYW5kZWREYXlKc0RhdGVBZGFwdGVyIGV4dGVuZHMgRGF5SnNEYXRlQWRhcHRlciB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoTUFUX0RBVEVfTE9DQUxFKSBkYXRlTG9jYWxlOiBzdHJpbmcpIHtcclxuICAgICAgICBzdXBlcihkYXRlTG9jYWxlKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBFc3BhbmRvIGlsIG1pbyBEYXlKc0RhdGVBZGFwdGVyIGNvbiBpIG1ldG9kaSBleHRyYSBkZWwgTmd4TWF0RGF0ZUFkYXB0ZXIgY2hlIHNlcnZvbm8gcGVyIGlsIG1hdGVyaWFsIHRpbWVwaWNrZXJcclxuICAgIC8vIE5vbiBwb3RlbmRvIGZhcmUgXCJleHRlbmRzXCIgZGEgZHVlIGNsYXNzaSBtaSB0b2NjYSB0ZW5lcmxvIGNvc8OsIHNlbnphIHR5cGUgc2FmZXR5Li4uLiBcclxuXHJcbiAgICAvKipcclxuICAgICAqIElkZW50aWZpY2Egc2UgZHVlIGRhdGUgaGFubm8gbG8gc3Rlc3NvIG9yYXJpb1xyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge0RheUpzfSBhIFByaW1vIGVsZW1lbnRvIGRlbCBjb250cm9sbG9cclxuICAgICAqIEBwYXJhbSB7RGF5SnN9IGIgU2Vjb25kbyBlbGVtZW50byBkZWwgY29udHJvbGxvXHJcbiAgICAgKiBAcmV0dXJucyAqKnRydWUqKiBzZSBoYW5ubyBsbyBzdGVzcyBvcmFyaW8sICoqZmFsc2UqKiBhbHRyaW1lbnRpXHJcbiAgICAgKi9cclxuICAgIGlzU2FtZVRpbWUoYTogRGF5anMsIGI6IERheWpzKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKGEgPT0gbnVsbCB8fCBiID09IG51bGwpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmdldEhvdXIoYSkgPT09IHRoaXMuZ2V0SG91cihiKVxyXG4gICAgICAgICAgICAmJiB0aGlzLmdldE1pbnV0ZShhKSA9PT0gdGhpcy5nZXRNaW51dGUoYilcclxuICAgICAgICAgICAgJiYgdGhpcy5nZXRTZWNvbmQoYSkgPT09IHRoaXMuZ2V0U2Vjb25kKGIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29waWEgZGVsbCdvcmFyaW8gZGEgdW5hIGRhdGEgYWxsJ2FsdHJhLCBNb2RpZmljYSBkaXJldHRhbWVudGUgbCdvZ2dldHRvICoqdG9EYXRlKipcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtEYXlKc30gdG9EYXRlIERhdGEgaW4gY3VpIGNvcGlhcmUgbCdvcmFyaW9cclxuICAgICAqIEBwYXJhbSB7RGF5SnN9IGZyb21EYXRlIERhdGEgZGEgY3VpIGNvcGlhcmUgbCdvcmFyaW9cclxuICAgICAqL1xyXG4gICAgY29weVRpbWUodG9EYXRlOiBEYXlqcywgZnJvbURhdGU6IERheWpzKSB7XHJcbiAgICAgICAgdGhpcy5zZXRIb3VyKHRvRGF0ZSwgdGhpcy5nZXRIb3VyKGZyb21EYXRlKSk7XHJcbiAgICAgICAgdGhpcy5zZXRNaW51dGUodG9EYXRlLCB0aGlzLmdldE1pbnV0ZShmcm9tRGF0ZSkpO1xyXG4gICAgICAgIHRoaXMuc2V0U2Vjb25kKHRvRGF0ZSwgdGhpcy5nZXRTZWNvbmQoZnJvbURhdGUpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldHRlIGEgY29uZnJvbnRvIGR1ZSBkYXRlXHJcbiAgICAgKiBAcGFyYW0ge0RheWpzfSBmaXJzdCBQcmltYSBkYXRhIGRhIGNvbmZyb250YXJlXHJcbiAgICAgKiBAcGFyYW0ge0RheWpzfSBzZWNvbmQgU2Vjb25kYSBkYXRhIGRhIGNvbmZyb250YXJlXHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNob3dTZWNvbmRzIEluZGljYSBzZSBjb25zaWRlcmFyZSBhbmNoZSBpIHNlY29uZGksIGRpIGRlZmF1bHQgbm9cclxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IDAgc2UgbGUgZHVlIGRhdGUgc29ubyB1Z3VhbGksIHVuIG51bWVybyBtaW5vcmUgZGkgMCBzZSBsYSBwcmltYSBkYXRhIMOoIHByZWNlZGVudGUgYWxsYSBzZWNvbmRhIGUgdW4gbnVtZXJvIG1hZ2dpb3JlIGRpIDAgYWx0cmltZW50aVxyXG4gICAgICovXHJcbiAgICBjb21wYXJlRGF0ZVdpdGhUaW1lKGZpcnN0OiBEYXlqcywgc2Vjb25kOiBEYXlqcywgc2hvd1NlY29uZHM/OiBib29sZWFuKTogbnVtYmVyIHtcclxuICAgICAgICBsZXQgcmVzID0gc3VwZXIuY29tcGFyZURhdGUoZmlyc3QsIHNlY29uZCkgfHxcclxuICAgICAgICAgICAgdGhpcy5nZXRIb3VyKGZpcnN0KSAtIHRoaXMuZ2V0SG91cihzZWNvbmQpIHx8XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0TWludXRlKGZpcnN0KSAtIHRoaXMuZ2V0TWludXRlKHNlY29uZCk7XHJcblxyXG4gICAgICAgIGlmIChzaG93U2Vjb25kcylcclxuICAgICAgICAgICAgcmVzID0gcmVzIHx8IHRoaXMuZ2V0U2Vjb25kKGZpcnN0KSAtIHRoaXMuZ2V0U2Vjb25kKHNlY29uZCk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIHJldHVybiByZXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBc3NlZ25hIGEgdW5hIGRhdGEgaSB2YWxvcmkgZGkgb3JlLCBtaW51dGkgZSBzZWNvbmRpIGRpIGRlZmF1bHQuIFxyXG4gICAgICogXHJcbiAgICAgKiBTZSBub24gc3BlY2lmaWNhdGkgdmVuZ29ubyBhc3NlZ25hdGkgZGVnbGkgJzAnXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7RGF5SnN9IGRhdGUgRGF0YSBhIGN1aSBhc3NlZ25hcmUgaSB2YWxvcmkgZGkgZGVmYXVsdFxyXG4gICAgICogQHBhcmFtIHtudW1iZXJbXX0gZGVmYXVsdFRpbWUgVmFsb3JpIGRpIGRlZmF1bHQgcGVyIG9yZSwgbWludXRpIGUgc2Vjb25kaSwgY29uc2lkZXJhdGkgMCBzZSBub24gcHJlc2VudGlcclxuICAgICAqL1xyXG4gICAgc2V0VGltZUJ5RGVmYXVsdFZhbHVlcyhkYXRlOiBEYXlqcywgZGVmYXVsdFRpbWU6IG51bWJlcltdKSB7XHJcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGRlZmF1bHRUaW1lKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvcignQElucHV0IERlZmF1bHRUaW1lIHNob3VsZCBiZSBhbiBhcnJheScpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldEhvdXIoZGF0ZSwgZGVmYXVsdFRpbWVbMF0gfHwgMCk7XHJcbiAgICAgICAgdGhpcy5zZXRNaW51dGUoZGF0ZSwgZGVmYXVsdFRpbWVbMV0gfHwgMCk7XHJcbiAgICAgICAgdGhpcy5zZXRTZWNvbmQoZGF0ZSwgZGVmYXVsdFRpbWVbMl0gfHwgMCk7XHJcbiAgICB9XHJcbn0iXX0=
|
|
File without changes
|
|
@@ -0,0 +1,28 @@
|
|
|
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 in comune con tutti i Componenti di validazione
|
|
7
|
+
*/
|
|
8
|
+
export class BaseValidationLoc extends LocalizationService {
|
|
9
|
+
/**
|
|
10
|
+
* @ignore
|
|
11
|
+
*/
|
|
12
|
+
constructor(LOC_LOCALE) {
|
|
13
|
+
super(LOC_LOCALE ?? 'it-IT');
|
|
14
|
+
super.set("en->it", "Required Input", ["Input Richiesto"]);
|
|
15
|
+
super.set("en->it", "Invalid Input Format", ["Formato Input Invalido"]);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
BaseValidationLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BaseValidationLoc, deps: [{ token: FAV_LOCALE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
19
|
+
BaseValidationLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BaseValidationLoc });
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BaseValidationLoc, decorators: [{
|
|
21
|
+
type: Injectable
|
|
22
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
23
|
+
type: Optional
|
|
24
|
+
}, {
|
|
25
|
+
type: Inject,
|
|
26
|
+
args: [FAV_LOCALE]
|
|
27
|
+
}] }]; } });
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS12YWxpZGF0aW9uLmxvYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm1zLWFuZC12YWxpZGF0aW9ucy9zcmMvbGliL3ZhbGlkYXRpb25zL2Jhc2UtdmFsaWRhdGlvbi5sb2MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBRXZDOztHQUVHO0FBRUgsTUFBTSxPQUFPLGlCQUFrQixTQUFRLG1CQUFtQjtJQUV0RDs7T0FFRztJQUNILFlBQTZDLFVBQWtCO1FBQzNELEtBQUssQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLENBQUM7UUFDN0IsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7UUFDM0QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUM7SUFDNUUsQ0FBQzs7OEdBVFEsaUJBQWlCLGtCQUtPLFVBQVU7a0hBTGxDLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVOzswQkFNTSxRQUFROzswQkFBSyxNQUFNOzJCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvbG9jYWxpemF0aW9uc1wiO1xyXG5pbXBvcnQgeyBGQVZfTE9DQUxFIH0gZnJvbSAnLi4vdG9rZW5zJztcclxuXHJcbi8qKlxyXG4gKiBDbGFzc2UgZGkgbG9jYWxpenphemlvbmUgaW4gY29tdW5lIGNvbiB0dXR0aSBpIENvbXBvbmVudGkgZGkgdmFsaWRhemlvbmVcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEJhc2VWYWxpZGF0aW9uTG9jIGV4dGVuZHMgTG9jYWxpemF0aW9uU2VydmljZSB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpICBASW5qZWN0KEZBVl9MT0NBTEUpIExPQ19MT0NBTEU6IHN0cmluZykge1xyXG4gICAgICAgIHN1cGVyKExPQ19MT0NBTEUgPz8gJ2l0LUlUJyk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiZW4tPml0XCIsIFwiUmVxdWlyZWQgSW5wdXRcIiwgW1wiSW5wdXQgUmljaGllc3RvXCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJlbi0+aXRcIiwgXCJJbnZhbGlkIElucHV0IEZvcm1hdFwiLCBbXCJGb3JtYXRvIElucHV0IEludmFsaWRvXCJdKTtcclxuICAgIH1cclxufSJdfQ==
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
// Angular
|
|
2
|
+
import { EventEmitter, Input, Output, ViewChild, Directive } from "@angular/core";
|
|
3
|
+
// Direttive, Componenti, Librerie
|
|
4
|
+
import { TooltipDirective } from "ngx-bootstrap/tooltip";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
/**
|
|
7
|
+
* Classe astratta base che contiene le logiche / proprietà in comune a tutti i validatori
|
|
8
|
+
*
|
|
9
|
+
* Nota bene: I tooltip rallentano tantissimo la pagina perché il tizio che ha fatto ngx bootstrap non è capace
|
|
10
|
+
*/
|
|
11
|
+
export class BaseValidation {
|
|
12
|
+
constructor() {
|
|
13
|
+
/**
|
|
14
|
+
* Variabile per tenere in memoria il fatto che il componente è forzato a invalido o no
|
|
15
|
+
*/
|
|
16
|
+
this._forceInvalid = false;
|
|
17
|
+
/**
|
|
18
|
+
* Indica se il valore è obbligatorio o opzionale
|
|
19
|
+
*/
|
|
20
|
+
this.required = false;
|
|
21
|
+
/**
|
|
22
|
+
* Indica se di default deve valutare il messaggio di errore in base al validatore che fallisce.
|
|
23
|
+
*
|
|
24
|
+
* Se fallisce il required validator scriverà che l'input è obbligatorio, se invece fallisce
|
|
25
|
+
* un eventuale pattern validator scriverà che il formato dell'input è invalido
|
|
26
|
+
*/
|
|
27
|
+
this.InferErrorMessages = true;
|
|
28
|
+
/**
|
|
29
|
+
* Messaggio da mostrare se la validazione fallisce.
|
|
30
|
+
*
|
|
31
|
+
* Se questo è valorizzato, il messaggio non viene valutato in automatico nonstante **InferErrorMessages** sia **true**
|
|
32
|
+
*/
|
|
33
|
+
this.validationFailed = "";
|
|
34
|
+
/**
|
|
35
|
+
* Indica se il componente è in sola lettura
|
|
36
|
+
*/
|
|
37
|
+
this.readonly = false;
|
|
38
|
+
/**
|
|
39
|
+
* Indica le dimensioni del componente
|
|
40
|
+
*/
|
|
41
|
+
this.widthPx = null;
|
|
42
|
+
/**
|
|
43
|
+
* Indica se il componente è disabilitato o no (più o meno stesso concetto del readonly)
|
|
44
|
+
*/
|
|
45
|
+
this.disabled = false;
|
|
46
|
+
/**
|
|
47
|
+
* Eventuale placeholder da mostrare al posto del valore quando il valore è nullo / vuoto
|
|
48
|
+
*/
|
|
49
|
+
this.placeholder = "";
|
|
50
|
+
/**
|
|
51
|
+
* Classi da applicare al componente
|
|
52
|
+
*/
|
|
53
|
+
this.class = "";
|
|
54
|
+
/**
|
|
55
|
+
* Stili da applicare al componente
|
|
56
|
+
*/
|
|
57
|
+
this.style = "";
|
|
58
|
+
/**
|
|
59
|
+
* Pattern di validazione dell'input
|
|
60
|
+
*/
|
|
61
|
+
this.pattern = "";
|
|
62
|
+
/**
|
|
63
|
+
* Indica di non validare il componente
|
|
64
|
+
*/
|
|
65
|
+
this.noValidate = false;
|
|
66
|
+
/**
|
|
67
|
+
* Indica se abilitare o meno l'autocompletamento di default del browser
|
|
68
|
+
*/
|
|
69
|
+
this.autocomplete = "off";
|
|
70
|
+
/**
|
|
71
|
+
* Evento che sostituisce l'ngModelChange facendolo funzionare in maniera un po' più consistente
|
|
72
|
+
*/
|
|
73
|
+
this.inputChange = new EventEmitter();
|
|
74
|
+
/**
|
|
75
|
+
* @ignore
|
|
76
|
+
*/
|
|
77
|
+
this.propagateChange = (_) => { };
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Query che raccoglie il tooltip in maniera dinamica (ad ogni change detection)
|
|
81
|
+
*
|
|
82
|
+
* @param {TooltipDirective} comp Elemento HTML a cui è applicata la direttiva del tooltip
|
|
83
|
+
*/
|
|
84
|
+
set tooltip_static(comp) {
|
|
85
|
+
if (comp) {
|
|
86
|
+
this.tooltip = comp;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
;
|
|
90
|
+
/**
|
|
91
|
+
* Query che raccoglie l'input o direttiva che contiene il valore in maniera dinamica (ad ogni change detection)
|
|
92
|
+
*
|
|
93
|
+
* @param {NgModel} comp Elemento HTML associato al ngModel del componente
|
|
94
|
+
*/
|
|
95
|
+
set baseInput_static(comp) {
|
|
96
|
+
if (comp) {
|
|
97
|
+
this.baseInput = comp;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
;
|
|
101
|
+
/**
|
|
102
|
+
* Imposta il componente come "submitted" scatenandone le validazioni ed eventualmente la visualizzazione del tooltip di errore
|
|
103
|
+
*
|
|
104
|
+
* @param {boolean} val **true** se si vuole impostare questo controllo come submitted, **false** altrimenti
|
|
105
|
+
*/
|
|
106
|
+
set submitted(val) {
|
|
107
|
+
this._submitted = val;
|
|
108
|
+
if (!this.baseInput)
|
|
109
|
+
return;
|
|
110
|
+
if (val)
|
|
111
|
+
this.baseInput.control.markAsTouched();
|
|
112
|
+
if (this.baseInput.control.status === "INVALID" && val)
|
|
113
|
+
this.showTooltipWithMessage();
|
|
114
|
+
else
|
|
115
|
+
this.tooltip.hide();
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Imposta il componente come "invalid" a prescindere dai validatori
|
|
119
|
+
*/
|
|
120
|
+
set forceInvalid(val) {
|
|
121
|
+
this._forceInvalid = val;
|
|
122
|
+
if (val)
|
|
123
|
+
setTimeout(() => this.baseInput.control.setErrors({ forcedtoinvalid: true }));
|
|
124
|
+
else
|
|
125
|
+
setTimeout(() => {
|
|
126
|
+
this.baseInput.control.setErrors({ forcedtoinvalid: null });
|
|
127
|
+
this.baseInput.control.updateValueAndValidity();
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Helper che controlla se il tooltip deve essere mostrato o meno,
|
|
132
|
+
* richiamato direttamente dall'HTML dei componenti
|
|
133
|
+
*/
|
|
134
|
+
checkTooltip() {
|
|
135
|
+
if ((this.baseInput.invalid && this.baseInput.touched))
|
|
136
|
+
this.showTooltipWithMessage();
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Helper che calcola il messaggio da mostrare nel tooltip che andrà ad aprire
|
|
140
|
+
*/
|
|
141
|
+
showTooltipWithMessage() {
|
|
142
|
+
this.validationFailed = this.validationFailed ? this.validationFailed : this.InferErrorMessages ? this.inferMessage() : "";
|
|
143
|
+
if (this.validationFailed)
|
|
144
|
+
this.tooltip.show();
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Calcola il messaggio da mostrare in base al valore.
|
|
148
|
+
*
|
|
149
|
+
* Entrare in questa funzione significa che lo stato di validazione è fallito, per questo si comporta semplicemente in maniera esclusiva, e cioè:
|
|
150
|
+
*
|
|
151
|
+
* 1) Se ero required e sono senza valore --> Input richiesto
|
|
152
|
+
*
|
|
153
|
+
* 2) Altrimenti se ho un valore --> Di sicuro il formato è errato
|
|
154
|
+
*/
|
|
155
|
+
inferMessage() {
|
|
156
|
+
if (this.required && !this.baseInput.value)
|
|
157
|
+
return this.lc.loc("Required Input");
|
|
158
|
+
if (this.baseInput.value)
|
|
159
|
+
return this.lc.loc("Invalid Input Format");
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Forza la chiusura del tooltip
|
|
163
|
+
*/
|
|
164
|
+
closeTooltip() {
|
|
165
|
+
this.tooltip.hide();
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Controlla se il controllo è valido e in caso lo sia chiude il tooltip
|
|
169
|
+
*/
|
|
170
|
+
CheckValidity() {
|
|
171
|
+
if (!this.baseInput.statusChanges)
|
|
172
|
+
return;
|
|
173
|
+
this.baseInput.statusChanges.subscribe(event => {
|
|
174
|
+
if (event === "VALID")
|
|
175
|
+
this.tooltip.hide();
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* @ignore
|
|
180
|
+
*/
|
|
181
|
+
setDisabledState(isDisabled) {
|
|
182
|
+
isDisabled ? this.baseInput.control.disable() : this.baseInput.control.enable();
|
|
183
|
+
this.readonly = isDisabled;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
BaseValidation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BaseValidation, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
187
|
+
BaseValidation.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: BaseValidation, inputs: { InferErrorMessages: "InferErrorMessages", validationFailed: "validationFailed", readonly: "readonly", widthPx: "widthPx", disabled: "disabled", placeholder: "placeholder", class: "class", style: "style", pattern: "pattern", noValidate: "noValidate", autocomplete: "autocomplete", submitted: "submitted", forceInvalid: "forceInvalid" }, outputs: { inputChange: "inputChange" }, viewQueries: [{ propertyName: "tooltip", first: true, predicate: TooltipDirective, descendants: true }, { propertyName: "tooltip_static", first: true, predicate: TooltipDirective, descendants: true, static: true }, { propertyName: "baseInput", first: true, predicate: ["baseInput"], descendants: true }, { propertyName: "baseInput_static", first: true, predicate: ["baseInput"], descendants: true, static: true }], ngImport: i0 });
|
|
188
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: BaseValidation, decorators: [{
|
|
189
|
+
type: Directive
|
|
190
|
+
}], propDecorators: { tooltip: [{
|
|
191
|
+
type: ViewChild,
|
|
192
|
+
args: [TooltipDirective, { static: false }]
|
|
193
|
+
}], tooltip_static: [{
|
|
194
|
+
type: ViewChild,
|
|
195
|
+
args: [TooltipDirective, { static: true }]
|
|
196
|
+
}], baseInput: [{
|
|
197
|
+
type: ViewChild,
|
|
198
|
+
args: ["baseInput", { static: false }]
|
|
199
|
+
}], baseInput_static: [{
|
|
200
|
+
type: ViewChild,
|
|
201
|
+
args: ["baseInput", { static: true }]
|
|
202
|
+
}], InferErrorMessages: [{
|
|
203
|
+
type: Input
|
|
204
|
+
}], validationFailed: [{
|
|
205
|
+
type: Input
|
|
206
|
+
}], readonly: [{
|
|
207
|
+
type: Input
|
|
208
|
+
}], widthPx: [{
|
|
209
|
+
type: Input
|
|
210
|
+
}], disabled: [{
|
|
211
|
+
type: Input
|
|
212
|
+
}], placeholder: [{
|
|
213
|
+
type: Input
|
|
214
|
+
}], class: [{
|
|
215
|
+
type: Input
|
|
216
|
+
}], style: [{
|
|
217
|
+
type: Input
|
|
218
|
+
}], pattern: [{
|
|
219
|
+
type: Input
|
|
220
|
+
}], noValidate: [{
|
|
221
|
+
type: Input
|
|
222
|
+
}], autocomplete: [{
|
|
223
|
+
type: Input
|
|
224
|
+
}], inputChange: [{
|
|
225
|
+
type: Output
|
|
226
|
+
}], submitted: [{
|
|
227
|
+
type: Input,
|
|
228
|
+
args: ["submitted"]
|
|
229
|
+
}], forceInvalid: [{
|
|
230
|
+
type: Input
|
|
231
|
+
}] } });
|
|
232
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS12YWxpZGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvdmFsaWRhdGlvbnMvYmFzZS12YWxpZGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU1sRixrQ0FBa0M7QUFDbEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBRXpEOzs7O0dBSUc7QUFFSCxNQUFNLE9BQWdCLGNBQWM7SUFEcEM7UUFhSTs7V0FFRztRQUNPLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBRXpDOztXQUVHO1FBQ0ksYUFBUSxHQUFZLEtBQUssQ0FBQztRQThCakM7Ozs7O1dBS0c7UUFDTSx1QkFBa0IsR0FBWSxJQUFJLENBQUM7UUFFNUM7Ozs7V0FJRztRQUNNLHFCQUFnQixHQUFXLEVBQUUsQ0FBQztRQUV2Qzs7V0FFRztRQUNNLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFbkM7O1dBRUc7UUFDTSxZQUFPLEdBQVcsSUFBSSxDQUFDO1FBRWhDOztXQUVHO1FBQ00sYUFBUSxHQUFZLEtBQUssQ0FBQztRQUVuQzs7V0FFRztRQUNNLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBRWxDOztXQUVHO1FBQ00sVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUU1Qjs7V0FFRztRQUNNLFVBQUssR0FBVyxFQUFFLENBQUM7UUFFNUI7O1dBRUc7UUFDTSxZQUFPLEdBQVcsRUFBRSxDQUFDO1FBRTlCOztXQUVHO1FBQ00sZUFBVSxHQUFZLEtBQUssQ0FBQztRQUVyQzs7V0FFRztRQUNNLGlCQUFZLEdBQVcsS0FBSyxDQUFDO1FBRXRDOztXQUVHO1FBQ08sZ0JBQVcsR0FBeUIsSUFBSSxZQUFZ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QkFBbkIsS0FBSztnQkFLRyxLQUFLO3NCQUFiLEtBQUs7Z0JBS0csS0FBSztzQkFBYixLQUFLO2dCQUtHLE9BQU87c0JBQWYsS0FBSztnQkFLRyxVQUFVO3NCQUFsQixLQUFLO2dCQUtHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBS0ksV0FBVztzQkFBcEIsTUFBTTtnQkFPaUIsU0FBUztzQkFBaEMsS0FBSzt1QkFBQyxXQUFXO2dCQWlCTCxZQUFZO3NCQUF4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCwgRGlyZWN0aXZlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTmdNb2RlbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuLy8gQ29uZmlndXJhemlvbmlcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvbG9jYWxpemF0aW9uc1wiO1xyXG5cclxuLy8gRGlyZXR0aXZlLCBDb21wb25lbnRpLCBMaWJyZXJpZVxyXG5pbXBvcnQgeyBUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSBcIm5neC1ib290c3RyYXAvdG9vbHRpcFwiO1xyXG5cclxuLyoqXHJcbiAqIENsYXNzZSBhc3RyYXR0YSBiYXNlIGNoZSBjb250aWVuZSBsZSBsb2dpY2hlIC8gcHJvcHJpZXTDoCBpbiBjb211bmUgYSB0dXR0aSBpIHZhbGlkYXRvcmlcclxuICogXHJcbiAqIE5vdGEgYmVuZTogSSB0b29sdGlwIHJhbGxlbnRhbm8gdGFudGlzc2ltbyBsYSBwYWdpbmEgcGVyY2jDqSBpbCB0aXppbyBjaGUgaGEgZmF0dG8gbmd4IGJvb3RzdHJhcCBub24gw6ggY2FwYWNlXHJcbiAqL1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VWYWxpZGF0aW9uIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNlcnZpemlvIGRpIGxvY2FsaXp6YXppb25lIGRlbCBDb21wb25lbnRlXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBsYzogTG9jYWxpemF0aW9uU2VydmljZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFZhcmlhYmlsZSBwZXIgdGVuZXJlIGluIG1lbW9yaWEgbG8gc3RhdG8gZGkgc3VibWl0IGRpIHF1ZXN0byBjb21wb25lbnRlXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBfc3VibWl0dGVkOiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFyaWFiaWxlIHBlciB0ZW5lcmUgaW4gbWVtb3JpYSBpbCBmYXR0byBjaGUgaWwgY29tcG9uZW50ZSDDqCBmb3J6YXRvIGEgaW52YWxpZG8gbyBub1xyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgX2ZvcmNlSW52YWxpZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhIHNlIGlsIHZhbG9yZSDDqCBvYmJsaWdhdG9yaW8gbyBvcHppb25hbGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBRdWVyeSBjaGUgcmFjY29nbGllIGlsIHRvb2x0aXAgaW4gbWFuaWVyYSBzdGF0aWNhIChzb2xvIGFsbCdpbml6aW8pXHJcbiAgICAgKi9cclxuICAgIEBWaWV3Q2hpbGQoVG9vbHRpcERpcmVjdGl2ZSwgeyBzdGF0aWM6IGZhbHNlIH0pIHByb3RlY3RlZCB0b29sdGlwOiBUb29sdGlwRGlyZWN0aXZlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUXVlcnkgY2hlIHJhY2NvZ2xpZSBpbCB0b29sdGlwIGluIG1hbmllcmEgZGluYW1pY2EgKGFkIG9nbmkgY2hhbmdlIGRldGVjdGlvbilcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtUb29sdGlwRGlyZWN0aXZlfSBjb21wIEVsZW1lbnRvIEhUTUwgYSBjdWkgw6ggYXBwbGljYXRhIGxhIGRpcmV0dGl2YSBkZWwgdG9vbHRpcFxyXG4gICAgICovXHJcbiAgICBAVmlld0NoaWxkKFRvb2x0aXBEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIHNldCB0b29sdGlwX3N0YXRpYyhjb21wOiBUb29sdGlwRGlyZWN0aXZlKSB7XHJcbiAgICAgICAgaWYgKGNvbXApIHsgdGhpcy50b29sdGlwID0gY29tcDsgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFF1ZXJ5IGNoZSByYWNjb2dsaWUgbCdpbnB1dCBvIGRpcmV0dGl2YSBjaGUgY29udGllbmUgaWwgdmFsb3JlIGluIG1hbmllcmEgc3RhdGljYSAoc29sbyBhbGwnaW5pemlvKVxyXG4gICAgICovXHJcbiAgICBAVmlld0NoaWxkKFwiYmFzZUlucHV0XCIsIHsgc3RhdGljOiBmYWxzZSB9KSBiYXNlSW5wdXQ6IE5nTW9kZWw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBRdWVyeSBjaGUgcmFjY29nbGllIGwnaW5wdXQgbyBkaXJldHRpdmEgY2hlIGNvbnRpZW5lIGlsIHZhbG9yZSBpbiBtYW5pZXJhIGRpbmFtaWNhIChhZCBvZ25pIGNoYW5nZSBkZXRlY3Rpb24pXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7TmdNb2RlbH0gY29tcCBFbGVtZW50byBIVE1MIGFzc29jaWF0byBhbCBuZ01vZGVsIGRlbCBjb21wb25lbnRlXHJcbiAgICAgKi9cclxuICAgIEBWaWV3Q2hpbGQoXCJiYXNlSW5wdXRcIiwgeyBzdGF0aWM6IHRydWUgfSkgc2V0IGJhc2VJbnB1dF9zdGF0aWMoY29tcDogTmdNb2RlbCkge1xyXG4gICAgICAgIGlmIChjb21wKSB7IHRoaXMuYmFzZUlucHV0ID0gY29tcDsgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYSBzZSBkaSBkZWZhdWx0IGRldmUgdmFsdXRhcmUgaWwgbWVzc2FnZ2lvIGRpIGVycm9yZSBpbiBiYXNlIGFsIHZhbGlkYXRvcmUgY2hlIGZhbGxpc2NlLlxyXG4gICAgICogXHJcbiAgICAgKiBTZSBmYWxsaXNjZSBpbCByZXF1aXJlZCB2YWxpZGF0b3Igc2NyaXZlcsOgIGNoZSBsJ2lucHV0IMOoIG9iYmxpZ2F0b3Jpbywgc2UgaW52ZWNlIGZhbGxpc2NlIFxyXG4gICAgICogdW4gZXZlbnR1YWxlIHBhdHRlcm4gdmFsaWRhdG9yIHNjcml2ZXLDoCBjaGUgaWwgZm9ybWF0byBkZWxsJ2lucHV0IMOoIGludmFsaWRvXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIEluZmVyRXJyb3JNZXNzYWdlczogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXNzYWdnaW8gZGEgbW9zdHJhcmUgc2UgbGEgdmFsaWRhemlvbmUgZmFsbGlzY2UuIFxyXG4gICAgICogXHJcbiAgICAgKiBTZSBxdWVzdG8gw6ggdmFsb3JpenphdG8sIGlsIG1lc3NhZ2dpbyBub24gdmllbmUgdmFsdXRhdG8gaW4gYXV0b21hdGljbyBub25zdGFudGUgKipJbmZlckVycm9yTWVzc2FnZXMqKiBzaWEgKip0cnVlKipcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgdmFsaWRhdGlvbkZhaWxlZDogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYSBzZSBpbCBjb21wb25lbnRlIMOoIGluIHNvbGEgbGV0dHVyYVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhIGxlIGRpbWVuc2lvbmkgZGVsIGNvbXBvbmVudGVcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgd2lkdGhQeDogbnVtYmVyID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYSBzZSBpbCBjb21wb25lbnRlIMOoIGRpc2FiaWxpdGF0byBvIG5vIChwacO5IG8gbWVubyBzdGVzc28gY29uY2V0dG8gZGVsIHJlYWRvbmx5KVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnR1YWxlIHBsYWNlaG9sZGVyIGRhIG1vc3RyYXJlIGFsIHBvc3RvIGRlbCB2YWxvcmUgcXVhbmRvIGlsIHZhbG9yZSDDqCBudWxsbyAvIHZ1b3RvXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2xhc3NpIGRhIGFwcGxpY2FyZSBhbCBjb21wb25lbnRlXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGNsYXNzOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU3RpbGkgZGEgYXBwbGljYXJlIGFsIGNvbXBvbmVudGVcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgc3R5bGU6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQYXR0ZXJuIGRpIHZhbGlkYXppb25lIGRlbGwnaW5wdXRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcGF0dGVybjogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYSBkaSBub24gdmFsaWRhcmUgaWwgY29tcG9uZW50ZVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBub1ZhbGlkYXRlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2Egc2UgYWJpbGl0YXJlIG8gbWVubyBsJ2F1dG9jb21wbGV0YW1lbnRvIGRpIGRlZmF1bHQgZGVsIGJyb3dzZXJcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgYXV0b2NvbXBsZXRlOiBzdHJpbmcgPSBcIm9mZlwiO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRXZlbnRvIGNoZSBzb3N0aXR1aXNjZSBsJ25nTW9kZWxDaGFuZ2UgZmFjZW5kb2xvIGZ1bnppb25hcmUgaW4gbWFuaWVyYSB1biBwbycgcGnDuSBjb25zaXN0ZW50ZVxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgaW5wdXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbXBvc3RhIGlsIGNvbXBvbmVudGUgY29tZSBcInN1Ym1pdHRlZFwiIHNjYXRlbmFuZG9uZSBsZSB2YWxpZGF6aW9uaSBlZCBldmVudHVhbG1lbnRlIGxhIHZpc3VhbGl6emF6aW9uZSBkZWwgdG9vbHRpcCBkaSBlcnJvcmVcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSB2YWwgKip0cnVlKiogc2Ugc2kgdnVvbGUgaW1wb3N0YXJlIHF1ZXN0byBjb250cm9sbG8gY29tZSBzdWJtaXR0ZWQsICoqZmFsc2UqKiBhbHRyaW1lbnRpXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dChcInN1Ym1pdHRlZFwiKSBzZXQgc3VibWl0dGVkKHZhbDogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX3N1Ym1pdHRlZCA9IHZhbDtcclxuICAgICAgICBpZiAoIXRoaXMuYmFzZUlucHV0KVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIGlmICh2YWwpXHJcbiAgICAgICAgICAgIHRoaXMuYmFzZUlucHV0LmNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5iYXNlSW5wdXQuY29udHJvbC5zdGF0dXMgPT09IFwiSU5WQUxJRFwiICYmIHZhbClcclxuICAgICAgICAgICAgdGhpcy5zaG93VG9vbHRpcFdpdGhNZXNzYWdlKCk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLnRvb2x0aXAuaGlkZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW1wb3N0YSBpbCBjb21wb25lbnRlIGNvbWUgXCJpbnZhbGlkXCIgYSBwcmVzY2luZGVyZSBkYWkgdmFsaWRhdG9yaVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBzZXQgZm9yY2VJbnZhbGlkKHZhbDogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX2ZvcmNlSW52YWxpZCA9IHZhbDtcclxuXHJcbiAgICAgICAgaWYgKHZhbClcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmJhc2VJbnB1dC5jb250cm9sLnNldEVycm9ycyh7IGZvcmNlZHRvaW52YWxpZDogdHJ1ZSB9KSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuYmFzZUlucHV0LmNvbnRyb2wuc2V0RXJyb3JzKHsgZm9yY2VkdG9pbnZhbGlkOiBudWxsIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5iYXNlSW5wdXQuY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhlbHBlciBjaGUgY29udHJvbGxhIHNlIGlsIHRvb2x0aXAgZGV2ZSBlc3NlcmUgbW9zdHJhdG8gbyBtZW5vLCBcclxuICAgICAqIHJpY2hpYW1hdG8gZGlyZXR0YW1lbnRlIGRhbGwnSFRNTCBkZWkgY29tcG9uZW50aVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2hlY2tUb29sdGlwKCkge1xyXG4gICAgICAgIGlmICgodGhpcy5iYXNlSW5wdXQuaW52YWxpZCAmJiB0aGlzLmJhc2VJbnB1dC50b3VjaGVkKSlcclxuICAgICAgICAgICAgdGhpcy5zaG93VG9vbHRpcFdpdGhNZXNzYWdlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIZWxwZXIgY2hlIGNhbGNvbGEgaWwgbWVzc2FnZ2lvIGRhIG1vc3RyYXJlIG5lbCB0b29sdGlwIGNoZSBhbmRyw6AgYWQgYXByaXJlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgc2hvd1Rvb2x0aXBXaXRoTWVzc2FnZSgpIHtcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb25GYWlsZWQgPSB0aGlzLnZhbGlkYXRpb25GYWlsZWQgPyB0aGlzLnZhbGlkYXRpb25GYWlsZWQgOiB0aGlzLkluZmVyRXJyb3JNZXNzYWdlcyA/IHRoaXMuaW5mZXJNZXNzYWdlKCkgOiBcIlwiO1xyXG4gICAgICAgIGlmICh0aGlzLnZhbGlkYXRpb25GYWlsZWQpXHJcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcC5zaG93KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWxjb2xhIGlsIG1lc3NhZ2dpbyBkYSBtb3N0cmFyZSBpbiBiYXNlIGFsIHZhbG9yZS5cclxuICAgICAqIFxyXG4gICAgICogRW50cmFyZSBpbiBxdWVzdGEgZnVuemlvbmUgc2lnbmlmaWNhIGNoZSBsbyBzdGF0byBkaSB2YWxpZGF6aW9uZSDDqCBmYWxsaXRvLCBwZXIgcXVlc3RvIHNpIGNvbXBvcnRhIHNlbXBsaWNlbWVudGUgaW4gbWFuaWVyYSBlc2NsdXNpdmEsIGUgY2lvw6g6XHJcbiAgICAgKiBcclxuICAgICAqIDEpIFNlIGVybyByZXF1aXJlZCBlIHNvbm8gc2VuemEgdmFsb3JlIC0tPiBJbnB1dCByaWNoaWVzdG9cclxuICAgICAqIFxyXG4gICAgICogMikgQWx0cmltZW50aSBzZSBobyB1biB2YWxvcmUgLS0+IERpIHNpY3VybyBpbCBmb3JtYXRvIMOoIGVycmF0b1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGluZmVyTWVzc2FnZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICh0aGlzLnJlcXVpcmVkICYmICF0aGlzLmJhc2VJbnB1dC52YWx1ZSlcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubGMubG9jKFwiUmVxdWlyZWQgSW5wdXRcIilcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuYmFzZUlucHV0LnZhbHVlKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sYy5sb2MoXCJJbnZhbGlkIElucHV0IEZvcm1hdFwiKVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRm9yemEgbGEgY2hpdXN1cmEgZGVsIHRvb2x0aXBcclxuICAgICAqL1xyXG4gICAgY2xvc2VUb29sdGlwKCkge1xyXG4gICAgICAgIHRoaXMudG9vbHRpcC5oaWRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb250cm9sbGEgc2UgaWwgY29udHJvbGxvIMOoIHZhbGlkbyBlIGluIGNhc28gbG8gc2lhIGNoaXVkZSBpbCB0b29sdGlwXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBDaGVja1ZhbGlkaXR5KCkge1xyXG4gICAgICAgIGlmICghdGhpcy5iYXNlSW5wdXQuc3RhdHVzQ2hhbmdlcylcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLmJhc2VJbnB1dC5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChldmVudCA9PT0gXCJWQUxJRFwiKVxyXG4gICAgICAgICAgICAgICAgdGhpcy50b29sdGlwLmhpZGUoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIGlzRGlzYWJsZWQgPyB0aGlzLmJhc2VJbnB1dC5jb250cm9sLmRpc2FibGUoKSA6IHRoaXMuYmFzZUlucHV0LmNvbnRyb2wuZW5hYmxlKCk7XHJcbiAgICAgICAgdGhpcy5yZWFkb25seSA9IGlzRGlzYWJsZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBwcm9wYWdhdGVDaGFuZ2UgPSAoXzogYW55KSA9PiB7IH07XHJcbn0iXX0=
|