@threestarsoftware/tssgrid 0.1.24 → 0.1.25

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 CHANGED
@@ -3,6 +3,11 @@
3
3
  TssGrid の各リリースの変更点。日付は JST。形式は [Keep a Changelog](https://keepachangelog.com/ja/1.1.0/) 準拠(ゆるめ)。
4
4
  数値は特記なき限り**自社調べ**(headless Chrome / Windows 11・環境差あり)。
5
5
 
6
+ ## [0.1.25] - 2026-10-13
7
+
8
+ ### 修正
9
+ - **`data: []` 始まりの遅延ロードで `rowClass` / `cellClass` の `src`(元レコード)が空になる不具合を修正**(コア)— `data: []` + `virtual` + `setRowCount` + `fillRows(オブジェクト)` の遅延ロードで、`_src` が未作成のため `fillRows` が src を保持せず、`rowClass`/`cellClass` の `src` が `undefined` になり**列に無いフィールド(例: `hidden`)を見られなかった**(`_ingest` は `data` 先頭がオブジェクトの時だけ `_src` を作るため `data: []` だと `null` のまま)。**`fillRows` にオブジェクトが来て `_src` が無ければ `ROWS` 長で作成(+object モード化)**、**`setRowCount` は `_src` があるとき行数変更に長さを追従**するように。これで `data: []` → `setRowCount` → `fillRows` の遅延ロードでも、元レコードを見た行/セルの色付けが効く。型は従来どおり(`rowClass`/`cellClass` の `src` は `any`・`setRowCount`/`fillRows`/`onViewportChange` も宣言済み)。
10
+
6
11
  ## [0.1.24] - 2026-10-08
7
12
 
8
13
  ### 追加
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@threestarsoftware/tssgrid",
3
- "version": "0.1.24",
3
+ "version": "0.1.25",
4
4
  "description": "軽量・ノービルド・日本語IME堅牢な編集グリッド(vanilla JS / 依存なし / MIT)。Excel ライクな入力画面を <script> タグ1本で。",
5
5
  "license": "MIT",
6
6
  "author": "ThreeStarSoftware (https://www.threestarsoftware.co.jp/)",
package/src/tssgrid.js CHANGED
@@ -419,8 +419,8 @@
419
419
  setRowCount(total) {
420
420
  total = Math.max(0, total | 0);
421
421
  const cur = this.ROWS;
422
- if (total > cur) { for (let r = cur; r < total; r++) { this.data.push(TssGrid.PENDING); this.rowH.push(undefined); } }
423
- else if (total < cur) { this.data.length = total; this.rowH.length = total; }
422
+ if (total > cur) { for (let r = cur; r < total; r++) { this.data.push(TssGrid.PENDING); this.rowH.push(undefined); if (this._src) this._src.push({}); } }
423
+ else if (total < cur) { this.data.length = total; this.rowH.length = total; if (this._src) this._src.length = total; }
424
424
  this.ROWS = total;
425
425
  let pend = 0; for (let r = 0; r < this.ROWS; r++) if (this.data[r] === TssGrid.PENDING) pend++; // 確保時の一度きり O(N)。以降 fillRows が差分で維持
426
426
  this._pendingCount = pend; this.dataComplete = pend === 0;
@@ -437,6 +437,9 @@
437
437
  const r = start + i; if (r >= this.ROWS) break;
438
438
  const src = rows[i];
439
439
  const srcIsObj = src && !Array.isArray(src) && typeof src === 'object';
440
+ // data:[] で始めて setRowCount→fillRows でオブジェクトを流す遅延ロード時、_src が未作成だとここで作る
441
+ // (src=元レコードを保持=rowClass/cellClass の src・非表示フィールドが見える)。
442
+ if (srcIsObj && !this._src) { this._objectMode = true; this._src = new Array(this.ROWS); for (let k = 0; k < this.ROWS; k++) this._src[k] = {}; }
440
443
  const srcObj = srcIsObj ? Object.assign({}, src) : {};
441
444
  let rowArr;
442
445
  if (srcIsObj) rowArr = this._objToRow(src);