@vmscloud/moz-ui-grid-vue 0.2.9 โ 0.2.10
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/dist/compat/MozGridVue.vue.d.ts +2 -0
- package/dist/compat/MozPivotVue.vue.d.ts +2 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +54 -43
- package/dist/style.css +1 -1
- package/docs/manual/reference.md +34 -14
- package/docs/manual/reference_vue.md +10 -3
- package/package.json +2 -2
package/docs/manual/reference.md
CHANGED
|
@@ -6,6 +6,12 @@
|
|
|
6
6
|
|
|
7
7
|
> ๐ **์ฌ์ฉ ์์ ์ฝ๋๋ ๋ณ๋ ํ์ผ**: [examples.md](examples.md) โ Sub-API๋ณ ์ฌ์ฉ, Reactive React ํตํฉ, ์ด๋ฒคํธ, ์ ํ ๋ชจ๋, Excel I/O ๋ฑ ์ฝ 30๊ฐ ์๋๋ฆฌ์ค
|
|
8
8
|
|
|
9
|
+
## ๋ฐํ์ ์ผ๋ฐ ์ต์
|
|
10
|
+
|
|
11
|
+
`await grid.setRuntimeOptions({ timeZone, preventKeyEdit, rowHeightChangeThreshold, migrateConfig })`๋ ์ง์ ํ ํค๋ง ๊ฐฑ์ ํฉ๋๋ค. ๋ช
์์ `undefined`๋ ๊ฐ๊ฐ ์๊ฐ๋ ๋ฏธ์ง์ , `true`, `2`, ์ฝ๋ฐฑ ์์์ผ๋ก ๋๋๋ฆฝ๋๋ค. React/Vue `coreConfig`์์๋ ์ด ํค์ ๋ณ๊ฒฝยท์ ๊ฑฐ๋ ๊ณตํต ์ค์ ํ์์ ๊ฐ์ ์ธ์คํด์ค์ ์ ์ฉํฉ๋๋ค. ์ด๋ฆฐ ํธ์ง์ ๊ธฐ์กด ์ค์ ์ผ๋ก ๋จผ์ ํ์ ํ๋ฉฐ ํ์ ๋ถ๊ฐ ์ ๋ณ๊ฒฝ์ ๊ฑฐ์ ํฉ๋๋ค. ๋์ด ์๊ณ๊ฐ ๋ณ๊ฒฝ์ ์ธก์ ๋ ๋์ด๋ฅผ ์ง์ฐ์ง ์๊ณ ๋ค์ ์ธก์ ๋ถํฐ ์ ์ฉํฉ๋๋ค. `preventKeyEdit`๋ ๊ธฐ์กด ์ต์
์๋ฏธ๋ง ๋ฐ๊พธ๋ฉฐ keyFields identity ์ด์ ์ ์ ๊ณตํ์ง ์์ต๋๋ค.
|
|
12
|
+
|
|
13
|
+
`keyFields`, `enableReferCache`, `engine`, `useWorker`, `workerFactory`, `undoStack` ๋ฑ ์์ฑ/์์ ๊ถ ๊ฒฝ๊ณ์ runtime ์ง์์ ๋ปํ์ง ์์ต๋๋ค. ์ค์ ์ธ์คํด์ค ๊ต์ฒด ์์๋ ์ด๋ํฐ๊ฐ `GridChrome.captureReinitStateAsync()`๋ฅผ ๊ธฐ๋ค๋ฆฐ ๋ค ์ด์ ์ธ์คํด์ค๋ฅผ ํ๊ธฐํฉ๋๋ค. ๋๊ธฐ `captureReinitState()`๋ ๊ธฐ์กด ์ง์ ํธ์ถ์์ฉ์ผ๋ก ๋จ์ต๋๋ค.
|
|
14
|
+
|
|
9
15
|
## ๋ ์ง ์๊ฐ๋ ๊ณ์ฝ (`timeZone`)
|
|
10
16
|
|
|
11
17
|
```ts
|
|
@@ -21,7 +27,7 @@ await grid.io.fromExcel(legacyFile, { timeZone: 'UTC' });
|
|
|
21
27
|
- ๋ ์ง๋ง ํ์ํ๋ mask๋ **์๊ฐ ๊ฐ์ ์๋ฅด์ง ์์ต๋๋ค**. XLSX ์์๋ถ์ ์ยท๋ถยท์ดยท๋ฐ๋ฆฌ์ด๊ฐ ์ ์ง๋ฉ๋๋ค. ์์์ ๋ ์ง ๋ฌธ์์ด์ ํธ์คํธ ์์กด ํ์ฑ์ ํ์ง ์๊ณ ์๋ฌธ์ผ๋ก ๋จ๊น๋๋ค.
|
|
22
28
|
- DST ํด์์ Temporal `compatible`: ์ค๋ณต ์๊ฐ์ **๋ ์ด๋ฅธ instant**, ์กด์ฌํ์ง ์๋ ์๊ฐ์ **gap ๊ธธ์ด๋งํผ ์์ผ๋ก** ์ด๋ํฉ๋๋ค. ๋ฐ๋ผ์ DST ์ค๋ณต ์๊ฐ์ ๋ instant๋ฅผ Excel serial๋ง์ผ๋ก ๊ตฌ๋ถํ ์ ์์ต๋๋ค. ํ์ํ๋ฉด UTC IO override๋ฅผ ์ฌ์ฉํ์ธ์.
|
|
23
29
|
- ์๋ชป๋ zone(๋น ๋ฌธ์์ด ํฌํจ)์ `RangeError`์
๋๋ค. UTC๋ ๋ธ๋ผ์ฐ์ zone์ผ๋ก ์กฐ์ฉํ ํด๋ฐฑํ์ง ์์ต๋๋ค.
|
|
24
|
-
-
|
|
30
|
+
- ์ฝ์ด์ `await grid.setRuntimeOptions({ timeZone })` ๋ฐ React/Vue provider/`coreConfig.timeZone` ๋ณ๊ฒฝ์ ๊ฐ์ ์ธ์คํด์ค์ ๋ฐ์๋ฉ๋๋ค. ๋ฐ์ดํฐ ์๋ณธยทdirtyยทundo ์์ ๊ถ์ ๊ต์ฒดํ์ง ์์ต๋๋ค. ๋ช
์์ `undefined`๋ ๊ธฐ์กด ์๊ฐ๋ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋๋๋ฆฝ๋๋ค.
|
|
25
31
|
|
|
26
32
|
## ๋ชฉ์ฐจ
|
|
27
33
|
|
|
@@ -202,6 +208,7 @@ grid.on('row:click', ({ rowIndex }) => {
|
|
|
202
208
|
| **์์ง** | | | |
|
|
203
209
|
| `engine` | `'native'` | `'native'` | ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์์ง. **`'aq'`(Arquero)๋ ์ ๊ฑฐ๋จ** โ ๋จ์ผ ์์ง(native)๋ง ๋จ์์ต๋๋ค(ITSM-2026-002190) |
|
|
204
210
|
| `useWorker` | `boolean` | `false` | Web Worker ์ฌ์ฉ ์ฌ๋ถ |
|
|
211
|
+
| `workerFactory` | `() => Worker` | โ | `useWorker: true`์์ ์ฑ์ด ๋น๋ํ ์ ๋ขฐ Worker entry ์์ฑ. `@vmscloud/moz-ui-grid-core/worker`์ `registerWorkerFunctions`์ `installProcessorWorker`๋ก ํจ์ยทloader๋ฅผ ์ ์ ์ผ๋ก ๋ฑ๋กํ๋ค. |
|
|
205
212
|
| **์ ์ฅ๋ณธ ํธํ** | | | |
|
|
206
213
|
| `migrateConfig` | `GridConfigMigrator` | โ | `applyConfig()` ๊ฐ ์ ๋ฒ์ ์ ์ฅ๋ณธ์ ๋ฐ์์ ๋ ํธ์ถํ ๋ณํ๊ธฐ. core ๋ **ํธ์ถ ์์ ยท์์๋ง** ์ฑ
์์ง๊ณ ๋ณํ ๋ด์ฉ์ ์๋น์ฒ(wrapper)๊ฐ ์์ (โ [์ ์ฅ ์คํค๋ง ๋ฒ์ ](#์ ์ฅ-์คํค๋ง-๋ฒ์ --gridconfigmigrator)) |
|
|
207
214
|
| **UI** | | | |
|
|
@@ -215,8 +222,8 @@ grid.on('row:click', ({ rowIndex }) => {
|
|
|
215
222
|
| `showStatusBar` | `boolean` | `true` | ์ํ ๋ฐ ํ์ |
|
|
216
223
|
| `summaryRow` | `'none' \| 'pinnedTop' \| 'pinnedBottom'` | `'none'` | ์ง๊ณ(์ดํฉ๊ณ) ํ ํ์ ์์น. `FieldDef.aggregate` ๊ฐ ์ง์ ๋ ์ปฌ๋ผ์ ๋ชจ์ core ๊ฐ ํ์ ์ง์ ์์ ํ๋ฉฐ, `getConfig()` ์ ์ค๋ ค ๋ ์ด์์ ํ๋ฆฌ์
์ผ๋ก ์ ์ฅยท๋ณต์๋๋ค |
|
|
217
224
|
| `alternatingRows` | `boolean` | `false` | ์ค๋ฌด๋ฌ ํ ์คํ์ผ |
|
|
218
|
-
| `rowStyle` | `string` | โ | ํ CSS
|
|
219
|
-
| `headerStyle` | `string` | โ | ํค๋ CSS
|
|
225
|
+
| `rowStyle` | `string` | โ | ํ ๋์ด alias: `height:Npx`๋ง ์ถ์ถ (์ผ๋ฐ CSS ์ ์ฉ ์๋). truthy `rowHeight`๊ฐ ์ฐ์ |
|
|
226
|
+
| `headerStyle` | `string` | โ | ํค๋ ๋์ด alias: `height:Npx`๋ง ์ถ์ถ (์ผ๋ฐ CSS ์ ์ฉ ์๋). truthy `headerHeight`๊ฐ ์ฐ์ |
|
|
220
227
|
| **์ปฌ๋ผ ๋์** | | | |
|
|
221
228
|
| `resizableColumns` | `boolean` | `true` | ์ปฌ๋ผ ๋ฆฌ์ฌ์ด์ฆ ํ์ฉ |
|
|
222
229
|
| `reorderableColumns` | `boolean` | `true` | ์ปฌ๋ผ ์ฌ์ ๋ ฌ ํ์ฉ |
|
|
@@ -251,6 +258,10 @@ grid.on('row:click', ({ rowIndex }) => {
|
|
|
251
258
|
|
|
252
259
|
#### ํ identity: ์
๋ฌด ํค์ ์๋ ID
|
|
253
260
|
|
|
261
|
+
- ๋ช
์ํ `keyFields`๋ ๋น์ด ์์ง ์์ ๋ฌธ์์ด ๋ฐฐ์ด์ด์ด์ผ ํฉ๋๋ค. `null`, ๋ฐฐ์ด ์๋ ๊ฐ, ๋น ๋ฌธ์์ด ์์, ๋น๋ฌธ์์ด ์์, sparse hole์ ์ด๊ธฐํ ์ค๋ฅ์
๋๋ค. ๋ฌธ์์ด์ trimํ์ง ์์ผ๋ฉฐ ๊ณต๋ฐฑ๋ ์ค์ ์๋ณธ ํ๋๋ช
์
๋๋ค. ํ๋ฉด `fields`์ ์๋ source-only ํค๋ ํ์ฉํฉ๋๋ค.
|
|
262
|
+
- ์๋ ID ์ ์ฒด ๊ต์ฒด ์ฑ๊ณต ์ ํยท์
ยท๊ทธ๋ฃน ์ ํ๊ณผ active/focus๋ฅผ ๋น์ฐ๋ฉฐ core `data:loaded` ๊ด์ฐฐ์๋ ์ด๊ธฐํ๋ ์ํ๋ฅผ ๋ด
๋๋ค. ์คํจํ๊ฑฐ๋ stale์ธ load ์๋ฃ๋ก ํ์ฌ ์ ํ์ ์ฌ์ด๊ธฐํํ์ง ์์ต๋๋ค. ๊ฐ์ ์ธ์
์ ์ ๋ ฌยทํํฐ์๋ ๋ค๋ฅธ ๊ฒฝ๊ณ์
๋๋ค.
|
|
263
|
+
- `captureDataSession()` / `restoreDataSession(token)`์ ์ผ๋ฐ loadData์ ๋ค๋ฅธ ์ธ์
์ด์ API์
๋๋ค. [์ง์ ๋ฒ์์ ์คํจ ์กฐ๊ฑด](runtime-contracts.md)์ ์ฐธ์กฐํ์ธ์.
|
|
264
|
+
|
|
254
265
|
- **์
๋ฌด ํค ๋ชจ๋**: `keyFields: ['id']`์ฒ๋ผ ๋น์ด ์์ง ์์ ๋ฐฐ์ด์ ๋ช
์ํฉ๋๋ค. `enableReferCache` ๊ธฐ๋ณธ๊ฐ์ `false`์ด๋ฉฐ, ์๋ ID ๋ชจ๋๊ฐ ๋๋ฝ๋ ์
๋ฌด ํค ๊ฐ์ ๋์ ์ฑ์์ฃผ์ง๋ ์์ต๋๋ค.
|
|
255
266
|
- **์๋ ID ๋ชจ๋**: `keyFields`๋ฅผ **์๋ต**ํ๊ณ `enableReferCache: true`๋ฅผ ์ง์ ํฉ๋๋ค. `keyFields: []`๋ ์บ์ ์ค์ ๊ณผ ๊ด๊ณ์์ด ์ด๊ธฐํ ์ค๋ฅ์ด๋ฉฐ, ํค ์๋ต + ์บ์ ๋ฏธ์ง์ /`false`๋ ๋น ๋ฐ์ดํฐ๋ถํฐ ์ด๊ธฐํ ์ค๋ฅ์
๋๋ค. ์์ฑ ํ `await grid.waitForReady()`๋ก ์ด๊ธฐํ ์ฑ๊ณต/์คํจ๋ฅผ ํ์ธํ์ธ์.
|
|
256
267
|
- ID๋ ๊ฐ์ด๋ ์๋ณธ ๊ฐ์ฒด๊ฐ ์๋๋ผ **ํ occurrence(๋ฐฐ์ด์ ๋ฑ์ฅํ ๊ฐ๊ฐ์ ํ)** ์ ์ํฉ๋๋ค. ๊ฐ์ด ๊ฐ๊ฑฐ๋ ๋์ผ ๊ฐ์ฒด๋ฅผ ๋ ๋ฒ ๋ฃ์ด๋ ์๋ก ๋ค๋ฅธ ID๊ฐ ๋ฐ๊ธ๋ฉ๋๋ค. frozen ์๋ณธ ๊ฐ์ฒด์๋ ID ํ๋๋ฅผ ์ฃผ์
ํ์ง ์์ต๋๋ค.
|
|
@@ -737,7 +748,7 @@ interface GridConfigExport {
|
|
|
737
748
|
|
|
738
749
|
`getConfig()` ๋ ์๋ ์ต์
์ **ํ์ฌ ๊ฐ**์ ์ฃ๊ณ `applyConfig()` ๋ ๋ฐํ์์ ์ค์ ๋ก ๋๋๋ฆฝ๋๋ค: `theme`, `rowHeight`(๊ฐ์ ์คํฌ๋กคยท๋์ ๋์ด ์บ์ยทMulti-Rowยท๊ณ ์ ํยท๋ณํฉ float ์ฌ๊ณ์ฐ), `headerHeight`, `rowSelection`/`cellSelection`/`cellSelectionImpliesRows`(๋ฐ๋ ๋๋ง ์ฌ์ค์ โ ํ์ฌ ์ ํ์ ๋น์), `rowHeader`(ํ ํค๋ ์ปฌ๋ผ ์ถ๊ฐ/์ ๊ฑฐ, ์ ํ ํธ๋ฆฌ๊ฑฐ๊ฐ ์๊ตฌํ๋ฉด ์๋ ํ์ฑ), `editable`(ํธ์ง๊ธฐยท๋ถ์ฌ๋ฃ๊ธฐยทDelete ๋จ์ถํค), `tooltipMode`, `alternatingRows`, `showHeader`, `resizableColumns`/`reorderableColumns`(ํค๋ ์ฌ๋น๋), `autoFitColumns`, `showStatusBar`, `summaryRow`, `locale`, `translations`.
|
|
739
750
|
|
|
740
|
-
|
|
751
|
+
`rowTemplate`์ `setRowTemplate(template | null)` ๋๋ `applyConfig`๋ก flat ๋ ์ด์์๋ง ๊ต์ฒดํ๊ณ ๋ฐ์ดํฐยท์๋ณธยท๋ณ๊ฒฝ ๊ธฐ๋กยทundo๋ฅผ ์ ์งํ๋ค. `reorderableRows`/`showDragHandleColumn`์ `dragDrop.setConfig` ๋๋ `applyConfig`๋ก ํ์ฌ ์ธ์คํด์ค์ ๋ฐ์ํ๋ค. ํ์ฌ ๊ฐ๋ง ๋ด๋ณด๋ด๊ณ ์ ์ฉํ์ง ์๋ ํค(๊ฐ์ด ๋ค๋ฅด๋ฉด ๊ฒฝ๊ณ `PS905`)๋ `keyFields`์ด๋ฉฐ, ํ ์๋ณ์ ๋ณ๊ฒฝ ์ ์ฑ
์ ๋ณ๋ ๊ฒํ ๋์์ด๋ค.
|
|
741
752
|
|
|
742
753
|
**ํผ๋ฒ ์๋ณต** (F01) โ flat โ pivot ์ง์
์ง์ ์ flat ๋ฐํ์ ์ํ(์ปฌ๋ผ ๋๋นยท๊ณ ์ ยท์จ๊นยท์์, ์ ๋ ฌ/ํํฐ, ํ ๊ทธ๋ฃน)๋ฅผ ์ ์ฅํด ๋์๋ค๊ฐ flat ๋ณต๊ท(`pivot.setMode('flat')`, pivotโflat `applyConfig`) ์ ๊ทธ๋๋ก ๋์ด๋ฆฌ๊ณ ์ปฌ๋ผ ๊ทธ๋ฃน ํค๋๋ ์ฌ๋น๋ํฉ๋๋ค. flat ์ ์ฅ๋ณธ์ ํจ๊ป ์ ์ฉํ๋ฉด ์ ์ฅ๋ณธ ๊ฐ์ด ์ด๊น๋๋ค.
|
|
743
754
|
|
|
@@ -961,6 +972,7 @@ PureSheet ์ธ์คํด์ค๋ ๊ธฐ๋ฅ๋ณ Sub-API ๋ค์์คํ์ด์ค๋ฅผ ์ ๊ณตํฉ๋
|
|
|
961
972
|
| `getSelectedCellIds()` | `{rowId, columnId}[]` | ์ ํ๋ ์
๋ชฉ๋ก (์
API ์๋ `selected()` ๊ฐ ์๋ค โ ํ API `grid.rows.selected()` ์ ๋ค๋ฆ) |
|
|
962
973
|
| `getSelectedCells()` | `SelectedCell[]` | ์ ํ๋ ์
์์ธ (ํ ํธ๋คยท๊ฐ ํฌํจ) |
|
|
963
974
|
| `getActiveCell()` | `SelectedCell \| null` | ํ์ฌ ํ์ฑ ์
โ `selection.getActiveCell()`๊ณผ ๊ฐ์(ํ๋ฉด ์๋ฆฌ ๊ธฐ์ค, ์๋ ํ ์ฐธ๊ณ ) |
|
|
975
|
+
| `getFocusCell()` | `SelectedCell \| null` | ๋
ผ๋ฆฌ์ ์ ํ ๋์ โ `selection.getFocusCell()`๊ณผ ๊ฐ์. [๋์ ยท๋ฐ์ดํฐ ์ธ์
์์ธ](runtime-contracts.md) |
|
|
964
976
|
| `getSelectedCellRowIds()` | `string[]` | ์ ํ๋ ์
์ด ๊ฑธ์น ํ rowId ๋ชฉ๋ก(์ค๋ณต ์ ๊ฑฐ) |
|
|
965
977
|
| `getSelectedCellColumnIds()` | `string[]` | ์ ํ๋ ์
์ด ๊ฑธ์น ์ปฌ๋ผ columnId ๋ชฉ๋ก(์ค๋ณต ์ ๊ฑฐ) |
|
|
966
978
|
| `getSelectedCellIndices()` | `number[]` | ์ ํ๋ ์
์ด ๊ฑธ์น ํ sourceIndex ๋ชฉ๋ก(์ค๋ณต ์ ๊ฑฐ) |
|
|
@@ -977,6 +989,7 @@ rowSelection(์ ํ๋ ํ๋ค)ยทcellSelection(์ ํ๋ ์
range)์ ์๋ก ๋ค
|
|
|
977
989
|
| `selection.getActiveRow()` | `RowHandle \| null` | ๋ง์ง๋ง ์ํธ์์ฉ(ํ/์
ํด๋ฆญ) ํ. ์ต์ปค ์์ผ๋ฉด ์ ํ ํ ๋ง์ง๋ง ํด๋ฐฑ. traversal ์ต์ปค. **ํด๋ฆญํ ํ(rowId)์ ๊ณ์ ๊ฐ๋ฆฌํจ๋ค** โ ์ ๋ ฌยทํํฐยท์ ๊ธฐ ๋ค์๋ ๊ฐ์ ํ(`getActiveCell`๊ณผ ๋ค๋ฅผ ์ ์์) |
|
|
978
990
|
| `selection.getSelectedCells()` | `{ row: RowHandle; columnId }[]` | ํ์ฌ ์ ํ๋ ์
๋ค |
|
|
979
991
|
| `selection.getActiveCell()` | `{ row: RowHandle; columnId } \| null` | ๋ง์ง๋ง ์ํธ์์ฉ ์
. traversal ์ปฌ๋ผ ์ ์ง์ฉ. ํ์ **ํ๋ฉด ์๋ฆฌ ๊ธฐ์ค** โ ์
์ ํ(`getSelectedCellIds`)ยทํ๋ฉด ๊ฐ์กฐยทํค๋ณด๋ ์ด๋๊ณผ ๊ฐ์ ํ์ด๋ค. ์ ๋ ฌยทํํฐยท๊ทธ๋ฃน/ํธ๋ฆฌ ์ ๊ธฐยท๋ํ
์ผ ํผ์นจยท๋๋๊ทธ ์ฌ์ ๋ ฌ๋ก ๊ทธ ์๋ฆฌ์ ๋ค๋ฅธ ํ์ด ์ค๋ฉด ๊ทธ ํ, ์๋ฆฌ๊ฐ ๊ทธ๋ฃน ๋ฐฐ๋ยท๋ํ
์ผ ํ์ด๊ฑฐ๋ ์ฌ๋ผ์ง๋ฉด `null`. ํ ์ ํ ๋ชจ๋(์
์ ํ ์์)์ ์ต์ปค์ ๊ณ ์ (pinned) ํ์ ํด๋ฆญํ ํ ๊ทธ๋๋ก |
|
|
992
|
+
| `selection.getFocusCell()` | `SelectedCell \| null` | ํ์ฌ ์ ํจํ ๋
ผ๋ฆฌ์ ์ ํ ๋์ `{ row: RowHandle, columnId }`. traversal ์ต์ปค์ธ `getActiveCell()`๊ณผ ๋ณ๊ฐ. ์ ์ฒด ์ ํ ์ด๊ฑฐยท๋น๋๊ธฐ fetch ์์ด ์กฐํํ๋ฉฐ ํ์ธ ๋ถ๊ฐ๋ฅํ identity๋ null. [์์ธ ๊ณ์ฝ](runtime-contracts.md) |
|
|
980
993
|
| `selection.getSelectedGroups()` | `{ groupId: string; rowIds: RowId[] }[]` | ์ ํ๋ ๊ทธ๋ฃน (`rowGroupConfig.selectable` โ [๊ทธ๋ฃน ๋ฐฐ๋ ์ ํ](#๊ทธ๋ฃน-๋ฐฐ๋-์ ํ-selectable)). `rowIds`๋ ๋ฆฌํ ๋ฉค๋ฒ ์ ์ฒด(์ ํ ๋ฌด๊ด, ์ค์ฒฉ์ด๋ฉด ํ์ ๋ฆฌํ ์ ๋ถ). ์ต์
์ด ๊บผ์ ธ ์์ผ๋ฉด `[]`. ํ ์ ํ ๊ฒฐ๊ณผ์ ๋ณ๊ฐ |
|
|
981
994
|
| `selection.selectGroupsByIds(groupIds, { addToExisting? })` | `string[]` | ๊ทธ๋ฃน์ ์ฝ๋๋ก ์ ํ โ ๋ฐฐ๋ ๋ณธ๋ฌธ ํด๋ฆญ๊ณผ ๊ฐ์ ์๋ฏธ([๊ทธ๋ฃน ๋ฐฐ๋ ์ ํ](#๊ทธ๋ฃน-๋ฐฐ๋-์ ํ-selectable)). ์ ์ฉ๋ groupId(์
๋ ฅ ์์, ์ค๋ณต ์ ๊ฑฐ)๋ฅผ ๋ฐํ. ํ๋ฉด์ ์๋ ๊ทธ๋ฃนยท์ต์
๊บผ์ง์ ๋ฌด์ |
|
|
982
995
|
| `selection.selectGroupsByViewIndices(viewIndices, { addToExisting? })` | `string[]` | viewIndex๋ก ๊ทธ๋ฃน ์ ํ. ๊ทธ๋ฃนํ์ด ์๋ ์์น๋ ๋ฌด์. ๋๋จธ์ง๋ `selectGroupsByIds`์ ๊ฐ์ |
|
|
@@ -1173,7 +1186,7 @@ grid.columns.update('amount', { header: 'ํ๋งค๊ธ์ก' }, { updateSnapshot: true
|
|
|
1173
1186
|
|
|
1174
1187
|
| ๋ฉ์๋ | ๋ฐํ | ์ค๋ช
|
|
|
1175
1188
|
|--------|------|------|
|
|
1176
|
-
| `addRow(row, idx?)` | `Promise<string \| number>` | ํ ์ถ๊ฐ (dirty) |
|
|
1189
|
+
| `addRow(row, idx?)` | `Promise<string \| number>` | ํ ์ถ๊ฐ (dirty). idx๋ ๊ธฐ์กด dirty ์ถ๊ฐ/์ญ์ ๋ฅผ ๋ฐ์ํ ๋ฐ์ดํฐ ์์น์ด๋ฉฐ ์ ๋ ฌยท๊ทธ๋ฃนยท๊ณ ์ ยท๋ํ
์ผ์ ํฌํจํ ํ๋ฉด ๋ฒํธ๊ฐ ์๋๋๋ค. ์๋ต ์ ๋์ ์ถ๊ฐํฉ๋๋ค. |
|
|
1177
1190
|
| `updateCell(row, field, value)` | `Promise<void>` | ํ ๊ฐ์ฒด๋ก ์
์์ (`enableReferCache` ํ์) |
|
|
1178
1191
|
| `updateCellById(id, field, value, sourceIndex?)` | `Promise<void>` | ID๋ก ์
์์ . ํธ์ถ์๊ฐ sourceIndex๋ฅผ ์๊ณ ์์ผ๋ฉด 4๋ฒ์งธ ์ธ์๋ก ์ ๋ฌํ์ฌ idMap fallback์ ํํผํ ์ ์์ |
|
|
1179
1192
|
| `updateCellByIndex(idx, field, value)` | `Promise<void>` | sourceIndex๋ก ์
์์ O(1) |
|
|
@@ -1402,7 +1415,7 @@ interface AggregateContext {
|
|
|
1402
1415
|
- `ctx.sum('x')` ๋ฑ์ ์์ง์ด ๊ณ์ฐํ ๊ฐ์ ์ฝ์ผ๋ฏ๋ก **๊ทธ ์กฐํฉ์ด ์ ์ธ๋ผ ์์ด์ผ** ํฉ๋๋ค โ ์ปฌ๋ผ ์ ์ `aggregate: 'sum'`(์จ๊น ์ปฌ๋ผ ๊ฐ๋ฅ) ๋๋ `rowGroupConfig.aggregates`์ `{ column: 'x', func: 'sum' }`. ์ ์ธ๋์ง ์์ ์กฐํฉ์ ์ฝ์ผ๋ฉด `PS312` ์ค๋ฅ์
๋๋ค(๊ทธ๋ฃนํ: `refresh()`๊ฐ ๊ฑฐ์ , ๊ณ ์ ํฉ๊ณ ํ: `console.error` ํ ๋น ๊ฐ). ๊ณ ์ ํฉ๊ณ ํ์ ์ปฌ๋ผ ์ ์ `aggregate`๋ง ์ ์ธ์ผ๋ก ๋ด
๋๋ค.
|
|
1403
1416
|
- ๋ค๋จ ๊ทธ๋ฃน์ ๋จ๊ณ๋ง๋ค ๊ทธ ๋จ๊ณ ์ง๊ณ๋ก ๋ค์ ๊ณ์ฐํ๊ณ , ํํฐยทํธ์งยทํ ์ถ๊ฐ ํ์๋ ๋ค์ ๊ณ์ฐํฉ๋๋ค.
|
|
1404
1417
|
- ๊ฒฐ๊ณผ๊ฐ `null`/`undefined`/`NaN`์ด๋ฉด ๊ทธ๋ฃนํ ์นธ์ ๋น ์นธ(๊ณ ์ ํฉ๊ณ ํ์ ๊ธฐ์กด null ํ๊ธฐ `-`). 0 ๋๋๊ธฐ๋ ํจ์์์ ์ฒ๋ฆฌํฉ๋๋ค.
|
|
1405
|
-
-
|
|
1418
|
+
- ์ผ๋ฐ Main ๋ชจ๋๋ ๊ธฐ์กด inline ํจ์๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค. Worker ๋ชจ๋๋ `{ workerFunction: 'app:aggregate', params: ... }` ์ฐธ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์ฑ Worker entry์ ์ ์ ์ผ๋ก ๋ฑ๋ก๋ ํจ์๊ฐ ์ค์ ๋ฉค๋ฒ `values`์ `ctx`๋ฅผ Worker ์์์ ๋ฐ์ต๋๋ค. ๋ฉ์ธ ๊ณ์ฐ ์๋ณตยทfallback์ ์๊ณ inline ํจ์ยท๋ฏธ๋ฑ๋ก ID๋ ์ค๋ฅ์
๋๋ค. ํจ์์ ๋ง์ง๋ง ์ธ์๋ descriptor์ `params`์
๋๋ค.
|
|
1406
1419
|
- ํจ์ํ ์ปฌ๋ผ aggregate๊ฐ ํ๋๋ผ๋ ์์ผ๋ฉด ์ ์ธ๋ ๋ฌธ์์ด ์ปฌ๋ผ aggregate๋ฅผ ๋ชจ๋(์จ๊นยท๋ฐฐ๋ ์๋ ์ปฌ๋ผ ํฌํจ) ๊ณ์ฐ๋ง ํฉ๋๋ค. ์ด ๊ฐ๋ค์ ๋ฐฐ๋ ๊ธ์์ ๋์ค์ง ์์ต๋๋ค.
|
|
1407
1420
|
- ํจ์ํ aggregate๋ ํ๋ฆฌ์
(JSON)์ ์ ์ฅ๋์ง ์๊ณ ์ฝ๋๊ฐ ์์ ํฉ๋๋ค โ `applyConfig`๊ฐ ์ง์ฐ๊ฑฐ๋ ๋ฌธ์์ด๋ก ๋ฐ๊พธ์ง ์์ผ๋ฉฐ, wrapper ์ง๊ณ ํญ์ "์ฌ์ฉ์ ํจ์"๋ก ํ์ํ๊ณ ๋ณ๊ฒฝ์ ๋ง์ต๋๋ค.
|
|
1408
1421
|
- **์ ํ ์์ญ ์ง๊ณ**(`rows.selectionAggregates()`ยท`selection:changed`์ `aggregates`ยท์ปจํ
์คํธ ๋ฉ๋ด): ํจ์ํ ์ปฌ๋ผ์ ๊ทธ ์ปฌ๋ผ ์
์ด ์ ํ๋ ํ๋ค์ **ํ๋์ ๊ทธ๋ฃน์ฒ๋ผ** ๋ณด๊ณ ํจ์๋ฅผ ์ ์ฉํฉ๋๋ค. `columns[]` ํญ๋ชฉ์ `aggregate: 'custom'`, `value` = ํจ์ ๊ฐ(`formattedValue`๋ ๊ทธ ์ปฌ๋ผ mask ์ ์ฉ), `count` = ์ซ์ ์
์(๊ธฐ์กด ์๋ฏธ)์
๋๋ค. `ctx.sum('x')` ๋ฑ์ ์ ํ ๋ฒ์์ `x` ์
์ด ์์ด๋(์จ๊น ์ปฌ๋ผ ํฌํจ) ์ ํ๋ **ํ** ๊ธฐ์ค์ด๊ณ `ctx.group`์ ์์ต๋๋ค. ์ฝ์ ์ ์๋ ์กฐํฉ์ ๊ณ ์ ํฉ๊ณ ํ๊ณผ ๊ฐ์ด ์ปฌ๋ผ ์ ์์ ๋ฌธ์์ด `aggregate`์ด๋ฉฐ, ๋ฏธ์ ์ธ ์กฐํฉ์ `console.error`(PS312) ํ ๋น ๊ฐ์
๋๋ค. ํ๋ฉด ๋ฐ ์ ํ ํยท๊ทธ๋ฃน/ํธ๋ฆฌ ๋ชจ๋(๋ฐ์ดํฐ ํ๋ง)ยทWorker ๋ชจ๋ ๋ชจ๋ ๊ฐ์ ๊ฐ์ด๊ณ , ์ปฌ๋ผ ์ ์ฒด ์ ํ(Ctrl+Space/Ctrl+A)์ ํ์ ์ค์ธ ์ ์ฒด ๋ฐ์ดํฐ ํ์ผ๋ก ๊ณ์ฐํฉ๋๋ค(์ด๋๋ง ํ์ ํ ๋ฒ ๋ฐ์ ์ต๋๋ค). `total`(ํฉ๊ณยทํ๊ท ยท๊ฐ์ยท์ต์ยท์ต๋)์ ๊ธฐ์กด๋๋ก **์ ํ ์
๊ฐ** ๊ธฐ์ค์
๋๋ค. wrapper ์ปจํ
์คํธ ๋ฉ๋ด๋ `custom`์ ํจ์ ๋ผ๋ฒจ ์์ด `ํค๋ ๊ฐ`๋ง ํ์ํฉ๋๋ค.
|
|
@@ -2425,7 +2438,7 @@ const unsub = row.subscribe(() => {
|
|
|
2425
2438
|
| `visible` | `boolean` | ๊ฐ์์ฑ ์ฌ๋ถ |
|
|
2426
2439
|
| `pinned` | `'top' \| 'bottom' \| null` | ๊ณ ์ ์ํ |
|
|
2427
2440
|
| `cssClass` | `string \| null` | CSS ํด๋์ค |
|
|
2428
|
-
| `height` | `number \| null` |
|
|
2441
|
+
| `height` | `number \| null` | ํ๋ณ ๋์ด(px). ๋ณธ๋ฌธยท๋ฐ์ดํฐ ๊ณ ์ ํ ๋ฐ ๊ฐ์ ์คํฌ๋กค ์ขํ์ ์ ์ฉ. `null`์ ๊ธฐ๋ณธ/์๋ ์ธก์ ๋์ด๋ก ๋ณต์ |
|
|
2429
2442
|
| `changedFields` | `string[] \| null` | ๋ณ๊ฒฝ๋ ํ๋ ๋ชฉ๋ก |
|
|
2430
2443
|
|
|
2431
2444
|
#### ์ฐ๊ธฐ ๋ฉ์๋
|
|
@@ -2487,6 +2500,7 @@ grid.off('cell:click', handler);
|
|
|
2487
2500
|
|
|
2488
2501
|
| ์ด๋ฒคํธ | ํ์ด๋ก๋ | ์ค๋ช
|
|
|
2489
2502
|
|--------|---------|------|
|
|
2503
|
+
| `tree:stateChanged` | `{ collapsedNodes: string[], source: 'user' \| 'api' }` | ๋ค์ดํฐ๋ธ ํธ๋ฆฌ ์ ๊ธฐยทํผ์น๊ธฐ ์๋ฃ ํ ์ต์ข
์ ํ ์ํ. ๋จ์ผ/์ ์ฒด/๊น์ด/๊ฒฝ๋ก ๋ฐ setState ๋ณต์์ ํฌํจํ๋ฉฐ ๊ฐ์ ์ํ๋ ํต์งํ์ง ์์. ์ฌ์ฉ์ ํด๋ฆญยทํค๋ณด๋๋ user, ๊ณต๊ฐ API๋ api. ๊ตฌ๋
๋ฐํ ํจ์๋ก ํด์ . |
|
|
2490
2504
|
| `row:click` | `{ row, rowId, viewIndex, sourceIndex, rowIndex, event }` | ํ ํด๋ฆญ. ์ขํ๋ ์๋ **์
ยทํ ์ด๋ฒคํธ ์ขํ** ์ฐธ์กฐ (`rowIndex`๋ ํ์ํธํ ๊ฐ โ ์๋ณธ ์์น ์๋) |
|
|
2491
2505
|
| `row:dblclick` | `{ row, rowIndex, event }` | (์์ฝ) ํ์ฌ ์ฝ๋ ๊ฒฝ๋ก์์๋ ๋ฐํ๋์ง ์์ โ `cell:dblclick`์ ์ฌ์ฉํ์ธ์ |
|
|
2492
2506
|
| `row:pinned` | `{ row, position }` | ํ ๊ณ ์ |
|
|
@@ -2867,7 +2881,7 @@ interface MasterDetailConfig {
|
|
|
2867
2881
|
|
|
2868
2882
|
- ์ ์งํ ๋๋ ๋ํ
์ผ ๋ด์ฉ์ `renderer`๋ก **๋ค์ ๊ทธ๋ฆฝ๋๋ค**(์ด์ cleanup ์คํ ํ ํธ์ถ) โ ๋ฐ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ํ๊ธฐ ์ํด์์
๋๋ค. ๋ํ
์ผ ์์ ์
๋ ฅ๊ฐยท์คํฌ๋กค ๊ฐ์ DOM ์ํ๋ ๋จ์ง ์์ต๋๋ค.
|
|
2869
2883
|
- `keyFields` ์์ด ์๋ ํ ID(`enableReferCache: true`)๋ฅผ ์ฐ๋ฉด `loadData`๋ง๋ค ID๊ฐ ์๋ก ๋ถ์ผ๋ฏ๋ก ์ฌ์กฐํ ๋ค์๋ ์ ํ๋๋ค. ์ฌ์กฐํ ํ์๋ ํผ์นจ์ ์ ์งํ๋ ค๋ฉด `keyFields`๋ฅผ ์ง์ ํ์ธ์.
|
|
2870
|
-
-
|
|
2884
|
+
- `visible:false`ยทCtrl+Hยท๋ฐ์ดํฐ ํ ๊ณ ์ ยท๊ทธ๋ฃน/ํธ๋ฆฌ ์ ํ์ผ๋ก ์ ๋ณด์ด๋ ๋์ ๋ํ
์ผ์ ํ์ํ์ง ์์ต๋๋ค. ๊ธฐ๋ณธ(`true`)์ ํ ํค์ ํผ์นจ ์ํ๋ฅผ ๊ธฐ์ตํ์ฌ ๋ค์ ๋ณด์ผ ๋ ๋ณต์ํ๊ณ , `false`๋ ๊ธฐ์กด์ฒ๋ผ ์ ์ต๋๋ค.
|
|
2871
2885
|
- `singleExpand: true`์ ํจ๊ป ์ฐ๋ฉด ๋ง์ง๋ง์ผ๋ก ํผ์น ํ ํ๋ง ์ ์ง๋ฉ๋๋ค.
|
|
2872
2886
|
|
|
2873
2887
|
### GroupConfig
|
|
@@ -3700,11 +3714,13 @@ interface PerformanceTiming {
|
|
|
3700
3714
|
|
|
3701
3715
|
### ๋ฐ์ดํฐ ๋ก๋ โ LoaderConfig
|
|
3702
3716
|
|
|
3717
|
+
> ํ์ฌ Worker๋ ๋ฐํ์ ์์ URL import๊ฐ ์๋๋ผ **์ฑ Worker entry์ ์ ์ loader map**์ ์ฌ์ฉํฉ๋๋ค. `module`์ map์ ์ ํํ ํค์
๋๋ค. [Worker ๋ฑ๋กยท๋ฐ์ดํฐ ์ธ์
๊ณ์ฝ](runtime-contracts.md)์ ๋จผ์ ํ์ธํ์ธ์.
|
|
3718
|
+
|
|
3703
3719
|
Web Worker์์ ์ง์ ๋ฐ์ดํฐ๋ฅผ ํ์นญํ๋ ๋ชจ๋์ ์ง์ ํฉ๋๋ค. ๋ฉ์ธ์ค๋ ๋ ๋น๊ฒฝ์ ๋ก UI ๋ธ๋กํน ์์.
|
|
3704
3720
|
|
|
3705
3721
|
```typescript
|
|
3706
3722
|
interface LoaderConfig {
|
|
3707
|
-
/**
|
|
3723
|
+
/** ์ฑ Worker entry์ loaders map์ ๋ฑ๋กํ ํค (URL์ด๋ฉด ๋ฌธ์์ด ํํ๊ณผ ์ผ์นํด์ผ ํจ) */
|
|
3708
3724
|
module: URL | string;
|
|
3709
3725
|
/** ์ด๊ธฐ ํ๋ผ๋ฏธํฐ (์ง๋ ฌํ ๊ฐ๋ฅํ plain object). ๋ฐํ์์ grid.updateLoaderParams()๋ก ๊ฐฑ์ */
|
|
3710
3726
|
params?: Record<string, unknown>;
|
|
@@ -3724,8 +3740,10 @@ export default class MyLoader extends DataLoader {
|
|
|
3724
3740
|
// ๊ทธ๋ฆฌ๋ ์์ฑ
|
|
3725
3741
|
new PureSheet(container, {
|
|
3726
3742
|
enableReferCache: true,
|
|
3743
|
+
useWorker: true,
|
|
3744
|
+
workerFactory: () => new Worker(new URL('./app-grid.worker.ts', import.meta.url), { type: 'module' }),
|
|
3727
3745
|
loader: {
|
|
3728
|
-
module:
|
|
3746
|
+
module: 'app:data', // worker entry: installProcessorWorker({ loaders: { 'app:data': MyLoader } })
|
|
3729
3747
|
params: { authToken: 'abc' },
|
|
3730
3748
|
},
|
|
3731
3749
|
fields: [...],
|
|
@@ -4347,7 +4365,7 @@ interface GridConfigSnapshot {
|
|
|
4347
4365
|
**ํ์ฌ ์ง๋ ฌํ ์ ๋๋ ์ต์
(ํฅํ ์ถ๊ฐ ์ฌ์ง)**:
|
|
4348
4366
|
- `engine`, `useWorker`, `dynamicRowHeights`, `rowHeightChangeThreshold`
|
|
4349
4367
|
- `enableReferCache`, `preventKeyEdit`
|
|
4350
|
-
- `rowStyle`, `headerStyle` (
|
|
4368
|
+
- `rowStyle`, `headerStyle` (`height:Npx` ์ถ์ถ alias โ ์ผ๋ฐ CSS ์ ์ฉ ์๋)
|
|
4351
4369
|
- `PivotConfig.sorts` / `PivotConfig.filters` (ํผ๋ฒ ์ ์ฉ โ `GridConfigSnapshot.sorts/filters` ์ ๋ณ๊ฐ)
|
|
4352
4370
|
|
|
4353
4371
|
---
|
|
@@ -5006,7 +5024,7 @@ interface CellAttributeParams {
|
|
|
5006
5024
|
|
|
5007
5025
|
### DataLoader ํด๋์ค โ ์์ปค ๊ธฐ๋ฐ ์ปค์คํ
๋ฐ์ดํฐ ๋ก๋ฉ
|
|
5008
5026
|
|
|
5009
|
-
`
|
|
5027
|
+
์ฑ Worker entry์ `installProcessorWorker({ loaders })` map์ ๋ฑ๋กํ๋ ํด๋์ค์ ๋ฒ ์ด์ค. ์์ปค ์์์ ์คํ๋๋ฏ๋ก DOM/localStorage ์ ๊ทผ์ ๋ถ๊ฐํ๊ณ , `fetch`/`WebSocket`/`XMLHttpRequest` ๋ฑ ๋คํธ์ํฌ API๋ ์ฌ์ฉ ๊ฐ๋ฅ.
|
|
5010
5028
|
|
|
5011
5029
|
```typescript
|
|
5012
5030
|
abstract class DataLoader {
|
|
@@ -5046,8 +5064,10 @@ export default class MyLoader extends DataLoader {
|
|
|
5046
5064
|
// ๊ทธ๋ฆฌ๋ ์์ฑ
|
|
5047
5065
|
new PureSheet(container, {
|
|
5048
5066
|
enableReferCache: true,
|
|
5067
|
+
useWorker: true,
|
|
5068
|
+
workerFactory: () => new Worker(new URL('./app-grid.worker.ts', import.meta.url), { type: 'module' }),
|
|
5049
5069
|
loader: {
|
|
5050
|
-
module:
|
|
5070
|
+
module: 'app:data', // worker entry: installProcessorWorker({ loaders: { 'app:data': MyLoader } })
|
|
5051
5071
|
params: { authToken: getToken() },
|
|
5052
5072
|
},
|
|
5053
5073
|
fields: [...],
|
|
@@ -5058,7 +5078,7 @@ await grid.updateLoaderParams({ authToken: newToken });
|
|
|
5058
5078
|
await grid.refreshLoaderData();
|
|
5059
5079
|
```
|
|
5060
5080
|
|
|
5061
|
-
>
|
|
5081
|
+
> **Worker loader ๊ฒฝ๊ณ**: `LoaderConfig.module`์ ํด๋์ค๋ ์์ URL์ ์ ๋ฌํด ๋์ ์คํ์ํค๋ ๋ฐฉ์์ ์ง์ํ์ง ์์ต๋๋ค. ์ฑ์์ loader ํด๋์ค๋ฅผ ์ ์ ์ผ๋ก importํ๊ณ ๋ฑ๋กํ์ธ์. `InlineDataLoader`๋ผ๋ export์ ์กด์ฌ๊ฐ ๋ฐํ์ ํด๋์ค ์ ๋ฌ ์ง์์ ๋ปํ์ง ์์ต๋๋ค.
|
|
5062
5082
|
|
|
5063
5083
|
---
|
|
5064
5084
|
|
|
@@ -251,6 +251,9 @@ type MozGridCoreProps =
|
|
|
251
251
|
|
|
252
252
|
### ์ด๊ธฐํยทํธ์งยทXLSX ์ค์ ์ ๋ฌ
|
|
253
253
|
|
|
254
|
+
- `sourceRevision?: unknown`์ wrapper prop์
๋๋ค. ์ธ๋ถ ๋ฐ์ดํฐ์
๊ต์ฒด ๋๋ง ๋ฐ๊พธ๋ฉฐ `coreConfig` ์์ ๋ฃ์ง ์์ต๋๋ค. `ready`์ ๋ ๋ฒ์งธ ์ธ์ `chrome.getReadyContext()`์์ `{ reason, dataRestored, sourceRevision }`๋ฅผ ํ์ธํ์ธ์. [์ธ์
๋ณด์กดยทWorkerยท๋์ API ์์ธ](runtime-contracts.md).
|
|
255
|
+
- ๊ฐ์ ์์ค ์ฌ์์ฑ์ ์ง์๋๋ Main flat/tree ์ธ์
์ baselineยทdirtyยทundo/redo๋ฅผ ๋ณต์ํ ๋ค ready๋ฅผ ๋ค์ ๋ฐ์์ํต๋๋ค. Worker/active pivot(๊นจ๋ํ๊ฑฐ๋ ๋ฏธ๋ก๋ ์ํ๋ ํฌํจ)ยท๋ฏธ์ง์ custom history๋ ์ฐจ๋จ๋ฉ๋๋ค. busy capture ์คํจ๋ ๊ธฐ์กด ์ธ์คํด์ค๋ฅผ ์ ์งํ์ง๋ง **์๋ ๋๊ธฐยท์ฌ์๋ํ์ง ์์ต๋๋ค**. ์ ์ฑ
ํ๋๋ ๋ณ๋ ๊ฒฐ์ ์ฌํญ์
๋๋ค.
|
|
256
|
+
|
|
254
257
|
- **ํ ์๋ณ ์ค์ ์ ํ์**์
๋๋ค. ์
๋ฌด ํค๊ฐ ์์ผ๋ฉด `coreConfig.keyFields`๋ฅผ ๋ช
์ํ๊ณ , ํค ์์ด ์์ํ๋ ค๋ฉด `coreConfig.enableReferCache: true`๋ฅผ ์ค์ ํ์ธ์(๊ธฐ๋ณธ `false`). ๋ ์ค์ ๋ชจ๋ ์๋ตํ๊ฑฐ๋ `keyFields: []`๋ฅผ ์ ๋ฌํ๋ฉด ์ด๊ธฐํํ ์ ์์ต๋๋ค. ์๋ณธ `id` ํ๋๋ฅผ ์๋์ผ๋ก ํค๋ก ์ ํํ์ง ์์ต๋๋ค. ์๋ ID ์๋ช
๊ณผ ํ ๊ฐ์ฒด ์ฐธ์กฐ ๊ณ์ฝ์ [์ฝ์ด Config](reference.md#config-์ค์ )๋ฅผ ์ฐธ์กฐํ์ธ์.
|
|
255
258
|
- ๋ด์ฅ ์ซ์/๋ ์ง์๊ฐ ํธ์ง๊ธฐ๋ ๋ณ๋ ๋ํผ prop์ด ์๋๋ผ `coreConfig.fields[].editor`๋ก ์ ๋ฌํฉ๋๋ค. ์๋ ์ค์ ์ ๊ธฐ์กด `coreConfig`์ ๋ณํฉํ์ธ์.
|
|
256
259
|
|
|
@@ -606,6 +609,9 @@ const xAxisLabelFormatter = (label: string) => (label.startsWith('#') ? label.sl
|
|
|
606
609
|
|
|
607
610
|
### ์ค๋น ์๋ฃยท์ฌ์์ฑยท์์ ์ฝ๋ฐฑ
|
|
608
611
|
|
|
612
|
+
- ๋์ด alias `rowStyle`/`headerStyle` ๋ณ๊ฒฝ๋ ๋์ผ ์ธ์คํด์ค์ ์ ์ฉํฉ๋๋ค. ์ผ๋ฐ CSS๊ฐ ์๋๋ผ ๊ธฐ์กด `height:Npx` ์ถ์ถ๋ง ์ง์ํฉ๋๋ค. wrapper์ ์ซ์ ๋์ด ๊ธฐ๋ณธ๊ฐ์ 32์ด๋ฏ๋ก ์๋ต/undefined์์๋ alias๊ฐ ๊ฐ๋ ค์ง๋๋ค. ๋ช
์์ ์ซ์ 0์ ๊ธฐ์กด PS007 ๊ฒฝ๊ณ ํ ์ ํจํ alias๋ฅผ ์ฌ์ฉํ์ง๋ง, 0์ ๋จ๊ธฐ๊ณ alias๋ง ์ ๊ฑฐํด ์ ํจ ๋์ด๊ฐ 0์ด๋ฉด ๊ธฐ์กด applyConfig ๊ฒ์ฆ(PS903)์ผ๋ก ๊ฑฐ์ ํฉ๋๋ค. ์ซ์ ๋์ด์ alias๋ฅผ ํจ๊ป ์๋ต/undefined๋ก ๋๋๋ฆฌ๋ฉด 32๋ก ๋ณต์ํฉ๋๋ค. ๊ฐ๋ ค์ง alias๋ง ๋ณ๊ฒฝํ๋ฉด imperative ๋์ด๋ฅผ ๋ฎ์ง ์์ต๋๋ค.
|
|
613
|
+
- ์ผ๋ฐ ๋ฐํ์ ์ค์ (`rowHeight`, `headerHeight`, `editable`, `rowTemplate`, ํ drag ๋ฑ)์ ๊ณตํต coordinator๊ฐ ์งํ ์์
์ข
๋ฃ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์ต์ ์์ฒญ์ผ๋ก ๋ณํฉํด ๋์ผ ์ธ์คํด์ค์ ์ ์ฉํฉ๋๋ค. ์ด ๊ฒฝ์ฐ ์๋ณธยทdirtyยทundo๋ฅผ ์ ์งํ๊ณ `ready`๋ฅผ ๋ค์ ๋ฐ์์ํค์ง ์์ต๋๋ค. ์ค์ ์ธ์คํด์ค ๊ต์ฒด์ capture/restore ๊ฒฝ๋ก๋ ๋ณ๊ฐ์
๋๋ค. `reconcileCoreConfig` ๊ฒฐ๊ณผ์ ์ ํ์ `completion: Promise<void>`๋ ์ค์ ์ ์ฉ ์๋ฃ/์คํจ๋ฅผ ๋ํ๋ด๋ฉฐ ์ด๋ํฐ๊ฐ ์ด๋ฅผ ๊ธฐ๋ค๋ฆฝ๋๋ค.
|
|
614
|
+
|
|
609
615
|
- `@ready(grid, chrome)`๋ ํ์ฌ ์ธ์คํด์ค์ ์ฝ์ด ์ด๊ธฐํ์ reinit ์ํ ๋ณต์ ๋ค์ ๋ฐ์ํฉ๋๋ค. unmount๋ ๋ค์ reinit์ผ๋ก ํ๊ธฐ๋ ์ธ์คํด์ค์ ๋๊ธฐ ์์
์ ๋ณต์ยทemit์ ์ด์ด์ ์คํํ์ง ์์ต๋๋ค. ํ์ฌ ์ธ์คํด์ค์ ์ด๊ธฐํ ์คํจ๋ ์ฝ์ ์ค๋ฅ๋ก ๋ณด๊ณ ํ๊ณ `ready`๋ฅผ ๋ฐ์์ํค์ง ์์ต๋๋ค.
|
|
610
616
|
- ์ค์ watch๋ mount ํ
์์์ **๋๊ธฐ ๋ฑ๋ก**๋ฉ๋๋ค. ์ฒซ `ready`๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋์์ prop ๋ณ๊ฒฝ๋ ๋ฐ์ํ๋ฉฐ, unmount ์ Vue์ ์ปดํฌ๋ํธ scope์ ํจ๊ป ํด์ ๋ฉ๋๋ค.
|
|
611
617
|
- `ready()`๋ `waitForReady()`์ ์ด๊ธฐํ ์๋ฃ๋ฅผ ๋ปํ๋ฉฐ `coreConfig.data`๋ก ์์๋ ๋ชจ๋ ๋น๋๊ธฐ ๋ฐ์ดํฐ ๋ก๋ฉ ์๋ฃ๋ฅผ ๋ณด์ฅํ์ง ์์ต๋๋ค. ๋ฐ์ดํฐ ์๋ฃ๋ `@data:loaded` ๋๋ ์ง์ ํธ์ถํ `await grid.loadData(rows)`๋ก ํ์ธํ์ธ์.
|
|
@@ -785,9 +791,10 @@ g.chrome // ์์ GridChrome | null (legacy ํธํ)
|
|
|
785
791
|
|--------|----------|------|
|
|
786
792
|
| `ready` | `async ready(): Promise<void>` | ์ฝ์ด `waitForReady` ๋๊ธฐ โ `isDataLoaded=true` โ ์นด์ดํธ/ํธํฐ/๋น ์ํ ๊ฐฑ์ . ์์ฑ ํ 1ํ ํธ์ถ |
|
|
787
793
|
| `on` | `on(event, handler): Unsubscribe` | ์ฝ์ด ์ด๋ฒคํธ ๊ตฌ๋
+ chrome ๊ตฌ๋
๋ชฉ๋ก์ ์ถ์ (destroy ์ ์๋ ์ ๋ฆฌ). `Unsubscribe` ๋ฐํ |
|
|
788
|
-
| `reconcileCoreConfig` | `reconcileCoreConfig(next: PureSheetConfig): { reinitRequired: boolean }` | ๋ณ๊ฒฝ๋ ์ฝ์ด ์ค์ ํค๋ง ํ๊ฒ setter๋ก ์ ์ฉ. ๋ฐํ์ setter ์๋ ํค(rowHeight/headerHeight/keyFields/selection/editable/mode/locale/...) ๋ณ๊ฒฝ ์ `{ reinitRequired: true }` ๋ฐํ โ ์ด๋ํฐ๊ฐ ์ํ ๋ณด์กด reinit. disposed ์ early-return |
|
|
789
|
-
| `
|
|
790
|
-
| `
|
|
794
|
+
| `reconcileCoreConfig` | `reconcileCoreConfig(next: PureSheetConfig, sourceRevision?: unknown): { reinitRequired: boolean }` | ๋ณ๊ฒฝ๋ ์ฝ์ด ์ค์ ํค๋ง ํ๊ฒ setter๋ก ์ ์ฉ. ๋ฐํ์ setter ์๋ ํค(rowHeight/headerHeight/keyFields/selection/editable/mode/locale/...) ๋ณ๊ฒฝ ์ `{ reinitRequired: true }` ๋ฐํ โ ์ด๋ํฐ๊ฐ ์ํ ๋ณด์กด reinit. disposed ์ early-return |
|
|
795
|
+
| `getReadyContext` | `getReadyContext(): Readonly<GridChromeReadyContext>` | `{ reason: 'initial' \| 'configuration' \| 'source-replacement', dataRestored: boolean, sourceRevision?: unknown }`. ๋ณต์ ์ฑ๊ณต ์ฌ๋ถ์ ๋ฐ์ดํฐ ๊ต์ฒด ๊ฒฝ๊ณ ํ์ธ |
|
|
796
|
+
| `captureReinitState` | `captureReinitState(next?: PureSheetConfig, sourceRevision?: unknown): GridChromeReinitState` | destroy ์ ์ core/layoutยทdataSessionยทwrapper ์ํ ์บก์ฒ. ๊ฐ์ ์์ค capture ์คํจ๋ throwํ์ฌ ๊ธฐ์กด ์ธ์คํด์ค๋ฅผ ๋ณด์กด. ์์ค ๊ต์ฒด๋ ์ด์ ์ธ์
capture ์๋ต |
|
|
797
|
+
| `restoreReinitState` | `async restoreReinitState(state): Promise<void>` | ์ ์ธ์คํด์ค์์ `applyConfig(core)` ํ `columnFormat`(base) โ `customCell`(override) ์ฌ์ ์ฉ. ์คํจ๋ rejectํ๋ฉฐ ์ฑ๊ณต ready๋ฅผ ๋ด๋ณด๋ด์ง ์์. dataSession์ ํฌํจํ GridChromeReinitState๋ฅผ ์ GridChrome ์์ฑ์์ ๋ค ๋ฒ์งธ ์ธ์๋ก๋ ์ ๋ฌ |
|
|
791
798
|
| `getCoreConfig` | `getCoreConfig(base?: PureSheetConfig): PureSheetConfig` | INPUT ํํ์ ํ์ฌ ์ฝ์ด ์ค์ ๋น๋(`update:coreConfig` ์ญ๋ฅ์ฉ). ๋ผ์ด๋ธ mode/group/pivot ํค๋ง ์ค๋ฒ๋ ์ด, `fields`/`data` ์ฐธ์กฐ ๋ณด์กด, sorts/filters ๋ทฐ ์ํ ๋ฏธํฌํจ |
|
|
792
799
|
| `onConfigChange` | `onConfigChange(cb: () => void): Unsubscribe` | ๋ด๋ถ ์ฝ์ด ๋ณ๊ฒฝ(pivotConfig + groupConfig.columns) ๊ตฌ๋
โ `update:coreConfig` ์ญ๋ฅ. UI ์ต์
/์ฐจํธ/์ปค์คํ
์
์ ๋ฏธํฌํจ. ๋ฐํ unsub๋ destroy ์ถ์ |
|
|
793
800
|
| `syncAppliedConfig` | `syncAppliedConfig(next: PureSheetConfig): void` | reconcile ๊ธฐ์ค์ (`appliedConfig`) ๊ฐ์ ๋๊ธฐํ โ ์งํ prop-back reconcile์ no-op์ผ๋ก(์ค๋ณต ํผ๋ฒ ์ฌ๊ณ์ฐ ํํผ) |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vmscloud/moz-ui-grid-vue",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.10",
|
|
4
4
|
"description": "MozGrid - Vue 3 wrapping library for @vmscloud/moz-ui-grid-core",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"type": "module",
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
},
|
|
82
82
|
"dependencies": {
|
|
83
83
|
"@vmscloud/moz-ui-grid-core": "^0.1.47",
|
|
84
|
-
"@vmscloud/moz-ui-grid-wrapper": "^0.1.
|
|
84
|
+
"@vmscloud/moz-ui-grid-wrapper": "^0.1.23",
|
|
85
85
|
"bytebuffer": "^5.0.1",
|
|
86
86
|
"crypto-js": "^4.2.0",
|
|
87
87
|
"echarts": "^5.5.0",
|