Merge pull request 'Corregir que se duplica el campo #90' (#92) from issue/90-corregir-que-se-duplica-el-campo into main

Reviewed-on: #92
This commit was merged in pull request #92.
This commit is contained in:
2026-02-10 17:37:14 +00:00

View File

@@ -107,12 +107,11 @@ function RouteComponent() {
f.value === state.campo_edit.label || f.key === state.campo_edit.clave, f.value === state.campo_edit.label || f.key === state.campo_edit.clave,
) )
if (field && !selectedFields.some((sf) => sf.key === field.key)) { if (!field) return
setSelectedFields([field])
}
setSelectedFields([field])
setInput((prev) => setInput((prev) =>
injectFieldsIntoInput(prev || 'Mejora este campo:', field ? [field] : []), injectFieldsIntoInput(prev || 'Mejora este campo:', [field]),
) )
}, [availableFields]) }, [availableFields])
@@ -131,21 +130,21 @@ function RouteComponent() {
input: string, input: string,
fields: Array<SelectedField>, fields: Array<SelectedField>,
) => { ) => {
const baseText = input.replace(/\[[^\]]+]/g, '').trim() // Quita cualquier bloque previo de campos
const cleaned = input.replace(/\n?\[Campos:[^\]]*]/g, '').trim()
const tags = fields.map((f) => `${f.label}`).join(' ') if (fields.length === 0) return cleaned
return `${baseText} ${tags}`.trim() const fieldLabels = fields.map((f) => f.label).join(', ')
return `${cleaned}\n[Campos: ${fieldLabels}]`
} }
const toggleField = (field: SelectedField) => { const toggleField = (field: SelectedField) => {
setSelectedFields((prev) => { setSelectedFields((prev) => {
let nextFields const nextFields = prev.find((f) => f.key === field.key)
? prev.filter((f) => f.key !== field.key)
if (prev.find((f) => f.key === field.key)) { : [...prev, field]
nextFields = prev.filter((f) => f.key !== field.key)
} else {
nextFields = [...prev, field]
}
setInput((prevInput) => setInput((prevInput) =>
injectFieldsIntoInput(prevInput || 'Mejora este campo:', nextFields), injectFieldsIntoInput(prevInput || 'Mejora este campo:', nextFields),
@@ -156,6 +155,7 @@ function RouteComponent() {
setShowSuggestions(false) setShowSuggestions(false)
} }
const buildPrompt = (userInput: string) => { const buildPrompt = (userInput: string) => {
if (selectedFields.length === 0) return userInput if (selectedFields.length === 0) return userInput
@@ -341,19 +341,13 @@ ${fieldsText}
<Textarea <Textarea
value={input} value={input}
onChange={handleInputChange} onChange={handleInputChange}
onKeyDown={(e) => {
if (e.key === 'Enter' && !e.shiftKey) {
e.preventDefault()
handleSend()
}
}}
placeholder={ placeholder={
selectedFields.length > 0 selectedFields.length > 0
? 'Escribe instrucciones adicionales...' ? 'Escribe instrucciones adicionales...'
: 'Escribe tu solicitud o ":" para campos...' : 'Escribe tu solicitud o ":" para campos...'
} }
className="max-h-[120px] min-h-[40px] flex-1 resize-none border-none bg-transparent py-2 text-sm shadow-none focus-visible:ring-0"
/> />
<Button <Button
onClick={() => handleSend()} onClick={() => handleSend()}
disabled={ disabled={