"use client" import * as React from "react" import type { DataTableAdvancedFilterField, DataTableFilterField, DataTableRowAction, } from "@/types/table" import { useDataTable } from "@/hooks/use-data-table" import { DataTable } from "@/components/data-table/data-table" import { getPQsByListId } from "../service" import { DataTableAdvancedToolbar } from "@/components/data-table/data-table-advanced-toolbar" import { PqCriterias } from "@/db/schema/pq" import { DeletePqsDialog } from "./delete-pqs-dialog" import { PqTableToolbarActions } from "./pq-table-toolbar-actions" import { getColumns } from "./pq-table-column" import { UpdatePqSheet } from "./update-pq-sheet" interface DocumentListTableProps { promises: Promise<[Awaited>]> pqListId: number } export function PqsTable({ promises, pqListId }: DocumentListTableProps) { // 1) 데이터를 가져옴 (server component -> use(...) pattern) const [{ data, pageCount }] = React.use(promises) const [rowAction, setRowAction] = React.useState | null>(null) const columns = React.useMemo( () => getColumns({ setRowAction }), [setRowAction] ) // Filter fields const filterFields: DataTableFilterField[] = [] const advancedFilterFields: DataTableAdvancedFilterField[] = [ { id: "code", label: "Code", type: "text", }, { id: "checkPoint", label: "Check Point", type: "text", }, { id: "description", label: "Description", type: "text", }, { id: "remarks", label: "Remarks", type: "text", }, { id: "groupName", label: "Group Name", type: "text", }, { id: "createdAt", label: "Created at", type: "date", }, { id: "updatedAt", label: "Updated at", type: "date", }, ] // useDataTable 훅으로 react-table 구성 const { table } = useDataTable({ data: data, // <-- 여기서 tableData 사용 columns, pageCount, filterFields, enablePinning: true, enableAdvancedFilter: true, initialState: { sorting: [{ id: "createdAt", desc: true }], columnPinning: { right: ["actions"] }, // grouping:['groupName'] }, getRowId: (originalRow) => String(originalRow.id), shallow: false, clearOnDefault: true, columnResizeMode: "onEnd", }) return ( <> setRowAction(null)} pq={rowAction?.row.original ?? null} /> setRowAction(null)} pqs={rowAction?.row.original ? [rowAction?.row.original] : []} showTrigger={false} onSuccess={() => rowAction?.row.toggleSelected(false)} /> ) }