From 0061d9e5732bd5ded519de038cb06b734824a7d2 Mon Sep 17 00:00:00 2001 From: Kevin_Ramirez Date: Thu, 21 May 2026 16:12:00 -0500 Subject: [PATCH] Se arreglo la inestabilidad de del formulario al hacer clock --- .../doda/doda-form-modal.svelte | 1 + .../dashboard/despacho/doda/+page.svelte | 24 +++++++++++++------ 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/frontend/src/lib/components/dashboard/general_catalogs/doda/doda-form-modal.svelte b/frontend/src/lib/components/dashboard/general_catalogs/doda/doda-form-modal.svelte index 1e6b5073..0cecc9a5 100644 --- a/frontend/src/lib/components/dashboard/general_catalogs/doda/doda-form-modal.svelte +++ b/frontend/src/lib/components/dashboard/general_catalogs/doda/doda-form-modal.svelte @@ -978,6 +978,7 @@ e.preventDefault()} > diff --git a/frontend/src/routes/dashboard/despacho/doda/+page.svelte b/frontend/src/routes/dashboard/despacho/doda/+page.svelte index 2dc08683..0a074271 100644 --- a/frontend/src/routes/dashboard/despacho/doda/+page.svelte +++ b/frontend/src/routes/dashboard/despacho/doda/+page.svelte @@ -94,8 +94,10 @@ const canEdit = $derived(userHasDodaCatalogAction($currentUser, 'edit')); const canDelete = $derived(userHasDodaCatalogAction($currentUser, 'delete')); const accessDeniedMessage = $derived(!canView ? 'Permission denied: cat_doda.view' : null); - const activeDodaIdParam = $derived($page.url.searchParams.get('doda_id')); - const modalCanMutate = $derived(activeDodaIdParam === 'new' ? canCreate : canEdit); + // Estado local para controlar apertura del modal de forma síncrona. + // Evita que stale $page.url provoque un goto no-op al re-abrir rápidamente. + let modalDodaId = $state($page.url.searchParams.get('doda_id') || null); + const modalCanMutate = $derived(modalDodaId === 'new' ? canCreate : canEdit); $effect(() => { if (data.dodas) { @@ -152,6 +154,7 @@ function handleNew() { if (!canCreate) return; + modalDodaId = 'new'; const url = new URL($page.url); url.searchParams.set('doda_id', 'new'); goto(url.toString(), { replaceState: true }); @@ -160,8 +163,10 @@ function handleEdit() { if (!canEdit) return; if (!selectedDoda) return; + const newId = String(selectedDoda.id); + modalDodaId = newId; const url = new URL($page.url); - url.searchParams.set('doda_id', String(selectedDoda.id)); + url.searchParams.set('doda_id', newId); goto(url.toString(), { replaceState: true }); } @@ -443,8 +448,10 @@ selectedDodaIds = selectedDodaIds.includes(row.id) ? [] : [row.id]; }} onRowDoubleClick={(item) => { + const newId = String(item.id); + modalDodaId = newId; const url = new URL($page.url); - url.searchParams.set('doda_id', String(item.id)); + url.searchParams.set('doda_id', newId); goto(url.toString(), { replaceState: true }); }} /> @@ -569,20 +576,23 @@ /> {/if} -{#if $page.url.searchParams.get('doda_id')} +{#if modalDodaId !== null} { + modalDodaId = null; const url = new URL($page.url); url.searchParams.delete('doda_id'); goto(url.toString(), { replaceState: true }); void reloadDodas(); }} onCreatedNavigateTo={(newId) => { + const idStr = String(newId); + modalDodaId = idStr; const url = new URL($page.url); - url.searchParams.set('doda_id', String(newId)); + url.searchParams.set('doda_id', idStr); goto(url.toString(), { replaceState: true }); }} />