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,
};
};