@gnggln/ng-ui-system 1.0.0-alpha.18 → 1.0.0-alpha.19

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 (63) hide show
  1. package/crud-table/lib/components/form-builder/form-builder.component.d.ts +2 -17
  2. package/crud-table/lib/components/form-builder/services/form-error-state.matcher.d.ts +9 -0
  3. package/crud-table/lib/components/form-builder/services/form-field-error.service.d.ts +38 -0
  4. package/crud-table/lib/components/form-builder/sub-components/form-fields/form-text-field.component.d.ts +62 -0
  5. package/crud-table/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.d.ts +39 -0
  6. package/crud-table/lib/components/form-builder/sub-components/form-fields/index.d.ts +2 -0
  7. package/esm2022/crud-table/lib/components/form-builder/form-builder.component.mjs +17 -89
  8. package/esm2022/crud-table/lib/components/form-builder/services/form-error-state.matcher.mjs +10 -0
  9. package/esm2022/crud-table/lib/components/form-builder/services/form-field-error.service.mjs +103 -0
  10. package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-text-field.component.mjs +147 -0
  11. package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.mjs +99 -0
  12. package/esm2022/crud-table/lib/components/form-builder/sub-components/form-fields/index.mjs +3 -0
  13. package/esm2022/form-builder/lib/components/form-builder/form-builder.component.mjs +17 -89
  14. package/esm2022/form-builder/lib/components/form-builder/index.mjs +5 -2
  15. package/esm2022/form-builder/lib/components/form-builder/services/form-error-state.matcher.mjs +10 -0
  16. package/esm2022/form-builder/lib/components/form-builder/services/form-field-error.service.mjs +103 -0
  17. package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-text-field.component.mjs +147 -0
  18. package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.mjs +99 -0
  19. package/esm2022/form-builder/lib/components/form-builder/sub-components/form-fields/index.mjs +3 -0
  20. package/esm2022/form-builder-editor/lib/components/form-builder/form-builder.component.mjs +17 -89
  21. package/esm2022/form-builder-editor/lib/components/form-builder/services/form-error-state.matcher.mjs +10 -0
  22. package/esm2022/form-builder-editor/lib/components/form-builder/services/form-field-error.service.mjs +103 -0
  23. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-text-field.component.mjs +147 -0
  24. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.mjs +99 -0
  25. package/esm2022/form-builder-editor/lib/components/form-builder/sub-components/form-fields/index.mjs +3 -0
  26. package/esm2022/lib/components/form-builder/form-builder.component.mjs +17 -89
  27. package/esm2022/lib/components/form-builder/index.mjs +5 -2
  28. package/esm2022/lib/components/form-builder/services/form-error-state.matcher.mjs +10 -0
  29. package/esm2022/lib/components/form-builder/services/form-field-error.service.mjs +103 -0
  30. package/esm2022/lib/components/form-builder/sub-components/form-fields/form-text-field.component.mjs +147 -0
  31. package/esm2022/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.mjs +99 -0
  32. package/esm2022/lib/components/form-builder/sub-components/form-fields/index.mjs +3 -0
  33. package/esm2022/lib/version/ng-ui-system-version.mjs +2 -2
  34. package/fesm2022/gnggln-ng-ui-system-crud-table.mjs +337 -88
  35. package/fesm2022/gnggln-ng-ui-system-crud-table.mjs.map +1 -1
  36. package/fesm2022/gnggln-ng-ui-system-form-builder-editor.mjs +371 -122
  37. package/fesm2022/gnggln-ng-ui-system-form-builder-editor.mjs.map +1 -1
  38. package/fesm2022/gnggln-ng-ui-system-form-builder.mjs +338 -89
  39. package/fesm2022/gnggln-ng-ui-system-form-builder.mjs.map +1 -1
  40. package/fesm2022/gnggln-ng-ui-system.mjs +358 -109
  41. package/fesm2022/gnggln-ng-ui-system.mjs.map +1 -1
  42. package/form-builder/lib/components/form-builder/form-builder.component.d.ts +2 -17
  43. package/form-builder/lib/components/form-builder/index.d.ts +5 -1
  44. package/form-builder/lib/components/form-builder/services/form-error-state.matcher.d.ts +9 -0
  45. package/form-builder/lib/components/form-builder/services/form-field-error.service.d.ts +38 -0
  46. package/form-builder/lib/components/form-builder/sub-components/form-fields/form-text-field.component.d.ts +62 -0
  47. package/form-builder/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.d.ts +39 -0
  48. package/form-builder/lib/components/form-builder/sub-components/form-fields/index.d.ts +2 -0
  49. package/form-builder-editor/lib/components/form-builder/form-builder.component.d.ts +2 -17
  50. package/form-builder-editor/lib/components/form-builder/services/form-error-state.matcher.d.ts +9 -0
  51. package/form-builder-editor/lib/components/form-builder/services/form-field-error.service.d.ts +38 -0
  52. package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-text-field.component.d.ts +62 -0
  53. package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.d.ts +39 -0
  54. package/form-builder-editor/lib/components/form-builder/sub-components/form-fields/index.d.ts +2 -0
  55. package/lib/components/form-builder/form-builder.component.d.ts +2 -17
  56. package/lib/components/form-builder/index.d.ts +5 -1
  57. package/lib/components/form-builder/services/form-error-state.matcher.d.ts +9 -0
  58. package/lib/components/form-builder/services/form-field-error.service.d.ts +38 -0
  59. package/lib/components/form-builder/sub-components/form-fields/form-text-field.component.d.ts +62 -0
  60. package/lib/components/form-builder/sub-components/form-fields/form-textarea-field.component.d.ts +39 -0
  61. package/lib/components/form-builder/sub-components/form-fields/index.d.ts +2 -0
  62. package/lib/version/ng-ui-system-version.d.ts +1 -1
  63. package/package.json +13 -13
@@ -1,20 +1,11 @@
1
1
  import { EventEmitter, OnInit, OnChanges, OnDestroy, SimpleChanges, AfterViewInit, TemplateRef } from '@angular/core';
2
- import { FormGroup, FormControl, FormArray, FormGroupDirective, NgForm } from '@angular/forms';
3
- import { ErrorStateMatcher } from '@angular/material/core';
2
+ import { FormGroup, FormControl, FormArray } from '@angular/forms';
4
3
  import { UiAccordionDescriptor } from '../accordion/index';
5
4
  import { UiButtonDescriptor } from '../../components/button/index';
6
5
  import { UiFormSchema, UiFormSection, UiFormData, UiFormCustomEvent } from './types/schema.types';
7
6
  import { UiFormFieldDescriptor, UiFieldOption, UiCustomFieldTemplateContext } from './types/field.types';
8
7
  import { UiFormValidationState, UiFormErrorDetail } from './types/validation.types';
9
8
  import * as i0 from "@angular/core";
10
- /**
11
- * ErrorStateMatcher custom per il form builder.
12
- * Mostra lo stato di errore quando il campo e invalido E (touched OPPURE dirty).
13
- * Sostituisce il matcher di default di Angular Material.
14
- */
15
- export declare class UiFormErrorStateMatcher implements ErrorStateMatcher {
16
- isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean;
17
- }
18
9
  /**
19
10
  * Form builder data-driven e schema-based.
20
11
  *
@@ -40,6 +31,7 @@ export declare class UiFormBuilderComponent implements OnInit, OnChanges, OnDest
40
31
  private readonly elRef;
41
32
  private readonly conditionService;
42
33
  private readonly validationService;
34
+ private readonly fieldErrorService;
43
35
  /** @internal Optional BlackBox service — auto-tracks form events when available. */
44
36
  private readonly blackbox;
45
37
  /** @internal Router inject for BlackBox route context. */
@@ -277,13 +269,6 @@ export declare class UiFormBuilderComponent implements OnInit, OnChanges, OnDest
277
269
  max: number;
278
270
  } | null;
279
271
  private isObservable;
280
- /**
281
- * Normalizza la chiave del tipo di validazione dallo schema (camelCase)
282
- * alla chiave di errore usata da Angular (lowercase).
283
- * Es: "minLength" -> "minlength", "maxLength" -> "maxlength".
284
- */
285
- private normalizeValidationKey;
286
- private getDefaultErrorMessage;
287
272
  getRepeatableAddButtons(section: UiFormSection): UiButtonDescriptor[];
288
273
  static ɵfac: i0.ɵɵFactoryDeclaration<UiFormBuilderComponent, never>;
289
274
  static ɵcmp: i0.ɵɵComponentDeclaration<UiFormBuilderComponent, "ui-form-builder", never, { "schema": { "alias": "schema"; "required": false; }; "initialData": { "alias": "initialData"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "buttonsOverride": { "alias": "buttonsOverride"; "required": false; }; "loadingFor": { "alias": "loadingFor"; "required": false; }; "customFieldTemplates": { "alias": "customFieldTemplates"; "required": false; }; "customFieldTemplateFallback": { "alias": "customFieldTemplateFallback"; "required": false; }; }, { "valueChange": "valueChange"; "validationChange": "validationChange"; "formSubmit": "formSubmit"; "formReset": "formReset"; "customEvent": "customEvent"; }, never, never, true, never>;
@@ -0,0 +1,9 @@
1
+ import { FormControl, FormGroupDirective, NgForm } from '@angular/forms';
2
+ import { ErrorStateMatcher } from '@angular/material/core';
3
+ /**
4
+ * ErrorStateMatcher condiviso tra form-builder e campi atomici.
5
+ * Mostra errore quando il controllo è invalido e (touched o dirty).
6
+ */
7
+ export declare class UiFormErrorStateMatcher implements ErrorStateMatcher {
8
+ isErrorState(control: FormControl | null, _form: FormGroupDirective | NgForm | null): boolean;
9
+ }
@@ -0,0 +1,38 @@
1
+ import { AbstractControl } from '@angular/forms';
2
+ import { UiValidationRule } from '../types/validation.types';
3
+ import * as i0 from "@angular/core";
4
+ /** Opzioni per la visibilità degli errori di un campo. */
5
+ export interface UiFieldErrorDisplayOptions {
6
+ /** Tratta il campo come prevalorizzato (mostra errori anche senza touched). */
7
+ treatAsPrevalorized?: boolean;
8
+ }
9
+ /**
10
+ * Servizio condiviso per messaggi di errore, visibilità errori e conteggio caratteri
11
+ * dei campi form-builder e dei componenti atomici standalone.
12
+ */
13
+ export declare class UiFormFieldErrorService {
14
+ /**
15
+ * Restituisce i messaggi di errore user-facing per un controllo.
16
+ *
17
+ * @param control Controllo Angular del campo
18
+ * @param rules Regole di validazione dichiarative (messaggi custom dallo schema)
19
+ */
20
+ getFieldErrors(control: AbstractControl | null, rules?: UiValidationRule[]): string[];
21
+ /**
22
+ * Indica se mostrare gli errori per un controllo (invalid + touched/dirty/prevalorizzato).
23
+ */
24
+ shouldShowFieldErrors(control: AbstractControl | null, options?: UiFieldErrorDisplayOptions): boolean;
25
+ /**
26
+ * Conteggio caratteri corrente/massimo per campi text/textarea con maxLength.
27
+ */
28
+ getCharCount(control: AbstractControl | null, maxLength?: number): {
29
+ current: number;
30
+ max: number;
31
+ } | null;
32
+ /** Estrae maxLength dalle regole schema. */
33
+ resolveMaxLength(rules?: UiValidationRule[]): number | undefined;
34
+ private normalizeValidationKey;
35
+ private getDefaultErrorMessage;
36
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiFormFieldErrorService, never>;
37
+ static ɵprov: i0.ɵɵInjectableDeclaration<UiFormFieldErrorService>;
38
+ }
@@ -0,0 +1,62 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { FormControl, FormGroup } from '@angular/forms';
3
+ import { UiFormFieldDescriptor, UiFieldOption } from '../../types/field.types';
4
+ import { UiValidationRule } from '../../types/validation.types';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * Campo atomico text / email / password — stesso rendering del form-builder.
8
+ * Modalità builder: `field` + `formGroup`. Modalità standalone: `control` + `label`.
9
+ *
10
+ * @selector ui-form-text-field
11
+ */
12
+ export declare class UiFormTextFieldComponent {
13
+ private readonly fieldErrorService;
14
+ /** Descriptor schema (modalità builder). */
15
+ field?: UiFormFieldDescriptor;
16
+ /** FormGroup dell'istanza (modalità builder). */
17
+ formGroup?: FormGroup;
18
+ /** Readonly globale dal form-builder. */
19
+ readonly: boolean;
20
+ /** Errori pre-calcolati dal builder; se null, derivati dal controllo. */
21
+ errors: string[] | null;
22
+ /** Control diretto (modalità standalone / CVA). */
23
+ control?: FormControl;
24
+ label?: string;
25
+ placeholder?: string;
26
+ maxLength?: number;
27
+ inputType: 'text' | 'email' | 'password';
28
+ validationRules?: UiValidationRule[];
29
+ /** Opzioni autocomplete (campo text searchable nel builder). */
30
+ options: UiFieldOption[];
31
+ optionsFilter: EventEmitter<string>;
32
+ blurred: EventEmitter<void>;
33
+ /** True se il campo schema è text searchable. */
34
+ get isSearchableText(): boolean;
35
+ /** Etichetta effettiva. */
36
+ get effectiveLabel(): string;
37
+ /** Placeholder effettivo. */
38
+ get effectivePlaceholder(): string;
39
+ /** Tipo input HTML nativo. */
40
+ get nativeInputType(): string;
41
+ /** Readonly effettivo sul campo. */
42
+ get isReadonly(): boolean;
43
+ /** Controllo risolto per modalità standalone. */
44
+ get resolvedControl(): FormControl | null;
45
+ /** Regole validation per messaggi errore. */
46
+ get effectiveRules(): UiValidationRule[];
47
+ /** Max length da regole o input. */
48
+ get effectiveMaxLength(): number | undefined;
49
+ /** Controllo del campo in modalità builder. */
50
+ get fieldControl(): FormControl | null;
51
+ /** Messaggi errore da mostrare in mat-error. */
52
+ resolvedErrors(control: FormControl | null): string[];
53
+ /** Conteggio caratteri (solo text con maxLength). */
54
+ charCount(control: FormControl | null): {
55
+ current: number;
56
+ max: number;
57
+ } | null;
58
+ onInput(query: string): void;
59
+ onBlur(): void;
60
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiFormTextFieldComponent, never>;
61
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiFormTextFieldComponent, "ui-form-text-field", never, { "field": { "alias": "field"; "required": false; }; "formGroup": { "alias": "formGroup"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "errors": { "alias": "errors"; "required": false; }; "control": { "alias": "control"; "required": false; }; "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "maxLength": { "alias": "maxLength"; "required": false; }; "inputType": { "alias": "inputType"; "required": false; }; "validationRules": { "alias": "validationRules"; "required": false; }; "options": { "alias": "options"; "required": false; }; }, { "optionsFilter": "optionsFilter"; "blurred": "blurred"; }, never, never, true, never>;
62
+ }
@@ -0,0 +1,39 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { FormControl, FormGroup } from '@angular/forms';
3
+ import { UiFormFieldDescriptor } from '../../types/field.types';
4
+ import { UiValidationRule } from '../../types/validation.types';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * Campo atomico textarea — stesso rendering del form-builder.
8
+ *
9
+ * @selector ui-form-textarea-field
10
+ */
11
+ export declare class UiFormTextareaFieldComponent {
12
+ private readonly fieldErrorService;
13
+ field?: UiFormFieldDescriptor;
14
+ formGroup?: FormGroup;
15
+ readonly: boolean;
16
+ errors: string[] | null;
17
+ control?: FormControl;
18
+ label?: string;
19
+ placeholder?: string;
20
+ rows: number;
21
+ maxLength?: number;
22
+ validationRules?: UiValidationRule[];
23
+ blurred: EventEmitter<void>;
24
+ get effectiveLabel(): string;
25
+ get effectivePlaceholder(): string;
26
+ get isReadonly(): boolean;
27
+ get effectiveRules(): UiValidationRule[];
28
+ /** Controllo del campo in modalità builder. */
29
+ get fieldControl(): FormControl | null;
30
+ get effectiveMaxLength(): number | undefined;
31
+ resolvedErrors(control: FormControl | null): string[];
32
+ charCount(control: FormControl | null): {
33
+ current: number;
34
+ max: number;
35
+ } | null;
36
+ onBlur(): void;
37
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiFormTextareaFieldComponent, never>;
38
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiFormTextareaFieldComponent, "ui-form-textarea-field", never, { "field": { "alias": "field"; "required": false; }; "formGroup": { "alias": "formGroup"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "errors": { "alias": "errors"; "required": false; }; "control": { "alias": "control"; "required": false; }; "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "maxLength": { "alias": "maxLength"; "required": false; }; "validationRules": { "alias": "validationRules"; "required": false; }; }, { "blurred": "blurred"; }, never, never, true, never>;
39
+ }
@@ -0,0 +1,2 @@
1
+ export { UiFormTextFieldComponent } from './form-text-field.component';
2
+ export { UiFormTextareaFieldComponent } from './form-textarea-field.component';