@esfaenza/forms-and-validations 12.2.31 → 13.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/esfaenza-forms-and-validations.d.ts +1 -12
  2. package/esm2020/esfaenza-forms-and-validations.mjs +5 -0
  3. package/esm2020/lib/forms/base-form-control.mjs +482 -0
  4. package/esm2020/lib/forms/form-adaptive/form-adaptive.component.loc.mjs +28 -0
  5. package/esm2020/lib/forms/form-adaptive/form-adaptive.component.mjs +294 -0
  6. package/esm2020/lib/forms/form-autocomplete/form-autocomplete.component.loc.mjs +26 -0
  7. package/esm2020/lib/forms/form-autocomplete/form-autocomplete.component.mjs +200 -0
  8. package/esm2020/lib/forms/form-checkbox/form-checkbox.component.mjs +52 -0
  9. package/esm2020/lib/forms/form-date/form-date.component.mjs +59 -0
  10. package/esm2020/lib/forms/form-datetime/form-datetime.component.mjs +59 -0
  11. package/esm2020/lib/forms/form-empty/form-empty.component.mjs +36 -0
  12. package/esm2020/lib/forms/form-error/form-error.component.mjs +52 -0
  13. package/esm2020/lib/forms/form-file/form-file.component.loc.mjs +28 -0
  14. package/esm2020/lib/forms/form-file/form-file.component.mjs +119 -0
  15. package/esm2020/lib/forms/form-info/form-info.component.mjs +52 -0
  16. package/esm2020/lib/forms/form-input/form-input.component.mjs +93 -0
  17. package/esm2020/lib/forms/form-multiselect/form-multiselect.component.loc.mjs +29 -0
  18. package/esm2020/lib/forms/form-multiselect/form-multiselect.component.mjs +159 -0
  19. package/esm2020/lib/forms/form-select/form-select.component.loc.mjs +26 -0
  20. package/esm2020/lib/forms/form-select/form-select.component.mjs +129 -0
  21. package/esm2020/lib/forms/form-template/form-template.component.mjs +71 -0
  22. package/esm2020/lib/forms/form-textarea/form-textarea.component.mjs +54 -0
  23. package/esm2020/lib/forms/form-time/form-time.component.mjs +131 -0
  24. package/esm2020/lib/forms-and-validations.module.mjs +203 -0
  25. package/{esm2015/lib/models/AppFile.js → esm2020/lib/models/AppFile.mjs} +0 -0
  26. package/{esm2015/lib/models/FormsAndValidationsModuleConfig.js → esm2020/lib/models/FormsAndValidationsModuleConfig.mjs} +0 -0
  27. package/esm2020/lib/models/dayjs-adapter/dayjs-date-adapter.mjs +89 -0
  28. package/{esm2015/lib/tokens.js → esm2020/lib/tokens.mjs} +0 -0
  29. package/esm2020/lib/validations/base-validation.loc.mjs +28 -0
  30. package/esm2020/lib/validations/base-validation.mjs +238 -0
  31. package/esm2020/lib/validations/customValidators/CustomRequiredDirective.mjs +41 -0
  32. package/esm2020/lib/validations/validation-autocomplete/validation-autocomplete.component.mjs +168 -0
  33. package/esm2020/lib/validations/validation-currency/validation-currency.component.mjs +61 -0
  34. package/esm2020/lib/validations/validation-date/validation-date.component.mjs +177 -0
  35. package/esm2020/lib/validations/validation-datetime/validation-datetime.component.mjs +206 -0
  36. package/esm2020/lib/validations/validation-input/validation-input.component.mjs +207 -0
  37. package/esm2020/lib/validations/validation-select/validation-select.component.mjs +184 -0
  38. package/esm2020/lib/validations/validation-text-area/validation-text-area.component.mjs +64 -0
  39. package/esm2020/public-api.mjs +35 -0
  40. package/fesm2015/esfaenza-forms-and-validations.mjs +3626 -0
  41. package/fesm2015/esfaenza-forms-and-validations.mjs.map +1 -0
  42. package/fesm2020/esfaenza-forms-and-validations.mjs +3568 -0
  43. package/fesm2020/esfaenza-forms-and-validations.mjs.map +1 -0
  44. package/lib/forms/base-form-control.d.ts +3 -0
  45. package/lib/forms/form-adaptive/form-adaptive.component.d.ts +3 -0
  46. package/lib/forms/form-adaptive/form-adaptive.component.loc.d.ts +3 -0
  47. package/lib/forms/form-autocomplete/form-autocomplete.component.d.ts +3 -0
  48. package/lib/forms/form-autocomplete/form-autocomplete.component.loc.d.ts +3 -0
  49. package/lib/forms/form-checkbox/form-checkbox.component.d.ts +3 -0
  50. package/lib/forms/form-date/form-date.component.d.ts +3 -0
  51. package/lib/forms/form-datetime/form-datetime.component.d.ts +3 -0
  52. package/lib/forms/form-empty/form-empty.component.d.ts +3 -0
  53. package/lib/forms/form-error/form-error.component.d.ts +3 -0
  54. package/lib/forms/form-file/form-file.component.d.ts +3 -0
  55. package/lib/forms/form-file/form-file.component.loc.d.ts +3 -0
  56. package/lib/forms/form-info/form-info.component.d.ts +3 -0
  57. package/lib/forms/form-input/form-input.component.d.ts +3 -0
  58. package/lib/forms/form-multiselect/form-multiselect.component.d.ts +3 -0
  59. package/lib/forms/form-multiselect/form-multiselect.component.loc.d.ts +3 -0
  60. package/lib/forms/form-select/form-select.component.d.ts +3 -0
  61. package/lib/forms/form-select/form-select.component.loc.d.ts +3 -0
  62. package/lib/forms/form-template/form-template.component.d.ts +3 -0
  63. package/lib/forms/form-textarea/form-textarea.component.d.ts +3 -0
  64. package/lib/forms/form-time/form-time.component.d.ts +3 -0
  65. package/lib/forms-and-validations.module.d.ts +38 -0
  66. package/lib/models/dayjs-adapter/dayjs-date-adapter.d.ts +3 -0
  67. package/lib/validations/base-validation.d.ts +7 -0
  68. package/lib/validations/base-validation.loc.d.ts +3 -0
  69. package/lib/validations/customValidators/CustomRequiredDirective.d.ts +3 -0
  70. package/lib/validations/validation-autocomplete/validation-autocomplete.component.d.ts +3 -0
  71. package/lib/validations/validation-currency/validation-currency.component.d.ts +3 -0
  72. package/lib/validations/validation-date/validation-date.component.d.ts +3 -0
  73. package/lib/validations/validation-datetime/validation-datetime.component.d.ts +3 -0
  74. package/lib/validations/validation-input/validation-input.component.d.ts +3 -0
  75. package/lib/validations/validation-select/validation-select.component.d.ts +3 -0
  76. package/lib/validations/validation-text-area/validation-text-area.component.d.ts +3 -0
  77. package/package.json +31 -19
  78. package/public-api.d.ts +2 -0
  79. package/bundles/esfaenza-forms-and-validations.umd.js +0 -3754
  80. package/bundles/esfaenza-forms-and-validations.umd.js.map +0 -1
  81. package/esfaenza-forms-and-validations.metadata.json +0 -1
  82. package/esm2015/esfaenza-forms-and-validations.js +0 -17
  83. package/esm2015/lib/forms/base-form-control.js +0 -460
  84. package/esm2015/lib/forms/form-adaptive/form-adaptive.component.js +0 -277
  85. package/esm2015/lib/forms/form-adaptive/form-adaptive.component.loc.js +0 -23
  86. package/esm2015/lib/forms/form-autocomplete/form-autocomplete.component.js +0 -187
  87. package/esm2015/lib/forms/form-autocomplete/form-autocomplete.component.loc.js +0 -21
  88. package/esm2015/lib/forms/form-checkbox/form-checkbox.component.js +0 -41
  89. package/esm2015/lib/forms/form-date/form-date.component.js +0 -49
  90. package/esm2015/lib/forms/form-datetime/form-datetime.component.js +0 -49
  91. package/esm2015/lib/forms/form-empty/form-empty.component.js +0 -34
  92. package/esm2015/lib/forms/form-error/form-error.component.js +0 -49
  93. package/esm2015/lib/forms/form-file/form-file.component.js +0 -109
  94. package/esm2015/lib/forms/form-file/form-file.component.loc.js +0 -23
  95. package/esm2015/lib/forms/form-info/form-info.component.js +0 -49
  96. package/esm2015/lib/forms/form-input/form-input.component.js +0 -76
  97. package/esm2015/lib/forms/form-multiselect/form-multiselect.component.js +0 -154
  98. package/esm2015/lib/forms/form-multiselect/form-multiselect.component.loc.js +0 -24
  99. package/esm2015/lib/forms/form-select/form-select.component.js +0 -114
  100. package/esm2015/lib/forms/form-select/form-select.component.loc.js +0 -21
  101. package/esm2015/lib/forms/form-template/form-template.component.js +0 -64
  102. package/esm2015/lib/forms/form-textarea/form-textarea.component.js +0 -44
  103. package/esm2015/lib/forms/form-time/form-time.component.js +0 -117
  104. package/esm2015/lib/forms-and-validations.module.js +0 -144
  105. package/esm2015/lib/models/dayjs-adapter/dayjs-date-adapter.js +0 -86
  106. package/esm2015/lib/validations/base-validation.js +0 -208
  107. package/esm2015/lib/validations/base-validation.loc.js +0 -23
  108. package/esm2015/lib/validations/customValidators/CustomRequiredDirective.js +0 -35
  109. package/esm2015/lib/validations/validation-autocomplete/validation-autocomplete.component.js +0 -151
  110. package/esm2015/lib/validations/validation-currency/validation-currency.component.js +0 -48
  111. package/esm2015/lib/validations/validation-date/validation-date.component.js +0 -165
  112. package/esm2015/lib/validations/validation-datetime/validation-datetime.component.js +0 -193
  113. package/esm2015/lib/validations/validation-input/validation-input.component.js +0 -186
  114. package/esm2015/lib/validations/validation-select/validation-select.component.js +0 -166
  115. package/esm2015/lib/validations/validation-text-area/validation-text-area.component.js +0 -52
  116. package/esm2015/public-api.js +0 -32
  117. package/fesm2015/esfaenza-forms-and-validations.js +0 -3262
  118. package/fesm2015/esfaenza-forms-and-validations.js.map +0 -1
@@ -1,144 +0,0 @@
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
- /**
45
- * Formato in display (modalità breve, senza ore, minuti e secondi) delle date per tutti i componenti che utilizzino input data.
46
- *
47
- * Da convenzione è sempre quello italiano quindi viene cablato
48
- */
49
- const formats = {
50
- parse: { dateInput: 'DD/MM/YYYY' },
51
- display: {
52
- dateInput: 'DD/MM/YYYY',
53
- monthYearLabel: 'MM YYYY',
54
- dateA11yLabel: 'DD/MM/YYYY',
55
- monthYearA11yLabel: 'MM YYYY',
56
- }
57
- };
58
- /**
59
- * Formato in display (modalità lunga, con ore, minuti e secondi) delle date per tutti i componenti che utilizzino input data.
60
- *
61
- * Da convenzione è sempre quello italiano quindi viene cablato
62
- */
63
- const formats_long = {
64
- parse: { dateInput: 'DD/MM/YYYY HH:mm:ss' },
65
- display: {
66
- dateInput: 'DD/MM/YYYY HH:mm:ss',
67
- monthYearLabel: 'MM YYYY',
68
- dateA11yLabel: 'DD/MM/YYYY HH:mm:ss',
69
- monthYearA11yLabel: 'MM YYYY',
70
- }
71
- };
72
- /**
73
- * Componenti Dichiarati ed esportati dalla libreria
74
- */
75
- const COMPONENTS = [
76
- ValidationInputComponent,
77
- ValidationSelectComponent,
78
- ValidationDateComponent,
79
- CustomRequiredDirective,
80
- ValidationCurrencyComponent,
81
- ValidationTextAreaComponent,
82
- FormCheckboxComponent,
83
- FormDateComponent,
84
- FormEmptyComponent,
85
- FormInputComponent,
86
- FormSelectComponent,
87
- FormTextareaComponent,
88
- FormTemplateComponent,
89
- FormErrorComponent,
90
- FormInfoComponent,
91
- FormAdaptiveComponent,
92
- FormMultiSelectComponent,
93
- FormFileComponent,
94
- ValidationAutocompleteComponent,
95
- FormAutocompleteComponent,
96
- FormDateTimeComponent,
97
- ValidationDateTimeComponent,
98
- FormTimeComponent
99
- ];
100
- /**
101
- * Moduli utilizzati solo dalla libreria
102
- */
103
- const MODULES = [
104
- CommonModule,
105
- FormsModule,
106
- LocalizationModule,
107
- MatInputModule,
108
- MatDatepickerModule,
109
- MatDayjsDateModule,
110
- TooltipModule,
111
- CurrencyMaskModule,
112
- MatAutocompleteModule,
113
- NgxMatDatetimePickerModule,
114
- NgxMatTimepickerModule
115
- ];
116
- /**
117
- * Moduli utilizzati dalla libreria e che devono essere esposti all'esterno
118
- */
119
- const MODULES_TO_EXPORT = [
120
- AngularMultiSelectModule
121
- ];
122
- export class FormsAndValidationsModule {
123
- static forRoot(config) {
124
- return {
125
- ngModule: FormsAndValidationsModule,
126
- providers: [
127
- { provide: FAV_LOCALE, useValue: (config === null || config === void 0 ? void 0 : config.locale) || 'it-IT' },
128
- { provide: ACO_CUSTOMKEY, useValue: (config === null || config === void 0 ? void 0 : config.acocustom) || null },
129
- { provide: MAT_DATE_LOCALE, useValue: 'it' },
130
- { provide: MAT_DATE_FORMATS, useValue: formats },
131
- { provide: NGX_MAT_DATE_FORMATS, useValue: formats_long },
132
- { provide: NgxMatDateAdapter, useClass: NgxExpandedDayJsDateAdapter },
133
- ]
134
- };
135
- }
136
- }
137
- FormsAndValidationsModule.decorators = [
138
- { type: NgModule, args: [{
139
- imports: [...MODULES, ...MODULES_TO_EXPORT],
140
- declarations: [...COMPONENTS],
141
- exports: [...MODULES_TO_EXPORT, ...COMPONENTS]
142
- },] }
143
- ];
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXMtYW5kLXZhbGlkYXRpb25zLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm1zLWFuZC12YWxpZGF0aW9ucy9zcmMvbGliL2Zvcm1zLWFuZC12YWxpZGF0aW9ucy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUzRSxLQUFLO0FBQ0wsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFakUscUJBQXFCO0FBQ3JCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSwwQkFBMEIsRUFBRSxvQkFBb0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzNKLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVyRCxP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QkFDN0IsT0FBTyxFQUFFLENBQUMsR0FBRyxpQkFBaUIsRUFBRSxHQUFHLFVBQVUsQ0FBQzthQUMvQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdERhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcclxuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcclxuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXRcIjtcclxuaW1wb3J0IHsgTUFUX0RBVEVfTE9DQUxFLCBNQVRfREFURV9GT1JNQVRTIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcclxuXHJcbi8vIEVzXHJcbmltcG9ydCB7IExvY2FsaXphdGlvbk1vZHVsZSB9IGZyb20gXCJAZXNmYWVuemEvbG9jYWxpemF0aW9uc1wiO1xyXG5pbXBvcnQgeyBNYXREYXlqc0RhdGVNb2R1bGUgfSBmcm9tICdAZXNmYWVuemEvbWF0ZXJpYWwtZGF5anMtYWRhcHRlcic7XHJcbmltcG9ydCB7IEN1cnJlbmN5TWFza01vZHVsZSB9IGZyb20gJ0Blc2ZhZW56YS9uZ3gtY3VycmVuY3ktbWFzayc7XHJcblxyXG4vLyBMaWJyZXJpZSAvIE1vZGVsbGlcclxuaW1wb3J0IHsgQW5ndWxhck11bHRpU2VsZWN0TW9kdWxlIH0gZnJvbSBcImFuZ3VsYXIyLW11bHRpc2VsZWN0LWRyb3Bkb3duXCI7XHJcbmltcG9ydCB7IE5neE1hdERhdGVBZGFwdGVyLCBOZ3hNYXREYXRldGltZVBpY2tlck1vZHVsZSwgTkdYX01BVF9EQVRFX0ZPUk1BVFMsIE5neE1hdFRpbWVwaWNrZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci1tYXRlcmlhbC1jb21wb25lbnRzL2RhdGV0aW1lLXBpY2tlcic7XHJcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3Rvb2x0aXAnO1xyXG5cclxuaW1wb3J0IHsgRkFWX0xPQ0FMRSwgQUNPX0NVU1RPTUtFWSB9IGZyb20gJy4vdG9rZW5zJztcclxuaW1wb3J0IHsgRm9ybXNBbmRWYWxpZGF0aW9uc01vZHVsZUNvbmZpZyB9IGZyb20gJy4vbW9kZWxzL0Zvcm1zQW5kVmFsaWRhdGlvbnNNb2R1bGVDb25maWcnO1xyXG5pbXBvcnQgeyBDdXN0b21SZXF1aXJlZERpcmVjdGl2ZSB9IGZyb20gJy4vdmFsaWRhdGlvbnMvY3VzdG9tVmFsaWRhdG9ycy9DdXN0b21SZXF1aXJlZERpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IE5neEV4cGFuZGVkRGF5SnNEYXRlQWRhcHRlciB9IGZyb20gJy4vbW9kZWxzL2RheWpzLWFkYXB0ZXIvZGF5anMtZGF0ZS1hZGFwdGVyJztcclxuXHJcbi8vIFZhbGlkYXRpb25zXHJcbmltcG9ydCB7IFZhbGlkYXRpb25TZWxlY3RDb21wb25lbnQgfSBmcm9tICcuL3ZhbGlkYXRpb25zL3ZhbGlkYXRpb24tc2VsZWN0L3ZhbGlkYXRpb24tc2VsZWN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb25EYXRlQ29tcG9uZW50IH0gZnJvbSAnLi92YWxpZGF0aW9ucy92YWxpZGF0aW9uLWRhdGUvdmFsaWRhdGlvbi1kYXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb25DdXJyZW5jeUNvbXBvbmVudCB9IGZyb20gJy4vdmFsaWRhdGlvbnMvdmFsaWRhdGlvbi1jdXJyZW5jeS92YWxpZGF0aW9uLWN1cnJlbmN5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb25UZXh0QXJlYUNvbXBvbmVudCB9IGZyb20gJy4vdmFsaWRhdGlvbnMvdmFsaWRhdGlvbi10ZXh0LWFyZWEvdmFsaWRhdGlvbi10ZXh0LWFyZWEuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbklucHV0Q29tcG9uZW50IH0gZnJvbSAnLi92YWxpZGF0aW9ucy92YWxpZGF0aW9uLWlucHV0L3ZhbGlkYXRpb24taW5wdXQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbkRhdGVUaW1lQ29tcG9uZW50IH0gZnJvbSAnLi92YWxpZGF0aW9ucy92YWxpZGF0aW9uLWRhdGV0aW1lL3ZhbGlkYXRpb24tZGF0ZXRpbWUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbkF1dG9jb21wbGV0ZUNvbXBvbmVudCB9IGZyb20gJy4vdmFsaWRhdGlvbnMvdmFsaWRhdGlvbi1hdXRvY29tcGxldGUvdmFsaWRhdGlvbi1hdXRvY29tcGxldGUuY29tcG9uZW50JztcclxuXHJcbi8vIEZvcm1zXHJcbmltcG9ydCB7IEZvcm1GaWxlQ29tcG9uZW50IH0gZnJvbSAnLi9mb3Jtcy9mb3JtLWZpbGUvZm9ybS1maWxlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1EYXRlVGltZUNvbXBvbmVudCB9IGZyb20gJy4vZm9ybXMvZm9ybS1kYXRldGltZS9mb3JtLWRhdGV0aW1lLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1BZGFwdGl2ZUNvbXBvbmVudCB9IGZyb20gJy4vZm9ybXMvZm9ybS1hZGFwdGl2ZS9mb3JtLWFkYXB0aXZlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1FbXB0eUNvbXBvbmVudCB9IGZyb20gJy4vZm9ybXMvZm9ybS1lbXB0eS9mb3JtLWVtcHR5LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1UZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vZm9ybXMvZm9ybS10ZW1wbGF0ZS9mb3JtLXRlbXBsYXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1FcnJvckNvbXBvbmVudCB9IGZyb20gJy4vZm9ybXMvZm9ybS1lcnJvci9mb3JtLWVycm9yLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1JbmZvQ29tcG9uZW50IH0gZnJvbSAnLi9mb3Jtcy9mb3JtLWluZm8vZm9ybS1pbmZvLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1DaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4vZm9ybXMvZm9ybS1jaGVja2JveC9mb3JtLWNoZWNrYm94LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1EYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9mb3Jtcy9mb3JtLWRhdGUvZm9ybS1kYXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1JbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZm9ybXMvZm9ybS1pbnB1dC9mb3JtLWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1TZWxlY3RDb21wb25lbnQgfSBmcm9tICcuL2Zvcm1zL2Zvcm0tc2VsZWN0L2Zvcm0tc2VsZWN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1NdWx0aVNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4vZm9ybXMvZm9ybS1tdWx0aXNlbGVjdC9mb3JtLW11bHRpc2VsZWN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1UZXh0YXJlYUNvbXBvbmVudCB9IGZyb20gJy4vZm9ybXMvZm9ybS10ZXh0YXJlYS9mb3JtLXRleHRhcmVhLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1BdXRvY29tcGxldGVDb21wb25lbnQgfSBmcm9tICcuL2Zvcm1zL2Zvcm0tYXV0b2NvbXBsZXRlL2Zvcm0tYXV0b2NvbXBsZXRlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1UaW1lQ29tcG9uZW50IH0gZnJvbSAnLi9mb3Jtcy9mb3JtLXRpbWUvZm9ybS10aW1lLmNvbXBvbmVudCc7XHJcblxyXG4vKipcclxuICogRm9ybWF0byBpbiBkaXNwbGF5IChtb2RhbGl0w6AgYnJldmUsIHNlbnphIG9yZSwgbWludXRpIGUgc2Vjb25kaSkgZGVsbGUgZGF0ZSBwZXIgdHV0dGkgaSBjb21wb25lbnRpIGNoZSB1dGlsaXp6aW5vIGlucHV0IGRhdGEuXHJcbiAqIFxyXG4gKiBEYSBjb252ZW56aW9uZSDDqCBzZW1wcmUgcXVlbGxvIGl0YWxpYW5vIHF1aW5kaSB2aWVuZSBjYWJsYXRvXHJcbiAqL1xyXG5jb25zdCBmb3JtYXRzID0ge1xyXG4gIHBhcnNlOiB7IGRhdGVJbnB1dDogJ0REL01NL1lZWVknIH0sXHJcbiAgZGlzcGxheToge1xyXG4gICAgZGF0ZUlucHV0OiAnREQvTU0vWVlZWScsXHJcbiAgICBtb250aFllYXJMYWJlbDogJ01NIFlZWVknLFxyXG4gICAgZGF0ZUExMXlMYWJlbDogJ0REL01NL1lZWVknLFxyXG4gICAgbW9udGhZZWFyQTExeUxhYmVsOiAnTU0gWVlZWScsXHJcbiAgfVxyXG59O1xyXG5cclxuLyoqXHJcbiAqIEZvcm1hdG8gaW4gZGlzcGxheSAobW9kYWxpdMOgIGx1bmdhLCBjb24gb3JlLCBtaW51dGkgZSBzZWNvbmRpKSBkZWxsZSBkYXRlIHBlciB0dXR0aSBpIGNvbXBvbmVudGkgY2hlIHV0aWxpenppbm8gaW5wdXQgZGF0YS5cclxuICogXHJcbiAqIERhIGNvbnZlbnppb25lIMOoIHNlbXByZSBxdWVsbG8gaXRhbGlhbm8gcXVpbmRpIHZpZW5lIGNhYmxhdG9cclxuICovXHJcbmNvbnN0IGZvcm1hdHNfbG9uZyA9IHtcclxuICBwYXJzZTogeyBkYXRlSW5wdXQ6ICdERC9NTS9ZWVlZIEhIOm1tOnNzJyB9LFxyXG4gIGRpc3BsYXk6IHtcclxuICAgIGRhdGVJbnB1dDogJ0REL01NL1lZWVkgSEg6bW06c3MnLFxyXG4gICAgbW9udGhZZWFyTGFiZWw6ICdNTSBZWVlZJyxcclxuICAgIGRhdGVBMTF5TGFiZWw6ICdERC9NTS9ZWVlZIEhIOm1tOnNzJyxcclxuICAgIG1vbnRoWWVhckExMXlMYWJlbDogJ01NIFlZWVknLFxyXG4gIH1cclxufTtcclxuXHJcbi8qKlxyXG4gKiBDb21wb25lbnRpIERpY2hpYXJhdGkgZWQgZXNwb3J0YXRpIGRhbGxhIGxpYnJlcmlhXHJcbiAqL1xyXG5jb25zdCBDT01QT05FTlRTID0gW1xyXG4gIFZhbGlkYXRpb25JbnB1dENvbXBvbmVudCxcclxuICBWYWxpZGF0aW9uU2VsZWN0Q29tcG9uZW50LFxyXG4gIFZhbGlkYXRpb25EYXRlQ29tcG9uZW50LFxyXG4gIEN1c3RvbVJlcXVpcmVkRGlyZWN0aXZlLFxyXG4gIFZhbGlkYXRpb25DdXJyZW5jeUNvbXBvbmVudCxcclxuICBWYWxpZGF0aW9uVGV4dEFyZWFDb21wb25lbnQsXHJcbiAgRm9ybUNoZWNrYm94Q29tcG9uZW50LFxyXG4gIEZvcm1EYXRlQ29tcG9uZW50LFxyXG4gIEZvcm1FbXB0eUNvbXBvbmVudCxcclxuICBGb3JtSW5wdXRDb21wb25lbnQsXHJcbiAgRm9ybVNlbGVjdENvbXBvbmVudCxcclxuICBGb3JtVGV4dGFyZWFDb21wb25lbnQsXHJcbiAgRm9ybVRlbXBsYXRlQ29tcG9uZW50LFxyXG4gIEZvcm1FcnJvckNvbXBvbmVudCxcclxuICBGb3JtSW5mb0NvbXBvbmVudCxcclxuICBGb3JtQWRhcHRpdmVDb21wb25lbnQsXHJcbiAgRm9ybU11bHRpU2VsZWN0Q29tcG9uZW50LFxyXG4gIEZvcm1GaWxlQ29tcG9uZW50LFxyXG4gIFZhbGlkYXRpb25BdXRvY29tcGxldGVDb21wb25lbnQsXHJcbiAgRm9ybUF1dG9jb21wbGV0ZUNvbXBvbmVudCxcclxuICBGb3JtRGF0ZVRpbWVDb21wb25lbnQsXHJcbiAgVmFsaWRhdGlvbkRhdGVUaW1lQ29tcG9uZW50LFxyXG4gIEZvcm1UaW1lQ29tcG9uZW50XHJcbl07XHJcblxyXG4vKipcclxuICogTW9kdWxpIHV0aWxpenphdGkgc29sbyBkYWxsYSBsaWJyZXJpYVxyXG4gKi9cclxuY29uc3QgTU9EVUxFUyA9IFtcclxuICBDb21tb25Nb2R1bGUsXHJcbiAgRm9ybXNNb2R1bGUsXHJcbiAgTG9jYWxpemF0aW9uTW9kdWxlLFxyXG4gIE1hdElucHV0TW9kdWxlLFxyXG4gIE1hdERhdGVwaWNrZXJNb2R1bGUsXHJcbiAgTWF0RGF5anNEYXRlTW9kdWxlLFxyXG4gIFRvb2x0aXBNb2R1bGUsXHJcbiAgQ3VycmVuY3lNYXNrTW9kdWxlLFxyXG4gIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcclxuICBOZ3hNYXREYXRldGltZVBpY2tlck1vZHVsZSxcclxuICBOZ3hNYXRUaW1lcGlja2VyTW9kdWxlXHJcbl07XHJcblxyXG4vKipcclxuICogTW9kdWxpIHV0aWxpenphdGkgZGFsbGEgbGlicmVyaWEgZSBjaGUgZGV2b25vIGVzc2VyZSBlc3Bvc3RpIGFsbCdlc3Rlcm5vXHJcbiAqL1xyXG5jb25zdCBNT0RVTEVTX1RPX0VYUE9SVCA9IFtcclxuICBBbmd1bGFyTXVsdGlTZWxlY3RNb2R1bGVcclxuXTtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogWy4uLk1PRFVMRVMsIC4uLk1PRFVMRVNfVE9fRVhQT1JUXSxcclxuICBkZWNsYXJhdGlvbnM6IFsuLi5DT01QT05FTlRTXSxcclxuICBleHBvcnRzOiBbLi4uTU9EVUxFU19UT19FWFBPUlQsIC4uLkNPTVBPTkVOVFNdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3Jtc0FuZFZhbGlkYXRpb25zTW9kdWxlIHtcclxuICBzdGF0aWMgZm9yUm9vdChjb25maWc/OiBGb3Jtc0FuZFZhbGlkYXRpb25zTW9kdWxlQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxGb3Jtc0FuZFZhbGlkYXRpb25zTW9kdWxlPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogRm9ybXNBbmRWYWxpZGF0aW9uc01vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgeyBwcm92aWRlOiBGQVZfTE9DQUxFLCB1c2VWYWx1ZTogY29uZmlnPy5sb2NhbGUgfHwgJ2l0LUlUJyB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogQUNPX0NVU1RPTUtFWSwgdXNlVmFsdWU6IGNvbmZpZz8uYWNvY3VzdG9tIHx8IG51bGwgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX0xPQ0FMRSwgdXNlVmFsdWU6ICdpdCcgfSxcclxuICAgICAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiBmb3JtYXRzIH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBOR1hfTUFUX0RBVEVfRk9STUFUUywgdXNlVmFsdWU6IGZvcm1hdHNfbG9uZyB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogTmd4TWF0RGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBOZ3hFeHBhbmRlZERheUpzRGF0ZUFkYXB0ZXIgfSxcclxuICAgICAgXVxyXG4gICAgfTtcclxuICB9XHJcbn0iXX0=
@@ -1,86 +0,0 @@
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
- /**
9
- * Espansione dell'adapter di default di DayJs già utilizzato per i bind base su Material.
10
- *
11
- * Questa versione serve unicamente per i controlli **datetime-picker**, ma dato che io l'adapter già lo avevo lato **esfaenza/material-dayjs-adapter**
12
- * qui devo semplicemente aggiungere le funzioni non presenti nella mia implementazione che servono al **datetime-picker**
13
- */
14
- export class NgxExpandedDayJsDateAdapter extends DayJsDateAdapter {
15
- /**
16
- * @ignore
17
- */
18
- constructor(dateLocale) {
19
- super(dateLocale);
20
- }
21
- // Espando il mio DayJsDateAdapter con i metodi extra del NgxMatDateAdapter che servono per il material timepicker
22
- // Non potendo fare "extends" da due classi mi tocca tenerlo così senza type safety....
23
- /**
24
- * Identifica se due date hanno lo stesso orario
25
- *
26
- * @param {DayJs} a Primo elemento del controllo
27
- * @param {DayJs} b Secondo elemento del controllo
28
- * @returns **true** se hanno lo stess orario, **false** altrimenti
29
- */
30
- isSameTime(a, b) {
31
- if (a == null || b == null)
32
- return true;
33
- return this.getHour(a) === this.getHour(b)
34
- && this.getMinute(a) === this.getMinute(b)
35
- && this.getSecond(a) === this.getSecond(b);
36
- }
37
- /**
38
- * Copia dell'orario da una data all'altra, Modifica direttamente l'oggetto **toDate**
39
- *
40
- * @param {DayJs} toDate Data in cui copiare l'orario
41
- * @param {DayJs} fromDate Data da cui copiare l'orario
42
- */
43
- copyTime(toDate, fromDate) {
44
- this.setHour(toDate, this.getHour(fromDate));
45
- this.setMinute(toDate, this.getMinute(fromDate));
46
- this.setSecond(toDate, this.getSecond(fromDate));
47
- }
48
- /**
49
- * Mette a confronto due date
50
- * @param {Dayjs} first Prima data da confrontare
51
- * @param {Dayjs} second Seconda data da confrontare
52
- * @param {boolean} showSeconds Indica se considerare anche i secondi, di default no
53
- * @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
54
- */
55
- compareDateWithTime(first, second, showSeconds) {
56
- let res = super.compareDate(first, second) ||
57
- this.getHour(first) - this.getHour(second) ||
58
- this.getMinute(first) - this.getMinute(second);
59
- if (showSeconds)
60
- res = res || this.getSecond(first) - this.getSecond(second);
61
- return res;
62
- }
63
- /**
64
- * Assegna a una data i valori di ore, minuti e secondi di default.
65
- *
66
- * Se non specificati vengono assegnati degli '0'
67
- *
68
- * @param {DayJs} date Data a cui assegnare i valori di default
69
- * @param {number[]} defaultTime Valori di default per ore, minuti e secondi, considerati 0 se non presenti
70
- */
71
- setTimeByDefaultValues(date, defaultTime) {
72
- if (!Array.isArray(defaultTime)) {
73
- throw Error('@Input DefaultTime should be an array');
74
- }
75
- this.setHour(date, defaultTime[0] || 0);
76
- this.setMinute(date, defaultTime[1] || 0);
77
- this.setSecond(date, defaultTime[2] || 0);
78
- }
79
- }
80
- NgxExpandedDayJsDateAdapter.decorators = [
81
- { type: Injectable }
82
- ];
83
- NgxExpandedDayJsDateAdapter.ctorParameters = () => [
84
- { type: String, decorators: [{ type: Inject, args: [MAT_DATE_LOCALE,] }] }
85
- ];
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5anMtZGF0ZS1hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvbW9kZWxzL2RheWpzLWFkYXB0ZXIvZGF5anMtZGF0ZS1hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVM7QUFDVCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQW9CLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTNFLFVBQVU7QUFDVix5RUFBeUU7QUFDekUsbUZBQW1GO0FBQ25GLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBR3BFOzs7OztHQUtHO0FBRUgsTUFBTSxPQUFPLDJCQUE0QixTQUFRLGdCQUFnQjtJQUU3RDs7T0FFRztJQUNILFlBQXFDLFVBQWtCO1FBQ25ELEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsa0hBQWtIO0lBQ2xILHdGQUF3RjtJQUV4Rjs7Ozs7O09BTUc7SUFDSCxVQUFVLENBQUMsQ0FBUSxFQUFFLENBQVE7UUFDekIsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2VBQ25DLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7ZUFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFFBQVEsQ0FBQyxNQUFhLEVBQUUsUUFBZTtRQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsbUJBQW1CLENBQUMsS0FBWSxFQUFFLE1BQWEsRUFBRSxXQUFxQjtRQUNsRSxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUM7WUFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUMxQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFbkQsSUFBSSxXQUFXO1lBQ1gsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFaEUsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILHNCQUFzQixDQUFDLElBQVcsRUFBRSxXQUFxQjtRQUNyRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUM3QixNQUFNLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1NBQ3hEO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDOUMsQ0FBQzs7O1lBeEVKLFVBQVU7Ozt5Q0FNTSxNQUFNLFNBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbIi8vQW5ndWxhclxyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBNQVRfREFURV9GT1JNQVRTLCBNQVRfREFURV9MT0NBTEUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZVwiO1xyXG5cclxuLy9MaWJyZXJpYVxyXG4vLyBRdWVzdGEgbm9uIMOoIHBpw7kgdXNhdGEsIGxhIHRlbmdvIHF1aSBwZXIgY3Jvc3NjaGVjayBpbiBjYXNvIGRpIHVwZGF0ZXNcclxuLy9pbXBvcnQgeyBOZ3hNYXREYXRlQWRhcHRlciB9IGZyb20gXCJAYW5ndWxhci1tYXRlcmlhbC1jb21wb25lbnRzL2RhdGV0aW1lLXBpY2tlclwiO1xyXG5pbXBvcnQgeyBEYXlKc0RhdGVBZGFwdGVyIH0gZnJvbSBcIkBlc2ZhZW56YS9tYXRlcmlhbC1kYXlqcy1hZGFwdGVyXCI7XHJcbmltcG9ydCB7IERheWpzIH0gZnJvbSBcImRheWpzXCI7XHJcblxyXG4vKipcclxuICogRXNwYW5zaW9uZSBkZWxsJ2FkYXB0ZXIgZGkgZGVmYXVsdCBkaSBEYXlKcyBnacOgIHV0aWxpenphdG8gcGVyIGkgYmluZCBiYXNlIHN1IE1hdGVyaWFsLlxyXG4gKiBcclxuICogUXVlc3RhIHZlcnNpb25lIHNlcnZlIHVuaWNhbWVudGUgcGVyIGkgY29udHJvbGxpICoqZGF0ZXRpbWUtcGlja2VyKiosIG1hIGRhdG8gY2hlIGlvIGwnYWRhcHRlciBnacOgIGxvIGF2ZXZvIGxhdG8gKiplc2ZhZW56YS9tYXRlcmlhbC1kYXlqcy1hZGFwdGVyKiogXHJcbiAqIHF1aSBkZXZvIHNlbXBsaWNlbWVudGUgYWdnaXVuZ2VyZSBsZSBmdW56aW9uaSBub24gcHJlc2VudGkgbmVsbGEgbWlhIGltcGxlbWVudGF6aW9uZSBjaGUgc2Vydm9ubyBhbCAqKmRhdGV0aW1lLXBpY2tlcioqXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBOZ3hFeHBhbmRlZERheUpzRGF0ZUFkYXB0ZXIgZXh0ZW5kcyBEYXlKc0RhdGVBZGFwdGVyIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IoQEluamVjdChNQVRfREFURV9MT0NBTEUpIGRhdGVMb2NhbGU6IHN0cmluZykge1xyXG4gICAgICAgIHN1cGVyKGRhdGVMb2NhbGUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEVzcGFuZG8gaWwgbWlvIERheUpzRGF0ZUFkYXB0ZXIgY29uIGkgbWV0b2RpIGV4dHJhIGRlbCBOZ3hNYXREYXRlQWRhcHRlciBjaGUgc2Vydm9ubyBwZXIgaWwgbWF0ZXJpYWwgdGltZXBpY2tlclxyXG4gICAgLy8gTm9uIHBvdGVuZG8gZmFyZSBcImV4dGVuZHNcIiBkYSBkdWUgY2xhc3NpIG1pIHRvY2NhIHRlbmVybG8gY29zw6wgc2VuemEgdHlwZSBzYWZldHkuLi4uIFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWRlbnRpZmljYSBzZSBkdWUgZGF0ZSBoYW5ubyBsbyBzdGVzc28gb3JhcmlvXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7RGF5SnN9IGEgUHJpbW8gZWxlbWVudG8gZGVsIGNvbnRyb2xsb1xyXG4gICAgICogQHBhcmFtIHtEYXlKc30gYiBTZWNvbmRvIGVsZW1lbnRvIGRlbCBjb250cm9sbG9cclxuICAgICAqIEByZXR1cm5zICoqdHJ1ZSoqIHNlIGhhbm5vIGxvIHN0ZXNzIG9yYXJpbywgKipmYWxzZSoqIGFsdHJpbWVudGlcclxuICAgICAqL1xyXG4gICAgaXNTYW1lVGltZShhOiBEYXlqcywgYjogRGF5anMpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoYSA9PSBudWxsIHx8IGIgPT0gbnVsbCkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SG91cihhKSA9PT0gdGhpcy5nZXRIb3VyKGIpXHJcbiAgICAgICAgICAgICYmIHRoaXMuZ2V0TWludXRlKGEpID09PSB0aGlzLmdldE1pbnV0ZShiKVxyXG4gICAgICAgICAgICAmJiB0aGlzLmdldFNlY29uZChhKSA9PT0gdGhpcy5nZXRTZWNvbmQoYik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb3BpYSBkZWxsJ29yYXJpbyBkYSB1bmEgZGF0YSBhbGwnYWx0cmEsIE1vZGlmaWNhIGRpcmV0dGFtZW50ZSBsJ29nZ2V0dG8gKip0b0RhdGUqKlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge0RheUpzfSB0b0RhdGUgRGF0YSBpbiBjdWkgY29waWFyZSBsJ29yYXJpb1xyXG4gICAgICogQHBhcmFtIHtEYXlKc30gZnJvbURhdGUgRGF0YSBkYSBjdWkgY29waWFyZSBsJ29yYXJpb1xyXG4gICAgICovXHJcbiAgICBjb3B5VGltZSh0b0RhdGU6IERheWpzLCBmcm9tRGF0ZTogRGF5anMpIHtcclxuICAgICAgICB0aGlzLnNldEhvdXIodG9EYXRlLCB0aGlzLmdldEhvdXIoZnJvbURhdGUpKTtcclxuICAgICAgICB0aGlzLnNldE1pbnV0ZSh0b0RhdGUsIHRoaXMuZ2V0TWludXRlKGZyb21EYXRlKSk7XHJcbiAgICAgICAgdGhpcy5zZXRTZWNvbmQodG9EYXRlLCB0aGlzLmdldFNlY29uZChmcm9tRGF0ZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWV0dGUgYSBjb25mcm9udG8gZHVlIGRhdGVcclxuICAgICAqIEBwYXJhbSB7RGF5anN9IGZpcnN0IFByaW1hIGRhdGEgZGEgY29uZnJvbnRhcmVcclxuICAgICAqIEBwYXJhbSB7RGF5anN9IHNlY29uZCBTZWNvbmRhIGRhdGEgZGEgY29uZnJvbnRhcmVcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hvd1NlY29uZHMgSW5kaWNhIHNlIGNvbnNpZGVyYXJlIGFuY2hlIGkgc2Vjb25kaSwgZGkgZGVmYXVsdCBub1xyXG4gICAgICogQHJldHVybnMge251bWJlcn0gMCBzZSBsZSBkdWUgZGF0ZSBzb25vIHVndWFsaSwgdW4gbnVtZXJvIG1pbm9yZSBkaSAwIHNlIGxhIHByaW1hIGRhdGEgw6ggcHJlY2VkZW50ZSBhbGxhIHNlY29uZGEgZSB1biBudW1lcm8gbWFnZ2lvcmUgZGkgMCBhbHRyaW1lbnRpXHJcbiAgICAgKi9cclxuICAgIGNvbXBhcmVEYXRlV2l0aFRpbWUoZmlyc3Q6IERheWpzLCBzZWNvbmQ6IERheWpzLCBzaG93U2Vjb25kcz86IGJvb2xlYW4pOiBudW1iZXIge1xyXG4gICAgICAgIGxldCByZXMgPSBzdXBlci5jb21wYXJlRGF0ZShmaXJzdCwgc2Vjb25kKSB8fFxyXG4gICAgICAgICAgICB0aGlzLmdldEhvdXIoZmlyc3QpIC0gdGhpcy5nZXRIb3VyKHNlY29uZCkgfHxcclxuICAgICAgICAgICAgdGhpcy5nZXRNaW51dGUoZmlyc3QpIC0gdGhpcy5nZXRNaW51dGUoc2Vjb25kKTtcclxuXHJcbiAgICAgICAgaWYgKHNob3dTZWNvbmRzKVxyXG4gICAgICAgICAgICByZXMgPSByZXMgfHwgdGhpcy5nZXRTZWNvbmQoZmlyc3QpIC0gdGhpcy5nZXRTZWNvbmQoc2Vjb25kKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIHJlcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFzc2VnbmEgYSB1bmEgZGF0YSBpIHZhbG9yaSBkaSBvcmUsIG1pbnV0aSBlIHNlY29uZGkgZGkgZGVmYXVsdC4gXHJcbiAgICAgKiBcclxuICAgICAqIFNlIG5vbiBzcGVjaWZpY2F0aSB2ZW5nb25vIGFzc2VnbmF0aSBkZWdsaSAnMCdcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtEYXlKc30gZGF0ZSBEYXRhIGEgY3VpIGFzc2VnbmFyZSBpIHZhbG9yaSBkaSBkZWZhdWx0XHJcbiAgICAgKiBAcGFyYW0ge251bWJlcltdfSBkZWZhdWx0VGltZSBWYWxvcmkgZGkgZGVmYXVsdCBwZXIgb3JlLCBtaW51dGkgZSBzZWNvbmRpLCBjb25zaWRlcmF0aSAwIHNlIG5vbiBwcmVzZW50aVxyXG4gICAgICovXHJcbiAgICBzZXRUaW1lQnlEZWZhdWx0VmFsdWVzKGRhdGU6IERheWpzLCBkZWZhdWx0VGltZTogbnVtYmVyW10pIHtcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGVmYXVsdFRpbWUpKSB7XHJcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdASW5wdXQgRGVmYXVsdFRpbWUgc2hvdWxkIGJlIGFuIGFycmF5Jyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0SG91cihkYXRlLCBkZWZhdWx0VGltZVswXSB8fCAwKTtcclxuICAgICAgICB0aGlzLnNldE1pbnV0ZShkYXRlLCBkZWZhdWx0VGltZVsxXSB8fCAwKTtcclxuICAgICAgICB0aGlzLnNldFNlY29uZChkYXRlLCBkZWZhdWx0VGltZVsyXSB8fCAwKTtcclxuICAgIH1cclxufSJdfQ==
@@ -1,208 +0,0 @@
1
- // Angular
2
- import { EventEmitter, Input, Output, ViewChild, Directive } from "@angular/core";
3
- // Direttive, Componenti, Librerie
4
- import { TooltipDirective } from "ngx-bootstrap/tooltip";
5
- /**
6
- * Classe astratta base che contiene le logiche / proprietà in comune a tutti i validatori
7
- *
8
- * Nota bene: I tooltip rallentano tantissimo la pagina perché il tizio che ha fatto ngx bootstrap non è capace
9
- */
10
- export class BaseValidation {
11
- constructor() {
12
- /**
13
- * Variabile per tenere in memoria il fatto che il componente è forzato a invalido o no
14
- */
15
- this._forceInvalid = false;
16
- /**
17
- * Indica se il valore è obbligatorio o opzionale
18
- */
19
- this.required = false;
20
- /**
21
- * Indica se di default deve valutare il messaggio di errore in base al validatore che fallisce.
22
- *
23
- * Se fallisce il required validator scriverà che l'input è obbligatorio, se invece fallisce
24
- * un eventuale pattern validator scriverà che il formato dell'input è invalido
25
- */
26
- this.InferErrorMessages = true;
27
- /**
28
- * Messaggio da mostrare se la validazione fallisce.
29
- *
30
- * Se questo è valorizzato, il messaggio non viene valutato in automatico nonstante **InferErrorMessages** sia **true**
31
- */
32
- this.validationFailed = "";
33
- /**
34
- * Indica se il componente è in sola lettura
35
- */
36
- this.readonly = false;
37
- /**
38
- * Indica le dimensioni del componente
39
- */
40
- this.widthPx = null;
41
- /**
42
- * Indica se il componente è disabilitato o no (più o meno stesso concetto del readonly)
43
- */
44
- this.disabled = false;
45
- /**
46
- * Eventuale placeholder da mostrare al posto del valore quando il valore è nullo / vuoto
47
- */
48
- this.placeholder = "";
49
- /**
50
- * Classi da applicare al componente
51
- */
52
- this.class = "";
53
- /**
54
- * Stili da applicare al componente
55
- */
56
- this.style = "";
57
- /**
58
- * Pattern di validazione dell'input
59
- */
60
- this.pattern = "";
61
- /**
62
- * Indica di non validare il componente
63
- */
64
- this.noValidate = false;
65
- /**
66
- * Indica se abilitare o meno l'autocompletamento di default del browser
67
- */
68
- this.autocomplete = "off";
69
- /**
70
- * Evento che sostituisce l'ngModelChange facendolo funzionare in maniera un po' più consistente
71
- */
72
- this.inputChange = new EventEmitter();
73
- /**
74
- * @ignore
75
- */
76
- this.propagateChange = (_) => { };
77
- }
78
- /**
79
- * Query che raccoglie il tooltip in maniera dinamica (ad ogni change detection)
80
- *
81
- * @param {TooltipDirective} comp Elemento HTML a cui è applicata la direttiva del tooltip
82
- */
83
- set tooltip_static(comp) {
84
- if (comp) {
85
- this.tooltip = comp;
86
- }
87
- }
88
- ;
89
- /**
90
- * Query che raccoglie l'input o direttiva che contiene il valore in maniera dinamica (ad ogni change detection)
91
- *
92
- * @param {NgModel} comp Elemento HTML associato al ngModel del componente
93
- */
94
- set baseInput_static(comp) {
95
- if (comp) {
96
- this.baseInput = comp;
97
- }
98
- }
99
- ;
100
- /**
101
- * Imposta il componente come "submitted" scatenandone le validazioni ed eventualmente la visualizzazione del tooltip di errore
102
- *
103
- * @param {boolean} val **true** se si vuole impostare questo controllo come submitted, **false** altrimenti
104
- */
105
- set submitted(val) {
106
- this._submitted = val;
107
- if (!this.baseInput)
108
- return;
109
- if (val)
110
- this.baseInput.control.markAsTouched();
111
- if (this.baseInput.control.status === "INVALID" && val)
112
- this.showTooltipWithMessage();
113
- else
114
- this.tooltip.hide();
115
- }
116
- /**
117
- * Imposta il componente come "invalid" a prescindere dai validatori
118
- */
119
- set forceInvalid(val) {
120
- this._forceInvalid = val;
121
- if (val)
122
- setTimeout(() => this.baseInput.control.setErrors({ forcedtoinvalid: true }));
123
- else
124
- setTimeout(() => {
125
- this.baseInput.control.setErrors({ forcedtoinvalid: null });
126
- this.baseInput.control.updateValueAndValidity();
127
- });
128
- }
129
- /**
130
- * Helper che controlla se il tooltip deve essere mostrato o meno,
131
- * richiamato direttamente dall'HTML dei componenti
132
- */
133
- checkTooltip() {
134
- if ((this.baseInput.invalid && this.baseInput.touched))
135
- this.showTooltipWithMessage();
136
- }
137
- /**
138
- * Helper che calcola il messaggio da mostrare nel tooltip che andrà ad aprire
139
- */
140
- showTooltipWithMessage() {
141
- this.validationFailed = this.validationFailed ? this.validationFailed : this.InferErrorMessages ? this.inferMessage() : "";
142
- if (this.validationFailed)
143
- this.tooltip.show();
144
- }
145
- /**
146
- * Calcola il messaggio da mostrare in base al valore.
147
- *
148
- * Entrare in questa funzione significa che lo stato di validazione è fallito, per questo si comporta semplicemente in maniera esclusiva, e cioè:
149
- *
150
- * 1) Se ero required e sono senza valore --> Input richiesto
151
- *
152
- * 2) Altrimenti se ho un valore --> Di sicuro il formato è errato
153
- */
154
- inferMessage() {
155
- if (this.required && !this.baseInput.value)
156
- return this.lc.loc("Required Input");
157
- if (this.baseInput.value)
158
- return this.lc.loc("Invalid Input Format");
159
- }
160
- /**
161
- * Forza la chiusura del tooltip
162
- */
163
- closeTooltip() {
164
- this.tooltip.hide();
165
- }
166
- /**
167
- * Controlla se il controllo è valido e in caso lo sia chiude il tooltip
168
- */
169
- CheckValidity() {
170
- if (!this.baseInput.statusChanges)
171
- return;
172
- this.baseInput.statusChanges.subscribe(event => {
173
- if (event === "VALID")
174
- this.tooltip.hide();
175
- });
176
- }
177
- /**
178
- * @ignore
179
- */
180
- setDisabledState(isDisabled) {
181
- isDisabled ? this.baseInput.control.disable() : this.baseInput.control.enable();
182
- this.readonly = isDisabled;
183
- }
184
- }
185
- BaseValidation.decorators = [
186
- { type: Directive }
187
- ];
188
- BaseValidation.propDecorators = {
189
- tooltip: [{ type: ViewChild, args: [TooltipDirective, { static: false },] }],
190
- tooltip_static: [{ type: ViewChild, args: [TooltipDirective, { static: true },] }],
191
- baseInput: [{ type: ViewChild, args: ["baseInput", { static: false },] }],
192
- baseInput_static: [{ type: ViewChild, args: ["baseInput", { static: true },] }],
193
- InferErrorMessages: [{ type: Input }],
194
- validationFailed: [{ type: Input }],
195
- readonly: [{ type: Input }],
196
- widthPx: [{ type: Input }],
197
- disabled: [{ type: Input }],
198
- placeholder: [{ type: Input }],
199
- class: [{ type: Input }],
200
- style: [{ type: Input }],
201
- pattern: [{ type: Input }],
202
- noValidate: [{ type: Input }],
203
- autocomplete: [{ type: Input }],
204
- inputChange: [{ type: Output }],
205
- submitted: [{ type: Input, args: ["submitted",] }],
206
- forceInvalid: [{ type: Input }]
207
- };
208
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS12YWxpZGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybXMtYW5kLXZhbGlkYXRpb25zL3NyYy9saWIvdmFsaWRhdGlvbnMvYmFzZS12YWxpZGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU1sRixrQ0FBa0M7QUFDbEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFekQ7Ozs7R0FJRztBQUVILE1BQU0sT0FBZ0IsY0FBYztJQURwQztRQWFJOztXQUVHO1FBQ08sa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFFekM7O1dBRUc7UUFDSSxhQUFRLEdBQVksS0FBSyxDQUFDO1FBOEJqQzs7Ozs7V0FLRztRQUNNLHVCQUFrQixHQUFZLElBQUksQ0FBQztRQUU1Qzs7OztXQUlHO1FBQ00scUJBQWdCLEdBQVcsRUFBRSxDQUFDO1FBRXZDOztXQUVHO1FBQ00sYUFBUSxHQUFZLEtBQUssQ0FBQztRQUVuQzs7V0FFRztRQUNNLFlBQU8sR0FBVyxJQUFJLENBQUM7UUFFaEM7O1dBRUc7UUFDTSxhQUFRLEdBQVksS0FBSyxDQUFDO1FBRW5DOztXQUVHO1FBQ00sZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFFbEM7O1dBRUc7UUFDTSxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBRTVCOztXQUVHO1FBQ00sVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUU1Qjs7V0FFRztRQUNNLFlBQU8sR0FBVyxFQUFFLENBQUM7UUFFOUI7O1dBRUc7UUFDTSxlQUFVLEdBQVksS0FBSyxDQUFDO1FBRXJDOztXQUVHO1FBQ00saUJBQVksR0FBVyxLQUFLLENBQUM7UUFFdEM7O1dBRUc7UUFDTyxnQkFBVyxHQUF5QixJQUFJLFlBQVks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RUc7SUFDTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWE7WUFDN0IsT0FBTztRQUVYLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMzQyxJQUFJLEtBQUssS0FBSyxPQUFPO2dCQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCLENBQUUsVUFBbUI7UUFDakMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEYsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQzs7O1lBcE5KLFNBQVM7OztzQkEwQkwsU0FBUyxTQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs2QkFPN0MsU0FBUyxTQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTt3QkFPNUMsU0FBUyxTQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7K0JBT3hDLFNBQVMsU0FBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2lDQVV2QyxLQUFLOytCQU9MLEtBQUs7dUJBS0wsS0FBSztzQkFLTCxLQUFLO3VCQUtMLEtBQUs7MEJBS0wsS0FBSztvQkFLTCxLQUFLO29CQUtMLEtBQUs7c0JBS0wsS0FBSzt5QkFLTCxLQUFLOzJCQUtMLEtBQUs7MEJBS0wsTUFBTTt3QkFPTixLQUFLLFNBQUMsV0FBVzsyQkFpQmpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkLCBEaXJlY3RpdmUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBOZ01vZGVsIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG4vLyBDb25maWd1cmF6aW9uaVxyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25TZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9sb2NhbGl6YXRpb25zXCI7XHJcblxyXG4vLyBEaXJldHRpdmUsIENvbXBvbmVudGksIExpYnJlcmllXHJcbmltcG9ydCB7IFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tIFwibmd4LWJvb3RzdHJhcC90b29sdGlwXCI7XHJcblxyXG4vKipcclxuICogQ2xhc3NlIGFzdHJhdHRhIGJhc2UgY2hlIGNvbnRpZW5lIGxlIGxvZ2ljaGUgLyBwcm9wcmlldMOgIGluIGNvbXVuZSBhIHR1dHRpIGkgdmFsaWRhdG9yaVxyXG4gKiBcclxuICogTm90YSBiZW5lOiBJIHRvb2x0aXAgcmFsbGVudGFubyB0YW50aXNzaW1vIGxhIHBhZ2luYSBwZXJjaMOpIGlsIHRpemlvIGNoZSBoYSBmYXR0byBuZ3ggYm9vdHN0cmFwIG5vbiDDqCBjYXBhY2VcclxuICovXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVZhbGlkYXRpb24ge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2Vydml6aW8gZGkgbG9jYWxpenphemlvbmUgZGVsIENvbXBvbmVudGVcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGxjOiBMb2NhbGl6YXRpb25TZXJ2aWNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFyaWFiaWxlIHBlciB0ZW5lcmUgaW4gbWVtb3JpYSBsbyBzdGF0byBkaSBzdWJtaXQgZGkgcXVlc3RvIGNvbXBvbmVudGVcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIF9zdWJtaXR0ZWQ6IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBWYXJpYWJpbGUgcGVyIHRlbmVyZSBpbiBtZW1vcmlhIGlsIGZhdHRvIGNoZSBpbCBjb21wb25lbnRlIMOoIGZvcnphdG8gYSBpbnZhbGlkbyBvIG5vXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBfZm9yY2VJbnZhbGlkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2Egc2UgaWwgdmFsb3JlIMOoIG9iYmxpZ2F0b3JpbyBvIG9wemlvbmFsZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFF1ZXJ5IGNoZSByYWNjb2dsaWUgaWwgdG9vbHRpcCBpbiBtYW5pZXJhIHN0YXRpY2EgKHNvbG8gYWxsJ2luaXppbylcclxuICAgICAqL1xyXG4gICAgQFZpZXdDaGlsZChUb29sdGlwRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UgfSkgcHJvdGVjdGVkIHRvb2x0aXA6IFRvb2x0aXBEaXJlY3RpdmU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBRdWVyeSBjaGUgcmFjY29nbGllIGlsIHRvb2x0aXAgaW4gbWFuaWVyYSBkaW5hbWljYSAoYWQgb2duaSBjaGFuZ2UgZGV0ZWN0aW9uKVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge1Rvb2x0aXBEaXJlY3RpdmV9IGNvbXAgRWxlbWVudG8gSFRNTCBhIGN1aSDDqCBhcHBsaWNhdGEgbGEgZGlyZXR0aXZhIGRlbCB0b29sdGlwXHJcbiAgICAgKi9cclxuICAgIEBWaWV3Q2hpbGQoVG9vbHRpcERpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSkgc2V0IHRvb2x0aXBfc3RhdGljKGNvbXA6IFRvb2x0aXBEaXJlY3RpdmUpIHtcclxuICAgICAgICBpZiAoY29tcCkgeyB0aGlzLnRvb2x0aXAgPSBjb21wOyB9XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUXVlcnkgY2hlIHJhY2NvZ2xpZSBsJ2lucHV0IG8gZGlyZXR0aXZhIGNoZSBjb250aWVuZSBpbCB2YWxvcmUgaW4gbWFuaWVyYSBzdGF0aWNhIChzb2xvIGFsbCdpbml6aW8pXHJcbiAgICAgKi9cclxuICAgIEBWaWV3Q2hpbGQoXCJiYXNlSW5wdXRcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIGJhc2VJbnB1dDogTmdNb2RlbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFF1ZXJ5IGNoZSByYWNjb2dsaWUgbCdpbnB1dCBvIGRpcmV0dGl2YSBjaGUgY29udGllbmUgaWwgdmFsb3JlIGluIG1hbmllcmEgZGluYW1pY2EgKGFkIG9nbmkgY2hhbmdlIGRldGVjdGlvbilcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtOZ01vZGVsfSBjb21wIEVsZW1lbnRvIEhUTUwgYXNzb2NpYXRvIGFsIG5nTW9kZWwgZGVsIGNvbXBvbmVudGVcclxuICAgICAqL1xyXG4gICAgQFZpZXdDaGlsZChcImJhc2VJbnB1dFwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBzZXQgYmFzZUlucHV0X3N0YXRpYyhjb21wOiBOZ01vZGVsKSB7XHJcbiAgICAgICAgaWYgKGNvbXApIHsgdGhpcy5iYXNlSW5wdXQgPSBjb21wOyB9XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhIHNlIGRpIGRlZmF1bHQgZGV2ZSB2YWx1dGFyZSBpbCBtZXNzYWdnaW8gZGkgZXJyb3JlIGluIGJhc2UgYWwgdmFsaWRhdG9yZSBjaGUgZmFsbGlzY2UuXHJcbiAgICAgKiBcclxuICAgICAqIFNlIGZhbGxpc2NlIGlsIHJlcXVpcmVkIHZhbGlkYXRvciBzY3JpdmVyw6AgY2hlIGwnaW5wdXQgw6ggb2JibGlnYXRvcmlvLCBzZSBpbnZlY2UgZmFsbGlzY2UgXHJcbiAgICAgKiB1biBldmVudHVhbGUgcGF0dGVybiB2YWxpZGF0b3Igc2NyaXZlcsOgIGNoZSBpbCBmb3JtYXRvIGRlbGwnaW5wdXQgw6ggaW52YWxpZG9cclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgSW5mZXJFcnJvck1lc3NhZ2VzOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1lc3NhZ2dpbyBkYSBtb3N0cmFyZSBzZSBsYSB2YWxpZGF6aW9uZSBmYWxsaXNjZS4gXHJcbiAgICAgKiBcclxuICAgICAqIFNlIHF1ZXN0byDDqCB2YWxvcml6emF0bywgaWwgbWVzc2FnZ2lvIG5vbiB2aWVuZSB2YWx1dGF0byBpbiBhdXRvbWF0aWNvIG5vbnN0YW50ZSAqKkluZmVyRXJyb3JNZXNzYWdlcyoqIHNpYSAqKnRydWUqKlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSB2YWxpZGF0aW9uRmFpbGVkOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhIHNlIGlsIGNvbXBvbmVudGUgw6ggaW4gc29sYSBsZXR0dXJhXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2EgbGUgZGltZW5zaW9uaSBkZWwgY29tcG9uZW50ZVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSB3aWR0aFB4OiBudW1iZXIgPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhIHNlIGlsIGNvbXBvbmVudGUgw6ggZGlzYWJpbGl0YXRvIG8gbm8gKHBpw7kgbyBtZW5vIHN0ZXNzbyBjb25jZXR0byBkZWwgcmVhZG9ubHkpXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudHVhbGUgcGxhY2Vob2xkZXIgZGEgbW9zdHJhcmUgYWwgcG9zdG8gZGVsIHZhbG9yZSBxdWFuZG8gaWwgdmFsb3JlIMOoIG51bGxvIC8gdnVvdG9cclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDbGFzc2kgZGEgYXBwbGljYXJlIGFsIGNvbXBvbmVudGVcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgY2xhc3M6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTdGlsaSBkYSBhcHBsaWNhcmUgYWwgY29tcG9uZW50ZVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBzdHlsZTogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFBhdHRlcm4gZGkgdmFsaWRhemlvbmUgZGVsbCdpbnB1dFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwYXR0ZXJuOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5kaWNhIGRpIG5vbiB2YWxpZGFyZSBpbCBjb21wb25lbnRlXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIG5vVmFsaWRhdGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluZGljYSBzZSBhYmlsaXRhcmUgbyBtZW5vIGwnYXV0b2NvbXBsZXRhbWVudG8gZGkgZGVmYXVsdCBkZWwgYnJvd3NlclxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBhdXRvY29tcGxldGU6IHN0cmluZyA9IFwib2ZmXCI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFdmVudG8gY2hlIHNvc3RpdHVpc2NlIGwnbmdNb2RlbENoYW5nZSBmYWNlbmRvbG8gZnVuemlvbmFyZSBpbiBtYW5pZXJhIHVuIHBvJyBwacO5IGNvbnNpc3RlbnRlXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBpbnB1dENoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEltcG9zdGEgaWwgY29tcG9uZW50ZSBjb21lIFwic3VibWl0dGVkXCIgc2NhdGVuYW5kb25lIGxlIHZhbGlkYXppb25pIGVkIGV2ZW50dWFsbWVudGUgbGEgdmlzdWFsaXp6YXppb25lIGRlbCB0b29sdGlwIGRpIGVycm9yZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IHZhbCAqKnRydWUqKiBzZSBzaSB2dW9sZSBpbXBvc3RhcmUgcXVlc3RvIGNvbnRyb2xsbyBjb21lIHN1Ym1pdHRlZCwgKipmYWxzZSoqIGFsdHJpbWVudGlcclxuICAgICAqL1xyXG4gICAgQElucHV0KFwic3VibWl0dGVkXCIpIHNldCBzdWJtaXR0ZWQodmFsOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fc3VibWl0dGVkID0gdmFsO1xyXG4gICAgICAgIGlmICghdGhpcy5iYXNlSW5wdXQpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgaWYgKHZhbClcclxuICAgICAgICAgICAgdGhpcy5iYXNlSW5wdXQuY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmJhc2VJbnB1dC5jb250cm9sLnN0YXR1cyA9PT0gXCJJTlZBTElEXCIgJiYgdmFsKVxyXG4gICAgICAgICAgICB0aGlzLnNob3dUb29sdGlwV2l0aE1lc3NhZ2UoKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcC5oaWRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbXBvc3RhIGlsIGNvbXBvbmVudGUgY29tZSBcImludmFsaWRcIiBhIHByZXNjaW5kZXJlIGRhaSB2YWxpZGF0b3JpXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHNldCBmb3JjZUludmFsaWQodmFsOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fZm9yY2VJbnZhbGlkID0gdmFsO1xyXG5cclxuICAgICAgICBpZiAodmFsKVxyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYmFzZUlucHV0LmNvbnRyb2wuc2V0RXJyb3JzKHsgZm9yY2VkdG9pbnZhbGlkOiB0cnVlIH0pKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5iYXNlSW5wdXQuY29udHJvbC5zZXRFcnJvcnMoeyBmb3JjZWR0b2ludmFsaWQ6IG51bGwgfSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJhc2VJbnB1dC5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGVscGVyIGNoZSBjb250cm9sbGEgc2UgaWwgdG9vbHRpcCBkZXZlIGVzc2VyZSBtb3N0cmF0byBvIG1lbm8sIFxyXG4gICAgICogcmljaGlhbWF0byBkaXJldHRhbWVudGUgZGFsbCdIVE1MIGRlaSBjb21wb25lbnRpXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBjaGVja1Rvb2x0aXAoKSB7XHJcbiAgICAgICAgaWYgKCh0aGlzLmJhc2VJbnB1dC5pbnZhbGlkICYmIHRoaXMuYmFzZUlucHV0LnRvdWNoZWQpKVxyXG4gICAgICAgICAgICB0aGlzLnNob3dUb29sdGlwV2l0aE1lc3NhZ2UoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhlbHBlciBjaGUgY2FsY29sYSBpbCBtZXNzYWdnaW8gZGEgbW9zdHJhcmUgbmVsIHRvb2x0aXAgY2hlIGFuZHLDoCBhZCBhcHJpcmVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzaG93VG9vbHRpcFdpdGhNZXNzYWdlKCkge1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbkZhaWxlZCA9IHRoaXMudmFsaWRhdGlvbkZhaWxlZCA/IHRoaXMudmFsaWRhdGlvbkZhaWxlZCA6IHRoaXMuSW5mZXJFcnJvck1lc3NhZ2VzID8gdGhpcy5pbmZlck1lc3NhZ2UoKSA6IFwiXCI7XHJcbiAgICAgICAgaWYgKHRoaXMudmFsaWRhdGlvbkZhaWxlZClcclxuICAgICAgICAgICAgdGhpcy50b29sdGlwLnNob3coKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENhbGNvbGEgaWwgbWVzc2FnZ2lvIGRhIG1vc3RyYXJlIGluIGJhc2UgYWwgdmFsb3JlLlxyXG4gICAgICogXHJcbiAgICAgKiBFbnRyYXJlIGluIHF1ZXN0YSBmdW56aW9uZSBzaWduaWZpY2EgY2hlIGxvIHN0YXRvIGRpIHZhbGlkYXppb25lIMOoIGZhbGxpdG8sIHBlciBxdWVzdG8gc2kgY29tcG9ydGEgc2VtcGxpY2VtZW50ZSBpbiBtYW5pZXJhIGVzY2x1c2l2YSwgZSBjaW/DqDpcclxuICAgICAqIFxyXG4gICAgICogMSkgU2UgZXJvIHJlcXVpcmVkIGUgc29ubyBzZW56YSB2YWxvcmUgLS0+IElucHV0IHJpY2hpZXN0b1xyXG4gICAgICogXHJcbiAgICAgKiAyKSBBbHRyaW1lbnRpIHNlIGhvIHVuIHZhbG9yZSAtLT4gRGkgc2ljdXJvIGlsIGZvcm1hdG8gw6ggZXJyYXRvXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaW5mZXJNZXNzYWdlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKHRoaXMucmVxdWlyZWQgJiYgIXRoaXMuYmFzZUlucHV0LnZhbHVlKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sYy5sb2MoXCJSZXF1aXJlZCBJbnB1dFwiKVxyXG5cclxuICAgICAgICBpZiAodGhpcy5iYXNlSW5wdXQudmFsdWUpXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxjLmxvYyhcIkludmFsaWQgSW5wdXQgRm9ybWF0XCIpXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGb3J6YSBsYSBjaGl1c3VyYSBkZWwgdG9vbHRpcFxyXG4gICAgICovXHJcbiAgICBjbG9zZVRvb2x0aXAoKSB7XHJcbiAgICAgICAgdGhpcy50b29sdGlwLmhpZGUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnRyb2xsYSBzZSBpbCBjb250cm9sbG8gw6ggdmFsaWRvIGUgaW4gY2FzbyBsbyBzaWEgY2hpdWRlIGlsIHRvb2x0aXBcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIENoZWNrVmFsaWRpdHkoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmJhc2VJbnB1dC5zdGF0dXNDaGFuZ2VzKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuYmFzZUlucHV0LnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKGV2ZW50ID0+IHtcclxuICAgICAgICAgICAgaWYgKGV2ZW50ID09PSBcIlZBTElEXCIpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvb2x0aXAuaGlkZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGlnbm9yZVxyXG4gICAgICovXHJcbiAgICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgaXNEaXNhYmxlZCA/IHRoaXMuYmFzZUlucHV0LmNvbnRyb2wuZGlzYWJsZSgpIDogdGhpcy5iYXNlSW5wdXQuY29udHJvbC5lbmFibGUoKTtcclxuICAgICAgICB0aGlzLnJlYWRvbmx5ID0gaXNEaXNhYmxlZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpID0+IHsgfTtcclxufSJdfQ==
@@ -1,23 +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 in comune con tutti i Componenti di validazione
6
- */
7
- export class BaseValidationLoc 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", "Required Input", ["Input Richiesto"]);
14
- super.set("en->it", "Invalid Input Format", ["Formato Input Invalido"]);
15
- }
16
- }
17
- BaseValidationLoc.decorators = [
18
- { type: Injectable }
19
- ];
20
- BaseValidationLoc.ctorParameters = () => [
21
- { type: String, decorators: [{ type: Optional }, { type: Inject, args: [FAV_LOCALE,] }] }
22
- ];
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS12YWxpZGF0aW9uLmxvYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm1zLWFuZC12YWxpZGF0aW9ucy9zcmMvbGliL3ZhbGlkYXRpb25zL2Jhc2UtdmFsaWRhdGlvbi5sb2MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFdkM7O0dBRUc7QUFFSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsbUJBQW1CO0lBRXREOztPQUVHO0lBQ0gsWUFBNkMsVUFBa0I7UUFDM0QsS0FBSyxDQUFDLFVBQVUsYUFBVixVQUFVLGNBQVYsVUFBVSxHQUFJLE9BQU8sQ0FBQyxDQUFDO1FBQzdCLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGdCQUFnQixFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQzNELEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLHNCQUFzQixFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7OztZQVZKLFVBQVU7Ozt5Q0FNTSxRQUFRLFlBQUssTUFBTSxTQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvbG9jYWxpemF0aW9uc1wiO1xyXG5pbXBvcnQgeyBGQVZfTE9DQUxFIH0gZnJvbSAnLi4vdG9rZW5zJztcclxuXHJcbi8qKlxyXG4gKiBDbGFzc2UgZGkgbG9jYWxpenphemlvbmUgaW4gY29tdW5lIGNvbiB0dXR0aSBpIENvbXBvbmVudGkgZGkgdmFsaWRhemlvbmVcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEJhc2VWYWxpZGF0aW9uTG9jIGV4dGVuZHMgTG9jYWxpemF0aW9uU2VydmljZSB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAaWdub3JlXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpICBASW5qZWN0KEZBVl9MT0NBTEUpIExPQ19MT0NBTEU6IHN0cmluZykge1xyXG4gICAgICAgIHN1cGVyKExPQ19MT0NBTEUgPz8gJ2l0LUlUJyk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiZW4tPml0XCIsIFwiUmVxdWlyZWQgSW5wdXRcIiwgW1wiSW5wdXQgUmljaGllc3RvXCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJlbi0+aXRcIiwgXCJJbnZhbGlkIElucHV0IEZvcm1hdFwiLCBbXCJGb3JtYXRvIElucHV0IEludmFsaWRvXCJdKTtcclxuICAgIH1cclxufSJdfQ==
@@ -1,35 +0,0 @@
1
- // Angular
2
- import { NG_VALIDATORS } from "@angular/forms";
3
- import { Directive, Input } from "@angular/core";
4
- /**
5
- * Direttiva utilizzata per validazioni "required" custom, in modo da poter dire che anche se c'è un valore selezionato, ma quel valore lo considero null
6
- * allora la validazione fallisce. Attualmente usato nell'unico punto sensato: validation-select
7
- */
8
- export class CustomRequiredDirective {
9
- constructor() {
10
- /**
11
- * Lista di valori che vengono considerati "vuoti" seppur presenti
12
- */
13
- this.NullValues = [];
14
- }
15
- /**
16
- * @ignore
17
- */
18
- validate(c) {
19
- // Controllo solo per custom required a true, altrimenti qualsiasi valore mi va bene
20
- if (this.customRequired != "true")
21
- return null;
22
- return !c.value || this.NullValues.includes(c.value) ? { required: true } : null;
23
- }
24
- }
25
- CustomRequiredDirective.decorators = [
26
- { type: Directive, args: [{
27
- selector: '[customRequired]',
28
- providers: [{ provide: NG_VALIDATORS, useExisting: CustomRequiredDirective, multi: true }]
29
- },] }
30
- ];
31
- CustomRequiredDirective.propDecorators = {
32
- NullValues: [{ type: Input, args: ["CustomNullValues",] }],
33
- customRequired: [{ type: Input, args: ['customRequired',] }]
34
- };
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3VzdG9tUmVxdWlyZWREaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mb3Jtcy1hbmQtdmFsaWRhdGlvbnMvc3JjL2xpYi92YWxpZGF0aW9ucy9jdXN0b21WYWxpZGF0b3JzL0N1c3RvbVJlcXVpcmVkRGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQW1CLGFBQWEsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpEOzs7R0FHRztBQUtILE1BQU0sT0FBTyx1QkFBdUI7SUFKcEM7UUFNSTs7V0FFRztRQUN3QixlQUFVLEdBQWEsRUFBRSxDQUFDO0lBaUJ6RCxDQUFDO0lBVkc7O09BRUc7SUFDSCxRQUFRLENBQUMsQ0FBa0I7UUFDdkIsb0ZBQW9GO1FBQ3BGLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxNQUFNO1lBQzdCLE9BQU8sSUFBSSxDQUFDO1FBRWhCLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNyRixDQUFDOzs7WUF6QkosU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO2FBQzdGOzs7eUJBTUksS0FBSyxTQUFDLGtCQUFrQjs2QkFLeEIsS0FBSyxTQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBOR19WQUxJREFUT1JTLCBWYWxpZGF0b3IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcblxyXG4vKipcclxuICogRGlyZXR0aXZhIHV0aWxpenphdGEgcGVyIHZhbGlkYXppb25pIFwicmVxdWlyZWRcIiBjdXN0b20sIGluIG1vZG8gZGEgcG90ZXIgZGlyZSBjaGUgYW5jaGUgc2UgYyfDqCB1biB2YWxvcmUgc2VsZXppb25hdG8sIG1hIHF1ZWwgdmFsb3JlIGxvIGNvbnNpZGVybyBudWxsIFxyXG4gKiBhbGxvcmEgbGEgdmFsaWRhemlvbmUgZmFsbGlzY2UuIEF0dHVhbG1lbnRlIHVzYXRvIG5lbGwndW5pY28gcHVudG8gc2Vuc2F0bzogdmFsaWRhdGlvbi1zZWxlY3RcclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbY3VzdG9tUmVxdWlyZWRdJyxcclxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTkdfVkFMSURBVE9SUywgdXNlRXhpc3Rpbmc6IEN1c3RvbVJlcXVpcmVkRGlyZWN0aXZlLCBtdWx0aTogdHJ1ZSB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3VzdG9tUmVxdWlyZWREaXJlY3RpdmUgaW1wbGVtZW50cyBWYWxpZGF0b3Ige1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTGlzdGEgZGkgdmFsb3JpIGNoZSB2ZW5nb25vIGNvbnNpZGVyYXRpIFwidnVvdGlcIiBzZXBwdXIgcHJlc2VudGlcclxuICAgICAqL1xyXG4gICAgQElucHV0KFwiQ3VzdG9tTnVsbFZhbHVlc1wiKSBOdWxsVmFsdWVzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogYm9vbGVhbm8gaW4gbW9kYWxpdMOgIHN0cmluZ2EgKFwidHJ1ZVwiIG8gXCJmYWxzZVwiKSBjaGUgaW5kaWNhIHNlIGFwcGxpY2FyZSBsYSB2YWxpZGF6aW9uZSBkaSBvYmJsaWdhdG9yaWV0w6AgbyBtZW5vXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgnY3VzdG9tUmVxdWlyZWQnKSBwdWJsaWMgY3VzdG9tUmVxdWlyZWQ6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBpZ25vcmVcclxuICAgICAqL1xyXG4gICAgdmFsaWRhdGUoYzogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnk7IH0ge1xyXG4gICAgICAgIC8vIENvbnRyb2xsbyBzb2xvIHBlciBjdXN0b20gcmVxdWlyZWQgYSB0cnVlLCBhbHRyaW1lbnRpIHF1YWxzaWFzaSB2YWxvcmUgbWkgdmEgYmVuZVxyXG4gICAgICAgIGlmICh0aGlzLmN1c3RvbVJlcXVpcmVkICE9IFwidHJ1ZVwiKVxyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgICAgcmV0dXJuICFjLnZhbHVlIHx8IHRoaXMuTnVsbFZhbHVlcy5pbmNsdWRlcyhjLnZhbHVlKSA/IHsgcmVxdWlyZWQ6IHRydWUgfSA6IG51bGw7XHJcbiAgICB9XHJcbn0iXX0=