diff --git a/artifacts/tx-os/src/components/notes/folders-rail.tsx b/artifacts/tx-os/src/components/notes/folders-rail.tsx index 97d41c5d..596d806b 100644 --- a/artifacts/tx-os/src/components/notes/folders-rail.tsx +++ b/artifacts/tx-os/src/components/notes/folders-rail.tsx @@ -6,6 +6,7 @@ import { FolderPlus, Inbox as InboxIcon, Layers, + MoreVertical, Pencil, Trash2, Check, @@ -13,6 +14,12 @@ import { } from "lucide-react"; import { Input } from "@/components/ui/input"; import { Button } from "@/components/ui/button"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuTrigger, +} from "@/components/ui/dropdown-menu"; import { type NoteFolder, useCreateFolder, @@ -334,51 +341,62 @@ export function FoldersRail({ {f.noteCount} -
- - +
+ + + + + + { + setEditingId(f.id); + setEditingName(f.name); + }} + data-testid={`folder-rename-${f.id}`} + > + + {t("notes.folders.rename", "Rename folder")} + + { + if ( + confirm( + t( + "notes.folders.deleteConfirm", + "Delete this folder? Notes inside will move to Unfiled.", + ), + ) + ) { + del.mutate(f.id, { + onSuccess: () => { + if ( + selected.kind === "folder" && + selected.id === f.id + ) { + onSelect({ kind: "all" }); + } + }, + }); + } + }} + className="text-red-600 focus:text-red-600" + data-testid={`folder-delete-${f.id}`} + > + + {t("notes.folders.delete", "Delete folder")} + + +
), diff --git a/artifacts/tx-os/tests/notes-folders.spec.mjs b/artifacts/tx-os/tests/notes-folders.spec.mjs index 77e7e304..b8af2c56 100644 --- a/artifacts/tx-os/tests/notes-folders.spec.mjs +++ b/artifacts/tx-os/tests/notes-folders.spec.mjs @@ -253,7 +253,7 @@ test("create folder, drag note in, filter, move between folders, rename, delete" ).toHaveText(/^0$/); // ---- Rename Projects -> "Work" ---- - await page.getByTestId(`folder-select-${projects.id}`).hover(); + await page.getByTestId(`folder-menu-${projects.id}`).click(); await page.getByTestId(`folder-rename-${projects.id}`).click(); const renameInput = page.getByTestId(`folder-rename-input-${projects.id}`); await renameInput.fill("Work"); @@ -293,7 +293,7 @@ test("create folder, drag note in, filter, move between folders, rename, delete" r.status() >= 200 && r.status() < 300, ); - await page.getByTestId(`folder-select-${personal.id}`).hover(); + await page.getByTestId(`folder-menu-${personal.id}`).click(); await page.getByTestId(`folder-delete-${personal.id}`).click(); await deletePromise; await expect(page.getByTestId(`folder-select-${personal.id}`)).toHaveCount(0);