MCPcopy Create free account
hub / github.com/Openpanel-dev/openpanel / useTable

Function useTable

apps/start/src/components/ui/data-table/use-table.tsx:34–240  ·  view source on GitHub ↗
({
  columns,
  pageSize,
  data,
  loading,
  name,
}: {
  columns: ColumnDef<TData>[];
  pageSize: number;
  data: TData[];
  loading: boolean;
  name: string;
})

Source from the content-addressed store, hash-verified

32};
33
34export function useTable<TData>({
35 columns,
36 pageSize,
37 data,
38 loading,
39 name,
40}: {
41 columns: ColumnDef<TData>[];
42 pageSize: number;
43 data: TData[];
44 loading: boolean;
45 name: string;
46}) {
47 const [page, setPage] = useQueryState(
48 'page',
49 parseAsInteger.withDefault(1).withOptions(nuqsOptions),
50 );
51 const [perPage, setPerPage] = useQueryState(
52 'perPage',
53 parseAsInteger.withDefault(pageSize ?? 10).withOptions(nuqsOptions),
54 );
55 const pagination: PaginationState = {
56 pageIndex: page - 1,
57 pageSize: perPage,
58 };
59
60 const { columnVisibility, setColumnVisibility, columnOrder, setColumnOrder } =
61 useDataTableColumnVisibility(columns, name);
62
63 const [columnPinning, setColumnPinning] = useState<ColumnPinningState>({
64 left: [
65 ...columns
66 .filter((column) => column.meta?.pinned === 'left')
67 .map((column) => column.id!),
68 ],
69 right: columns
70 .filter((column) => column.meta?.pinned === 'right')
71 .map((column) => column.id!),
72 });
73
74 // Build per-key query parsers based on column metadata
75 const filterParsers = useMemo(() => {
76 return columns.reduce<
77 Record<string, Parser<string> | Parser<string[]> | Parser<number[]>>
78 >((acc, column) => {
79 const columnId = (column.id ?? (column as any).accessorKey)?.toString();
80 if (!columnId) return acc;
81 const variant = column.meta?.variant;
82
83 switch (variant) {
84 case 'text':
85 case 'number':
86 acc[columnId] = parseAsString.withDefault('');
87 break;
88 case 'select':
89 acc[columnId] = parseAsString.withDefault('');
90 break;
91 case 'multiSelect':

Callers 6

NotificationsTableFunction · 0.90
PagesTableFunction · 0.90
InvitesTableFunction · 0.90
MembersTableFunction · 0.90
ClientsTableFunction · 0.90
ComponentFunction · 0.90

Calls 6

hasMethod · 0.80
mapMethod · 0.45
toStringMethod · 0.45
pushMethod · 0.45
someMethod · 0.45

Tested by

no test coverage detected