From 89cdd466b16244d31769c10ea8ba674ff54775ed Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Thu, 30 Jan 2025 18:04:43 +0000 Subject: [PATCH 1/5] perf: keyshortcut directive --- src/boot/keyShortcut.js | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/boot/keyShortcut.js b/src/boot/keyShortcut.js index 5afb5b74a..028ca7fea 100644 --- a/src/boot/keyShortcut.js +++ b/src/boot/keyShortcut.js @@ -1,5 +1,5 @@ export default { - mounted: function (el, binding) { + mounted(el, binding) { const shortcut = binding.value ?? '+'; const { key, ctrl, alt, callback } = @@ -8,25 +8,24 @@ export default { key: shortcut, ctrl: true, alt: true, - callback: () => - document - .querySelector(`button[shortcut="${shortcut}"]`) - ?.click(), + callback: () => el.click(), } : binding.value; + if (!el.hasAttribute('shortcut')) { + el.setAttribute('shortcut', key); + } + const handleKeydown = (event) => { if (event.key === key && (!ctrl || event.ctrlKey) && (!alt || event.altKey)) { callback(); } }; - // Attach the event listener to the window window.addEventListener('keydown', handleKeydown); - el._handleKeydown = handleKeydown; }, - unmounted: function (el) { + unmounted(el) { if (el._handleKeydown) { window.removeEventListener('keydown', el._handleKeydown); } -- 2.40.1 From af940c67c68ab180015051f01e6bf7c4c6de3b64 Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Thu, 30 Jan 2025 20:29:45 +0100 Subject: [PATCH 2/5] perf: replace shortcut=+ by v-shortcut=+ --- src/components/ItemsFilterPanel.vue | 2 +- src/components/VnTable/VnTable.vue | 4 ++-- src/components/common/VnDmsList.vue | 2 +- src/layouts/MainLayout.vue | 2 +- src/pages/Account/Card/AccountMailAlias.vue | 7 ++++--- src/pages/Account/Role/Card/SubRoles.vue | 6 +++--- src/pages/Claim/Card/ClaimLines.vue | 15 ++++++++++----- src/pages/Claim/Card/ClaimPhoto.vue | 4 ++-- src/pages/Customer/Card/CustomerAddress.vue | 8 ++++---- src/pages/Customer/Card/CustomerBalance.vue | 4 ++-- src/pages/Customer/Card/CustomerContacts.vue | 2 +- .../Customer/Card/CustomerCreditContracts.vue | 2 +- .../Customer/Card/CustomerFileManagement.vue | 2 +- src/pages/Customer/Card/CustomerSamples.vue | 2 +- .../components/CustomerAddressEdit.vue | 12 +++++------- src/pages/Entry/Card/EntryNotes.vue | 4 ++-- .../InvoiceIn/Card/InvoiceInBasicData.vue | 2 +- src/pages/InvoiceIn/Card/InvoiceInDueDay.vue | 2 +- .../InvoiceIn/Card/InvoiceInIntrastat.vue | 2 +- src/pages/InvoiceIn/Card/InvoiceInVat.vue | 16 ++++++---------- src/pages/Item/Card/ItemBarcode.vue | 2 +- src/pages/Item/Card/ItemTags.vue | 2 +- .../Order/Card/CatalogFilterValueDialog.vue | 2 +- src/pages/Order/Card/OrderCatalogFilter.vue | 4 ++-- .../Route/Agency/Card/AgencyWorkcenter.vue | 2 +- src/pages/Route/Roadmap/RoadmapStops.vue | 2 +- src/pages/Route/RouteTickets.vue | 18 ++++++++++++------ src/pages/Shelving/ShelvingList.vue | 2 +- src/pages/Supplier/Card/SupplierAccounts.vue | 6 +++--- src/pages/Supplier/Card/SupplierAddresses.vue | 2 +- src/pages/Supplier/Card/SupplierAgencyTerm.vue | 2 +- src/pages/Supplier/Card/SupplierContacts.vue | 2 +- src/pages/Ticket/Card/TicketNotes.vue | 4 ++-- src/pages/Ticket/Card/TicketPackage.vue | 4 ++-- src/pages/Ticket/Card/TicketSale.vue | 12 ++++++------ src/pages/Ticket/Card/TicketService.vue | 6 +++--- src/pages/Ticket/Card/TicketTracking.vue | 4 ++-- src/pages/Travel/Card/TravelThermographs.vue | 2 +- src/pages/Travel/ExtraCommunityFilter.vue | 2 +- src/pages/Wagon/Type/WagonTypeList.vue | 8 +++++++- src/pages/Worker/Card/WorkerPda.vue | 10 ++++++++-- src/pages/Worker/Card/WorkerPit.vue | 2 +- src/pages/Worker/Card/WorkerTimeControl.vue | 14 +++++++------- src/pages/Worker/WorkerDepartmentTree.vue | 2 +- src/pages/Zone/Card/ZoneEvents.vue | 4 ++-- src/pages/Zone/Card/ZoneWarehouses.vue | 7 ++++--- src/pages/Zone/Delivery/ZoneDeliveryList.vue | 2 +- src/pages/Zone/Upcoming/ZoneUpcomingList.vue | 2 +- 48 files changed, 125 insertions(+), 106 deletions(-) diff --git a/src/components/ItemsFilterPanel.vue b/src/components/ItemsFilterPanel.vue index dc2a34435..48f607a30 100644 --- a/src/components/ItemsFilterPanel.vue +++ b/src/components/ItemsFilterPanel.vue @@ -282,7 +282,7 @@ const setCategoryList = (data) => { @@ -648,7 +648,7 @@ function handleSelection({ evt, added, rows: selectedRows }, rows) { color="primary" fab icon="add" - shortcut="+" + v-shortcut="'+'" data-cy="vnTableCreateBtn" /> diff --git a/src/components/common/VnDmsList.vue b/src/components/common/VnDmsList.vue index 36c87bab0..67c9cf0d1 100644 --- a/src/components/common/VnDmsList.vue +++ b/src/components/common/VnDmsList.vue @@ -405,7 +405,7 @@ defineExpose({ fab color="primary" icon="add" - shortcut="+" + v-shortcut="'+'"'+'" @click="showFormDialog()" class="fill-icon" > diff --git a/src/layouts/MainLayout.vue b/src/layouts/MainLayout.vue index 2a84e5aa1..3ad1c79bc 100644 --- a/src/layouts/MainLayout.vue +++ b/src/layouts/MainLayout.vue @@ -2,7 +2,7 @@ import Navbar from 'src/components/NavBar.vue'; -- 2.40.1 From c067006d08ea430792d7b49bab480234fef7ec5a Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Thu, 30 Jan 2025 20:29:54 +0100 Subject: [PATCH 3/5] feat: modify directive --- src/boot/keyShortcut.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/boot/keyShortcut.js b/src/boot/keyShortcut.js index 028ca7fea..6da06c8bf 100644 --- a/src/boot/keyShortcut.js +++ b/src/boot/keyShortcut.js @@ -1,6 +1,6 @@ export default { mounted(el, binding) { - const shortcut = binding.value ?? '+'; + const shortcut = binding.value || '+'; const { key, ctrl, alt, callback } = typeof shortcut === 'string' @@ -8,7 +8,7 @@ export default { key: shortcut, ctrl: true, alt: true, - callback: () => el.click(), + callback: () => el?.click(), } : binding.value; -- 2.40.1 From 65a8a7862254aae825a20798db1ab57cd041f80f Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Thu, 30 Jan 2025 20:30:03 +0100 Subject: [PATCH 4/5] feat: improve test --- .../integration/vnComponent/VnShortcut.spec.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/test/cypress/integration/vnComponent/VnShortcut.spec.js b/test/cypress/integration/vnComponent/VnShortcut.spec.js index b49b4e964..e08c44635 100644 --- a/test/cypress/integration/vnComponent/VnShortcut.spec.js +++ b/test/cypress/integration/vnComponent/VnShortcut.spec.js @@ -28,6 +28,17 @@ describe('VnShortcuts', () => { }); cy.url().should('include', module); + if (['monitor', 'claim'].includes(module)) { + return; + } + cy.waitForElement('.q-page').should('exist'); + cy.dataCy('vnTableCreateBtn').should('exist'); + cy.get('.q-page').trigger('keydown', { + ctrlKey: true, + altKey: true, + key: '+', + }); + cy.get('#formModel').should('exist'); }); } }); -- 2.40.1 From 8e761f711d3f8c515687eba998cdbbb5a6d8b3be Mon Sep 17 00:00:00 2001 From: Javier Segarra Date: Thu, 30 Jan 2025 20:33:29 +0100 Subject: [PATCH 5/5] test: fix vitest test --- src/components/common/VnDmsList.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/common/VnDmsList.vue b/src/components/common/VnDmsList.vue index 67c9cf0d1..1040c6791 100644 --- a/src/components/common/VnDmsList.vue +++ b/src/components/common/VnDmsList.vue @@ -405,7 +405,7 @@ defineExpose({ fab color="primary" icon="add" - v-shortcut="'+'"'+'" + v-shortcut @click="showFormDialog()" class="fill-icon" > -- 2.40.1