@rozie-ui/data-table-lit 0.7.4 → 0.8.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/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? }`. 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.
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
- clampActiveCell: (rowCount: any, colCount: any) => void;
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;
@@ -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? }`. 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.
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
- clampActiveCell: (rowCount: any, colCount: any) => void;
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;
@@ -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 };