어떤 버그인가요?
모달 스택 z-index를 계산하는 acquireModalStackIndex가 모달이 닫힐 때 번호를 반납하지 않습니다. 그래서 "지금 몇 겹 중첩됐는지"가 아니라 "세션 동안 모달이 누적으로 몇 번 열렸는지"가 z-index 계산에 쓰입니다.
어떤 상황에서 발생한 버그인가요?
- Given:
Modal 또는 OverlayModal을 쓰는 화면에서 모달을 열고 닫기를 반복한다(중첩 없이 단순 재오픈 포함).
- When: 모달을 열 때마다
acquireModalStackIndex()가 호출되지만, 닫히거나 언마운트될 때 이 값을 반납하는 코드가 어디에도 없다.
- Then:
nextModalStackIndex가 계속 증가해서, 전혀 중첩되지 않은 단일 모달도 세션이 길어질수록 더 큰 stackIndex를 받고, 그만큼 panelZIndex(50 + stackIndex * 20)가 불필요하게 커진다.
예상 결과
stackIndex는 현재 동시에 열려 있는 모달의 중첩 깊이만 반영해야 합니다. 모달이 닫히면 그 번호를 반납해서, 중첩되지 않은 모달은 항상 기준값(stackIndex 0, panelZIndex 50)에 가깝게 유지돼야 합니다.
참고자료
packages/timo-design-system/src/lib/modal-stack-registry.ts — acquireModalStackIndex만 있고 release 함수가 없습니다.
- 호출부:
apps/timo-web/components/modal/OverlayModal.tsx, packages/timo-design-system/src/components/layout/modal/Modal.tsx
- 제안:
releaseModalStackIndex()를 추가하고, OverlayModal의 닫힘 effect cleanup과 Modal의 close()에서 호출합니다.
- 참고:
OverlayModal.tsx의 feedback prop(모달 패널 위에 토스트를 띄우는 슬롯)은 이 버그와 별개 목적이라 이 수정과 함께 없앨 대상이 아닙니다.
어떤 버그인가요?
모달 스택 z-index를 계산하는
acquireModalStackIndex가 모달이 닫힐 때 번호를 반납하지 않습니다. 그래서 "지금 몇 겹 중첩됐는지"가 아니라 "세션 동안 모달이 누적으로 몇 번 열렸는지"가 z-index 계산에 쓰입니다.어떤 상황에서 발생한 버그인가요?
Modal또는OverlayModal을 쓰는 화면에서 모달을 열고 닫기를 반복한다(중첩 없이 단순 재오픈 포함).acquireModalStackIndex()가 호출되지만, 닫히거나 언마운트될 때 이 값을 반납하는 코드가 어디에도 없다.nextModalStackIndex가 계속 증가해서, 전혀 중첩되지 않은 단일 모달도 세션이 길어질수록 더 큰stackIndex를 받고, 그만큼panelZIndex(50 + stackIndex * 20)가 불필요하게 커진다.예상 결과
stackIndex는 현재 동시에 열려 있는 모달의 중첩 깊이만 반영해야 합니다. 모달이 닫히면 그 번호를 반납해서, 중첩되지 않은 모달은 항상 기준값(stackIndex 0,panelZIndex 50)에 가깝게 유지돼야 합니다.참고자료
packages/timo-design-system/src/lib/modal-stack-registry.ts—acquireModalStackIndex만 있고 release 함수가 없습니다.apps/timo-web/components/modal/OverlayModal.tsx,packages/timo-design-system/src/components/layout/modal/Modal.tsxreleaseModalStackIndex()를 추가하고,OverlayModal의 닫힘 effect cleanup과Modal의close()에서 호출합니다.OverlayModal.tsx의feedbackprop(모달 패널 위에 토스트를 띄우는 슬롯)은 이 버그와 별개 목적이라 이 수정과 함께 없앨 대상이 아닙니다.