import type { TRecipientLite } from '@documenso/lib/types/recipient'; import { trpc as trpcReact } from '@documenso/trpc/react'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuTrigger, } from '@documenso/ui/primitives/dropdown-menu'; import { Trans } from '@lingui/react/macro'; import { DocumentStatus, EnvelopeType, type TemplateDirectLink } from '@prisma/client'; import { Copy, Download, Edit, FolderIcon, MoreHorizontal, Pencil, Share2Icon, Trash2, Upload } from 'lucide-react'; import { useState } from 'react'; import { Link } from 'react-router'; import { EnvelopeDeleteDialog } from '../dialogs/envelope-delete-dialog'; import { EnvelopeDownloadDialog } from '../dialogs/envelope-download-dialog'; import { EnvelopeDuplicateDialog } from '../dialogs/envelope-duplicate-dialog'; import { EnvelopeRenameDialog } from '../dialogs/envelope-rename-dialog'; import { TemplateBulkSendDialog } from '../dialogs/template-bulk-send-dialog'; import { TemplateDirectLinkDialog } from '../dialogs/template-direct-link-dialog'; import { TemplateMoveToFolderDialog } from '../dialogs/template-move-to-folder-dialog'; export type TemplatesTableActionDropdownProps = { row: { id: number; userId: number; teamId: number; title: string; folderId?: string | null; envelopeId: string; directLink?: Pick | null; recipients: TRecipientLite[]; }; templateRootPath: string; teamId: number; onDelete?: () => Promise | void; }; export const TemplatesTableActionDropdown = ({ row, templateRootPath, teamId, onDelete, }: TemplatesTableActionDropdownProps) => { const trpcUtils = trpcReact.useUtils(); const [isRenameDialogOpen, setRenameDialogOpen] = useState(false); const [isMoveToFolderDialogOpen, setMoveToFolderDialogOpen] = useState(false); const isTeamTemplate = row.teamId === teamId; const canMutate = isTeamTemplate; const formatPath = `${templateRootPath}/${row.envelopeId}/edit`; return ( Action e.preventDefault()}>
Download
} /> {canMutate && ( <> Edit setRenameDialogOpen(true)}> Rename e.preventDefault()}>
Duplicate
} /> Direct link } /> setMoveToFolderDialogOpen(true)}> Move to Folder Bulk Send via CSV } /> e.preventDefault()}>
Delete
} /> )}
{ await trpcUtils.template.findTemplates.invalidate(); }} />
); };