@threestarsoftware/tssgrid 0.1.29-beta.0 → 0.1.29-beta.1

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
@@ -6,7 +6,7 @@ TssGrid の各リリースの変更点。日付は JST。形式は [Keep a Chang
6
6
  ## [Unreleased]
7
7
 
8
8
  ### 追加(プラグイン)
9
- - **`tss-calendar` に範囲選択 `range` を追加** — 連続した日(休暇申請の開始〜終了など)を**1回の編集で**選べる。`range:true` で有効、`range:(ctx)=>boolean` で**行ごとにON/OFF**(半休の行は範囲を選ばせない等)。未指定は単日=**従来動作**。1クリック目=開始・2クリック目=終了(**開始より前なら入替・同じ日を2回で単日確定**)、間の日に色が付く。1クリック目だけで閉じたら(Esc/外クリック)**値は変えない**。確定値は既定で `2026/10/13~2026/10/16`(単日は `2026/10/13`/区切りは `rangeSeparator`・既定 '~'/`rangeValue(startISO,endISO)` で完全差替可)。**入力中のセルに範囲ツールチップ**を出し、`rangeTooltip(startISO,endISO)` で文面を差し替え可能(休日を除いた日数などを外から足す口)。**休日スキップは利用側**=カレンダーは範囲を返すだけ。範囲列は `type:'date'` を付けない素の列にする(範囲文字列を日付パーサに通さないため)。例 `examples/calendar-range.html`。
9
+ - **`tss-calendar` に範囲選択 `range` を追加** — 連続した日(休暇申請の開始〜終了など)を**1回の編集で**選べる。`range:true` で有効、`range:(ctx)=>boolean` で**行ごとにON/OFF**(半休の行は範囲を選ばせない等)。未指定は単日=**従来動作**。1クリック目=開始・2クリック目=終了(**開始より前なら入替・同じ日を2回で単日確定**)、間の日に色が付く。1クリック目だけで閉じたら(Esc/外クリック)**値は変えない**。確定値は既定で `2026/10/13~2026/10/16`(**単日は ISO `2026-10-13`=範囲なしの単日と同じ形**で保存値が混ざらない/区切りは `rangeSeparator`・既定 '~'/`rangeValue(startISO,endISO)` で完全差替可・**同日も呼ばれる**)。**入力中のセルに範囲ツールチップ**を出し、`rangeTooltip(startISO,endISO)` で文面を差し替え可能(休日を除いた日数などを外から足す口)。**休日スキップは利用側**=カレンダーは範囲を返すだけ。範囲列は `type:'date'` を付けない素の列にする(範囲文字列を日付パーサに通さないため)。例 `examples/calendar-range.html`。
10
10
 
11
11
  ## [0.1.28] - 2026-10-20
12
12
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@threestarsoftware/tssgrid",
3
- "version": "0.1.29-beta.0",
3
+ "version": "0.1.29-beta.1",
4
4
  "description": "軽量・ノービルド・日本語IME堅牢な編集グリッド(vanilla JS / 依存なし / MIT)。Excel ライクな入力画面を <script> タグ1本で。",
5
5
  "license": "MIT",
6
6
  "author": "ThreeStarSoftware (https://www.threestarsoftware.co.jp/)",
@@ -34,8 +34,9 @@ declare namespace TssCalendar {
34
34
  range?: boolean | ((ctx: any) => boolean);
35
35
  /** 範囲値・ツールチップの日付区切り(既定 '~')。 */
36
36
  rangeSeparator?: string;
37
- /** 範囲の確定値を作る(既定 `'YYYY/MM/DD~YYYY/MM/DD'`/同日は `'YYYY/MM/DD'`)。
38
- * 引数は開始・終了の ISO('YYYY-MM-DD'・開始<=終了に整列済み)。別フィールド分割などはこの口で。 */
37
+ /** 範囲の確定値を作る。**同日(単日)のときも呼ばれる**。引数は開始・終了の ISO
38
+ * ('YYYY-MM-DD'・開始<=終了に整列済み)。未指定の既定は 範囲=`'YYYY/MM/DD~YYYY/MM/DD'`/
39
+ * **単日=ISO `'YYYY-MM-DD'`(範囲なしの単日と同じ形)**。別フィールド分割などはこの口で。 */
39
40
  rangeValue?: (startISO: string, endISO: string) => string;
40
41
  /** 編集中セルに出す範囲ツールチップの文面(既定は範囲文字列)。休日を除いた日数などを外から足す口。 */
41
42
  rangeTooltip?: (startISO: string, endISO: string) => string;
@@ -40,16 +40,19 @@
40
40
  // ── 範囲選択(range): 連続した日を1回の編集で選ぶ(休暇申請の開始〜終了 等)───────────
41
41
  // range:true で有効(行ごとに切替えたい時は range:(ctx)=>boolean)。未指定は単日=従来動作。
42
42
  // 1クリック目=開始、2クリック目=終了(開始より前なら入替・同日2回は単日確定)。間の日に色。
43
- // 確定値は rangeValue(開始ISO,終了ISO)(既定 'YYYY/MM/DD~YYYY/MM/DD'・単日は 'YYYY/MM/DD')。
43
+ // 確定値は rangeValue(開始ISO,終了ISO)(既定: 範囲 'YYYY/MM/DD~YYYY/MM/DD'/単日は ISO 'YYYY-MM-DD'=範囲なしと同形。rangeValue は同日も呼ぶ)。
44
44
  // 入力中はセルに range のツールチップ(rangeTooltip で文面差替=休日除く日数を外から足せる口)。
45
45
  // 休日スキップは利用側(返すのは範囲だけ)。
46
46
  var rangeOpt = opts.range;
47
47
  var rangeSep = opts.rangeSeparator != null ? opts.rangeSeparator : '~';
48
48
  var rangeValueFn = typeof opts.rangeValue === 'function' ? opts.rangeValue : null;
49
49
  var rangeTooltipFn = typeof opts.rangeTooltip === 'function' ? opts.rangeTooltip : null;
50
- function defRangeStr(aIso, bIso) { return aIso === bIso ? fmtSlash(aIso) : fmtSlash(aIso) + rangeSep + fmtSlash(bIso); }
51
- function rangeValOf(aIso, bIso) { return (aIso !== bIso && rangeValueFn) ? rangeValueFn(aIso, bIso) : defRangeStr(aIso, bIso); }
52
- function rangeTipOf(aIso, bIso) { return rangeTooltipFn ? rangeTooltipFn(aIso, bIso) : defRangeStr(aIso, bIso); }
50
+ function defRangeStr(aIso, bIso) { return fmtSlash(aIso) + rangeSep + fmtSlash(bIso); } // 表示用(両端 slash・範囲)
51
+ function rangeValOf(aIso, bIso) {
52
+ if (rangeValueFn) return rangeValueFn(aIso, bIso); // rangeValue は同日も必ず呼ぶ(利用側で形を決められる)
53
+ return aIso === bIso ? aIso : defRangeStr(aIso, bIso); // 既定: 単日=ISO(範囲なしと同形)/範囲='YYYY/MM/DD~YYYY/MM/DD'
54
+ }
55
+ function rangeTipOf(aIso, bIso) { return rangeTooltipFn ? rangeTooltipFn(aIso, bIso) : (aIso === bIso ? fmtSlash(aIso) : defRangeStr(aIso, bIso)); }
53
56
  var rc = null; // 現在の編集が range なら { td } を持つ(open(ctx) で ctx 判定して設定)
54
57
  var rangeStart = null, hoverEnd = null; // 範囲選択の途中状態(1クリック目=rangeStart、プレビュー終端=hoverEnd)
55
58