상세입력 컴포넌트 테이블 선택 기능 추가

This commit is contained in:
kjs
2025-11-17 15:25:08 +09:00
parent a783317820
commit bc557c4074
14 changed files with 1095 additions and 230 deletions

View File

@@ -106,6 +106,9 @@ export interface ButtonActionContext {
// 플로우 선택된 데이터 정보 (플로우 위젯 선택 액션용)
flowSelectedData?: any[];
flowSelectedStepId?: number | null;
// 🆕 같은 화면의 모든 컴포넌트 (TableList 자동 감지용)
allComponents?: any[];
// 제어 실행을 위한 추가 정보
buttonId?: string;
@@ -686,8 +689,28 @@ export class ButtonActionExecutor {
dataSourceId: config.dataSourceId,
});
// 1. dataSourceId 확인 (없으면 selectedRows에서 데이터 전달)
const dataSourceId = config.dataSourceId || context.tableName || "default";
// 🆕 1. dataSourceId 자동 결정
let dataSourceId = config.dataSourceId;
// dataSourceId가 없으면 같은 화면의 TableList 자동 감지
if (!dataSourceId && context.allComponents) {
const tableListComponent = context.allComponents.find(
(comp: any) => comp.componentType === "table-list" && comp.componentConfig?.tableName
);
if (tableListComponent) {
dataSourceId = tableListComponent.componentConfig.tableName;
console.log("✨ TableList 자동 감지:", {
componentId: tableListComponent.id,
tableName: dataSourceId,
});
}
}
// 여전히 없으면 context.tableName 또는 "default" 사용
if (!dataSourceId) {
dataSourceId = context.tableName || "default";
}
// 2. modalDataStore에서 데이터 확인
try {
@@ -711,7 +734,7 @@ export class ButtonActionExecutor {
return false;
}
// 3. 모달 열기
// 3. 모달 열기 + URL 파라미터로 dataSourceId 전달
if (config.targetScreenId) {
// config에 modalDescription이 있으면 우선 사용
let description = config.modalDescription || "";
@@ -726,13 +749,14 @@ export class ButtonActionExecutor {
}
}
// 전역 모달 상태 업데이트를 위한 이벤트 발생
// 🆕 전역 모달 상태 업데이트를 위한 이벤트 발생 (URL 파라미터 포함)
const modalEvent = new CustomEvent("openScreenModal", {
detail: {
screenId: config.targetScreenId,
title: config.modalTitle || "데이터 입력",
description: description,
size: config.modalSize || "lg", // 데이터 입력 화면은 기본 large
urlParams: { dataSourceId }, // 🆕 URL 파라미터로 dataSourceId 전달
},
});