@threestarsoftware/tssgrid 0.1.29-beta.2 → 0.1.29-beta.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@threestarsoftware/tssgrid",
3
- "version": "0.1.29-beta.2",
3
+ "version": "0.1.29-beta.3",
4
4
  "description": "軽量・ノービルド・日本語IME堅牢な編集グリッド(vanilla JS / 依存なし / MIT)。Excel ライクな入力画面を <script> タグ1本で。",
5
5
  "license": "MIT",
6
6
  "author": "ThreeStarSoftware (https://www.threestarsoftware.co.jp/)",
@@ -81,7 +81,10 @@
81
81
  for (var mm = 0; mm < 12; mm++) monSel += '<option value="' + mm + '"' + (mm === m ? ' selected' : '') + '>' + (mm + 1) + '月</option>';
82
82
  monSel += '</select>';
83
83
  // range が使える行はトグル(範囲で選ぶ)を上部に。OFF=単日1クリック/ON=2クリック範囲。
84
- var toggle = rc ? '<label class="tss-cal-toggle"><input type="checkbox" class="tss-cal-range-cb"' + (rangeActive ? ' checked' : '') + '><span>' + esc(rangeToggleLabel) + '</span></label>' : '';
84
+ // ★<label>+ネイティブ checkbox だと click で input にフォーカスが移り、inline 時に共有 input が blur→
85
+ // 本体が commit+close してカレンダーが閉じてしまう。so 非フォーカスな span で包み、checked は render が持ち、
86
+ // 切替は pop の click(mousedown は preventDefault 済=フォーカスを奪わない)で処理する(onClick 参照)。
87
+ var toggle = rc ? '<span class="tss-cal-toggle" data-toggle="1"><input type="checkbox" class="tss-cal-range-cb" tabindex="-1"' + (rangeActive ? ' checked' : '') + '><span>' + esc(rangeToggleLabel) + '</span></span>' : '';
85
88
  var html = toggle + '<div class="tss-cal-head">'
86
89
  + '<button type="button" class="tss-cal-nav" data-nav="-1" aria-label="前の月">‹</button>'
87
90
  + '<span class="tss-cal-sels">' + yrSel + monSel + '</span>'
@@ -120,6 +123,8 @@
120
123
  pop.style.top = top + 'px';
121
124
  }
122
125
  function onClick(e) {
126
+ // 「範囲で選ぶ」トグル: ネイティブ checkbox の toggle/フォーカスには頼らず click で反転(フォーカス不動=inline でも閉じない)。
127
+ if (e.target.closest && e.target.closest('.tss-cal-toggle')) { e.preventDefault(); setRangeActive(!rangeActive); return; }
123
128
  var nav = e.target.getAttribute && e.target.getAttribute('data-nav');
124
129
  if (nav) { view = new Date(view.getFullYear(), view.getMonth() + (+nav), 1); render(); return; }
125
130
  var dd = e.target.getAttribute && e.target.getAttribute('data-d');
@@ -127,8 +132,7 @@
127
132
  }
128
133
  function onChange(e) {
129
134
  var t = e.target;
130
- if (t.classList && t.classList.contains('tss-cal-range-cb')) { setRangeActive(t.checked); } // 「範囲で選ぶ」トグル
131
- else if (t.classList && t.classList.contains('tss-cal-sel-yr')) { view = new Date(+t.value, view.getMonth(), 1); render(); }
135
+ if (t.classList && t.classList.contains('tss-cal-sel-yr')) { view = new Date(+t.value, view.getMonth(), 1); render(); }
132
136
  else if (t.classList && t.classList.contains('tss-cal-sel-mon')) { view = new Date(view.getFullYear(), +t.value, 1); render(); }
133
137
  }
134
138
  function onKey(e) {