@vmscloud/moz-ui-grid-vue 0.2.6 โ 0.2.8
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/MozGrid.vue.d.ts +3 -1
- package/dist/compat/MozGridVue.vue.d.ts +10 -2
- package/dist/compat/MozPivotVue.vue.d.ts +10 -2
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +63 -19
- package/dist/locale/MozGridLocaleProvider.d.ts +20 -0
- package/dist/stories/ConfigProvider.stories.d.ts +5 -0
- package/dist/style.css +1 -1
- package/docs/manual/reference.md +70 -6
- package/docs/manual/reference_vue.md +36 -1
- package/package.json +3 -3
package/docs/manual/reference.md
CHANGED
|
@@ -6,6 +6,23 @@
|
|
|
6
6
|
|
|
7
7
|
> ๐ **์ฌ์ฉ ์์ ์ฝ๋๋ ๋ณ๋ ํ์ผ**: [examples.md](examples.md) โ Sub-API๋ณ ์ฌ์ฉ, Reactive React ํตํฉ, ์ด๋ฒคํธ, ์ ํ ๋ชจ๋, Excel I/O ๋ฑ ์ฝ 30๊ฐ ์๋๋ฆฌ์ค
|
|
8
8
|
|
|
9
|
+
## ๋ ์ง ์๊ฐ๋ ๊ณ์ฝ (`timeZone`)
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
const grid = new PureSheet(container, { fields, data, timeZone: 'Asia/Seoul' });
|
|
13
|
+
await grid.io.saveExcelToFile({ suggestedName: 'seoul.xlsx' });
|
|
14
|
+
await grid.io.fromExcel(legacyFile, { timeZone: 'UTC' });
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
- ๋ฏธ์ง์ : ๊ธฐ์กด ๋ธ๋ผ์ฐ์ ๋ก์ปฌ ๋ ์ง ํ์์ UTC Excel serial IO๋ฅผ ์ ์งํฉ๋๋ค. `locale`๋ก ์๊ฐ๋๋ฅผ ์ถ๋ก ํ์ง ์์ต๋๋ค.
|
|
18
|
+
- ๋ช
์: ๋ด์ฅ ๋ ์ง mask์ ๋ ์ง ๊ธฐ๋ณธ ํ์, XLSX serial export/import/preview๊ฐ ๊ฐ์ IANA ์๊ฐ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ธ๋ผ์ฐ์ /OS ์๊ฐ๋์ ๋ฌด๊ดํฉ๋๋ค. ์ฌ์ฉ์ ํจ์ mask/์ปค์คํ
๋ ๋๋ฌ์ ์ถ๋ ฅ์ ๋ณ๊ฒฝํ์ง ์์ต๋๋ค.
|
|
19
|
+
- `Date`, ์ซ์ timestamp, `Z` ๋๋ offset์ด ์๋ ISO ๋ฌธ์์ด์ **์ ๋ ์๊ฐ**์
๋๋ค. Offset ์๋ ISO ๋ ์ง/์๊ฐ(`2026-09-01 00:00:00`, `2026-09-01T00:00:00`), ๋ ์ง๋ง(`2026-09-01`), compact ๋ฌธ์์ด(`20260901`, `20260901000000`)์ **์ค์ ์๊ฐ๋์ ๋ฒฝ์๊ณ ๊ฐ**์
๋๋ค. ํธ์คํธ ๋ก์ปฌ `new Date(string)`๋ก ๋จผ์ ํด์ํ์ง ์์ต๋๋ค.
|
|
20
|
+
- Excel์ ์๊ฐ๋ ์ ๋ณด๋ฅผ ์ ์ฅํ์ง ์์ต๋๋ค. ๊ฐ์ ํ์ผ์ ์๋ณตํ๋ ค๋ฉด ๊ฐ์ zone์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. `2026-08-31T15:00:00Z`๋ Seoul์์ `2026-09-01 00:00:00`, serial `46266`์
๋๋ค. ๋ฏธ์ง์ /UTC export๋ ๊ธฐ์กด `46265.625`์
๋๋ค.
|
|
21
|
+
- ๋ ์ง๋ง ํ์ํ๋ mask๋ **์๊ฐ ๊ฐ์ ์๋ฅด์ง ์์ต๋๋ค**. XLSX ์์๋ถ์ ์ยท๋ถยท์ดยท๋ฐ๋ฆฌ์ด๊ฐ ์ ์ง๋ฉ๋๋ค. ์์์ ๋ ์ง ๋ฌธ์์ด์ ํธ์คํธ ์์กด ํ์ฑ์ ํ์ง ์๊ณ ์๋ฌธ์ผ๋ก ๋จ๊น๋๋ค.
|
|
22
|
+
- DST ํด์์ Temporal `compatible`: ์ค๋ณต ์๊ฐ์ **๋ ์ด๋ฅธ instant**, ์กด์ฌํ์ง ์๋ ์๊ฐ์ **gap ๊ธธ์ด๋งํผ ์์ผ๋ก** ์ด๋ํฉ๋๋ค. ๋ฐ๋ผ์ DST ์ค๋ณต ์๊ฐ์ ๋ instant๋ฅผ Excel serial๋ง์ผ๋ก ๊ตฌ๋ถํ ์ ์์ต๋๋ค. ํ์ํ๋ฉด UTC IO override๋ฅผ ์ฌ์ฉํ์ธ์.
|
|
23
|
+
- ์๋ชป๋ zone(๋น ๋ฌธ์์ด ํฌํจ)์ `RangeError`์
๋๋ค. UTC๋ ๋ธ๋ผ์ฐ์ zone์ผ๋ก ์กฐ์ฉํ ํด๋ฐฑํ์ง ์์ต๋๋ค.
|
|
24
|
+
- ์ฝ์ด์์๋ ์์ฑ ์ค์ ์
๋๋ค. React/Vue provider ๋ฐ `coreConfig.timeZone` ๋ณ๊ฒฝ์ ๊ธฐ์กด ์ํ๋ณด์กด ์ฌ์์ฑ ๊ฒฝ๋ก๋ก ๋ฐ์๋ฉ๋๋ค.
|
|
25
|
+
|
|
9
26
|
## ๋ชฉ์ฐจ
|
|
10
27
|
|
|
11
28
|
- [๊ฐ์](#๊ฐ์)
|
|
@@ -221,6 +238,7 @@ grid.on('row:click', ({ rowIndex }) => {
|
|
|
221
238
|
| `undoStack` | `UndoStack` | โ | ์ธ๋ถ UndoStack ์ฃผ์
|
|
|
222
239
|
| **๊ตญ์ ํ** | | | |
|
|
223
240
|
| `locale` | `string` | ์๋ ๊ฐ์ง | ๋ก์ผ์ผ (์: `'ko-KR'`) |
|
|
241
|
+
| `timeZone` | `string` | ๋ฏธ์ง์ | IANA ์๊ฐ๋(์: `'Asia/Seoul'`). ๋ ์ง ํ์์ XLSX import/export์ ๊ณตํต ์ ์ฉ. ๋ฏธ์ง์ ์ ๊ธฐ์กด ๋ก์ปฌ ํ์ยทUTC IO ์ ์ง |
|
|
224
242
|
| `translations` | `PartialTranslationMap` | โ | ๋ฒ์ญ ์ค๋ฒ๋ผ์ด๋ |
|
|
225
243
|
| **ํฌ๋งทํ
** | | | |
|
|
226
244
|
| `formatRow` | `FormatRowCallback` | โ | ํ ํฌ๋งทํ
์ฝ๋ฐฑ (config์์ ์ค์ ์ `_config` ํค๋ก ์๋ ๋ฑ๋ก) |
|
|
@@ -858,7 +876,7 @@ PureSheet ์ธ์คํด์ค๋ ๊ธฐ๋ฅ๋ณ Sub-API ๋ค์์คํ์ด์ค๋ฅผ ์ ๊ณตํฉ๋
|
|
|
858
876
|
|
|
859
877
|
### grid.cells โ ์
์ ํ API
|
|
860
878
|
|
|
861
|
-
์
= ํ(rowId/viewIndex) + ์ด(columnId)์ ๊ต์ฐจ์ . ์ฐ๊ธฐ(select)์ ์กฐํ(
|
|
879
|
+
์
= ํ(rowId/viewIndex) + ์ด(columnId)์ ๊ต์ฐจ์ . ์ฐ๊ธฐ(select*)์ ์กฐํ(getSelected*)๋ฅผ ์ ๊ณตํ๋ค.
|
|
862
880
|
|
|
863
881
|
#### ์ ํ (์
โ ์ฐ๊ธฐ)
|
|
864
882
|
|
|
@@ -874,7 +892,9 @@ PureSheet ์ธ์คํด์ค๋ ๊ธฐ๋ฅ๋ณ Sub-API ๋ค์์คํ์ด์ค๋ฅผ ์ ๊ณตํฉ๋
|
|
|
874
892
|
|
|
875
893
|
| ๋ฉ์๋ | ๋ฐํ | ์ค๋ช
|
|
|
876
894
|
|--------|------|------|
|
|
877
|
-
| `
|
|
895
|
+
| `getSelectedCellIds()` | `{rowId, columnId}[]` | ์ ํ๋ ์
๋ชฉ๋ก (์
API ์๋ `selected()` ๊ฐ ์๋ค โ ํ API `grid.rows.selected()` ์ ๋ค๋ฆ) |
|
|
896
|
+
| `getSelectedCells()` | `SelectedCell[]` | ์ ํ๋ ์
์์ธ (ํ ํธ๋คยท๊ฐ ํฌํจ) |
|
|
897
|
+
| `getActiveCell()` | `SelectedCell \| null` | ํ์ฌ ํ์ฑ ์
|
|
|
878
898
|
| `getSelectedCellRowIds()` | `string[]` | ์ ํ๋ ์
์ด ๊ฑธ์น ํ rowId ๋ชฉ๋ก(์ค๋ณต ์ ๊ฑฐ) |
|
|
879
899
|
| `getSelectedCellColumnIds()` | `string[]` | ์ ํ๋ ์
์ด ๊ฑธ์น ์ปฌ๋ผ columnId ๋ชฉ๋ก(์ค๋ณต ์ ๊ฑฐ) |
|
|
880
900
|
| `getSelectedCellIndices()` | `number[]` | ์ ํ๋ ์
์ด ๊ฑธ์น ํ sourceIndex ๋ชฉ๋ก(์ค๋ณต ์ ๊ฑฐ) |
|
|
@@ -1274,8 +1294,13 @@ await grid.rowGroup.setConfig({
|
|
|
1274
1294
|
์ ์ฅ๋ณธ 0.4 โ 0.5 ๋ง์ด๊ทธ๋ ์ด์
์ ์ ๊ทธ๋ฃน ์ ๋ ฌ `column`/๊ฐ์ฒด `by`๋ฅผ ์ ๋ชจ๋ธ๋ก ๋ณํํ๊ณ ,
|
|
1275
1295
|
ํผ๋ฒ `SortState.byValue`๋ ๋์ผํ scalar ๊ฐ ๊ทธ๋๋ก `by`๋ก ๊ฐ๋ช
ํฉ๋๋ค. ํผ๋ฒ ์ง๊ณ/์ ๋ ฌ ์๋ฏธ๋ ๋ณํ์ง ์์ต๋๋ค.
|
|
1276
1296
|
|
|
1277
|
-
๊ทธ๋ฃน ๋ด๋ถ ๋ฐ์ดํฐ ํ์ ์ผ๋ฐ ์ ๋ ฌ์ ๋ณ๋๋ก ์ ์ง๋ฉ๋๋ค.
|
|
1278
|
-
|
|
1297
|
+
๊ทธ๋ฃน ๋ด๋ถ ๋ฐ์ดํฐ ํ์ ์ผ๋ฐ ์ ๋ ฌ์ ๋ณ๋๋ก ์ ์ง๋ฉ๋๋ค. ์ผ๋ฐยท๊ณ์ฐ ํ๋ยท๊ทธ๋ฃนยทํธ๋ฆฌยทํผ๋ฒ ์ ๋ ฌ์์
|
|
1298
|
+
null/undefined๋ **์ค๋ฆ์ฐจ์(ASC)์์๋ ์, ๋ด๋ฆผ์ฐจ์(DESC)์์๋ ๋ค**์ ์์นํฉ๋๋ค.
|
|
1299
|
+
๋ ๊ฐ์ด ๋ชจ๋ null/undefined์ด๋ฉด ๋๋ฅ ์ด๋ฉฐ, ๋ค์ ์ ๋ ฌ ํค๋ฅผ ๋น๊ตํ๊ณ ๋ชจ๋ ํค๊ฐ ๊ฐ์ผ๋ฉด ๊ธฐ์กด ์์๋ฅผ ์ ์งํฉ๋๋ค.
|
|
1300
|
+
๋น ๋ฌธ์์ด(`''`), ๊ณต๋ฐฑ ๋ฌธ์์ด, `0`, `false`๋ null/undefined๋ก ์ทจ๊ธํ์ง ์์ต๋๋ค.
|
|
1301
|
+
`sortKey`๊ฐ ์์ผ๋ฉด ์๋ณธ ๊ฐ์ด ์๋ ๋ณํ๋ ํค๋ฅผ ๋น๊ตํฉ๋๋ค.
|
|
1302
|
+
์ด๋ ์ด์ ASC ๋ค/DESC ์ ๊ธฐ๋ณธ์ ์ฑ
์ ๋ณ๊ฒฝ์ด๋ฉฐ, ์ ์ฅ๋ ์ ๋ ฌ ๋ฐฉํฅ์๋ ์ ๊ธฐ๋ณธ์ ์ฑ
์ด ์ ์ฉ๋ฉ๋๋ค.
|
|
1303
|
+
wrapper ์ ๋ ฌ ํจ๋์ **๊ทธ๋ฃน ์ ๋ ฌ โ ์ ๋ ฌ ๊ธฐ์ค**์์๋
|
|
1279
1304
|
โ๊ทธ๋ฃน ์ด๋ฆโ์ ์ ํํ ์ ์์ต๋๋ค. ์ ๋ ฌ ๊ท์น์ด ์์ ๋์ ์ ๊ท์น์ ์ถ๊ฐํ ๋ ๋ชจ๋
|
|
1280
1305
|
**๊ทธ๋ฃน ์ด๋ฆ ์ค๋ฆ์ฐจ์**์ด ๊ธฐ๋ณธ์
๋๋ค. ๊ธฐ์กด์ ์ ์ฅํ ํ์ ํ ๊ฐ์ยท์ง๊ณ ์ ๋ ฌ์ ๊ทธ๋๋ก ์ ์ง๋ฉ๋๋ค.
|
|
1281
1306
|
|
|
@@ -1626,6 +1651,8 @@ interface InvalidCell {
|
|
|
1626
1651
|
|
|
1627
1652
|
#### Export ์ต์
โ `ExcelExportOptions`
|
|
1628
1653
|
|
|
1654
|
+
`timeZone?: string`์ ํด๋น ์์
๋ง ์ฝ์ด ์๊ฐ๋๋ณด๋ค ์ฐ์ ํฉ๋๋ค. `saveExcelToFile`๊ณผ Worker ๊ฒฝ๋ก์๋ ์ ์ฉ๋ฉ๋๋ค.
|
|
1655
|
+
|
|
1629
1656
|
| ํ๋ | ํ์
| ๊ธฐ๋ณธ๊ฐ | ์ค๋ช
|
|
|
1630
1657
|
|------|------|--------|------|
|
|
1631
1658
|
| `scope` | `'all' \| 'visible' \| 'selected'` | `'all'` | ๋ฐ์ดํฐ ๋ฒ์ |
|
|
@@ -1699,6 +1726,8 @@ interface InvalidCell {
|
|
|
1699
1726
|
|
|
1700
1727
|
#### Import ์ต์
โ `ExcelImportOptions`
|
|
1701
1728
|
|
|
1729
|
+
`timeZone?: string`์ ํด๋น ํ์ผ์ ๋ ์ง serial ํด์ ์๊ฐ๋๋ฅผ ์ฌ์ ์ํฉ๋๋ค. ์์ UTC ํ์ผ์ `{ timeZone: 'UTC' }`๋ก ๊ฐ์ ธ์ค์ธ์. `previewExcel(file, { timeZone })`๋ ๊ฐ์ ์ต์
์ ์ง์ํฉ๋๋ค.
|
|
1730
|
+
|
|
1702
1731
|
##### ๊ธฐ๋ณธ ์ต์
|
|
1703
1732
|
|
|
1704
1733
|
| ํ๋ | ํ์
| ๊ธฐ๋ณธ๊ฐ | ์ค๋ช
|
|
|
@@ -2244,12 +2273,37 @@ grid.off('cell:click', handler);
|
|
|
2244
2273
|
|--------|---------|------|
|
|
2245
2274
|
| `cell:click` | `{ row, columnId, value, event }` | ์
ํด๋ฆญ |
|
|
2246
2275
|
| `cell:dblclick` | `{ row, columnId, value, event }` | ์
๋๋ธํด๋ฆญ |
|
|
2247
|
-
| `cell:change` | `{ rowIndex, rowId, columnId, oldValue, newValue }` | ์
๊ฐ ๋ณ๊ฒฝ. `rowId`๋ ์ ๋ ฌ/ํํฐ ๋ฌด๊ด ์์ ์๋ณ์
|
|
2276
|
+
| `cell:change` | `{ rowIndex, rowId, columnId, oldValue, newValue }` | ์๋ํฐ ํธ์ง์ ๋ฐ๋ฅธ ์
๊ฐ ๋ณ๊ฒฝ. APIยท๋ถ์ฌ๋ฃ๊ธฐยทundo/redo๋ฅผ ๋ชจ๋ ๊ด์ฐฐํ๋ ์ด๋ฒคํธ๊ฐ ์๋. `rowId`๋ ์ ๋ ฌ/ํํฐ ๋ฌด๊ด ์์ ์๋ณ์ |
|
|
2277
|
+
| `data:changed` | `DataMutationEvent` | ChangeTracker์ ๋ฐ์๋ ์
๋ฐ์ดํฐ ๋ณ๊ฒฝ. ์๋ํฐ ์๋ช
์ฃผ๊ธฐ์ ๋
๋ฆฝ์ ์ธ ์ถ๊ฐ ์ด๋ฒคํธ (์๋ ๊ณ์ฝ ์ฐธ์กฐ) |
|
|
2278
|
+
| `changes:changed` | `{ hasChanges, addedCount, deletedCount }` | ๊ธฐ์กด dirty ์ํ ์์ฝ. ์ ๊ท ํ ์
์์ ๋ ๋ฐํํ๋ฉฐ ์์ธ ๊ฐ์ `data:changed`๋ก ๊ตฌ๋
|
|
|
2248
2279
|
| `cell:beforeEdit` | `{ ..., cancel() }` | ํธ์ง ์์ ์ (์ทจ์ ๊ฐ๋ฅ) |
|
|
2249
2280
|
| `cell:editCommitting` | `{ ..., cancel() }` | ํธ์ง ์ปค๋ฐ ์ (์ทจ์ ๊ฐ๋ฅ) |
|
|
2250
2281
|
| `cell:editCommitted` | `{ rowIndex, rowId, dataIndex, columnId, oldValue, newValue }` | ํธ์ง ์ปค๋ฐ ์๋ฃ. `rowId` ํฌํจ (์์ ๋์ผ) โ boolean ์
์ฆ์ ํ ๊ธ๋ ์ด ์ด๋ฒคํธ๋ก ๋ฐํ๋์ด ์ฒดํฌ๋ฐ์ค cascade ํธ๋ฆฌ๊ฑฐ๋ก ์ฐ์ธ๋ค |
|
|
2251
2282
|
| `cell:tooltip` | `CellTooltipPayload` (์๋ ์ฐธ์กฐ) | ์
ยท์ปฌ๋ผ ํค๋ ํธ๋ฒ ์ ํดํ ํ์ ์์ฒญ (`tooltipMode` ๋ก ๋ฐํ ์ ์ด) |
|
|
2252
2283
|
|
|
2284
|
+
**`DataMutationEvent` โ ์
๋ฐ์ดํฐ ๋ณ๊ฒฝ ๊ณ์ฝ**
|
|
2285
|
+
|
|
2286
|
+
```ts
|
|
2287
|
+
interface DataMutationEvent {
|
|
2288
|
+
source: 'api' | 'edit' | 'paste' | 'undo' | 'redo' | 'import';
|
|
2289
|
+
changes: Array<{
|
|
2290
|
+
rowId: string | number;
|
|
2291
|
+
field: string;
|
|
2292
|
+
oldValue: CellValue;
|
|
2293
|
+
newValue: CellValue;
|
|
2294
|
+
sourceIndex?: number;
|
|
2295
|
+
}>;
|
|
2296
|
+
}
|
|
2297
|
+
```
|
|
2298
|
+
|
|
2299
|
+
- `oldValue`๋ ์ต์ด ์๋ณธ์ด ์๋๋ผ **๋ฐ๋ก ์ด์ ์ ํจ ๊ฐ**, `newValue`๋ ์ด๋ฒ ์์
์ด ๋ฐ์ํ ๊ฐ์
๋๋ค. Undo๋ ์ด์ ๊ฐ์ผ๋ก ๋๋์๊ฐ๋ ๋ฐฉํฅ์ผ๋ก ์ ๋ฌํฉ๋๋ค.
|
|
2300
|
+
- `field`๋ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ ํ๋์
๋๋ค. ํ์ ์ปฌ๋ผ IDยทํ view index์ ํผ๋ํ์ง ๋ง์ธ์. `sourceIndex`๋ ํธ์ถ์๊ฐ ์๋ ๊ฒฝ์ฐ๋ง ํฌํจํฉ๋๋ค.
|
|
2301
|
+
- ์ผ๋ฐ ์
๋ช
๋ น์ ๋ณ๊ฒฝ 1๊ฐ๋ฅผ ๋ฐํํฉ๋๋ค. Undo batch๋ ํ๋์ undo ๋จ์์ด์ง๋ง ์
์ด๋ฒคํธ๋ฅผ ํ๋๋ก ํฉ์น์ง๋ ์์ต๋๋ค. `beginBulkImport`/`endBulkImport` ๊ตฌ๊ฐ์ ์ค์ ๋ณ๊ฒฝ ์์๋ฅผ ์ ์งํ `source: 'import'` ๋ณ๊ฒฝ ๋ฌถ์์ ์ข
๋ฃ ์ ํ ๋ฒ ๋ฐํํฉ๋๋ค.
|
|
2302
|
+
- ํ์ฌ ๊ฐ๊ณผ `Object.is`๋ก ๊ฐ์ ์ฐ๊ธฐ๋ ์ด๋ฒคํธยทdirty ๋ฒ์ ยทundo ๊ธฐ๋ก์ ๋ง๋ค์ง ์์ต๋๋ค. ์ญ์ ์์ ํ์ ๋ํ ์ฐ๊ธฐ๋ ๋ฐ์ดํฐ ์ด๋ฒคํธ๋ฅผ ๋ง๋ค์ง ์์ต๋๋ค.
|
|
2303
|
+
- ์ด ์ด๋ฒคํธ๋ **์
๊ฐ ์ฐ๊ธฐ** ๊ณ์ฝ์ด๋ฉฐ ํ ์ถ๊ฐ/์ญ์ /์ฌ์ ๋ ฌ, commit/discard, ๋ฐ์ดํฐ ์ ์ฒด ๊ต์ฒด๋ฅผ ์ค๋ช
ํ๋ ์ด๋ฒคํธ๊ฐ ์๋๋๋ค. ํด๋น ์ํ๋ ๊ธฐ์กด ํ ์ด๋ฒคํธยท`changes:changed`ยทundo/redo ์ด๋ฒคํธ๋ก ๊ตฌ๋
ํฉ๋๋ค.
|
|
2304
|
+
- ์ ๊ท ํ์ ์์ ์๋ณ์๋ key ํ๋๋ฅผ ์์ ํด๋ ์ ์ง๋ฉ๋๋ค. ๊ธฐ์กด ํ ๊ฒ์ฆ์ ์ค์ ๋ ๋จ์ผ/๋ณตํฉ key resolver๋ฅผ ์ฌ์ฉํ๋ฉฐ, ๋ค๋ฅธ ํ ๋ฐ์ดํฐยท์๋ชป๋ originalDataยทpartial seed๋ ์ฌ์ ํ ๊ฑฐ๋ถํฉ๋๋ค.
|
|
2305
|
+
- ์๋ฆผ์ ChangeTracker ๋ฐ์ ์์ ์
๋๋ค. **processor ๋๊ธฐํ๋ณด๋ค ๋จผ์ ๋๊ธฐ์ ์ผ๋ก ๋ฐํ๋ ์ ์์ผ๋ฏ๋ก**, ํธ๋ค๋ฌ์์๋ payload์ `oldValue`/`newValue`๋ฅผ ์ฌ์ฉํ์ธ์. API ํธ์ถ์ ์๋ฃ ํ ์ํ๊ฐ ํ์ํ๋ฉด ํด๋น mutation API์ Promise๋ฅผ ๊ธฐ๋ค๋ฆฌ์ธ์. ์์ง ์ฌ์กฐํยท๋น๋๊ธฐ ๋ ๋ ์๋ฃ ์ ํธ๊ฐ ์๋๋ฉฐ ์ทจ์ํ ์ ์์ต๋๋ค. `cell:beforeEdit`/`cell:editCommitting`/`cell:editCommitted`์ ์๋ฏธ๋ ๋ฐ๋์ง ์์ต๋๋ค.
|
|
2306
|
+
|
|
2253
2307
|
**`CellTooltipPayload`** (26cd68a ์ปค๋ฐ์์ validation ์ ๋ณด ํตํฉ)
|
|
2254
2308
|
|
|
2255
2309
|
| ํ๋ | ํ์
| ์ค๋ช
|
|
|
@@ -4011,7 +4065,7 @@ const grid = new PureSheet(el, {
|
|
|
4011
4065
|
|
|
4012
4066
|
| ์์ | ํ๊ธฐ |
|
|
4013
4067
|
|---|---|
|
|
4014
|
-
| ์ปฌ๋ผ ์ฐธ์กฐ | `[์ปฌ๋ผํค๋]`(ํ์) / `$id`(์ ์ฅ) โ
|
|
4068
|
+
| ์ปฌ๋ผ ์ฐธ์กฐ | `[์ปฌ๋ผํค๋]`(ํ์) / `$id` ๋๋ `$["๋ณ๋ ์ํ"]`(์ ์ฅ) โ ๊ณต๋ฐฑยทํน์๋ฌธ์ ID ์ง์ |
|
|
4015
4069
|
| ๋
ผ๋ฆฌ | `AND` / `OR` / `NOT` ๋๋ `&&` / `\|\|` / `!` |
|
|
4016
4070
|
| ๋น๊ต | `==` `!=` `>` `>=` `<` `<=` |
|
|
4017
4071
|
| ๋ฌธ์์ด | `CONTAINS` `NOT_CONTAINS` `STARTS_WITH` `ENDS_WITH` `LIKE` `IS_EMPTY` `IS_NOT_EMPTY` |
|
|
@@ -4043,6 +4097,16 @@ const grid = new PureSheet(el, {
|
|
|
4043
4097
|
|
|
4044
4098
|
> ๋ผ๋ฒจ์ด ๋ฐ๋์ด๋(๋ค๊ตญ์ดยทํค๋ ํธ์ง) **๊ฐ์ ์ ์ฅ๋ณธ์ด ๋ ํ์ฌ ๋ผ๋ฒจ๋ก ๋ณด์
๋๋ค.** ํํฐ ํ๊ฐ๋ ์ ์ฅ ํ๊ธฐ(`$id`)๋ฅผ ๊ทธ๋๋ก ์ฐ๋ฏ๋ก ๋ผ๋ฒจ ๋ณ๊ฒฝ์ด ์กฐ๊ฑด์ ๊นจ๋จ๋ฆฌ์ง ์์ต๋๋ค.
|
|
4045
4099
|
|
|
4100
|
+
**๊ณต๋ฐฑยทํน์๋ฌธ์ ID (ITSM-2026-002900)**
|
|
4101
|
+
|
|
4102
|
+
- ๊ธฐ์กด ์๋ฌธยท์ซ์ยทํ๊ธยท๋ฐ์ค ID๋ `$simple_id`๋ฅผ ์ ์งํฉ๋๋ค. ๊ทธ ์ธ ID๋ `$[JSON ๋ฌธ์์ด]`๋ก ์ ์ฅํฉ๋๋ค. ID ์์ฒด๋ฅผ trim/์นํ/์ ๊ทํํ์ง ์์ต๋๋ค.
|
|
4103
|
+
- ์: ID๊ฐ `๋ณ๋ ์ํ`๋ฉด `$["๋ณ๋ ์ํ"] CONTAINS "์ฆ๊ฐ"`, ID๊ฐ `a"b]c`๋ฉด `$["a\"b]c"] IS_NOT_EMPTY`์
๋๋ค. JSON ํฐ๋ฐ์ดํ์ ์ด์ค์ผ์ดํ ๊ท์น์ ์ฐ๋ฉฐ ๋น ID๋ ํ์ฉํ์ง ์์ต๋๋ค.
|
|
4104
|
+
- Lexer/๊ฒ์ฆ/ํ๊ฐ์ `astToFormula`๋ ๊ฐ์ ๋ฐ์ธ๋ฉ AST๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ฌธ์์ด ๋ฆฌํฐ๋ด ์์ `$`๋ `[]`๋ ๋ณํํ์ง ์์ต๋๋ค. `$a-$b`๋ ๊ณ์ ๋ ์ปฌ๋ผ์ ๋บ์
์
๋๋ค.
|
|
4105
|
+
- ํ์ฌ ๋ผ๋ฒจ์ด ์ค๋ณต์ด๊ฑฐ๋ `]`/์๋ค ๊ณต๋ฐฑ/๋น ๋ฌธ์์ด ๋๋ฌธ์ ๋ผ๋ฒจ ํ๊ธฐ๋ก ์๋ณตํ ์ ์์ผ๋ฉด ํ๋ฉด์๋ ๋ช
์์ ID ํ๊ธฐ๋ฅผ ์ ์งํฉ๋๋ค.
|
|
4106
|
+
- `FormulaRefIssue.reason`์ `unknown`, `ambiguous`, `syntax`์
๋๋ค. ํ ํฐํ ์คํจ๋ ์๋ฌธ๊ณผ `syntax` ์ด์๋ฅผ ๋ฐํํฉ๋๋ค. ๋ณํ ์ฑ๊ณต ์ฌ๋ถ๋ง์ผ๋ก ์์ ์ ํจ์ฑ์ ํ๋จํ์ง ๋ง๊ณ **๋ณํ ํ `validateFormula`**๋ ํ์ธํ์ธ์.
|
|
4107
|
+
- ๊ธฐ์กด์ ์๋ชป๋ ์ ์ฅ๋ณธ `$๋ณ๋ ์ํ โฆ`๋ ์๋์ผ๋ก ์ถ์ธก ๋ณต๊ตฌํ์ง ์์ต๋๋ค. ์๋ฌธ์ ๋ณด์กดํ๊ณ ํธ์ง๊ธฐ์์ ์ค๋ฅ๋ฅผ ํ์ํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์ปฌ๋ผ์ ๋ค์ ์ ํํ๊ฑฐ๋ `$["๋ณ๋ ์ํ"]`๋ก ๋ช
์์ ์ผ๋ก ๊ณ ์ณ์ผ ํฉ๋๋ค. ์กฐ๊ฑด๋ถ ์์์์ ์ค๋ฅ๊ฐ ์์ผ๋ฉด ๊ท์น ์ ์ฒด ์ ์ฉ์ ๋ง๊ณ ์ด์ ์ ์ฉ๋ณธ์ ์ ์งํฉ๋๋ค.
|
|
4108
|
+
- ์ ํ๊ธฐ๋ฅผ ์ฝ์ง ๋ชปํ๋ ๊ตฌ๋ฒ์ Core๋ก ๋๋๋ฆฌ๋ฉด ํด๋น ์์์ ๋์ํ์ง ์์ต๋๋ค. Core์ ๊ณต์ฉ wrapper๋ฅผ ํจ๊ป ๋ฐฐํฌํ๊ณ , ์๋น์ฒ ์
๊ทธ๋ ์ด๋ ์ ์๋ ์ ์ ์ฅ๋ณธ์ ๊ณต์ ํ์ง ๋ง์ธ์.
|
|
4109
|
+
|
|
4046
4110
|
---
|
|
4047
4111
|
|
|
4048
4112
|
### ๊ฐ ๋ชฉ๋ก ์์ ฏ โ ValueCheckList
|
|
@@ -6,6 +6,30 @@
|
|
|
6
6
|
> ๐ **์ด ๋ฌธ์๋ ํ๋ ์์ํฌ ๋ํผ ํ๋ฉด๋ง ๋ค๋ฃน๋๋ค.** ์ฝ์ด ๊ทธ๋ฆฌ๋ ์ค์ (`PureSheetConfig` ํ๋), ์ฝ์ด ํ์
, ์ด๋ฒคํธ ํ์ด๋ก๋ ํํ๋ ์ฝ์ด ๋ ํผ๋ฐ์ค์ ์์ต๋๋ค โ [reference.md](reference.md)
|
|
7
7
|
> ๐ ์ฌ์ฉ ์์ ์ฝ๋๋ [examples.md](examples.md) ์ฐธ์กฐ
|
|
8
8
|
|
|
9
|
+
## ๊ณตํต ์ค์ Provider
|
|
10
|
+
|
|
11
|
+
```vue
|
|
12
|
+
<script setup lang="ts">
|
|
13
|
+
import { reactive } from 'vue';
|
|
14
|
+
import { MozGrid, MozGridConfigProvider, type MozGridConfig } from '@vmscloud/moz-ui-grid-vue';
|
|
15
|
+
const gridConfig = reactive<MozGridConfig>({ locale: 'ko', timeZone: 'Asia/Seoul' });
|
|
16
|
+
</script>
|
|
17
|
+
<template>
|
|
18
|
+
<MozGridConfigProvider :config="gridConfig">
|
|
19
|
+
<MozGrid :core-config="{ fields, data }" />
|
|
20
|
+
<MozGrid :core-config="{ fields, data, timeZone: 'UTC' }" locale="en" />
|
|
21
|
+
</MozGridConfigProvider>
|
|
22
|
+
</template>
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
`MozGridConfig`๋ `{ locale?: string; timeZone?: string }`์
๋๋ค. `useMozGridConfig()`๋ ๋ณํฉ ์ค์ ์ reactive `Ref<MozGridConfig>`๋ฅผ ๋ฐํํฉ๋๋ค. `MOZ_GRID_CONFIG_KEY`๋ ๊ณต๊ฐ export์
๋๋ค.
|
|
26
|
+
|
|
27
|
+
์๊ฐ๋๋ **๊ฐ๋ณ `coreConfig.timeZone` > provider > ๋ฏธ์ง์ ๊ธฐ๋ณธ๊ฐ**, ์ธ์ด๋ **๊ฐ๋ณ `locale` prop > `coreConfig.locale` > provider > ๊ธฐ์กด ๊ธฐ๋ณธ๊ฐ**์
๋๋ค. ์ค์ฒฉ provider์ undefined ํ๋๋ ์์์์ ์์ํฉ๋๋ค. Config ๊ฐ์ฒด ๊ต์ฒด์ reactive ํ๋ ๋ณ๊ฒฝ ๋ชจ๋ ๋ฐ์๋๋ฉฐ, ๋ช
์๋ ๊ฐ๋ณ ์ค์ ์ ์ ์ง๋ฉ๋๋ค.
|
|
28
|
+
|
|
29
|
+
`MozGridLocaleProvider`๋ deprecated ํธํ API์
๋๋ค. ๊ธฐ์กด `locale` prop ๋ฐ `useMozGridLocale`/`MOZ_GRID_LOCALE_KEY`๋ ์ ์ง๋๋ฉฐ ์ provider์ ํผ์ฉํ ์ ์์ต๋๋ค. ์ ๊ท ์ฝ๋๋ `MozGridConfigProvider :config="{ locale, timeZone }"`๋ฅผ ์ฌ์ฉํ์ธ์.
|
|
30
|
+
|
|
31
|
+
๋ฏธ์ง์ ์ ๊ธฐ์กด ๋ก์ปฌ ํ์/UTC IO์ด๋ฉฐ, ๋ช
์๋ ๊ฐ์ zone์ผ๋ก ๋ ์ง ํ์์ XLSX IO๋ฅผ ๋ง์ถฅ๋๋ค. Offsetless ๋ฌธ์์ดยทDSTยทIO override ๊ณ์ฝ์ [์ฝ์ด ๋ ์ง ์๊ฐ๋ ๊ณ์ฝ](reference.md#๋ ์ง-์๊ฐ๋-๊ณ์ฝ-timezone)์ ์ฐธ๊ณ ํ์ธ์.
|
|
32
|
+
|
|
9
33
|
## ๋ชฉ์ฐจ
|
|
10
34
|
|
|
11
35
|
- [๊ฐ์](#๊ฐ์)
|
|
@@ -372,6 +396,16 @@ type PivotSourceField = PivotRowField & PivotColumnField & PivotValueField;
|
|
|
372
396
|
|
|
373
397
|
## Emits
|
|
374
398
|
|
|
399
|
+
### ์ค๋น ์๋ฃยท์ฌ์์ฑยท์์ ์ฝ๋ฐฑ
|
|
400
|
+
|
|
401
|
+
- `@ready(grid, chrome)`๋ ํ์ฌ ์ธ์คํด์ค์ ์ฝ์ด ์ด๊ธฐํ์ reinit ์ํ ๋ณต์ ๋ค์ ๋ฐ์ํฉ๋๋ค. unmount๋ ๋ค์ reinit์ผ๋ก ํ๊ธฐ๋ ์ธ์คํด์ค์ ๋๊ธฐ ์์
์ ๋ณต์ยทemit์ ์ด์ด์ ์คํํ์ง ์์ต๋๋ค. ํ์ฌ ์ธ์คํด์ค์ ์ด๊ธฐํ ์คํจ๋ ์ฝ์ ์ค๋ฅ๋ก ๋ณด๊ณ ํ๊ณ `ready`๋ฅผ ๋ฐ์์ํค์ง ์์ต๋๋ค.
|
|
402
|
+
- ์ค์ watch๋ mount ํ
์์์ **๋๊ธฐ ๋ฑ๋ก**๋ฉ๋๋ค. ์ฒซ `ready`๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋์์ prop ๋ณ๊ฒฝ๋ ๋ฐ์ํ๋ฉฐ, unmount ์ Vue์ ์ปดํฌ๋ํธ scope์ ํจ๊ป ํด์ ๋ฉ๋๋ค.
|
|
403
|
+
- `ready()`๋ `waitForReady()`์ ์ด๊ธฐํ ์๋ฃ๋ฅผ ๋ปํ๋ฉฐ `coreConfig.data`๋ก ์์๋ ๋ชจ๋ ๋น๋๊ธฐ ๋ฐ์ดํฐ ๋ก๋ฉ ์๋ฃ๋ฅผ ๋ณด์ฅํ์ง ์์ต๋๋ค. ๋ฐ์ดํฐ ์๋ฃ๋ `@data:loaded` ๋๋ ์ง์ ํธ์ถํ `await grid.loadData(rows)`๋ก ํ์ธํ์ธ์.
|
|
404
|
+
- `coreConfig.formatRow` / `formatHeader`๋ ์ฒซ ๋ ๋ ์ ์ ๋ฑ๋ก๋ฉ๋๋ค. ํจ์ ์ฐธ์กฐ ๊ต์ฒดยท์ถ๊ฐยท์ ๊ฑฐ๋ ์ฌ์์ฑ ์์ด `_config` ํธ๋ค๋ฌ๋ง ๊ฐฑ์ ํ๊ณ `grid.refresh()`๋ฅผ ์์ฒญํฉ๋๋ค. ๋ค๋ฅธ ๋ค์๋ ํธ๋ค๋ฌ๋ ์ ์ง๋ฉ๋๋ค.
|
|
405
|
+
- `@ready`์์ `grid.formatRow.addHandler('my-format', handler)`๋ก ์ง์ ๋ฑ๋กํ๋ฉด ๋ค์ ๋ ๋๋ถํฐ ์ ์ฉ๋ฉ๋๋ค. ๊ธฐ์กด ํ์๋ ๋ฐ๋ก ์ ์ฉํ๋ ค๋ฉด ๋ฑ๋ก ๋ค `await grid.refresh()`๋ฅผ ํธ์ถํ์ธ์. ๋ฑ๋ก ์์ฒด๋ ์๋ repaint๋ฅผ ํ์ง ์์ต๋๋ค. `formatHeader`๋ ๋์ผํ๋ฉฐ ์คํฌ๋กค๋ง์ผ๋ก ํค๋๊ฐ ๋ค์ ๊ทธ๋ ค์ง์ง๋ ์์ต๋๋ค.
|
|
406
|
+
- ํธ๋ค๋ฌ๋ ์ธ์คํด์ค๋ณ์ด๋ฏ๋ก ์ง์ ๋ฑ๋ก์ ๊ฐ `@ready`์์ ๋ฐ๋ณตํ์ธ์. ์ ๊ฑฐ๋ ์ดํ ํธ์ถ๋ง ๋ฉ์ถ๋ฉฐ ์์ DOM ๋ณ๊ฒฝ์ ์ญ์ผ๋ก ๋ณต์ํ์ง ์์ต๋๋ค. ์ํ์ ๋ฐ๋ผ ์คํ์ผ์ ์ ์ฉ/ํด์ ํ๋ ๋์นญ์ ์ธ ์ฝ๋ฐฑ์ ์ฌ์ฉํ์ธ์.
|
|
407
|
+
|
|
408
|
+
|
|
375
409
|
`MozGrid`๋ ์ด **32๊ฐ** ์ด๋ฒคํธ๋ฅผ emitํฉ๋๋ค: `defineEmits`๊ฐ ์ ์ธํ๋ **31๊ฐ**(๊ณ ์ emit 2๊ฐ `ready`ยท`data:loaded` + ์ฝ์ด ์ธํฐ๋์
์ด๋ฒคํธ 29๊ฐ) + `defineModel`์ด ๋ง๋๋ ์์์ `update:coreConfig` 1๊ฐ. ์ธํฐ๋์
์ด๋ฒคํธ 29๊ฐ(`row:click` โฆ `contextmenu`)๋ `defineEmits`์ ์ ์ธ๋จ๊ณผ ๋์์ `FORWARD_EVENTS` ๋ฐฐ์ด๋ก ์ฝ์ด์์ ์ผ๊ด ํฌ์๋ฉ๋ฉ๋๋ค(`header:click`/`header:sortClick`/`header:filterClick` ํฌํจ โ ๋ณ๋ ๋ฐฐ์ ์ด ์๋๋ผ ๊ฐ์ 29๊ฐ). `ready`/`data:loaded`๋ ์ด๋ํฐ๊ฐ ์ง์ ๋ฐฐ์ (`ready`๋ `mountChrome`/`reinitChrome`์์, `data:loaded`๋ ์ ์ฉ ๊ตฌ๋
).
|
|
376
410
|
|
|
377
411
|
> **ํ์ด๋ก๋ ํํ** โ ์ธํฐ๋์
์ด๋ฒคํธ ํ์ด๋ก๋๋ Vue ์ ์ธ์ `[payload: unknown]`์ด์ง๋ง ๋ฐํ์์๋ **์ฝ์ด ์ด๋ฒคํธ ํ์ด๋ก๋**๋ฅผ ๊ทธ๋๋ก ์ด๋ฐํฉ๋๋ค. ์ค์ ํํ๋ [reference.md ์ด๋ฒคํธ](reference.md#์ด๋ฒคํธ) ์ฐธ์กฐ.
|
|
@@ -387,7 +421,8 @@ type PivotSourceField = PivotRowField & PivotColumnField & PivotValueField;
|
|
|
387
421
|
| `row:reordered` | `[payload: unknown]` | ์ฝ์ด ์ด๋ฒคํธ ํฌ์๋ฉ |
|
|
388
422
|
| `cell:click` | `[payload: unknown]` | ์ฝ์ด ์ด๋ฒคํธ ํฌ์๋ฉ |
|
|
389
423
|
| `cell:dblclick` | `[payload: unknown]` | ์ฝ์ด ์ด๋ฒคํธ ํฌ์๋ฉ |
|
|
390
|
-
| `cell:change` | `[payload: unknown]` |
|
|
424
|
+
| `cell:change` | `[payload: unknown]` | ์๋ํฐ ์
๋ณ๊ฒฝ ์ด๋ฒคํธ ํฌ์๋ฉ |
|
|
425
|
+
| `data:changed` | `[payload: DataMutationEvent]` | APIยทํธ์งยท๋ถ์ฌ๋ฃ๊ธฐยทundo/redo์ ์ค์ ์
๋ณ๊ฒฝ. ChangeTracker ๋ฐ์ ์์ ์ด๋ฉฐ processor ๋๊ธฐํ/๋ ๋ ์๋ฃ ์ ํธ๊ฐ ์๋ |
|
|
391
426
|
| `cell:beforeEdit` | `[payload: unknown]` | ์ฝ์ด ์ด๋ฒคํธ ํฌ์๋ฉ |
|
|
392
427
|
| `cell:editCommitting` | `[payload: unknown]` | ์ฝ์ด ์ด๋ฒคํธ ํฌ์๋ฉ |
|
|
393
428
|
| `cell:editCommitted` | `[payload: unknown]` | ์ฝ์ด ์ด๋ฒคํธ ํฌ์๋ฉ |
|
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.8",
|
|
4
4
|
"description": "MozGrid - Vue 3 wrapping library for @vmscloud/moz-ui-grid-core",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"type": "module",
|
|
@@ -79,8 +79,8 @@
|
|
|
79
79
|
"build-storybook": "storybook build"
|
|
80
80
|
},
|
|
81
81
|
"dependencies": {
|
|
82
|
-
"@vmscloud/moz-ui-grid-core": "^0.1.
|
|
83
|
-
"@vmscloud/moz-ui-grid-wrapper": "^0.1.
|
|
82
|
+
"@vmscloud/moz-ui-grid-core": "^0.1.47",
|
|
83
|
+
"@vmscloud/moz-ui-grid-wrapper": "^0.1.21",
|
|
84
84
|
"bytebuffer": "^5.0.1",
|
|
85
85
|
"crypto-js": "^4.2.0",
|
|
86
86
|
"echarts": "^5.5.0",
|