"use client"; import React, { useState, useEffect } from "react"; import { Button } from "@/components/ui/button"; import { Settings, Filter, Layers } from "lucide-react"; import { useTableOptions } from "@/contexts/TableOptionsContext"; import { ColumnVisibilityPanel } from "@/components/screen/table-options/ColumnVisibilityPanel"; import { FilterPanel } from "@/components/screen/table-options/FilterPanel"; import { GroupingPanel } from "@/components/screen/table-options/GroupingPanel"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; interface TableSearchWidgetProps { component: { id: string; title?: string; style?: { width?: string; height?: string; padding?: string; backgroundColor?: string; }; componentConfig?: { autoSelectFirstTable?: boolean; // 첫 번째 테이블 자동 선택 여부 showTableSelector?: boolean; // 테이블 선택 드롭다운 표시 여부 }; }; } export function TableSearchWidget({ component }: TableSearchWidgetProps) { const { registeredTables, selectedTableId, setSelectedTableId } = useTableOptions(); const [columnVisibilityOpen, setColumnVisibilityOpen] = useState(false); const [filterOpen, setFilterOpen] = useState(false); const [groupingOpen, setGroupingOpen] = useState(false); const autoSelectFirstTable = component.componentConfig?.autoSelectFirstTable ?? true; const showTableSelector = component.componentConfig?.showTableSelector ?? true; // Map을 배열로 변환 const tableList = Array.from(registeredTables.values()); // 첫 번째 테이블 자동 선택 useEffect(() => { const tables = Array.from(registeredTables.values()); if (autoSelectFirstTable && tables.length > 0 && !selectedTableId) { setSelectedTableId(tables[0].tableId); } }, [registeredTables, selectedTableId, autoSelectFirstTable, setSelectedTableId]); const hasMultipleTables = tableList.length > 1; return (