"use client"; /** * UnifiedHierarchy 설정 패널 * 통합 계층 컴포넌트의 세부 설정을 관리합니다. */ 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"; interface UnifiedHierarchyConfigPanelProps { config: Record; onChange: (config: Record) => void; } export const UnifiedHierarchyConfigPanel: React.FC = ({ config, onChange, }) => { // 설정 업데이트 핸들러 const updateConfig = (field: string, value: any) => { onChange({ ...config, [field]: value }); }; return (
{/* 계층 타입 */}
{/* 뷰 모드 */}
{/* 데이터 소스 */}
{/* DB 설정 */} {config.dataSource === "db" && (
updateConfig("tableName", e.target.value)} placeholder="테이블명" className="h-8 text-xs" />
updateConfig("idColumn", e.target.value)} placeholder="id" className="h-8 text-xs" />
updateConfig("parentIdColumn", e.target.value)} placeholder="parent_id" className="h-8 text-xs" />
updateConfig("labelColumn", e.target.value)} placeholder="name" className="h-8 text-xs" />
)} {/* API 설정 */} {config.dataSource === "api" && (
updateConfig("apiEndpoint", e.target.value)} placeholder="/api/hierarchy" className="h-8 text-xs" />
)} {/* 옵션 */}
updateConfig("maxLevel", e.target.value ? Number(e.target.value) : undefined)} placeholder="제한 없음" min="1" className="h-8 text-xs" />
updateConfig("draggable", checked)} />
updateConfig("selectable", checked)} />
updateConfig("multiSelect", checked)} />
updateConfig("showCheckbox", checked)} />
updateConfig("expandAll", checked)} />
{/* BOM 전용 설정 */} {config.hierarchyType === "bom" && ( <>
updateConfig("showQuantity", checked)} />
updateConfig("quantityColumn", e.target.value)} placeholder="quantity" className="h-8 text-xs" />
)} {/* 연쇄 선택박스 전용 설정 */} {config.hierarchyType === "cascading" && ( <>
updateConfig("parentField", e.target.value)} placeholder="부모 필드명" className="h-8 text-xs" />
updateConfig("clearOnParentChange", checked)} />
)}
); }; UnifiedHierarchyConfigPanel.displayName = "UnifiedHierarchyConfigPanel"; export default UnifiedHierarchyConfigPanel;