"use client"; /** * UnifiedList 설정 패널 * 통합 목록 컴포넌트의 세부 설정을 관리합니다. */ import React from "react"; import { Label } from "@/components/ui/label"; import { Input } from "@/components/ui/input"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { Separator } from "@/components/ui/separator"; import { Checkbox } from "@/components/ui/checkbox"; import { Button } from "@/components/ui/button"; import { Plus, Trash2 } from "lucide-react"; interface UnifiedListConfigPanelProps { config: Record; onChange: (config: Record) => void; } export const UnifiedListConfigPanel: React.FC = ({ config, onChange, }) => { // 설정 업데이트 핸들러 const updateConfig = (field: string, value: any) => { onChange({ ...config, [field]: value }); }; // 컬럼 관리 const columns = config.columns || []; const addColumn = () => { const newColumns = [...columns, { key: "", title: "", width: "" }]; updateConfig("columns", newColumns); }; const updateColumn = (index: number, field: string, value: string) => { const newColumns = [...columns]; newColumns[index] = { ...newColumns[index], [field]: value }; updateConfig("columns", newColumns); }; const removeColumn = (index: number) => { const newColumns = columns.filter((_: any, i: number) => i !== index); updateConfig("columns", newColumns); }; return (
{/* 뷰 모드 */}
{/* 데이터 소스 */}
{/* DB 설정 */} {config.source === "db" && (
updateConfig("tableName", e.target.value)} placeholder="테이블명" className="h-8 text-xs" />
)} {/* API 설정 */} {config.source === "api" && (
updateConfig("apiEndpoint", e.target.value)} placeholder="/api/list" className="h-8 text-xs" />
)} {/* 컬럼 설정 */}
{columns.map((column: any, index: number) => (
updateColumn(index, "key", e.target.value)} placeholder="키" className="h-7 text-xs flex-1" /> updateColumn(index, "title", e.target.value)} placeholder="제목" className="h-7 text-xs flex-1" /> updateColumn(index, "width", e.target.value)} placeholder="너비" className="h-7 text-xs w-16" />
))} {columns.length === 0 && (

컬럼을 추가해주세요

)}
{/* 기능 옵션 */}
updateConfig("sortable", checked)} />
updateConfig("pagination", checked)} />
updateConfig("searchable", checked)} />
updateConfig("editable", checked)} />
{/* 페이지 크기 */} {config.pagination !== false && (
)}
); }; UnifiedListConfigPanel.displayName = "UnifiedListConfigPanel"; export default UnifiedListConfigPanel;