From cbc3542ead7a9d594db7059c28124bf9346a69c8 Mon Sep 17 00:00:00 2001 From: hreyes Date: Wed, 4 Feb 2026 11:40:12 -0600 Subject: [PATCH] feature/nav-tab-items-nav-tables --- .../modales/client-selector-dialog.svelte | 290 ++++++------- .../edit/items/fa/item-sheet-fa.svelte | 26 +- .../edit/items/inv/item-sheet-inv.svelte | 56 ++- .../invoices/edit/items/items-tab-form.svelte | 402 ++++++++++-------- .../keyboard/KeyboardManager.svelte | 116 ++++- .../components/ui/select/select-item.svelte | 2 + .../lib/components/ui/table/table-row.svelte | 2 + .../shortcuts/invoice-edit-shortcuts.ts | 10 +- .../shortcuts/invoice-item-fa-shortcuts.ts | 15 + .../shortcuts/invoice-item-inv-shortcuts.ts | 14 + .../shortcuts/invoice-item-list-shortcuts.ts | 17 + 11 files changed, 601 insertions(+), 349 deletions(-) create mode 100644 frontend/src/lib/config/shortcuts/invoice-item-fa-shortcuts.ts create mode 100644 frontend/src/lib/config/shortcuts/invoice-item-inv-shortcuts.ts create mode 100644 frontend/src/lib/config/shortcuts/invoice-item-list-shortcuts.ts diff --git a/frontend/src/lib/components/dashboard/goods/modales/client-selector-dialog.svelte b/frontend/src/lib/components/dashboard/goods/modales/client-selector-dialog.svelte index 2b7f0e75..d52d29da 100644 --- a/frontend/src/lib/components/dashboard/goods/modales/client-selector-dialog.svelte +++ b/frontend/src/lib/components/dashboard/goods/modales/client-selector-dialog.svelte @@ -1,156 +1,162 @@ - - - - Seleccionar Cliente - - Busca y selecciona el cliente propietario de la parte. - - + + + + Seleccionar Cliente + + Busca y selecciona el cliente propietario de la parte. + + -
- - -
+
+ + +
-
- {#if loading} -
- -

Cargando catálogo...

-
- {:else if filteredClients.length === 0} -
-

No se encontraron clientes.

-
- {:else} - - - - - - - - - - - {#each filteredClients as client} - handleSelect(client)} - > - - - - - - {/each} - -
IDRFCRazón SocialEstado
{client.id}{client.rfc} -
- {#if client.client_or_provider === 'client'} - - {:else} - - {/if} - {client.name} -
-
- {#if client.is_active} - - Activo - - {:else} - - Baja - - {/if} -
- {/if} -
+
+ {#if loading} +
+ +

Cargando catálogo...

+
+ {:else if filteredClients.length === 0} +
+

No se encontraron clientes.

+
+ {:else} + + + + ID + RFC + Razón Social + Estado + + + + {#each filteredClients as client} + handleSelect(client)}> + {client.id} + {client.rfc} + +
+ {#if client.client_or_provider === 'client'} + + {:else} + + {/if} + {client.name} +
+
+ + {#if client.is_active} + + Activo + + {:else} + + Baja + + {/if} + +
+ {/each} +
+
+ {/if} +
- -
- Mostrando {filteredClients.length} registro(s) -
- -
-
-
\ No newline at end of file + +
+ Mostrando {filteredClients.length} registro(s) +
+ +
+
+
diff --git a/frontend/src/lib/components/dashboard/invoices/edit/items/fa/item-sheet-fa.svelte b/frontend/src/lib/components/dashboard/invoices/edit/items/fa/item-sheet-fa.svelte index 5bf87a1c..0e298501 100644 --- a/frontend/src/lib/components/dashboard/invoices/edit/items/fa/item-sheet-fa.svelte +++ b/frontend/src/lib/components/dashboard/invoices/edit/items/fa/item-sheet-fa.svelte @@ -6,6 +6,8 @@ import { Loader2, Package, Save, X, FileText } from 'lucide-svelte'; import type { Invoice } from '$lib/api/dashboard/a76/invoices'; import type { Item } from '$lib/api/dashboard/a76/items'; + import { useShortcuts } from '$lib/hooks/use-shortcuts'; + import { obtenerAtajosPestanasItemFa } from '$lib/config/shortcuts/invoice-item-fa-shortcuts'; // Child components import MainData from './main-data.svelte'; @@ -37,6 +39,28 @@ // Acceso directo a la primera línea para evitar repeticiones en el HTML let line = $derived(editingItem.lines?.[0]); + + let activeTab = $state('generales'); + + const tabMapping: Record = { + 'tab1': 'generales', + 'tab2': 'continuacion', + 'tab3': 'series', + 'tab4': 'etiquetado', + 'tab5': 'identificadores' + }; + + useShortcuts( + 'Invoice Item Form (Fixed Asset)', + obtenerAtajosPestanasItemFa({ + cambiarPestana: (target) => { + const tab = tabMapping[target]; + if (tab) activeTab = tab; + }, + manejarGuardar: onSave, + manejarCancelar: () => onCancel?.() + }) + ); @@ -99,7 +123,7 @@ - + General diff --git a/frontend/src/lib/components/dashboard/invoices/edit/items/inv/item-sheet-inv.svelte b/frontend/src/lib/components/dashboard/invoices/edit/items/inv/item-sheet-inv.svelte index 237fd70e..862396c0 100644 --- a/frontend/src/lib/components/dashboard/invoices/edit/items/inv/item-sheet-inv.svelte +++ b/frontend/src/lib/components/dashboard/invoices/edit/items/inv/item-sheet-inv.svelte @@ -7,8 +7,10 @@ import { Loader2 } from 'lucide-svelte'; import type { Invoice } from '$lib/api/dashboard/a76/invoices'; import type { Item } from '$lib/api/dashboard/a76/items'; + import { useShortcuts } from '$lib/hooks/use-shortcuts'; + import { obtenerAtajosPestanasItemInv } from '$lib/config/shortcuts/invoice-item-inv-shortcuts'; - let { + let { open = $bindable(), isEditMode = false, editingItem = $bindable(), @@ -16,7 +18,7 @@ onSave, onCancel, isSaving = false - }: { + }: { open: boolean; isEditMode?: boolean; editingItem: Partial; @@ -25,18 +27,43 @@ onCancel?: () => void; isSaving?: boolean; } = $props(); + + let activeTab = $state('general'); + + const tabMapping: Record = { + tab1: 'general', + tab2: 'clasificacion', + tab3: 'cantidades', + tab4: 'otros' + }; + + useShortcuts( + 'Invoice Item Form (Inventory)', + obtenerAtajosPestanasItemInv({ + cambiarPestana: (target) => { + const tab = tabMapping[target]; + if (tab) activeTab = tab; + }, + manejarGuardar: onSave, + manejarCancelar: () => onCancel?.() + }) + ); - + - {isEditMode ? 'Editar Item' : 'Agregar Nuevo Item'} - SCAII (Inventario) + {isEditMode ? 'Editar Item' : 'Agregar Nuevo Item'} - SCAII (Inventario) - {isEditMode ? 'Modifica los campos del inventario y guarda los cambios.' : 'Completa la información del nuevo item de inventario.'} + {isEditMode + ? 'Modifica los campos del inventario y guarda los cambios.' + : 'Completa la información del nuevo item de inventario.'} - + General Clasificación @@ -51,7 +78,8 @@

Información de la Factura (SCAII - Inventario)

{#if !invoice?.id}
- ⚠️ Esta factura aún no se ha guardado. Los items se asociarán cuando guardes la factura. + ⚠️ Esta factura aún no se ha guardado. Los items se asociarán cuando guardes la + factura.
{:else}
@@ -69,7 +97,9 @@
Sistema: - SCAII (Inventory) + SCAII (Inventory)
{/if} @@ -82,8 +112,8 @@
- @@ -249,7 +279,7 @@
-