Merge pull request 'Se arreglo la inestabilidad de del formulario al hacer clock' (#438) from fix/doda into development
Reviewed-on: ADUANASOFT/anexo76#438
This commit is contained in:
@@ -978,6 +978,7 @@
|
||||
<Dialog.Content
|
||||
class="flex h-[90dvh] max-h-[90dvh] w-[calc(100vw-2rem)] max-w-5xl flex-col gap-0 overflow-hidden border bg-background p-0 shadow-lg sm:max-w-5xl"
|
||||
showCloseButton={true}
|
||||
onInteractOutside={(e) => e.preventDefault()}
|
||||
>
|
||||
<Tabs.Root bind:value={activeTab} class="flex min-h-0 w-full flex-1 flex-col gap-0">
|
||||
<Dialog.Header class="shrink-0 space-y-2 border-b px-4 pb-3 pt-3 pr-12 text-left sm:text-left">
|
||||
|
||||
@@ -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<string | null>($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}
|
||||
<DodaFormModal
|
||||
dodaIdParam={$page.url.searchParams.get('doda_id')!}
|
||||
dodaIdParam={modalDodaId}
|
||||
defaultLastUser={data.defaultLastUser}
|
||||
canMutate={modalCanMutate}
|
||||
onClose={() => {
|
||||
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 });
|
||||
}}
|
||||
/>
|
||||
|
||||
Reference in New Issue
Block a user