"use client"; import { useSortable } from "@dnd-kit/sortable"; import { CSS } from "@dnd-kit/utilities"; import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { MoreVertical, Pencil, Trash2, Folder, FolderOpen, ChevronRight, ChevronDown, GripVertical, } from "lucide-react"; import { cn } from "@/lib/utils"; import type { Folder as FolderType, Account } from "@/lib/types"; interface DraggableFolderItemProps { folder: FolderType; accounts?: Account[]; allFolders?: FolderType[]; level: number; isExpanded: boolean; onToggleExpand: () => void; onEdit: (folder: FolderType) => void; onDelete: (folderId: string) => void; onEditAccount?: (account: Account) => void; formatCurrency: (amount: number) => string; folderAccounts: Account[]; childFolders: FolderType[]; folderTotal: number; } export function DraggableFolderItem({ folder, level, isExpanded, onToggleExpand, onEdit, onDelete, formatCurrency, folderAccounts, childFolders, folderTotal, }: DraggableFolderItemProps) { const { attributes, listeners, setNodeRef, transform, transition, isDragging, } = useSortable({ id: `folder-${folder.id}`, data: { type: "folder", folder, }, }); const style = { transform: CSS.Transform.toString(transform), transition, opacity: isDragging ? 0.5 : 1, }; return (
0 && "ml-6", isDragging && "bg-muted/80", )} >
{isExpanded ? ( ) : ( )}
{folder.name} {folderAccounts.length > 0 && ( = 0 ? "text-emerald-600" : "text-red-600", )} > {formatCurrency(folderTotal)} )} onEdit(folder)}> Modifier {folder.id !== "folder-root" && ( onDelete(folder.id)} className="text-red-600" > Supprimer )}
); }