From b9aace0c4e948ca536ff14874586a030b7a130f1 Mon Sep 17 00:00:00 2001 From: mohamad Date: Thu, 5 Jun 2025 01:04:34 +0200 Subject: [PATCH] Update dependencies and refactor ListDetailPage for drag-and-drop functionality - Updated `vue-i18n` and related dependencies to version 9.14.4 for improved localization support. - Added `vuedraggable` to enable drag-and-drop functionality for list items in `ListDetailPage.vue`. - Refactored the item list structure to accommodate drag handles and improved item actions. - Enhanced styling for drag-and-drop interactions and item actions for better user experience. --- fe/package-lock.json | 133 +++++--------- fe/package.json | 3 +- fe/src/pages/ListDetailPage.vue | 317 +++++++++++++++++++++++--------- 3 files changed, 273 insertions(+), 180 deletions(-) diff --git a/fe/package-lock.json b/fe/package-lock.json index 23a1c65..91662ef 100644 --- a/fe/package-lock.json +++ b/fe/package-lock.json @@ -18,8 +18,9 @@ "motion": "^12.15.0", "pinia": "^3.0.2", "vue": "^3.5.13", - "vue-i18n": "^12.0.0-alpha.2", + "vue-i18n": "^9.9.1", "vue-router": "^4.5.1", + "vuedraggable": "^4.1.0", "workbox-background-sync": "^7.3.0" }, "devDependencies": { @@ -2585,11 +2586,27 @@ } } }, - "node_modules/@intlify/bundle-utils/node_modules/@intlify/message-compiler": { + "node_modules/@intlify/core-base": { + "version": "9.14.4", + "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.14.4.tgz", + "integrity": "sha512-vtZCt7NqWhKEtHa3SD/322DlgP5uR9MqWxnE0y8Q0tjDs9H5Lxhss+b5wv8rmuXRoHKLESNgw9d+EN9ybBbj9g==", + "license": "MIT", + "dependencies": { + "@intlify/message-compiler": "9.14.4", + "@intlify/shared": "9.14.4" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + } + }, + "node_modules/@intlify/message-compiler": { "version": "9.14.4", "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.14.4.tgz", "integrity": "sha512-vcyCLiVRN628U38c3PbahrhbbXrckrM9zpy0KZVlDk2Z0OnGwv8uQNNXP3twwGtfLsCf4gu3ci6FMIZnPaqZsw==", - "dev": true, + "license": "MIT", "dependencies": { "@intlify/shared": "9.14.4", "source-map-js": "^1.0.2" @@ -2601,54 +2618,10 @@ "url": "https://github.com/sponsors/kazupon" } }, - "node_modules/@intlify/bundle-utils/node_modules/@intlify/shared": { + "node_modules/@intlify/shared": { "version": "9.14.4", "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.14.4.tgz", "integrity": "sha512-P9zv6i1WvMc9qDBWvIgKkymjY2ptIiQ065PjDv7z7fDqH3J/HBRBN5IoiR46r/ujRcU7hCuSIZWvCAFCyuOYZA==", - "dev": true, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/kazupon" - } - }, - "node_modules/@intlify/core-base": { - "version": "12.0.0-alpha.2", - "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-12.0.0-alpha.2.tgz", - "integrity": "sha512-sPWvQ1Z4Wyw9Kp8xqjAk2sMOeZ4pO7p/NL3Eol8l9a7iPyMTuHyJ2DZVbOBG6zDnCupvLAqnRMAT1LAgvx0QRQ==", - "license": "MIT", - "dependencies": { - "@intlify/message-compiler": "12.0.0-alpha.2", - "@intlify/shared": "12.0.0-alpha.2" - }, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/kazupon" - } - }, - "node_modules/@intlify/message-compiler": { - "version": "12.0.0-alpha.2", - "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-12.0.0-alpha.2.tgz", - "integrity": "sha512-PD9C+oQbb7BF52hec0+vLnScaFkvnfX+R7zSbODYuRo/E2niAtGmHd0wPvEMsDhf9Z9b8f/qyDsVeZnD/ya9Ug==", - "license": "MIT", - "dependencies": { - "@intlify/shared": "12.0.0-alpha.2", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/kazupon" - } - }, - "node_modules/@intlify/shared": { - "version": "12.0.0-alpha.2", - "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-12.0.0-alpha.2.tgz", - "integrity": "sha512-P2DULVX9nz3y8zKNqLw9Es1aAgQ1JGC+kgpx5q7yLmrnAKkPR5MybQWoEhxanefNJgUY5ehsgo+GKif59SrncA==", "license": "MIT", "engines": { "node": ">= 16" @@ -2696,18 +2669,6 @@ } } }, - "node_modules/@intlify/unplugin-vue-i18n/node_modules/@intlify/shared": { - "version": "9.14.4", - "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.14.4.tgz", - "integrity": "sha512-P9zv6i1WvMc9qDBWvIgKkymjY2ptIiQ065PjDv7z7fDqH3J/HBRBN5IoiR46r/ujRcU7hCuSIZWvCAFCyuOYZA==", - "dev": true, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/kazupon" - } - }, "node_modules/@intlify/unplugin-vue-i18n/node_modules/pathe": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", @@ -2715,29 +2676,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@intlify/vue-i18n-core": { - "version": "12.0.0-alpha.2", - "resolved": "https://registry.npmjs.org/@intlify/vue-i18n-core/-/vue-i18n-core-12.0.0-alpha.2.tgz", - "integrity": "sha512-y1NPEcPbD8xqWGiaEREkA9WxxWbxmd8IurN176w39MenZKEf5P20rYyk0w4r718+w/9jjm0m5zR1ed6uMaZT2Q==", - "license": "MIT", - "dependencies": { - "@intlify/core-base": "12.0.0-alpha.2", - "@intlify/shared": "12.0.0-alpha.2", - "@vue/devtools-api": "^6.5.0" - }, - "engines": { - "node": ">= 16" - }, - "peerDependencies": { - "vue": "^3.0.0" - } - }, - "node_modules/@intlify/vue-i18n-core/node_modules/@vue/devtools-api": { - "version": "6.6.4", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", - "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", - "license": "MIT" - }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -11211,6 +11149,12 @@ "dev": true, "license": "MIT" }, + "node_modules/sortablejs": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.14.0.tgz", + "integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==", + "license": "MIT" + }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -12820,14 +12764,13 @@ } }, "node_modules/vue-i18n": { - "version": "12.0.0-alpha.2", - "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-12.0.0-alpha.2.tgz", - "integrity": "sha512-ZSaZrDV/PhD4hLVybo84bkaNRnkGDF7GpI0Fcmn9Yj+2Kq5C3nE7I5iRbo+DiHyRGrwZ/IV1VP3naFAhcNJGsg==", + "version": "9.14.4", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.14.4.tgz", + "integrity": "sha512-B934C8yUyWLT0EMud3DySrwSUJI7ZNiWYsEEz2gknTthqKiG4dzWE/WSa8AzCuSQzwBEv4HtG1jZDhgzPfWSKQ==", "license": "MIT", "dependencies": { - "@intlify/core-base": "12.0.0-alpha.2", - "@intlify/shared": "12.0.0-alpha.2", - "@intlify/vue-i18n-core": "12.0.0-alpha.2", + "@intlify/core-base": "9.14.4", + "@intlify/shared": "9.14.4", "@vue/devtools-api": "^6.5.0" }, "engines": { @@ -12894,6 +12837,18 @@ "typescript": ">=5.0.0" } }, + "node_modules/vuedraggable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-4.1.0.tgz", + "integrity": "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==", + "license": "MIT", + "dependencies": { + "sortablejs": "1.14.0" + }, + "peerDependencies": { + "vue": "^3.0.1" + } + }, "node_modules/w3c-xmlserializer": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", diff --git a/fe/package.json b/fe/package.json index 7b222f3..67af8ef 100644 --- a/fe/package.json +++ b/fe/package.json @@ -31,6 +31,7 @@ "vue": "^3.5.13", "vue-i18n": "^9.9.1", "vue-router": "^4.5.1", + "vuedraggable": "^4.1.0", "workbox-background-sync": "^7.3.0" }, "devDependencies": { @@ -74,4 +75,4 @@ "workbox-routing": "^7.3.0", "workbox-strategies": "^7.3.0" } -} \ No newline at end of file +} diff --git a/fe/src/pages/ListDetailPage.vue b/fe/src/pages/ListDetailPage.vue index d59997c..a0d0392 100644 --- a/fe/src/pages/ListDetailPage.vue +++ b/fe/src/pages/ListDetailPage.vue @@ -47,76 +47,123 @@ -