fix(quadri-editor): bottone 'Aggiungi campo' sempre visibile (anche su Quadri B/F/G)
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
This commit is contained in:
@@ -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) && (
|
||||
<>
|
||||
<div style={{ display: 'flex', justifyContent: 'space-between', marginBottom: 6 }}>
|
||||
<strong style={{ fontSize: 13 }}>Campi ({(q.fields || []).length})</strong>
|
||||
<Button label="Aggiungi campo" icon="pi pi-plus" size="small" outlined
|
||||
onClick={() => addField(qIdx)} />
|
||||
</div>
|
||||
{(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 && (
|
||||
<p style={{ color: '#888', fontStyle: 'italic', textAlign: 'center' }}>Nessun campo. Aggiungine uno.</p>
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
{/* Fields normali — sempre mostrato, anche se q.fields non esiste (Quadri B/F/G) */}
|
||||
<>
|
||||
<div style={{ display: 'flex', justifyContent: 'space-between', marginBottom: 6 }}>
|
||||
<strong style={{ fontSize: 13 }}>Campi ({(q.fields || []).length})</strong>
|
||||
<Button label="Aggiungi campo" icon="pi pi-plus" size="small" outlined
|
||||
onClick={() => addField(qIdx)} />
|
||||
</div>
|
||||
{(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) && (
|
||||
<p style={{ color: '#888', fontStyle: 'italic', textAlign: 'center', fontSize: 12 }}>
|
||||
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)' : ''}
|
||||
.
|
||||
</p>
|
||||
)}
|
||||
</>
|
||||
|
||||
{/* Row fields (Quadro B titolari) */}
|
||||
{q.row_type && (
|
||||
|
||||
Reference in New Issue
Block a user