simple-table-core 2.2.0 → 2.2.3

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 (58) hide show
  1. package/dist/{Animate-eba636cf.js → Animate-a18785a9.js} +2 -2
  2. package/dist/Animate-a18785a9.js.map +1 -0
  3. package/dist/{DatePicker-6d2d5608.js → DatePicker-8d3a0d83.js} +2 -2
  4. package/dist/DatePicker-8d3a0d83.js.map +1 -0
  5. package/dist/cjs/{Animate-878a7aea.js → Animate-300ac2c9.js} +2 -2
  6. package/dist/cjs/Animate-300ac2c9.js.map +1 -0
  7. package/dist/cjs/{DatePicker-e468a75e.js → DatePicker-7dba57a6.js} +2 -2
  8. package/dist/cjs/DatePicker-7dba57a6.js.map +1 -0
  9. package/dist/cjs/components/simple-table/NestedGridRow.d.ts +17 -0
  10. package/dist/cjs/components/simple-table/SimpleTable.d.ts +1 -93
  11. package/dist/cjs/context/TableContext.d.ts +4 -0
  12. package/dist/cjs/hooks/useFlattenedRows.d.ts +13 -2
  13. package/dist/cjs/hooks/useSelection.d.ts +3 -1
  14. package/dist/cjs/hooks/useTableAPI.d.ts +3 -1
  15. package/dist/cjs/hooks/useTableRowProcessing.d.ts +8 -1
  16. package/dist/cjs/index-7f1ba462.js +2 -0
  17. package/dist/cjs/index-7f1ba462.js.map +1 -0
  18. package/dist/cjs/index.d.ts +3 -2
  19. package/dist/cjs/index.js +1 -1
  20. package/dist/cjs/styles.css +1 -1
  21. package/dist/cjs/types/CustomTheme.d.ts +26 -0
  22. package/dist/cjs/types/HeaderObject.d.ts +2 -0
  23. package/dist/cjs/types/SimpleTableProps.d.ts +91 -0
  24. package/dist/cjs/types/TableRefType.d.ts +2 -0
  25. package/dist/cjs/types/TableRow.d.ts +7 -0
  26. package/dist/cjs/utils/cellScrollUtils.d.ts +2 -1
  27. package/dist/cjs/utils/infiniteScrollUtils.d.ts +71 -5
  28. package/dist/cjs/utils/rowUtils.d.ts +22 -2
  29. package/dist/components/simple-table/NestedGridRow.d.ts +17 -0
  30. package/dist/components/simple-table/SimpleTable.d.ts +1 -93
  31. package/dist/context/TableContext.d.ts +4 -0
  32. package/dist/hooks/useFlattenedRows.d.ts +13 -2
  33. package/dist/hooks/useSelection.d.ts +3 -1
  34. package/dist/hooks/useTableAPI.d.ts +3 -1
  35. package/dist/hooks/useTableRowProcessing.d.ts +8 -1
  36. package/dist/index-80318b04.js +2 -0
  37. package/dist/index-80318b04.js.map +1 -0
  38. package/dist/index.d.ts +3 -2
  39. package/dist/index.es.js +1 -1
  40. package/dist/styles.css +1 -1
  41. package/dist/types/CustomTheme.d.ts +26 -0
  42. package/dist/types/HeaderObject.d.ts +2 -0
  43. package/dist/types/SimpleTableProps.d.ts +91 -0
  44. package/dist/types/TableRefType.d.ts +2 -0
  45. package/dist/types/TableRow.d.ts +7 -0
  46. package/dist/utils/cellScrollUtils.d.ts +2 -1
  47. package/dist/utils/infiniteScrollUtils.d.ts +71 -5
  48. package/dist/utils/rowUtils.d.ts +22 -2
  49. package/package.json +1 -1
  50. package/src/styles/base.css +7 -0
  51. package/dist/Animate-eba636cf.js.map +0 -1
  52. package/dist/DatePicker-6d2d5608.js.map +0 -1
  53. package/dist/cjs/Animate-878a7aea.js.map +0 -1
  54. package/dist/cjs/DatePicker-e468a75e.js.map +0 -1
  55. package/dist/cjs/index-0bd94a48.js +0 -2
  56. package/dist/cjs/index-0bd94a48.js.map +0 -1
  57. package/dist/index-84d0a21e.js +0 -2
  58. package/dist/index-84d0a21e.js.map +0 -1
@@ -0,0 +1,17 @@
1
+ import Row from "../../types/Row";
2
+ import HeaderObject, { Accessor } from "../../types/HeaderObject";
3
+ interface NestedGridRowProps {
4
+ calculatedHeight: number;
5
+ childAccessor: Accessor;
6
+ depth: number;
7
+ expandableHeader: HeaderObject;
8
+ index: number;
9
+ parentRow: Row;
10
+ position: number;
11
+ }
12
+ /**
13
+ * Component that renders a nested SimpleTable inside an expanded row
14
+ * Spans the full width of the parent table (grid column 1 / -1)
15
+ */
16
+ declare const NestedGridRow: ({ calculatedHeight, childAccessor, depth, expandableHeader, index, parentRow, position, }: NestedGridRowProps) => import("react/jsx-runtime").JSX.Element | null;
17
+ export default NestedGridRow;
@@ -1,96 +1,4 @@
1
- import { ReactNode, MutableRefObject } from "react";
2
- import HeaderObject, { Accessor } from "../../types/HeaderObject";
3
- import CellChangeProps from "../../types/CellChangeProps";
4
- import Theme from "../../types/Theme";
5
- import Row from "../../types/Row";
6
- import ColumnEditorPosition from "../../types/ColumnEditorPosition";
7
- import TableRefType from "../../types/TableRefType";
8
- import OnNextPage from "../../types/OnNextPage";
1
+ import { SimpleTableProps } from "../../types/SimpleTableProps";
9
2
  import "../../styles/all-themes.css";
10
- import { TableFilterState } from "../../types/FilterTypes";
11
- import { ColumnVisibilityState } from "../../types/ColumnVisibilityTypes";
12
- import SortColumn, { SortDirection } from "../../types/SortColumn";
13
- import RowSelectionChangeProps from "../../types/RowSelectionChangeProps";
14
- import CellClickProps from "../../types/CellClickProps";
15
- import { RowButton } from "../../types/RowButton";
16
- import { HeaderDropdown } from "../../types/HeaderDropdownProps";
17
- import FooterRendererProps from "../../types/FooterRendererProps";
18
- import OnRowGroupExpandProps from "../../types/OnRowGroupExpandProps";
19
- import { LoadingStateRenderer, ErrorStateRenderer, EmptyStateRenderer } from "../../types/RowStateRendererProps";
20
- interface SimpleTableProps {
21
- allowAnimations?: boolean;
22
- autoExpandColumns?: boolean;
23
- canExpandRowGroup?: (row: Row) => boolean;
24
- cellUpdateFlash?: boolean;
25
- className?: string;
26
- columnBorders?: boolean;
27
- columnEditorPosition?: ColumnEditorPosition;
28
- columnEditorText?: string;
29
- columnReordering?: boolean;
30
- columnResizing?: boolean;
31
- copyHeadersToClipboard?: boolean;
32
- defaultHeaders: HeaderObject[];
33
- editColumns?: boolean;
34
- editColumnsInitOpen?: boolean;
35
- emptyStateRenderer?: EmptyStateRenderer;
36
- enableHeaderEditing?: boolean;
37
- enableRowSelection?: boolean;
38
- errorStateRenderer?: ErrorStateRenderer;
39
- expandAll?: boolean;
40
- expandIcon?: ReactNode;
41
- externalFilterHandling?: boolean;
42
- externalSortHandling?: boolean;
43
- filterIcon?: ReactNode;
44
- footerHeight?: number;
45
- footerRenderer?: (props: FooterRendererProps) => ReactNode;
46
- headerCollapseIcon?: ReactNode;
47
- headerDropdown?: HeaderDropdown;
48
- headerExpandIcon?: ReactNode;
49
- headerHeight?: number;
50
- height?: string | number;
51
- hideFooter?: boolean;
52
- hideHeader?: boolean;
53
- includeHeadersInCSVExport?: boolean;
54
- initialSortColumn?: string;
55
- initialSortDirection?: SortDirection;
56
- isLoading?: boolean;
57
- loadingStateRenderer?: LoadingStateRenderer;
58
- maxHeight?: string | number;
59
- nextIcon?: ReactNode;
60
- onCellClick?: (props: CellClickProps) => void;
61
- onCellEdit?: (props: CellChangeProps) => void;
62
- onColumnOrderChange?: (newHeaders: HeaderObject[]) => void;
63
- onColumnSelect?: (header: HeaderObject) => void;
64
- onColumnVisibilityChange?: (visibilityState: ColumnVisibilityState) => void;
65
- onFilterChange?: (filters: TableFilterState) => void;
66
- onGridReady?: () => void;
67
- onHeaderEdit?: (header: HeaderObject, newLabel: string) => void;
68
- onLoadMore?: () => void;
69
- onNextPage?: OnNextPage;
70
- onPageChange?: (page: number) => void | Promise<void>;
71
- onRowGroupExpand?: (props: OnRowGroupExpandProps) => void | Promise<void>;
72
- onRowSelectionChange?: (props: RowSelectionChangeProps) => void;
73
- onSortChange?: (sort: SortColumn | null) => void;
74
- prevIcon?: ReactNode;
75
- rowButtons?: RowButton[];
76
- rowGrouping?: Accessor[];
77
- rowHeight?: number;
78
- rows: Row[];
79
- rowsPerPage?: number;
80
- selectableCells?: boolean;
81
- selectableColumns?: boolean;
82
- selectionColumnWidth?: number;
83
- serverSidePagination?: boolean;
84
- shouldPaginate?: boolean;
85
- sortDownIcon?: ReactNode;
86
- sortUpIcon?: ReactNode;
87
- tableEmptyStateRenderer?: ReactNode;
88
- tableRef?: MutableRefObject<TableRefType | null>;
89
- theme?: Theme;
90
- totalRowCount?: number;
91
- useHoverRowBackground?: boolean;
92
- useOddColumnBackground?: boolean;
93
- useOddEvenRowBackground?: boolean;
94
- }
95
3
  declare const SimpleTable: (props: SimpleTableProps) => import("react/jsx-runtime").JSX.Element | null;
96
4
  export default SimpleTable;
@@ -14,6 +14,8 @@ import OnRowGroupExpandProps from "../types/OnRowGroupExpandProps";
14
14
  import RowState from "../types/RowState";
15
15
  import Row from "../types/Row";
16
16
  import { LoadingStateRenderer, ErrorStateRenderer, EmptyStateRenderer } from "../types/RowStateRendererProps";
17
+ import { HeightOffsets } from "../utils/infiniteScrollUtils";
18
+ import { CustomTheme } from "../types/CustomTheme";
17
19
  export interface CellRegistryEntry {
18
20
  updateContent: (newValue: CellValue) => void;
19
21
  }
@@ -65,6 +67,7 @@ interface TableContextType {
65
67
  headerExpandIcon?: ReactNode;
66
68
  headerRegistry?: Map<string, HeaderRegistryEntry>;
67
69
  headers: HeaderObject[];
70
+ heightOffsets?: HeightOffsets;
68
71
  hoveredHeaderRef: MutableRefObject<HeaderObject | null>;
69
72
  maxHeaderDepth: number;
70
73
  isAnimating: boolean;
@@ -123,6 +126,7 @@ interface TableContextType {
123
126
  tableEmptyStateRenderer?: ReactNode;
124
127
  tableRows: TableRow[];
125
128
  theme: Theme;
129
+ customTheme: CustomTheme;
126
130
  expandedRows: Map<string, number>;
127
131
  collapsedRows: Map<string, number>;
128
132
  useHoverRowBackground: boolean;
@@ -1,7 +1,9 @@
1
- import { Accessor } from "../types/HeaderObject";
1
+ import HeaderObject, { Accessor } from "../types/HeaderObject";
2
2
  import Row from "../types/Row";
3
3
  import RowState from "../types/RowState";
4
4
  import TableRow from "../types/TableRow";
5
+ import { HeightOffsets } from "../utils/infiniteScrollUtils";
6
+ import { CustomTheme } from "../types/CustomTheme";
5
7
  interface UseFlattenedRowsProps {
6
8
  rows: Row[];
7
9
  rowGrouping?: Accessor[];
@@ -12,6 +14,15 @@ interface UseFlattenedRowsProps {
12
14
  hasLoadingRenderer: boolean;
13
15
  hasErrorRenderer: boolean;
14
16
  hasEmptyRenderer: boolean;
17
+ headers: HeaderObject[];
18
+ rowHeight: number;
19
+ headerHeight: number;
20
+ customTheme: CustomTheme;
21
+ }
22
+ interface UseFlattenedRowsResult {
23
+ flattenedRows: TableRow[];
24
+ heightOffsets: HeightOffsets;
25
+ paginatableRows: TableRow[];
15
26
  }
16
27
  /**
17
28
  * Hook that flattens nested row data into a flat array of TableRow objects.
@@ -19,5 +30,5 @@ interface UseFlattenedRowsProps {
19
30
  * can all operate on the flat structure, fixing issues where rowsPerPage
20
31
  * didn't account for nested children.
21
32
  */
22
- declare const useFlattenedRows: ({ rows, rowGrouping, expandedRows, collapsedRows, expandedDepths, rowStateMap, hasLoadingRenderer, hasErrorRenderer, hasEmptyRenderer, }: UseFlattenedRowsProps) => TableRow[];
33
+ declare const useFlattenedRows: ({ rows, rowGrouping, expandedRows, collapsedRows, expandedDepths, rowStateMap, hasLoadingRenderer, hasErrorRenderer, hasEmptyRenderer, headers, rowHeight, headerHeight, customTheme, }: UseFlattenedRowsProps) => UseFlattenedRowsResult;
23
34
  export default useFlattenedRows;
@@ -2,6 +2,7 @@
2
2
  import HeaderObject, { Accessor } from "../types/HeaderObject";
3
3
  import type TableRowType from "../types/TableRow";
4
4
  import Cell from "../types/Cell";
5
+ import { CustomTheme } from "../types/CustomTheme";
5
6
  export declare const createSetString: ({ rowIndex, colIndex, rowId }: Cell) => string;
6
7
  interface UseSelectionProps {
7
8
  selectableCells: boolean;
@@ -13,8 +14,9 @@ interface UseSelectionProps {
13
14
  rowHeight: number;
14
15
  enableRowSelection?: boolean;
15
16
  copyHeadersToClipboard?: boolean;
17
+ customTheme: CustomTheme;
16
18
  }
17
- declare const useSelection: ({ selectableCells, headers, tableRows, onCellEdit, cellRegistry, collapsedHeaders, rowHeight, enableRowSelection, copyHeadersToClipboard, }: UseSelectionProps) => {
19
+ declare const useSelection: ({ selectableCells, headers, tableRows, onCellEdit, cellRegistry, collapsedHeaders, rowHeight, enableRowSelection, copyHeadersToClipboard, customTheme, }: UseSelectionProps) => {
18
20
  getBorderClass: ({ colIndex, rowIndex, rowId }: Cell) => string;
19
21
  handleMouseDown: ({ colIndex, rowIndex, rowId }: Cell) => void;
20
22
  handleMouseOver: ({ colIndex, rowIndex, rowId }: Cell) => void;
@@ -6,7 +6,7 @@ import TableRow from "../types/TableRow";
6
6
  import HeaderObject from "../types/HeaderObject";
7
7
  import { TableFilterState, FilterCondition } from "../types/FilterTypes";
8
8
  import { SortDirection } from "../types/SortColumn";
9
- declare const useTableAPI: ({ cellRegistryRef, clearAllFilters, clearFilter, currentPage, expandedDepths, filters, flattenedRows, headerRegistryRef, headers, includeHeadersInCSVExport, rowGrouping, rowIndexMap, rows, rowsPerPage, serverSidePagination, setCollapsedRows, setCurrentPage, setExpandedDepths, setExpandedRows, setRows, shouldPaginate, sort, tableRef, updateFilter, updateSort, visibleRows, }: {
9
+ declare const useTableAPI: ({ cellRegistryRef, clearAllFilters, clearFilter, currentPage, expandedDepths, filters, flattenedRows, headerRegistryRef, headers, includeHeadersInCSVExport, paginatableRows, rowGrouping, rowIndexMap, rows, rowsPerPage, serverSidePagination, setCollapsedRows, setCurrentPage, setExpandedDepths, setExpandedRows, setRows, shouldPaginate, sort, tableRef, totalRowCount, updateFilter, updateSort, visibleRows, }: {
10
10
  cellRegistryRef: MutableRefObject<Map<string, CellRegistryEntry>>;
11
11
  clearAllFilters: () => void;
12
12
  clearFilter: (accessor: Accessor) => void;
@@ -17,6 +17,7 @@ declare const useTableAPI: ({ cellRegistryRef, clearAllFilters, clearFilter, cur
17
17
  headerRegistryRef: MutableRefObject<Map<string, HeaderRegistryEntry>>;
18
18
  headers: HeaderObject[];
19
19
  includeHeadersInCSVExport: boolean;
20
+ paginatableRows: TableRow[];
20
21
  rowGrouping?: string[] | undefined;
21
22
  rowIndexMap: MutableRefObject<Map<string | number, number>>;
22
23
  rows: Row[];
@@ -30,6 +31,7 @@ declare const useTableAPI: ({ cellRegistryRef, clearAllFilters, clearFilter, cur
30
31
  shouldPaginate: boolean;
31
32
  sort: SortColumn | null;
32
33
  tableRef?: MutableRefObject<TableRefType | null> | undefined;
34
+ totalRowCount?: number | undefined;
33
35
  updateFilter: (filter: FilterCondition) => void;
34
36
  updateSort: (props?: {
35
37
  accessor: Accessor;
@@ -1,12 +1,16 @@
1
1
  import { Accessor } from "../types/HeaderObject";
2
2
  import { FilterCondition } from "../types/FilterTypes";
3
3
  import TableRow from "../types/TableRow";
4
+ import { HeightOffsets } from "../utils/infiniteScrollUtils";
5
+ import { CustomTheme } from "../types/CustomTheme";
4
6
  interface UseTableRowProcessingProps {
5
7
  allowAnimations: boolean;
6
8
  /** Already flattened rows from useFlattenedRows */
7
9
  flattenedRows: TableRow[];
8
10
  /** Original flattened rows for establishing baseline positions */
9
11
  originalFlattenedRows: TableRow[];
12
+ /** Rows that should count towards pagination (excludes nested grids, state indicators) */
13
+ paginatableRows: TableRow[];
10
14
  currentPage: number;
11
15
  rowsPerPage: number;
12
16
  shouldPaginate: boolean;
@@ -15,15 +19,18 @@ interface UseTableRowProcessingProps {
15
19
  rowHeight: number;
16
20
  scrollTop: number;
17
21
  scrollDirection?: "up" | "down" | "none";
22
+ heightOffsets?: HeightOffsets;
23
+ customTheme: CustomTheme;
18
24
  computeFilteredRowsPreview: (filter: FilterCondition) => TableRow[];
19
25
  computeSortedRowsPreview: (accessor: Accessor) => TableRow[];
20
26
  }
21
- declare const useTableRowProcessing: ({ allowAnimations, flattenedRows, originalFlattenedRows, currentPage, rowsPerPage, shouldPaginate, serverSidePagination, contentHeight, rowHeight, scrollTop, scrollDirection, computeFilteredRowsPreview, computeSortedRowsPreview, }: UseTableRowProcessingProps) => {
27
+ declare const useTableRowProcessing: ({ allowAnimations, flattenedRows, originalFlattenedRows, paginatableRows, currentPage, rowsPerPage, shouldPaginate, serverSidePagination, contentHeight, rowHeight, scrollTop, scrollDirection, heightOffsets, customTheme, computeFilteredRowsPreview, computeSortedRowsPreview, }: UseTableRowProcessingProps) => {
22
28
  currentTableRows: TableRow[];
23
29
  currentVisibleRows: TableRow[];
24
30
  isAnimating: boolean;
25
31
  prepareForFilterChange: (filter: FilterCondition) => void;
26
32
  prepareForSortChange: (accessor: Accessor) => void;
27
33
  rowsToRender: TableRow[];
34
+ paginatedHeightOffsets: HeightOffsets | undefined;
28
35
  };
29
36
  export default useTableRowProcessing;