diff --git a/dashboard/src/components/FolderView.vue b/dashboard/src/components/FolderView.vue index 171c5e895..b93a4f309 100644 --- a/dashboard/src/components/FolderView.vue +++ b/dashboard/src/components/FolderView.vue @@ -163,6 +163,28 @@ function onTreeNavigate(event) { router.push(`/home/${resourceType.value}/${resourceId.value}${sanitize(event.path)}`); } +async function onTreeDrop(targetPath, event) { + // check if this is an internal pankow drag (files from DirectoryView) + if (event.dataTransfer.getData('application/x-pankow') === 'selected') { + const files = selectedItems.value; + if (!files || !files.length) return; + + window.addEventListener('beforeunload', beforeUnloadListener, { capture: true }); + pasteInProgressDialog.value.open(); + + try { + await directoryModel.paste(targetPath, 'cut', files); + } catch (e) { + window.pankow.notify({ type: 'danger', text: e, persistent: true }); + } + + await loadCwd(); + + window.removeEventListener('beforeunload', beforeUnloadListener, { capture: true }); + pasteInProgressDialog.value.close(); + } +} + function treeListFiles(path) { if (!directoryModel) return []; return directoryModel.listFiles(path); @@ -544,6 +566,8 @@ onMounted(async () => { :list-files="treeListFiles" :active-path="cwd" :fallback-icon="fallbackIcon" + root-label="/app/data" + :drop-handler="onTreeDrop" @navigate="onTreeNavigate" />