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.
- package/CHANGELOG.md +483 -0
- package/README.md +755 -0
- package/dist/react/index.esm.js +3757 -0
- package/dist/react/index.esm.js.map +1 -0
- package/dist/react/index.js +7 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/react/VeloxGridReact.d.ts +33 -0
- package/dist/react/react/VeloxGridReact.d.ts.map +1 -0
- package/dist/react/react/index.d.ts +9 -0
- package/dist/react/react/index.d.ts.map +1 -0
- package/dist/react/react/types.d.ts +52 -0
- package/dist/react/react/types.d.ts.map +1 -0
- package/dist/react/react/useVeloxGrid.d.ts +23 -0
- package/dist/react/react/useVeloxGrid.d.ts.map +1 -0
- package/dist/react/types/index.d.ts +878 -0
- package/dist/react/types/index.d.ts.map +1 -0
- package/dist/types/core/GridColumnMenu.d.ts +35 -0
- package/dist/types/core/GridColumnMenu.d.ts.map +1 -0
- package/dist/types/core/GridDragManager.d.ts +83 -0
- package/dist/types/core/GridDragManager.d.ts.map +1 -0
- package/dist/types/core/GridEditorFactory.d.ts +33 -0
- package/dist/types/core/GridEditorFactory.d.ts.map +1 -0
- package/dist/types/core/GridFilterPopup.d.ts +43 -0
- package/dist/types/core/GridFilterPopup.d.ts.map +1 -0
- package/dist/types/core/GridHistory.d.ts +84 -0
- package/dist/types/core/GridHistory.d.ts.map +1 -0
- package/dist/types/core/GridRenderer.d.ts +73 -0
- package/dist/types/core/GridRenderer.d.ts.map +1 -0
- package/dist/types/core/GridSummary.d.ts +98 -0
- package/dist/types/core/GridSummary.d.ts.map +1 -0
- package/dist/types/core/GridTooltip.d.ts +43 -0
- package/dist/types/core/GridTooltip.d.ts.map +1 -0
- package/dist/types/core/GridValidator.d.ts +63 -0
- package/dist/types/core/GridValidator.d.ts.map +1 -0
- package/dist/types/core/VeloxGrid.d.ts +437 -0
- package/dist/types/core/VeloxGrid.d.ts.map +1 -0
- package/dist/types/core/index.d.ts +15 -0
- package/dist/types/core/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +16 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/react/VeloxGridReact.d.ts +40 -0
- package/dist/types/react/VeloxGridReact.d.ts.map +1 -0
- package/dist/types/react/index.d.ts +9 -0
- package/dist/types/react/index.d.ts.map +1 -0
- package/dist/types/react/types.d.ts +55 -0
- package/dist/types/react/types.d.ts.map +1 -0
- package/dist/types/react/useVeloxGrid.d.ts +54 -0
- package/dist/types/react/useVeloxGrid.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +878 -0
- package/dist/types/types/index.d.ts.map +1 -0
- package/dist/types/utils/data.d.ts +41 -0
- package/dist/types/utils/data.d.ts.map +1 -0
- package/dist/types/utils/dom.d.ts +13 -0
- package/dist/types/utils/dom.d.ts.map +1 -0
- package/dist/types/utils/export.d.ts +60 -0
- package/dist/types/utils/export.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +4 -0
- package/dist/types/utils/index.d.ts.map +1 -0
- package/dist/types/vue/index.d.ts +9 -0
- package/dist/types/vue/index.d.ts.map +1 -0
- package/dist/types/vue/types.d.ts +68 -0
- package/dist/types/vue/types.d.ts.map +1 -0
- package/dist/types/vue/useVeloxGrid.d.ts +49 -0
- package/dist/types/vue/useVeloxGrid.d.ts.map +1 -0
- package/dist/velox-grid.css +1 -0
- package/dist/velox-grid.esm.js +3387 -0
- package/dist/velox-grid.esm.js.map +1 -0
- package/dist/velox-grid.iife.js +14 -0
- package/dist/velox-grid.iife.js.map +1 -0
- package/dist/velox-grid.js +14 -0
- package/dist/velox-grid.js.map +1 -0
- package/dist/vue/index.esm.js +3754 -0
- package/dist/vue/index.esm.js.map +1 -0
- package/dist/vue/index.js +7 -0
- package/dist/vue/index.js.map +1 -0
- package/dist/vue/types/index.d.ts +878 -0
- package/dist/vue/types/index.d.ts.map +1 -0
- package/dist/vue/vue/index.d.ts +9 -0
- package/dist/vue/vue/index.d.ts.map +1 -0
- package/dist/vue/vue/types.d.ts +65 -0
- package/dist/vue/vue/types.d.ts.map +1 -0
- package/dist/vue/vue/useVeloxGrid.d.ts +21 -0
- package/dist/vue/vue/useVeloxGrid.d.ts.map +1 -0
- 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
|