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

데이터를 불러오는 중 오류가 발생했습니다.

), Success: () => , }), tableInstance: table, }; }