docs: 화면 컴포넌트 개발 가이드 업데이트
- 화면 컴포넌트 개발 가이드를 개선하여 핵심 원칙과 패턴을 명확히 설명하였습니다. - 목차를 재구성하고, V2 컴포넌트 규칙, 표준 Props 인터페이스, 멀티테넌시 관련 내용을 추가하였습니다. - 각 컴포넌트의 역할과 사용법을 상세히 설명하여 개발자들이 이해하기 쉽게 하였습니다. - API 호출 시 autoFilter 패턴과 렌더링 최적화 패턴을 포함하여 가이드의 실용성을 높였습니다.
This commit is contained in:
parent
8a2c13bba8
commit
a4862c45f4
File diff suppressed because it is too large
Load Diff
|
|
@ -499,9 +499,9 @@ export const InteractiveScreenViewer: React.FC<InteractiveScreenViewerProps> = (
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 탭 컴포넌트 처리
|
// 탭 컴포넌트 처리 (v1, v2 모두 지원)
|
||||||
const componentType = (comp as any).componentType || (comp as any).componentId;
|
const componentType = (comp as any).componentType || (comp as any).componentId;
|
||||||
if (comp.type === "tabs" || (comp.type === "component" && componentType === "tabs-widget")) {
|
if (comp.type === "tabs" || (comp.type === "component" && (componentType === "tabs-widget" || componentType === "v2-tabs-widget"))) {
|
||||||
const TabsWidget = require("@/components/screen/widgets/TabsWidget").TabsWidget;
|
const TabsWidget = require("@/components/screen/widgets/TabsWidget").TabsWidget;
|
||||||
|
|
||||||
// componentConfig에서 탭 정보 추출
|
// componentConfig에서 탭 정보 추출
|
||||||
|
|
@ -517,19 +517,13 @@ export const InteractiveScreenViewer: React.FC<InteractiveScreenViewerProps> = (
|
||||||
persistSelection: tabsConfig.persistSelection || false,
|
persistSelection: tabsConfig.persistSelection || false,
|
||||||
};
|
};
|
||||||
|
|
||||||
console.log("🔍 탭 컴포넌트 렌더링:", {
|
|
||||||
originalType: comp.type,
|
|
||||||
componentType,
|
|
||||||
componentId: (comp as any).componentId,
|
|
||||||
tabs: tabsComponent.tabs,
|
|
||||||
tabsConfig,
|
|
||||||
});
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="h-full w-full">
|
<div className="h-full w-full">
|
||||||
<TabsWidget
|
<TabsWidget
|
||||||
component={tabsComponent as any}
|
component={tabsComponent as any}
|
||||||
menuObjid={menuObjid} // 🆕 부모의 menuObjid 전달
|
menuObjid={menuObjid}
|
||||||
|
formData={formData}
|
||||||
|
onFormDataChange={updateFormData}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ interface TabsWidgetProps {
|
||||||
style?: React.CSSProperties;
|
style?: React.CSSProperties;
|
||||||
menuObjid?: number;
|
menuObjid?: number;
|
||||||
formData?: Record<string, any>;
|
formData?: Record<string, any>;
|
||||||
onFormDataChange?: (data: Record<string, any>) => void;
|
onFormDataChange?: (fieldName: string, value: any) => void; // DynamicComponentRenderer와 동일한 시그니처
|
||||||
isDesignMode?: boolean; // 디자인 모드 여부
|
isDesignMode?: boolean; // 디자인 모드 여부
|
||||||
onComponentSelect?: (tabId: string, componentId: string) => void; // 컴포넌트 선택 콜백
|
onComponentSelect?: (tabId: string, componentId: string) => void; // 컴포넌트 선택 콜백
|
||||||
selectedComponentId?: string; // 선택된 컴포넌트 ID
|
selectedComponentId?: string; // 선택된 컴포넌트 ID
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue