diff --git a/sprints/sprint-2/ETAPA_4_PROMPT.md b/sprints/sprint-2/ETAPA_4_PROMPT.md new file mode 100644 index 0000000..30c2e86 --- /dev/null +++ b/sprints/sprint-2/ETAPA_4_PROMPT.md @@ -0,0 +1,254 @@ +# Sprint 2 — Etapa 4: Edición inline de nombre de proceso y cliente + +> **Tipo:** UI — un solo componente. Sin cambios en dominio, persistencia ni reporte. +> **Objetivo:** hacer editable el nombre del proceso y el cliente directamente desde el header del workspace. Hoy son campos estáticos (`
`); deben convertirse en inputs inline que guardan en IndexedDB al confirmar. +> **Resultado esperado:** click sobre nombre o cliente → input inline → Enter o blur guarda → checkmark naranja breve confirma. Validación visual del director requerida antes del OK formal. + +--- + +## Archivo a modificar + +**Un único archivo:** `src/features/workspace/WorkspacePage.tsx` + +Si durante la implementación identificás que otro archivo necesita cambio, **detenete y reportá el conflicto antes de tocarlo**. No procedas sin confirmación. + +--- + +## Contexto: estado actual del header + +El header del workspace (líneas ~139–144) tiene hoy: + +```tsx +
{currentProcess.name}
+ {currentProcess.clientName && ( +{currentProcess.clientName}
+ )} +{currentProcess.name}
+ {savedField === 'name' + ?{currentProcess.clientName}
+ :Agregar cliente…
+ } + {savedField === 'client' + ?{currentProcess.name}
- {currentProcess.clientName && ( -{currentProcess.clientName}
+ + {/* Nombre del proceso — editable inline */} + {editingField === 'name' ? ( + setEditValue(e.target.value)} + onBlur={() => saveField('name')} + onKeyDown={(e) => { + if (e.key === 'Enter') { e.preventDefault(); saveField('name') } + if (e.key === 'Escape') setEditingField(null) + }} + /> + ) : ( +{currentProcess.name}
+ {savedField === 'name' + ?{currentProcess.clientName}
+ :Agregar cliente…
+ } + {savedField === 'client' + ?