feat: Advanced filtering system v1.4.1.2

''
This commit is contained in:
2026-02-10 13:04:46 -07:00
parent 5cff309422
commit 471c263158
10 changed files with 28 additions and 17 deletions

BIN
backend/.coverage Normal file

Binary file not shown.

View File

@@ -59,7 +59,6 @@
<button <button
on:click={toggleMenu} on:click={toggleMenu}
class="flex items-center space-x-2 text-gray-700 hover:text-primary-600 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2 rounded-md p-2" class="flex items-center space-x-2 text-gray-700 hover:text-primary-600 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2 rounded-md p-2"
role="button"
tabindex="0" tabindex="0"
on:keydown={(e) => e.key === 'Enter' && toggleMenu()} on:keydown={(e) => e.key === 'Enter' && toggleMenu()}
> >

View File

@@ -174,5 +174,6 @@
-webkit-line-clamp: 2; -webkit-line-clamp: 2;
-webkit-box-orient: vertical; -webkit-box-orient: vertical;
overflow: hidden; overflow: hidden;
line-clamp: 2; /* Propiedad estándar para compatibilidad */
} }
</style> </style>

View File

@@ -214,7 +214,6 @@
maxlength="6" maxlength="6"
required required
disabled={isLoading} disabled={isLoading}
autofocus
/> />
</div> </div>
</div> </div>

View File

@@ -461,8 +461,9 @@
<h3 class="font-medium text-gray-900 mb-4">Información General</h3> <h3 class="font-medium text-gray-900 mb-4">Información General</h3>
<div class="grid grid-cols-1 md:grid-cols-2 gap-6"> <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<div> <div>
<label class="form-label">Razón Social</label> <label class="form-label" for="business_name">Razón Social</label>
<input <input
id="business_name"
type="text" type="text"
class="form-input" class="form-input"
bind:value={businessProfile.business_name} bind:value={businessProfile.business_name}
@@ -471,8 +472,9 @@
</div> </div>
<div> <div>
<label class="form-label">Nombre Comercial</label> <label class="form-label" for="commercial_name">Nombre Comercial</label>
<input <input
id="commercial_name"
type="text" type="text"
class="form-input" class="form-input"
bind:value={businessProfile.commercial_name} bind:value={businessProfile.commercial_name}
@@ -481,8 +483,9 @@
</div> </div>
<div> <div>
<label class="form-label">Clave de Cliente</label> <label class="form-label" for="client_code">Clave de Cliente</label>
<input <input
id="client_code"
type="text" type="text"
class="form-input" class="form-input"
bind:value={businessProfile.client_code} bind:value={businessProfile.client_code}
@@ -491,7 +494,7 @@
</div> </div>
<div> <div>
<label class="form-label">Tipo de Cliente</label> <label class="form-label" for="client_type">Tipo de Cliente</label>
<select class="form-input" bind:value={businessProfile.client_type}> <select class="form-input" bind:value={businessProfile.client_type}>
<option value="">Seleccionar...</option> <option value="">Seleccionar...</option>
<option value="corporativo">Corporativo</option> <option value="corporativo">Corporativo</option>
@@ -503,8 +506,9 @@
</div> </div>
<div> <div>
<label class="form-label">RFC</label> <label class="form-label" for="rfc">RFC</label>
<input <input
id="rfc"
type="text" type="text"
class="form-input {businessProfileErrors.rfc ? 'border-red-300' : ''}" class="form-input {businessProfileErrors.rfc ? 'border-red-300' : ''}"
bind:value={businessProfile.rfc} bind:value={businessProfile.rfc}
@@ -518,8 +522,9 @@
</div> </div>
<div> <div>
<label class="form-label">ID Fiscal (Otros países)</label> <label class="form-label" for="tax_id">ID Fiscal (Otros países)</label>
<input <input
id="tax_id"
type="text" type="text"
class="form-input" class="form-input"
bind:value={businessProfile.tax_id} bind:value={businessProfile.tax_id}
@@ -619,8 +624,9 @@
<h3 class="font-medium text-gray-900 mb-4">Representantes</h3> <h3 class="font-medium text-gray-900 mb-4">Representantes</h3>
<div class="grid grid-cols-1 md:grid-cols-2 gap-6"> <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<div> <div>
<label class="form-label">Encargado/Representante</label> <label class="form-label" for="company_representative">Encargado/Representante</label>
<input <input
id="company_representative"
type="text" type="text"
class="form-input" class="form-input"
bind:value={businessProfile.company_representative} bind:value={businessProfile.company_representative}
@@ -629,8 +635,9 @@
</div> </div>
<div> <div>
<label class="form-label">Representante Legal</label> <label class="form-label" for="legal_representative">Representante Legal</label>
<input <input
id="legal_representative"
type="text" type="text"
class="form-input" class="form-input"
bind:value={businessProfile.legal_representative} bind:value={businessProfile.legal_representative}
@@ -645,7 +652,7 @@
<h3 class="font-medium text-gray-900 mb-4">Configuración</h3> <h3 class="font-medium text-gray-900 mb-4">Configuración</h3>
<div class="grid grid-cols-1 md:grid-cols-2 gap-6"> <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<div> <div>
<label class="form-label">Moneda Preferida</label> <label class="form-label" for="preferred_currency">Moneda Preferida</label>
<select class="form-input" bind:value={businessProfile.preferred_currency}> <select class="form-input" bind:value={businessProfile.preferred_currency}>
<option value="MXN">MXN - Peso Mexicano</option> <option value="MXN">MXN - Peso Mexicano</option>
<option value="USD">USD - Dólar Americano</option> <option value="USD">USD - Dólar Americano</option>
@@ -654,12 +661,12 @@
</div> </div>
<div> <div>
<label class="form-label">Nacionalidad</label> <label class="form-label" for="nationality">Nacionalidad</label>
<input type="text" class="form-input" bind:value={businessProfile.nationality} /> <input type="text" class="form-input" bind:value={businessProfile.nationality} />
</div> </div>
<div class="md:col-span-2"> <div class="md:col-span-2">
<label class="form-label">Notas Adicionales</label> <label class="form-label" for="notes">Notas Adicionales</label>
<textarea <textarea
class="form-input" class="form-input"
rows="3" rows="3"

View File

@@ -473,7 +473,7 @@
{#if showCloseDialog} {#if showCloseDialog}
<div class="fixed inset-0 z-50 overflow-y-auto"> <div class="fixed inset-0 z-50 overflow-y-auto">
<div class="flex items-center justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0"> <div class="flex items-center justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0">
<div class="fixed inset-0 transition-opacity" on:click={cancelCloseTicket}> <div class="fixed inset-0 transition-opacity" role="dialog" tabindex="0" on:click={cancelCloseTicket} on:keydown={(e) => e.key === 'Escape' && cancelCloseTicket()}>
<div class="absolute inset-0 bg-gray-500 opacity-75"></div> <div class="absolute inset-0 bg-gray-500 opacity-75"></div>
</div> </div>

View File

@@ -18,7 +18,8 @@
"DOM.Iterable" "DOM.Iterable"
], ],
"allowSyntheticDefaultImports": true, "allowSyntheticDefaultImports": true,
"isolatedModules": true "isolatedModules": true,
"verbatimModuleSyntax": true
}, },
"include": [ "include": [
"src/**/*", "src/**/*",

View File

@@ -84,6 +84,9 @@
{#if isMenuOpen} {#if isMenuOpen}
<div <div
class="fixed inset-0 z-40 lg:hidden" class="fixed inset-0 z-40 lg:hidden"
role="dialog"
tabindex="0"
on:click={() => isMenuOpen = false} on:click={() => isMenuOpen = false}
on:keydown={(e) => e.key === 'Escape' && (isMenuOpen = false)}
></div> ></div>
{/if} {/if}

View File

@@ -78,7 +78,7 @@
<!-- Mobile sidebar backdrop --> <!-- Mobile sidebar backdrop -->
{#if open} {#if open}
<div class="fixed inset-0 z-40 lg:hidden"> <div class="fixed inset-0 z-40 lg:hidden">
<div class="fixed inset-0 bg-gray-600 bg-opacity-75" on:click={() => open = false}></div> <div class="fixed inset-0 bg-gray-600 bg-opacity-75" role="dialog" tabindex="0" on:click={() => open = false} on:keydown={(e) => e.key === 'Escape' && (open = false)}></div>
</div> </div>
{/if} {/if}

View File

@@ -18,7 +18,8 @@
"DOM.Iterable" "DOM.Iterable"
], ],
"allowSyntheticDefaultImports": true, "allowSyntheticDefaultImports": true,
"isolatedModules": true "isolatedModules": true,
"verbatimModuleSyntax": true
}, },
"include": [ "include": [
"src/**/*", "src/**/*",