@threestarsoftware/tssgrid 0.1.39 → 0.1.40
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 +5 -0
- package/package.json +1 -1
- package/src/tssgrid.js +16 -0
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.40] - 2026-11-09
|
|
7
|
+
|
|
8
|
+
### 修正
|
|
9
|
+
- **`display:none` の中でビルドした表の見出し高さが 0 のまま直らない不具合**。非表示だと `offsetHeight` が 0 を返すため、ヘッダ高キャッシュ `_theadH`・ネストヘッダの段積み・固定行(`frozenRows`)の sticky-top が 0 で固まり、タブ/アコーディオンで後から表示しても崩れたままだった。表示されて実寸が得られた時(既存の ResizeObserver → `_reflow`)に**ヘッダ高を測り直し、値が変わった時だけ依存レイアウトを貼り直して自己修復**する `_remeasureHead()` を追加(レスポンシブなヘッダ高変化にも効く)。手動の再描画呼び出しは不要。
|
|
10
|
+
|
|
6
11
|
## [0.1.39] - 2026-11-08
|
|
7
12
|
|
|
8
13
|
### 修正
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@threestarsoftware/tssgrid",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.40",
|
|
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
|
@@ -3068,8 +3068,24 @@
|
|
|
3068
3068
|
this.extent = e; this.updateSelectionUI(); this._fireSelection();
|
|
3069
3069
|
}
|
|
3070
3070
|
|
|
3071
|
+
// display:none 中にビルドされた表はヘッダ高(_theadH)・ネスト段/固定行の sticky-top が 0 のまま固まる
|
|
3072
|
+
// (offsetHeight が 0 を返すため)。表示されて実寸が得られた時(ResizeObserver→_reflow)に測り直し、
|
|
3073
|
+
// 値が変わった時だけ依存レイアウトを貼り直して自己修復する。レスポンシブなヘッダ高変化にも効く。
|
|
3074
|
+
_remeasureHead() {
|
|
3075
|
+
if (!this.colHeaders || !this.table) return false;
|
|
3076
|
+
const thd = this.table.querySelector('thead');
|
|
3077
|
+
const h = thd ? thd.offsetHeight : 0;
|
|
3078
|
+
if (h === this._theadH) return false; // 変化なし(まだ非表示=0のまま等)=無駄な再適用をしない
|
|
3079
|
+
this._theadH = h;
|
|
3080
|
+
this.wrap.style.setProperty('--tg-thead-h', h + 'px'); // scrollIntoView の scroll-margin-top を実寸へ
|
|
3081
|
+
this._applyHeaderSticky(); // ネストヘッダの段積み(tr.offsetHeight 依存)
|
|
3082
|
+
this._applyFrozenRows(); // 固定行の sticky-top はヘッダ高に依存
|
|
3083
|
+
return true;
|
|
3084
|
+
}
|
|
3085
|
+
|
|
3071
3086
|
// スクロール / リサイズでセル位置が動いた時、エディタと選択枠を貼り直す
|
|
3072
3087
|
_reflow() {
|
|
3088
|
+
this._remeasureHead(); // display:none 中ビルドでヘッダ高が0固着→表示時に測り直して自己修復
|
|
3073
3089
|
if (this.stretchH !== 'none') this._applyStretch(); // 枠幅が変わったら余白を再配分
|
|
3074
3090
|
this._buildGeomCache(); // 幅/枠が変わったので実測幾何を取り直す(リサイズ/ResizeObserver/window resize)
|
|
3075
3091
|
if (this.virtual) this._renderWindow(this._vWindow(), false); // 枠高が変われば窓行数も変わる=窓を同期
|