fix: 선택항목 상세입력 컴포넌트 입력 시 포커스 유지 개선

- 입력 중 onFormDataChange 호출 제거하여 불필요한 리렌더링 방지
- 저장 버튼 클릭 시에만 데이터 전달하도록 변경 (beforeFormSave 이벤트)
- handleSave에서 beforeFormSave 이벤트 발생 및 100ms 대기
- 원본 데이터 표시 버그 수정 (modalData 중첩 구조 처리)
- fieldGroups 구조 감지 로직 수정 (details → fieldGroups)

이제 사용자가 타이핑할 때 포커스가 유지됩니다.
This commit is contained in:
kjs
2025-11-18 10:00:56 +09:00
parent e9268b3f00
commit 3d74b9deb2
2 changed files with 29 additions and 14 deletions

View File

@@ -200,10 +200,16 @@ export class ButtonActionExecutor {
console.log("💾 [handleSave] 저장 시작:", { formData, tableName, screenId });
// 🆕 SelectedItemsDetailInput 배치 저장 처리 (새로운 데이터 구조)
const selectedItemsKeys = Object.keys(formData).filter(key => {
const value = formData[key];
return Array.isArray(value) && value.length > 0 && value[0]?.originalData && value[0]?.details;
// 🆕 저장 전 이벤트 발생 (SelectedItemsDetailInput 등에서 최신 데이터 수집)
window.dispatchEvent(new CustomEvent("beforeFormSave"));
// 약간의 대기 시간을 주어 이벤트 핸들러가 formData를 업데이트할 수 있도록 함
await new Promise(resolve => setTimeout(resolve, 100));
// 🆕 SelectedItemsDetailInput 배치 저장 처리 (fieldGroups 구조)
const selectedItemsKeys = Object.keys(context.formData).filter(key => {
const value = context.formData[key];
return Array.isArray(value) && value.length > 0 && value[0]?.originalData && value[0]?.fieldGroups;
});
if (selectedItemsKeys.length > 0) {