Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
2026-05-07 15:04:05 +03:00
co-authored by Copilot
parent c7eb23dd3f
commit dd32658500
8 changed files with 199 additions and 71 deletions
@@ -5,6 +5,8 @@ import { DataTable, type ActionsColumnOptions, type DataViewProps } from "@/shar
import { useResourcePage, type UseResourcePageOptions, type ResourceItem, type ResourcePageClient } from "./use-resource-page"
import type { ColumnDef } from "@tanstack/react-table"
type LooseColumnDef<TData> = ColumnDef<TData, unknown> | (Omit<ColumnDef<TData, unknown>, "accessorKey"> & { accessorKey: string })
export type CrudResourceColumnHelpers<TClient extends ResourcePageClient> = {
actionsColumn: (options?: Partial<ActionsColumnOptions<ResourceItem<TClient>>>) => ColumnDef<ResourceItem<TClient>, unknown>
openEdit: (row: ResourceItem<TClient>) => void
@@ -31,7 +33,7 @@ type ReactNodeOrRender<TClient extends ResourcePageClient> =
type ManagedTableProps = "columns" | "data" | "pagination" | "sorting" | "onChange" | "isLoading"
export type CrudResourceProps<TClient extends ResourcePageClient> = UseResourcePageOptions<TClient> & {
columns: ColumnDef<ResourceItem<TClient>>[] | ((helpers: CrudResourceColumnHelpers<TClient>) => ColumnDef<ResourceItem<TClient>>[])
columns: LooseColumnDef<ResourceItem<TClient>>[] | ((helpers: CrudResourceColumnHelpers<TClient>) => LooseColumnDef<ResourceItem<TClient>>[])
onRowClick?: (row: ResourceItem<TClient>) => void
tableHeader?: ReactNodeOrRender<TClient>
tableProps?: Omit<Partial<DataViewProps<ResourceItem<TClient>>>, ManagedTableProps>
@@ -84,7 +86,7 @@ export function CrudResource<TClient extends ResourcePageClient>({
{tableHeader && (typeof tableHeader === "function" ? tableHeader(context) : tableHeader)}
<DataTable
{...tableProps}
columns={columns}
columns={columns as ColumnDef<TItem, any>[]}
data={items}
pagination={page.pagination}
sorting={page.sorting}