'use client'; import { useTransition } from 'react'; import { Loader } from 'lucide-react'; import { useSession } from 'next-auth/react'; import { useUpdateSearchParams } from '@documenso/lib/client-only/hooks/use-update-search-params'; import type { FindResultSet } from '@documenso/lib/types/find-result-set'; import type { Document, Recipient, Team, User } from '@documenso/prisma/client'; import { ExtendedDocumentStatus } from '@documenso/prisma/types/extended-document-status'; import { DataTable } from '@documenso/ui/primitives/data-table'; import { DataTablePagination } from '@documenso/ui/primitives/data-table-pagination'; import { StackAvatarsWithTooltip } from '~/components/(dashboard)/avatar/stack-avatars-with-tooltip'; import { DocumentStatus } from '~/components/formatter/document-status'; import { LocaleDate } from '~/components/formatter/locale-date'; import { DataTableActionButton } from './data-table-action-button'; import { DataTableActionDropdown } from './data-table-action-dropdown'; import { DataTableTitle } from './data-table-title'; export type DocumentsDataTableProps = { results: FindResultSet< Document & { Recipient: Recipient[]; User: Pick; team: Pick | null; } >; showSenderColumn?: boolean; team?: Pick; }; export const DocumentsDataTable = ({ results, showSenderColumn, team, }: DocumentsDataTableProps) => { const { data: session } = useSession(); const [isPending, startTransition] = useTransition(); const updateSearchParams = useUpdateSearchParams(); const onPaginationChange = (page: number, perPage: number) => { startTransition(() => { updateSearchParams({ page, perPage, }); }); }; if (!session) { return null; } return (
, }, { header: 'Title', cell: ({ row }) => , }, { id: 'sender', header: 'Sender', cell: ({ row }) => row.original.User.name ?? row.original.User.email, }, { header: 'Recipient', accessorKey: 'recipient', cell: ({ row }) => { return ; }, }, { header: 'Status', accessorKey: 'status', cell: ({ row }) => , }, { header: 'Actions', cell: ({ row }) => (!row.original.deletedAt || row.original.status === ExtendedDocumentStatus.COMPLETED) && (
), }, ]} data={results.data} perPage={results.perPage} currentPage={results.currentPage} totalPages={results.totalPages} onPaginationChange={onPaginationChange} columnVisibility={{ sender: Boolean(showSenderColumn), }} > {(table) => }
{isPending && (
)}
); };