material-react-table 1.0.0-beta.0 → 1.0.0-beta.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 (50) hide show
  1. package/dist/cjs/MaterialReactTable.d.ts +5 -3
  2. package/dist/cjs/body/MRT_EditRowModal.d.ts +0 -1
  3. package/dist/cjs/body/MRT_TableBody.d.ts +1 -2
  4. package/dist/cjs/body/MRT_TableBodyCellValue.d.ts +2 -2
  5. package/dist/cjs/buttons/MRT_ColumnPinningButtons.d.ts +0 -1
  6. package/dist/cjs/buttons/MRT_EditActionButtons.d.ts +0 -1
  7. package/dist/cjs/buttons/MRT_FullScreenToggleButton.d.ts +0 -1
  8. package/dist/cjs/buttons/MRT_ShowHideColumnsButton.d.ts +0 -1
  9. package/dist/cjs/buttons/MRT_ToggleDensePaddingButton.d.ts +0 -1
  10. package/dist/cjs/buttons/MRT_ToggleFiltersButton.d.ts +0 -1
  11. package/dist/cjs/buttons/MRT_ToggleGlobalFilterButton.d.ts +0 -1
  12. package/dist/cjs/index.js +27 -23
  13. package/dist/cjs/index.js.map +1 -1
  14. package/dist/cjs/inputs/MRT_EditCellTextField.d.ts +0 -1
  15. package/dist/cjs/inputs/MRT_GlobalFilterTextField.d.ts +0 -1
  16. package/dist/cjs/menus/MRT_FilterOptionMenu.d.ts +0 -1
  17. package/dist/cjs/menus/MRT_ShowHideColumnsMenu.d.ts +0 -1
  18. package/dist/cjs/table/MRT_Table.d.ts +1 -2
  19. package/dist/cjs/table/MRT_TableRoot.d.ts +0 -1
  20. package/dist/esm/MaterialReactTable.d.ts +5 -3
  21. package/dist/esm/body/MRT_EditRowModal.d.ts +0 -1
  22. package/dist/esm/body/MRT_TableBody.d.ts +1 -2
  23. package/dist/esm/body/MRT_TableBodyCellValue.d.ts +2 -2
  24. package/dist/esm/buttons/MRT_ColumnPinningButtons.d.ts +0 -1
  25. package/dist/esm/buttons/MRT_EditActionButtons.d.ts +0 -1
  26. package/dist/esm/buttons/MRT_FullScreenToggleButton.d.ts +0 -1
  27. package/dist/esm/buttons/MRT_ShowHideColumnsButton.d.ts +0 -1
  28. package/dist/esm/buttons/MRT_ToggleDensePaddingButton.d.ts +0 -1
  29. package/dist/esm/buttons/MRT_ToggleFiltersButton.d.ts +0 -1
  30. package/dist/esm/buttons/MRT_ToggleGlobalFilterButton.d.ts +0 -1
  31. package/dist/esm/inputs/MRT_EditCellTextField.d.ts +0 -1
  32. package/dist/esm/inputs/MRT_GlobalFilterTextField.d.ts +0 -1
  33. package/dist/esm/material-react-table.esm.js +28 -24
  34. package/dist/esm/material-react-table.esm.js.map +1 -1
  35. package/dist/esm/menus/MRT_FilterOptionMenu.d.ts +0 -1
  36. package/dist/esm/menus/MRT_ShowHideColumnsMenu.d.ts +0 -1
  37. package/dist/esm/table/MRT_Table.d.ts +1 -2
  38. package/dist/esm/table/MRT_TableRoot.d.ts +0 -1
  39. package/dist/index.d.ts +5 -4
  40. package/package.json +6 -6
  41. package/src/MaterialReactTable.tsx +7 -2
  42. package/src/body/MRT_TableBody.tsx +3 -3
  43. package/src/body/MRT_TableBodyCell.tsx +10 -9
  44. package/src/body/MRT_TableBodyCellValue.tsx +7 -2
  45. package/src/head/MRT_TableHeadCell.tsx +3 -3
  46. package/src/inputs/MRT_FilterTextField.tsx +8 -3
  47. package/src/table/MRT_Table.tsx +3 -4
  48. package/src/table/MRT_TableContainer.tsx +2 -11
  49. package/src/table/MRT_TableRoot.tsx +5 -3
  50. package/src/toolbar/MRT_TablePagination.tsx +1 -1
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import type { MRT_Header, MRT_InternalFilterOption, MRT_TableInstance } from '..';
3
2
  import { MRT_Localization } from '../localization';
4
3
  export declare const mrtFilterOptions: (localization: MRT_Localization) => MRT_InternalFilterOption[];
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import type { MRT_TableInstance } from '..';
3
2
  interface Props<TData extends Record<string, any> = {}> {
4
3
  anchorEl: HTMLElement | null;
@@ -1,7 +1,6 @@
1
- import { FC, RefObject } from 'react';
1
+ import { FC } from 'react';
2
2
  import { MRT_TableInstance } from '..';
3
3
  interface Props {
4
- tableContainerRef: RefObject<HTMLDivElement>;
5
4
  table: MRT_TableInstance;
6
5
  }
7
6
  export declare const MRT_Table: FC<Props>;
@@ -1,3 +1,2 @@
1
- /// <reference types="react" />
2
1
  import type { MaterialReactTableProps } from '..';
3
2
  export declare const MRT_TableRoot: <TData extends Record<string, any> = {}>(props: MaterialReactTableProps<TData>) => JSX.Element;
package/dist/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { MutableRefObject, Dispatch, SetStateAction, ReactNode, DragEvent } from 'react';
3
2
  import { ButtonProps, TextFieldProps, TableCellProps, IconButtonProps, ToolbarProps, LinearProgressProps, CheckboxProps, SkeletonProps, TableBodyProps, TableRowProps, TableContainerProps, TableFooterProps, TableHeadProps, TablePaginationProps, PaperProps, TableProps, ChipProps, AlertProps } from '@mui/material';
4
3
  import { Row, Table, TableState, ColumnDef, DeepKeys, Column, Header, HeaderGroup, Cell, SortingFn, FilterFn, TableOptions, OnChangeFn } from '@tanstack/react-table';
@@ -518,7 +517,7 @@ declare type MaterialReactTableProps<TData extends Record<string, any> = {}> = O
518
517
  muiExpandAllButtonProps?: IconButtonProps | (({ table }: {
519
518
  table: MRT_TableInstance<TData>;
520
519
  }) => IconButtonProps);
521
- muiExpandButtonProps?: IconButtonProps | (({ table, }: {
520
+ muiExpandButtonProps?: IconButtonProps | (({ row, table, }: {
522
521
  table: MRT_TableInstance<TData>;
523
522
  row: MRT_Row<TData>;
524
523
  }) => IconButtonProps);
@@ -554,9 +553,11 @@ declare type MaterialReactTableProps<TData extends Record<string, any> = {}> = O
554
553
  row: MRT_Row<TData>;
555
554
  table: MRT_TableInstance<TData>;
556
555
  }) => TableCellProps);
557
- muiTableBodyCellSkeletonProps?: SkeletonProps | (({ table, cell, }: {
558
- table: MRT_TableInstance<TData>;
556
+ muiTableBodyCellSkeletonProps?: SkeletonProps | (({ cell, column, row, table, }: {
559
557
  cell: MRT_Cell<TData>;
558
+ column: MRT_Column<TData>;
559
+ row: MRT_Row<TData>;
560
+ table: MRT_TableInstance<TData>;
560
561
  }) => SkeletonProps);
561
562
  muiTableBodyProps?: TableBodyProps | (({ table }: {
562
563
  table: MRT_TableInstance<TData>;
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.0.0-beta.0",
2
+ "version": "1.0.0-beta.3",
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.",
@@ -51,8 +51,8 @@
51
51
  "devDependencies": {
52
52
  "@babel/core": "^7.18.13",
53
53
  "@babel/preset-react": "^7.18.6",
54
- "@emotion/react": "^11.10.0",
55
- "@emotion/styled": "^11.10.0",
54
+ "@emotion/react": "^11.10.4",
55
+ "@emotion/styled": "^11.10.4",
56
56
  "@faker-js/faker": "^7.5.0",
57
57
  "@mui/icons-material": "^5.10.3",
58
58
  "@mui/material": "^5.10.3",
@@ -68,7 +68,7 @@
68
68
  "@storybook/addon-storysource": "^6.5.10",
69
69
  "@storybook/addons": "^6.5.10",
70
70
  "@storybook/react": "^6.5.10",
71
- "@types/react": "^18.0.17",
71
+ "@types/react": "^18.0.18",
72
72
  "@types/react-dom": "^18.0.6",
73
73
  "babel-loader": "^8.2.5",
74
74
  "eslint": "^8.23.0",
@@ -78,7 +78,7 @@
78
78
  "react": "^18.2.0",
79
79
  "react-dom": "^18.2.0",
80
80
  "react-is": "^18.2.0",
81
- "rollup": "^2.78.1",
81
+ "rollup": "^2.79.0",
82
82
  "rollup-plugin-dts": "^4.2.2",
83
83
  "rollup-plugin-peer-deps-external": "^2.2.4",
84
84
  "size-limit": "^8.0.1",
@@ -95,7 +95,7 @@
95
95
  },
96
96
  "dependencies": {
97
97
  "@tanstack/match-sorter-utils": "8.1.1",
98
- "@tanstack/react-table": "8.5.11",
98
+ "@tanstack/react-table": "8.5.13",
99
99
  "react-virtual": "^2.10.4"
100
100
  }
101
101
  }
@@ -541,6 +541,7 @@ export type MaterialReactTableProps<TData extends Record<string, any> = {}> =
541
541
  muiExpandButtonProps?:
542
542
  | IconButtonProps
543
543
  | (({
544
+ row,
544
545
  table,
545
546
  }: {
546
547
  table: MRT_TableInstance<TData>;
@@ -612,11 +613,15 @@ export type MaterialReactTableProps<TData extends Record<string, any> = {}> =
612
613
  muiTableBodyCellSkeletonProps?:
613
614
  | SkeletonProps
614
615
  | (({
615
- table,
616
616
  cell,
617
+ column,
618
+ row,
619
+ table,
617
620
  }: {
618
- table: MRT_TableInstance<TData>;
619
621
  cell: MRT_Cell<TData>;
622
+ column: MRT_Column<TData>;
623
+ row: MRT_Row<TData>;
624
+ table: MRT_TableInstance<TData>;
620
625
  }) => SkeletonProps);
621
626
  muiTableBodyProps?:
622
627
  | TableBodyProps
@@ -1,4 +1,4 @@
1
- import React, { FC, RefObject, useMemo } from 'react';
1
+ import React, { FC, useMemo } from 'react';
2
2
  import { useVirtual } from 'react-virtual'; //stuck on v2 for now
3
3
  // import { useVirtualizer, Virtualizer } from '@tanstack/react-virtual';
4
4
  import { TableBody } from '@mui/material';
@@ -8,10 +8,9 @@ import type { MRT_Row, MRT_TableInstance } from '..';
8
8
 
9
9
  interface Props {
10
10
  table: MRT_TableInstance;
11
- tableContainerRef: RefObject<HTMLDivElement>;
12
11
  }
13
12
 
14
- export const MRT_TableBody: FC<Props> = ({ table, tableContainerRef }) => {
13
+ export const MRT_TableBody: FC<Props> = ({ table }) => {
15
14
  const {
16
15
  getRowModel,
17
16
  getPrePaginationRowModel,
@@ -26,6 +25,7 @@ export const MRT_TableBody: FC<Props> = ({ table, tableContainerRef }) => {
26
25
  virtualizerInstanceRef,
27
26
  virtualizerProps,
28
27
  },
28
+ refs: { tableContainerRef },
29
29
  } = table;
30
30
  const { globalFilter, pagination, sorting } = getState();
31
31
 
@@ -82,6 +82,11 @@ export const MRT_TableBodyCell: FC<Props> = ({
82
82
  ...mcTableCellBodyProps,
83
83
  };
84
84
 
85
+ const skeletonProps =
86
+ muiTableBodyCellSkeletonProps instanceof Function
87
+ ? muiTableBodyCellSkeletonProps({ cell, column, row, table })
88
+ : muiTableBodyCellSkeletonProps;
89
+
85
90
  const isEditable =
86
91
  (enableEditing || columnDef.enableEditing) &&
87
92
  columnDef.enableEditing !== false;
@@ -140,7 +145,7 @@ export const MRT_TableBodyCell: FC<Props> = ({
140
145
 
141
146
  const getTotalRight = () => {
142
147
  return (
143
- (table.getRightLeafHeaders().length - 1 - column.getPinnedIndex()) * 150
148
+ (table.getRightLeafHeaders().length - 1 - column.getPinnedIndex()) * 160
144
149
  );
145
150
  };
146
151
 
@@ -189,9 +194,9 @@ export const MRT_TableBodyCell: FC<Props> = ({
189
194
  ? alpha(lighten(theme.palette.background.default, 0.04), 0.95)
190
195
  : undefined,
191
196
  boxShadow: getIsLastLeftPinnedColumn()
192
- ? `4px 0 4px -2px ${alpha(theme.palette.common.black, 0.1)}`
197
+ ? `-4px 0 8px -6px ${alpha(theme.palette.common.black, 0.2)} inset`
193
198
  : getIsFirstRightPinnedColumn()
194
- ? `-4px 0 4px -2px ${alpha(theme.palette.common.black, 0.1)}`
199
+ ? `4px 0 8px -6px ${alpha(theme.palette.common.black, 0.2)} inset`
195
200
  : undefined,
196
201
  cursor: isEditable && editingMode === 'cell' ? 'pointer' : 'text',
197
202
  left:
@@ -233,11 +238,7 @@ export const MRT_TableBodyCell: FC<Props> = ({
233
238
  transition: 'all 0.2s ease-in-out',
234
239
  whiteSpace: density === 'compact' ? 'nowrap' : 'normal',
235
240
  zIndex:
236
- draggingColumn?.id === column.id
237
- ? 2
238
- : column.getIsPinned()
239
- ? 1
240
- : undefined,
241
+ draggingColumn?.id === column.id ? 2 : column.getIsPinned() ? 1 : 0,
241
242
  '&:hover': {
242
243
  backgroundColor:
243
244
  enableHover &&
@@ -264,7 +265,7 @@ export const MRT_TableBodyCell: FC<Props> = ({
264
265
  animation="wave"
265
266
  height={20}
266
267
  width={skeletonWidth}
267
- {...muiTableBodyCellSkeletonProps}
268
+ {...skeletonProps}
268
269
  />
269
270
  ) : enableRowNumbers &&
270
271
  rowNumberMode === 'static' &&
@@ -1,4 +1,4 @@
1
- import React, { FC } from 'react';
1
+ import React, { FC, memo } from 'react';
2
2
  import { MRT_Cell, MRT_TableInstance } from '..';
3
3
 
4
4
  interface Props {
@@ -6,7 +6,7 @@ interface Props {
6
6
  table: MRT_TableInstance;
7
7
  }
8
8
 
9
- export const MRT_TableBodyCellValue: FC<Props> = ({ cell, table }) => {
9
+ const _MRT_TableBodyCellValue: FC<Props> = ({ cell, table }) => {
10
10
  const { column, row } = cell;
11
11
  const { columnDef } = column;
12
12
 
@@ -32,3 +32,8 @@ export const MRT_TableBodyCellValue: FC<Props> = ({ cell, table }) => {
32
32
  </>
33
33
  );
34
34
  };
35
+
36
+ export const MRT_TableBodyCellValue = memo(
37
+ _MRT_TableBodyCellValue,
38
+ (prev, next) => prev.cell.getValue() === next.cell.getValue(),
39
+ );
@@ -67,7 +67,7 @@ export const MRT_TableHeadCell: FC<Props> = ({ header, table }) => {
67
67
 
68
68
  const getTotalRight = () => {
69
69
  return (
70
- (table.getRightLeafHeaders().length - 1 - column.getPinnedIndex()) * 150
70
+ (table.getRightLeafHeaders().length - 1 - column.getPinnedIndex()) * 160
71
71
  );
72
72
  };
73
73
 
@@ -121,9 +121,9 @@ export const MRT_TableHeadCell: FC<Props> = ({ header, table }) => {
121
121
  : 'inherit',
122
122
  backgroundImage: 'inherit',
123
123
  boxShadow: getIsLastLeftPinnedColumn()
124
- ? `4px 0 4px -2px ${alpha(theme.palette.common.black, 0.1)}`
124
+ ? `-4px 0 8px -6px ${alpha(theme.palette.common.black, 0.2)} inset`
125
125
  : getIsFirstRightPinnedColumn()
126
- ? `-4px 0 4px -2px ${alpha(theme.palette.common.black, 0.1)}`
126
+ ? `4px 0 8px -6px ${alpha(theme.palette.common.black, 0.2)} inset`
127
127
  : undefined,
128
128
  fontWeight: 'bold',
129
129
  left:
@@ -18,8 +18,8 @@ import {
18
18
  TextFieldProps,
19
19
  Tooltip,
20
20
  } from '@mui/material';
21
- import { MRT_FilterOptionMenu } from '../menus/MRT_FilterOptionMenu';
22
21
  import type { MRT_Header, MRT_TableInstance } from '..';
22
+ import { MRT_FilterOptionMenu } from '../menus/MRT_FilterOptionMenu';
23
23
 
24
24
  interface Props {
25
25
  header: MRT_Header;
@@ -171,7 +171,7 @@ export const MRT_FilterTextField: FC<Props> = ({
171
171
  };
172
172
 
173
173
  useEffect(() => {
174
- setFilterValue('');
174
+ handleClear();
175
175
  }, [columnDef._filterFn]);
176
176
 
177
177
  if (columnDef.Filter) {
@@ -313,7 +313,12 @@ export const MRT_FilterTextField: FC<Props> = ({
313
313
  }}
314
314
  sx={(theme) => ({
315
315
  p: 0,
316
- minWidth: !filterChipLabel ? '120px' : 'auto',
316
+ minWidth:
317
+ columnDef.filterVariant === 'range'
318
+ ? '90px'
319
+ : !filterChipLabel
320
+ ? '120px'
321
+ : 'auto',
317
322
  width: '100%',
318
323
  '& .MuiSelect-icon': {
319
324
  mr: '1.5rem',
@@ -1,4 +1,4 @@
1
- import React, { FC, RefObject } from 'react';
1
+ import React, { FC } from 'react';
2
2
  import { Table } from '@mui/material';
3
3
  import { MRT_TableHead } from '../head/MRT_TableHead';
4
4
  import { MRT_TableBody } from '../body/MRT_TableBody';
@@ -6,11 +6,10 @@ import { MRT_TableFooter } from '../footer/MRT_TableFooter';
6
6
  import { MRT_TableInstance } from '..';
7
7
 
8
8
  interface Props {
9
- tableContainerRef: RefObject<HTMLDivElement>;
10
9
  table: MRT_TableInstance;
11
10
  }
12
11
 
13
- export const MRT_Table: FC<Props> = ({ tableContainerRef, table }) => {
12
+ export const MRT_Table: FC<Props> = ({ table }) => {
14
13
  const {
15
14
  getState,
16
15
  options: {
@@ -44,7 +43,7 @@ export const MRT_Table: FC<Props> = ({ tableContainerRef, table }) => {
44
43
  })}
45
44
  >
46
45
  {enableTableHead && <MRT_TableHead table={table} />}
47
- <MRT_TableBody tableContainerRef={tableContainerRef} table={table} />
46
+ <MRT_TableBody table={table} />
48
47
  {enableTableFooter && <MRT_TableFooter table={table} />}
49
48
  </Table>
50
49
  );
@@ -1,10 +1,4 @@
1
- import React, {
2
- FC,
3
- RefObject,
4
- useEffect,
5
- useLayoutEffect,
6
- useState,
7
- } from 'react';
1
+ import React, { FC, useEffect, useLayoutEffect, useState } from 'react';
8
2
  import { TableContainer } from '@mui/material';
9
3
  import { MRT_Table } from './MRT_Table';
10
4
  import type { MRT_TableInstance } from '..';
@@ -77,10 +71,7 @@ export const MRT_TableContainer: FC<Props> = ({ table }) => {
77
71
  ...tableContainerProps?.style,
78
72
  }}
79
73
  >
80
- <MRT_Table
81
- tableContainerRef={tableContainerRef as RefObject<HTMLDivElement>}
82
- table={table}
83
- />
74
+ <MRT_Table table={table} />
84
75
  </TableContainer>
85
76
  );
86
77
  };
@@ -321,13 +321,15 @@ export const MRT_TableRoot = <TData extends Record<string, any> = {}>(
321
321
  disablePortal
322
322
  fullScreen
323
323
  keepMounted={false}
324
- onClose={() => setIsFullScreen(false)}
325
- open={isFullScreen}
324
+ onClose={() => table.setIsFullScreen(false)}
325
+ open={table.getState().isFullScreen}
326
326
  transitionDuration={400}
327
327
  >
328
328
  <MRT_TablePaper table={table as any} />
329
329
  </Dialog>
330
- {!isFullScreen && <MRT_TablePaper table={table as any} />}
330
+ {!table.getState().isFullScreen && (
331
+ <MRT_TablePaper table={table as any} />
332
+ )}
331
333
  {editingRow && props.editingMode === 'modal' && (
332
334
  <MRT_EditRowModal row={editingRow as any} table={table} open />
333
335
  )}
@@ -58,7 +58,7 @@ export const MRT_TablePagination: FC<Props> = ({ table, position }) => {
58
58
  enableToolbarInternalActions &&
59
59
  !showGlobalFilter
60
60
  ? '3.5rem'
61
- : '-0.25rem',
61
+ : undefined,
62
62
  position: 'relative',
63
63
  zIndex: 2,
64
64
  ...(tablePaginationProps?.sx instanceof Function