3.1 KiB
3.1 KiB
[체크리스트] 페이징 - 페이지 번호 직접 입력 네비게이션
공정 상태
- 전체 진행률: 100% (완료)
- 현재 단계: 완료
구현 체크리스트
1단계: 이전 설계 산출물 정리
frontend/components/common/PageGroupNav.tsx삭제TableListComponent.tsx에서PageGroupNavimport 제거 (있으면) — 이미 없음
2단계: 입력 필드 구현
pageInputValue로컬 상태 추가 (useState<string>)currentPage변경 시pageInputValue동기화 (useEffect)commitPageInput핸들러 구현 (parseInt + clamp + handlePageChange)- paginationJSX 중앙의
<span>→<input>+/+<span>교체 inputMode="numeric"적용onFocus에 전체 선택 (e.target.select())onChange에setPageInputValue(표시만 변경)onKeyDownEnter에commitPageInput+blur()onBlur에commitPageInputdisabled={loading}적용- 기존 좌측 페이지크기 입력과 일관된 스타일 적용
3단계: 버그 수정
handlePageSizeChange에onConfigChange호출 추가 (pageSize+currentPage: 1전달)fetchTableDataInternal에서currentPage를 단일 소스로 변경 (staletableConfig.pagination?.currentPage문제 해결)useCallback의존성에서tableConfig.pagination?.currentPage제거useMemo의존성에pageInputValue추가
4단계: 검증
- 입력 필드에 숫자 입력 후 Enter → 해당 페이지로 이동
- 입력 필드에 숫자 입력 후 포커스 아웃 → 해당 페이지로 이동
- 0 입력 → 1로 보정
- totalPages 초과 입력 → totalPages로 보정
- 빈 값으로 blur → 현재 페이지 유지
- 비숫자(abc) 입력 후 Enter → 현재 페이지 유지
- 입력 필드 클릭 시 기존 숫자 전체 선택 확인
< >버튼 클릭 시 입력 필드 값도 갱신 확인<< >>버튼 클릭 시 입력 필드 값도 갱신 확인- 로딩 중 입력 필드 비활성화 확인
- 좌측 페이지크기 입력과 스타일 일관성 확인
- 기존
<< < > >>버튼 동작 변화 없음 확인 - 페이지크기 변경 시 1페이지로 리셋 + 데이터 정상 로딩 확인
5단계: 정리
- 린트 에러 없음 확인 (기존 에러만 존재, 신규 없음)
- 문서(계획서/맥락노트/체크리스트) 최신화 완료
변경 이력
| 날짜 | 내용 |
|---|---|
| 2026-03-11 | 최초 설계: 10개 번호 버튼 그룹 (PageGroupNav) |
| 2026-03-11 | 설계 변경: 입력 필드 방식으로 전면 재작성 |
| 2026-03-11 | 구현 완료: 입력 필드 + 유효성 검증 |
| 2026-03-11 | 버그 수정: 페이지크기 변경 시 빈 데이터 문제 (onConfigChange 누락 + stale currentPage) |
| 2026-03-11 | 문서 최신화: 버그 수정 내역 반영, 코드 설계 섹션 제거 (구현 완료) |