tsgrid-ui 2.0.1 → 2.1.0
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 +24 -0
- package/dist/tsgrid-ui.css +2 -2
- package/dist/tsgrid-ui.d.ts +51 -27
- package/dist/tsgrid-ui.es6.js +1909 -1784
- package/dist/tsgrid-ui.js +1910 -1785
- package/dist/tsgrid-ui.min.css +2 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,30 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to **TsGrid UI** will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## v2.1.0 — 2026-05-13
|
|
6
|
+
|
|
7
|
+
### Refactor
|
|
8
|
+
|
|
9
|
+
Decomposed `TsUtils` into 5 stateless sub-modules — **no breaking changes**, no public API surface change. The class still exists with the same shape; method bodies are now one-line delegators that route to plain functions in sibling modules.
|
|
10
|
+
|
|
11
|
+
- `src/tsutils-type-guards.ts` — 9 type-guard functions (`isInt`, `isFloat`, `isMoney`, `isHex`, `isAlphaNumeric`, `isEmail`, `isIpAddress`, `isPlainObject`, `isBin`). `isFloat`/`isMoney` accept a `Pick<TsUISettings, ...>` slice for locale-aware testing.
|
|
12
|
+
- `src/tsutils-color.ts` — 4 color math functions (`parseColor`, `hsv2rgb`, `rgb2hsv`, `colorContrast`) + `TsColorRgb` type. Dual-form dispatch (object-arg vs positional) preserved using `typeof` detection — more robust than `arguments.length` under the delegator pattern.
|
|
13
|
+
- `src/tsutils-data.ts` — 10 data helpers (`clone`, `extend`, `naturalCompare`, `normMenu`, `getNested`, `encodeParams`, `prepareParams`, `parseRoute`, `debounce`, `wait`) + `TsCloneOptions`, `TsNormMenuOptions` types. `prepareParams` accepts `defaultDataType` parameter.
|
|
14
|
+
- `src/tsutils-string.ts` — 10 string/HTML helpers (`stripSpaces`, `stripTags`, `encodeTags`, `decodeTags`, `escapeId`, `unescapeId`, `base64encode`, `base64decode`, `sha256`, `execTemplate`).
|
|
15
|
+
- `src/tsutils-marker.ts` — `marker` + private DOM regex helpers (`_clearMarkers`, `_replace`).
|
|
16
|
+
|
|
17
|
+
`TsUtils` singleton shape and all ~788 call sites: **UNCHANGED**. SEMVER MINOR. BC verdict: NONE.
|
|
18
|
+
|
|
19
|
+
### Tests
|
|
20
|
+
|
|
21
|
+
Added 27 unit tests (84 → 111): 15 color cluster (`parseColor`, `hsv2rgb`, `rgb2hsv`, `colorContrast`) + 2 `isBin` ratchet + 2 object-form regression locks (`hsv2rgb`/`rgb2hsv`) + 6 data ratchet (`getNested`, `normMenu`) + 2 string ratchet (`decodeTags`, `execTemplate`).
|
|
22
|
+
|
|
23
|
+
### Bundle
|
|
24
|
+
|
|
25
|
+
Delta vs v2.0.1 baseline: `dist/tsgrid-ui.js` +0.15% (944,879 → 943,454 bytes), `dist/tsgrid-ui.es6.js` +0.15% (943,022 → 941,597 bytes). Within ±2% gate. PASSED.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
5
29
|
## v2.0.1 — 2026-05-13
|
|
6
30
|
|
|
7
31
|
### Fixed
|
package/dist/tsgrid-ui.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* tsgrid-ui 1.0.x (nightly) (5/
|
|
1
|
+
/* tsgrid-ui 1.0.x (nightly) (5/13/2026, 3:29:07 PM) (c) 2014 vitmalina@gmail.com, (c) 2026 DaverSoGT — MIT */
|
|
2
2
|
/**
|
|
3
3
|
* TODO:
|
|
4
4
|
* - remove default styling, only keep tsg-* styles
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
@font-face {
|
|
11
11
|
font-family: "tsgrid-font";
|
|
12
|
-
src: url("data:application/x-font-woff;charset=utf-8;base64,
|
|
12
|
+
src: url("data:application/x-font-woff;charset=utf-8;base64,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") format("woff");
|
|
13
13
|
font-weight: normal;
|
|
14
14
|
font-style: normal;
|
|
15
15
|
}
|
package/dist/tsgrid-ui.d.ts
CHANGED
|
@@ -227,6 +227,55 @@ declare class Query {
|
|
|
227
227
|
click(): Query;
|
|
228
228
|
}
|
|
229
229
|
|
|
230
|
+
/**
|
|
231
|
+
* Part of TsUi 2.0 library — color cluster sub-module
|
|
232
|
+
* - Extracted from src/tsutils.ts by v2.1 SDD refactor (Phase 2)
|
|
233
|
+
* - No dependencies on TsBase, TsUtils, or any other sub-module (L1 DAG leaf)
|
|
234
|
+
* - All exports are plain functions — no default export
|
|
235
|
+
*
|
|
236
|
+
* 4-space indent (project convention for sub-modules).
|
|
237
|
+
*/
|
|
238
|
+
/** RGB(A) color as returned by parseColor() */
|
|
239
|
+
interface TsColorRgb {
|
|
240
|
+
r: number;
|
|
241
|
+
g: number;
|
|
242
|
+
b: number;
|
|
243
|
+
a: number;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* TsUtils v2.1 — Data / Object helpers sub-module (Phase 3+4 of v2.1 SDD)
|
|
248
|
+
*
|
|
249
|
+
* Contains: TsCloneOptions, clone, extend,
|
|
250
|
+
* naturalCompare, normMenu, getNested, encodeParams,
|
|
251
|
+
* prepareParams, parseRoute, debounce, wait
|
|
252
|
+
*
|
|
253
|
+
* Rules:
|
|
254
|
+
* - No default export
|
|
255
|
+
* - No import from tsbase.ts (INV-4)
|
|
256
|
+
* - No this.-dispatch inside function bodies (INV-8)
|
|
257
|
+
* - 4-space indent
|
|
258
|
+
*/
|
|
259
|
+
/** Options for TsUtils.clone() */
|
|
260
|
+
interface TsCloneOptions {
|
|
261
|
+
functions?: boolean;
|
|
262
|
+
elements?: boolean;
|
|
263
|
+
events?: boolean;
|
|
264
|
+
exclude?: string[] | ((key: string, ctx: {
|
|
265
|
+
obj: unknown;
|
|
266
|
+
parent: string;
|
|
267
|
+
}) => boolean);
|
|
268
|
+
parent?: string;
|
|
269
|
+
}
|
|
270
|
+
/** Options for TsUtils.normMenu() */
|
|
271
|
+
interface TsNormMenuOptions {
|
|
272
|
+
itemMap?: {
|
|
273
|
+
id: string;
|
|
274
|
+
text: string;
|
|
275
|
+
};
|
|
276
|
+
[key: string]: unknown;
|
|
277
|
+
}
|
|
278
|
+
|
|
230
279
|
/**
|
|
231
280
|
* Part of TsUi 2.0 library
|
|
232
281
|
* - Dependencies: mQuery, TsUtils, TsBase, TsLocale
|
|
@@ -310,13 +359,7 @@ interface TsTimeResult {
|
|
|
310
359
|
minutes: number;
|
|
311
360
|
seconds: number;
|
|
312
361
|
}
|
|
313
|
-
|
|
314
|
-
interface TsColorRgb {
|
|
315
|
-
r: number;
|
|
316
|
-
g: number;
|
|
317
|
-
b: number;
|
|
318
|
-
a: number;
|
|
319
|
-
}
|
|
362
|
+
|
|
320
363
|
/** A normalized menu item */
|
|
321
364
|
interface TsMenuItem {
|
|
322
365
|
id: string | number | null;
|
|
@@ -327,25 +370,6 @@ interface TsMenuItem {
|
|
|
327
370
|
attrs?: string;
|
|
328
371
|
[key: string]: unknown;
|
|
329
372
|
}
|
|
330
|
-
/** Options for TsUtils.normMenu() */
|
|
331
|
-
interface TsNormMenuOptions {
|
|
332
|
-
itemMap?: {
|
|
333
|
-
id: string;
|
|
334
|
-
text: string;
|
|
335
|
-
};
|
|
336
|
-
[key: string]: unknown;
|
|
337
|
-
}
|
|
338
|
-
/** Options for TsUtils.clone() */
|
|
339
|
-
interface TsCloneOptions {
|
|
340
|
-
functions?: boolean;
|
|
341
|
-
elements?: boolean;
|
|
342
|
-
events?: boolean;
|
|
343
|
-
exclude?: string[] | ((key: string, ctx: {
|
|
344
|
-
obj: unknown;
|
|
345
|
-
parent: string;
|
|
346
|
-
}) => boolean);
|
|
347
|
-
parent?: string;
|
|
348
|
-
}
|
|
349
373
|
/** Promise-chain handle returned by TsUtils.message() / .confirm() / .prompt() */
|
|
350
374
|
interface TsMessageProm {
|
|
351
375
|
self: TsBase;
|
|
@@ -536,7 +560,7 @@ declare class Utils {
|
|
|
536
560
|
getStrWidth(str: string, styles?: string, raw?: boolean): any;
|
|
537
561
|
getStrHeight(str: string, styles?: string, raw?: boolean): any;
|
|
538
562
|
execTemplate(str: any, replace_obj: any): any;
|
|
539
|
-
marker(el: any, items: any, options?: any):
|
|
563
|
+
marker(el: any, items: any, options?: any): unknown;
|
|
540
564
|
lang(phrase: string, params?: Record<string, string | number> | boolean): string;
|
|
541
565
|
locale(locale: string | string[] | Record<string, unknown>, keepPhrases?: boolean, noMerge?: boolean): Promise<{
|
|
542
566
|
file: string;
|