@gnggln/ng-ui-system 1.0.0-alpha.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 (141) hide show
  1. package/esm2022/gnggln-ng-ui-system.mjs +5 -0
  2. package/esm2022/lib/components/accordion/accordion.component.mjs +353 -0
  3. package/esm2022/lib/components/accordion/accordion.types.mjs +6 -0
  4. package/esm2022/lib/components/accordion/index.mjs +2 -0
  5. package/esm2022/lib/components/base-layout/base-layout.component.mjs +218 -0
  6. package/esm2022/lib/components/base-layout/base-layout.types.mjs +6 -0
  7. package/esm2022/lib/components/base-layout/index.mjs +14 -0
  8. package/esm2022/lib/components/button/button-area.component.mjs +196 -0
  9. package/esm2022/lib/components/button/button.component.mjs +164 -0
  10. package/esm2022/lib/components/button/button.types.mjs +6 -0
  11. package/esm2022/lib/components/button/index.mjs +16 -0
  12. package/esm2022/lib/components/crud-table/crud-table.component.mjs +789 -0
  13. package/esm2022/lib/components/crud-table/crud-table.types.mjs +6 -0
  14. package/esm2022/lib/components/crud-table/index.mjs +16 -0
  15. package/esm2022/lib/components/form-builder/adapters/it-date-adapter.mjs +82 -0
  16. package/esm2022/lib/components/form-builder/directives/currency-input.directive.mjs +184 -0
  17. package/esm2022/lib/components/form-builder/form-builder.component.mjs +824 -0
  18. package/esm2022/lib/components/form-builder/form-wizard.component.mjs +510 -0
  19. package/esm2022/lib/components/form-builder/index.mjs +19 -0
  20. package/esm2022/lib/components/form-builder/services/form-condition.service.mjs +132 -0
  21. package/esm2022/lib/components/form-builder/services/form-validation.service.mjs +381 -0
  22. package/esm2022/lib/components/form-builder/services/location.service.mjs +140 -0
  23. package/esm2022/lib/components/form-builder/services/wizard-sync.service.mjs +84 -0
  24. package/esm2022/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.mjs +161 -0
  25. package/esm2022/lib/components/form-builder/sub-components/file-input/file-input.component.mjs +310 -0
  26. package/esm2022/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.mjs +648 -0
  27. package/esm2022/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.mjs +432 -0
  28. package/esm2022/lib/components/form-builder/types/condition.types.mjs +6 -0
  29. package/esm2022/lib/components/form-builder/types/field.types.mjs +6 -0
  30. package/esm2022/lib/components/form-builder/types/index.mjs +2 -0
  31. package/esm2022/lib/components/form-builder/types/schema.types.mjs +6 -0
  32. package/esm2022/lib/components/form-builder/types/territoriale.types.mjs +6 -0
  33. package/esm2022/lib/components/form-builder/types/validation.types.mjs +6 -0
  34. package/esm2022/lib/components/form-builder-editor/form-builder-editor.component.mjs +730 -0
  35. package/esm2022/lib/components/form-builder-editor/form-builder-editor.service.mjs +56 -0
  36. package/esm2022/lib/components/form-builder-editor/index.mjs +21 -0
  37. package/esm2022/lib/components/form-builder-editor/services/editor-persistence.service.mjs +190 -0
  38. package/esm2022/lib/components/form-builder-editor/services/editor-state.service.mjs +324 -0
  39. package/esm2022/lib/components/form-builder-editor/services/field-factory.service.mjs +188 -0
  40. package/esm2022/lib/components/form-builder-editor/sub-components/condition-editor/condition-editor.component.mjs +667 -0
  41. package/esm2022/lib/components/form-builder-editor/sub-components/editor-toolbar/editor-toolbar.component.mjs +317 -0
  42. package/esm2022/lib/components/form-builder-editor/sub-components/field-config-panel/field-config-panel.component.mjs +611 -0
  43. package/esm2022/lib/components/form-builder-editor/sub-components/field-palette/field-palette.component.mjs +267 -0
  44. package/esm2022/lib/components/form-builder-editor/sub-components/form-values-panel/form-values-panel.component.mjs +276 -0
  45. package/esm2022/lib/components/form-builder-editor/sub-components/options-editor/options-editor.component.mjs +323 -0
  46. package/esm2022/lib/components/form-builder-editor/sub-components/preview-container/preview-container.component.mjs +238 -0
  47. package/esm2022/lib/components/form-builder-editor/sub-components/section-editor/section-editor.component.mjs +472 -0
  48. package/esm2022/lib/components/form-builder-editor/sub-components/validation-editor/validation-editor.component.mjs +473 -0
  49. package/esm2022/lib/components/form-builder-editor/types/editor.types.mjs +6 -0
  50. package/esm2022/lib/components/layout-builder/index.mjs +18 -0
  51. package/esm2022/lib/components/layout-builder/layout-builder.component.mjs +1730 -0
  52. package/esm2022/lib/components/layout-builder/layout-builder.types.mjs +9 -0
  53. package/esm2022/lib/components/layout-builder/layout.service.mjs +239 -0
  54. package/esm2022/lib/components/modal/confirm-dialog.component.mjs +151 -0
  55. package/esm2022/lib/components/modal/index.mjs +4 -0
  56. package/esm2022/lib/components/modal/modal.component.mjs +139 -0
  57. package/esm2022/lib/components/modal/modal.service.mjs +194 -0
  58. package/esm2022/lib/components/modal/modal.types.mjs +6 -0
  59. package/esm2022/lib/components/page-header/breadcrumb.service.mjs +242 -0
  60. package/esm2022/lib/components/page-header/index.mjs +20 -0
  61. package/esm2022/lib/components/page-header/page-header.component.mjs +243 -0
  62. package/esm2022/lib/components/page-header/page-header.types.mjs +21 -0
  63. package/esm2022/lib/components/table/index.mjs +2 -0
  64. package/esm2022/lib/components/table/paginated-table.component.mjs +407 -0
  65. package/esm2022/lib/components/table/table.types.mjs +6 -0
  66. package/esm2022/lib/core/types/index.mjs +6 -0
  67. package/esm2022/lib/core/utils/index.mjs +53 -0
  68. package/esm2022/lib/sources/location-data.opt.json +8942 -0
  69. package/esm2022/lib/sources/nazioni.opt.json +215 -0
  70. package/esm2022/public-api.mjs +34 -0
  71. package/fesm2022/gnggln-ng-ui-system.mjs +55752 -0
  72. package/fesm2022/gnggln-ng-ui-system.mjs.map +1 -0
  73. package/index.d.ts +5 -0
  74. package/lib/components/accordion/accordion.component.d.ts +118 -0
  75. package/lib/components/accordion/accordion.types.d.ts +62 -0
  76. package/lib/components/accordion/index.d.ts +2 -0
  77. package/lib/components/base-layout/base-layout.component.d.ts +83 -0
  78. package/lib/components/base-layout/base-layout.types.d.ts +26 -0
  79. package/lib/components/base-layout/index.d.ts +13 -0
  80. package/lib/components/button/button-area.component.d.ts +88 -0
  81. package/lib/components/button/button.component.d.ts +55 -0
  82. package/lib/components/button/button.types.d.ts +70 -0
  83. package/lib/components/button/index.d.ts +15 -0
  84. package/lib/components/crud-table/crud-table.component.d.ts +143 -0
  85. package/lib/components/crud-table/crud-table.types.d.ts +207 -0
  86. package/lib/components/crud-table/index.d.ts +15 -0
  87. package/lib/components/form-builder/adapters/it-date-adapter.d.ts +32 -0
  88. package/lib/components/form-builder/directives/currency-input.directive.d.ts +48 -0
  89. package/lib/components/form-builder/form-builder.component.d.ts +183 -0
  90. package/lib/components/form-builder/form-wizard.component.d.ts +87 -0
  91. package/lib/components/form-builder/index.d.ts +13 -0
  92. package/lib/components/form-builder/services/form-condition.service.d.ts +46 -0
  93. package/lib/components/form-builder/services/form-validation.service.d.ts +63 -0
  94. package/lib/components/form-builder/services/location.service.d.ts +83 -0
  95. package/lib/components/form-builder/services/wizard-sync.service.d.ts +63 -0
  96. package/lib/components/form-builder/sub-components/error-summary/form-error-summary.component.d.ts +28 -0
  97. package/lib/components/form-builder/sub-components/file-input/file-input.component.d.ts +41 -0
  98. package/lib/components/form-builder/sub-components/specifica-territoriale/specifica-territoriale.component.d.ts +145 -0
  99. package/lib/components/form-builder/sub-components/table-territoriale/table-territoriale.component.d.ts +108 -0
  100. package/lib/components/form-builder/types/condition.types.d.ts +51 -0
  101. package/lib/components/form-builder/types/field.types.d.ts +288 -0
  102. package/lib/components/form-builder/types/index.d.ts +5 -0
  103. package/lib/components/form-builder/types/schema.types.d.ts +227 -0
  104. package/lib/components/form-builder/types/territoriale.types.d.ts +170 -0
  105. package/lib/components/form-builder/types/validation.types.d.ts +174 -0
  106. package/lib/components/form-builder-editor/form-builder-editor.component.d.ts +117 -0
  107. package/lib/components/form-builder-editor/form-builder-editor.service.d.ts +38 -0
  108. package/lib/components/form-builder-editor/index.d.ts +15 -0
  109. package/lib/components/form-builder-editor/services/editor-persistence.service.d.ts +42 -0
  110. package/lib/components/form-builder-editor/services/editor-state.service.d.ts +66 -0
  111. package/lib/components/form-builder-editor/services/field-factory.service.d.ts +28 -0
  112. package/lib/components/form-builder-editor/sub-components/condition-editor/condition-editor.component.d.ts +139 -0
  113. package/lib/components/form-builder-editor/sub-components/editor-toolbar/editor-toolbar.component.d.ts +43 -0
  114. package/lib/components/form-builder-editor/sub-components/field-config-panel/field-config-panel.component.d.ts +83 -0
  115. package/lib/components/form-builder-editor/sub-components/field-palette/field-palette.component.d.ts +40 -0
  116. package/lib/components/form-builder-editor/sub-components/form-values-panel/form-values-panel.component.d.ts +51 -0
  117. package/lib/components/form-builder-editor/sub-components/options-editor/options-editor.component.d.ts +63 -0
  118. package/lib/components/form-builder-editor/sub-components/preview-container/preview-container.component.d.ts +68 -0
  119. package/lib/components/form-builder-editor/sub-components/section-editor/section-editor.component.d.ts +82 -0
  120. package/lib/components/form-builder-editor/sub-components/validation-editor/validation-editor.component.d.ts +112 -0
  121. package/lib/components/form-builder-editor/types/editor.types.d.ts +124 -0
  122. package/lib/components/layout-builder/index.d.ts +16 -0
  123. package/lib/components/layout-builder/layout-builder.component.d.ts +85 -0
  124. package/lib/components/layout-builder/layout-builder.types.d.ts +436 -0
  125. package/lib/components/layout-builder/layout.service.d.ts +100 -0
  126. package/lib/components/modal/confirm-dialog.component.d.ts +46 -0
  127. package/lib/components/modal/index.d.ts +4 -0
  128. package/lib/components/modal/modal.component.d.ts +44 -0
  129. package/lib/components/modal/modal.service.d.ts +93 -0
  130. package/lib/components/modal/modal.types.d.ts +110 -0
  131. package/lib/components/page-header/breadcrumb.service.d.ts +96 -0
  132. package/lib/components/page-header/index.d.ts +16 -0
  133. package/lib/components/page-header/page-header.component.d.ts +59 -0
  134. package/lib/components/page-header/page-header.types.d.ts +96 -0
  135. package/lib/components/table/index.d.ts +2 -0
  136. package/lib/components/table/paginated-table.component.d.ts +85 -0
  137. package/lib/components/table/table.types.d.ts +81 -0
  138. package/lib/core/types/index.d.ts +57 -0
  139. package/lib/core/utils/index.d.ts +29 -0
  140. package/package.json +44 -0
  141. package/public-api.d.ts +22 -0
@@ -0,0 +1,139 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { UiFieldCondition, UiConditionalOperator } from '../../../form-builder/types/index';
3
+ import { UiEditorAvailableField } from '../../types/editor.types';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Interfaccia per le opzioni degli operatori condizionali nella select.
7
+ */
8
+ interface OperatorOption {
9
+ /** Valore dell'operatore. */
10
+ value: UiConditionalOperator;
11
+ /** Etichetta visualizzata nella select. */
12
+ label: string;
13
+ }
14
+ /**
15
+ * Editor per le condizioni di visibilita/disabilitazione dei campi.
16
+ *
17
+ * Permette di configurare condizioni con editor visuale o JSON.
18
+ * Supporta operatori di confronto multipli, logica AND/OR
19
+ * e selezione dei valori dalle opzioni dei campi disponibili.
20
+ *
21
+ * @selector ui-condition-editor
22
+ */
23
+ export declare class UiConditionEditorComponent {
24
+ /** Lista delle condizioni da editare. */
25
+ conditions: UiFieldCondition[];
26
+ /** Titolo visualizzato nell'intestazione. */
27
+ title: string;
28
+ /** Campi disponibili per la selezione nelle condizioni. */
29
+ availableFields: UiEditorAvailableField[];
30
+ /** Emesso quando la lista di condizioni viene modificata. */
31
+ conditionsChange: EventEmitter<UiFieldCondition[]>;
32
+ /** Indica se l'editor e in modalita JSON. */
33
+ jsonMode: boolean;
34
+ /** Testo JSON corrente nell'editor. */
35
+ jsonText: string;
36
+ /** Errore di parsing del JSON. */
37
+ jsonError: string;
38
+ /** Opzioni disponibili per gli operatori condizionali. */
39
+ readonly operators: OperatorOption[];
40
+ /**
41
+ * Verifica se l'operatore non richiede un campo valore.
42
+ * @param operator - Operatore da verificare
43
+ * @returns true se l'operatore non necessita di valore
44
+ */
45
+ isNoValueOperator(operator: UiConditionalOperator): boolean;
46
+ /**
47
+ * Verifica se l'operatore opera su array di valori.
48
+ * @param operator - Operatore da verificare
49
+ * @returns true se l'operatore richiede un array di valori
50
+ */
51
+ isArrayOperator(operator: UiConditionalOperator): boolean;
52
+ /**
53
+ * Restituisce le opzioni disponibili per un campo specifico.
54
+ * @param fieldKey - Chiave del campo
55
+ * @returns Array di opzioni del campo, vuoto se non disponibili
56
+ */
57
+ getFieldOptions(fieldKey: string): {
58
+ value: any;
59
+ label: string;
60
+ }[];
61
+ /**
62
+ * Garantisce che il valore sia un array (per select multiple).
63
+ * @param value - Valore da normalizzare
64
+ * @returns Il valore come array
65
+ */
66
+ ensureArray(value: any): any[];
67
+ /**
68
+ * Attiva/disattiva la modalita editor JSON.
69
+ * In apertura serializza le condizioni, in chiusura le deserializza.
70
+ */
71
+ toggleJsonMode(): void;
72
+ /**
73
+ * Formatta il JSON nell'editor con indentazione.
74
+ */
75
+ formatJson(): void;
76
+ /**
77
+ * Gestisce il cambio del testo JSON nell'editor.
78
+ * Tenta il parsing e aggiorna le condizioni se valido.
79
+ * @param text - Testo JSON inserito dall'utente
80
+ */
81
+ onJsonChange(text: string): void;
82
+ /**
83
+ * Aggiunge una nuova condizione con valori predefiniti.
84
+ */
85
+ addCondition(): void;
86
+ /**
87
+ * Rimuove la condizione all'indice specificato.
88
+ * @param index - Indice della condizione da rimuovere
89
+ */
90
+ removeCondition(index: number): void;
91
+ /**
92
+ * Rimuove tutte le condizioni.
93
+ */
94
+ clearAll(): void;
95
+ /**
96
+ * Gestisce il cambio della logica di combinazione (AND/OR).
97
+ * @param index - Indice della condizione
98
+ * @param logic - Nuova logica ('AND' | 'OR')
99
+ */
100
+ onLogicChange(index: number, logic: 'AND' | 'OR'): void;
101
+ /**
102
+ * Gestisce il cambio del campo selezionato in una condizione.
103
+ * Resetta il valore quando il campo cambia.
104
+ * @param index - Indice della condizione
105
+ * @param field - Nuova chiave campo
106
+ */
107
+ onFieldChange(index: number, field: string): void;
108
+ /**
109
+ * Gestisce il cambio dell'operatore in una condizione.
110
+ * Resetta il valore per operatori senza valore.
111
+ * @param index - Indice della condizione
112
+ * @param operator - Nuovo operatore
113
+ */
114
+ onOperatorChange(index: number, operator: UiConditionalOperator): void;
115
+ /**
116
+ * Gestisce il cambio del valore in una condizione.
117
+ * @param index - Indice della condizione
118
+ * @param value - Nuovo valore
119
+ */
120
+ onValueChange(index: number, value: any): void;
121
+ /**
122
+ * Tenta di applicare il JSON corrente come array di condizioni.
123
+ * Aggiorna l'errore in caso di JSON non valido.
124
+ */
125
+ private applyJson;
126
+ /**
127
+ * Clona l'array delle condizioni per garantire immutabilita.
128
+ * @returns Copia superficiale dell'array di condizioni
129
+ */
130
+ private cloneConditions;
131
+ /**
132
+ * Emette l'evento di cambio condizioni.
133
+ * @param conditions - Nuova lista di condizioni
134
+ */
135
+ private emitChange;
136
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiConditionEditorComponent, never>;
137
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiConditionEditorComponent, "ui-condition-editor", never, { "conditions": { "alias": "conditions"; "required": false; }; "title": { "alias": "title"; "required": false; }; "availableFields": { "alias": "availableFields"; "required": false; }; }, { "conditionsChange": "conditionsChange"; }, never, never, true, never>;
138
+ }
139
+ export {};
@@ -0,0 +1,43 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { UiEditorBreadcrumbItem } from '../../types/editor.types';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Toolbar principale dell'editor di form.
6
+ *
7
+ * Contiene:
8
+ * - Sezione sinistra: icona, titolo e breadcrumb di navigazione
9
+ * - Centro: indicatore dello stato di salvataggio
10
+ * - Destra: pulsanti azione (aggiungi sezione, salva, file, altro)
11
+ *
12
+ * @selector ui-editor-toolbar
13
+ */
14
+ export declare class UiEditorToolbarComponent {
15
+ /** Elementi del breadcrumb di navigazione. */
16
+ breadcrumb: UiEditorBreadcrumbItem[];
17
+ /** Indica se ci sono modifiche non salvate. */
18
+ isDirty: boolean;
19
+ /** Data dell'ultimo salvataggio riuscito. */
20
+ lastSaved: Date | null;
21
+ /** Emesso alla richiesta di creare un nuovo form. */
22
+ newForm: EventEmitter<void>;
23
+ /** Emesso alla richiesta di importare un JSON. */
24
+ importJson: EventEmitter<void>;
25
+ /** Emesso alla richiesta di esportare il JSON. */
26
+ exportJson: EventEmitter<void>;
27
+ /** Emesso alla richiesta di salvataggio. */
28
+ save: EventEmitter<void>;
29
+ /** Emesso alla richiesta di pulizia completa. */
30
+ clear: EventEmitter<void>;
31
+ /** Emesso alla richiesta di aggiungere una nuova sezione. */
32
+ addSection: EventEmitter<void>;
33
+ /**
34
+ * Formatta la data dell'ultimo salvataggio in testo leggibile.
35
+ * Restituisce descrizioni relative come "pochi secondi fa", "5 minuti fa", ecc.
36
+ *
37
+ * @param date - Data dell'ultimo salvataggio oppure null
38
+ * @returns Stringa descrittiva dello stato di salvataggio
39
+ */
40
+ formatLastSaved(date: Date | null): string;
41
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiEditorToolbarComponent, never>;
42
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiEditorToolbarComponent, "ui-editor-toolbar", never, { "breadcrumb": { "alias": "breadcrumb"; "required": false; }; "isDirty": { "alias": "isDirty"; "required": false; }; "lastSaved": { "alias": "lastSaved"; "required": false; }; }, { "newForm": "newForm"; "importJson": "importJson"; "exportJson": "exportJson"; "save": "save"; "clear": "clear"; "addSection": "addSection"; }, never, never, true, never>;
43
+ }
@@ -0,0 +1,83 @@
1
+ import { EventEmitter, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';
2
+ import { FormGroup } from '@angular/forms';
3
+ import { UiFormFieldDescriptor, UiFieldType } from '../../../form-builder/types/index';
4
+ import { UiEditorAvailableField } from '../../types/editor.types';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * Pannello laterale destro per la configurazione di un campo selezionato.
8
+ *
9
+ * Mostra un form reattivo suddiviso in pannelli espandibili per gestire
10
+ * proprieta base, stato, layout, validazioni, opzioni e condizioni.
11
+ * Emette aggiornamenti parziali con debounce di 300ms.
12
+ *
13
+ * @selector ui-editor-field-config-panel
14
+ */
15
+ export declare class UiEditorFieldConfigPanelComponent implements OnChanges, OnDestroy {
16
+ /** @internal Servizio per la costruzione del FormGroup. */
17
+ private readonly fb;
18
+ /** @internal Subject per la distruzione e pulizia delle sottoscrizioni. */
19
+ private readonly destroy$;
20
+ /** Campo attualmente selezionato per la configurazione. */
21
+ field: UiFormFieldDescriptor | null;
22
+ /** Lista dei campi disponibili per le condizioni. */
23
+ availableFields: UiEditorAvailableField[];
24
+ /** Emesso quando il campo viene aggiornato dall'utente. */
25
+ fieldUpdate: EventEmitter<Partial<UiFormFieldDescriptor>>;
26
+ /** Form reattivo per la configurazione del campo. */
27
+ configForm: FormGroup | null;
28
+ /** Lista dei tipi di campo per la select. */
29
+ readonly fieldTypes: {
30
+ value: UiFieldType;
31
+ label: string;
32
+ }[];
33
+ /**
34
+ * Indica se il campo selezionato supporta le opzioni.
35
+ * Viene utilizzato per mostrare/nascondere il pannello opzioni.
36
+ */
37
+ get isOptionsField(): boolean;
38
+ /**
39
+ * Rileva cambiamenti sugli input e ricostruisce il form
40
+ * quando cambia il campo selezionato.
41
+ */
42
+ ngOnChanges(changes: SimpleChanges): void;
43
+ ngOnDestroy(): void;
44
+ /**
45
+ * Restituisce le opzioni del campo come array statico.
46
+ * Ignora opzioni osservabili poiche non gestibili nell'editor.
47
+ */
48
+ getFieldOptions(): {
49
+ value: any;
50
+ label: string;
51
+ }[];
52
+ /**
53
+ * Gestisce l'aggiornamento delle validazioni dal sotto-componente.
54
+ * @param validations - Nuova lista di regole di validazione
55
+ */
56
+ onValidationsChange(validations: any[]): void;
57
+ /**
58
+ * Gestisce l'aggiornamento delle opzioni dal sotto-componente.
59
+ * @param options - Nuova lista di opzioni
60
+ */
61
+ onOptionsChange(options: {
62
+ value: any;
63
+ label: string;
64
+ }[]): void;
65
+ /**
66
+ * Gestisce l'aggiornamento delle condizioni di visibilita.
67
+ * @param conditions - Nuova lista di condizioni
68
+ */
69
+ onVisibilityConditionsChange(conditions: any[]): void;
70
+ /**
71
+ * Gestisce l'aggiornamento delle condizioni di disabilitazione.
72
+ * @param conditions - Nuova lista di condizioni
73
+ */
74
+ onDisableConditionsChange(conditions: any[]): void;
75
+ /**
76
+ * @internal
77
+ * Costruisce il FormGroup a partire dal campo selezionato.
78
+ * Si sottoscrive ai valueChanges con debounce per emettere aggiornamenti.
79
+ */
80
+ private buildForm;
81
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiEditorFieldConfigPanelComponent, never>;
82
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiEditorFieldConfigPanelComponent, "ui-editor-field-config-panel", never, { "field": { "alias": "field"; "required": false; }; "availableFields": { "alias": "availableFields"; "required": false; }; }, { "fieldUpdate": "fieldUpdate"; }, never, never, true, never>;
83
+ }
@@ -0,0 +1,40 @@
1
+ import { UiEditorFieldPaletteItem, UiEditorFieldCategory } from '../../types/editor.types';
2
+ import { UiIconName } from '../../../../core/types';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * Interfaccia interna per una categoria della palette.
6
+ * Raggruppa un insieme di elementi sotto un'etichetta comune.
7
+ */
8
+ interface PaletteCategory {
9
+ /** Identificativo della categoria. */
10
+ key: UiEditorFieldCategory;
11
+ /** Etichetta visualizzata nell'intestazione dell'accordion. */
12
+ label: string;
13
+ /** Icona Lucide della categoria. */
14
+ icon: UiIconName;
15
+ /** Elementi trascinabili appartenenti alla categoria. */
16
+ items: UiEditorFieldPaletteItem[];
17
+ }
18
+ /**
19
+ * Palette laterale dei tipi di campo disponibili.
20
+ *
21
+ * Mostra i campi raggruppati per categoria tramite pannelli espandibili.
22
+ * Ogni elemento e trascinabile (CDK drag-drop) verso le sezioni del form.
23
+ *
24
+ * @selector ui-field-palette
25
+ */
26
+ export declare class UiFieldPaletteComponent {
27
+ /**
28
+ * Predicato che impedisce il drop di elementi dentro la palette.
29
+ * La palette e solo una sorgente di drag, non una destinazione.
30
+ */
31
+ noDrop: () => boolean;
32
+ /**
33
+ * Catalogo completo degli elementi della palette,
34
+ * organizzato per categorie con i rispettivi metadati.
35
+ */
36
+ readonly categories: PaletteCategory[];
37
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiFieldPaletteComponent, never>;
38
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiFieldPaletteComponent, "ui-field-palette", never, {}, {}, never, never, true, never>;
39
+ }
40
+ export {};
@@ -0,0 +1,51 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Pannello overlay in basso nell'anteprima che mostra i valori correnti
5
+ * del form in formato JSON modificabile.
6
+ *
7
+ * Permette di visualizzare, modificare, formattare e resettare i valori
8
+ * del form durante la fase di anteprima nell'editor.
9
+ *
10
+ * @selector ui-editor-form-values-panel
11
+ */
12
+ export declare class UiEditorFormValuesPanelComponent {
13
+ /** Valori correnti del form da visualizzare. */
14
+ set formValues(value: any);
15
+ get formValues(): any;
16
+ /** Stato di apertura/chiusura del pannello. */
17
+ isOpen: boolean;
18
+ /** Emesso quando i valori vengono modificati dall'utente via JSON. */
19
+ valuesChange: EventEmitter<any>;
20
+ /** Emesso alla richiesta di aggiornamento dei valori. */
21
+ refreshValues: EventEmitter<void>;
22
+ /** Emesso alla richiesta di apertura/chiusura del pannello. */
23
+ toggle: EventEmitter<void>;
24
+ /** Testo JSON visualizzato nella textarea. */
25
+ jsonText: string;
26
+ /** Messaggio di errore per JSON non valido. */
27
+ jsonError: string | null;
28
+ /** @internal Valori interni del form. */
29
+ private _formValues;
30
+ /**
31
+ * Gestisce l'input dell'utente nella textarea JSON.
32
+ * Prova a parsare il JSON e aggiorna i valori se valido.
33
+ * @param text - Testo JSON inserito dall'utente
34
+ */
35
+ onJsonInput(text: string): void;
36
+ /**
37
+ * Pulisce i valori del form resettando a oggetto vuoto.
38
+ */
39
+ clearValues(): void;
40
+ /**
41
+ * Formatta il JSON con indentazione per una migliore leggibilita.
42
+ */
43
+ formatJson(): void;
44
+ /**
45
+ * @internal
46
+ * Aggiorna il testo JSON dalla rappresentazione interna dei valori.
47
+ */
48
+ private updateJsonText;
49
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiEditorFormValuesPanelComponent, never>;
50
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiEditorFormValuesPanelComponent, "ui-editor-form-values-panel", never, { "formValues": { "alias": "formValues"; "required": false; }; "isOpen": { "alias": "isOpen"; "required": false; }; }, { "valuesChange": "valuesChange"; "refreshValues": "refreshValues"; "toggle": "toggle"; }, never, never, true, never>;
51
+ }
@@ -0,0 +1,63 @@
1
+ /**
2
+ * @module ng-ui-system/form-builder-editor
3
+ * Componente editor delle opzioni per campi di tipo select, radio e multiselect.
4
+ *
5
+ * Permette di aggiungere, modificare, riordinare e rimuovere le opzioni
6
+ * di un campo di scelta, con supporto per valore, etichetta e stato disabilitato.
7
+ */
8
+ import { EventEmitter } from '@angular/core';
9
+ import { UiFieldOption } from '../../../form-builder/types/index';
10
+ import * as i0 from "@angular/core";
11
+ /**
12
+ * Editor per le opzioni di un campo di scelta (select, radio, multiselect).
13
+ *
14
+ * Mostra una lista di opzioni con:
15
+ * - Header con titolo e pulsante per aggiungere nuove opzioni
16
+ * - Per ogni opzione: input valore, input etichetta, checkbox disabilitato,
17
+ * frecce per spostamento su/giu, pulsante elimina
18
+ * - Stato vuoto quando non ci sono opzioni configurate
19
+ */
20
+ export declare class UiOptionsEditorComponent {
21
+ /**
22
+ * Opzioni del campo da modificare.
23
+ * Accetta sia un array di UiFieldOption che un valore generico
24
+ * (per gestire campi non ancora configurati).
25
+ */
26
+ options: UiFieldOption[] | any;
27
+ /** Emette l'array aggiornato delle opzioni ad ogni modifica. */
28
+ optionsChange: EventEmitter<UiFieldOption[]>;
29
+ /**
30
+ * Normalizza l'input per garantire che sia sempre un array valido.
31
+ * Gestisce il caso in cui le opzioni siano null, undefined o di tipo inatteso.
32
+ */
33
+ get normalizedOptions(): UiFieldOption[];
34
+ /**
35
+ * Aggiunge una nuova opzione vuota alla lista e notifica il parent.
36
+ */
37
+ addOption(): void;
38
+ /**
39
+ * Aggiorna una proprieta specifica di un'opzione.
40
+ * @param index - Indice dell'opzione da aggiornare.
41
+ * @param field - Nome della proprieta da modificare.
42
+ * @param value - Nuovo valore della proprieta.
43
+ */
44
+ updateOption(index: number, field: keyof UiFieldOption, value: any): void;
45
+ /**
46
+ * Rimuove un'opzione dalla lista.
47
+ * @param index - Indice dell'opzione da rimuovere.
48
+ */
49
+ removeOption(index: number): void;
50
+ /**
51
+ * Sposta un'opzione in alto o in basso nella lista.
52
+ * @param index - Indice corrente dell'opzione.
53
+ * @param direction - Direzione dello spostamento: -1 (su) o +1 (giu).
54
+ */
55
+ moveOption(index: number, direction: -1 | 1): void;
56
+ /**
57
+ * Emette l'array aggiornato delle opzioni.
58
+ * @param options - Nuovo array di opzioni.
59
+ */
60
+ private emitChange;
61
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiOptionsEditorComponent, never>;
62
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiOptionsEditorComponent, "ui-options-editor", never, { "options": { "alias": "options"; "required": false; }; }, { "optionsChange": "optionsChange"; }, never, never, true, never>;
63
+ }
@@ -0,0 +1,68 @@
1
+ import { EventEmitter, OnChanges, SimpleChanges } from '@angular/core';
2
+ import { UiFormSchema } from '../../../form-builder/types/index';
3
+ import { UiFormBuilderComponent } from '../../../form-builder/form-builder.component';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Contenitore per l'anteprima live del form in fase di editing.
7
+ *
8
+ * Mostra una preview del form builder generato dallo schema corrente,
9
+ * con possibilita di aggiornamento forzato e pannello dei valori.
10
+ *
11
+ * @selector ui-editor-preview-container
12
+ */
13
+ export declare class UiEditorPreviewContainerComponent implements OnChanges {
14
+ /** @internal Change detector per OnPush. */
15
+ private readonly cdr;
16
+ /** Riferimento all'istanza del form builder per leggere i valori. */
17
+ formBuilderRef?: UiFormBuilderComponent;
18
+ /** Schema del form ricevuto dal parent (cambia ad ogni modifica nell'editor). */
19
+ schema: UiFormSchema | null;
20
+ /**
21
+ * Chiave per forzare la ri-creazione del form builder.
22
+ * Viene incrementata dal componente padre per invalidare l'anteprima.
23
+ */
24
+ key: number;
25
+ /** Emesso alla richiesta di aggiornamento forzato dell'anteprima. */
26
+ refresh: EventEmitter<void>;
27
+ /**
28
+ * Snapshot immutabile dello schema usato per il rendering.
29
+ * Viene aggiornato SOLO al primo caricamento, al cambio tab
30
+ * (quando `key` cambia) o al refresh esplicito.
31
+ * Questo evita che le modifiche nell'editor ricostruiscano
32
+ * continuamente il form, perdendo lo stato dell'utente.
33
+ */
34
+ previewSchema: UiFormSchema | null;
35
+ /** Stato di apertura del pannello valori in basso. */
36
+ isValuesPanelOpen: boolean;
37
+ /** Valori correnti del form nell'anteprima. */
38
+ currentFormValues: any;
39
+ /** @internal Ultimo valore di `key` applicato allo snapshot. */
40
+ private lastAppliedKey;
41
+ ngOnChanges(changes: SimpleChanges): void;
42
+ /**
43
+ * Riceve i valori aggiornati dal form builder ad ogni interazione.
44
+ * @param values - Valori correnti del form (inclusi campi disabilitati)
45
+ */
46
+ onFormBuilderValueChange(values: any): void;
47
+ /** Alterna la visibilita del pannello dei valori del form. */
48
+ toggleValuesPanel(): void;
49
+ /**
50
+ * Gestisce il cambiamento dei valori dal pannello JSON.
51
+ * @param values - Nuovi valori parsati dal JSON
52
+ */
53
+ onFormValuesChange(values: any): void;
54
+ /**
55
+ * Aggiorna i valori leggendo lo stato corrente dal form builder.
56
+ */
57
+ onRefreshValues(): void;
58
+ /**
59
+ * @internal
60
+ * Crea una copia profonda dello schema corrente come snapshot
61
+ * per il rendering dell'anteprima. L'id viene reso univoco
62
+ * per forzare il rebuild del form builder (che ricostruisce
63
+ * solo quando `schema.id` cambia).
64
+ */
65
+ private applySchemaSnapshot;
66
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiEditorPreviewContainerComponent, never>;
67
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiEditorPreviewContainerComponent, "ui-editor-preview-container", never, { "schema": { "alias": "schema"; "required": false; }; "key": { "alias": "key"; "required": false; }; }, { "refresh": "refresh"; }, never, never, true, never>;
68
+ }
@@ -0,0 +1,82 @@
1
+ /**
2
+ * @module ng-ui-system/form-builder-editor
3
+ * Componente editor di sezione per il form builder.
4
+ *
5
+ * Renderizza una singola sezione del form come card, con supporto
6
+ * per espansione/collasso, editing inline del titolo, drag & drop
7
+ * dei campi e azioni CRUD su sezione e campi.
8
+ */
9
+ import { EventEmitter } from '@angular/core';
10
+ import { CdkDragDrop } from '@angular/cdk/drag-drop';
11
+ import { UiFormSection } from '../../../form-builder/types/index';
12
+ import { UiFieldType } from '../../../form-builder/types/index';
13
+ import * as i0 from "@angular/core";
14
+ /**
15
+ * Editor visuale di una singola sezione del form.
16
+ *
17
+ * Supporta:
18
+ * - Header espandibile/collassabile con editing inline del titolo
19
+ * - Pulsanti azione: modifica titolo, duplica, elimina
20
+ * - Drop list CDK per ricevere campi dalla palette o da altre sezioni
21
+ * - Ogni campo mostra: handle di trascinamento, icona tipo, label, chiave, badge tipo, asterisco required
22
+ * - Azioni campo (al passaggio mouse): duplica, elimina
23
+ * - Stato vuoto quando non ci sono campi
24
+ */
25
+ export declare class UiSectionEditorComponent {
26
+ /** Sezione del form da renderizzare. */
27
+ section: UiFormSection;
28
+ /** Indica se la sezione e attualmente selezionata. */
29
+ isSelected: boolean;
30
+ /** Chiave del campo attualmente selezionato (o null). */
31
+ selectedFieldKey: string | null;
32
+ /** Emette aggiornamenti parziali alla sezione. */
33
+ sectionUpdate: EventEmitter<Partial<UiFormSection>>;
34
+ /** Emette richiesta di eliminazione della sezione. */
35
+ sectionDelete: EventEmitter<void>;
36
+ /** Emette richiesta di duplicazione della sezione. */
37
+ sectionDuplicate: EventEmitter<void>;
38
+ /** Emette la chiave del campo selezionato. */
39
+ fieldSelect: EventEmitter<string>;
40
+ /** Emette la chiave del campo da duplicare. */
41
+ fieldDuplicate: EventEmitter<string>;
42
+ /** Emette la chiave del campo da eliminare. */
43
+ fieldDelete: EventEmitter<string>;
44
+ /** Emette l'evento di drop del CDK drag & drop. */
45
+ fieldDrop: EventEmitter<CdkDragDrop<any, any, any>>;
46
+ /** Stato di espansione della sezione. */
47
+ isExpanded: boolean;
48
+ /** Indica se il titolo e in fase di modifica inline. */
49
+ isEditingTitle: boolean;
50
+ /** Titolo temporaneo durante la modifica inline. */
51
+ tempTitle: string;
52
+ /**
53
+ * Alterna lo stato di espansione/collasso della sezione.
54
+ */
55
+ toggleExpand(): void;
56
+ /**
57
+ * Avvia la modifica inline del titolo della sezione.
58
+ * @param event - Evento del mouse per prevenire la propagazione.
59
+ */
60
+ startTitleEdit(event: Event): void;
61
+ /**
62
+ * Conferma la modifica del titolo ed emette l'aggiornamento.
63
+ */
64
+ confirmTitleEdit(): void;
65
+ /**
66
+ * Annulla la modifica del titolo, ripristinando il valore originale.
67
+ */
68
+ cancelTitleEdit(): void;
69
+ /**
70
+ * Restituisce il nome dell'icona Lucide associata al tipo di campo.
71
+ * @param type - Tipo di campo del form.
72
+ * @returns Nome dell'icona Lucide.
73
+ */
74
+ getFieldIcon(type: UiFieldType): string;
75
+ /**
76
+ * Gestisce l'evento di drop del CDK drag & drop e lo propaga al parent.
77
+ * @param event - Evento CdkDragDrop.
78
+ */
79
+ onFieldDrop(event: CdkDragDrop<any>): void;
80
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiSectionEditorComponent, never>;
81
+ static ɵcmp: i0.ɵɵComponentDeclaration<UiSectionEditorComponent, "ui-section-editor", never, { "section": { "alias": "section"; "required": true; }; "isSelected": { "alias": "isSelected"; "required": false; }; "selectedFieldKey": { "alias": "selectedFieldKey"; "required": false; }; }, { "sectionUpdate": "sectionUpdate"; "sectionDelete": "sectionDelete"; "sectionDuplicate": "sectionDuplicate"; "fieldSelect": "fieldSelect"; "fieldDuplicate": "fieldDuplicate"; "fieldDelete": "fieldDelete"; "fieldDrop": "fieldDrop"; }, never, never, true, never>;
82
+ }