diff --git a/frontend/src/shell/DeleteConfirmDialog.tsx b/frontend/src/shell/DeleteConfirmDialog.tsx index fcc44c4e..f1c0622b 100644 --- a/frontend/src/shell/DeleteConfirmDialog.tsx +++ b/frontend/src/shell/DeleteConfirmDialog.tsx @@ -12,9 +12,9 @@ export function DeleteConfirmDialog({ open, label, onOpenChange, onConfirm }: Pr return ( - Elimina definitivamente + Delete permanently - "{label}" verrà eliminata definitivamente, inclusi tutti i suoi documenti. L'operazione non è reversibile. + "{label}" will be permanently deleted, including all of its documents. This action cannot be undone. diff --git a/frontend/src/shell/RenameDialog.tsx b/frontend/src/shell/RenameDialog.tsx index 10eec96d..bb0b48f1 100644 --- a/frontend/src/shell/RenameDialog.tsx +++ b/frontend/src/shell/RenameDialog.tsx @@ -15,6 +15,7 @@ export function RenameDialog({ open, initial, onOpenChange, onSubmit }: Props) { function submit(e: React.FormEvent) { e.preventDefault(); + if (!name.trim()) return; onSubmit(name.trim()); onOpenChange(false); } @@ -22,7 +23,7 @@ export function RenameDialog({ open, initial, onOpenChange, onSubmit }: Props) { return ( - Rinomina sessione + Rename session
diff --git a/frontend/src/shell/SessionActions.test.tsx b/frontend/src/shell/SessionActions.test.tsx index ec7bdba0..a0daa851 100644 --- a/frontend/src/shell/SessionActions.test.tsx +++ b/frontend/src/shell/SessionActions.test.tsx @@ -7,7 +7,7 @@ import { DeleteConfirmDialog } from "./DeleteConfirmDialog"; test("RenameDialog submits the edited name", async () => { const onSubmit = vi.fn(); render(); - const input = screen.getByLabelText(/name/i); + const input = screen.getByDisplayValue("Vecchio"); await userEvent.clear(input); await userEvent.type(input, "Nuovo"); await userEvent.click(screen.getByRole("button", { name: /save/i })); @@ -21,3 +21,19 @@ test("DeleteConfirmDialog confirms only on the destructive button", async () => await userEvent.click(screen.getByRole("button", { name: /delete/i })); expect(onConfirm).toHaveBeenCalled(); }); + +test("RenameDialog does not submit an empty name", async () => { + const onSubmit = vi.fn(); + render(); + const input = screen.getByDisplayValue("Old"); + await userEvent.clear(input); + await userEvent.click(screen.getByRole("button", { name: /save/i })); + expect(onSubmit).not.toHaveBeenCalled(); +}); + +test("DeleteConfirmDialog does not confirm when Cancel is clicked", async () => { + const onConfirm = vi.fn(); + render(); + await userEvent.click(screen.getByRole("button", { name: /cancel/i })); + expect(onConfirm).not.toHaveBeenCalled(); +}); diff --git a/frontend/src/shell/SessionMenu.tsx b/frontend/src/shell/SessionMenu.tsx index b1b90659..d44c2937 100644 --- a/frontend/src/shell/SessionMenu.tsx +++ b/frontend/src/shell/SessionMenu.tsx @@ -29,10 +29,10 @@ export function SessionMenu({ session, groups, onView, onRename, onMove, onNewGr - Vista divisa - Rinomina + Split view + Rename - Sposta nel gruppo › + Move to group › @@ -40,18 +40,18 @@ export function SessionMenu({ session, groups, onView, onRename, onMove, onNewGr onMove(g)}>{g} ))} {session.group && ( - onMove("")}>Senza gruppo + onMove("")}>No group )} - Nuovo gruppo… + New group… - {session.archived ? "Ripristina" : "Archivia"} + {session.archived ? "Restore" : "Archive"} - Elimina + Delete