@esfaenza/forms-and-validations 16.2.30 → 17.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/esm2022/esfaenza-forms-and-validations.mjs +4 -4
  2. package/esm2022/lib/forms/base-form-control.mjs +558 -558
  3. package/esm2022/lib/forms/form-adaptive/form-adaptive.component.loc.mjs +21 -21
  4. package/esm2022/lib/forms/form-adaptive/form-adaptive.component.mjs +420 -420
  5. package/esm2022/lib/forms/form-autocomplete/form-autocomplete.component.loc.mjs +20 -20
  6. package/esm2022/lib/forms/form-autocomplete/form-autocomplete.component.mjs +289 -289
  7. package/esm2022/lib/forms/form-checkbox/form-checkbox.component.mjs +74 -74
  8. package/esm2022/lib/forms/form-date/form-date.component.mjs +69 -69
  9. package/esm2022/lib/forms/form-datetime/form-datetime.component.mjs +67 -67
  10. package/esm2022/lib/forms/form-empty/form-empty.component.mjs +29 -29
  11. package/esm2022/lib/forms/form-error/form-error.component.mjs +41 -41
  12. package/esm2022/lib/forms/form-file/form-file.component.loc.mjs +21 -21
  13. package/esm2022/lib/forms/form-file/form-file.component.mjs +175 -175
  14. package/esm2022/lib/forms/form-info/form-info.component.mjs +41 -41
  15. package/esm2022/lib/forms/form-input/form-input.component.mjs +83 -83
  16. package/esm2022/lib/forms/form-multiselect/form-multiselect.component.loc.mjs +22 -22
  17. package/esm2022/lib/forms/form-multiselect/form-multiselect.component.mjs +163 -163
  18. package/esm2022/lib/forms/form-select/form-select.component.loc.mjs +20 -20
  19. package/esm2022/lib/forms/form-select/form-select.component.mjs +165 -165
  20. package/esm2022/lib/forms/form-template/form-template.component.mjs +76 -76
  21. package/esm2022/lib/forms/form-textarea/form-textarea.component.mjs +57 -57
  22. package/esm2022/lib/forms/form-time/form-time.component.mjs +115 -115
  23. package/esm2022/lib/forms-and-validations.module.mjs +199 -199
  24. package/esm2022/lib/models/AppFile.mjs +13 -13
  25. package/esm2022/lib/models/ChangeEvent.mjs +6 -6
  26. package/esm2022/lib/models/FormsAndValidationsModuleConfig.mjs +5 -5
  27. package/esm2022/lib/models/dayjs-adapter/dayjs-date-adapter.mjs +89 -89
  28. package/esm2022/lib/tokens.mjs +7 -7
  29. package/esm2022/lib/validations/base-validation.loc.mjs +22 -22
  30. package/esm2022/lib/validations/base-validation.mjs +328 -328
  31. package/esm2022/lib/validations/customValidators/CustomRequiredDirective.mjs +40 -40
  32. package/esm2022/lib/validations/validation-autocomplete/validation-autocomplete.component.mjs +147 -147
  33. package/esm2022/lib/validations/validation-autocomplete-multi/validation-autocomplete-multi.component.mjs +240 -240
  34. package/esm2022/lib/validations/validation-currency/validation-currency.component.mjs +75 -75
  35. package/esm2022/lib/validations/validation-date/validation-date.component.mjs +183 -183
  36. package/esm2022/lib/validations/validation-datetime/validation-datetime.component.mjs +212 -212
  37. package/esm2022/lib/validations/validation-input/validation-input.component.mjs +222 -222
  38. package/esm2022/lib/validations/validation-select/validation-select.component.mjs +183 -183
  39. package/esm2022/lib/validations/validation-text-area/validation-text-area.component.mjs +78 -78
  40. package/esm2022/public-api.mjs +39 -39
  41. package/fesm2022/esfaenza-forms-and-validations.mjs +4152 -4152
  42. package/fesm2022/esfaenza-forms-and-validations.mjs.map +1 -1
  43. package/index.d.ts +5 -5
  44. package/lib/forms/base-form-control.d.ts +276 -276
  45. package/lib/forms/form-adaptive/form-adaptive.component.d.ts +126 -126
  46. package/lib/forms/form-adaptive/form-adaptive.component.loc.d.ts +14 -14
  47. package/lib/forms/form-autocomplete/form-autocomplete.component.d.ts +84 -84
  48. package/lib/forms/form-autocomplete/form-autocomplete.component.loc.d.ts +14 -14
  49. package/lib/forms/form-checkbox/form-checkbox.component.d.ts +23 -23
  50. package/lib/forms/form-date/form-date.component.d.ts +21 -21
  51. package/lib/forms/form-datetime/form-datetime.component.d.ts +23 -23
  52. package/lib/forms/form-empty/form-empty.component.d.ts +15 -15
  53. package/lib/forms/form-error/form-error.component.d.ts +19 -19
  54. package/lib/forms/form-file/form-file.component.d.ts +46 -46
  55. package/lib/forms/form-file/form-file.component.loc.d.ts +14 -14
  56. package/lib/forms/form-info/form-info.component.d.ts +19 -19
  57. package/lib/forms/form-input/form-input.component.d.ts +33 -33
  58. package/lib/forms/form-multiselect/form-multiselect.component.d.ts +67 -67
  59. package/lib/forms/form-multiselect/form-multiselect.component.loc.d.ts +14 -14
  60. package/lib/forms/form-select/form-select.component.d.ts +43 -43
  61. package/lib/forms/form-select/form-select.component.loc.d.ts +14 -14
  62. package/lib/forms/form-template/form-template.component.d.ts +38 -38
  63. package/lib/forms/form-textarea/form-textarea.component.d.ts +18 -18
  64. package/lib/forms/form-time/form-time.component.d.ts +40 -40
  65. package/lib/forms-and-validations.module.d.ts +47 -47
  66. package/lib/models/AppFile.d.ts +21 -21
  67. package/lib/models/ChangeEvent.d.ts +5 -5
  68. package/lib/models/FormsAndValidationsModuleConfig.d.ts +11 -11
  69. package/lib/models/dayjs-adapter/dayjs-date-adapter.d.ts +49 -49
  70. package/lib/tokens.d.ts +7 -7
  71. package/lib/validations/base-validation.d.ts +219 -219
  72. package/lib/validations/base-validation.loc.d.ts +14 -14
  73. package/lib/validations/customValidators/CustomRequiredDirective.d.ts +24 -24
  74. package/lib/validations/validation-autocomplete/validation-autocomplete.component.d.ts +58 -58
  75. package/lib/validations/validation-autocomplete-multi/validation-autocomplete-multi.component.d.ts +88 -88
  76. package/lib/validations/validation-currency/validation-currency.component.d.ts +28 -28
  77. package/lib/validations/validation-date/validation-date.component.d.ts +79 -79
  78. package/lib/validations/validation-datetime/validation-datetime.component.d.ts +109 -109
  79. package/lib/validations/validation-input/validation-input.component.d.ts +134 -134
  80. package/lib/validations/validation-select/validation-select.component.d.ts +95 -95
  81. package/lib/validations/validation-text-area/validation-text-area.component.d.ts +28 -28
  82. package/package.json +13 -13
  83. package/public-api.d.ts +31 -31
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- /// <amd-module name="@esfaenza/forms-and-validations" />
5
- export * from './public-api';
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@esfaenza/forms-and-validations" />
5
+ export * from './public-api';
@@ -1,276 +1,276 @@
1
- import { ControlValueAccessor, NgControl, NgForm, NgModel } from "@angular/forms";
2
- import { EventEmitter, ChangeDetectorRef } from "@angular/core";
3
- import { AccessControlService, ComponentContext } from "@esfaenza/access-control";
4
- import { Subject } from "rxjs";
5
- import { TemplateRef } from "@angular/core";
6
- import { ChangeEvent } from "../models/ChangeEvent";
7
- import * as i0 from "@angular/core";
8
- /** Componente base da cui tutti i componenti Form implementano */
9
- export declare abstract class BaseFormControl implements ControlValueAccessor {
10
- protected cdr: ChangeDetectorRef;
11
- ngControl: NgControl;
12
- protected _validators: Array<any>;
13
- private ac;
14
- AppContext: ComponentContext;
15
- private ACO_CUSTOMKEY;
16
- private FAV_DEBUG_MODE;
17
- private nativeInput;
18
- /**
19
- * https://github.com/angular/angular/issues/14988
20
- * TL:DR; Il primo valore passato al writeValue è nullo perché quando i cagnacci fanno new FormControl()
21
- * scrivono un writeValue nullo... quindi al primo binding salto l'inizializzazione se ho la coppia null-firstBind
22
- * poi mettendo firstBind a false di lì in poi funziono come devo. Vista la casistica evito essenzialmente metà detectChanges
23
- */
24
- private firstBind;
25
- /**
26
- * Indica di utilizzare i validatori che l'utente piazza sul componente.
27
- * Da non usare nel caso di form-adaptive dato che i validatori vengono valutati in base al tipo ecc
28
- */
29
- protected UseUserValidators: boolean;
30
- /** Indica se il campo è obbligatorio i opzionale */
31
- Required: boolean;
32
- /** Modello rappresentato da questo campo */
33
- Model: any;
34
- /** Valore del Modello */
35
- EvaluatedModel: string;
36
- /** Nome generato per il controllo interno. Di default è il nome del controllo esterno con l'aggiunta di "_internal". Serve per evitare cross-bind */
37
- GeneratedName: string;
38
- /** Indica se il Form che contiene questo campo è già stato registrato */
39
- protected formHasBennBound: boolean;
40
- /**
41
- * Indica se questo campo è staccato dal Form, ad esempio nel caso sia in un ng-template proiettato nel form.
42
- *
43
- * In quel caso la variabile **Form** del componente dev'essere valorizzata
44
- */
45
- protected detatchedFromform: boolean;
46
- /** @ignore */
47
- protected propagateChange: (_: any) => void;
48
- /** @ignore */
49
- protected onTouched: () => void;
50
- /** @ignore Vedi getter e setter */
51
- _readonly: boolean;
52
- /**
53
- * Qualora ci fosse un contesto collegato questa variabile identifica se Sono l'Owner o meno.
54
- *
55
- * Se non lo sono, il campo risulterà in sola lettura
56
- */
57
- private AppContextOwnership;
58
- /** Subject a cui l'oggetto interno si collega per effettuare il focus dell'elemento input sottostante */
59
- FocusSubject: Subject<void>;
60
- /**
61
- * @EXPERIMENTAL
62
- */
63
- SetValidationSubject: Subject<{
64
- fieldName: string;
65
- error: string;
66
- }>;
67
- /** Modalità in cui viene mostrato il campo, 1-1 rispetto alle definizioni di Angular Material */
68
- FieldAppearence: "legacy" | "standard" | "fill" | "outline";
69
- /** Utilizza o meno il Layout di un form (Label con input di fianco), se false mostra solo l'input */
70
- FormLayout: boolean;
71
- /** Definisce se richiamare l'EventEmitter **inputChange** in maniera classica (true) o solo per la change considerate definitive come tasto invio / blur / ecc... (false) */
72
- EmitPendingChanges: boolean;
73
- /** Attiva o disattiva la validazione per questo componente */
74
- Validation: boolean;
75
- /**
76
- * Permette di scrivere o meno nel campo di Input. Si differenzia dal Readonly in quanto fisicamente l'Input è scrivibile e vengono mantenuti i temi della validazione
77
- * ma interagire direttamente con la casella di Input per l'utente non è possibile
78
- */
79
- Frozen: boolean;
80
- /** Placeholder per quando l'input è vuoto */
81
- Placeholder: string;
82
- /** Classe extra per il form-group in cui viene wrappato l'input */
83
- FormGroupClass: string;
84
- /** Messaggio da mostrare quando la validazione fallisce per questo componente. Di default viene proposta dalla libreria */
85
- FailedValidationMessage: string;
86
- /** Input che forza l'invalidità del componente */
87
- ForcedError: boolean;
88
- /** Mostra un testo a sinistra dell'input (FormLayout permettendo) */
89
- Label: string;
90
- /** col-md-X per la label */
91
- LabelColWidth: number;
92
- /** col-md-X per l'input */
93
- InputColWidth: number;
94
- /** Indica se è l'ultimo componente di un form (serve per rimuovere il margine finale) */
95
- Last: boolean;
96
- /** Associa il componente Form a questo input */
97
- Form: NgForm;
98
- /** Sorgente da cui scegliere valori per i componenti Form che lo consentono */
99
- Source: any[];
100
- /** Nome della proprietà che contiene l'Id degli oggetti bindati nella **Source** */
101
- IdField: string;
102
- /**
103
- * Indica se il **Placeholder** dev'essere usato come una floating label di material o solo come un placeholder standard
104
- *
105
- * Ignorata lato autocomplete, autocomplete-multi e select in quanto hanno gestioni particolari di placeholder ecc...
106
- */
107
- FloatingLabel: boolean;
108
- /** Indica che la parte input del controllo dev'essere una label readonly e la parte label di titolo dev'essere in bold. Per utilizzare un solo componente sia per la modifica che per il dettaglio */
109
- DisplayMode: boolean;
110
- /** Indica la condizione per cui un elemento in Modalità Display può essere visibile in base a ulteriori controlli */
111
- DisplayCondition: boolean;
112
- /** Template per visualizzare la modalità **DisplayMode** come vuole il programmatore frocio di turno */
113
- DisplayModeTemplate: TemplateRef<any>;
114
- /** Layout del Form quando è in modalità Display. Di default mantiene la formattazione a form */
115
- DisplayLayout: 'form' | 'inline' | 'hidden';
116
- /** Separatore da mettere in automatico fra un elemento Form e l'altro quando sono in **DisplayMode** con **DisplayLayout** inline */
117
- InlineSeparator: string;
118
- /** Type HTML (password/text/etc...) */
119
- Type: string;
120
- /**
121
- * Espressione simil-Angular per cambiare il testo dei componenti che scelgono il proprio modello da una **Source**
122
- *
123
- * Il funzionamento è identico al binder di angular, solo con una graffa invece che 2.
124
- * È inoltre possibile aggiungere pezzi di descrizione in maniera condizionale con la sintassi **:prop?(Prop vale {prop})**
125
- */
126
- Display: string;
127
- /** Risultato dell'unione fra le informazioni degli oggetti in **Source** e le impostazioni specificate nell'Input **Display** */
128
- BoundSource: {
129
- id: string;
130
- description: string;
131
- }[];
132
- /** Indica se è il primo Bind della Source */
133
- protected SourceFirstBind: boolean;
134
- /**
135
- * Max length
136
- */
137
- maxlength: number;
138
- /**
139
- * Max length
140
- */
141
- minlength: number;
142
- /**
143
- * Ottiene il valore della variabile **_readonly**
144
- *
145
- * @returns {boolean} **true** se sola lettura, **false** altrimenti
146
- */
147
- get Readonly(): boolean;
148
- /**
149
- * Imposta il valore della variabile **_readonly** gestendo anche il Contesto applicativo
150
- *
151
- * @param {boolean} value Valore da impostare
152
- */
153
- set Readonly(value: boolean);
154
- /**
155
- * Permette di settare in una volta solo gli input LabelColWidth e InputColWidth, basta scriverlo con la sintassi "X Y"
156
- *
157
- * @param {string} input Input nel formato "X Y"
158
- */
159
- set LabelInputRatio(input: string);
160
- /** val-qualcosa che fa effettivamente da input, o eventualmente il singolo input in casi particolari (es checkbox) */
161
- protected validationControl: NgModel;
162
- /**
163
- * Query sull'elemento 'validationControl' che funziona in ambiente statico
164
- *
165
- * @param {NgModel} comp Elemento HTML marcato con "#validationControl"
166
- */
167
- set _validationControl(comp: NgModel);
168
- /**
169
- * Query sull'elemento 'validationControl' che funziona in ambiente dinamico
170
- *
171
- * @param {NgModel} comp Elemento HTML marcato con "#validationControl"
172
- */
173
- set validationControl_static(comp: NgModel);
174
- /** Evento chiamato alla modifica del valore collegato a questo campo */
175
- inputChange: EventEmitter<ChangeEvent>;
176
- /** Evento chiamato al focus del campo di testo/combo/quelcheè, riemitta l'evento originale Javascript */
177
- inputFocus: EventEmitter<any>;
178
- /** Evento chiamato al finalize del campo di testo/combo/quelcheè */
179
- inputFinalized: EventEmitter<string>;
180
- /** Cache delle condizioni scritte tipo :prop?(Roba con {prop}) */
181
- private BindCheckingGroups;
182
- /** Cache delle proprietà scritte tipo --> {prop} */
183
- private BindProperties;
184
- /** @ignore Costruttore */
185
- constructor(cdr: ChangeDetectorRef, ngControl: NgControl, _validators: Array<any>, ac: AccessControlService, AppContext: ComponentContext, ACO_CUSTOMKEY: string, FAV_DEBUG_MODE: boolean, nativeInput?: boolean);
186
- /**
187
- * Effettua il Bind/Parse delle varie **Source** unendo le informazioni specificate in **Display**
188
- *
189
- * Eventualmente rieffettua un bind al modello in base al valore della variabile **RebindModelAfterSource**
190
- */
191
- protected tryBindSourceDisplay(): void;
192
- /** Valuta il contenuto della variabile BindCheckingGroups */
193
- private evaluateBindCheckingGroups;
194
- /** Valuta il contenuto della variabile BindProperties */
195
- private evaluateBindProperties;
196
- /**
197
- * Trasforma un oggetto della Source alla sua versione "nuova" basandosi sulle informazioni su gruppi e proprietà
198
- *
199
- * @param {any} item Oggetto da trasformare
200
- *
201
- * @returns {{id: string, description: string}} Oggetto finale trasformato
202
- */
203
- private transformSourceItem;
204
- /**
205
- * Indica se il comopnente in questione è in grado di gestire ngControl nulli.
206
- * Di default è **false**
207
- *
208
- * @returns {boolean} **true** se gestisco ngControl nulli, **false** altrimenti
209
- */
210
- handleNullNgControl(): boolean;
211
- /** @ignore */
212
- ngOnInit(): void;
213
- destroyed$: Subject<void>;
214
- /**
215
- * Se sono in modalità detatched devo rimuovere manualmente questo controllo quando entro nella dispose, altrimenti se poi ne andassi a riaggiungere
216
- * un altro con lo stesso "name" ma magari resettato, Angular lo re-idraterebbe con i valori precedenti nonostante il modello fosse vuoto
217
- */
218
- ngOnDestroy(): void;
219
- /** Elabora i validatori iniettati e capisce se il valore è obbligatorio o meno */
220
- /** Fratello della funzione con lo stesso nome lato validations */
221
- checkRequiredness(): void;
222
- /** @ignore */
223
- ngAfterViewInit(): void;
224
- /** Helper che collega la funzione di reset del controllo form al controllo di validazione sottostante */
225
- private bindResetFunction;
226
- /** @ignore */
227
- writeValue(obj: any): void;
228
- /** @ignore */
229
- registerOnChange(fn: any): void;
230
- /** @ignore */
231
- registerOnTouched(fn: any): void;
232
- /**
233
- * Registra internamente il componente di validazione, ne imposta i validatori e collega il Form, se presente
234
- *
235
- * @param {NgModel} comp Elemento HTML marcato con "#validationControl"
236
- */
237
- registerValComp(comp: NgModel): void;
238
- registerForm(ngForm: NgForm): void;
239
- /**
240
- * Aggiorna il valore e la validità dell'input sottostante. Non viene chiamato per input nativi come le checkbox
241
- *
242
- * @param {boolean} forcedValue Forza l'aggiornamento anche se non è un input nativo (input nativo = checkbox, ad esempio)
243
- */
244
- updateValidityForNativeInput(forcedValue?: boolean): void;
245
- /**
246
- * @ignore
247
- * Classico "spara fuori". Mantengo lo stesso nome dell'evento dei <val-*> (inputChange) per retrocompatibilità.
248
- *
249
- * Non posso tenerlo protected altrimenti posso eseguirlo solo dal .ts e non dall' .html
250
- */
251
- changed(forcedValue?: any, markForCheck?: boolean, modelEvaluationHandled?: boolean, internal?: boolean): void;
252
- /**
253
- * @ignore
254
- * Classico "spara fuori" sul focus. Mantengo lo stesso nome dell'evento dei <val-*> (inputChange) per retrocompatibilità.
255
- *
256
- * Non posso tenerlo protected altrimenti posso eseguirlo solo dal .ts e non dall' .html
257
- */
258
- focused(event: any): void;
259
- /**
260
- * @ignore
261
- * Classico "spara fuori" sulla finalizzazione del valore dell'input (blur / tasto invio, ecc...). Mantengo lo stesso nome dell'evento dei <val-*> (inputChange) per retrocompatibilità.
262
- *
263
- * Non posso tenerlo protected altrimenti posso eseguirlo solo dal .ts e non dall' .html
264
- */
265
- finalized(): void;
266
- /**
267
- * Stampa un log a console
268
- *
269
- * @param {string} message Messaggio da stampare
270
- */
271
- log(message: string): void;
272
- /** @ignore */
273
- abstract onNotNullValueSet(): void;
274
- static ɵfac: i0.ɵɵFactoryDeclaration<BaseFormControl, never>;
275
- static ɵdir: i0.ɵɵDirectiveDeclaration<BaseFormControl, never, never, { "FocusSubject": { "alias": "FocusSubject"; "required": false; }; "SetValidationSubject": { "alias": "SetValidationSubject"; "required": false; }; "FieldAppearence": { "alias": "FieldAppearence"; "required": false; }; "FormLayout": { "alias": "FormLayout"; "required": false; }; "EmitPendingChanges": { "alias": "EmitPendingChanges"; "required": false; }; "Validation": { "alias": "Validation"; "required": false; }; "Frozen": { "alias": "Frozen"; "required": false; }; "Placeholder": { "alias": "Placeholder"; "required": false; }; "FormGroupClass": { "alias": "FormGroupClass"; "required": false; }; "FailedValidationMessage": { "alias": "FailedValidationMessage"; "required": false; }; "ForcedError": { "alias": "ForcedError"; "required": false; }; "Label": { "alias": "Label"; "required": false; }; "LabelColWidth": { "alias": "LabelColWidth"; "required": false; }; "InputColWidth": { "alias": "InputColWidth"; "required": false; }; "Last": { "alias": "Last"; "required": false; }; "Form": { "alias": "Form"; "required": false; }; "Source": { "alias": "Source"; "required": false; }; "IdField": { "alias": "IdField"; "required": false; }; "FloatingLabel": { "alias": "FloatingLabel"; "required": false; }; "DisplayMode": { "alias": "DisplayMode"; "required": false; }; "DisplayCondition": { "alias": "DisplayCondition"; "required": false; }; "DisplayModeTemplate": { "alias": "DisplayModeTemplate"; "required": false; }; "DisplayLayout": { "alias": "DisplayLayout"; "required": false; }; "InlineSeparator": { "alias": "InlineSeparator"; "required": false; }; "Type": { "alias": "Type"; "required": false; }; "Display": { "alias": "Display"; "required": false; }; "maxlength": { "alias": "maxlength"; "required": false; }; "minlength": { "alias": "minlength"; "required": false; }; "Readonly": { "alias": "Readonly"; "required": false; }; "LabelInputRatio": { "alias": "LabelInputRatio"; "required": false; }; }, { "inputChange": "inputChange"; "inputFocus": "inputFocus"; "inputFinalized": "inputFinalized"; }, never, never, false, never>;
276
- }
1
+ import { ControlValueAccessor, NgControl, NgForm, NgModel } from "@angular/forms";
2
+ import { EventEmitter, ChangeDetectorRef } from "@angular/core";
3
+ import { AccessControlService, ComponentContext } from "@esfaenza/access-control";
4
+ import { Subject } from "rxjs";
5
+ import { TemplateRef } from "@angular/core";
6
+ import { ChangeEvent } from "../models/ChangeEvent";
7
+ import * as i0 from "@angular/core";
8
+ /** Componente base da cui tutti i componenti Form implementano */
9
+ export declare abstract class BaseFormControl implements ControlValueAccessor {
10
+ protected cdr: ChangeDetectorRef;
11
+ ngControl: NgControl;
12
+ protected _validators: Array<any>;
13
+ private ac;
14
+ AppContext: ComponentContext;
15
+ private ACO_CUSTOMKEY;
16
+ private FAV_DEBUG_MODE;
17
+ private nativeInput;
18
+ /**
19
+ * https://github.com/angular/angular/issues/14988
20
+ * TL:DR; Il primo valore passato al writeValue è nullo perché quando i cagnacci fanno new FormControl()
21
+ * scrivono un writeValue nullo... quindi al primo binding salto l'inizializzazione se ho la coppia null-firstBind
22
+ * poi mettendo firstBind a false di lì in poi funziono come devo. Vista la casistica evito essenzialmente metà detectChanges
23
+ */
24
+ private firstBind;
25
+ /**
26
+ * Indica di utilizzare i validatori che l'utente piazza sul componente.
27
+ * Da non usare nel caso di form-adaptive dato che i validatori vengono valutati in base al tipo ecc
28
+ */
29
+ protected UseUserValidators: boolean;
30
+ /** Indica se il campo è obbligatorio i opzionale */
31
+ Required: boolean;
32
+ /** Modello rappresentato da questo campo */
33
+ Model: any;
34
+ /** Valore del Modello */
35
+ EvaluatedModel: string;
36
+ /** Nome generato per il controllo interno. Di default è il nome del controllo esterno con l'aggiunta di "_internal". Serve per evitare cross-bind */
37
+ GeneratedName: string;
38
+ /** Indica se il Form che contiene questo campo è già stato registrato */
39
+ protected formHasBennBound: boolean;
40
+ /**
41
+ * Indica se questo campo è staccato dal Form, ad esempio nel caso sia in un ng-template proiettato nel form.
42
+ *
43
+ * In quel caso la variabile **Form** del componente dev'essere valorizzata
44
+ */
45
+ protected detatchedFromform: boolean;
46
+ /** @ignore */
47
+ protected propagateChange: (_: any) => void;
48
+ /** @ignore */
49
+ protected onTouched: () => void;
50
+ /** @ignore Vedi getter e setter */
51
+ _readonly: boolean;
52
+ /**
53
+ * Qualora ci fosse un contesto collegato questa variabile identifica se Sono l'Owner o meno.
54
+ *
55
+ * Se non lo sono, il campo risulterà in sola lettura
56
+ */
57
+ private AppContextOwnership;
58
+ /** Subject a cui l'oggetto interno si collega per effettuare il focus dell'elemento input sottostante */
59
+ FocusSubject: Subject<void>;
60
+ /**
61
+ * @EXPERIMENTAL
62
+ */
63
+ SetValidationSubject: Subject<{
64
+ fieldName: string;
65
+ error: string;
66
+ }>;
67
+ /** Modalità in cui viene mostrato il campo, 1-1 rispetto alle definizioni di Angular Material */
68
+ FieldAppearence: "legacy" | "standard" | "fill" | "outline";
69
+ /** Utilizza o meno il Layout di un form (Label con input di fianco), se false mostra solo l'input */
70
+ FormLayout: boolean;
71
+ /** Definisce se richiamare l'EventEmitter **inputChange** in maniera classica (true) o solo per la change considerate definitive come tasto invio / blur / ecc... (false) */
72
+ EmitPendingChanges: boolean;
73
+ /** Attiva o disattiva la validazione per questo componente */
74
+ Validation: boolean;
75
+ /**
76
+ * Permette di scrivere o meno nel campo di Input. Si differenzia dal Readonly in quanto fisicamente l'Input è scrivibile e vengono mantenuti i temi della validazione
77
+ * ma interagire direttamente con la casella di Input per l'utente non è possibile
78
+ */
79
+ Frozen: boolean;
80
+ /** Placeholder per quando l'input è vuoto */
81
+ Placeholder: string;
82
+ /** Classe extra per il form-group in cui viene wrappato l'input */
83
+ FormGroupClass: string;
84
+ /** Messaggio da mostrare quando la validazione fallisce per questo componente. Di default viene proposta dalla libreria */
85
+ FailedValidationMessage: string;
86
+ /** Input che forza l'invalidità del componente */
87
+ ForcedError: boolean;
88
+ /** Mostra un testo a sinistra dell'input (FormLayout permettendo) */
89
+ Label: string;
90
+ /** col-md-X per la label */
91
+ LabelColWidth: number;
92
+ /** col-md-X per l'input */
93
+ InputColWidth: number;
94
+ /** Indica se è l'ultimo componente di un form (serve per rimuovere il margine finale) */
95
+ Last: boolean;
96
+ /** Associa il componente Form a questo input */
97
+ Form: NgForm;
98
+ /** Sorgente da cui scegliere valori per i componenti Form che lo consentono */
99
+ Source: any[];
100
+ /** Nome della proprietà che contiene l'Id degli oggetti bindati nella **Source** */
101
+ IdField: string;
102
+ /**
103
+ * Indica se il **Placeholder** dev'essere usato come una floating label di material o solo come un placeholder standard
104
+ *
105
+ * Ignorata lato autocomplete, autocomplete-multi e select in quanto hanno gestioni particolari di placeholder ecc...
106
+ */
107
+ FloatingLabel: boolean;
108
+ /** Indica che la parte input del controllo dev'essere una label readonly e la parte label di titolo dev'essere in bold. Per utilizzare un solo componente sia per la modifica che per il dettaglio */
109
+ DisplayMode: boolean;
110
+ /** Indica la condizione per cui un elemento in Modalità Display può essere visibile in base a ulteriori controlli */
111
+ DisplayCondition: boolean;
112
+ /** Template per visualizzare la modalità **DisplayMode** come vuole il programmatore frocio di turno */
113
+ DisplayModeTemplate: TemplateRef<any>;
114
+ /** Layout del Form quando è in modalità Display. Di default mantiene la formattazione a form */
115
+ DisplayLayout: 'form' | 'inline' | 'hidden';
116
+ /** Separatore da mettere in automatico fra un elemento Form e l'altro quando sono in **DisplayMode** con **DisplayLayout** inline */
117
+ InlineSeparator: string;
118
+ /** Type HTML (password/text/etc...) */
119
+ Type: string;
120
+ /**
121
+ * Espressione simil-Angular per cambiare il testo dei componenti che scelgono il proprio modello da una **Source**
122
+ *
123
+ * Il funzionamento è identico al binder di angular, solo con una graffa invece che 2.
124
+ * È inoltre possibile aggiungere pezzi di descrizione in maniera condizionale con la sintassi **:prop?(Prop vale {prop})**
125
+ */
126
+ Display: string;
127
+ /** Risultato dell'unione fra le informazioni degli oggetti in **Source** e le impostazioni specificate nell'Input **Display** */
128
+ BoundSource: {
129
+ id: string;
130
+ description: string;
131
+ }[];
132
+ /** Indica se è il primo Bind della Source */
133
+ protected SourceFirstBind: boolean;
134
+ /**
135
+ * Max length
136
+ */
137
+ maxlength: number;
138
+ /**
139
+ * Max length
140
+ */
141
+ minlength: number;
142
+ /**
143
+ * Ottiene il valore della variabile **_readonly**
144
+ *
145
+ * @returns {boolean} **true** se sola lettura, **false** altrimenti
146
+ */
147
+ get Readonly(): boolean;
148
+ /**
149
+ * Imposta il valore della variabile **_readonly** gestendo anche il Contesto applicativo
150
+ *
151
+ * @param {boolean} value Valore da impostare
152
+ */
153
+ set Readonly(value: boolean);
154
+ /**
155
+ * Permette di settare in una volta solo gli input LabelColWidth e InputColWidth, basta scriverlo con la sintassi "X Y"
156
+ *
157
+ * @param {string} input Input nel formato "X Y"
158
+ */
159
+ set LabelInputRatio(input: string);
160
+ /** val-qualcosa che fa effettivamente da input, o eventualmente il singolo input in casi particolari (es checkbox) */
161
+ protected validationControl: NgModel;
162
+ /**
163
+ * Query sull'elemento 'validationControl' che funziona in ambiente statico
164
+ *
165
+ * @param {NgModel} comp Elemento HTML marcato con "#validationControl"
166
+ */
167
+ set _validationControl(comp: NgModel);
168
+ /**
169
+ * Query sull'elemento 'validationControl' che funziona in ambiente dinamico
170
+ *
171
+ * @param {NgModel} comp Elemento HTML marcato con "#validationControl"
172
+ */
173
+ set validationControl_static(comp: NgModel);
174
+ /** Evento chiamato alla modifica del valore collegato a questo campo */
175
+ inputChange: EventEmitter<ChangeEvent>;
176
+ /** Evento chiamato al focus del campo di testo/combo/quelcheè, riemitta l'evento originale Javascript */
177
+ inputFocus: EventEmitter<any>;
178
+ /** Evento chiamato al finalize del campo di testo/combo/quelcheè */
179
+ inputFinalized: EventEmitter<string>;
180
+ /** Cache delle condizioni scritte tipo :prop?(Roba con {prop}) */
181
+ private BindCheckingGroups;
182
+ /** Cache delle proprietà scritte tipo --> {prop} */
183
+ private BindProperties;
184
+ /** @ignore Costruttore */
185
+ constructor(cdr: ChangeDetectorRef, ngControl: NgControl, _validators: Array<any>, ac: AccessControlService, AppContext: ComponentContext, ACO_CUSTOMKEY: string, FAV_DEBUG_MODE: boolean, nativeInput?: boolean);
186
+ /**
187
+ * Effettua il Bind/Parse delle varie **Source** unendo le informazioni specificate in **Display**
188
+ *
189
+ * Eventualmente rieffettua un bind al modello in base al valore della variabile **RebindModelAfterSource**
190
+ */
191
+ protected tryBindSourceDisplay(): void;
192
+ /** Valuta il contenuto della variabile BindCheckingGroups */
193
+ private evaluateBindCheckingGroups;
194
+ /** Valuta il contenuto della variabile BindProperties */
195
+ private evaluateBindProperties;
196
+ /**
197
+ * Trasforma un oggetto della Source alla sua versione "nuova" basandosi sulle informazioni su gruppi e proprietà
198
+ *
199
+ * @param {any} item Oggetto da trasformare
200
+ *
201
+ * @returns {{id: string, description: string}} Oggetto finale trasformato
202
+ */
203
+ private transformSourceItem;
204
+ /**
205
+ * Indica se il comopnente in questione è in grado di gestire ngControl nulli.
206
+ * Di default è **false**
207
+ *
208
+ * @returns {boolean} **true** se gestisco ngControl nulli, **false** altrimenti
209
+ */
210
+ handleNullNgControl(): boolean;
211
+ /** @ignore */
212
+ ngOnInit(): void;
213
+ destroyed$: Subject<void>;
214
+ /**
215
+ * Se sono in modalità detatched devo rimuovere manualmente questo controllo quando entro nella dispose, altrimenti se poi ne andassi a riaggiungere
216
+ * un altro con lo stesso "name" ma magari resettato, Angular lo re-idraterebbe con i valori precedenti nonostante il modello fosse vuoto
217
+ */
218
+ ngOnDestroy(): void;
219
+ /** Elabora i validatori iniettati e capisce se il valore è obbligatorio o meno */
220
+ /** Fratello della funzione con lo stesso nome lato validations */
221
+ checkRequiredness(): void;
222
+ /** @ignore */
223
+ ngAfterViewInit(): void;
224
+ /** Helper che collega la funzione di reset del controllo form al controllo di validazione sottostante */
225
+ private bindResetFunction;
226
+ /** @ignore */
227
+ writeValue(obj: any): void;
228
+ /** @ignore */
229
+ registerOnChange(fn: any): void;
230
+ /** @ignore */
231
+ registerOnTouched(fn: any): void;
232
+ /**
233
+ * Registra internamente il componente di validazione, ne imposta i validatori e collega il Form, se presente
234
+ *
235
+ * @param {NgModel} comp Elemento HTML marcato con "#validationControl"
236
+ */
237
+ registerValComp(comp: NgModel): void;
238
+ registerForm(ngForm: NgForm): void;
239
+ /**
240
+ * Aggiorna il valore e la validità dell'input sottostante. Non viene chiamato per input nativi come le checkbox
241
+ *
242
+ * @param {boolean} forcedValue Forza l'aggiornamento anche se non è un input nativo (input nativo = checkbox, ad esempio)
243
+ */
244
+ updateValidityForNativeInput(forcedValue?: boolean): void;
245
+ /**
246
+ * @ignore
247
+ * Classico "spara fuori". Mantengo lo stesso nome dell'evento dei <val-*> (inputChange) per retrocompatibilità.
248
+ *
249
+ * Non posso tenerlo protected altrimenti posso eseguirlo solo dal .ts e non dall' .html
250
+ */
251
+ changed(forcedValue?: any, markForCheck?: boolean, modelEvaluationHandled?: boolean, internal?: boolean): void;
252
+ /**
253
+ * @ignore
254
+ * Classico "spara fuori" sul focus. Mantengo lo stesso nome dell'evento dei <val-*> (inputChange) per retrocompatibilità.
255
+ *
256
+ * Non posso tenerlo protected altrimenti posso eseguirlo solo dal .ts e non dall' .html
257
+ */
258
+ focused(event: any): void;
259
+ /**
260
+ * @ignore
261
+ * Classico "spara fuori" sulla finalizzazione del valore dell'input (blur / tasto invio, ecc...). Mantengo lo stesso nome dell'evento dei <val-*> (inputChange) per retrocompatibilità.
262
+ *
263
+ * Non posso tenerlo protected altrimenti posso eseguirlo solo dal .ts e non dall' .html
264
+ */
265
+ finalized(): void;
266
+ /**
267
+ * Stampa un log a console
268
+ *
269
+ * @param {string} message Messaggio da stampare
270
+ */
271
+ log(message: string): void;
272
+ /** @ignore */
273
+ abstract onNotNullValueSet(): void;
274
+ static ɵfac: i0.ɵɵFactoryDeclaration<BaseFormControl, never>;
275
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BaseFormControl, never, never, { "FocusSubject": { "alias": "FocusSubject"; "required": false; }; "SetValidationSubject": { "alias": "SetValidationSubject"; "required": false; }; "FieldAppearence": { "alias": "FieldAppearence"; "required": false; }; "FormLayout": { "alias": "FormLayout"; "required": false; }; "EmitPendingChanges": { "alias": "EmitPendingChanges"; "required": false; }; "Validation": { "alias": "Validation"; "required": false; }; "Frozen": { "alias": "Frozen"; "required": false; }; "Placeholder": { "alias": "Placeholder"; "required": false; }; "FormGroupClass": { "alias": "FormGroupClass"; "required": false; }; "FailedValidationMessage": { "alias": "FailedValidationMessage"; "required": false; }; "ForcedError": { "alias": "ForcedError"; "required": false; }; "Label": { "alias": "Label"; "required": false; }; "LabelColWidth": { "alias": "LabelColWidth"; "required": false; }; "InputColWidth": { "alias": "InputColWidth"; "required": false; }; "Last": { "alias": "Last"; "required": false; }; "Form": { "alias": "Form"; "required": false; }; "Source": { "alias": "Source"; "required": false; }; "IdField": { "alias": "IdField"; "required": false; }; "FloatingLabel": { "alias": "FloatingLabel"; "required": false; }; "DisplayMode": { "alias": "DisplayMode"; "required": false; }; "DisplayCondition": { "alias": "DisplayCondition"; "required": false; }; "DisplayModeTemplate": { "alias": "DisplayModeTemplate"; "required": false; }; "DisplayLayout": { "alias": "DisplayLayout"; "required": false; }; "InlineSeparator": { "alias": "InlineSeparator"; "required": false; }; "Type": { "alias": "Type"; "required": false; }; "Display": { "alias": "Display"; "required": false; }; "maxlength": { "alias": "maxlength"; "required": false; }; "minlength": { "alias": "minlength"; "required": false; }; "Readonly": { "alias": "Readonly"; "required": false; }; "LabelInputRatio": { "alias": "LabelInputRatio"; "required": false; }; }, { "inputChange": "inputChange"; "inputFocus": "inputFocus"; "inputFinalized": "inputFinalized"; }, never, never, false, never>;
276
+ }