import { createColumnHelper } from "@tanstack/react-table"; import { type LinkTableColumns } from "@/entities/link"; import { Checkbox } from "@common/components"; const columnHelper = createColumnHelper(); function tableColumns({ selectedColIds, setSelectedColIds }: { selectedColIds: string[]; setSelectedColIds: React.Dispatch>; }) { return [ columnHelper.display({ id: "select", header: ({ table }) => { const allRows = table.getRowModel().rows; const allSelected = allRows.length > 0 && allRows.every((row) => selectedColIds.includes(row.original.col_sn) ); return (
{ if (checked) { setSelectedColIds(allRows.map((row) => row.original.col_sn)); } else { setSelectedColIds([]); } }} />
); }, cell: ({ row }) => { const id = row.original.col_sn; const checked = selectedColIds.includes(id); return (
e.stopPropagation()} onCheckedChange={(checked) => { setSelectedColIds((prev) => checked ? [...prev, id] : prev.filter((x) => x !== id) ); }} />
); }, }), columnHelper.accessor('col_sn', { id: 'col_sn', header: '컬럼 일련번호' }), columnHelper.accessor('sou_col_nm', { id: 'sou_col_nm', header: '원천컬럼명', cell: (info) => info.getValue() ? info.getValue() : '-', }), columnHelper.accessor('sou_col_korn_nm', { id: 'sou_col_korn_nm', header: '원천컬럼 한글명', cell: (info) => info.getValue() ? info.getValue() : '-', }), columnHelper.accessor('sou_col_sz', { id: 'sou_col_sz', header: '원천컬럼 크기', cell: (info) => info.getValue() ? info.getValue() : '-', }), columnHelper.accessor('trsf_col_nm', { id: 'trsf_col_nm', header: '변환컬럼명', cell: (info) => info.getValue() ? info.getValue() : '-', }), columnHelper.accessor('trsf_col_korn_nm', { id: 'trsf_col_korn_nm', header: '변환컬럼 한글명', cell: (info) => info.getValue() ? info.getValue() : '-', }), columnHelper.accessor('trsf_col_sz', { id: 'trsf_col_sz', header: '변환컬럼 크기', cell: (info) => info.getValue() ? info.getValue() : '-', }), columnHelper.accessor('pk_yn', { id: 'pk_yn', header: 'PK 여부', cell: (info) => info.getValue() === 'Y' ? '예' : '아니오', }), ] } export { tableColumns };