open-grid 1.1.0 → 1.2.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 (52) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/README.md +30 -1
  3. package/THIRD_PARTY_LICENSES.txt +43 -0
  4. package/dist/OpenGrid-B0Spm0rU.js +10404 -0
  5. package/dist/OpenGrid-CuXj0isp.cjs +97 -0
  6. package/dist/open-grid-base.css +5 -5
  7. package/dist/open-grid-react.cjs +1 -1
  8. package/dist/open-grid-react.js +1 -1
  9. package/dist/open-grid-skins.css +111 -0
  10. package/dist/open-grid-vue.cjs +1 -1
  11. package/dist/open-grid-vue.js +1 -1
  12. package/dist/open-grid.cjs +5 -5
  13. package/dist/open-grid.js +149 -136
  14. package/dist/types/core/AppearanceResolver.d.ts +100 -0
  15. package/dist/types/core/CellEditManager.d.ts +2 -0
  16. package/dist/types/core/ChartManager.d.ts +2 -0
  17. package/dist/types/core/ContextMenu.d.ts +5 -1
  18. package/dist/types/core/CrossGridController.d.ts +70 -0
  19. package/dist/types/core/DetailManager.d.ts +2 -0
  20. package/dist/types/core/ExportManager.d.ts +7 -0
  21. package/dist/types/core/ExtensionPointRegistry.d.ts +92 -0
  22. package/dist/types/core/FilterPanel.d.ts +4 -1
  23. package/dist/types/core/FilterSelect.d.ts +4 -1
  24. package/dist/types/core/FindBarManager.d.ts +6 -0
  25. package/dist/types/core/FormulaController.d.ts +81 -0
  26. package/dist/types/core/GridComposer.d.ts +142 -0
  27. package/dist/types/core/GridRenderer.d.ts +44 -4
  28. package/dist/types/core/IconRegistry.d.ts +55 -0
  29. package/dist/types/core/KeyboardManager.d.ts +2 -0
  30. package/dist/types/core/MutationService.d.ts +128 -0
  31. package/dist/types/core/OpenGrid.d.ts +464 -68
  32. package/dist/types/core/OrgChart.d.ts +2 -0
  33. package/dist/types/core/Pagination.d.ts +6 -1
  34. package/dist/types/core/RangeSelectionManager.d.ts +2 -0
  35. package/dist/types/core/RenderController.d.ts +65 -0
  36. package/dist/types/core/SkinRegistry.d.ts +53 -0
  37. package/dist/types/core/SortFilterManager.d.ts +2 -0
  38. package/dist/types/core/WorksheetManager.d.ts +4 -1
  39. package/dist/types/core/detail/DetailGlyph.d.ts +3 -1
  40. package/dist/types/core/editors/CellEditor.d.ts +17 -1
  41. package/dist/types/core/i18n/LocaleRegistry.d.ts +0 -0
  42. package/dist/types/core/i18n/interpolate.d.ts +5 -0
  43. package/dist/types/core/i18n/locales/en.d.ts +166 -0
  44. package/dist/types/core/i18n/locales/ko.d.ts +166 -0
  45. package/dist/types/core/i18n/types.d.ts +249 -0
  46. package/dist/types/core/icons/bootstrap-icons.d.ts +9 -0
  47. package/dist/types/core/renderers/CellRenderer.d.ts +43 -2
  48. package/dist/types/core/types.d.ts +387 -91
  49. package/dist/types/index.d.ts +26 -0
  50. package/package.json +3 -1
  51. package/dist/OpenGrid-5flQwc3W.js +0 -8434
  52. package/dist/OpenGrid-DahxRY7C.cjs +0 -92
package/CHANGELOG.md CHANGED
@@ -2,6 +2,46 @@
2
2
 
3
3
  All notable changes to OPEN_GRID will be documented in this file.
4
4
 
5
+ ## [1.2.0] - 2026-07-05
6
+
7
+ ### Added
8
+ - **다국어(i18n) — 리소스 분리** / **Internationalization — separated resources.**
9
+ UI 문자열(라벨·aria-label·announce·툴팁·플레이스홀더)을 코어에서 분리해 로케일 카탈로그로 관리.
10
+ `SkinRegistry`/`IconRegistry`와 동형인 `LocaleRegistry`(전역 싱글턴 + 인스턴스별 child 체인 + never-throw 폴백).
11
+ - 옵션: `new OpenGrid(el, { locale: 'en', messages: { ... } })`
12
+ - 메서드: `grid.setLocale('en')` / `grid.getLocale()` / `grid.setMessage(key, value)` / `grid.t(key, params)`
13
+ - 등록: `localeRegistry.register('ja', { ... })`, `OpenGrid.defineLocale(id, messages)`
14
+ - 내장 로케일 `ko`(기본)·`en`. 폴백 체인 = 인스턴스 오버라이드 → 활성 로케일 → ko → 키 원문.
15
+ - `setLocale` 시 상주 크롬(페이지네이션·찾기 바) 재라벨 + 컨텍스트메뉴/필터패널 재구성 + `lang` 속성 갱신 + `localeChange` 이벤트.
16
+ - 공개 export: `LocaleRegistry`/`localeRegistry`/`t` + 타입 `LocaleMessages`/`PartialLocaleMessages`/`LocaleMessageKey`/`MessageValue`.
17
+
18
+ ### Changed
19
+ - **하위호환 보장** — 기본 로케일 `ko` 고정. `locale`/`messages` 미지정 시 렌더 결과는 이전과 동일(byte-identical).
20
+ 개발자 대면 오류 메시지(throw/console)와 숫자·날짜 포맷은 i18n 범위에서 제외(로그 안정성·별도 축).
21
+
22
+ ### Docs
23
+ - **TypeDoc API 문서 파이프라인** — `npm run docs`로 공개 API 문서 생성. 공개 표면에 한·영 병행 JSDoc.
24
+
25
+ ## [1.1.1] - 2026-07-04
26
+
27
+ ### Added
28
+ - **스킨 (형태 축)** — 색 테마와 직교하는 형태 스킨 6종(sharp/rounded/stitch/flat/high-contrast/material).
29
+ `data-og-skin` 속성 + `grid.setSkin(name)`, `OpenGrid.defineSkin(name, delta)`(FORM 토큰만 허용), `grid.setSkinVar(k,v)`.
30
+ 색 테마와 자유 조합(예: crimson 테마 + stitch 스킨). 접근성 위험이 있는 neumorph는 기본 카탈로그에서 제외.
31
+ - **아이콘 세트** — Bootstrap Icons(MIT) 기반 역할(role) 아이콘 64종. `renderIcon(role, {size})`,
32
+ `grid.setIcon(role, key)`(인스턴스 격리), `OpenGrid.defineIconSet(map)`(전역). 공개 export 추가:
33
+ `renderIcon`/`IconRegistry`/`iconRegistry`/`DEFAULT_ICON_ROLES`/`SkinRegistry`/`skinRegistry`.
34
+ - **버튼 렌더러 아이콘** — `renderer:{ type:'button', icon:'search', label:'…', iconPos:'left'|'right' }`로
35
+ 버튼 라벨과 아이콘을 함께 표시.
36
+
37
+ ### Changed
38
+ - 그리드 셀/행/헤더 보더를 `--og-border-style`/`--og-divider-style` 토큰으로 승격 — 스킨이 선(보더 스타일)을 제어한다.
39
+ 토큰 미설정 시 `solid` 폴백(기존 렌더와 동일).
40
+ - 내부 코어 리팩토링(협력자 분리) — 공개 API·동작 변화 없음(행동 보존).
41
+
42
+ ### Notes
43
+ - Bootstrap Icons(MIT) 라이선스를 `THIRD_PARTY_LICENSES.txt`에 포함.
44
+
5
45
  ## [1.1.0] - 2026-07-03
6
46
 
7
47
  ### Added
package/README.md CHANGED
@@ -9,7 +9,7 @@ High-performance, framework-agnostic data grid with virtual scrolling, inline ed
9
9
 
10
10
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
11
11
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.x-blue)](https://www.typescriptlang.org/)
12
- [![npm](https://img.shields.io/badge/npm-1.0.4-orange)](https://www.npmjs.com/package/open-grid)
12
+ [![npm](https://img.shields.io/badge/npm-1.2.0-orange)](https://www.npmjs.com/package/open-grid)
13
13
 
14
14
  📖 **[개발 가이드](https://foxnail.kr/open-grid/demo/v2/guide/index.php)** — 설치부터 고급 API까지 단계별 가이드
15
15
  🔗 **[데모/홈페이지](https://foxnail.kr/open-grid/demo/v2/index.php)**
@@ -28,6 +28,7 @@ High-performance, framework-agnostic data grid with virtual scrolling, inline ed
28
28
  | Column Reorder (drag header, `columnReorder: true`) | ✅ |
29
29
  | Frozen Columns | ✅ |
30
30
  | Row/Column Groups (header merge) | ✅ |
31
+ | Localization / i18n (built-in `ko`·`en`, `setLocale`, custom locales) | ✅ |
31
32
  | Grouping + Summary (SUM/AVG/MIN/MAX/COUNT) | ✅ |
32
33
  | Tree Grid (flat → hierarchy, expand/collapse) | ✅ |
33
34
  | OrgChart (organization chart with theme) | ✅ |
@@ -350,6 +351,34 @@ CSS 변수로 완전한 테마 커스터마이즈 가능:
350
351
  }
351
352
  ```
352
353
 
354
+ ## Localization (i18n)
355
+
356
+ All built-in UI strings — labels, `aria-label`s, live-region announcements, tooltips, placeholders —
357
+ are kept in swappable locale catalogs, separated from the core. Ships with **`ko` (default) and `en`**.
358
+ Existing apps are unaffected: without a `locale`/`messages` option, output is byte-identical to before.
359
+
360
+ ```ts
361
+ import { OpenGrid, localeRegistry } from 'open-grid';
362
+
363
+ // 1) Pick a built-in locale per instance
364
+ const grid = new OpenGrid(el, { columns, locale: 'en' });
365
+
366
+ // 2) Switch at runtime (re-labels chrome, updates the `lang` attribute, emits `localeChange`)
367
+ grid.setLocale('ko');
368
+
369
+ // 3) Override just a few messages for one instance
370
+ new OpenGrid(el, { locale: 'en', messages: { contextMenu: { sortAsc: 'Sort A→Z' } } });
371
+
372
+ // 4) Register a custom locale globally (partial dictionaries are fine — missing keys fall back)
373
+ localeRegistry.register('ja', { contextMenu: { find: '検索' }, pagination: { rowsPerPage: '行/ページ:' } });
374
+ new OpenGrid(el, { locale: 'ja' });
375
+ ```
376
+
377
+ Fallback chain: instance override → active locale → `ko` (complete catalog) → raw key.
378
+ Number/date formatting and developer-facing error messages are intentionally out of scope
379
+ (use `Intl` and keep logs grep-stable). See the
380
+ [Localization guide](https://foxnail.kr/open-grid/demo/v2/guide/index.php) for the full key reference.
381
+
353
382
  ## Changelog
354
383
 
355
384
  ### v0.1.2 (2026-05-30)
@@ -227,3 +227,46 @@ The complete text of the Apache License, Version 2.0 follows.
227
227
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
228
228
  See the License for the specific language governing permissions and
229
229
  limitations under the License.
230
+
231
+
232
+ -----------------------------------------------------------------------
233
+ 3. Bootstrap Icons
234
+ Copyright (c) 2019-2024 The Bootstrap Authors
235
+ Homepage: https://icons.getbootstrap.com/
236
+ Source: https://github.com/twbs/icons
237
+ Version: 1.13.1
238
+ License: MIT License (SPDX: MIT)
239
+ Bundled as: curated inline SVG glyph bodies embedded in the compiled
240
+ distribution (dist/*.js, from src/core/icons/bootstrap-icons.ts) — the
241
+ icon glyphs used by the grid UI (sorting, filtering, editing, row/column
242
+ ops, export, chart-type, status and general UI icons). No runtime
243
+ dependency is added; only the glyphs actually used are embedded.
244
+ -----------------------------------------------------------------------
245
+
246
+ The complete text of the MIT License, as distributed with Bootstrap Icons,
247
+ follows.
248
+
249
+
250
+ MIT License
251
+
252
+ The MIT License (MIT)
253
+
254
+ Copyright (c) 2019-2024 The Bootstrap Authors
255
+
256
+ Permission is hereby granted, free of charge, to any person obtaining a copy
257
+ of this software and associated documentation files (the "Software"), to deal
258
+ in the Software without restriction, including without limitation the rights
259
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
260
+ copies of the Software, and to permit persons to whom the Software is
261
+ furnished to do so, subject to the following conditions:
262
+
263
+ The above copyright notice and this permission notice shall be included in
264
+ all copies or substantial portions of the Software.
265
+
266
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
267
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
268
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
269
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
270
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
271
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
272
+ THE SOFTWARE.