From 3acf73161fe224a3dcdb985547966dc7fd9f78b6 Mon Sep 17 00:00:00 2001 From: Shannon Sands Date: Tue, 9 Jun 2026 12:25:43 +1000 Subject: [PATCH] Move folder creation into dialog --- web/src/pages/FilesPage.tsx | 82 +++++++++++++++++++++++++++++++------ 1 file changed, 69 insertions(+), 13 deletions(-) diff --git a/web/src/pages/FilesPage.tsx b/web/src/pages/FilesPage.tsx index 702666b8f13..ebc6b16a9d9 100644 --- a/web/src/pages/FilesPage.tsx +++ b/web/src/pages/FilesPage.tsx @@ -19,6 +19,14 @@ import { import { Badge } from "@nous-research/ui/ui/components/badge"; import { Button } from "@nous-research/ui/ui/components/button"; import { Card, CardContent } from "@nous-research/ui/ui/components/card"; +import { + Dialog, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle, +} from "@nous-research/ui/ui/components/dialog"; import { Input } from "@nous-research/ui/ui/components/input"; import { Spinner } from "@nous-research/ui/ui/components/spinner"; import { Toast } from "@nous-research/ui/ui/components/toast"; @@ -91,6 +99,7 @@ export default function FilesPage() { const [uploading, setUploading] = useState(false); const [draggingFiles, setDraggingFiles] = useState(false); const [creating, setCreating] = useState(false); + const [createDialogOpen, setCreateDialogOpen] = useState(false); const [deleting, setDeleting] = useState(false); const [folderName, setFolderName] = useState(""); const [pendingDelete, setPendingDelete] = useState(null); @@ -169,6 +178,10 @@ export default function FilesPage() { const createDirectory = async () => { const name = folderName.trim(); + if (!activePath) { + showToast("Directory unavailable", "error"); + return; + } if (!name) { showToast("Folder name required", "error"); return; @@ -177,6 +190,7 @@ export default function FilesPage() { try { await api.createDirectory(joinPath(activePath, name)); setFolderName(""); + setCreateDialogOpen(false); showToast("Folder created", "success"); await load(); } catch (e) { @@ -300,7 +314,7 @@ export default function FilesPage() { - setFolderName(event.target.value)} - onKeyDown={(event) => { - if (event.key === "Enter") void createDirectory(); - }} - placeholder="New folder" - className="h-9 w-44" - /> @@ -465,6 +470,57 @@ export default function FilesPage() { + { + if (creating) return; + setCreateDialogOpen(open); + if (!open) setFolderName(""); + }} + > + + + Create folder + + Target: {activePath || "Loading"} + + +
+ setFolderName(event.target.value)} + onKeyDown={(event) => { + if (event.key === "Enter") void createDirectory(); + }} + placeholder="Folder name" + disabled={creating} + /> +
+ + + + +
+
+