1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
import { Checkbox } from "@/components/ui/checkbox"
import { ColumnDef } from "@tanstack/react-table"
import { StandardAvlItem } from "./standard-avl-table"
// 선종별 표준 AVL 테이블 컬럼
export const standardAvlColumns: ColumnDef<StandardAvlItem>[] = [
{
id: "select",
header: ({ table }) => (
<Checkbox
checked={
table.getIsAllPageRowsSelected() ||
(table.getIsSomePageRowsSelected() && "indeterminate")
}
onCheckedChange={(value) => table.toggleAllPageRowsSelected(!!value)}
aria-label="Select all"
/>
),
cell: ({ row, table }) => {
// 선종별 표준 AVL 테이블의 단일 선택 핸들러
const handleRowSelection = (checked: boolean) => {
if (checked) {
// 다른 모든 행의 선택 해제
table.getRowModel().rows.forEach(r => {
if (r !== row && r.getIsSelected()) {
r.toggleSelected(false)
}
})
}
// 현재 행 선택/해제
row.toggleSelected(checked)
}
return (
<Checkbox
checked={row.getIsSelected()}
onCheckedChange={handleRowSelection}
aria-label="Select row"
/>
)
},
enableSorting: false,
enableHiding: false,
size: 50,
},
{
accessorKey: "no",
header: "No.",
size: 60,
},
{
accessorKey: "disciplineName",
header: "설계공종",
size: 120,
},
{
accessorKey: "avlVendorName",
header: "AVL 등재업체명",
size: 140,
},
{
accessorKey: "materialGroupCode",
header: "자재그룹 코드",
size: 120,
},
{
accessorKey: "materialGroupName",
header: "자재그룹 명",
size: 130,
},
{
accessorKey: "vendorCode",
header: "협력업체 코드",
size: 120,
},
{
accessorKey: "vendorName",
header: "협력업체 명",
size: 130,
},
{
accessorKey: "headquarterLocation",
header: "본사 위치 (국가)",
size: 140,
},
{
accessorKey: "tier",
header: "등급 (Tier)",
size: 120,
},
]
|