import type { HTMLAttributes } from "react"; import type { UseQueryResult } from "@tanstack/react-query"; import { useReactTable, type TableOptions } from "@tanstack/react-table"; import { DataTable } from "@common/components"; import { NoData } from "../ui/no-data"; import type { PageableList } from "../model"; import { matchQueryStatus } from "./match-query-status"; type UseDataTableOptions = { query: UseQueryResult>; tableOptions: Omit, "data" | "rowCount">; dataTableOptions?: DataTableOptions; }; type DataTableOptions = { variant?: "default" | "secondary" | "line"; className?: HTMLAttributes["className"]; viewPagination?: boolean; onRowClick?: (row: T) => void; }; export const useDataTable = ({ query, tableOptions, dataTableOptions, }: UseDataTableOptions) => { const table = useReactTable({ ...tableOptions, data: query.data?.content ?? [], rowCount: query.data?.totalElements ?? 0, }); return { tableComponent: matchQueryStatus(query, { Empty: , Success: () => { return ; }, }), tableInstance: table, }; };