@toolbox-web/grid 1.22.1 → 1.23.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/README.md +20 -10
- package/all.js +2 -2
- package/all.js.map +1 -1
- package/index.js +1 -1
- package/index.js.map +1 -1
- package/lib/core/grid.d.ts +88 -1
- package/lib/core/grid.d.ts.map +1 -1
- package/lib/core/types.d.ts +61 -0
- package/lib/core/types.d.ts.map +1 -1
- package/lib/plugins/clipboard/index.js.map +1 -1
- package/lib/plugins/column-virtualization/index.js.map +1 -1
- package/lib/plugins/context-menu/index.js.map +1 -1
- package/lib/plugins/editing/EditingPlugin.d.ts +132 -1
- package/lib/plugins/editing/EditingPlugin.d.ts.map +1 -1
- package/lib/plugins/editing/editors.d.ts.map +1 -1
- package/lib/plugins/editing/index.d.ts +1 -0
- package/lib/plugins/editing/index.d.ts.map +1 -1
- package/lib/plugins/editing/index.js +1 -1
- package/lib/plugins/editing/index.js.map +1 -1
- package/lib/plugins/editing/internal/dirty-tracking.d.ts +90 -0
- package/lib/plugins/editing/internal/dirty-tracking.d.ts.map +1 -0
- package/lib/plugins/editing/types.d.ts +82 -0
- package/lib/plugins/editing/types.d.ts.map +1 -1
- package/lib/plugins/export/index.js.map +1 -1
- package/lib/plugins/filtering/FilteringPlugin.d.ts +17 -4
- package/lib/plugins/filtering/FilteringPlugin.d.ts.map +1 -1
- package/lib/plugins/filtering/index.js +1 -1
- package/lib/plugins/filtering/index.js.map +1 -1
- package/lib/plugins/grouping-columns/index.js.map +1 -1
- package/lib/plugins/grouping-rows/index.js.map +1 -1
- package/lib/plugins/master-detail/index.js.map +1 -1
- package/lib/plugins/multi-sort/index.js.map +1 -1
- package/lib/plugins/pinned-columns/index.js.map +1 -1
- package/lib/plugins/pinned-rows/index.js.map +1 -1
- package/lib/plugins/pivot/index.js.map +1 -1
- package/lib/plugins/print/index.js.map +1 -1
- package/lib/plugins/reorder/index.js.map +1 -1
- package/lib/plugins/responsive/index.js.map +1 -1
- package/lib/plugins/row-reorder/index.js.map +1 -1
- package/lib/plugins/selection/index.js.map +1 -1
- package/lib/plugins/server-side/index.js.map +1 -1
- package/lib/plugins/tree/index.js.map +1 -1
- package/lib/plugins/undo-redo/UndoRedoPlugin.d.ts +52 -7
- package/lib/plugins/undo-redo/UndoRedoPlugin.d.ts.map +1 -1
- package/lib/plugins/undo-redo/history.d.ts +11 -4
- package/lib/plugins/undo-redo/history.d.ts.map +1 -1
- package/lib/plugins/undo-redo/index.d.ts +1 -1
- package/lib/plugins/undo-redo/index.d.ts.map +1 -1
- package/lib/plugins/undo-redo/index.js +1 -1
- package/lib/plugins/undo-redo/index.js.map +1 -1
- package/lib/plugins/undo-redo/types.d.ts +20 -3
- package/lib/plugins/undo-redo/types.d.ts.map +1 -1
- package/lib/plugins/visibility/index.js.map +1 -1
- package/package.json +1 -1
- package/public.d.ts +1 -1
- package/public.d.ts.map +1 -1
- package/umd/grid.all.umd.js +1 -1
- package/umd/grid.all.umd.js.map +1 -1
- package/umd/grid.umd.js +1 -1
- package/umd/grid.umd.js.map +1 -1
- package/umd/plugins/editing.umd.js +1 -1
- package/umd/plugins/editing.umd.js.map +1 -1
- package/umd/plugins/filtering.umd.js +1 -1
- package/umd/plugins/filtering.umd.js.map +1 -1
- package/umd/plugins/undo-redo.umd.js +1 -1
- package/umd/plugins/undo-redo.umd.js.map +1 -1
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure functions for dirty tracking baseline management.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from EditingPlugin to keep the plugin under the 2,000 line target.
|
|
5
|
+
* All functions are stateless — the caller owns the baseline `Map`.
|
|
6
|
+
*
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Detail for `dirty-change` custom events.
|
|
11
|
+
*/
|
|
12
|
+
export interface DirtyChangeDetail<T = unknown> {
|
|
13
|
+
/** Row ID (from getRowId) */
|
|
14
|
+
rowId: string;
|
|
15
|
+
/** Current row data */
|
|
16
|
+
row: T;
|
|
17
|
+
/** Baseline (original) row data, or undefined for newly inserted rows */
|
|
18
|
+
original: T | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* Transition type:
|
|
21
|
+
* - `'modified'` — row differs from baseline
|
|
22
|
+
* - `'new'` — row was inserted via `insertRow()` and has no baseline
|
|
23
|
+
* - `'reverted'` — row was reverted to baseline via `revertRow()`
|
|
24
|
+
* - `'pristine'` — row was explicitly marked pristine via `markAsPristine()`
|
|
25
|
+
*/
|
|
26
|
+
type: 'modified' | 'new' | 'reverted' | 'pristine';
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Result of getDirtyRows(): each entry has the row ID, original (baseline),
|
|
30
|
+
* and current data.
|
|
31
|
+
*/
|
|
32
|
+
export interface DirtyRowEntry<T = unknown> {
|
|
33
|
+
id: string;
|
|
34
|
+
original: T;
|
|
35
|
+
current: T;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Detail for `baselines-captured` custom events.
|
|
39
|
+
*
|
|
40
|
+
* Emitted after the render pipeline completes when new baseline snapshots
|
|
41
|
+
* were captured during `processRows`.
|
|
42
|
+
*/
|
|
43
|
+
export interface BaselinesCapturedDetail {
|
|
44
|
+
/** Total number of tracked baselines (not just newly captured). */
|
|
45
|
+
count: number;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Capture baselines for rows not already tracked (first-write-wins).
|
|
49
|
+
*
|
|
50
|
+
* Uses `structuredClone` for deep copy so nested objects cannot be mutated
|
|
51
|
+
* through shared references.
|
|
52
|
+
*
|
|
53
|
+
* @param baselines - Map of rowId → deep-cloned baseline row data
|
|
54
|
+
* @param rows - Rows to snapshot
|
|
55
|
+
* @param getRowId - Function to resolve row ID (may throw; exceptions are swallowed)
|
|
56
|
+
*/
|
|
57
|
+
export declare function captureBaselines<T>(baselines: Map<string, T>, rows: readonly T[], getRowId: (row: T) => string | undefined): void;
|
|
58
|
+
/**
|
|
59
|
+
* Check whether a row's current data differs from its baseline.
|
|
60
|
+
*
|
|
61
|
+
* Uses deep property comparison so that `structuredClone`'d baselines
|
|
62
|
+
* with nested objects/arrays/Dates compare correctly.
|
|
63
|
+
*/
|
|
64
|
+
export declare function isRowDirty<T>(baselines: Map<string, T>, rowId: string, currentRow: T): boolean;
|
|
65
|
+
/**
|
|
66
|
+
* Check whether a single cell (field) differs from its baseline value.
|
|
67
|
+
*
|
|
68
|
+
* Returns `false` when no baseline exists for the row.
|
|
69
|
+
*/
|
|
70
|
+
export declare function isCellDirty<T>(baselines: Map<string, T>, rowId: string, currentRow: T, field: string): boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Mark a row as pristine: re-snapshot baseline from current data.
|
|
73
|
+
*
|
|
74
|
+
* After calling this, `isRowDirty` returns `false` for the row (until it
|
|
75
|
+
* is edited again).
|
|
76
|
+
*/
|
|
77
|
+
export declare function markPristine<T>(baselines: Map<string, T>, rowId: string, currentRow: T): void;
|
|
78
|
+
/**
|
|
79
|
+
* Get the original (baseline) row data as a deep clone.
|
|
80
|
+
*
|
|
81
|
+
* Returns `undefined` if no baseline exists (e.g. newly inserted row).
|
|
82
|
+
*/
|
|
83
|
+
export declare function getOriginalRow<T>(baselines: Map<string, T>, rowId: string): T | undefined;
|
|
84
|
+
/**
|
|
85
|
+
* Revert a row to its baseline values by mutating the current row in-place.
|
|
86
|
+
*
|
|
87
|
+
* Returns `true` if a baseline existed and the row was reverted, `false` otherwise.
|
|
88
|
+
*/
|
|
89
|
+
export declare function revertToBaseline<T>(baselines: Map<string, T>, rowId: string, currentRow: T): boolean;
|
|
90
|
+
//# sourceMappingURL=dirty-tracking.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dirty-tracking.d.ts","sourceRoot":"","sources":["../../../../../../../libs/grid/src/lib/plugins/editing/internal/dirty-tracking.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,GAAG,OAAO;IAC5C,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,GAAG,EAAE,CAAC,CAAC;IACP,yEAAyE;IACzE,QAAQ,EAAE,CAAC,GAAG,SAAS,CAAC;IACxB;;;;;;OAMG;IACH,IAAI,EAAE,UAAU,GAAG,KAAK,GAAG,UAAU,GAAG,UAAU,CAAC;CACpD;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,OAAO;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,CAAC,CAAC;IACZ,OAAO,EAAE,CAAC,CAAC;CACZ;AAED;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;CACf;AAMD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EACzB,IAAI,EAAE,SAAS,CAAC,EAAE,EAClB,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,GAAG,SAAS,GACvC,IAAI,CAWN;AAMD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,GAAG,OAAO,CAI9F;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAM9G;AA2CD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,GAAG,IAAI,CAE7F;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAGzF;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,GAAG,OAAO,CASpG"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ColumnEditorContext } from '../../core/types';
|
|
2
|
+
import { BaselinesCapturedDetail, DirtyChangeDetail } from './internal/dirty-tracking';
|
|
2
3
|
/**
|
|
3
4
|
* Event detail for cell value commit.
|
|
4
5
|
*
|
|
@@ -190,6 +191,46 @@ declare module '../../core/types' {
|
|
|
190
191
|
* ```
|
|
191
192
|
*/
|
|
192
193
|
editorParams?: EditorParams;
|
|
194
|
+
/**
|
|
195
|
+
* Whether this column allows `null` values. Requires EditingPlugin.
|
|
196
|
+
*
|
|
197
|
+
* When `true`:
|
|
198
|
+
* - **Text/number editors**: clearing all content commits `null`.
|
|
199
|
+
* - **Select editors**: a "(Blank)" option is automatically prepended that
|
|
200
|
+
* commits `null`. The label defaults to `"(Blank)"` and can be overridden
|
|
201
|
+
* via `SelectEditorParams.emptyLabel`.
|
|
202
|
+
* - **Date editors**: clearing the date commits `null`.
|
|
203
|
+
*
|
|
204
|
+
* When `false`:
|
|
205
|
+
* - **Text editors**: clearing commits `""` (empty string).
|
|
206
|
+
* - **Number editors**: clearing commits `editorParams.min` if set, otherwise `0`.
|
|
207
|
+
* - **Select editors**: no blank option is shown, forcing a selection.
|
|
208
|
+
* - **Date editors**: clearing commits `editorParams.default` if set,
|
|
209
|
+
* otherwise today's date. The fallback preserves the original type
|
|
210
|
+
* (string → `"YYYY-MM-DD"`, Date → `new Date()`).
|
|
211
|
+
*
|
|
212
|
+
* When omitted (default), behaviour matches `false` for text/number columns
|
|
213
|
+
* and no special handling is applied.
|
|
214
|
+
*
|
|
215
|
+
* Custom editors can read `column.nullable` from the {@link ColumnEditorContext}
|
|
216
|
+
* to implement their own nullable behaviour.
|
|
217
|
+
*
|
|
218
|
+
* @default false
|
|
219
|
+
*
|
|
220
|
+
* @example
|
|
221
|
+
* ```typescript
|
|
222
|
+
* columns: [
|
|
223
|
+
* { field: 'nickname', editable: true, nullable: true },
|
|
224
|
+
* { field: 'department', type: 'select', editable: true, nullable: true,
|
|
225
|
+
* options: [{ label: 'Engineering', value: 'eng' }, { label: 'Sales', value: 'sales' }] },
|
|
226
|
+
* { field: 'price', type: 'number', editable: true, nullable: false,
|
|
227
|
+
* editorParams: { min: 0 } }, // clears to 0
|
|
228
|
+
* { field: 'startDate', type: 'date', editable: true, nullable: false,
|
|
229
|
+
* editorParams: { default: '2024-01-01' } }, // clears to Jan 1 2024
|
|
230
|
+
* ]
|
|
231
|
+
* ```
|
|
232
|
+
*/
|
|
233
|
+
nullable?: boolean;
|
|
193
234
|
}
|
|
194
235
|
interface TypeDefault {
|
|
195
236
|
/**
|
|
@@ -272,6 +313,10 @@ declare module '../../core/types' {
|
|
|
272
313
|
'before-edit-close': BeforeEditCloseDetail<TRow>;
|
|
273
314
|
/** Fired when a row leaves edit mode, whether committed or reverted (row mode only). */
|
|
274
315
|
'edit-close': EditCloseDetail<TRow>;
|
|
316
|
+
/** Fired when a row's dirty state changes (requires `dirtyTracking: true`). */
|
|
317
|
+
'dirty-change': DirtyChangeDetail<TRow>;
|
|
318
|
+
/** Fired after the render pipeline completes when new baselines were captured (requires `dirtyTracking: true`). */
|
|
319
|
+
'baselines-captured': BaselinesCapturedDetail;
|
|
275
320
|
}
|
|
276
321
|
interface PluginNameMap {
|
|
277
322
|
editing: import('./EditingPlugin').EditingPlugin;
|
|
@@ -294,6 +339,37 @@ export interface EditingConfig {
|
|
|
294
339
|
* @default 'row'
|
|
295
340
|
*/
|
|
296
341
|
mode?: 'row' | 'grid';
|
|
342
|
+
/**
|
|
343
|
+
* Enable per-row dirty tracking against deep-cloned baselines.
|
|
344
|
+
*
|
|
345
|
+
* When `true`, the plugin captures a `structuredClone` snapshot of each
|
|
346
|
+
* row the first time it appears in `processRows` (first-write-wins).
|
|
347
|
+
* Subsequent edits are compared against this baseline to determine dirty
|
|
348
|
+
* state.
|
|
349
|
+
*
|
|
350
|
+
* **Requires** `getRowId` to be resolvable (via config or `row.id` /
|
|
351
|
+
* `row._id` fallback). The plugin throws a clear error at activation time
|
|
352
|
+
* if row identity cannot be determined.
|
|
353
|
+
*
|
|
354
|
+
* @default false
|
|
355
|
+
*
|
|
356
|
+
* @example
|
|
357
|
+
* ```typescript
|
|
358
|
+
* const grid = document.querySelector('tbw-grid');
|
|
359
|
+
* grid.gridConfig = {
|
|
360
|
+
* getRowId: (r) => r.id,
|
|
361
|
+
* columns: [...],
|
|
362
|
+
* plugins: [new EditingPlugin({ editOn: 'dblclick', dirtyTracking: true })],
|
|
363
|
+
* };
|
|
364
|
+
*
|
|
365
|
+
* // After editing:
|
|
366
|
+
* const editing = grid.getPluginByName('editing')!;
|
|
367
|
+
* editing.isDirty('row-1'); // true if row differs from baseline
|
|
368
|
+
* editing.getDirtyRows(); // [{ id, original, current }]
|
|
369
|
+
* editing.markAsPristine('row-1'); // re-snapshot after save
|
|
370
|
+
* ```
|
|
371
|
+
*/
|
|
372
|
+
dirtyTracking?: boolean;
|
|
297
373
|
/**
|
|
298
374
|
* Controls when editing is triggered (only applies to `mode: 'row'`).
|
|
299
375
|
* - 'click': Edit on single click (default)
|
|
@@ -421,6 +497,12 @@ export interface DateEditorParams {
|
|
|
421
497
|
max?: string;
|
|
422
498
|
/** Placeholder text when empty */
|
|
423
499
|
placeholder?: string;
|
|
500
|
+
/**
|
|
501
|
+
* Default date used when the user clears a non-nullable date column.
|
|
502
|
+
* Accepts an ISO date string (`'YYYY-MM-DD'`) or a `Date` object.
|
|
503
|
+
* When omitted, today's date is used as the fallback.
|
|
504
|
+
*/
|
|
505
|
+
default?: string | Date;
|
|
424
506
|
}
|
|
425
507
|
/**
|
|
426
508
|
* Configuration parameters for the built-in select editor.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../libs/grid/src/lib/plugins/editing/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../libs/grid/src/lib/plugins/editing/types.ts"],"names":[],"mappings":"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"}
|