ERP-node/frontend/components/dataflow/condition/ConditionalSettings.tsx

71 lines
2.4 KiB
TypeScript
Raw Normal View History

2025-09-16 15:43:18 +09:00
"use client";
import React from "react";
import { Button } from "@/components/ui/button";
import { Label } from "@/components/ui/label";
import { Plus, Zap } from "lucide-react";
import { ConditionNode, ColumnInfo } from "@/lib/api/dataflow";
import { ConditionRenderer } from "./ConditionRenderer";
interface ConditionalSettingsProps {
conditions: ConditionNode[];
fromTableColumns: ColumnInfo[];
fromTableName?: string;
2025-09-16 15:43:18 +09:00
onAddCondition: () => void;
onAddGroupStart: () => void;
onAddGroupEnd: () => void;
onUpdateCondition: (index: number, field: keyof ConditionNode, value: string) => void;
onRemoveCondition: (index: number) => void;
getCurrentGroupLevel: (index: number) => number;
}
export const ConditionalSettings: React.FC<ConditionalSettingsProps> = ({
conditions,
fromTableColumns,
fromTableName,
2025-09-16 15:43:18 +09:00
onAddCondition,
onAddGroupStart,
onAddGroupEnd,
onUpdateCondition,
onRemoveCondition,
getCurrentGroupLevel,
}) => {
return (
<div className="rounded-lg border border-l-4 border-l-purple-500 bg-purple-50/30 p-4">
<div className="mb-4 flex items-center gap-2">
<Zap className="h-4 w-4 text-purple-500" />
<span className="text-sm font-medium"> ( )</span>
</div>
{/* 실행 조건 설정 */}
<div className="mb-4">
<div className="mb-2 flex items-center justify-between">
<Label className="text-sm font-medium"> </Label>
<div className="flex gap-1">
<Button size="sm" variant="outline" onClick={onAddCondition} className="h-7 text-xs">
<Plus className="mr-1 h-3 w-3" />
</Button>
<Button size="sm" variant="outline" onClick={onAddGroupStart} className="h-7 text-xs">
(
</Button>
<Button size="sm" variant="outline" onClick={onAddGroupEnd} className="h-7 text-xs">
)
</Button>
</div>
</div>
{/* 조건 목록 */}
<ConditionRenderer
conditions={conditions}
fromTableColumns={fromTableColumns}
fromTableName={fromTableName}
2025-09-16 15:43:18 +09:00
onUpdateCondition={onUpdateCondition}
onRemoveCondition={onRemoveCondition}
getCurrentGroupLevel={getCurrentGroupLevel}
/>
</div>
</div>
);
};