diff --git a/svelte/src/filesystem/filemanager/FilePicker.svelte b/svelte/src/filesystem/filemanager/FilePicker.svelte index 6e44e5a..a75695e 100644 --- a/svelte/src/filesystem/filemanager/FilePicker.svelte +++ b/svelte/src/filesystem/filemanager/FilePicker.svelte @@ -16,10 +16,13 @@ let show_hidden = $state(false) let { callback, - select_multiple = false + select_multiple = false, + directories = false, }: { callback: (files: FSNode[]) => void select_multiple?: boolean + // Picks the directory which is open, instead of files in it + directories?: boolean } = $props(); export const open = (path: string) => { @@ -36,13 +39,13 @@ const file_event: FileActionHandler = (action: FileAction, index: number, orig: orig.preventDefault() if (nav.children[index].type === "dir") { nav.navigate(nav.children[index].path, true) - } else { + } else if (!directories) { select_node(index, orig) } break case FileAction.Context: // If this is a touch event we will select the item - if (navigator.maxTouchPoints && navigator.maxTouchPoints > 0) { + if (!directories && navigator.maxTouchPoints && navigator.maxTouchPoints > 0) { orig.preventDefault() select_node(index, orig) } @@ -70,7 +73,9 @@ const select_node = (index: number, e: Event) => { } let done = () => { - if (nav.selection.size > 0) { + if (directories) { + callback([nav.base]) + } else if (nav.selection.size > 0) { callback([...nav.selection.values()]) } modal.hide() @@ -101,7 +106,11 @@ onMount(() => {