Files
colanode/apps/desktop/src/renderer/components/files/file-context-menu.tsx

58 lines
1.7 KiB
TypeScript
Raw Normal View History

2024-12-02 00:44:02 +01:00
import { Folder, Trash2 } from 'lucide-react';
2024-10-24 00:10:51 +02:00
import React from 'react';
2024-12-02 00:44:02 +01:00
2024-10-24 00:10:51 +02:00
import { FileDeleteDialog } from '@/renderer/components/files/file-delete-dialog';
import {
ContextMenu,
ContextMenuContent,
ContextMenuItem,
ContextMenuShortcut,
ContextMenuTrigger,
} from '@/renderer/components/ui/context-menu';
2025-01-27 12:32:15 +01:00
import { useLayout } from '@/renderer/contexts/layout';
2024-10-24 00:10:51 +02:00
interface FileContextMenuProps {
id: string;
children: React.ReactNode;
}
export const FileContextMenu = ({ id, children }: FileContextMenuProps) => {
2025-01-27 12:32:15 +01:00
const layout = useLayout();
2024-10-24 00:10:51 +02:00
const [openDelete, setOpenDelete] = React.useState(false);
return (
<React.Fragment>
<ContextMenu>
<ContextMenuTrigger asChild>{children}</ContextMenuTrigger>
<ContextMenuContent className="w-64">
<ContextMenuItem
onSelect={() => {
2025-01-27 12:32:15 +01:00
layout.previewLeft(id, true);
2024-10-24 00:10:51 +02:00
}}
className="pl-2"
>
<ContextMenuShortcut className="ml-0">
2024-10-27 09:14:09 +01:00
<Folder className="mr-2 size-4" />
2024-10-24 00:10:51 +02:00
</ContextMenuShortcut>
Open
</ContextMenuItem>
<ContextMenuItem
onClick={() => setOpenDelete(true)}
className="flex items-center gap-x-2 pl-2 text-red-500"
>
<ContextMenuShortcut className="ml-0">
2024-10-27 09:14:09 +01:00
<Trash2 className="size-4 text-red-500" />
2024-10-24 00:10:51 +02:00
</ContextMenuShortcut>
<span className="text-red-500">Delete</span>
</ContextMenuItem>
</ContextMenuContent>
</ContextMenu>
<FileDeleteDialog
2024-12-25 00:37:50 +01:00
fileId={id}
2024-10-24 00:10:51 +02:00
open={openDelete}
onOpenChange={setOpenDelete}
/>
</React.Fragment>
);
};