@rozie-ui/data-table-lit 0.7.3 → 0.8.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 +19 -0
- package/README.md +5 -1
- package/dist/index.cjs +534 -33
- package/dist/index.d.cts +79 -9
- package/dist/index.d.mts +79 -9
- package/dist/index.mjs +534 -33
- package/package.json +2 -2
- package/src/Column.ts +59 -23
- package/src/DataTable.ts +516 -37
- package/src/helpers/activeFollow.ts +42 -0
- package/src/helpers/columnRuleUtils.ts +105 -0
- package/src/helpers/heldView.ts +185 -0
package/dist/index.d.cts
CHANGED
|
@@ -2,6 +2,24 @@ import * as _$lit from "lit";
|
|
|
2
2
|
import { LitElement } from "lit";
|
|
3
3
|
import { Column as Column$1, ColumnDef, ColumnFiltersState, ColumnOrderState, ColumnPinningState, ColumnSizingState, ExpandedState, GroupingState, PaginationState, RowSelectionState, SortingState, VisibilityState } from "@tanstack/table-core";
|
|
4
4
|
|
|
5
|
+
//#region src/helpers/heldView.d.ts
|
|
6
|
+
interface ViewState {
|
|
7
|
+
held: boolean;
|
|
8
|
+
filterMismatches: number;
|
|
9
|
+
sortMismatches: number;
|
|
10
|
+
}
|
|
11
|
+
interface HoldController {
|
|
12
|
+
setActive(active: boolean): void;
|
|
13
|
+
isActive(): boolean;
|
|
14
|
+
isHolding(): boolean;
|
|
15
|
+
capture(table: any): void;
|
|
16
|
+
release(): void;
|
|
17
|
+
noteWrite(prev: readonly unknown[], next: readonly unknown[]): void;
|
|
18
|
+
wrapFiltered(base: (table: any) => () => any): (table: any) => () => any;
|
|
19
|
+
wrapSorted(base: (table: any) => () => any): (table: any) => () => any;
|
|
20
|
+
viewState(table: any): ViewState;
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
5
23
|
//#region src/DataTable.d.ts
|
|
6
24
|
/** A cell position as integers over the visible (display-order) model. */
|
|
7
25
|
interface DataTableCellPosition {
|
|
@@ -58,6 +76,12 @@ interface DataTableHistoryChangePayload {
|
|
|
58
76
|
canUndo: boolean;
|
|
59
77
|
canRedo: boolean;
|
|
60
78
|
}
|
|
79
|
+
/** The held-view state (`holdView`): whether the view is held right now, and how many rows the held view disagrees with. */
|
|
80
|
+
interface DataTableViewState {
|
|
81
|
+
held: boolean;
|
|
82
|
+
filterMismatches: number;
|
|
83
|
+
sortMismatches: number;
|
|
84
|
+
}
|
|
61
85
|
/** The `range-change` payload: the new range corners (both `null` when the range cleared). */
|
|
62
86
|
type DataTableRangeChangePayload = DataTableRange;
|
|
63
87
|
/** The `row-activate` payload. `row` is the original data object and `index` its position in the rendered model. */
|
|
@@ -71,7 +95,7 @@ interface DataTableVisibleRangeChangePayload {
|
|
|
71
95
|
start: number;
|
|
72
96
|
end: number;
|
|
73
97
|
}
|
|
74
|
-
interface RozieDataTableEventMap extends Omit<HTMLElementEventMap, 'activecell-change' | 'cell-edit-commit' | 'expand-change' | 'filter-change' | 'group-change' | 'history-change' | 'page-change' | 'pin-change' | 'range-change' | 'reorder-change' | 'resize-change' | 'row-activate' | 'row-edit-commit' | 'selection-change' | 'sort-change' | 'visibility-change' | 'visible-range-change' | 'data-change' | 'sorting-change' | 'global-filter-change' | 'column-filters-change' | 'pagination-change' | 'expanded-change' | 'grouping-change' | 'row-selection-change' | 'column-visibility-change' | 'column-sizing-change' | 'column-order-change' | 'column-pinning-change'> {
|
|
98
|
+
interface RozieDataTableEventMap extends Omit<HTMLElementEventMap, 'activecell-change' | 'cell-edit-commit' | 'expand-change' | 'filter-change' | 'group-change' | 'history-change' | 'page-change' | 'pin-change' | 'range-change' | 'reorder-change' | 'resize-change' | 'row-activate' | 'row-edit-commit' | 'selection-change' | 'sort-change' | 'visibility-change' | 'view-state-change' | 'visible-range-change' | 'data-change' | 'sorting-change' | 'global-filter-change' | 'column-filters-change' | 'pagination-change' | 'expanded-change' | 'grouping-change' | 'row-selection-change' | 'column-visibility-change' | 'column-sizing-change' | 'column-order-change' | 'column-pinning-change'> {
|
|
75
99
|
'activecell-change': CustomEvent<DataTableActiveCellChangePayload>;
|
|
76
100
|
'cell-edit-commit': CustomEvent<DataTableCellEditCommitPayload>;
|
|
77
101
|
'expand-change': CustomEvent<ExpandedState>;
|
|
@@ -88,6 +112,7 @@ interface RozieDataTableEventMap extends Omit<HTMLElementEventMap, 'activecell-c
|
|
|
88
112
|
'selection-change': CustomEvent<RowSelectionState>;
|
|
89
113
|
'sort-change': CustomEvent<SortingState>;
|
|
90
114
|
'visibility-change': CustomEvent<VisibilityState>;
|
|
115
|
+
'view-state-change': CustomEvent<DataTableViewState>;
|
|
91
116
|
'visible-range-change': CustomEvent<DataTableVisibleRangeChangePayload>;
|
|
92
117
|
'data-change': CustomEvent<any[]>;
|
|
93
118
|
'sorting-change': CustomEvent<any[]>;
|
|
@@ -114,7 +139,7 @@ declare class DataTable extends DataTable_base {
|
|
|
114
139
|
_data_attr: any[];
|
|
115
140
|
private _dataControllable;
|
|
116
141
|
/**
|
|
117
|
-
* Config-array column fallback (lower precedence than `<Column>` children). Each entry: `{ id?, field, header?, sortable?, filterable?, pinned?, width? }
|
|
142
|
+
* Config-array column fallback (lower precedence than `<Column>` children). Each entry: `{ id?, field, header?, sortable?, filterable?, filterFn?, sortingFn?, pinned?, width? }` (`filterFn`/`sortingFn` take a table-core built-in name or a custom function). Columns may come from this array, from `<Column>` children, or both (id-keyed last-write-wins union). A `pinned` value of `'left'` or `'right'` is applied once as the table's initial `columnPinning` state — identical to `<Column pinned>` — which also REORDERS that column, since table-core orders visible cells `[left-pinned, center, right-pinned]`. A consumer who has already expressed a pin (an initial two-way `columnPinning` model value or an interactive pin) owns the slice and this declaration is ignored.
|
|
118
143
|
*/
|
|
119
144
|
columns: any[];
|
|
120
145
|
/**
|
|
@@ -224,6 +249,10 @@ declare class DataTable extends DataTable_base {
|
|
|
224
249
|
* The maximum number of undo steps retained (oldest evicted past this depth). Only consulted when `undoable` is `true`.
|
|
225
250
|
*/
|
|
226
251
|
undoLimit: number;
|
|
252
|
+
/**
|
|
253
|
+
* When `true`, the table holds its current view through its own writes (edit, paste, fill, cut, clear, the boolean toggle, undo and redo): rows keep the membership and order they had before the write and new values render in place, so an edited row does not jump or vanish under an active sort or filter. The view is re-derived (and both mismatch counts reset to 0) when `sorting`, `columnFilters` or `globalFilter` change, when `refreshView()` is called, when the dataset is swapped externally, or when `holdView` is toggled. Paging, page size, column visibility/order/pinning/sizing and expanding rows move through the held rows; a table write or `refreshView()` never changes the page (a sort, filter or grouping change returns to the first page). Falls back to live behaviour (with one console warning) while grouping is active, in `manual` mode, or with tree data (`getSubRows`). Passing a fresh `data` array that did not come from the table (for example reloading from the server after a save) is an external swap: it re-derives the view and clears undo history. Track mismatches with `view-state-change` / `getViewState()`.
|
|
254
|
+
*/
|
|
255
|
+
holdView: boolean;
|
|
227
256
|
/**
|
|
228
257
|
* Opt-in windowing grammar: `false` (default, off — byte-identical to a non-virtual table) | `true` or `'rows'` (vertical row windowing; `true` is byte-behavior-identical to every existing consumer, zero churn) | `'columns'` (horizontal column windowing) | `'both'` (both axes windowed). Row windowing renders only the visible slice of rows inside a bounded `rdt-scroll` container (with leading/trailing spacer rows preserving total scroll height), windowing over the full filtered + sorted (pre-pagination) model and suppressing the client pagination chrome. Column windowing renders only the visible slice of leaf columns inside the same `rdt-scroll` container. An unrecognised string behaves as `false`.
|
|
229
258
|
*/
|
|
@@ -426,6 +455,24 @@ declare class DataTable extends DataTable_base {
|
|
|
426
455
|
undoStack: unknown[];
|
|
427
456
|
redoStack: unknown[];
|
|
428
457
|
restoringHistory: boolean;
|
|
458
|
+
holdCtrl: HoldController;
|
|
459
|
+
heldFilteredRowModel: (table: any) => () => any;
|
|
460
|
+
heldSortedRowModel: (table: any) => () => any;
|
|
461
|
+
pendingViewChange: boolean;
|
|
462
|
+
pendingWrite: boolean;
|
|
463
|
+
prevRowIds: string[] | null;
|
|
464
|
+
lastFedData: unknown;
|
|
465
|
+
lastViewState: ViewState;
|
|
466
|
+
lastHoldSorting: unknown;
|
|
467
|
+
lastHoldColumnFilters: unknown;
|
|
468
|
+
lastHoldGlobalFilter: unknown;
|
|
469
|
+
holdFallbackWarned: boolean;
|
|
470
|
+
lastPageGrouping: unknown;
|
|
471
|
+
lastColumnSig: string;
|
|
472
|
+
columnSetSignature: (defs: any) => string;
|
|
473
|
+
lastPropsData: unknown;
|
|
474
|
+
isExternalSwap: () => boolean;
|
|
475
|
+
syncHoldActive: (st: any) => void;
|
|
429
476
|
expandedTouched: boolean;
|
|
430
477
|
groupingActiveDefault: () => boolean;
|
|
431
478
|
effectiveColumnPinning: () => any;
|
|
@@ -464,6 +511,10 @@ declare class DataTable extends DataTable_base {
|
|
|
464
511
|
validate: any;
|
|
465
512
|
};
|
|
466
513
|
size?: number;
|
|
514
|
+
pinned: any;
|
|
515
|
+
width: any;
|
|
516
|
+
filterFn?: string | Function;
|
|
517
|
+
sortingFn?: string | Function;
|
|
467
518
|
id: string;
|
|
468
519
|
accessorKey: any;
|
|
469
520
|
header: any;
|
|
@@ -473,8 +524,6 @@ declare class DataTable extends DataTable_base {
|
|
|
473
524
|
expandable: boolean;
|
|
474
525
|
groupable: boolean;
|
|
475
526
|
aggregationFn: string | ((columnId: any, leafRows: any, childRows: any) => any);
|
|
476
|
-
pinned: any;
|
|
477
|
-
width: any;
|
|
478
527
|
columns?: undefined;
|
|
479
528
|
};
|
|
480
529
|
columnDefsCache: any[] | null;
|
|
@@ -601,8 +650,8 @@ declare class DataTable extends DataTable_base {
|
|
|
601
650
|
buildSortFilterAnnounce: () => string;
|
|
602
651
|
rowIdOption: () => (originalRow: any, index: any, parent: any) => string;
|
|
603
652
|
rowSelectionOption: () => boolean | ((row: any) => boolean);
|
|
653
|
+
writePaginationSoon: (next: any) => void;
|
|
604
654
|
reFeed: () => void;
|
|
605
|
-
lastPropsData: unknown;
|
|
606
655
|
maybeClearHistoryOnExternalSwap: () => void;
|
|
607
656
|
lastData: any;
|
|
608
657
|
lastDataLen: number;
|
|
@@ -684,6 +733,8 @@ declare class DataTable extends DataTable_base {
|
|
|
684
733
|
pinColumn: (colId: string, side: 'left' | 'right' | false) => void;
|
|
685
734
|
getRowIndexRelativeToPage: (absRow?: number) => number;
|
|
686
735
|
cut: () => void;
|
|
736
|
+
refreshView: () => void;
|
|
737
|
+
getViewState: () => DataTableViewState;
|
|
687
738
|
isGrid: () => boolean;
|
|
688
739
|
tableRole: () => "grid" | "table";
|
|
689
740
|
cellRole: () => "gridcell" | "cell";
|
|
@@ -742,13 +793,18 @@ declare class DataTable extends DataTable_base {
|
|
|
742
793
|
onGridClick: (e: any) => void;
|
|
743
794
|
onGridFocusOut: (e: any) => void;
|
|
744
795
|
recoverGridFocus: (rowKey: any, col: any, level: any, guardMoved?: boolean) => void;
|
|
745
|
-
|
|
796
|
+
followOpenEditors: (prevIds: any, nextIds: any) => boolean;
|
|
797
|
+
rowIdInModel: (index: any) => any;
|
|
798
|
+
modelIndexOfRowId: (id: any) => number;
|
|
799
|
+
followActiveCell: (prevIds: any, nextIds: any, viewChangeOrWrite: any, rowCount: any, colCount: any, editFollowPending?: boolean) => void;
|
|
800
|
+
clampActiveCell: (rowCount: any, colCount: any, follow?: any, editFollowPending?: boolean, focusEmptyPark?: boolean) => void;
|
|
746
801
|
windowedHeadersFor: (hg: any, hgLevel: any) => any;
|
|
747
802
|
windowedColSpan: () => any;
|
|
748
803
|
lastColSizeSig: number;
|
|
749
804
|
remeasureColumnSizes: () => void;
|
|
750
805
|
remeasureColumnWindow: () => void;
|
|
751
806
|
gridEmptyFallback: boolean;
|
|
807
|
+
activeCellEngaged: boolean;
|
|
752
808
|
rangeTransition: boolean;
|
|
753
809
|
rangeClickPending: any;
|
|
754
810
|
rangeActive: boolean;
|
|
@@ -902,8 +958,8 @@ declare class DataTable extends DataTable_base {
|
|
|
902
958
|
set pagination(v: any);
|
|
903
959
|
get expanded(): any | boolean;
|
|
904
960
|
set expanded(v: any | boolean);
|
|
905
|
-
get grouping(): any[];
|
|
906
|
-
set grouping(v: any[]);
|
|
961
|
+
get grouping(): any[] | null;
|
|
962
|
+
set grouping(v: any[] | null);
|
|
907
963
|
get rowSelection(): any;
|
|
908
964
|
set rowSelection(v: any);
|
|
909
965
|
get columnVisibility(): any;
|
|
@@ -966,6 +1022,14 @@ declare class Column extends Column_base {
|
|
|
966
1022
|
* The table-core aggregation for this column inside a group-header cell. Either a built-in name string — `'sum'` | `'min'` | `'max'` | `'extent'` | `'mean'` | `'median'` | `'unique'` | `'uniqueCount'` | `'count'` — or a custom function `(columnId, leafRows, childRows) => any` (defensively wrapped by the parent so a throw cannot crash grouping). Null → no aggregation (the group-header cell renders as a placeholder).
|
|
967
1023
|
*/
|
|
968
1024
|
aggregationFn: string | (((...args: any[]) => any) | null);
|
|
1025
|
+
/**
|
|
1026
|
+
* The table-core filter rule for this column. Either a built-in name string (e.g. `'arrIncludesSome'`, `'equalsString'`) or a custom function `(value, filterValue, row) => boolean`, where `row` is the original data object. Null → table-core's auto rule for the column's value type.
|
|
1027
|
+
*/
|
|
1028
|
+
filterFn: string | (((...args: any[]) => any) | null);
|
|
1029
|
+
/**
|
|
1030
|
+
* The table-core sort rule for this column. Either a built-in name string (e.g. `'alphanumeric'`, `'basic'`) or a custom ascending comparator `(a, b, rowA, rowB) => number` over the cell values, with the original data objects as `rowA` / `rowB`. Null → table-core's auto rule for the column's value type.
|
|
1031
|
+
*/
|
|
1032
|
+
sortingFn: string | (((...args: any[]) => any) | null);
|
|
969
1033
|
/**
|
|
970
1034
|
* Whether this column's cells are editable (opt-in). Default `false` → the column is read-only and the display↔editor branch never mounts an editor. Bind `:editable="true"` (a bare attr only coerces on Vue+Lit).
|
|
971
1035
|
*/
|
|
@@ -993,6 +1057,10 @@ declare class Column extends Column_base {
|
|
|
993
1057
|
render(): _$lit.TemplateResult<1>;
|
|
994
1058
|
reg: any;
|
|
995
1059
|
registered: boolean;
|
|
1060
|
+
latestFilterFn: any;
|
|
1061
|
+
latestSortingFn: any;
|
|
1062
|
+
filterTrampoline: any;
|
|
1063
|
+
sortingTrampoline: (...args: any[]) => any;
|
|
996
1064
|
colId: () => string;
|
|
997
1065
|
buildSpec: () => {
|
|
998
1066
|
id: string;
|
|
@@ -1005,6 +1073,8 @@ declare class Column extends Column_base {
|
|
|
1005
1073
|
expandable: boolean;
|
|
1006
1074
|
groupable: boolean;
|
|
1007
1075
|
aggregationFn: string | ((...args: any[]) => any);
|
|
1076
|
+
filterFn: any;
|
|
1077
|
+
sortingFn: string | ((...args: any[]) => any);
|
|
1008
1078
|
editable: boolean;
|
|
1009
1079
|
editor: string;
|
|
1010
1080
|
editorOptions: any[];
|
|
@@ -1478,4 +1548,4 @@ declare class DetailPanel extends DetailPanel_base {
|
|
|
1478
1548
|
}[];
|
|
1479
1549
|
}
|
|
1480
1550
|
//#endregion
|
|
1481
|
-
export { Column, DataTable, DataTable as default, DataTableActiveCell, DataTableActiveCellChangePayload, DataTableCellChange, DataTableCellEditCommitPayload, DataTableCellPosition, DataTableFilterChangePayload, DataTableGroupableColumn, DataTableHistoryChangePayload, DataTableRange, DataTableRangeChangePayload, DataTableRowActivatePayload, DataTableRowEditCommitPayload, DataTableVisibleRangeChangePayload, DetailPanel, EditorCheckbox, EditorDate, EditorNumber, EditorSelect, EditorText, FilterNumberRange, FilterSelect, FilterText, GroupBar, type RozieDataTableEventMap };
|
|
1551
|
+
export { Column, DataTable, DataTable as default, DataTableActiveCell, DataTableActiveCellChangePayload, DataTableCellChange, DataTableCellEditCommitPayload, DataTableCellPosition, DataTableFilterChangePayload, DataTableGroupableColumn, DataTableHistoryChangePayload, DataTableRange, DataTableRangeChangePayload, DataTableRowActivatePayload, DataTableRowEditCommitPayload, DataTableViewState, DataTableVisibleRangeChangePayload, DetailPanel, EditorCheckbox, EditorDate, EditorNumber, EditorSelect, EditorText, FilterNumberRange, FilterSelect, FilterText, GroupBar, type RozieDataTableEventMap };
|
package/dist/index.d.mts
CHANGED
|
@@ -2,6 +2,24 @@ import * as _$lit from "lit";
|
|
|
2
2
|
import { LitElement } from "lit";
|
|
3
3
|
import { Column as Column$1, ColumnDef, ColumnFiltersState, ColumnOrderState, ColumnPinningState, ColumnSizingState, ExpandedState, GroupingState, PaginationState, RowSelectionState, SortingState, VisibilityState } from "@tanstack/table-core";
|
|
4
4
|
|
|
5
|
+
//#region src/helpers/heldView.d.ts
|
|
6
|
+
interface ViewState {
|
|
7
|
+
held: boolean;
|
|
8
|
+
filterMismatches: number;
|
|
9
|
+
sortMismatches: number;
|
|
10
|
+
}
|
|
11
|
+
interface HoldController {
|
|
12
|
+
setActive(active: boolean): void;
|
|
13
|
+
isActive(): boolean;
|
|
14
|
+
isHolding(): boolean;
|
|
15
|
+
capture(table: any): void;
|
|
16
|
+
release(): void;
|
|
17
|
+
noteWrite(prev: readonly unknown[], next: readonly unknown[]): void;
|
|
18
|
+
wrapFiltered(base: (table: any) => () => any): (table: any) => () => any;
|
|
19
|
+
wrapSorted(base: (table: any) => () => any): (table: any) => () => any;
|
|
20
|
+
viewState(table: any): ViewState;
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
5
23
|
//#region src/DataTable.d.ts
|
|
6
24
|
/** A cell position as integers over the visible (display-order) model. */
|
|
7
25
|
interface DataTableCellPosition {
|
|
@@ -58,6 +76,12 @@ interface DataTableHistoryChangePayload {
|
|
|
58
76
|
canUndo: boolean;
|
|
59
77
|
canRedo: boolean;
|
|
60
78
|
}
|
|
79
|
+
/** The held-view state (`holdView`): whether the view is held right now, and how many rows the held view disagrees with. */
|
|
80
|
+
interface DataTableViewState {
|
|
81
|
+
held: boolean;
|
|
82
|
+
filterMismatches: number;
|
|
83
|
+
sortMismatches: number;
|
|
84
|
+
}
|
|
61
85
|
/** The `range-change` payload: the new range corners (both `null` when the range cleared). */
|
|
62
86
|
type DataTableRangeChangePayload = DataTableRange;
|
|
63
87
|
/** The `row-activate` payload. `row` is the original data object and `index` its position in the rendered model. */
|
|
@@ -71,7 +95,7 @@ interface DataTableVisibleRangeChangePayload {
|
|
|
71
95
|
start: number;
|
|
72
96
|
end: number;
|
|
73
97
|
}
|
|
74
|
-
interface RozieDataTableEventMap extends Omit<HTMLElementEventMap, 'activecell-change' | 'cell-edit-commit' | 'expand-change' | 'filter-change' | 'group-change' | 'history-change' | 'page-change' | 'pin-change' | 'range-change' | 'reorder-change' | 'resize-change' | 'row-activate' | 'row-edit-commit' | 'selection-change' | 'sort-change' | 'visibility-change' | 'visible-range-change' | 'data-change' | 'sorting-change' | 'global-filter-change' | 'column-filters-change' | 'pagination-change' | 'expanded-change' | 'grouping-change' | 'row-selection-change' | 'column-visibility-change' | 'column-sizing-change' | 'column-order-change' | 'column-pinning-change'> {
|
|
98
|
+
interface RozieDataTableEventMap extends Omit<HTMLElementEventMap, 'activecell-change' | 'cell-edit-commit' | 'expand-change' | 'filter-change' | 'group-change' | 'history-change' | 'page-change' | 'pin-change' | 'range-change' | 'reorder-change' | 'resize-change' | 'row-activate' | 'row-edit-commit' | 'selection-change' | 'sort-change' | 'visibility-change' | 'view-state-change' | 'visible-range-change' | 'data-change' | 'sorting-change' | 'global-filter-change' | 'column-filters-change' | 'pagination-change' | 'expanded-change' | 'grouping-change' | 'row-selection-change' | 'column-visibility-change' | 'column-sizing-change' | 'column-order-change' | 'column-pinning-change'> {
|
|
75
99
|
'activecell-change': CustomEvent<DataTableActiveCellChangePayload>;
|
|
76
100
|
'cell-edit-commit': CustomEvent<DataTableCellEditCommitPayload>;
|
|
77
101
|
'expand-change': CustomEvent<ExpandedState>;
|
|
@@ -88,6 +112,7 @@ interface RozieDataTableEventMap extends Omit<HTMLElementEventMap, 'activecell-c
|
|
|
88
112
|
'selection-change': CustomEvent<RowSelectionState>;
|
|
89
113
|
'sort-change': CustomEvent<SortingState>;
|
|
90
114
|
'visibility-change': CustomEvent<VisibilityState>;
|
|
115
|
+
'view-state-change': CustomEvent<DataTableViewState>;
|
|
91
116
|
'visible-range-change': CustomEvent<DataTableVisibleRangeChangePayload>;
|
|
92
117
|
'data-change': CustomEvent<any[]>;
|
|
93
118
|
'sorting-change': CustomEvent<any[]>;
|
|
@@ -114,7 +139,7 @@ declare class DataTable extends DataTable_base {
|
|
|
114
139
|
_data_attr: any[];
|
|
115
140
|
private _dataControllable;
|
|
116
141
|
/**
|
|
117
|
-
* Config-array column fallback (lower precedence than `<Column>` children). Each entry: `{ id?, field, header?, sortable?, filterable?, pinned?, width? }
|
|
142
|
+
* Config-array column fallback (lower precedence than `<Column>` children). Each entry: `{ id?, field, header?, sortable?, filterable?, filterFn?, sortingFn?, pinned?, width? }` (`filterFn`/`sortingFn` take a table-core built-in name or a custom function). Columns may come from this array, from `<Column>` children, or both (id-keyed last-write-wins union). A `pinned` value of `'left'` or `'right'` is applied once as the table's initial `columnPinning` state — identical to `<Column pinned>` — which also REORDERS that column, since table-core orders visible cells `[left-pinned, center, right-pinned]`. A consumer who has already expressed a pin (an initial two-way `columnPinning` model value or an interactive pin) owns the slice and this declaration is ignored.
|
|
118
143
|
*/
|
|
119
144
|
columns: any[];
|
|
120
145
|
/**
|
|
@@ -224,6 +249,10 @@ declare class DataTable extends DataTable_base {
|
|
|
224
249
|
* The maximum number of undo steps retained (oldest evicted past this depth). Only consulted when `undoable` is `true`.
|
|
225
250
|
*/
|
|
226
251
|
undoLimit: number;
|
|
252
|
+
/**
|
|
253
|
+
* When `true`, the table holds its current view through its own writes (edit, paste, fill, cut, clear, the boolean toggle, undo and redo): rows keep the membership and order they had before the write and new values render in place, so an edited row does not jump or vanish under an active sort or filter. The view is re-derived (and both mismatch counts reset to 0) when `sorting`, `columnFilters` or `globalFilter` change, when `refreshView()` is called, when the dataset is swapped externally, or when `holdView` is toggled. Paging, page size, column visibility/order/pinning/sizing and expanding rows move through the held rows; a table write or `refreshView()` never changes the page (a sort, filter or grouping change returns to the first page). Falls back to live behaviour (with one console warning) while grouping is active, in `manual` mode, or with tree data (`getSubRows`). Passing a fresh `data` array that did not come from the table (for example reloading from the server after a save) is an external swap: it re-derives the view and clears undo history. Track mismatches with `view-state-change` / `getViewState()`.
|
|
254
|
+
*/
|
|
255
|
+
holdView: boolean;
|
|
227
256
|
/**
|
|
228
257
|
* Opt-in windowing grammar: `false` (default, off — byte-identical to a non-virtual table) | `true` or `'rows'` (vertical row windowing; `true` is byte-behavior-identical to every existing consumer, zero churn) | `'columns'` (horizontal column windowing) | `'both'` (both axes windowed). Row windowing renders only the visible slice of rows inside a bounded `rdt-scroll` container (with leading/trailing spacer rows preserving total scroll height), windowing over the full filtered + sorted (pre-pagination) model and suppressing the client pagination chrome. Column windowing renders only the visible slice of leaf columns inside the same `rdt-scroll` container. An unrecognised string behaves as `false`.
|
|
229
258
|
*/
|
|
@@ -426,6 +455,24 @@ declare class DataTable extends DataTable_base {
|
|
|
426
455
|
undoStack: unknown[];
|
|
427
456
|
redoStack: unknown[];
|
|
428
457
|
restoringHistory: boolean;
|
|
458
|
+
holdCtrl: HoldController;
|
|
459
|
+
heldFilteredRowModel: (table: any) => () => any;
|
|
460
|
+
heldSortedRowModel: (table: any) => () => any;
|
|
461
|
+
pendingViewChange: boolean;
|
|
462
|
+
pendingWrite: boolean;
|
|
463
|
+
prevRowIds: string[] | null;
|
|
464
|
+
lastFedData: unknown;
|
|
465
|
+
lastViewState: ViewState;
|
|
466
|
+
lastHoldSorting: unknown;
|
|
467
|
+
lastHoldColumnFilters: unknown;
|
|
468
|
+
lastHoldGlobalFilter: unknown;
|
|
469
|
+
holdFallbackWarned: boolean;
|
|
470
|
+
lastPageGrouping: unknown;
|
|
471
|
+
lastColumnSig: string;
|
|
472
|
+
columnSetSignature: (defs: any) => string;
|
|
473
|
+
lastPropsData: unknown;
|
|
474
|
+
isExternalSwap: () => boolean;
|
|
475
|
+
syncHoldActive: (st: any) => void;
|
|
429
476
|
expandedTouched: boolean;
|
|
430
477
|
groupingActiveDefault: () => boolean;
|
|
431
478
|
effectiveColumnPinning: () => any;
|
|
@@ -464,6 +511,10 @@ declare class DataTable extends DataTable_base {
|
|
|
464
511
|
validate: any;
|
|
465
512
|
};
|
|
466
513
|
size?: number;
|
|
514
|
+
pinned: any;
|
|
515
|
+
width: any;
|
|
516
|
+
filterFn?: string | Function;
|
|
517
|
+
sortingFn?: string | Function;
|
|
467
518
|
id: string;
|
|
468
519
|
accessorKey: any;
|
|
469
520
|
header: any;
|
|
@@ -473,8 +524,6 @@ declare class DataTable extends DataTable_base {
|
|
|
473
524
|
expandable: boolean;
|
|
474
525
|
groupable: boolean;
|
|
475
526
|
aggregationFn: string | ((columnId: any, leafRows: any, childRows: any) => any);
|
|
476
|
-
pinned: any;
|
|
477
|
-
width: any;
|
|
478
527
|
columns?: undefined;
|
|
479
528
|
};
|
|
480
529
|
columnDefsCache: any[] | null;
|
|
@@ -601,8 +650,8 @@ declare class DataTable extends DataTable_base {
|
|
|
601
650
|
buildSortFilterAnnounce: () => string;
|
|
602
651
|
rowIdOption: () => (originalRow: any, index: any, parent: any) => string;
|
|
603
652
|
rowSelectionOption: () => boolean | ((row: any) => boolean);
|
|
653
|
+
writePaginationSoon: (next: any) => void;
|
|
604
654
|
reFeed: () => void;
|
|
605
|
-
lastPropsData: unknown;
|
|
606
655
|
maybeClearHistoryOnExternalSwap: () => void;
|
|
607
656
|
lastData: any;
|
|
608
657
|
lastDataLen: number;
|
|
@@ -684,6 +733,8 @@ declare class DataTable extends DataTable_base {
|
|
|
684
733
|
pinColumn: (colId: string, side: 'left' | 'right' | false) => void;
|
|
685
734
|
getRowIndexRelativeToPage: (absRow?: number) => number;
|
|
686
735
|
cut: () => void;
|
|
736
|
+
refreshView: () => void;
|
|
737
|
+
getViewState: () => DataTableViewState;
|
|
687
738
|
isGrid: () => boolean;
|
|
688
739
|
tableRole: () => "grid" | "table";
|
|
689
740
|
cellRole: () => "gridcell" | "cell";
|
|
@@ -742,13 +793,18 @@ declare class DataTable extends DataTable_base {
|
|
|
742
793
|
onGridClick: (e: any) => void;
|
|
743
794
|
onGridFocusOut: (e: any) => void;
|
|
744
795
|
recoverGridFocus: (rowKey: any, col: any, level: any, guardMoved?: boolean) => void;
|
|
745
|
-
|
|
796
|
+
followOpenEditors: (prevIds: any, nextIds: any) => boolean;
|
|
797
|
+
rowIdInModel: (index: any) => any;
|
|
798
|
+
modelIndexOfRowId: (id: any) => number;
|
|
799
|
+
followActiveCell: (prevIds: any, nextIds: any, viewChangeOrWrite: any, rowCount: any, colCount: any, editFollowPending?: boolean) => void;
|
|
800
|
+
clampActiveCell: (rowCount: any, colCount: any, follow?: any, editFollowPending?: boolean, focusEmptyPark?: boolean) => void;
|
|
746
801
|
windowedHeadersFor: (hg: any, hgLevel: any) => any;
|
|
747
802
|
windowedColSpan: () => any;
|
|
748
803
|
lastColSizeSig: number;
|
|
749
804
|
remeasureColumnSizes: () => void;
|
|
750
805
|
remeasureColumnWindow: () => void;
|
|
751
806
|
gridEmptyFallback: boolean;
|
|
807
|
+
activeCellEngaged: boolean;
|
|
752
808
|
rangeTransition: boolean;
|
|
753
809
|
rangeClickPending: any;
|
|
754
810
|
rangeActive: boolean;
|
|
@@ -902,8 +958,8 @@ declare class DataTable extends DataTable_base {
|
|
|
902
958
|
set pagination(v: any);
|
|
903
959
|
get expanded(): any | boolean;
|
|
904
960
|
set expanded(v: any | boolean);
|
|
905
|
-
get grouping(): any[];
|
|
906
|
-
set grouping(v: any[]);
|
|
961
|
+
get grouping(): any[] | null;
|
|
962
|
+
set grouping(v: any[] | null);
|
|
907
963
|
get rowSelection(): any;
|
|
908
964
|
set rowSelection(v: any);
|
|
909
965
|
get columnVisibility(): any;
|
|
@@ -966,6 +1022,14 @@ declare class Column extends Column_base {
|
|
|
966
1022
|
* The table-core aggregation for this column inside a group-header cell. Either a built-in name string — `'sum'` | `'min'` | `'max'` | `'extent'` | `'mean'` | `'median'` | `'unique'` | `'uniqueCount'` | `'count'` — or a custom function `(columnId, leafRows, childRows) => any` (defensively wrapped by the parent so a throw cannot crash grouping). Null → no aggregation (the group-header cell renders as a placeholder).
|
|
967
1023
|
*/
|
|
968
1024
|
aggregationFn: string | (((...args: any[]) => any) | null);
|
|
1025
|
+
/**
|
|
1026
|
+
* The table-core filter rule for this column. Either a built-in name string (e.g. `'arrIncludesSome'`, `'equalsString'`) or a custom function `(value, filterValue, row) => boolean`, where `row` is the original data object. Null → table-core's auto rule for the column's value type.
|
|
1027
|
+
*/
|
|
1028
|
+
filterFn: string | (((...args: any[]) => any) | null);
|
|
1029
|
+
/**
|
|
1030
|
+
* The table-core sort rule for this column. Either a built-in name string (e.g. `'alphanumeric'`, `'basic'`) or a custom ascending comparator `(a, b, rowA, rowB) => number` over the cell values, with the original data objects as `rowA` / `rowB`. Null → table-core's auto rule for the column's value type.
|
|
1031
|
+
*/
|
|
1032
|
+
sortingFn: string | (((...args: any[]) => any) | null);
|
|
969
1033
|
/**
|
|
970
1034
|
* Whether this column's cells are editable (opt-in). Default `false` → the column is read-only and the display↔editor branch never mounts an editor. Bind `:editable="true"` (a bare attr only coerces on Vue+Lit).
|
|
971
1035
|
*/
|
|
@@ -993,6 +1057,10 @@ declare class Column extends Column_base {
|
|
|
993
1057
|
render(): _$lit.TemplateResult<1>;
|
|
994
1058
|
reg: any;
|
|
995
1059
|
registered: boolean;
|
|
1060
|
+
latestFilterFn: any;
|
|
1061
|
+
latestSortingFn: any;
|
|
1062
|
+
filterTrampoline: any;
|
|
1063
|
+
sortingTrampoline: (...args: any[]) => any;
|
|
996
1064
|
colId: () => string;
|
|
997
1065
|
buildSpec: () => {
|
|
998
1066
|
id: string;
|
|
@@ -1005,6 +1073,8 @@ declare class Column extends Column_base {
|
|
|
1005
1073
|
expandable: boolean;
|
|
1006
1074
|
groupable: boolean;
|
|
1007
1075
|
aggregationFn: string | ((...args: any[]) => any);
|
|
1076
|
+
filterFn: any;
|
|
1077
|
+
sortingFn: string | ((...args: any[]) => any);
|
|
1008
1078
|
editable: boolean;
|
|
1009
1079
|
editor: string;
|
|
1010
1080
|
editorOptions: any[];
|
|
@@ -1478,4 +1548,4 @@ declare class DetailPanel extends DetailPanel_base {
|
|
|
1478
1548
|
}[];
|
|
1479
1549
|
}
|
|
1480
1550
|
//#endregion
|
|
1481
|
-
export { Column, DataTable, DataTable as default, DataTableActiveCell, DataTableActiveCellChangePayload, DataTableCellChange, DataTableCellEditCommitPayload, DataTableCellPosition, DataTableFilterChangePayload, DataTableGroupableColumn, DataTableHistoryChangePayload, DataTableRange, DataTableRangeChangePayload, DataTableRowActivatePayload, DataTableRowEditCommitPayload, DataTableVisibleRangeChangePayload, DetailPanel, EditorCheckbox, EditorDate, EditorNumber, EditorSelect, EditorText, FilterNumberRange, FilterSelect, FilterText, GroupBar, type RozieDataTableEventMap };
|
|
1551
|
+
export { Column, DataTable, DataTable as default, DataTableActiveCell, DataTableActiveCellChangePayload, DataTableCellChange, DataTableCellEditCommitPayload, DataTableCellPosition, DataTableFilterChangePayload, DataTableGroupableColumn, DataTableHistoryChangePayload, DataTableRange, DataTableRangeChangePayload, DataTableRowActivatePayload, DataTableRowEditCommitPayload, DataTableViewState, DataTableVisibleRangeChangePayload, DetailPanel, EditorCheckbox, EditorDate, EditorNumber, EditorSelect, EditorText, FilterNumberRange, FilterSelect, FilterText, GroupBar, type RozieDataTableEventMap };
|