From d422c147b01d10d6acc96da855addb54e373cc37 Mon Sep 17 00:00:00 2001 From: Wim Brand Date: Mon, 3 Nov 2025 19:15:57 +0100 Subject: [PATCH] Make toolbar and main menu collapsible --- svelte/src/filesystem/FileStats.svelte | 108 +++++++++++------- svelte/src/filesystem/Toolbar.svelte | 10 +- .../filesystem/filemanager/FileManager.svelte | 1 + .../filesystem/filemanager/ListView.svelte | 8 -- .../upload_widget/FSUploadWidget.svelte | 8 +- svelte/src/wrap/Bookmarks.svelte | 24 ++-- svelte/src/wrap/MainMenu.svelte | 51 +++++---- 7 files changed, 127 insertions(+), 83 deletions(-) diff --git a/svelte/src/filesystem/FileStats.svelte b/svelte/src/filesystem/FileStats.svelte index ee65953..5c206e7 100644 --- a/svelte/src/filesystem/FileStats.svelte +++ b/svelte/src/filesystem/FileStats.svelte @@ -4,8 +4,12 @@ import { formatDataVolume, formatThousands } from "util/Formatting" import { fs_path_url } from "lib/FilesystemAPI.svelte"; import type { FSNavigator } from "./FSNavigator"; -let { nav }: { - nav: FSNavigator; +let { + nav, + expanded = $bindable(false) +}: { + nav: FSNavigator + expanded: boolean } = $props(); let loading = $state(true) @@ -92,51 +96,77 @@ const close_socket = () => { socket = null } } + +const toggle_expand = (e: MouseEvent) => { + e.stopPropagation() + e.preventDefault() + expanded = !expanded +} +const toggle_expand_keyboard = (e: KeyboardEvent) => { + if (e.key === " " || e.key === "Enter") { + e.stopPropagation() + e.preventDefault() + expanded = !expanded + } +} -{#if $nav.base.type === "file"} - {#if error_msg !== ""} - {error_msg} - {:else} -
-
Downloads
-
- {loading ? "Loading..." : formatThousands(downloads)} -
+ -
-
Egress
-
- {loading ? "Loading..." : formatDataVolume(transfer_used, 3)} + {#if $nav.base.type === "file"} + {#if error_msg !== ""} + {error_msg} + {:else} +
+
Downloads
+
+ {loading ? "Loading..." : formatThousands(downloads)} +
+
+
Egress
+
+ {loading ? "Loading..." : formatDataVolume(transfer_used, 3)} +
+
+ {/if} + +
+
Size
+
{formatDataVolume($nav.base.file_size, 3)}
+
+ + {:else if $nav.base.type === "dir" || $nav.base.type === "bucket"} + +
+
Directories
+
{formatThousands(total_directories)}
+
+ +
+
Files
+
{formatThousands(total_files)}
+
+ +
+
Total size
+
{formatDataVolume(total_file_size, 3)}
{/if} - -
-
Size
-
{formatDataVolume($nav.base.file_size, 3)}
-
- -{:else if $nav.base.type === "dir" || $nav.base.type === "bucket"} - -
-
Directories
-
{formatThousands(total_directories)}
-
- -
-
Files
-
{formatThousands(total_files)}
-
- -
-
Total size
-
{formatDataVolume(total_file_size, 3)}
-
-{/if} +
diff --git a/svelte/src/wrap/MainMenu.svelte b/svelte/src/wrap/MainMenu.svelte index 1c3d819..3981c82 100644 --- a/svelte/src/wrap/MainMenu.svelte +++ b/svelte/src/wrap/MainMenu.svelte @@ -10,9 +10,17 @@ import { fs_get_node } from "lib/FilesystemAPI.svelte"; import { css_from_path } from "filesystem/edit_window/Branding"; import { loading_run, loading_store } from "lib/Loading"; import Spinner from "util/Spinner.svelte"; -import { get_user, logout_user } from "lib/PixeldrainAPI"; +import { get_user } from "lib/PixeldrainAPI"; + +let menu_collapsed = false + +const toggle_menu = (e: MouseEvent) => { + menu_collapsed = !menu_collapsed +} onMount(async () => { + menu_collapsed = document.documentElement.clientWidth < 1000 + await loading_run(async () => { const user = await get_user() if (user.username === undefined || user.username === "") { @@ -27,21 +35,26 @@ onMount(async () => { @@ -174,10 +183,8 @@ onMount(async () => { margin: 5px; } -@media(max-width: 1000px) { - .hide_small { - display: none; - } +.hide { + display: none; } .spinner {