import { IconDotsVertical, IconEdit, IconTrash } from "@tabler/icons-react"; import { createColumnHelper, getCoreRowModel, useReactTable } from "@tanstack/react-table"; import { useMemo } from "react"; import type { AccessList } from "src/api/backend"; import { EmptyData, GravatarFormatter, HasPermission, ValueWithDateFormatter } from "src/components"; import { TableLayout } from "src/components/Table/TableLayout"; import { intl, T } from "src/locale"; import { ACCESS_LISTS, MANAGE } from "src/modules/Permissions"; interface Props { data: AccessList[]; isFiltered?: boolean; isFetching?: boolean; onEdit?: (id: number) => void; onDelete?: (id: number) => void; onNew?: () => void; } export default function Table({ data, isFetching, isFiltered, onEdit, onDelete, onNew }: Props) { const columnHelper = createColumnHelper(); const columns = useMemo( () => [ columnHelper.accessor((row: any) => row.owner, { id: "owner", cell: (info: any) => { const value = info.getValue(); return ; }, meta: { className: "w-1", }, }), columnHelper.accessor((row: any) => row, { id: "name", header: intl.formatMessage({ id: "column.name" }), cell: (info: any) => ( ), }), columnHelper.accessor((row: any) => row.items, { id: "items", header: intl.formatMessage({ id: "column.authorization" }), cell: (info: any) => , }), columnHelper.accessor((row: any) => row.clients, { id: "clients", header: intl.formatMessage({ id: "column.access" }), cell: (info: any) => , }), columnHelper.accessor((row: any) => row.satisfyAny, { id: "satisfyAny", header: intl.formatMessage({ id: "column.satisfy" }), cell: (info: any) => , }), columnHelper.accessor((row: any) => row.proxyHostCount, { id: "proxyHostCount", header: intl.formatMessage({ id: "proxy-hosts" }), cell: (info: any) => , }), columnHelper.display({ id: "id", cell: (info: any) => { return (
{ e.preventDefault(); onEdit?.(info.row.original.id); }} > ); }, meta: { className: "text-end w-1", }, }), ], [columnHelper, onEdit, onDelete], ); const tableInstance = useReactTable({ columns, data, getCoreRowModel: getCoreRowModel(), rowCount: data.length, meta: { isFetching, }, enableSortingRemoval: false, }); return ( } /> ); }