material-react-table 1.5.0-beta.0 → 1.5.0-beta.2

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.
@@ -709,5 +709,5 @@ export type MaterialReactTableProps<TData extends Record<string, any> = {}> = Om
709
709
  */
710
710
  virtualizerProps?: any;
711
711
  };
712
- declare const MaterialReactTable: <TData extends Record<string, any> = {}>({ aggregationFns, autoResetExpanded, columnResizeMode, defaultColumn, defaultDisplayColumn, editingMode, enableBottomToolbar, enableColumnActions, enableColumnFilters, enableColumnOrdering, enableColumnResizing, enableDensityToggle, enableExpandAll, enableFilters, enableFullScreenToggle, enableGlobalFilter, enableGlobalFilterRankedResults, enableGrouping, enableHiding, enableMultiRowSelection, enableMultiSort, enablePagination, enablePinning, enableRowSelection, enableSelectAll, enableSorting, enableStickyHeader, enableTableFooter, enableTableHead, enableToolbarInternalActions, enableTopToolbar, filterFns, icons, layoutMode, localization, positionActionsColumn, positionExpandColumn, positionGlobalFilter, positionPagination, positionToolbarAlertBanner, positionToolbarDropZone, rowNumberMode, selectAllMode, sortingFns, ...rest }: MaterialReactTableProps<TData>) => JSX.Element;
712
+ declare const MaterialReactTable: <TData extends Record<string, any> = {}>({ aggregationFns, autoResetExpanded, columnResizeMode, defaultColumn, defaultDisplayColumn, editingMode, enableBottomToolbar, enableColumnActions, enableColumnFilters, enableColumnOrdering, enableColumnResizing, enableDensityToggle, enableExpandAll, enableFilters, enableFullScreenToggle, enableGlobalFilter, enableGlobalFilterRankedResults, enableGrouping, enableHiding, enableMultiRowSelection, enableMultiSort, enablePagination, enablePinning, enableRowSelection, enableSelectAll, enableSorting, enableStickyHeader, enableTableFooter, enableTableHead, enableToolbarInternalActions, enableTopToolbar, filterFns, icons, layoutMode, localization, manualFiltering, manualGrouping, manualPagination, manualSorting, positionActionsColumn, positionExpandColumn, positionGlobalFilter, positionPagination, positionToolbarAlertBanner, positionToolbarDropZone, rowNumberMode, selectAllMode, sortingFns, ...rest }: MaterialReactTableProps<TData>) => JSX.Element;
713
713
  export default MaterialReactTable;
package/dist/index.d.ts CHANGED
@@ -832,7 +832,7 @@ type MaterialReactTableProps<TData extends Record<string, any> = {}> = Omit<Part
832
832
  */
833
833
  virtualizerProps?: any;
834
834
  };
835
- declare const MaterialReactTable: <TData extends Record<string, any> = {}>({ aggregationFns, autoResetExpanded, columnResizeMode, defaultColumn, defaultDisplayColumn, editingMode, enableBottomToolbar, enableColumnActions, enableColumnFilters, enableColumnOrdering, enableColumnResizing, enableDensityToggle, enableExpandAll, enableFilters, enableFullScreenToggle, enableGlobalFilter, enableGlobalFilterRankedResults, enableGrouping, enableHiding, enableMultiRowSelection, enableMultiSort, enablePagination, enablePinning, enableRowSelection, enableSelectAll, enableSorting, enableStickyHeader, enableTableFooter, enableTableHead, enableToolbarInternalActions, enableTopToolbar, filterFns, icons, layoutMode, localization, positionActionsColumn, positionExpandColumn, positionGlobalFilter, positionPagination, positionToolbarAlertBanner, positionToolbarDropZone, rowNumberMode, selectAllMode, sortingFns, ...rest }: MaterialReactTableProps<TData>) => JSX.Element;
835
+ declare const MaterialReactTable: <TData extends Record<string, any> = {}>({ aggregationFns, autoResetExpanded, columnResizeMode, defaultColumn, defaultDisplayColumn, editingMode, enableBottomToolbar, enableColumnActions, enableColumnFilters, enableColumnOrdering, enableColumnResizing, enableDensityToggle, enableExpandAll, enableFilters, enableFullScreenToggle, enableGlobalFilter, enableGlobalFilterRankedResults, enableGrouping, enableHiding, enableMultiRowSelection, enableMultiSort, enablePagination, enablePinning, enableRowSelection, enableSelectAll, enableSorting, enableStickyHeader, enableTableFooter, enableTableHead, enableToolbarInternalActions, enableTopToolbar, filterFns, icons, layoutMode, localization, manualFiltering, manualGrouping, manualPagination, manualSorting, positionActionsColumn, positionExpandColumn, positionGlobalFilter, positionPagination, positionToolbarAlertBanner, positionToolbarDropZone, rowNumberMode, selectAllMode, sortingFns, ...rest }: MaterialReactTableProps<TData>) => JSX.Element;
836
836
 
837
837
  interface Props$b<TData extends Record<string, any> = {}> {
838
838
  cell: MRT_Cell<TData>;
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.5.0-beta.0",
2
+ "version": "1.5.0-beta.2",
3
3
  "license": "MIT",
4
4
  "name": "material-react-table",
5
5
  "description": "A fully featured Material UI V5 implementation of TanStack React Table V8, written from the ground up in TypeScript.",
@@ -1127,6 +1127,10 @@ const MaterialReactTable = <TData extends Record<string, any> = {}>({
1127
1127
  icons,
1128
1128
  layoutMode = 'semantic',
1129
1129
  localization,
1130
+ manualFiltering,
1131
+ manualGrouping,
1132
+ manualPagination,
1133
+ manualSorting,
1130
1134
  positionActionsColumn = 'first',
1131
1135
  positionExpandColumn = 'first',
1132
1136
  positionGlobalFilter = 'right',
@@ -1138,7 +1142,7 @@ const MaterialReactTable = <TData extends Record<string, any> = {}>({
1138
1142
  sortingFns,
1139
1143
  ...rest
1140
1144
  }: MaterialReactTableProps<TData>) => {
1141
- const _icons = useMemo(() => ({ ...MRT_Default_Icons, ...icons }), []);
1145
+ const _icons = useMemo(() => ({ ...MRT_Default_Icons, ...icons }), [icons]);
1142
1146
  const _localization = useMemo(
1143
1147
  () => ({
1144
1148
  ...MRT_Localization_EN,
@@ -1154,14 +1158,14 @@ const MaterialReactTable = <TData extends Record<string, any> = {}>({
1154
1158
  const _sortingFns = useMemo(() => ({ ...MRT_SortingFns, ...sortingFns }), []);
1155
1159
  const _defaultColumn = useMemo<Partial<MRT_ColumnDef<TData>>>(
1156
1160
  () => ({ ...MRT_DefaultColumn, ...defaultColumn }),
1157
- [],
1161
+ [defaultColumn],
1158
1162
  );
1159
1163
  const _defaultDisplayColumn = useMemo<Partial<MRT_ColumnDef<TData>>>(
1160
1164
  () => ({
1161
1165
  ...(MRT_DefaultDisplayColumn as Partial<MRT_ColumnDef<TData>>),
1162
1166
  ...defaultDisplayColumn,
1163
1167
  }),
1164
- [],
1168
+ [defaultDisplayColumn],
1165
1169
  );
1166
1170
 
1167
1171
  if (rest.enableRowVirtualization || rest.enableColumnVirtualization) {
@@ -1169,6 +1173,13 @@ const MaterialReactTable = <TData extends Record<string, any> = {}>({
1169
1173
  enableStickyHeader = true;
1170
1174
  }
1171
1175
 
1176
+ if (!rest.data?.length) {
1177
+ manualFiltering = true;
1178
+ manualGrouping = true;
1179
+ manualPagination = true;
1180
+ manualSorting = true;
1181
+ }
1182
+
1172
1183
  return (
1173
1184
  <MRT_TableRoot
1174
1185
  aggregationFns={_aggregationFns}
@@ -1206,6 +1217,10 @@ const MaterialReactTable = <TData extends Record<string, any> = {}>({
1206
1217
  icons={_icons}
1207
1218
  layoutMode={layoutMode}
1208
1219
  localization={_localization}
1220
+ manualFiltering={manualFiltering}
1221
+ manualGrouping={manualGrouping}
1222
+ manualPagination={manualPagination}
1223
+ manualSorting={manualSorting}
1209
1224
  positionActionsColumn={positionActionsColumn}
1210
1225
  positionExpandColumn={positionExpandColumn}
1211
1226
  positionGlobalFilter={positionGlobalFilter}
@@ -221,7 +221,7 @@ export const getIsFirstRightPinnedColumn = (column: MRT_Column) => {
221
221
 
222
222
  export const getTotalRight = (table: MRT_TableInstance, column: MRT_Column) => {
223
223
  return (
224
- (table.getRightLeafHeaders().length - 1 - column.getPinnedIndex()) * 160
224
+ (table.getRightLeafHeaders().length - 1 - column.getPinnedIndex()) * 200
225
225
  );
226
226
  };
227
227
 
@@ -253,6 +253,26 @@ export const getCommonCellStyles = ({
253
253
  column.getIsPinned() === 'left'
254
254
  ? `${column.getStart('left')}px`
255
255
  : undefined,
256
+ ml:
257
+ table.options.enableColumnVirtualization &&
258
+ column.getIsPinned() === 'left' &&
259
+ column.getPinnedIndex() === 0
260
+ ? `-${
261
+ column.getSize() *
262
+ (table.getState().columnPinning.left?.length ?? 1) *
263
+ 1.2
264
+ }px`
265
+ : undefined,
266
+ mr:
267
+ table.options.enableColumnVirtualization &&
268
+ column.getIsPinned() === 'right' &&
269
+ column.getPinnedIndex() === table.getVisibleLeafColumns().length - 1
270
+ ? `-${
271
+ column.getSize() *
272
+ (table.getState().columnPinning.right?.length ?? 1) *
273
+ 1.2
274
+ }px`
275
+ : undefined,
256
276
  opacity:
257
277
  table.getState().draggingColumn?.id === column.id ||
258
278
  table.getState().hoveredColumn?.id === column.id
@@ -266,7 +286,10 @@ export const getCommonCellStyles = ({
266
286
  column.getIsPinned() === 'right'
267
287
  ? `${getTotalRight(table, column)}px`
268
288
  : undefined,
269
- transition: `all ${column.getIsResizing() ? 0 : '150ms'} ease-in-out`,
289
+ transition:
290
+ table.options.enableColumnVirtualization || column.getIsResizing()
291
+ ? 'none'
292
+ : `all 150ms ease-in-out`,
270
293
  ...(tableCellProps?.sx instanceof Function
271
294
  ? tableCellProps.sx(theme)
272
295
  : (tableCellProps?.sx as any)),
@@ -8,10 +8,7 @@ interface Props {
8
8
  table: MRT_TableInstance;
9
9
  }
10
10
 
11
- export const MRT_TableFooterCell: FC<Props> = ({
12
- footer,
13
- table,
14
- }) => {
11
+ export const MRT_TableFooterCell: FC<Props> = ({ footer, table }) => {
15
12
  const {
16
13
  getState,
17
14
  options: { layoutMode, muiTableFooterCellProps },
@@ -59,11 +59,7 @@ export const MRT_TableFooterRow: FC<Props> = ({
59
59
  : (footerOrVirtualFooter as MRT_Header);
60
60
 
61
61
  return (
62
- <MRT_TableFooterCell
63
- footer={footer}
64
- key={footer.id}
65
- table={table}
66
- />
62
+ <MRT_TableFooterCell footer={footer} key={footer.id} table={table} />
67
63
  );
68
64
  })}
69
65
  {virtualPaddingRight ? (
@@ -17,10 +17,7 @@ interface Props {
17
17
  table: MRT_TableInstance;
18
18
  }
19
19
 
20
- export const MRT_TableHeadCell: FC<Props> = ({
21
- header,
22
- table,
23
- }) => {
20
+ export const MRT_TableHeadCell: FC<Props> = ({ header, table }) => {
24
21
  const theme = useTheme();
25
22
  const {
26
23
  getState,
@@ -51,11 +51,7 @@ export const MRT_TableHeadRow: FC<Props> = ({
51
51
  : (headerOrVirtualHeader as MRT_Header);
52
52
 
53
53
  return (
54
- <MRT_TableHeadCell
55
- header={header}
56
- key={header.id}
57
- table={table}
58
- />
54
+ <MRT_TableHeadCell header={header} key={header.id} table={table} />
59
55
  );
60
56
  })}
61
57
  {virtualPaddingRight ? (
@@ -52,25 +52,23 @@ export const MRT_Table: FC<Props> = ({ table }) => {
52
52
  .getRowModel()
53
53
  .rows[0]?.getCenterVisibleCells()
54
54
  ?.slice(0, 16)
55
- ?.map((cell) => cell.column.getSize() * 1.25) ?? [];
55
+ ?.map((cell) => cell.column.getSize() * 1.2) ?? [];
56
56
  return columnsWidths.reduce((a, b) => a + b, 0) / columnsWidths.length;
57
57
  }, [table.getRowModel().rows, columnPinning, columnVisibility]);
58
58
 
59
- const pinnedColumnIndexes = useMemo(
59
+ const [leftPinnedIndexes, rightPinnedIndexes] = useMemo(
60
60
  () =>
61
61
  enableColumnVirtualization && enablePinning
62
62
  ? [
63
- ...table.getLeftFlatHeaders().map((h) => h.column.getPinnedIndex()),
64
- ...table
65
- .getRightFlatHeaders()
63
+ table.getLeftLeafColumns().map((c) => c.getPinnedIndex()),
64
+ table
65
+ .getRightLeafColumns()
66
66
  .map(
67
- (h) =>
68
- table.getVisibleFlatColumns().length -
69
- h.column.getPinnedIndex() -
70
- 1,
67
+ (c) =>
68
+ table.getVisibleLeafColumns().length - c.getPinnedIndex() - 1,
71
69
  ),
72
70
  ]
73
- : [],
71
+ : [[], []],
74
72
  [columnPinning, enableColumnVirtualization, enablePinning],
75
73
  );
76
74
 
@@ -78,21 +76,20 @@ export const MRT_Table: FC<Props> = ({ table }) => {
78
76
  | Virtualizer<HTMLDivElement, HTMLTableCellElement>
79
77
  | undefined = enableColumnVirtualization
80
78
  ? useVirtualizer({
81
- count: table.getRowModel().rows[0].getVisibleCells().length,
79
+ count: table.getVisibleLeafColumns().length,
82
80
  estimateSize: () => averageColumnWidth,
83
81
  getScrollElement: () => tableContainerRef.current,
84
82
  horizontal: true,
85
- measureElement: (element) => element?.getBoundingClientRect().width,
86
83
  overscan: 3,
87
84
  rangeExtractor: useCallback(
88
- (range: Range) =>
89
- [
90
- ...new Set([
91
- ...pinnedColumnIndexes,
92
- ...defaultRangeExtractor(range),
93
- ]),
94
- ].sort((a, b) => a - b),
95
- [pinnedColumnIndexes],
85
+ (range: Range) => [
86
+ ...new Set([
87
+ ...leftPinnedIndexes,
88
+ ...defaultRangeExtractor(range),
89
+ ...rightPinnedIndexes,
90
+ ]),
91
+ ],
92
+ [leftPinnedIndexes, rightPinnedIndexes],
96
93
  ),
97
94
  ...vProps,
98
95
  })
@@ -110,13 +107,11 @@ export const MRT_Table: FC<Props> = ({ table }) => {
110
107
  let virtualPaddingRight: number | undefined;
111
108
 
112
109
  if (columnVirtualizer && virtualColumns?.length) {
113
- virtualPaddingLeft = virtualColumns?.length
114
- ? virtualColumns[0]?.start || 0
115
- : 0;
116
- virtualPaddingRight = virtualColumns?.length
117
- ? columnVirtualizer.getTotalSize() -
118
- (virtualColumns[virtualColumns.length - 1]?.end || 0)
119
- : 0;
110
+ virtualPaddingLeft = virtualColumns[leftPinnedIndexes.length]?.start ?? 0;
111
+ virtualPaddingRight =
112
+ columnVirtualizer.getTotalSize() -
113
+ (virtualColumns[virtualColumns.length - 1 - rightPinnedIndexes.length]
114
+ ?.end ?? 0);
120
115
  }
121
116
 
122
117
  const props = {
@@ -239,7 +239,7 @@ export const MRT_TableRoot = <TData extends Record<string, any> = {}>(
239
239
  {},
240
240
  ...getAllLeafColumnDefs(props.columns as MRT_ColumnDef[]).map(
241
241
  (col) => ({
242
- [col.id ?? col.accessorKey ?? '']: null,
242
+ [getColumnId(col)]: null,
243
243
  }),
244
244
  ),
245
245
  ),