From 25d451839e0e5242714f0ffa457b5b3e875f51cd Mon Sep 17 00:00:00 2001 From: Guillermo Arrieta Medina Date: Tue, 17 Mar 2026 13:33:20 -0600 Subject: [PATCH] =?UTF-8?q?hotfix:=20se=20mejor=C3=B3=20UX=20modificando?= =?UTF-8?q?=20el=20tipo=20de=20cursor=20que=20se=20muestra=20al=20hacer=20?= =?UTF-8?q?hover=20sobre=20elementos=20interactuables=20y=20se=20restringi?= =?UTF-8?q?=C3=B3=20el=20input=20de=20horas=20estimadas=20a=20un=20rango?= =?UTF-8?q?=20de=200=20a=20200=20pero=20permitiendo=20medias=20horas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../asignaturas/detalle/ContenidoTematico.tsx | 37 +++++++++++++------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/src/components/asignaturas/detalle/ContenidoTematico.tsx b/src/components/asignaturas/detalle/ContenidoTematico.tsx index 8c3a1a6..30862b9 100644 --- a/src/components/asignaturas/detalle/ContenidoTematico.tsx +++ b/src/components/asignaturas/detalle/ContenidoTematico.tsx @@ -96,7 +96,7 @@ function InsertUnidadOverlay({ type="button" variant="outline" size="sm" - className="bg-background/95 border-border/60 hover:bg-background opacity-0 shadow-sm transition-opacity group-hover:opacity-100" + className="bg-background/95 border-border/60 hover:bg-background cursor-pointer opacity-0 shadow-sm transition-opacity group-hover:opacity-100" onClick={(e) => { e.stopPropagation() onInsert() @@ -344,10 +344,17 @@ export function ContenidoTematico() { }) } + const parseHorasEstimadas = (raw: string): number => { + const normalized = raw.trim().replace(',', '.') + const parsed = Number.parseFloat(normalized) + if (!Number.isFinite(parsed)) return 0 + + return parsed + } + const commitEditTema = () => { if (!editingTema) return - const parsedHoras = Number.parseInt(temaDraftHoras, 10) - const horasEstimadas = Number.isFinite(parsedHoras) ? parsedHoras : 0 + const horasEstimadas = parseHorasEstimadas(temaDraftHoras) const next = unidades.map((u) => { if (u.id !== editingTema.unitId) return u @@ -480,7 +487,10 @@ export function ContenidoTematico() { return { id: temaId, nombre: dbTemaNombre, - horasEstimadas: t?.horasEstimadas || 0, + horasEstimadas: + coerceNumber( + typeof t === 'string' ? undefined : t?.horasEstimadas, + ) ?? 0, } }) : [], @@ -530,7 +540,7 @@ export function ContenidoTematico() { // 3. Cálculo de horas (ahora dinámico basado en los nuevos datos) const totalHoras = unidades.reduce( (acc, u) => - acc + u.temas.reduce((sum, t) => sum + (t.horasEstimadas || 0), 0), + acc + u.temas.reduce((sum, t) => sum + (t.horasEstimadas ?? 0), 0), 0, ) @@ -701,7 +711,7 @@ export function ContenidoTematico() {