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