-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathInvitesTable.tsx
More file actions
63 lines (56 loc) · 1.79 KB
/
Copy pathInvitesTable.tsx
File metadata and controls
63 lines (56 loc) · 1.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
"use client";
import { ColumnDef } from "@tanstack/react-table";
import { useMemo } from "react";
import { formatDisplayLongDate } from "@/utils/date";
import ErrorMessage from "../../components/ErrorMessage";
import Table from "../../components/Table";
import useColumns from "../../hooks/useColumns";
import { PendingInvite } from "../../types/application";
import { ModuleTables } from "../../types/modules";
import { renderRegistered } from "../../utils/cells";
import { filterColumns } from "../../utils/table";
export type InvitesTableColumns = "name" | "email" | "inviteSentAt" | "status";
export type InvitesTableProps = ModuleTables<
PendingInvite,
InvitesTableColumns
>;
export default function InvitesTable({
extraColumns,
includeColumns = ["name", "email", "inviteSentAt", "status"],
data,
t,
...restProps
}: InvitesTableProps) {
const { createDefaultColumn } = useColumns<PendingInvite>({
t,
});
const columns = useMemo(() => {
const initialColumns: ColumnDef<PendingInvite>[] = [
createDefaultColumn("name", {
accessorKey: "user.name",
}),
createDefaultColumn("email", {
accessorKey: "user.email",
}),
createDefaultColumn("inviteSentAt", {
accessorKey: "invite_sent_at",
cell: info => formatDisplayLongDate(info.getValue()),
}),
createDefaultColumn("status", {
accessorKey: "status",
cell: info => renderRegistered(info.getValue()),
}),
];
return filterColumns(initialColumns, includeColumns, extraColumns || []);
}, [includeColumns, extraColumns]);
return (
<Table
noResultsMessage={t("noResultsMessage")}
errorMessage={<ErrorMessage t={t} tKey="errorMessage" />}
data={data}
columns={columns}
isPaginated
{...restProps}
/>
);
}