material-react-table 3.2.0 → 3.2.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/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "3.2.0",
2
+ "version": "3.2.1",
3
3
  "license": "MIT",
4
4
  "name": "material-react-table",
5
5
  "description": "A fully featured Material UI V6 implementation of TanStack React Table V8, written from the ground up in TypeScript.",
@@ -32,7 +32,7 @@ export const MRT_ToggleGlobalFilterButton = <TData extends MRT_RowData>({
32
32
  <Tooltip title={rest?.title ?? localization.showHideSearch}>
33
33
  <IconButton
34
34
  aria-label={rest?.title ?? localization.showHideSearch}
35
- disabled={!!globalFilter}
35
+ disabled={!!globalFilter && showGlobalFilter}
36
36
  onClick={handleToggleSearch}
37
37
  {...rest}
38
38
  title={undefined}
@@ -26,6 +26,7 @@ export const MRT_TableHeadCellGrabHandle = <TData extends MRT_RowData>({
26
26
  getState,
27
27
  options: { enableColumnOrdering, muiColumnDragHandleProps },
28
28
  setColumnOrder,
29
+ setColumnPinning,
29
30
  setDraggingColumn,
30
31
  setHoveredColumn,
31
32
  } = table;
@@ -64,9 +65,12 @@ export const MRT_TableHeadCellGrabHandle = <TData extends MRT_RowData>({
64
65
  hoveredColumn &&
65
66
  hoveredColumn?.id !== draggingColumn?.id
66
67
  ) {
67
- setColumnOrder(
68
- reorderColumn(column, hoveredColumn as MRT_Column<TData>, columnOrder),
69
- );
68
+ const reorderedColumns = reorderColumn(column, hoveredColumn as MRT_Column<TData>, columnOrder);
69
+ setColumnOrder(reorderedColumns);
70
+ setColumnPinning(({ left = [], right = [] }) => ({
71
+ left: reorderedColumns.filter(header => left.includes(header)),
72
+ right: reorderedColumns.filter(header => right.includes(header)),
73
+ }));
70
74
  }
71
75
  setDraggingColumn(null);
72
76
  setHoveredColumn(null);
@@ -343,8 +343,8 @@ export const MRT_FilterTextField = <TData extends MRT_RowData>({
343
343
  ...textFieldProps.slotProps?.formHelperText,
344
344
  },
345
345
  input: endAdornment //hack because mui looks for presence of endAdornment key instead of undefined
346
- ? { endAdornment, startAdornment }
347
- : { startAdornment },
346
+ ? {endAdornment, startAdornment, ...textFieldProps.slotProps?.input}
347
+ : {startAdornment, ...textFieldProps.slotProps?.input},
348
348
  htmlInput: {
349
349
  'aria-label': filterPlaceholder,
350
350
  autoComplete: 'off',
@@ -51,6 +51,7 @@ export const MRT_ShowHideColumnsMenuItems = <TData extends MRT_RowData>({
51
51
  mrtTheme: { draggingBorderColor },
52
52
  },
53
53
  setColumnOrder,
54
+ setColumnPinning,
54
55
  } = table;
55
56
  const { columnOrder } = getState();
56
57
  const { columnDef } = column;
@@ -85,7 +86,12 @@ export const MRT_ShowHideColumnsMenuItems = <TData extends MRT_RowData>({
85
86
  setIsDragging(false);
86
87
  setHoveredColumn(null);
87
88
  if (hoveredColumn) {
88
- setColumnOrder(reorderColumn(column, hoveredColumn, columnOrder));
89
+ const reorderedColumns = reorderColumn(column, hoveredColumn, columnOrder);
90
+ setColumnOrder(reorderedColumns);
91
+ setColumnPinning(({ left = [], right = [] }) => ({
92
+ left: reorderedColumns.filter(header => left.includes(header)),
93
+ right: reorderedColumns.filter(header => right.includes(header)),
94
+ }));
89
95
  }
90
96
  };
91
97
 
@@ -53,13 +53,14 @@ export const MRT_ToolbarAlertBanner = <TData extends MRT_RowData>({
53
53
  });
54
54
 
55
55
  const totalRowCount = rowCount ?? getCoreRowModel().rows.length;
56
+ const filteredRowCount = getFilteredSelectedRowModel().rows.length;
56
57
 
57
58
  const selectedRowCount = useMemo(
58
59
  () =>
59
60
  manualPagination
60
61
  ? Object.values(rowSelection).filter(Boolean).length
61
- : getFilteredSelectedRowModel().rows.length,
62
- [rowSelection, totalRowCount, manualPagination],
62
+ : filteredRowCount,
63
+ [rowSelection, totalRowCount, manualPagination, filteredRowCount],
63
64
  );
64
65
  const selectedAlert =
65
66
  selectedRowCount > 0 ? (
@@ -69,9 +69,12 @@ export const useMRT_Effects = <TData extends MRT_RowData>(
69
69
  useEffect(() => {
70
70
  if (!enablePagination || isLoading || showSkeletons) return;
71
71
  const { pageIndex, pageSize } = pagination;
72
- const firstVisibleRowIndex = pageIndex * pageSize;
73
- if (firstVisibleRowIndex >= totalRowCount) {
74
- table.setPageIndex(Math.ceil(totalRowCount / pageSize) - 1);
72
+ const totalPages: number =
73
+ totalRowCount > 0 ? Math.ceil(totalRowCount / pageSize) : 1;
74
+ const isOutOfBounds: boolean = pageIndex < 0 || pageIndex >= totalPages;
75
+
76
+ if (isOutOfBounds) {
77
+ table.setPageIndex(totalPages - 1);
75
78
  }
76
79
  }, [totalRowCount, enablePagination, isLoading, showSkeletons]);
77
80