"use client"; import React, { useEffect, useState } from "react"; import { Label } from "@/components/ui/label"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { Switch } from "@/components/ui/switch"; import { Button } from "@/components/ui/button"; import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover"; import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from "@/components/ui/command"; import { getFlowDefinitions } from "@/lib/api/flow"; import type { FlowDefinition } from "@/types/flow"; import { Loader2, Check, ChevronsUpDown } from "lucide-react"; import { cn } from "@/lib/utils"; interface FlowWidgetConfigPanelProps { config: Record; onChange: (config: Record) => void; } export function FlowWidgetConfigPanel({ config = {}, onChange }: FlowWidgetConfigPanelProps) { const [flowList, setFlowList] = useState([]); const [loading, setLoading] = useState(true); const [openCombobox, setOpenCombobox] = useState(false); useEffect(() => { const loadFlows = async () => { try { setLoading(true); const response = await getFlowDefinitions({ isActive: true }); if (response.success && response.data) { setFlowList(response.data); } } catch (error) { console.error("Failed to load flows:", error); } finally { setLoading(false); } }; loadFlows(); }, []); const selectedFlow = flowList.find((flow) => flow.id === config.flowId); return (

플로우 선택

{loading ? (
로딩 중...
) : ( <> 플로우를 찾을 수 없습니다. {flowList.map((flow) => ( { onChange({ ...config, flowId: flow.id, flowName: flow.name, }); setOpenCombobox(false); }} > {flow.name} ))} {selectedFlow && (

테이블: {selectedFlow.tableName || "없음"}

)} )}

표시 옵션

각 스텝의 데이터 건수를 표시합니다

onChange({ ...config, showStepCount: checked })} />

사용자가 데이터를 다음 스텝으로 이동할 수 있습니다

onChange({ ...config, allowDataMove: checked })} />
); }