diff --git a/app/src/modules/files/components/add-folder/add-folder.vue b/app/src/modules/files/components/add-folder/add-folder.vue index 0db50bf986..4e57b5c7d7 100644 --- a/app/src/modules/files/components/add-folder/add-folder.vue +++ b/app/src/modules/files/components/add-folder/add-folder.vue @@ -50,7 +50,7 @@ export default defineComponent({ try { const newFolder = await api.post(`/folders`, { name: newFolderName.value, - parent_folder: props.parent, + parent_folder: props.parent === 'root' ? null : props.parent, }); await fetchFolders(); diff --git a/app/src/modules/files/components/folder-picker/folder-picker-list-item.vue b/app/src/modules/files/components/folder-picker/folder-picker-list-item.vue index 02c29c4777..687079723f 100644 --- a/app/src/modules/files/components/folder-picker/folder-picker-list-item.vue +++ b/app/src/modules/files/components/folder-picker/folder-picker-list-item.vue @@ -8,13 +8,7 @@ {{ folder.name }} - + @@ -66,10 +59,6 @@ export default defineComponent({ type: Array as PropType, default: () => [], }, - startOpenFolders: { - type: Array as PropType, - default: () => [], - }, }, }); diff --git a/app/src/modules/files/components/folder-picker/folder-picker.vue b/app/src/modules/files/components/folder-picker/folder-picker.vue index 9e68874290..be4c17ea23 100644 --- a/app/src/modules/files/components/folder-picker/folder-picker.vue +++ b/app/src/modules/files/components/folder-picker/folder-picker.vue @@ -2,26 +2,32 @@
- - + + + - - + + +
@@ -83,35 +89,27 @@ export default defineComponent({ } }); - const startOpenFolders = computed(() => { - if (!folders.value) return []; + const shouldBeOpen: string[] = []; + const folder = folders.value.find((folder) => folder.id === props.value); - const openFolders: string[] = []; - const folder = folders.value.find((folder) => folder.id === props.value); + if (folder && folder.parent_folder) parseFolder(folder.parent_folder); - if (folder && folder.parent_folder) parseFolder(folder.parent_folder); + const startOpenFolders = ['root']; - return openFolders; - - function parseFolder(id: string) { - if (!folders.value) return; - openFolders.push(id); - - const folder = folders.value.find((folder) => folder.id === id); - - if (folder && folder.parent_folder) { - parseFolder(folder.parent_folder); - } + for (const folderID of shouldBeOpen) { + if (startOpenFolders.includes(folderID) === false) { + startOpenFolders.push(folderID); } - }); - + } const selectedFolder = computed(() => { return folders.value.find((folder) => folder.id === props.value) || {}; }); + const openFolders = ref(startOpenFolders); + fetchFolders(); - return { loading, folders, tree, selectedFolder, startOpenFolders }; + return { loading, folders, tree, selectedFolder, openFolders }; async function fetchFolders() { if (folders.value.length > 0) return; @@ -132,6 +130,17 @@ export default defineComponent({ loading.value = false; } } + + function parseFolder(id: string) { + if (!folders.value) return; + shouldBeOpen.push(id); + + const folder = folders.value.find((folder) => folder.id === id); + + if (folder && folder.parent_folder) { + parseFolder(folder.parent_folder); + } + } }, }); diff --git a/app/src/modules/files/components/navigation/navigation-folder.vue b/app/src/modules/files/components/navigation/navigation-folder.vue index 89476eda1d..1dbd0318c0 100644 --- a/app/src/modules/files/components/navigation/navigation-folder.vue +++ b/app/src/modules/files/components/navigation/navigation-folder.vue @@ -13,13 +13,13 @@