,
- 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 @@
-
-
-
-
-
- {{ $t('file_library') }}
-
+
+
+
+
+
+
+ {{ $t('file_library') }}
+
-
-
+
+
+
@@ -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 @@
diff --git a/app/src/modules/files/routes/browse/browse.vue b/app/src/modules/files/routes/browse/browse.vue
index 45a3f14672..df62ae00cb 100644
--- a/app/src/modules/files/routes/browse/browse.vue
+++ b/app/src/modules/files/routes/browse/browse.vue
@@ -166,12 +166,21 @@ export default defineComponent({
];
for (const [field, value] of Object.entries(props.queryFilters)) {
- urlFilters.push({
- locked: true,
- operator: 'eq',
- field,
- value,
- });
+ if (value === 'root') {
+ urlFilters.push({
+ locked: true,
+ operator: 'null',
+ field,
+ value: true,
+ });
+ } else {
+ urlFilters.push({
+ locked: true,
+ operator: 'eq',
+ field,
+ value,
+ });
+ }
}
return [...urlFilters, ...filters.value];