feat(editor): Combine 'Move to Folder' and 'Change owner' modals (#15756)

This new modal also allows transferring entire folders to other projects and users.
This commit is contained in:
Jaakko Husso
2025-05-28 23:41:07 +03:00
committed by GitHub
parent ba70cab9d5
commit e860dd6d2e
27 changed files with 1989 additions and 292 deletions

View File

@@ -8,6 +8,7 @@ import { useFoldersStore } from '@/stores/folders.store';
import { useRoute } from 'vue-router';
import { useProjectsStore } from '@/stores/projects.store';
import { ProjectTypes } from '@/types/projects.types';
import type { ChangeLocationSearchResult } from '@/Interface';
const props = defineProps<{
modalName: string;
@@ -32,7 +33,7 @@ const projectsStore = useProjectsStore();
const loading = ref(false);
const operation = ref('');
const deleteConfirmText = ref('');
const selectedFolder = ref<{ id: string; name: string; type: 'folder' | 'project' } | null>(null);
const selectedFolder = ref<ChangeLocationSearchResult | null>(null);
const folderToDelete = computed(() => {
if (!props.activeId) return null;
@@ -106,7 +107,7 @@ async function onSubmit() {
loading.value = true;
const newParentId =
selectedFolder.value?.type === 'project' ? '0' : (selectedFolder.value?.id ?? undefined);
selectedFolder.value?.resource === 'project' ? '0' : (selectedFolder.value?.id ?? undefined);
await foldersStore.deleteFolder(route.params.projectId as string, props.activeId, newParentId);
@@ -134,7 +135,7 @@ async function onSubmit() {
}
}
const onFolderSelected = (payload: { id: string; name: string; type: 'folder' | 'project' }) => {
const onFolderSelected = (payload: ChangeLocationSearchResult) => {
selectedFolder.value = payload;
};
</script>
@@ -180,8 +181,10 @@ const onFolderSelected = (payload: { id: string; name: string; type: 'folder' |
}}</n8n-text>
<MoveToFolderDropdown
v-if="projectsStore.currentProject"
:current-folder-id="props.activeId"
:selected-location="selectedFolder"
:selected-project-id="projectsStore.currentProject?.id"
:current-project-id="projectsStore.currentProject?.id"
:current-folder-id="props.activeId"
:parent-folder-id="folderToDelete?.parentFolder"
@location:selected="onFolderSelected"
/>