velox-grid 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/CHANGELOG.md +483 -0
  2. package/README.md +755 -0
  3. package/dist/react/index.esm.js +3757 -0
  4. package/dist/react/index.esm.js.map +1 -0
  5. package/dist/react/index.js +7 -0
  6. package/dist/react/index.js.map +1 -0
  7. package/dist/react/react/VeloxGridReact.d.ts +33 -0
  8. package/dist/react/react/VeloxGridReact.d.ts.map +1 -0
  9. package/dist/react/react/index.d.ts +9 -0
  10. package/dist/react/react/index.d.ts.map +1 -0
  11. package/dist/react/react/types.d.ts +52 -0
  12. package/dist/react/react/types.d.ts.map +1 -0
  13. package/dist/react/react/useVeloxGrid.d.ts +23 -0
  14. package/dist/react/react/useVeloxGrid.d.ts.map +1 -0
  15. package/dist/react/types/index.d.ts +878 -0
  16. package/dist/react/types/index.d.ts.map +1 -0
  17. package/dist/types/core/GridColumnMenu.d.ts +35 -0
  18. package/dist/types/core/GridColumnMenu.d.ts.map +1 -0
  19. package/dist/types/core/GridDragManager.d.ts +83 -0
  20. package/dist/types/core/GridDragManager.d.ts.map +1 -0
  21. package/dist/types/core/GridEditorFactory.d.ts +33 -0
  22. package/dist/types/core/GridEditorFactory.d.ts.map +1 -0
  23. package/dist/types/core/GridFilterPopup.d.ts +43 -0
  24. package/dist/types/core/GridFilterPopup.d.ts.map +1 -0
  25. package/dist/types/core/GridHistory.d.ts +84 -0
  26. package/dist/types/core/GridHistory.d.ts.map +1 -0
  27. package/dist/types/core/GridRenderer.d.ts +73 -0
  28. package/dist/types/core/GridRenderer.d.ts.map +1 -0
  29. package/dist/types/core/GridSummary.d.ts +98 -0
  30. package/dist/types/core/GridSummary.d.ts.map +1 -0
  31. package/dist/types/core/GridTooltip.d.ts +43 -0
  32. package/dist/types/core/GridTooltip.d.ts.map +1 -0
  33. package/dist/types/core/GridValidator.d.ts +63 -0
  34. package/dist/types/core/GridValidator.d.ts.map +1 -0
  35. package/dist/types/core/VeloxGrid.d.ts +437 -0
  36. package/dist/types/core/VeloxGrid.d.ts.map +1 -0
  37. package/dist/types/core/index.d.ts +15 -0
  38. package/dist/types/core/index.d.ts.map +1 -0
  39. package/dist/types/index.d.ts +16 -0
  40. package/dist/types/index.d.ts.map +1 -0
  41. package/dist/types/react/VeloxGridReact.d.ts +40 -0
  42. package/dist/types/react/VeloxGridReact.d.ts.map +1 -0
  43. package/dist/types/react/index.d.ts +9 -0
  44. package/dist/types/react/index.d.ts.map +1 -0
  45. package/dist/types/react/types.d.ts +55 -0
  46. package/dist/types/react/types.d.ts.map +1 -0
  47. package/dist/types/react/useVeloxGrid.d.ts +54 -0
  48. package/dist/types/react/useVeloxGrid.d.ts.map +1 -0
  49. package/dist/types/types/index.d.ts +878 -0
  50. package/dist/types/types/index.d.ts.map +1 -0
  51. package/dist/types/utils/data.d.ts +41 -0
  52. package/dist/types/utils/data.d.ts.map +1 -0
  53. package/dist/types/utils/dom.d.ts +13 -0
  54. package/dist/types/utils/dom.d.ts.map +1 -0
  55. package/dist/types/utils/export.d.ts +60 -0
  56. package/dist/types/utils/export.d.ts.map +1 -0
  57. package/dist/types/utils/index.d.ts +4 -0
  58. package/dist/types/utils/index.d.ts.map +1 -0
  59. package/dist/types/vue/index.d.ts +9 -0
  60. package/dist/types/vue/index.d.ts.map +1 -0
  61. package/dist/types/vue/types.d.ts +68 -0
  62. package/dist/types/vue/types.d.ts.map +1 -0
  63. package/dist/types/vue/useVeloxGrid.d.ts +49 -0
  64. package/dist/types/vue/useVeloxGrid.d.ts.map +1 -0
  65. package/dist/velox-grid.css +1 -0
  66. package/dist/velox-grid.esm.js +3387 -0
  67. package/dist/velox-grid.esm.js.map +1 -0
  68. package/dist/velox-grid.iife.js +14 -0
  69. package/dist/velox-grid.iife.js.map +1 -0
  70. package/dist/velox-grid.js +14 -0
  71. package/dist/velox-grid.js.map +1 -0
  72. package/dist/vue/index.esm.js +3754 -0
  73. package/dist/vue/index.esm.js.map +1 -0
  74. package/dist/vue/index.js +7 -0
  75. package/dist/vue/index.js.map +1 -0
  76. package/dist/vue/types/index.d.ts +878 -0
  77. package/dist/vue/types/index.d.ts.map +1 -0
  78. package/dist/vue/vue/index.d.ts +9 -0
  79. package/dist/vue/vue/index.d.ts.map +1 -0
  80. package/dist/vue/vue/types.d.ts +65 -0
  81. package/dist/vue/vue/types.d.ts.map +1 -0
  82. package/dist/vue/vue/useVeloxGrid.d.ts +21 -0
  83. package/dist/vue/vue/useVeloxGrid.d.ts.map +1 -0
  84. package/package.json +120 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,483 @@
1
+ # 변경 이력
2
+
3
+ VeloxGrid의 모든 주요 변경사항은 이 파일에 문서화됩니다.
4
+
5
+ 이 형식은 [Keep a Changelog](https://keepachangelog.com/ko/1.0.0/)를 기반으로 하며,
6
+ 이 프로젝트는 [Semantic Versioning](https://semver.org/lang/ko/)을 따릅니다.
7
+
8
+ ## [0.11.0] - 2025-02-12
9
+
10
+ ### Added - Phase 17: Framework Wrappers (React + Vue)
11
+
12
+ #### React 래퍼
13
+ - **VeloxGridReact 컴포넌트**: `forwardRef` + `useImperativeHandle`로 전체 API를 ref로 노출
14
+ - **useVeloxGrid Hook**: `containerRef` + `grid` 인스턴스 + `isReady` 상태 반환
15
+ - **Props 매핑**: `GridOptions`의 모든 옵션을 Props로 전달, `GridEvents`를 콜백 Props로 바인딩
16
+ - **이벤트 프록시**: 리렌더 시에도 항상 최신 콜백 참조 (eventsRef 패턴)
17
+ - **TypeScript 타입**: `VeloxGridReactProps`, `VeloxGridReactRef` 타입 제공
18
+
19
+ #### Vue 3 래퍼
20
+ - **VeloxGridVue SFC**: `script setup` + `defineExpose`로 전체 API를 template ref로 노출
21
+ - **useVeloxGrid Composable**: `containerRef` + `grid` ref + `isReady` ref 반환
22
+ - **이벤트 emit**: `GridEvents`를 kebab-case로 변환하여 emit (예: `onCellClick` → `@cell-click`)
23
+ - **TypeScript 타입**: `VeloxGridVueProps`, `VeloxGridVueEmits` 타입 제공
24
+
25
+ #### 빌드 구조
26
+ - **별도 빌드 설정**: `vite.config.react.ts`, `vite.config.vue.ts`
27
+ - **package.json exports**: `velox-grid/react`, `velox-grid/vue`, `velox-grid/css`
28
+ - **peerDependencies**: `react >=16.8`, `vue >=3.0` (모두 optional)
29
+ - **빌드 스크립트**: `build:react`, `build:vue`, `build:all`
30
+
31
+ #### 설계 원칙
32
+ - **Pass-through 패턴**: GridOptions 확장 시 래퍼 수정 불필요
33
+ - **코어 무수정**: `src/core/` 소스 변경 없음
34
+ - **data/columns/loading** prop 변경 시 자동 반영
35
+
36
+ ### Fixed
37
+ - `VeloxGridInstance`에 Pagination 메서드 누락 수정 (`goToPage`, `setPageSize`, `getPaginationState`, `fetchData`)
38
+
39
+ ### Bundle Size (Core - 변경 없음)
40
+ - UMD: 100.20 KB (gzip: 24.69 KB)
41
+ - ESM: 139.67 KB (gzip: 31.51 KB)
42
+
43
+ ### React Wrapper
44
+ - ESM: 151.13 KB (gzip: 32.94 KB)
45
+ - CJS: 106.71 KB (gzip: 25.59 KB)
46
+
47
+ ### Vue Wrapper
48
+ - ESM: 150.41 KB (gzip: 33.59 KB)
49
+ - CJS: 107.16 KB (gzip: 26.32 KB)
50
+
51
+ ## [0.10.0] - 2025-02-09
52
+
53
+ ### Added - Phase 18: Server-Side Data & Pagination
54
+ - **DataSource 옵션**: `local` / `remote` 데이터 소스 타입 지원
55
+ - **Remote 데이터**: 서버에서 페이지 단위로 데이터를 가져오는 `fetch` 함수 지원
56
+ - **Pagination UI**: 페이지 네비게이션 바 (처음/이전/다음/마지막, 페이지 번호)
57
+ - **페이지 정보 표시**: "1-20 / 500" 형식의 현재 위치 정보
58
+ - **페이지 크기 변경**: `showSizeChanger` 옵션으로 드롭다운 선택기 제공
59
+ - **Local Pagination**: 클라이언트 데이터를 페이지 단위로 분할 표시
60
+ - **Remote Pagination**: 서버 측 정렬/필터/페이징 자동 연동
61
+ - **API 메서드**: `goToPage()`, `setPageSize()`, `fetchData()`, `getPaginationState()`
62
+ - **이벤트**: `onPageChange`, `onPageSizeChange`
63
+ - **Infinite Scroll**: `mode: 'infinite'` - 스크롤 끝에 도달 시 다음 페이지 자동 로드
64
+ - **Infinite Scroll 옵션**: `infiniteScrollThreshold` (바닥 여유 px 설정)
65
+ - **CSS 모듈**: `_pagination.css` 추가
66
+
67
+ ### Bundle Size
68
+ - UMD: 92.19 KB → 100.20 KB (+8.01 KB)
69
+ - ESM: 132.98 KB → 139.67 KB (+6.69 KB)
70
+ - CSS: 19.52 KB → 21.61 KB (+2.09 KB)
71
+ - gzip: 22.86 KB → 24.69 KB (+1.83 KB)
72
+
73
+ ## [0.9.1] - 2025-02-09
74
+
75
+ ### Added - Phase 15.1: Enhanced Keyboard Navigation
76
+ - **Quick Edit**: 셀 선택 후 바로 타이핑으로 편집 시작 (Excel 스타일)
77
+ - **Enter/Shift+Enter**: 저장 + 아래/위로 이동
78
+ - **Tab/Shift+Tab**: 저장 + 오른쪽/왼쪽으로 이동 (Edit 모드 & Read 모드)
79
+ - **onMove 콜백**: Custom Editor에서 이동 방향을 Grid에 전달
80
+
81
+ ### Changed
82
+ - 모든 Custom Editor에서 키보드 동작 통일
83
+ - Editor 내부 키 이벤트에 `stopPropagation` 추가
84
+ - Read 모드 Tab 키 네비게이션 지원 (행 래핑 포함)
85
+
86
+ ### Fixed - Phase 15.1 Follow-up
87
+ - **Enter 키 편집 종료**: Cell 모드에서 Enter 키가 편집을 종료하지 않던 문제 해결
88
+ - 원인: `endEdit()` 후 `endEditAndMove()` 호출 시 state가 이미 초기화됨
89
+ - 해결: `endEditAndMove()`만 호출 (내부적으로 endEdit 호출)
90
+ - **Tab 키 Read 모드**: 편집하지 않을 때 Tab 키가 동작하지 않던 문제 해결
91
+ - handleKeyDown에 Tab/Shift+Tab 케이스 추가
92
+ - 행 끝에서 다음/이전 행으로 래핑 지원
93
+ - **Focus 복원**: 편집 종료 후 focus가 사라져 방향키가 동작하지 않던 문제 해결
94
+ - `endEditAndMove()` 후 `this.rootElement.focus()` 추가
95
+ - **Shift+Enter**: Edit 모드에서 Shift+Enter가 위로 이동하지 않던 문제 해결
96
+ - handleKeyDown에 Shift 키 체크 추가
97
+
98
+ ### Demo
99
+ - `examples/phase15-1-keyboard-demo.html`: 키보드 네비게이션 데모
100
+ - `examples/test-enter-key.html`: Enter 키 동작 검증
101
+ - `examples/test-cell-mode.html`: Cell 모드 테스트
102
+ - `examples/test-debug.html`: IIFE 빌드 디버깅
103
+
104
+ ### Keyboard Navigation Summary
105
+ **Edit 모드** (편집 중):
106
+ - Enter: 저장 + 아래로 이동
107
+ - Shift+Enter: 저장 + 위로 이동
108
+ - Tab: 저장 + 오른쪽 이동
109
+ - Shift+Tab: 저장 + 왼쪽 이동
110
+ - Escape: 편집 취소
111
+
112
+ **Read 모드** (읽기 전용):
113
+ - ArrowUp/Down/Left/Right: 셀 이동
114
+ - Tab: 오른쪽 이동 (행 래핑)
115
+ - Shift+Tab: 왼쪽 이동 (행 래핑)
116
+ - Enter/F2: 편집 시작
117
+ - Space: 체크박스 토글
118
+
119
+ ## [0.8.0] - 2025-02-05
120
+
121
+ ### 추가 - Phase 14: Fixed Columns
122
+
123
+ #### RealGrid 스타일 Fixed Columns API
124
+ - **FixedOptions 인터페이스 추가**: `colCount`, `rightCount` 지원
125
+ - **fixedOptions API**: 왼쪽/오른쪽 컬럼 고정 설정
126
+ - **API 메서드**: `setFixedOptions()`, `getFixedOptions()`
127
+
128
+ #### 컬럼 파티션 로직
129
+ - **특수 컬럼 자동 처리**: CheckBar, RowNumbers, DragHandle은 항상 왼쪽 고정
130
+ - **getFixedLeftColumns()**: 특수 컬럼 + 왼쪽 고정 데이터 컬럼 반환
131
+ - **getFixedRightColumns()**: 오른쪽 고정 컬럼 반환
132
+ - **getScrollableColumns()**: 중앙 스크롤 가능 컬럼 반환
133
+ - **getDataColumns()**: 데이터 컬럼만 반환 (특수 컬럼 제외)
134
+ - **isSpecialColumn()**: 특수 컬럼 판별 헬퍼 메서드
135
+
136
+ #### Fixed Right 컨테이너
137
+ - **DOM 요소 추가**: `fixedRightContainer`, `fixedRightHeader`, `fixedRightBody`, `fixedRightBodyInner`, `fixedRightFooter`
138
+ - **GridRenderer 확장**: Fixed Right 영역 렌더링 지원
139
+ - **hasFixedRight()**: Fixed Right 유무 확인 메서드
140
+
141
+ #### 스크롤 동기화
142
+ - **세로 스크롤 동기화**: Fixed Left/Right의 scrollTop을 메인 body와 동기화
143
+ - **throttle(16ms)**: 부드러운 스크롤 성능 최적화
144
+
145
+ #### CSS 스타일링
146
+ - **_base.css 확장**: `.velox-fixed-right` 스타일 추가
147
+ - 좌측 border, box-shadow 스타일
148
+ - 스크롤 숨김 처리
149
+
150
+ #### 데모 페이지
151
+ - **examples/phase14-fixed-demo.html**: 4가지 시나리오 데모
152
+ 1. Left Fixed (colCount만 사용)
153
+ 2. Right Fixed (rightCount만 사용)
154
+ 3. Both Fixed (colCount + rightCount)
155
+ 4. With Special Columns (CheckBar + RowNumbers + Fixed)
156
+
157
+ ### 번들 크기
158
+ - UMD: 84.30 KB (gzip: 21.31 KB) - 80.71 KB에서 +3.59 KB
159
+ - ESM: 116.75 KB (gzip: 26.58 KB) - 111.12 KB에서 +5.63 KB
160
+ - CSS: 18.32 KB (gzip: 3.48 KB) - 17.76 KB에서 +0.56 KB
161
+
162
+ ### Breaking Changes
163
+ - **ColumnDefinition.fixed 제거**: 개별 컬럼의 `fixed` 속성 제거
164
+ - **GridOptions.fixedOptions 사용**: RealGrid 스타일의 통합 API로 전환
165
+
166
+ ### 마이그레이션 가이드
167
+ ```typescript
168
+ // 변경 전 (Phase 1-13)
169
+ columns: [
170
+ { field: 'id', header: 'ID', fixed: 'left' }, // ❌
171
+ ]
172
+
173
+ // 변경 후 (Phase 14)
174
+ columns: [
175
+ { field: 'id', header: 'ID' }, // fixed 속성 제거
176
+ ],
177
+ fixedOptions: {
178
+ colCount: 1 // 첫 번째 데이터 컬럼 고정
179
+ }
180
+ ```
181
+
182
+ ---
183
+
184
+ ## [0.7.1] - 2025-02-03
185
+
186
+ ### 추가 - Phase 13: Summary/Aggregation
187
+
188
+ #### 기본 기능
189
+ - **GridSummary 모듈 추가** (380줄): 데이터 집계 핵심 모듈
190
+ - **5가지 내장 함수**: `sum`, `avg`, `count`, `min`, `max`
191
+ - **커스텀 함수 지원**: 사용자 정의 집계 함수
192
+ - **Map 기반 캐싱**: 효율적인 계산 및 성능 최적화
193
+ - **Number Formatting**: Locale 지원 숫자 포맷팅
194
+
195
+ #### Footer Summary 렌더링
196
+ - **Footer DOM 요소**: Fixed left 및 scrollable footer 지원
197
+ - **GridRenderer.renderFooter()**: Footer 행 렌더링 메서드
198
+ - **createFooterCell()**: Summary 셀 생성 및 포맷팅
199
+ - **자동 업데이트**: 데이터 변경 시 자동 재계산
200
+
201
+ #### API 메서드
202
+ - `getSummaryValue(field)`: 특정 필드의 집계값 조회
203
+ - `getSummaryValues()`: 모든 집계값을 객체로 반환
204
+ - `refreshSummary()`: 수동 집계 새로고침
205
+
206
+ #### 타입 정의
207
+ - `SummaryFunction`, `SummaryConfig`, `FooterSummaryOptions` 타입 추가
208
+ - `ColumnDefinition.summary`: 컴럼별 Summary 설정
209
+ - `GridOptions.footerSummary`: Footer Summary 옵션
210
+ - `GridContext`: Summary 메서드 추가
211
+
212
+ #### CSS 스타일링
213
+ - **_footer.css** 추가 (139줄): Footer Summary 전용 스타일
214
+ - Footer row, cell 기본 스타일링
215
+ - Alignment, custom className 지원
216
+ - Dark theme 지원
217
+ - Special styles: `velox-footer-cell--total`, `--average`, `--count`
218
+
219
+ #### 데모 페이지
220
+ - `examples/phase13-demo.html`: 3개 데모 시나리오
221
+ - `docs/demos/summary-demo.html`: Sales Analytics 대시보드 데모
222
+ - `docs/index.html`: Summary 데모 링크 추가
223
+
224
+ #### 문서화
225
+ - README.md: Summary API 및 사용 예제 추가
226
+ - TypeScript 타입 완전 문서화
227
+
228
+ ### 번들 크기
229
+ - UMD: 80.71 KB (gzip: 20.76 KB) - 71.35 KB에서 증가
230
+ - ESM: 111.12 KB (gzip: 25.63 KB) - 98.05 KB에서 증가
231
+ - CSS: 17.76 KB (gzip: 3.45 KB) - 15.38 KB에서 증가
232
+
233
+ ### 수정 - Edit 모드 안정화
234
+
235
+ #### 편집 중 셀 클릭 시 Edit 모드 유지
236
+ - 편집 중인 셀/input 클릭 시 edit 모드가 해제되던 문제 수정
237
+ - Document mousedown 이벤트로 외부 클릭 감지
238
+ - Cell 내부 클릭은 edit 모드 유지
239
+ - Interactive 요소(input, select, button, textarea) 클릭 시 기능 허용
240
+
241
+ #### Checkbox Editor 다중 클릭 지원
242
+ - Checkbox를 여러 번 클릭 시 edit 모드가 해제되던 문제 수정
243
+ - Checkbox editor는 change 시에도 edit 모드 유지
244
+ - 데이터 업데이트 후 edit 상태 복원 및 재렌더링
245
+ - 외부 클릭 시에만 edit 종료
246
+
247
+ #### Document 리스너 중복 방지
248
+ - `renderEditCell` 호출 시마다 document 리스너가 누적 등록되던 문제 수정
249
+ - `editModeCleanup` 변수로 이전 리스너 추적 및 정리
250
+ - 새 edit 시작 시 이전 리스너 자동 제거
251
+
252
+ #### 더블클릭 이벤트 처리
253
+ - 빠른 연속 클릭이 더블클릭으로 인식되어 edit 재시작되던 문제 수정
254
+ - 이미 editing 중인 셀의 더블클릭 무시
255
+ - `startEdit`에서 같은 셀 편집 중이면 무시
256
+
257
+ #### CheckBar 상태 변경 시 Edit 보존
258
+ - CheckBar의 checkbox 클릭 시 edit 모드가 해제되던 문제 수정
259
+ - `checkItem()` 호출 시 edit 상태 백업 및 복원
260
+ - Exclusive mode에서도 edit 상태 보존
261
+
262
+ #### Editor 타입별 중복 이벤트 제거
263
+ - Select editor: blur 이벤트 제거 (change와 중복)
264
+ - Checkbox editor: blur 이벤트 제거 (change와 중복)
265
+
266
+ ### 개선 - 개발 환경
267
+
268
+ #### 핫 리로드 지원
269
+ - `examples/dev.html` 추가: 소스 파일 직접 import
270
+ - Vite HMR로 실시간 코드 변경 반영
271
+ - `vite.config.ts`: 개발 서버 기본 페이지를 dev.html로 변경
272
+
273
+ ## [0.7.0] - 2025-01-29 ~ 2025-02-02
274
+
275
+ ### 정리 - 코드 정리 (2025-02-02)
276
+
277
+ #### 미사용 모듈 삭제
278
+ - `GridEventManager.ts` 삭제 (VeloxGrid 자체 구현 사용)
279
+ - `GridSelection.ts` 삭제 (VeloxGrid 자체 구현 사용)
280
+ - `GridVirtualScroll.ts` 삭제 (VeloxGrid 자체 구현 사용)
281
+ - `GridEditor.ts` 삭제 (VeloxGrid 자체 구현 사용)
282
+ - `GridKeyboard.ts` 삭제 (VeloxGrid 자체 구현 사용)
283
+ - `GridColumnManager.ts` 삭제 (VeloxGrid 자체 구현 사용)
284
+ - `GridDataManager.ts` 삭제 (VeloxGrid 자체 구현 사용)
285
+ - `GridState.ts` 삭제 (VeloxGrid 자체 구현 사용)
286
+ - `VeloxGrid.ts.backup` 삭제
287
+
288
+ #### 결과
289
+ - 빌드 모듈 수: 22개 → 15개 (-7개)
290
+ - 소스 파일: ~60KB 삭제
291
+ - Core 모듈 수: 10개로 정리
292
+
293
+ ### 추가 - Phase 12: 셀 기능 확장
294
+
295
+ #### Phase 12.1: 셀 검증
296
+ - 7가지 검증 타입을 가진 `GridValidator` 모듈 추가
297
+ - `required`, `min`, `max`, `minLength`, `maxLength`, `pattern`, `custom` 검증자 지원
298
+ - 오류 시 빨간 테두리와 툴팁으로 검증 UI 피드백 제공
299
+ - `onValidationError` 이벤트 추가
300
+ - 검증 오류 시 셀이 편집 모드 유지
301
+
302
+ #### Phase 12.2: 커스텀 셀 에디터
303
+ - 다양한 에디터 타입 생성을 위한 `GridEditorFactory` 모듈 추가
304
+ - 5가지 에디터 타입 지원: `text`, `number`, `select`, `date`, `checkbox`, `custom`
305
+ - 각 에디터 타입별 전용 CSS 스타일링
306
+ - `VeloxGrid.renderEditCell()` 메서드와 통합
307
+ - 모든 에디터에 키보드 지원 (Enter, Tab, Escape)
308
+
309
+ #### Phase 12.3: 셀 툴팁
310
+ - 호버 정보 표시를 위한 `GridTooltip` 모듈 추가
311
+ - 잘린 텍스트 감지를 위한 자동 툴팁
312
+ - 콜백 함수를 통한 커스텀 툴팁
313
+ - 뷰포트 인식을 통한 동적 위치 설정
314
+ - 구성 가능한 표시/숨김 지연 시간
315
+
316
+ ### 추가 - 코드 구조 최적화 (Phase 1-7)
317
+
318
+ #### VeloxGrid.ts 모듈화
319
+ - **VeloxGrid.ts**: 2,826줄 → 2,044줄 (27.7% 감소)
320
+ - **GridContext 인터페이스**: 모듈 간 통신을 위한 표준화된 인터페이스 정의
321
+ - **GridRenderer.ts**: 렌더링 담당 모듈 분리 (482줄)
322
+ - **GridFilterPopup.ts**: 필터 팝업 UI 모듈 분리 (191줄)
323
+ - **GridColumnMenu.ts**: 컬럼 메뉴 UI 모듈 분리 (188줄)
324
+ - **GridDragManager.ts**: 드래그 & 리사이즈 모듈 분리 (364줄)
325
+
326
+ #### CSS 모듈화
327
+ - 11개 파일로 CSS 분리 (유지보수성 향상)
328
+ - `_variables.css`, `_base.css`, `_header.css`, `_body.css`, `_selection.css`
329
+ - `_filter.css`, `_column-menu.css`, `_drag.css`, `_editor.css`, `_tooltip.css`, `_loading.css`
330
+ - 빌드 시 자동 번들링 (최종 CSS 파일 크기 변화 없음)
331
+
332
+ ### 변경
333
+ - 새 기능을 위한 TypeScript 타입 업데이트
334
+ - Phase 12 스타일로 CSS 강화 (~110줄 추가)
335
+
336
+ ### 수정
337
+ - 사용하지 않는 TypeScript 변수 제거 (깔끔한 빌드)
338
+ - `endEdit()` 메서드의 에디터 타입 처리 수정
339
+
340
+ ### 번들 크기
341
+ - UMD: 71.35 KB (gzip: 18.23 KB) - 58.94 KB에서 증가
342
+ - ESM: 98.05 KB (gzip: 22.32 KB) - 79.31 KB에서 증가
343
+ - CSS: 15.38 KB (gzip: 3.06 KB) - 12.26 KB에서 증가
344
+
345
+ ---
346
+
347
+ ## [0.6.0] - 2025-01-26
348
+
349
+ ### 추가 - Phase 10-11: 컬럼 & 행 기능
350
+
351
+ #### Phase 10: 컬럼 기능
352
+ - 드래그 앤 드롭을 통한 컬럼 재정렬
353
+ - 커스터마이징 가능한 항목이 있는 컬럼 메뉴(컨텍스트 메뉴)
354
+ - 동적으로 컬럼 고정/고정 해제
355
+ - `fixColumn()` 및 `reorderColumn()` API 메서드 추가
356
+
357
+ #### Phase 11: 행 기능
358
+ - 재정렬을 위한 행 드래그 앤 드롭
359
+ - `moveRow()` API 메서드 추가
360
+ - 행 드래그 핸들 UI 컴포넌트
361
+
362
+ ### 변경
363
+ - 주요 리팩토링: 핵심 컴포넌트 모듈화
364
+ - `GridHistory`, `GridSelection`, `GridVirtualScroll`, `GridEditor`, `GridKeyboard`, `GridColumnManager`, `GridDataManager` 모듈 추가
365
+ - 성능을 위한 컬럼 캐싱 시스템 구현
366
+ - `createRowBase()` 메서드로 행 생성 통합
367
+
368
+ ### 번들 크기
369
+ - UMD: 58.94 KB (gzip: 14.92 KB) - 50.50 KB에서 증가
370
+ - ESM: 79.31 KB (gzip: 17.52 KB)
371
+ - CSS: 12.26 KB (gzip: 2.50 KB)
372
+
373
+ ---
374
+
375
+ ## [0.5.0] - 2025-01-XX
376
+
377
+ ### 추가 - Phase 9: 키보드 & 실행 취소/다시 실행 향상
378
+
379
+ - Enter/Tab 내비게이션 (편집 후 다음 셀로 자동 이동)
380
+ - Delete 키 지원 (선택된 셀 내용 삭제)
381
+ - 실행 취소/다시 실행 기능 (Ctrl+Z / Ctrl+Y)
382
+ - 향상된 키보드 단축키 (Ctrl+C/V/X 처리)
383
+ - 방향 내비게이션을 위한 `endEditAndMove()` 메서드
384
+ - `deleteSelectedCells()` 및 `deleteSelectedRows()` 메서드
385
+
386
+ ### 변경
387
+ - 향상된 키보드 이벤트 처리
388
+ - 개선된 클립보드 작업
389
+
390
+ ### 번들 크기
391
+ - UMD: 50.50 KB (gzip: 12.90 KB)
392
+
393
+ ---
394
+
395
+ ## [0.4.0] - 2025-01-XX
396
+
397
+ ### 추가 - Phase 8: Excel 내보내기/가져오기
398
+
399
+ - SheetJS를 사용한 Excel 내보내기 (.xlsx)
400
+ - .xlsx 파일에서 Excel 가져오기
401
+ - CSV 내보내기/가져오기
402
+ - JSON 내보내기
403
+ - 내보내기 옵션 (헤더, 선택된 행, 필터된 행)
404
+ - `exportToExcel()`, `importFromExcel()`, `exportToCSV()`, `exportToJSON()` 메서드 추가
405
+
406
+ ### 변경
407
+ - SheetJS는 이제 선택적 외부 의존성
408
+ - 향상된 내보내기 유틸리티
409
+
410
+ ---
411
+
412
+ ## [0.3.0] - 2025-01-XX
413
+
414
+ ### 추가 - Phase 7: 선택 기능 향상
415
+
416
+ - 셀 선택 (개별 셀 선택)
417
+ - 블록 선택 (드래그하여 범위 선택, Excel 스타일)
418
+ - CheckBar 분리 (Selection과 독립적)
419
+ - 단독 체크 (라디오 버튼 스타일)
420
+ - 체크 가능 콜백 (조건부 체크 가능 여부)
421
+ - 키보드 내비게이션 (방향키)
422
+ - 클립보드 작업 (복사/붙여넣기/잘라내기)
423
+ - 로딩 상태 인디케이터
424
+ - 자동 컬럼 너비 조정 기능
425
+
426
+ ### 변경
427
+ - 다양한 스타일로 선택 시스템 향상
428
+ - 개선된 키보드 처리
429
+ - 포괄적인 선택 API 추가
430
+
431
+ ---
432
+
433
+ ## [0.2.0] - 2025-01-XX
434
+
435
+ ### 추가 - Phase 5-6: 가상 스크롤 & 컬럼 고급 기능
436
+
437
+ - 대용량 데이터셋을 위한 가상 스크롤 (100,000+ 행)
438
+ - 컬럼 고정 (왼쪽/오른쪽에 컬럼 고정)
439
+ - 헤더 필터 UI
440
+
441
+ ### 변경
442
+ - 대용량 데이터셋에 대한 성능 향상
443
+ - 향상된 컬럼 기능
444
+
445
+ ---
446
+
447
+ ## [0.1.0] - 2025-01-XX
448
+
449
+ ### 추가 - Phase 1-4: 핵심 기능
450
+
451
+ - 기본 테이블 렌더링
452
+ - 컬럼 정의 시스템
453
+ - 행 선택 (단일/다중)
454
+ - 정렬 (오름차순/내림차순)
455
+ - 필터링
456
+ - 인라인 편집
457
+ - 체크박스 기능
458
+
459
+ ### 기능
460
+ - 프레임워크 독립적 (Vanilla JS)
461
+ - TypeScript 지원
462
+ - Zero Dependencies (선택적 SheetJS 제외)
463
+ - 경량화 (~30KB 초기)
464
+
465
+ ---
466
+
467
+ ## 향후 릴리즈
468
+
469
+ ### [0.12.0] - 계획됨
470
+ - Column Group (다단계 헤더)
471
+ - Cell Merge (셀 병합)
472
+
473
+ ### [1.0.0] - 계획됨
474
+ - 안정적인 API
475
+ - 종합적인 문서
476
+ - 성능 최적화
477
+ - 접근성 개선 (ARIA, 스크린 리더 지원)
478
+ - 테마 시스템 (다크 테마 지원)
479
+
480
+ ---
481
+
482
+ [0.11.0]: https://github.com/bart-idea/velox-grid/compare/v0.10.0...v0.11.0
483
+ [0.10.0]: https://github.com/bart-idea/velox-grid/compare/v0.9.1...v0.10.0