diff --git a/package.json b/package.json index e2e75f253..04b75a0b0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "salix-front", - "version": "24.44.0", + "version": "24.50.0", "description": "Salix frontend", "productName": "Salix", "author": "Verdnatura", @@ -64,4 +64,4 @@ "vite": "^5.1.4", "vitest": "^0.31.1" } -} +} \ No newline at end of file diff --git a/src/components/CreateManualInvoiceForm.vue b/src/components/CreateManualInvoiceForm.vue deleted file mode 100644 index da006e024..000000000 --- a/src/components/CreateManualInvoiceForm.vue +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - -es: - Create manual invoice: Crear factura manual - Ticket: Ticket - Client: Cliente - Max date: Fecha límite - Serial: Serie - Area: Area - Reference: Referencia - Or: O - Invoicing in progress...: Facturación en progreso... - diff --git a/src/components/CrudModel.vue b/src/components/CrudModel.vue index a4cb55a2c..0de5d3aa2 100644 --- a/src/components/CrudModel.vue +++ b/src/components/CrudModel.vue @@ -77,7 +77,7 @@ const isLoading = ref(false); const hasChanges = ref(false); const originalData = ref(); const vnPaginateRef = ref(); -const formData = ref(); +const formData = ref([]); const saveButtonRef = ref(null); const watchChanges = ref(); const formUrl = computed(() => $props.url); diff --git a/src/components/FilterItemForm.vue b/src/components/FilterItemForm.vue index 1cf36deeb..d1ceff4ce 100644 --- a/src/components/FilterItemForm.vue +++ b/src/components/FilterItemForm.vue @@ -50,25 +50,25 @@ const loading = ref(false); const tableColumns = computed(() => [ { - label: t('entry.buys.id'), + label: t('globals.id'), name: 'id', field: 'id', align: 'left', }, { - label: t('entry.buys.name'), + label: t('globals.name'), name: 'name', field: 'name', align: 'left', }, { - label: t('entry.buys.size'), + label: t('globals.size'), name: 'size', field: 'size', align: 'left', }, { - label: t('entry.buys.producer'), + label: t('globals.producer'), name: 'producerName', field: 'producer', align: 'left', @@ -152,10 +152,10 @@ const selectItem = ({ id }) => {

{{ t('Filter item') }}

- + { v-model="itemFilterParams.producerFk" /> [ { - label: t('entry.basicData.id'), + label: t('globals.id'), name: 'id', field: 'id', align: 'left', }, { - label: t('entry.basicData.warehouseOut'), + label: t('globals.warehouseOut'), name: 'warehouseOutFk', field: 'warehouseOutFk', align: 'left', @@ -62,7 +62,7 @@ const tableColumns = computed(() => [ warehousesOptions.value.find((warehouse) => warehouse.id === val).name, }, { - label: t('entry.basicData.warehouseIn'), + label: t('globals.warehouseIn'), name: 'warehouseInFk', field: 'warehouseInFk', align: 'left', @@ -70,14 +70,14 @@ const tableColumns = computed(() => [ warehousesOptions.value.find((warehouse) => warehouse.id === val).name, }, { - label: t('entry.basicData.shipped'), + label: t('globals.shipped'), name: 'shipped', field: 'shipped', align: 'left', format: (val) => toDate(val), }, { - label: t('entry.basicData.landed'), + label: t('globals.landed'), name: 'landed', field: 'landed', align: 'left', @@ -146,7 +146,7 @@ const selectTravel = ({ id }) => {

{{ t('Filter travels') }}

{ v-model="travelFilterParams.agencyModeFk" /> { v-model="travelFilterParams.warehouseOutFk" /> { v-model="travelFilterParams.warehouseInFk" /> diff --git a/src/components/ItemsFilterPanel.vue b/src/components/ItemsFilterPanel.vue index e89d32da4..938dceb4d 100644 --- a/src/components/ItemsFilterPanel.vue +++ b/src/components/ItemsFilterPanel.vue @@ -248,7 +248,7 @@ const removeTag = (index, params, search) => { > { @@ -34,18 +34,26 @@ const search = ref(null); const filteredItems = computed(() => { if (!search.value) return items.value; + const normalizedSearch = normalize(search.value); return items.value.filter((item) => { - const locale = t(item.title).toLowerCase(); - return locale.includes(search.value.toLowerCase()); + const locale = normalize(t(item.title)); + return locale.includes(normalizedSearch); }); }); const filteredPinnedModules = computed(() => { if (!search.value) return pinnedModules.value; + const normalizedSearch = search.value + .normalize('NFD') + .replace(/[\u0300-\u036f]/g, '') + .toLowerCase(); const map = new Map(); for (const [key, pinnedModule] of pinnedModules.value) { - const locale = t(pinnedModule.title).toLowerCase(); - if (locale.includes(search.value.toLowerCase())) map.set(key, pinnedModule); + const locale = t(pinnedModule.title) + .normalize('NFD') + .replace(/[\u0300-\u036f]/g, '') + .toLowerCase(); + if (locale.includes(normalizedSearch)) map.set(key, pinnedModule); } return map; }); @@ -53,11 +61,13 @@ const filteredPinnedModules = computed(() => { onMounted(async () => { await navigation.fetchPinned(); getRoutes(); + initialized.value = true; }); watch( () => route.matched, () => { + if (!initialized.value) return; items.value = []; getRoutes(); }, @@ -147,6 +157,13 @@ async function togglePinned(item, event) { const handleItemExpansion = (itemName) => { expansionItemElements[itemName].scrollToLastElement(); }; + +function normalize(text) { + return text + .normalize('NFD') + .replace(/[\u0300-\u036f]/g, '') + .toLowerCase(); +} diff --git a/src/pages/Account/Alias/Card/AliasSummary.vue b/src/pages/Account/Alias/Card/AliasSummary.vue index b2dc1f0fc..1f76fe7c2 100644 --- a/src/pages/Account/Alias/Card/AliasSummary.vue +++ b/src/pages/Account/Alias/Card/AliasSummary.vue @@ -42,8 +42,8 @@ const entityId = computed(() => $props.id || route.params.id); - - + + diff --git a/src/pages/Account/Card/AccountBasicData.vue b/src/pages/Account/Card/AccountBasicData.vue index f1cdaf9df..e6c9da6fe 100644 --- a/src/pages/Account/Card/AccountBasicData.vue +++ b/src/pages/Account/Card/AccountBasicData.vue @@ -36,7 +36,7 @@ watch(
- + diff --git a/src/pages/Account/Role/Card/RoleForm.vue b/src/pages/Account/Role/Card/RoleForm.vue index 382639beb..09a098085 100644 --- a/src/pages/Account/Role/Card/RoleForm.vue +++ b/src/pages/Account/Role/Card/RoleForm.vue @@ -22,15 +22,12 @@ const { t } = useI18n(); diff --git a/src/pages/Account/Role/Card/RoleSummary.vue b/src/pages/Account/Role/Card/RoleSummary.vue index 76c72e947..fef85f919 100644 --- a/src/pages/Account/Role/Card/RoleSummary.vue +++ b/src/pages/Account/Role/Card/RoleSummary.vue @@ -44,9 +44,9 @@ const filter = { - - - + + + diff --git a/src/pages/Account/locale/en.yml b/src/pages/Account/locale/en.yml index fe8707eb8..f2f563923 100644 --- a/src/pages/Account/locale/en.yml +++ b/src/pages/Account/locale/en.yml @@ -1,32 +1,15 @@ account: - pageTitles: - users: Users - list: Users - roles: Roles - alias: Mail aliasses - accounts: Accounts - ldap: LDAP - samba: Samba - acls: ACLs - connections: Connections - inheritedRoles: Inherited Roles - subRoles: Sub Roles - newRole: New role - privileges: Privileges - mailAlias: Mail Alias - mailForwarding: Mail Forwarding - accountCreate: New user - aliasUsers: Users card: - name: Name nickname: User role: Role - email: Email alias: Alias lang: Language roleFk: Role newUser: New user ticketTracking: Ticket tracking + enableSync: Habilitar sincronización + groupDN: DN grupos + testConnection: Probar conexión privileges: delegate: Can delegate privileges enabled: Account enabled! @@ -74,11 +57,7 @@ account: search: Search user searchInfo: You can search by id, name or nickname create: - name: Name nickname: Nickname - email: Email - role: Role - password: Password active: Active mailForwarding: forwardingMail: Forward email @@ -86,50 +65,30 @@ account: enableMailForwarding: Enable mail forwarding mailInputInfo: All emails will be forwarded to the specified address. role: - pageTitles: - inheritedRoles: Inherited Roles - subRoles: Sub Roles - card: - description: Description - id: Id - name: Name newRole: New role searchRoles: Search role searchInfo: Search role by id or name - name: Name description: Description id: Id mailAlias: - pageTitles: - aliasUsers: Users search: Search mail alias searchInfo: Search alias by id or name - alias: Alias - description: Description - id: Id newAlias: New alias - name: Name isPublic: Public ldap: - enableSync: Enable synchronization server: Server rdn: RDN userDN: User DN filter: Filter - groupDN: Group DN - testConnection: Test connection success: LDAP connection established! password: Password samba: - enableSync: Enable synchronization domainController: Domain controller domainAD: AD domain userAD: AD user - groupDN: Group DN passwordAD: AD password domainPart: User DN (without domain part) verifyCertificate: Verify certificate - testConnection: Test connection success: Samba connection established! accounts: homedir: Homedir base @@ -147,8 +106,6 @@ connections: created: Created killSession: Kill session acls: - role: Role - accessType: Access type permissions: Permission search: Search acls searchInfo: Search acls by model name diff --git a/src/pages/Account/locale/es.yml b/src/pages/Account/locale/es.yml index 112ffe9cc..ba559f2c3 100644 --- a/src/pages/Account/locale/es.yml +++ b/src/pages/Account/locale/es.yml @@ -1,27 +1,7 @@ account: - pageTitles: - users: Usuarios - list: Usuarios - roles: Roles - alias: Alias de correo - accounts: Cuentas - ldap: LDAP - samba: Samba - acls: ACLs - connections: Conexiones - inheritedRoles: Roles heredados - newRole: Nuevo rol - subRoles: Subroles - privileges: Privilegios - mailAlias: Alias de correo - mailForwarding: Reenvío de correo - accountCreate: Nuevo usuario - aliasUsers: Usuarios card: nickname: Usuario - name: Nombre role: Rol - email: Mail alias: Alias lang: Idioma roleFk: Rol @@ -33,6 +13,9 @@ account: deactivated: ¡Usuario desactivado! newUser: Nuevo usuario twoFactor: Doble factor + enableSync: Habilitar sincronización + groupDN: DN grupos + testConnection: Probar conexión privileges: delegate: Puede delegar privilegios actions: @@ -73,11 +56,7 @@ account: search: Buscar usuario searchInfo: Puedes buscar por id, nombre o usuario create: - name: Nombre nickname: Nombre mostrado - email: Email - role: Rol - password: Contraseña active: Activo mailForwarding: forwardingMail: Dirección de reenvío @@ -85,51 +64,30 @@ account: enableMailForwarding: Habilitar redirección de correo mailInputInfo: Todos los correos serán reenviados a la dirección especificada, no se mantendrá copia de los mismos en el buzón del usuario. role: - pageTitles: - inheritedRoles: Roles heredados - subRoles: Subroles - newRole: Nuevo rol - card: - description: Descripción - id: Id - name: Nombre newRole: Nuevo rol searchRoles: Buscar roles searchInfo: Buscar rol por id o nombre - name: Nombre description: Descripción id: Id mailAlias: - pageTitles: - aliasUsers: Usuarios search: Buscar alias de correo searchInfo: Buscar alias por id o nombre - alias: Alias - description: Descripción - id: Id newAlias: Nuevo alias - name: Nombre isPublic: Público ldap: password: Contraseña - enableSync: Habilitar sincronización server: Servidor rdn: RDN userDN: DN usuarios filter: Filtro - groupDN: DN grupos - testConnection: Probar conexión success: ¡Conexión con LDAP establecida! samba: - enableSync: Habilitar sincronización domainController: Controlador de dominio domainAD: Dominio AD - groupDN: DN grupos userAD: Usuario AD passwordAD: Contraseña AD domainPart: DN usuarios (sin la parte del dominio) verifyCertificate: Verificar certificado - testConnection: Probar conexión success: ¡Conexión con Samba establecida! accounts: homedir: Directorio base para carpetas de usuario @@ -147,8 +105,6 @@ connections: created: Creado killSession: Matar sesión acls: - role: Rol - accessType: Tipo de acceso permissions: Permiso search: Buscar acls searchInfo: Buscar acls por nombre diff --git a/src/pages/Claim/ClaimFilter.vue b/src/pages/Claim/ClaimFilter.vue index dc25fe4a0..f7e2ffbf6 100644 --- a/src/pages/Claim/ClaimFilter.vue +++ b/src/pages/Claim/ClaimFilter.vue @@ -23,7 +23,7 @@ defineExpose({ states });