From 09da2b7c25afc12fa686d655f8c8fbb1f9bab448 Mon Sep 17 00:00:00 2001 From: BFLOWS Date: Thu, 23 Apr 2026 16:30:57 +0200 Subject: [PATCH] fix(quadri-editor): bottone 'Aggiungi campo' sempre visibile (anche su Quadri B/F/G) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: nei quadri B (titolari row_type), F (upload_slots), G (legal frame), la key 'fields' non esisteva nel questions_snapshot → la condizione (q.fields !== undefined) nascondeva tutto il blocco 'Campi' incluso il bottone 'Aggiungi campo'. Carlo non poteva aggiungere campi normali a questi 3 quadri. Fix: - Rimosso condizionale (q.fields !== undefined): blocco 'Campi' sempre renderizzato - Count dinamico '(q.fields || []).length' mostra 0 se non esiste - Messaggio 'Nessun campo diretto. Aggiungine uno col bottone...' contestuale: - Se row_type presente -> 'o usa i Campi riga per i titolari_effettivi' - Se nested_full presente -> 'o usa i Campi annidati qui sotto' - addField ora genera id univoco con prefisso quadro: 'campo_a_17', 'campo_b_1', 'campo_g_1' invece del semplice 'campo_1' che poteva collidere tra quadri dello stesso template --- .../ar1/components/QuadriStructureEditor.js | 50 ++++++++++--------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/src/modules/ar1/components/QuadriStructureEditor.js b/src/modules/ar1/components/QuadriStructureEditor.js index 13c8190..7c950f3 100644 --- a/src/modules/ar1/components/QuadriStructureEditor.js +++ b/src/modules/ar1/components/QuadriStructureEditor.js @@ -100,8 +100,9 @@ const QuadriStructureEditor = ({ value, onChange }) => { const addField = (qIdx) => { const q = quadri[qIdx]; const fields = q.fields || []; + // id basato su letter quadro + numero crescente per evitare collisioni const newField = { - id: `campo_${fields.length + 1}`, + id: `campo_${q.id || 'X'}_${fields.length + 1}`.toLowerCase(), type: 'text', label: 'Nuovo campo', required: false @@ -350,28 +351,31 @@ const QuadriStructureEditor = ({ value, onChange }) => { text="Quadro normativo (D.Lgs. 231/2007). Il testo dichiara responsabilita legali del firmatario. Modifica con massima cautela: il contenuto viene inserito nel PDF firmato dal beneficiario." /> )} - {/* Fields normali */} - {(q.fields !== undefined) && ( - <> -
- Campi ({(q.fields || []).length}) -
- {(q.fields || []).map((f, fIdx) => - renderFieldRow(f, fIdx, - (p) => updateField(qIdx, fIdx, p), - () => removeField(qIdx, fIdx), - () => moveField(qIdx, fIdx, -1), - () => moveField(qIdx, fIdx, 1), - (q.fields || []).length - ) - )} - {(!q.fields || q.fields.length === 0) && !q.row_type && !q.nested_full && ( -

Nessun campo. Aggiungine uno.

- )} - - )} + {/* Fields normali — sempre mostrato, anche se q.fields non esiste (Quadri B/F/G) */} + <> +
+ Campi ({(q.fields || []).length}) +
+ {(q.fields || []).map((f, fIdx) => + renderFieldRow(f, fIdx, + (p) => updateField(qIdx, fIdx, p), + () => removeField(qIdx, fIdx), + () => moveField(qIdx, fIdx, -1), + () => moveField(qIdx, fIdx, 1), + (q.fields || []).length + ) + )} + {(!q.fields || q.fields.length === 0) && ( +

+ Nessun campo diretto. Aggiungine uno col bottone qui sopra + {q.row_type ? ` (o usa i "Campi riga" qui sotto per i ${q.row_type})` : ''} + {q.nested_full ? ' (o usa i "Campi annidati" qui sotto)' : ''} + . +

+ )} + {/* Row fields (Quadro B titolari) */} {q.row_type && (