@threestarsoftware/tssgrid 0.1.22 → 0.1.23
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.d.ts +7 -0
- package/src/tssgrid.js +6 -5
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.23] - 2026-10-08
|
|
7
|
+
|
|
8
|
+
### 追加
|
|
9
|
+
- **`TssGrid.zen2han(s)` / `TssGrid.esc(s)` を公開 static として型定義(`.d.ts`)に追加**(コア)— 全角→半角ユーティリティ(内部名 `_zen2han` を公開名 `zen2han` にリネーム)と HTML エスケープ `esc` を、**TypeScript から型付きで呼べる**ように宣言。`number`/`date`/`time` の組込 parse で使うほか、**カスタム `parse`/`format` から `TssGrid.zen2han(v)` を再利用**できる(例: 和暦・年月日の自前パーサの前処理で全角も吸収)。挙動は不変。
|
|
10
|
+
|
|
6
11
|
## [0.1.22] - 2026-10-07
|
|
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.23",
|
|
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.d.ts
CHANGED
|
@@ -489,6 +489,13 @@ export declare class TssGrid {
|
|
|
489
489
|
/** 遅延ロード: 未取得行を表す sentinel。setRowCount が未取得ぶんを data[r] に入れ、fillRows で実データへ差し替える。 */
|
|
490
490
|
static readonly PENDING: unique symbol;
|
|
491
491
|
|
|
492
|
+
/** 全角→半角(数字・符号・小数点・カンマ・%・¥・空白+日付/時刻の区切り /:)。IME 誤入力対策のユーティリティ。
|
|
493
|
+
* number/date/time の組込 parse で使うほか、カスタム `parse`/`format` から `TssGrid.zen2han(v)` として呼べる。 */
|
|
494
|
+
static zen2han(s: string): string;
|
|
495
|
+
|
|
496
|
+
/** HTML エスケープ(`&` `<` `>`)。`format` で HTML を組む時などに。 */
|
|
497
|
+
static esc(s: any): string;
|
|
498
|
+
|
|
492
499
|
[k: string]: any;
|
|
493
500
|
}
|
|
494
501
|
|
package/src/tssgrid.js
CHANGED
|
@@ -961,7 +961,7 @@
|
|
|
961
961
|
static _colLabel(n) { let s = ''; n = n | 0; do { s = String.fromCharCode(65 + (n % 26)) + s; n = Math.floor(n / 26) - 1; } while (n >= 0); return s; }
|
|
962
962
|
// 入力文字列 → 'yyyy-mm-dd'(不正は null)。yyyymmdd / yyyy-mm-dd / yyyy/mm/dd / yyyy.mm.dd を許容。
|
|
963
963
|
static _parseDate(s) {
|
|
964
|
-
s = TssGrid.
|
|
964
|
+
s = TssGrid.zen2han(String(s).trim()); // IME ON の全角(2026/01/01 等)も半角化して受理
|
|
965
965
|
if (s === '') return null;
|
|
966
966
|
let y, m, d;
|
|
967
967
|
const sep = /^(\d{4})[-/.](\d{1,2})[-/.](\d{1,2})$/.exec(s);
|
|
@@ -974,7 +974,7 @@
|
|
|
974
974
|
// 入力文字列 → 24時間制 'HH:MM' / 'HH:MM:SS'(不正は null)。24h と 12h(AM/PM) の両方を受理。
|
|
975
975
|
static _parseTime(s) {
|
|
976
976
|
// IME ON の全角(9:30 等)も半角化して受理
|
|
977
|
-
const m = /^(\d{1,2}):(\d{2})(?::(\d{2}))?\s*([AaPp][.]?[Mm][.]?)?$/.exec(TssGrid.
|
|
977
|
+
const m = /^(\d{1,2}):(\d{2})(?::(\d{2}))?\s*([AaPp][.]?[Mm][.]?)?$/.exec(TssGrid.zen2han(String(s).trim()));
|
|
978
978
|
if (!m) return null;
|
|
979
979
|
let h = +m[1]; const mi = +m[2], se = m[3] == null ? null : +m[3];
|
|
980
980
|
const ap = m[4] ? m[4][0].toLowerCase() : null; // 'a' | 'p' | null
|
|
@@ -991,9 +991,10 @@
|
|
|
991
991
|
return h + ':' + m[2] + (m[3] != null ? ':' + m[3] : '') + ' ' + ap;
|
|
992
992
|
}
|
|
993
993
|
// CellFormat: 入力(グルーピング/前後綴り混じり) → 正規化した数値文字列(保存値)。不正は null。
|
|
994
|
-
//
|
|
994
|
+
// 全角→半角(公開 static ユーティリティ)。数字・符号・小数点・カンマ・%・¥・空白+日付/時刻の区切り(/:)を半角化。
|
|
995
995
|
// 業務フォームの IME 誤入力対策(IME ON のまま「2026/01/01」「9:30」等を打っても弾かず半角で受理)。
|
|
996
|
-
|
|
996
|
+
// 内部(number/date/time の parse)で使うほか、カスタム parse/format から TssGrid.zen2han(v) として呼べる。
|
|
997
|
+
static zen2han(s) {
|
|
997
998
|
return String(s)
|
|
998
999
|
.replace(/[0-9]/g, ch => String.fromCharCode(ch.charCodeAt(0) - 0xFEE0))
|
|
999
1000
|
.replace(/+/g, '+').replace(/[-−ー―]/g, '-')
|
|
@@ -1003,7 +1004,7 @@
|
|
|
1003
1004
|
}
|
|
1004
1005
|
static _parseNumber(v, cfg) {
|
|
1005
1006
|
let s = String(v).trim();
|
|
1006
|
-
if (cfg.zenkaku !== false) s = TssGrid.
|
|
1007
|
+
if (cfg.zenkaku !== false) s = TssGrid.zen2han(s); // 既定で全角→半角(cfg.zenkaku:false で無効化)
|
|
1007
1008
|
if (cfg.prefix) s = s.split(cfg.prefix).join('');
|
|
1008
1009
|
if (cfg.suffix) s = s.split(cfg.suffix).join('');
|
|
1009
1010
|
s = s.replace(/,/g, '').replace(/\s/g, '');
|