ERP-node/frontend/components/v2/config-panels/V2AggregationWidgetConfigPa...

58 lines
1.7 KiB
TypeScript

"use client";
/**
* V2AggregationWidget 설정 패널
* 기존 AggregationWidgetConfigPanel의 모든 로직(테이블/컬럼 Combobox, 집계 항목 관리,
* 필터 조건, 데이터 소스 선택, 스타일 설정 등)을 유지하면서
* componentConfigChanged 이벤트를 추가하여 실시간 업데이트 지원
*/
import React from "react";
import { AggregationWidgetConfigPanel } from "@/lib/registry/components/v2-aggregation-widget/AggregationWidgetConfigPanel";
import type { AggregationWidgetConfig } from "@/lib/registry/components/v2-aggregation-widget/types";
interface V2AggregationWidgetConfigPanelProps {
config: AggregationWidgetConfig;
onChange: (config: Partial<AggregationWidgetConfig>) => void;
screenTableName?: string;
screenComponents?: Array<{
id: string;
componentType: string;
label?: string;
tableName?: string;
columnName?: string;
}>;
}
export const V2AggregationWidgetConfigPanel: React.FC<V2AggregationWidgetConfigPanelProps> = ({
config,
onChange,
screenTableName,
screenComponents,
}) => {
const handleChange = (newConfig: Partial<AggregationWidgetConfig>) => {
onChange(newConfig);
if (typeof window !== "undefined") {
window.dispatchEvent(
new CustomEvent("componentConfigChanged", {
detail: { config: { ...config, ...newConfig } },
})
);
}
};
return (
<AggregationWidgetConfigPanel
config={config}
onChange={handleChange}
screenTableName={screenTableName}
screenComponents={screenComponents}
/>
);
};
V2AggregationWidgetConfigPanel.displayName = "V2AggregationWidgetConfigPanel";
export default V2AggregationWidgetConfigPanel;