@elliemae/ds-data-table 3.80.0-next.14 → 3.80.0-next.19

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.
Files changed (43) hide show
  1. package/dist/cjs/addons/Columns/ColumnSelectMultiple/ColumnSelectMultiple.js +3 -3
  2. package/dist/cjs/addons/Columns/ColumnSelectMultiple/ColumnSelectMultiple.js.map +2 -2
  3. package/dist/cjs/addons/Filters/Components/FreeTextSearchFilter/FreeTextSearchFilterV2.js +2 -4
  4. package/dist/cjs/addons/Filters/Components/FreeTextSearchFilter/FreeTextSearchFilterV2.js.map +2 -2
  5. package/dist/cjs/addons/Filters/Components/FreeTextSearchFilter/index.js +2 -4
  6. package/dist/cjs/addons/Filters/Components/FreeTextSearchFilter/index.js.map +2 -2
  7. package/dist/cjs/configs/useAutocalculated/index.js +9 -5
  8. package/dist/cjs/configs/useAutocalculated/index.js.map +2 -2
  9. package/dist/cjs/configs/useStore/useStore.js +4 -0
  10. package/dist/cjs/configs/useStore/useStore.js.map +2 -2
  11. package/dist/cjs/configs/useTableResizeCb.js.map +1 -1
  12. package/dist/cjs/parts/Row.js +3 -2
  13. package/dist/cjs/parts/Row.js.map +2 -2
  14. package/dist/cjs/parts/Rows.js +4 -5
  15. package/dist/cjs/parts/Rows.js.map +2 -2
  16. package/dist/cjs/parts/VirtualRowsList.js +2 -1
  17. package/dist/cjs/parts/VirtualRowsList.js.map +2 -2
  18. package/dist/cjs/react-desc-prop-types.js.map +2 -2
  19. package/dist/cjs/styled.js +1 -1
  20. package/dist/cjs/styled.js.map +1 -1
  21. package/dist/esm/addons/Columns/ColumnSelectMultiple/ColumnSelectMultiple.js +3 -3
  22. package/dist/esm/addons/Columns/ColumnSelectMultiple/ColumnSelectMultiple.js.map +2 -2
  23. package/dist/esm/addons/Filters/Components/FreeTextSearchFilter/FreeTextSearchFilterV2.js +2 -4
  24. package/dist/esm/addons/Filters/Components/FreeTextSearchFilter/FreeTextSearchFilterV2.js.map +2 -2
  25. package/dist/esm/addons/Filters/Components/FreeTextSearchFilter/index.js +2 -4
  26. package/dist/esm/addons/Filters/Components/FreeTextSearchFilter/index.js.map +2 -2
  27. package/dist/esm/configs/useAutocalculated/index.js +9 -5
  28. package/dist/esm/configs/useAutocalculated/index.js.map +2 -2
  29. package/dist/esm/configs/useStore/useStore.js +4 -0
  30. package/dist/esm/configs/useStore/useStore.js.map +2 -2
  31. package/dist/esm/configs/useTableResizeCb.js.map +1 -1
  32. package/dist/esm/parts/Row.js +3 -2
  33. package/dist/esm/parts/Row.js.map +2 -2
  34. package/dist/esm/parts/Rows.js +4 -5
  35. package/dist/esm/parts/Rows.js.map +2 -2
  36. package/dist/esm/parts/VirtualRowsList.js +2 -1
  37. package/dist/esm/parts/VirtualRowsList.js.map +2 -2
  38. package/dist/esm/react-desc-prop-types.js.map +2 -2
  39. package/dist/esm/styled.js +1 -1
  40. package/dist/esm/styled.js.map +1 -1
  41. package/dist/types/parts/Row.d.ts +4 -2
  42. package/dist/types/react-desc-prop-types.d.ts +27 -6
  43. package/package.json +33 -33
@@ -2,13 +2,15 @@ import React from 'react';
2
2
  import type { DSDataTableT } from '../react-desc-prop-types.js';
3
3
  export declare const Row: React.ComponentType<{
4
4
  row: DSDataTableT.InternalRow;
5
- measureRef?: (el: HTMLElement | null) => void;
5
+ measureElement?: DSDataTableT.DataTableVirtualizer['measureElement'];
6
+ itemIndex?: number;
6
7
  itemWrapperStyle?: React.CSSProperties;
7
8
  isDragOverlay: boolean;
8
9
  }>;
9
10
  declare const RowWithContext: (props: {
10
11
  row: DSDataTableT.InternalRow;
11
- measureRef?: (el: HTMLElement | null) => void;
12
+ measureElement?: DSDataTableT.DataTableVirtualizer["measureElement"];
13
+ itemIndex?: number;
12
14
  itemWrapperStyle?: React.CSSProperties;
13
15
  isDragOverlay: boolean;
14
16
  }) => React.JSX.Element;
@@ -1,4 +1,4 @@
1
- import type { Range, useVirtual } from 'react-virtual/types';
1
+ import type { Range, useVirtualizer, VirtualItem } from '@tanstack/react-virtual';
2
2
  import type { ZustandT } from '@elliemae/ds-zustand-helpers';
3
3
  import type { DSPaginationT } from '@elliemae/ds-pagination';
4
4
  import { type TypescriptHelpersT } from '@elliemae/ds-typescript-helpers';
@@ -11,6 +11,17 @@ import { DSDataTableName, DSDataTableSlots } from './constants/index.js';
11
11
  export declare namespace DSDataTableT {
12
12
  type PropsT<D, R, O> = Partial<D> & R & O;
13
13
  type InternalPropsT<D, R, O> = D & R & O;
14
+ /**
15
+ * Single source of truth for the virtualizer's element generics — reused across both
16
+ * UseAutoCalculatedT and Context so they can't drift out of sync with each other, and must
17
+ * match useAutocalculated/index.tsx's own useVirtualizer<HTMLDivElement, Element> call exactly
18
+ * (Virtualizer is invariant across methods like scrollToFn, so a mismatched generic here is a
19
+ * real dts build failure, not just a lint nit). Item element is deliberately left as the broad
20
+ * `Element` default (not narrowed to HTMLDivElement) — ds-system's mergeRefs/innerRef typing on
21
+ * styled components is HTMLElement-generic, and narrowing here breaks that assignability in
22
+ * Row.tsx.
23
+ */
24
+ export type DataTableVirtualizer = ReturnType<typeof useVirtualizer<HTMLDivElement, Element>>;
14
25
  export type InternalAtoms = {
15
26
  drilldownRowId: string | null;
16
27
  focusedRowId: string | null;
@@ -28,7 +39,7 @@ export declare namespace DSDataTableT {
28
39
  visibleRangeRef: React.MutableRefObject<Range>;
29
40
  columnHeaderRef: React.MutableRefObject<HTMLDivElement | null>;
30
41
  columnHeaderCallbackRef: (node: HTMLDivElement | null) => void;
31
- /** Sticky header height (px) — drives both useVirtual paddingStart and the scroll container's scroll-padding-top (PUI-18626). */
42
+ /** Sticky header height (px) — drives both the virtualizer's paddingStart and the scroll container's scroll-padding-top (PUI-18626). */
32
43
  headerHeightPx: number;
33
44
  virtualListRef: React.MutableRefObject<HTMLDivElement | null>;
34
45
  flattenedData: InternalRow[];
@@ -36,7 +47,15 @@ export declare namespace DSDataTableT {
36
47
  isEmptyContent: boolean;
37
48
  firstFocuseableColumnHeaderId: string | undefined;
38
49
  visibleColumns: InternalColumn[];
39
- virtualListHelpers: ReturnType<typeof useVirtual>;
50
+ virtualListHelpers: DataTableVirtualizer;
51
+ /**
52
+ * Fresh pulls of virtualListHelpers.getVirtualItems()/.getTotalSize(), taken on every render of
53
+ * useAutoCalculated. virtualListHelpers itself is the same mutated-in-place instance across
54
+ * renders (v3), so store selectors reading it as a whole never see a reference change — these
55
+ * two fields are what Rows.tsx/VirtualRowsList.tsx actually select for fresh values.
56
+ */
57
+ virtualItems: VirtualItem[];
58
+ totalSize: number;
40
59
  layoutHelpers: {
41
60
  totalColumnsWidth: number | string;
42
61
  gridLayout: string[];
@@ -285,7 +304,9 @@ export declare namespace DSDataTableT {
285
304
  isEmptyContent: boolean;
286
305
  firstFocuseableColumnHeaderId: string | undefined;
287
306
  visibleColumns: InternalColumn[];
288
- virtualListHelpers: ReturnType<typeof useVirtual>;
307
+ virtualListHelpers: DataTableVirtualizer;
308
+ virtualItems: VirtualItem[];
309
+ totalSize: number;
289
310
  layoutHelpers: {
290
311
  totalColumnsWidth: number | string;
291
312
  gridLayout: string[];
@@ -390,8 +411,8 @@ export declare namespace DSDataTableT {
390
411
  }[];
391
412
  };
392
413
  actionRef?: React.MutableRefObject<{
393
- scrollToIndex: ReturnType<typeof useVirtual>['scrollToIndex'];
394
- scrollToOffset: ReturnType<typeof useVirtual>['scrollToOffset'];
414
+ scrollToIndex: DataTableVirtualizer['scrollToIndex'];
415
+ scrollToOffset: DataTableVirtualizer['scrollToOffset'];
395
416
  }>;
396
417
  noResultsSecondaryMessage?: string;
397
418
  noResultsButtonLabel?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elliemae/ds-data-table",
3
- "version": "3.80.0-next.14",
3
+ "version": "3.80.0-next.19",
4
4
  "license": "MIT",
5
5
  "description": "ICE MT - Dimsum - Data Table",
6
6
  "files": [
@@ -37,44 +37,44 @@
37
37
  "indent": 4
38
38
  },
39
39
  "dependencies": {
40
+ "@elliemae/ds-button-v2": "3.80.0-next.19",
41
+ "@elliemae/ds-circular-progress-indicator": "3.80.0-next.19",
42
+ "@elliemae/ds-dialog": "3.80.0-next.19",
43
+ "@elliemae/ds-drag-and-drop": "3.80.0-next.19",
44
+ "@elliemae/ds-dropdownmenu-v2": "3.80.0-next.19",
45
+ "@elliemae/ds-floating-context": "3.80.0-next.19",
46
+ "@elliemae/ds-form-checkbox": "3.80.0-next.19",
47
+ "@elliemae/ds-form-combobox": "3.80.0-next.19",
48
+ "@elliemae/ds-form-date-range-picker": "3.80.0-next.19",
49
+ "@elliemae/ds-form-date-time-picker": "3.80.0-next.19",
50
+ "@elliemae/ds-form-helpers-mask-hooks": "3.80.0-next.19",
51
+ "@elliemae/ds-form-input-text": "3.80.0-next.19",
52
+ "@elliemae/ds-form-layout-blocks": "3.80.0-next.19",
53
+ "@elliemae/ds-form-radio": "3.80.0-next.19",
54
+ "@elliemae/ds-grid": "3.80.0-next.19",
55
+ "@elliemae/ds-hooks-focus-trap": "3.80.0-next.19",
56
+ "@elliemae/ds-icons": "3.80.0-next.19",
40
57
  "@elliemae/ds-legacy-dropdownmenu": "1.0.16",
41
- "react-virtual": "~2.10.4",
58
+ "@elliemae/ds-menu-button": "3.80.0-next.19",
59
+ "@elliemae/ds-pagination": "3.80.0-next.19",
60
+ "@elliemae/ds-pills-v2": "3.80.0-next.19",
61
+ "@elliemae/ds-props-helpers": "3.80.0-next.19",
62
+ "@elliemae/ds-skeleton": "3.80.0-next.19",
63
+ "@elliemae/ds-system": "3.80.0-next.19",
64
+ "@elliemae/ds-typescript-helpers": "3.80.0-next.19",
65
+ "@elliemae/ds-zustand-helpers": "3.80.0-next.19",
66
+ "@tanstack/react-virtual": "3.13.18",
42
67
  "uid": "^2.0.2",
43
- "use-onclickoutside": "0.4.1",
44
- "@elliemae/ds-button-v2": "3.80.0-next.14",
45
- "@elliemae/ds-dialog": "3.80.0-next.14",
46
- "@elliemae/ds-circular-progress-indicator": "3.80.0-next.14",
47
- "@elliemae/ds-floating-context": "3.80.0-next.14",
48
- "@elliemae/ds-drag-and-drop": "3.80.0-next.14",
49
- "@elliemae/ds-dropdownmenu-v2": "3.80.0-next.14",
50
- "@elliemae/ds-form-checkbox": "3.80.0-next.14",
51
- "@elliemae/ds-form-combobox": "3.80.0-next.14",
52
- "@elliemae/ds-form-date-range-picker": "3.80.0-next.14",
53
- "@elliemae/ds-form-input-text": "3.80.0-next.14",
54
- "@elliemae/ds-form-layout-blocks": "3.80.0-next.14",
55
- "@elliemae/ds-grid": "3.80.0-next.14",
56
- "@elliemae/ds-form-date-time-picker": "3.80.0-next.14",
57
- "@elliemae/ds-form-helpers-mask-hooks": "3.80.0-next.14",
58
- "@elliemae/ds-form-radio": "3.80.0-next.14",
59
- "@elliemae/ds-hooks-focus-trap": "3.80.0-next.14",
60
- "@elliemae/ds-icons": "3.80.0-next.14",
61
- "@elliemae/ds-menu-button": "3.80.0-next.14",
62
- "@elliemae/ds-pagination": "3.80.0-next.14",
63
- "@elliemae/ds-pills-v2": "3.80.0-next.14",
64
- "@elliemae/ds-props-helpers": "3.80.0-next.14",
65
- "@elliemae/ds-system": "3.80.0-next.14",
66
- "@elliemae/ds-skeleton": "3.80.0-next.14",
67
- "@elliemae/ds-typescript-helpers": "3.80.0-next.14",
68
- "@elliemae/ds-zustand-helpers": "3.80.0-next.14"
68
+ "use-onclickoutside": "0.4.1"
69
69
  },
70
70
  "devDependencies": {
71
+ "@elliemae/ds-monorepo-devops": "3.80.0-next.19",
72
+ "@elliemae/ds-tabs": "3.80.0-next.19",
73
+ "@elliemae/ds-test-utils": "3.80.0-next.19",
74
+ "@elliemae/ds-toolbar-v2": "3.80.0-next.19",
71
75
  "jest": "^30.0.0",
72
76
  "styled-components": "~5.3.11",
73
- "styled-system": "^5.1.5",
74
- "@elliemae/ds-monorepo-devops": "3.80.0-next.14",
75
- "@elliemae/ds-test-utils": "3.80.0-next.14",
76
- "@elliemae/ds-tabs": "3.80.0-next.14",
77
- "@elliemae/ds-toolbar-v2": "3.80.0-next.14"
77
+ "styled-system": "^5.1.5"
78
78
  },
79
79
  "peerDependencies": {
80
80
  "lodash-es": "^4.18.1",