diff --git a/frontend/src/app.css b/frontend/src/app.css index 627e3836..af7ea21c 100644 --- a/frontend/src/app.css +++ b/frontend/src/app.css @@ -120,6 +120,14 @@ body { @apply bg-background text-foreground overflow-x-hidden; } + + /* Asegurar que el texto de los inputs de fecha sea legible en modo oscuro + y en navegadores WebKit */ + input[type="date"], + input[type="datetime-local"] { + color: var(--color-foreground); + -webkit-text-fill-color: var(--color-foreground); + } } @layer components { diff --git a/frontend/src/lib/components/dashboard/goods/modales/unit-measure-dialog.svelte b/frontend/src/lib/components/dashboard/goods/modales/unit-measure-dialog.svelte index ff8b057e..81ee5af0 100644 --- a/frontend/src/lib/components/dashboard/goods/modales/unit-measure-dialog.svelte +++ b/frontend/src/lib/components/dashboard/goods/modales/unit-measure-dialog.svelte @@ -19,6 +19,7 @@ let allItems = $state([]); // Store full dataset let loading = $state(false); let searchTerm = $state(""); + let wasOpen = $state(false); // Derived state for filtering $effect(() => { @@ -34,11 +35,15 @@ } }); - // Cargar datos al abrir + // Cargar datos al abrir y resetear búsqueda cada vez que se abre $effect(() => { - if (open && companyStore.activeCompany && allItems.length === 0) { - loadData(); + if (open && !wasOpen) { + searchTerm = ""; + if (companyStore.activeCompany && allItems.length === 0) { + loadData(); + } } + wasOpen = open; }); async function loadData() { diff --git a/frontend/src/lib/components/dashboard/invoices/data-table.svelte b/frontend/src/lib/components/dashboard/invoices/data-table.svelte index fc431493..ae206e98 100644 --- a/frontend/src/lib/components/dashboard/invoices/data-table.svelte +++ b/frontend/src/lib/components/dashboard/invoices/data-table.svelte @@ -70,6 +70,13 @@ manualSorting: true // Sorting is handled server-side for this component }); + function handleRowDoubleClick(row: any) { + const invoice = row.original; + if (invoice?.id) { + window.location.href = `/dashboard/invoices/edit/${invoice.id}`; + } + } + let scrollContainer = $state(); let loadingTrigger = $state(); @@ -200,6 +207,7 @@ data-state={row.getIsSelected() && 'selected'} class="group/inv-list cursor-pointer {row.getIsSelected() ? 'catalog-table-row-selected' : 'catalog-table-row'}" onclick={() => onRowClick && onRowClick(row.original)} + ondblclick={() => handleRowDoubleClick(row)} > {#each visibleCells as cell (cell.id)} {@const colId = cell.column.id} diff --git a/frontend/src/lib/components/dashboard/pedimentos/data-table.svelte b/frontend/src/lib/components/dashboard/pedimentos/data-table.svelte index eb51c5d2..e6c1e89c 100644 --- a/frontend/src/lib/components/dashboard/pedimentos/data-table.svelte +++ b/frontend/src/lib/components/dashboard/pedimentos/data-table.svelte @@ -96,7 +96,7 @@ }); -
+
{#each table.getHeaderGroups() as headerGroup (headerGroup.id)} - + {#each headerGroup.headers as header (header.id)} {@const colId = header.column.id} {#each table.getRowModel().rows as row (row.id)} { if (onRowClick) { @@ -208,7 +209,7 @@ {/each} {:else} - + No hay resultados. @@ -217,7 +218,7 @@ {#if hasMore} - +
{#if loading} diff --git a/frontend/src/lib/components/ui/input/input.svelte b/frontend/src/lib/components/ui/input/input.svelte index 960167d7..ef1fbe7d 100644 --- a/frontend/src/lib/components/ui/input/input.svelte +++ b/frontend/src/lib/components/ui/input/input.svelte @@ -25,7 +25,7 @@ bind:this={ref} data-slot={dataSlot} class={cn( - "selection:bg-primary dark:bg-input/30 selection:text-primary-foreground border-input ring-offset-background placeholder:text-muted-foreground shadow-xs flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 pt-1.5 text-sm font-medium outline-none transition-[color,box-shadow] disabled:cursor-not-allowed disabled:opacity-50", + "selection:bg-primary dark:bg-input/30 selection:text-primary-foreground border-input ring-offset-background placeholder:text-muted-foreground shadow-xs flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 pt-1.5 text-sm font-medium text-foreground outline-none transition-[color,box-shadow] disabled:cursor-not-allowed disabled:opacity-50", "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]", "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", className @@ -40,7 +40,7 @@ bind:this={ref} data-slot={dataSlot} class={cn( - "border-input bg-background selection:bg-primary dark:bg-input/30 selection:text-primary-foreground ring-offset-background placeholder:text-muted-foreground shadow-xs flex h-9 w-full min-w-0 rounded-md border px-3 py-1 text-base outline-none transition-[color,box-shadow] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", + "border-input bg-background selection:bg-primary dark:bg-input/30 selection:text-primary-foreground ring-offset-background placeholder:text-muted-foreground shadow-xs flex h-9 w-full min-w-0 rounded-md border px-3 py-1 text-base text-foreground outline-none transition-[color,box-shadow] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]", "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", className diff --git a/frontend/src/lib/config/shortcuts/dashboard/invoices/list.ts b/frontend/src/lib/config/shortcuts/dashboard/invoices/list.ts index 85d88179..6db05b7c 100644 --- a/frontend/src/lib/config/shortcuts/dashboard/invoices/list.ts +++ b/frontend/src/lib/config/shortcuts/dashboard/invoices/list.ts @@ -27,7 +27,7 @@ export const obtenerAtajosListaFacturas = (acciones: { }): ShortcutDef[] => [ { key: 'Alt+V', description: 'Ver Temporales', action: acciones.irTemporal }, { key: 'Alt+F', description: 'Ver Definitivas', action: acciones.irDefinitiva }, - { key: 'Alt+N', description: 'Ver Nacionales', action: acciones.irNacional }, + { key: 'Alt+Q', description: 'Ver Nacionales', action: acciones.irNacional }, { key: 'Alt+Z', description: 'Ver Cambio Régimen', action: acciones.irCambioRegimen }, { key: 'Alt+L', description: 'Ver Exportaciones', action: acciones.irExportacion }, { key: 'Alt+Y', description: 'Ver Reparaciones', action: acciones.irReparacion }, diff --git a/frontend/src/lib/config/shortcuts/dashboard/pedimentos/list.ts b/frontend/src/lib/config/shortcuts/dashboard/pedimentos/list.ts index 84fe8028..9c635bd3 100644 --- a/frontend/src/lib/config/shortcuts/dashboard/pedimentos/list.ts +++ b/frontend/src/lib/config/shortcuts/dashboard/pedimentos/list.ts @@ -5,6 +5,8 @@ export const obtenerAtajosListaPedimento = (acciones: { manejarActualizar: () => void; manejarEditar: () => void; manejarEliminar: () => void; + irATabla: () => void; + irAAcciones: () => void; }): ShortcutDef[] => [ { key: 'Alt+Shift+N', @@ -25,5 +27,17 @@ export const obtenerAtajosListaPedimento = (acciones: { key: 'Alt+Shift+D', description: 'Eliminar Seleccionado', action: acciones.manejarEliminar + }, + { + key: 'Alt+Shift+T', + description: 'Ir a tabla de pedimentos', + action: acciones.irATabla, + skipDefaultFocusAfter: true + }, + { + key: 'Alt+Shift+A', + description: 'Ir a acciones (barra inferior)', + action: acciones.irAAcciones, + skipDefaultFocusAfter: true } ]; diff --git a/frontend/src/routes/dashboard/general_catalogs/concepts/+page.svelte b/frontend/src/routes/dashboard/general_catalogs/concepts/+page.svelte index 33c48136..5484e615 100644 --- a/frontend/src/routes/dashboard/general_catalogs/concepts/+page.svelte +++ b/frontend/src/routes/dashboard/general_catalogs/concepts/+page.svelte @@ -147,7 +147,7 @@

Conceptos

-

Gestión del catálogo de conceptos

+

Define los conceptos que se usan para capturar y clasificar cargos en la pestaña Cuenta de Gastos y A.A. del pedimento.