3.4 KiB
3.4 KiB
[맥락노트] 카테고리 트리 대분류 추가 모달 - 연속 등록 모드 수정
왜 이 작업을 하는가
- 기준정보 - 옵션설정에서 트리 구조 카테고리(품목정보 > 재고단위 등)의 "대분류 추가" 모달이 저장 후 닫히지 않음
- 연속 등록 모드가 하드코딩되어 항상 ON 상태이고, 끌 수 있는 UI가 없음
- 같은 폴더의 평면 목록 모달(
CategoryValueAddDialog.tsx)은 이미 올바르게 구현되어 있음 - 동일 패턴을 적용하여 일관성 확보
핵심 결정 사항과 근거
1. 기본값: 연속 등록 OFF (모달 닫힘)
- 결정:
continuousAdd초기값을false로 설정 - 근거: 대부분의 사용자는 한 건 추가 후 결과를 확인하려 함. 연속 입력은 선택적 기능
2. 체크박스 위치: DialogFooter 아래, border-t 구분선 별도 영역
- 결정:
ScreenModal.tsx(1287~1303행) 패턴 그대로 적용 - 근거: "기준정보 - 부서관리" 추가 모달과 동일한 디자인. 프로젝트 관행 준수
- 대안 검토:
CategoryValueAddDialog.tsx는 DialogFooter 안에 체크박스 배치 → 부서 모달과 다른 디자인이므로 기각
3. 라벨: "저장 후 계속 입력 (연속 등록 모드)"
- 결정:
ScreenModal.tsx와 동일한 라벨 텍스트 사용 - 근거: 부서 추가 모달과 동일한 문구로 사용자 혼란 방지
4. localStorage 미사용
- 결정: 컴포넌트 state만 사용, localStorage 영속화 안 함
- 근거:
CategoryValueAddDialog.tsx(같은 폴더 형제 컴포넌트)가 localStorage를 쓰지 않음.ScreenModal.tsx는 사용하지만 동적 화면 모달 전용 기능이므로 범위가 다름
5. 수정 대상: handleAdd 함수만
- 결정: 저장 성공 분기에서만
continuousAdd체크 - 근거: 실패 시에는 원래대로 모달 유지 + 에러 표시. 분기가 필요한 건 성공 시뿐
관련 파일 위치
| 구분 | 파일 경로 | 설명 |
|---|---|---|
| 수정 대상 | frontend/components/table-category/CategoryValueManagerTree.tsx |
트리형 카테고리 값 관리 (대분류/중분류/소분류) |
| 참고 패턴 (로직) | frontend/components/table-category/CategoryValueAddDialog.tsx |
평면 목록 추가 모달 - continuousAdd 분기 로직 |
| 참고 패턴 (UI) | frontend/components/common/ScreenModal.tsx |
동적 화면 모달 - 체크박스 위치/라벨/스타일 |
기술 참고
현재 handleAdd 흐름
handleAdd() → API 호출 → 성공 시:
1. toast.success
2. 폼 초기화 (모달 유지 - 하드코딩)
3. addNameRef 포커스
4. loadTree(true) - 펼침 상태 유지
5. parentValue 있으면 해당 노드 펼침
변경 후 handleAdd 흐름
handleAdd() → API 호출 → 성공 시:
1. toast.success
2. loadTree(true) + parentValue 펼침
3. continuousAdd 체크:
- true: 폼 초기화 + addNameRef 포커스 (모달 유지)
- false: 폼 초기화 + setIsAddModalOpen(false) (모달 닫힘)
import 현황
Checkbox: 24행에서 이미 import (@/components/ui/checkbox)Label: 53행에서 이미 import (@/components/ui/label)- 추가 import 불필요