tsgrid-ui 1.0.1 → 2.0.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 +48 -0
- package/MIGRATION_v2.md +178 -0
- package/dist/tsgrid-ui.css +2 -2
- package/dist/tsgrid-ui.d.ts +85 -85
- package/dist/tsgrid-ui.es6.js +10046 -9642
- package/dist/tsgrid-ui.js +10048 -9644
- package/dist/tsgrid-ui.min.css +2 -2
- package/package.json +22 -21
- package/{README.md → readme.md} +7 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,54 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to **TsGrid UI** will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## v2.0.1 — 2026-05-13
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- **`MIGRATION_v2.md` now included in the published npm tarball.** v2.0.0 omitted this file from `package.json` `files`, so `CHANGELOG.md` and `README.md` links pointing to `MIGRATION_v2.md` (codemod, bundle measurement, release checklist) broke on npmjs.com. No source code changes — package metadata only.
|
|
10
|
+
|
|
11
|
+
## v2.0.0 — 2026-05-09
|
|
12
|
+
|
|
13
|
+
### Breaking changes
|
|
14
|
+
|
|
15
|
+
**BC-1 — Event handler signatures changed (`CustomEvent` → `TsEventPayload`)**
|
|
16
|
+
|
|
17
|
+
All `on*` event handler properties across `TsGrid`, `TsForm`, and `TsField` now declare
|
|
18
|
+
`(event: TsEventPayload) => void` instead of `(event: CustomEvent) => void`.
|
|
19
|
+
|
|
20
|
+
This is a type-level correction: the runtime has always dispatched `TsEventPayload` objects,
|
|
21
|
+
never DOM `CustomEvent` instances. Consumers who explicitly annotated handlers with
|
|
22
|
+
`CustomEvent` will see a TypeScript compile error. Untyped or `any`-typed handlers are
|
|
23
|
+
unaffected. Mechanical migration via codemod — see [MIGRATION_v2.md § Codemod](MIGRATION_v2.md#codemod).
|
|
24
|
+
|
|
25
|
+
**BC-2 — Internal restructure; deep imports are unsupported**
|
|
26
|
+
|
|
27
|
+
`src/tsgrid.ts` has been decomposed from ~10,006 LOC into 8 sibling modules:
|
|
28
|
+
`grid-columns`, `grid-state`, `grid-data`, `grid-selection`, `grid-edit`, `grid-search`,
|
|
29
|
+
`grid-interaction`, `grid-render`. The public class `TsGrid` is now ~2,392 LOC (thin
|
|
30
|
+
orchestrator of one-liner delegators).
|
|
31
|
+
|
|
32
|
+
The public API surface is **UNCHANGED**: all method signatures, names, and behaviors are
|
|
33
|
+
preserved (verified by 84 Vitest + 38 Playwright tests). Consumers who import from the
|
|
34
|
+
public barrel (`import { TsGrid } from 'tsgrid-ui'`) require **no changes**. Subclasses
|
|
35
|
+
or code that inspects `TsGrid.prototype` directly may observe method bodies as one-line
|
|
36
|
+
delegators — this is expected behavior. Deep imports from internal paths
|
|
37
|
+
(`tsgrid-ui/src/*`) are not supported and may break.
|
|
38
|
+
|
|
39
|
+
### Bundle size disclosure
|
|
40
|
+
|
|
41
|
+
v2.0 is a structural refactor with no bundle reduction goal. Bundle size delta vs v1.0.1
|
|
42
|
+
baseline: **-0.19%** (actual: 941,597 bytes vs baseline: 943,401 bytes). No reduction is
|
|
43
|
+
claimed. Bundle improvements are deferred to v2.2 (multi-entry subpath exports +
|
|
44
|
+
tree-shaking). See [MIGRATION_v2.md § Bundle size measurement](MIGRATION_v2.md#bundle-size-measurement).
|
|
45
|
+
|
|
46
|
+
### Migration
|
|
47
|
+
|
|
48
|
+
See [MIGRATION_v2.md](MIGRATION_v2.md) for the codemod, full migration guide, and
|
|
49
|
+
release checklist.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
5
53
|
## [1.0.1] — Consumer DX fixes
|
|
6
54
|
|
|
7
55
|
Patch release driven by integrating tsgrid-ui v1.0.0 in a real Angular 21 standalone project. Three changes, no breaking, no API removals.
|
package/MIGRATION_v2.md
ADDED
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
# Migration Guide: v1.x to v2.0
|
|
2
|
+
|
|
3
|
+
<!-- baseline: 943401 bytes -->
|
|
4
|
+
|
|
5
|
+
## Bundle size measurement
|
|
6
|
+
|
|
7
|
+
| Metric | Value |
|
|
8
|
+
|--------|-------|
|
|
9
|
+
| Baseline (v1.0.1, pre-v2.0) | 943,401 bytes |
|
|
10
|
+
| Post-v2.0 actual | 941,597 bytes |
|
|
11
|
+
| Delta | -1,804 bytes (-0.19%) |
|
|
12
|
+
| Status | PASS (within ±2% gate) |
|
|
13
|
+
| Build date | 2026-05-09 |
|
|
14
|
+
|
|
15
|
+
v2.0 is a structural refactor with no bundle reduction goal. The -0.19% delta is
|
|
16
|
+
within the ±2% measurement gate and does not constitute a meaningful change. Bundle
|
|
17
|
+
improvements are explicitly deferred to v2.2 (multi-entry subpath exports + tree-shaking).
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Overview
|
|
22
|
+
|
|
23
|
+
`tsgrid-ui` v2.0 is a **code-organisation and type-system release**. No runtime behavior
|
|
24
|
+
changes between v1.0.1 and v2.0.0. All public API method signatures remain identical.
|
|
25
|
+
|
|
26
|
+
Two breaking changes are documented below (BC-1 and BC-2). Both were intentional and
|
|
27
|
+
are codemod-friendly.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Breaking Change BC-1: Event handler types
|
|
32
|
+
|
|
33
|
+
### What changed
|
|
34
|
+
|
|
35
|
+
All `on*` event handler properties on `TsGrid`, `TsForm`, and `TsField` now declare
|
|
36
|
+
`TsEventPayload` as the handler parameter type instead of `CustomEvent`.
|
|
37
|
+
|
|
38
|
+
**v1.x (old type):**
|
|
39
|
+
```ts
|
|
40
|
+
onSelect: ((event: CustomEvent) => void) | null
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**v2.0 (corrected type):**
|
|
44
|
+
```ts
|
|
45
|
+
onSelect: ((event: TsEventPayload) => void) | null
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Why this is a correction, not a new feature
|
|
49
|
+
|
|
50
|
+
The runtime event system in `TsGrid`/`TsForm` has always passed a `TsEventPayload`
|
|
51
|
+
object to handlers — never a DOM `CustomEvent`. The v1.x type declarations were
|
|
52
|
+
inaccurate. This change aligns the declared types with what was always happening at
|
|
53
|
+
runtime.
|
|
54
|
+
|
|
55
|
+
### Who is affected
|
|
56
|
+
|
|
57
|
+
Only consumers who **explicitly annotated** their handler parameter as `CustomEvent`:
|
|
58
|
+
|
|
59
|
+
```ts
|
|
60
|
+
// This breaks on v2.0 — parameter type mismatch
|
|
61
|
+
grid.onSelect = (event: CustomEvent) => {
|
|
62
|
+
console.log(event.detail)
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Consumers who used **no annotation** or **inferred types** are unaffected:
|
|
67
|
+
|
|
68
|
+
```ts
|
|
69
|
+
// These continue to work — TypeScript infers TsEventPayload
|
|
70
|
+
grid.onSelect = (event) => { console.log(event.detail) }
|
|
71
|
+
grid.onSelect = (event: TsEventPayload) => { console.log(event.detail) }
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Codemod
|
|
75
|
+
|
|
76
|
+
Apply the following regex to your source files to migrate in bulk:
|
|
77
|
+
|
|
78
|
+
**Find:**
|
|
79
|
+
```
|
|
80
|
+
\(event:\s*CustomEvent\)\s*=>
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**Replace:**
|
|
84
|
+
```
|
|
85
|
+
(event: TsEventPayload) =>
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**Caveats:**
|
|
89
|
+
1. You must add `import type { TsEventPayload } from 'tsgrid-ui'` to each migrated file.
|
|
90
|
+
2. The regex may produce false positives on unrelated DOM `CustomEvent` handler sites
|
|
91
|
+
(e.g., handlers attached via `element.addEventListener('custom', ...)`). Review
|
|
92
|
+
replacements manually before committing.
|
|
93
|
+
3. `event.detail` is now typed as `TsEventData` (with `[key: string]: unknown`). If you
|
|
94
|
+
accessed properties like `event.detail.someField`, TypeScript strict mode requires
|
|
95
|
+
bracket notation: `event.detail['someField']`. Cast as needed.
|
|
96
|
+
|
|
97
|
+
### Before / after example
|
|
98
|
+
|
|
99
|
+
The updated `test/consumer-smoke.ts` is the canonical reference. Below is a condensed
|
|
100
|
+
example:
|
|
101
|
+
|
|
102
|
+
**Before (v1.x):**
|
|
103
|
+
```ts
|
|
104
|
+
import { TsGrid } from 'tsgrid-ui'
|
|
105
|
+
|
|
106
|
+
const grid = new TsGrid({ name: 'my-grid', columns: [], records: [] })
|
|
107
|
+
|
|
108
|
+
// Explicit CustomEvent annotation — BREAKS on v2.0
|
|
109
|
+
grid.onSelect = (event: CustomEvent) => {
|
|
110
|
+
console.log(event.detail)
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**After (v2.0):**
|
|
115
|
+
```ts
|
|
116
|
+
import { TsGrid } from 'tsgrid-ui'
|
|
117
|
+
import type { TsEventPayload } from 'tsgrid-ui'
|
|
118
|
+
|
|
119
|
+
const grid = new TsGrid({ name: 'my-grid', columns: [], records: [] })
|
|
120
|
+
|
|
121
|
+
// Option A: explicit TsEventPayload annotation
|
|
122
|
+
grid.onSelect = (event: TsEventPayload) => {
|
|
123
|
+
console.log(event.detail)
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// Option B: remove the annotation — TypeScript infers correctly
|
|
127
|
+
grid.onSelect = (event) => {
|
|
128
|
+
console.log(event.detail)
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
`TsEventPayload` has been importable from `tsgrid-ui` since **v1.0.1**. Consumers may
|
|
133
|
+
pre-migrate before upgrading to v2.0.
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Breaking Change BC-2: Deep imports are unsupported
|
|
138
|
+
|
|
139
|
+
v2.0 decomposes `src/tsgrid.ts` into sibling modules (`src/grid-*.ts`). Any import from
|
|
140
|
+
an internal path is **not supported** and carries no stability guarantee:
|
|
141
|
+
|
|
142
|
+
```ts
|
|
143
|
+
// UNSUPPORTED — may break in any minor or patch release
|
|
144
|
+
import { someHelper } from 'tsgrid-ui/src/tsgrid'
|
|
145
|
+
import { someHelper } from 'tsgrid-ui/src/grid-columns'
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Always import from the public barrel:
|
|
149
|
+
|
|
150
|
+
```ts
|
|
151
|
+
// SUPPORTED — stable public API
|
|
152
|
+
import { TsGrid, TsEventPayload } from 'tsgrid-ui'
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## Bundle size disclosure
|
|
158
|
+
|
|
159
|
+
v2.0 decomposes the codebase for maintainability. **Bundle size is unchanged by design.**
|
|
160
|
+
Bundle improvements are deferred to v2.2 (multi-entry subpath exports + tree-shaking).
|
|
161
|
+
|
|
162
|
+
Do not expect or claim bundle size reduction from upgrading to v2.0.
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## Release checklist
|
|
167
|
+
|
|
168
|
+
> Reference — execute manually after PR review and approval. The SDD apply phase does NOT
|
|
169
|
+
> run any of these.
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
# After PR merged to master:
|
|
173
|
+
git checkout master && git pull
|
|
174
|
+
git tag -a v2.0.0 -m "v2.0.0 — TsGrid decomposition + event signature fix"
|
|
175
|
+
git push origin v2.0.0
|
|
176
|
+
pnpm publish --access public --tag latest
|
|
177
|
+
gh release create v2.0.0 --title "v2.0.0 — TsGrid v2 decomposition" --notes-from-tag
|
|
178
|
+
```
|
package/dist/tsgrid-ui.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* tsgrid-ui 1.0.x (nightly) (5/9/2026, 12:
|
|
1
|
+
/* tsgrid-ui 1.0.x (nightly) (5/9/2026, 12:14:18 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,d09GRgABAAAAAApYAAsAAAAAD0wAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADsAAABUIIslek9TLzIAAAFEAAAAQQAAAFZdKW6ZY21hcAAAAYgAAACiAAACNBnCLmJnbHlmAAACLAAABd8AAAfo+
|
|
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
|
@@ -1723,57 +1723,57 @@ declare class TsGrid extends TsBase {
|
|
|
1723
1723
|
operators: Record<string, any[]>;
|
|
1724
1724
|
defaultOperator: Record<string, string>;
|
|
1725
1725
|
operatorsMap: Record<string, string>;
|
|
1726
|
-
onAdd: ((event:
|
|
1727
|
-
onEdit: ((event:
|
|
1728
|
-
onRequest: ((event:
|
|
1729
|
-
onLoad: ((event:
|
|
1730
|
-
onDelete: ((event:
|
|
1731
|
-
onSave: ((event:
|
|
1732
|
-
onSelect: ((event:
|
|
1733
|
-
onClick: ((event:
|
|
1734
|
-
onDblClick: ((event:
|
|
1735
|
-
onContextMenu: ((event:
|
|
1736
|
-
onContextMenuClick: ((event:
|
|
1737
|
-
onColumnClick: ((event:
|
|
1738
|
-
onColumnDblClick: ((event:
|
|
1739
|
-
onColumnContextMenu: ((event:
|
|
1740
|
-
onColumnResize: ((event:
|
|
1741
|
-
onColumnAutoResize: ((event:
|
|
1742
|
-
onSort: ((event:
|
|
1743
|
-
onSearch: ((event:
|
|
1744
|
-
onSearchOpen: ((event:
|
|
1745
|
-
onSearchClose: ((event:
|
|
1746
|
-
onChange: ((event:
|
|
1747
|
-
onRestore: ((event:
|
|
1748
|
-
onExpand: ((event:
|
|
1749
|
-
onCollapse: ((event:
|
|
1750
|
-
onError: ((event:
|
|
1751
|
-
onKeydown: ((event:
|
|
1752
|
-
onToolbar: ((event:
|
|
1753
|
-
onColumnOnOff: ((event:
|
|
1754
|
-
onCopy: ((event:
|
|
1755
|
-
onPaste: ((event:
|
|
1756
|
-
onSelectionExtend: ((event:
|
|
1757
|
-
onEditField: ((event:
|
|
1758
|
-
onRender: ((event:
|
|
1759
|
-
onRefresh: ((event:
|
|
1760
|
-
onReload: ((event:
|
|
1761
|
-
onResize: ((event:
|
|
1762
|
-
onDestroy: ((event:
|
|
1763
|
-
onStateSave: ((event:
|
|
1764
|
-
onStateRestore: ((event:
|
|
1765
|
-
onFocus: ((event:
|
|
1766
|
-
onBlur: ((event:
|
|
1767
|
-
onReorderRow: ((event:
|
|
1768
|
-
onSearchSave: ((event:
|
|
1769
|
-
onSearchRemove: ((event:
|
|
1770
|
-
onSearchSelect: ((event:
|
|
1771
|
-
onColumnSelect: ((event:
|
|
1772
|
-
onColumnDragStart: ((event:
|
|
1773
|
-
onColumnDragEnd: ((event:
|
|
1774
|
-
onResizerDblClick: ((event:
|
|
1775
|
-
onMouseEnter: ((event:
|
|
1776
|
-
onMouseLeave: ((event:
|
|
1726
|
+
onAdd: ((event: TsEventPayload) => void) | null;
|
|
1727
|
+
onEdit: ((event: TsEventPayload) => void) | null;
|
|
1728
|
+
onRequest: ((event: TsEventPayload) => void) | null;
|
|
1729
|
+
onLoad: ((event: TsEventPayload) => void) | null;
|
|
1730
|
+
onDelete: ((event: TsEventPayload) => void) | null;
|
|
1731
|
+
onSave: ((event: TsEventPayload) => void) | null;
|
|
1732
|
+
onSelect: ((event: TsEventPayload) => void) | null;
|
|
1733
|
+
onClick: ((event: TsEventPayload) => void) | null;
|
|
1734
|
+
onDblClick: ((event: TsEventPayload) => void) | null;
|
|
1735
|
+
onContextMenu: ((event: TsEventPayload) => void) | null;
|
|
1736
|
+
onContextMenuClick: ((event: TsEventPayload) => void) | null;
|
|
1737
|
+
onColumnClick: ((event: TsEventPayload) => void) | null;
|
|
1738
|
+
onColumnDblClick: ((event: TsEventPayload) => void) | null;
|
|
1739
|
+
onColumnContextMenu: ((event: TsEventPayload) => void) | null;
|
|
1740
|
+
onColumnResize: ((event: TsEventPayload) => void) | null;
|
|
1741
|
+
onColumnAutoResize: ((event: TsEventPayload) => void) | null;
|
|
1742
|
+
onSort: ((event: TsEventPayload) => void) | null;
|
|
1743
|
+
onSearch: ((event: TsEventPayload) => void) | null;
|
|
1744
|
+
onSearchOpen: ((event: TsEventPayload) => void) | null;
|
|
1745
|
+
onSearchClose: ((event: TsEventPayload) => void) | null;
|
|
1746
|
+
onChange: ((event: TsEventPayload) => void) | null;
|
|
1747
|
+
onRestore: ((event: TsEventPayload) => void) | null;
|
|
1748
|
+
onExpand: ((event: TsEventPayload) => void) | null;
|
|
1749
|
+
onCollapse: ((event: TsEventPayload) => void) | null;
|
|
1750
|
+
onError: ((event: TsEventPayload) => void) | null;
|
|
1751
|
+
onKeydown: ((event: TsEventPayload) => void) | null;
|
|
1752
|
+
onToolbar: ((event: TsEventPayload) => void) | null;
|
|
1753
|
+
onColumnOnOff: ((event: TsEventPayload) => void) | null;
|
|
1754
|
+
onCopy: ((event: TsEventPayload) => void) | null;
|
|
1755
|
+
onPaste: ((event: TsEventPayload) => void) | null;
|
|
1756
|
+
onSelectionExtend: ((event: TsEventPayload) => void) | null;
|
|
1757
|
+
onEditField: ((event: TsEventPayload) => void) | null;
|
|
1758
|
+
onRender: ((event: TsEventPayload) => void) | null;
|
|
1759
|
+
onRefresh: ((event: TsEventPayload) => void) | null;
|
|
1760
|
+
onReload: ((event: TsEventPayload) => void) | null;
|
|
1761
|
+
onResize: ((event: TsEventPayload) => void) | null;
|
|
1762
|
+
onDestroy: ((event: TsEventPayload) => void) | null;
|
|
1763
|
+
onStateSave: ((event: TsEventPayload) => void) | null;
|
|
1764
|
+
onStateRestore: ((event: TsEventPayload) => void) | null;
|
|
1765
|
+
onFocus: ((event: TsEventPayload) => void) | null;
|
|
1766
|
+
onBlur: ((event: TsEventPayload) => void) | null;
|
|
1767
|
+
onReorderRow: ((event: TsEventPayload) => void) | null;
|
|
1768
|
+
onSearchSave: ((event: TsEventPayload) => void) | null;
|
|
1769
|
+
onSearchRemove: ((event: TsEventPayload) => void) | null;
|
|
1770
|
+
onSearchSelect: ((event: TsEventPayload) => void) | null;
|
|
1771
|
+
onColumnSelect: ((event: TsEventPayload) => void) | null;
|
|
1772
|
+
onColumnDragStart: ((event: TsEventPayload) => void) | null;
|
|
1773
|
+
onColumnDragEnd: ((event: TsEventPayload) => void) | null;
|
|
1774
|
+
onResizerDblClick: ((event: TsEventPayload) => void) | null;
|
|
1775
|
+
onMouseEnter: ((event: TsEventPayload) => void) | null;
|
|
1776
|
+
onMouseLeave: ((event: TsEventPayload) => void) | null;
|
|
1777
1777
|
constructor(options: Record<string, any>);
|
|
1778
1778
|
add(record: TsGridRecord | TsGridRecord[], first?: boolean): number;
|
|
1779
1779
|
find(obj?: Record<string, any>, returnIndex?: boolean, displayedOnly?: boolean): (string | number)[];
|
|
@@ -1801,13 +1801,13 @@ declare class TsGrid extends TsBase {
|
|
|
1801
1801
|
hideColumn(...fields: string[]): number;
|
|
1802
1802
|
/** Add one or more search fields. If `search` is omitted, `before` is treated as the search(es) to append. */
|
|
1803
1803
|
addSearch(before: any, search?: any): number;
|
|
1804
|
-
removeSearch(...fields: string[]):
|
|
1804
|
+
removeSearch(...fields: string[]): any;
|
|
1805
1805
|
getSearch(): string[];
|
|
1806
1806
|
getSearch(field: string, returnIndex: true): number | null;
|
|
1807
1807
|
getSearch(field: string, returnIndex?: false): TsGridSearch | null;
|
|
1808
|
-
toggleSearch(...fields: string[]):
|
|
1809
|
-
showSearch(...fields: string[]):
|
|
1810
|
-
hideSearch(...fields: string[]):
|
|
1808
|
+
toggleSearch(...fields: string[]): any;
|
|
1809
|
+
showSearch(...fields: string[]): any;
|
|
1810
|
+
hideSearch(...fields: string[]): any;
|
|
1811
1811
|
getSearchData(field: string): Record<string, any> | null;
|
|
1812
1812
|
localSort(silent?: boolean, noResetRefresh?: boolean): number | undefined;
|
|
1813
1813
|
localSearch(silent?: boolean): number | undefined;
|
|
@@ -1821,7 +1821,7 @@ declare class TsGrid extends TsBase {
|
|
|
1821
1821
|
addRange(rangesInput: TsGridRange | TsGridRange[] | string | Record<string, any>): number;
|
|
1822
1822
|
removeRange(...names: string[]): number;
|
|
1823
1823
|
refreshRanges(): number | undefined;
|
|
1824
|
-
select(...selectArgs: any[]):
|
|
1824
|
+
select(...selectArgs: any[]): any;
|
|
1825
1825
|
unselect(...unselectArgs: any[]): number;
|
|
1826
1826
|
compareSelection(newSel: any[]): {
|
|
1827
1827
|
select: any[];
|
|
@@ -1852,17 +1852,17 @@ declare class TsGrid extends TsBase {
|
|
|
1852
1852
|
* compat with the v2.0 API and for callers that genuinely handle both modes.
|
|
1853
1853
|
*/
|
|
1854
1854
|
getSelection(returnIndex?: boolean): RecId[] | number[] | TsGridCellSelection[];
|
|
1855
|
-
search(field?: any, value?: any):
|
|
1856
|
-
searchOpen(options?: any):
|
|
1855
|
+
search(field?: any, value?: any): any;
|
|
1856
|
+
searchOpen(options?: any): any;
|
|
1857
1857
|
searchClose(): void;
|
|
1858
|
-
searchFieldTooltip(ind: any, sd_ind: any, el: any):
|
|
1859
|
-
searchSuggest(imediate?: boolean, forceHide?: boolean, anchor?: HTMLElement | Element):
|
|
1858
|
+
searchFieldTooltip(ind: any, sd_ind: any, el: any): any;
|
|
1859
|
+
searchSuggest(imediate?: boolean, forceHide?: boolean, anchor?: HTMLElement | Element): any;
|
|
1860
1860
|
searchSave(): void;
|
|
1861
1861
|
cache(type: any): any;
|
|
1862
|
-
cacheSave(type: any, value: any):
|
|
1862
|
+
cacheSave(type: any, value: any): any;
|
|
1863
1863
|
searchReset(noReload?: boolean): void;
|
|
1864
1864
|
searchShowFields(forceHide?: boolean): void;
|
|
1865
|
-
searchInitInput(field: string, _value?: any):
|
|
1865
|
+
searchInitInput(field: string, _value?: any): any;
|
|
1866
1866
|
clear(noRefresh?: boolean): void;
|
|
1867
1867
|
reset(noRefresh?: boolean): void;
|
|
1868
1868
|
skip(offset: any, callBack?: any): void;
|
|
@@ -1874,14 +1874,14 @@ declare class TsGrid extends TsBase {
|
|
|
1874
1874
|
getChanges(recordsBase?: TsGridRecord[]): Record<string, any>[];
|
|
1875
1875
|
mergeChanges(): void;
|
|
1876
1876
|
save(callBack?: (data: any) => void): void;
|
|
1877
|
-
editField(recid: string | number, column: number, value: any, event?: any):
|
|
1878
|
-
editChange(input?: any, index?: any, column?: any, event?: any):
|
|
1879
|
-
editDone(index?: any, column?: any, event?: any):
|
|
1877
|
+
editField(recid: string | number, column: number, value: any, event?: any): any;
|
|
1878
|
+
editChange(input?: any, index?: any, column?: any, event?: any): any;
|
|
1879
|
+
editDone(index?: any, column?: any, event?: any): any;
|
|
1880
1880
|
'delete'(force?: boolean): void;
|
|
1881
1881
|
click(recid: string | number | {
|
|
1882
1882
|
recid: string | number;
|
|
1883
1883
|
column?: number;
|
|
1884
|
-
} | any, event?: MouseEvent | any):
|
|
1884
|
+
} | any, event?: MouseEvent | any): any;
|
|
1885
1885
|
columnClick(field: string, event?: MouseEvent | any): void;
|
|
1886
1886
|
columnDblClick(field: any, event: any): void;
|
|
1887
1887
|
columnContextMenu(field: any, event: any): void;
|
|
@@ -1895,7 +1895,7 @@ declare class TsGrid extends TsBase {
|
|
|
1895
1895
|
dblClick(recid: string | number | {
|
|
1896
1896
|
recid: string | number;
|
|
1897
1897
|
column?: number;
|
|
1898
|
-
} | any, event?: MouseEvent | any):
|
|
1898
|
+
} | any, event?: MouseEvent | any): any;
|
|
1899
1899
|
showContextMenu(event: MouseEvent | any, options: {
|
|
1900
1900
|
recid?: string | number;
|
|
1901
1901
|
index?: number;
|
|
@@ -1942,9 +1942,9 @@ declare class TsGrid extends TsBase {
|
|
|
1942
1942
|
resizeBoxes(): void;
|
|
1943
1943
|
resizeRecords(): void;
|
|
1944
1944
|
getSearchesHTML(): string;
|
|
1945
|
-
getOperators(type: any, opers: any):
|
|
1946
|
-
initOperator(ind: any):
|
|
1947
|
-
initSearchLists(changedField?: any):
|
|
1945
|
+
getOperators(type: any, opers: any): any;
|
|
1946
|
+
initOperator(ind: any): any;
|
|
1947
|
+
initSearchLists(changedField?: any): any;
|
|
1948
1948
|
initSearches(): void;
|
|
1949
1949
|
getColumnsHTML(): string[];
|
|
1950
1950
|
getColumnCellHTML(i: any): string;
|
|
@@ -2071,21 +2071,21 @@ declare class TsForm extends TsBase {
|
|
|
2071
2071
|
errorsShown?: boolean;
|
|
2072
2072
|
observeResize?: ResizeObserver;
|
|
2073
2073
|
};
|
|
2074
|
-
onRequest: ((event:
|
|
2075
|
-
onLoad: ((event:
|
|
2076
|
-
onValidate: ((event:
|
|
2077
|
-
onSubmit: ((event:
|
|
2078
|
-
onProgress: ((event:
|
|
2079
|
-
onSave: ((event:
|
|
2080
|
-
onChange: ((event:
|
|
2081
|
-
onInput: ((event:
|
|
2082
|
-
onRender: ((event:
|
|
2083
|
-
onRefresh: ((event:
|
|
2084
|
-
onResize: ((event:
|
|
2085
|
-
onDestroy: ((event:
|
|
2086
|
-
onAction: ((event:
|
|
2087
|
-
onToolbar: ((event:
|
|
2088
|
-
onError: ((event:
|
|
2074
|
+
onRequest: ((event: TsEventPayload) => void) | null;
|
|
2075
|
+
onLoad: ((event: TsEventPayload) => void) | null;
|
|
2076
|
+
onValidate: ((event: TsEventPayload) => void) | null;
|
|
2077
|
+
onSubmit: ((event: TsEventPayload) => void) | null;
|
|
2078
|
+
onProgress: ((event: TsEventPayload) => void) | null;
|
|
2079
|
+
onSave: ((event: TsEventPayload) => void) | null;
|
|
2080
|
+
onChange: ((event: TsEventPayload) => void) | null;
|
|
2081
|
+
onInput: ((event: TsEventPayload) => void) | null;
|
|
2082
|
+
onRender: ((event: TsEventPayload) => void) | null;
|
|
2083
|
+
onRefresh: ((event: TsEventPayload) => void) | null;
|
|
2084
|
+
onResize: ((event: TsEventPayload) => void) | null;
|
|
2085
|
+
onDestroy: ((event: TsEventPayload) => void) | null;
|
|
2086
|
+
onAction: ((event: TsEventPayload) => void) | null;
|
|
2087
|
+
onToolbar: ((event: TsEventPayload) => void) | null;
|
|
2088
|
+
onError: ((event: TsEventPayload) => void) | null;
|
|
2089
2089
|
msgRefresh: string;
|
|
2090
2090
|
msgSaving: string;
|
|
2091
2091
|
msgServerError: string;
|