summaryrefslogtreecommitdiff
path: root/components/form-data/form-data-table-columns.tsx
diff options
context:
space:
mode:
authordujinkim <dujin.kim@dtsolution.co.kr>2025-06-01 13:52:21 +0000
committerdujinkim <dujin.kim@dtsolution.co.kr>2025-06-01 13:52:21 +0000
commitbac0228d21b7195065e9cddcc327ae33659c7bcc (patch)
tree8f3016ae4533c8706d0c00a605d9b1d41968c2bc /components/form-data/form-data-table-columns.tsx
parent2fdce8d7a57c792bba0ac36fa554dca9c9cc31e3 (diff)
(대표님) 20250601까지 작업사항
Diffstat (limited to 'components/form-data/form-data-table-columns.tsx')
-rw-r--r--components/form-data/form-data-table-columns.tsx50
1 files changed, 20 insertions, 30 deletions
diff --git a/components/form-data/form-data-table-columns.tsx b/components/form-data/form-data-table-columns.tsx
index b088276e..bba2a208 100644
--- a/components/form-data/form-data-table-columns.tsx
+++ b/components/form-data/form-data-table-columns.tsx
@@ -22,7 +22,7 @@ import { toast } from 'sonner';
/** row 액션 관련 타입 */
export interface DataTableRowAction<TData> {
row: Row<TData>;
- type: "open" | "edit" | "update";
+ type: "open" | "edit" | "update" | "delete";
}
/** 컬럼 타입 (필요에 따라 확장) */
@@ -57,7 +57,7 @@ interface GetColumnsProps<TData> {
// 체크박스 선택 관련 props
selectedRows?: Record<string, boolean>;
onRowSelectionChange?: (updater: Record<string, boolean> | ((prev: Record<string, boolean>) => Record<string, boolean>)) => void;
- editableFieldsMap?: Map<string, string[]>; // 새로 추가
+ // editableFieldsMap 제거됨
}
/**
@@ -73,7 +73,7 @@ export function getColumns<TData extends object>({
tempCount,
selectedRows = {},
onRowSelectionChange,
- editableFieldsMap = new Map(), // 새로 추가
+ // editableFieldsMap 매개변수 제거됨
}: GetColumnsProps<TData>): ColumnDef<TData>[] {
const columns: ColumnDef<TData>[] = [];
@@ -122,6 +122,8 @@ export function getColumns<TData extends object>({
),
enableSorting: false,
enableHiding: false,
+ enablePinning: true, // ← 이 줄 추가
+
size: 40,
};
columns.push(selectColumn);
@@ -147,38 +149,16 @@ export function getColumns<TData extends object>({
cell: ({ row }) => {
const cellValue = row.getValue(col.key);
- // 기본 읽기 전용 여부 (shi 속성 기반)
- let isReadOnly = col.shi === true;
-
- // 동적 읽기 전용 여부 계산
- if (!isReadOnly && col.key !== 'TAG_NO' && col.key !== 'TAG_DESC') {
- const tagNo = row.getValue('TAG_NO') as string;
- if (tagNo && editableFieldsMap.has(tagNo)) {
- const editableFields = editableFieldsMap.get(tagNo) || [];
- // 해당 TAG의 편집 가능 필드 목록에 없으면 읽기 전용
- isReadOnly = !editableFields.includes(col.key);
- } else {
- // TAG_NO가 없거나 editableFieldsMap에 없으면 읽기 전용
- isReadOnly = true;
- }
- }
+ // SHI 필드만 읽기 전용으로 처리
+ const isReadOnly = col.shi === true;
const readOnlyClass = isReadOnly ? "read-only-cell" : "";
const cellStyle = isReadOnly
? { backgroundColor: '#f5f5f5', color: '#666', cursor: 'not-allowed' }
: {};
- // 툴팁 메시지 설정
- let tooltipMessage = "";
- if (isReadOnly) {
- if (col.shi === true) {
- tooltipMessage = "SHI 전용 필드입니다";
- } else if (col.key === 'TAG_NO' || col.key === 'TAG_DESC') {
- tooltipMessage = "기본 필드는 수정할 수 없습니다";
- } else {
- tooltipMessage = "이 TAG 클래스에서는 편집할 수 없는 필드입니다";
- }
- }
+ // 툴팁 메시지 설정 (SHI 필드만)
+ const tooltipMessage = isReadOnly ? "SHI 전용 필드입니다" : "";
// 데이터 타입별 처리
switch (col.type) {
@@ -220,6 +200,7 @@ export function getColumns<TData extends object>({
}));
columns.push(...baseColumns);
+
// (4) 액션 칼럼 - update 버튼 예시
const actionColumn: ColumnDef<TData> = {
id: "update",
@@ -255,10 +236,19 @@ export function getColumns<TData extends object>({
>
Create Document
</DropdownMenuItem>
+ <DropdownMenuSeparator />
+ <DropdownMenuItem
+ onSelect={() => {
+ setRowAction({ row, type: "delete" });
+ }}
+ className="text-red-600 focus:text-red-600"
+ >
+ Delete
+ </DropdownMenuItem>
</DropdownMenuContent>
</DropdownMenu>
),
- minSize: 50,
+ size: 40,
enablePinning: true,
};