From 14ed329214d9060412a1cdb400d8dd75b424d1f7 Mon Sep 17 00:00:00 2001 From: Mykyta Date: Tue, 18 Aug 2026 23:07:52 +0200 Subject: [PATCH 1/6] feat: resize and change columns order --- client/bun.lock | 9 + client/package.json | 3 + client/src/components/page/DataTable.vue | 211 ++++++++++++++---- .../ui/resizable/ResizableHandle.vue | 2 +- client/src/composables/openadmin-table.ts | 2 + client/src/lib/data-table.ts | 4 + 6 files changed, 191 insertions(+), 40 deletions(-) diff --git a/client/bun.lock b/client/bun.lock index 01fa29e..178ddd1 100644 --- a/client/bun.lock +++ b/client/bun.lock @@ -14,11 +14,13 @@ "@tanstack/vue-table": "^9.1.2", "@unovis/vue": "^1.6.7", "@vueuse/core": "^14.4.0", + "@vueuse/integrations": "^14.4.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "dompurify": "^3.4.13", "marked": "^18.0.9", "reka-ui": "^2.10.3", + "sortablejs": "^1.15.7", "tailwind-merge": "^3.6.0", "tailwindcss": "^4.3.3", "vue": "^3.5.40", @@ -30,6 +32,7 @@ "@biomejs/biome": "^2.5.7", "@iconify/vue": "^5.0.1", "@types/node": "^26.2.0", + "@types/sortablejs": "^1.15.9", "@vitejs/plugin-vue": "^6.0.8", "@vue/tsconfig": "^0.9.1", "tw-animate-css": "^1.4.0", @@ -324,6 +327,8 @@ "@types/pbf": ["@types/pbf@3.0.5", "", {}, "sha512-j3pOPiEcWZ34R6a6mN07mUkM4o4Lwf6hPNt8eilOeZhTFbxFXmKhvXl9Y28jotFPaI1bpPDJsbCprUoNke6OrA=="], + "@types/sortablejs": ["@types/sortablejs@1.15.9", "", {}, "sha512-7HP+rZGE2p886PKV9c9OJzLBI6BBJu1O7lJGYnPyG3fS4/duUCcngkNCjsLwIMV+WMqANe3tt4irrXHSIe68OQ=="], + "@types/supercluster": ["@types/supercluster@5.0.3", "", { "dependencies": { "@types/geojson": "*" } }, "sha512-XMSqQEr7YDuNtFwSgaHHOjsbi0ZGL62V9Js4CW45RBuRYlNWSW/KDqN+RFFE7HdHcGhJPtN0klKvw06r9Kg7rg=="], "@types/three": ["@types/three@0.135.0", "", {}, "sha512-l7WLhIHjhHMtlpyTSltPPAKLpiMwgMD1hXHj59AVUpYRoZP7Fd9NNOSRSvZBCPLpTHPYojgQvSJCoza9zoL7bg=="], @@ -392,6 +397,8 @@ "@vueuse/core": ["@vueuse/core@14.4.0", "", { "dependencies": { "@types/web-bluetooth": "^0.0.21", "@vueuse/metadata": "14.4.0", "@vueuse/shared": "14.4.0" }, "peerDependencies": { "vue": "^3.5.0" } }, "sha512-X4WHz1HlCzCBoYXesUkifzzWBAcZgXG8Fi5iNPQg/epdzOB3gu8Fawj3hvuwYR1nGcXGnvxwYYcUC/71++svtQ=="], + "@vueuse/integrations": ["@vueuse/integrations@14.4.0", "", { "dependencies": { "@vueuse/core": "14.4.0", "@vueuse/shared": "14.4.0" }, "peerDependencies": { "async-validator": "^4", "axios": "^1", "change-case": "^5", "drauu": "^0.4", "focus-trap": "^7 || ^8", "fuse.js": "^7", "idb-keyval": "^6", "jwt-decode": "^4", "nprogress": "^0.2", "qrcode": "^1.5", "sortablejs": "^1", "universal-cookie": "^7 || ^8", "vue": "^3.5.0" }, "optionalPeers": ["async-validator", "axios", "change-case", "drauu", "focus-trap", "fuse.js", "idb-keyval", "jwt-decode", "nprogress", "qrcode", "sortablejs", "universal-cookie"] }, "sha512-oJz9qTgczvA7L1nXQFRU7h8tQbOCoiceqvMMhT9XYMyOGTqLJ2rEa09PON+nD2t48sZUfeOmg4eaWJXV4sZb/w=="], + "@vueuse/metadata": ["@vueuse/metadata@14.4.0", "", {}, "sha512-swx/255R6JyHZFJhx845iz5CRWDZdCfvkZOpACWc5+c5WHcG24mv8gUT1WIdFQaHt6dq79rvILd9QnCWiyVm9g=="], "@vueuse/shared": ["@vueuse/shared@14.4.0", "", { "peerDependencies": { "vue": "^3.5.0" } }, "sha512-JRgY90Sz8DDtPMsaDflvPMp9xYk69JZAmbuDvAquUVXKr2gEjqtzGNTTthLfckH0BzBqvnu31gb4a8TGLRe79g=="], @@ -692,6 +699,8 @@ "scule": ["scule@1.3.0", "", {}, "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g=="], + "sortablejs": ["sortablejs@1.15.7", "", {}, "sha512-Kk8wLQPlS+yi1ZEf48a4+fzHa4yxjC30M/Sr2AnQu+f/MPwvvX9XjZ6OWejiz8crBsLwSq8GHqaxaET7u6ux0A=="], + "source-map": ["source-map@0.5.7", "", {}, "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ=="], "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], diff --git a/client/package.json b/client/package.json index af66873..b417168 100644 --- a/client/package.json +++ b/client/package.json @@ -25,11 +25,13 @@ "@tanstack/vue-table": "^9.1.2", "@unovis/vue": "^1.6.7", "@vueuse/core": "^14.4.0", + "@vueuse/integrations": "^14.4.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "dompurify": "^3.4.13", "marked": "^18.0.9", "reka-ui": "^2.10.3", + "sortablejs": "^1.15.7", "tailwind-merge": "^3.6.0", "tailwindcss": "^4.3.3", "vue": "^3.5.40", @@ -41,6 +43,7 @@ "@biomejs/biome": "^2.5.7", "@iconify/vue": "^5.0.1", "@types/node": "^26.2.0", + "@types/sortablejs": "^1.15.9", "@vitejs/plugin-vue": "^6.0.8", "@vue/tsconfig": "^0.9.1", "tw-animate-css": "^1.4.0", diff --git a/client/src/components/page/DataTable.vue b/client/src/components/page/DataTable.vue index bc34fda..7c1799d 100644 --- a/client/src/components/page/DataTable.vue +++ b/client/src/components/page/DataTable.vue @@ -5,9 +5,11 @@ SPDX-License-Identifier: AGPL-3.0-or-later -->