material-react-table 0.7.0-alpha.10 → 0.7.0-alpha.11

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/dist/utils.d.ts CHANGED
@@ -7,6 +7,6 @@ export declare const createGroup: <D extends Record<string, any> = {}>(table: Ta
7
7
  export declare const createDataColumn: <D extends Record<string, any> = {}>(table: Table<D>, column: MRT_ColumnInterface<D>, currentFilterTypes: {
8
8
  [key: string]: MRT_FilterType;
9
9
  }) => ColumnDef<D>;
10
- export declare const createDisplayColumn: <D extends Record<string, any> = {}>(table: Table<D>, column: Pick<MRT_ColumnInterface<D>, "footer" | "columns" | "id" | "accessorKey" | "accessorFn" | "cell" | "meta" | "enableHiding" | "defaultCanHide" | "defaultIsVisible" | "enablePinning" | "defaultCanPin" | "filterType" | "enableAllFilters" | "enableColumnFilter" | "enableGlobalFilter" | "defaultCanFilter" | "defaultCanColumnFilter" | "defaultCanGlobalFilter" | "sortType" | "sortDescFirst" | "enableSorting" | "enableMultiSort" | "defaultCanSort" | "invertSorting" | "sortUndefined" | "aggregationType" | "aggregateValue" | "aggregatedCell" | "enableGrouping" | "defaultCanGroup" | "enableResizing" | "defaultCanResize" | "width" | "minWidth" | "maxWidth" | "Edit" | "Filter" | "Footer" | "Header" | "Cell" | "enableClickToCopy" | "enableColumnActions" | "enableEditing" | "enabledFilterTypes" | "filter" | "filterSelectOptions" | "muiTableBodyCellCopyButtonProps" | "muiTableBodyCellEditTextFieldProps" | "muiTableBodyCellProps" | "muiTableFooterCellProps" | "muiTableHeadCellColumnActionsButtonProps" | "muiTableHeadCellFilterTextFieldProps" | "muiTableHeadCellProps" | "onCellEditChange" | "onColumnFilterValueChange"> & {
10
+ export declare const createDisplayColumn: <D extends Record<string, any> = {}>(table: Table<D>, column: Pick<MRT_ColumnInterface<D>, "footer" | "columns" | "id" | "accessorKey" | "accessorFn" | "cell" | "meta" | "enableHiding" | "defaultCanHide" | "defaultIsVisible" | "enablePinning" | "defaultCanPin" | "filterType" | "enableAllFilters" | "enableColumnFilter" | "enableGlobalFilter" | "defaultCanFilter" | "defaultCanColumnFilter" | "defaultCanGlobalFilter" | "sortType" | "sortDescFirst" | "enableSorting" | "enableMultiSort" | "defaultCanSort" | "invertSorting" | "sortUndefined" | "aggregationType" | "aggregateValue" | "aggregatedCell" | "enableGrouping" | "defaultCanGroup" | "enableResizing" | "defaultCanResize" | "width" | "minWidth" | "maxWidth" | "Edit" | "Filter" | "Footer" | "Header" | "Cell" | "enableClickToCopy" | "enableColumnActions" | "enableEditing" | "enabledFilterTypes" | "filter" | "filterSelectOptions" | "muiTableBodyCellCopyButtonProps" | "muiTableBodyCellEditTextFieldProps" | "muiTableBodyCellProps" | "muiTableFooterCellProps" | "muiTableHeadCellColumnActionsButtonProps" | "muiTableHeadCellFilterTextFieldProps" | "muiTableHeadCellProps" | "onCellEditBlur" | "onCellEditChange" | "onColumnFilterValueChange"> & {
11
11
  header?: string | undefined;
12
12
  }) => ColumnDef<D>;
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.7.0-alpha.10",
2
+ "version": "0.7.0-alpha.11",
3
3
  "license": "MIT",
4
4
  "name": "material-react-table",
5
5
  "description": "A fully featured Material UI implementation of react-table, inspired by material-table and the MUI X DataGrid, written from the ground up in TypeScript.",
@@ -60,8 +60,8 @@
60
60
  "@emotion/styled": "^11.8.1",
61
61
  "@etchteam/storybook-addon-status": "^4.2.1",
62
62
  "@faker-js/faker": "^6.1.2",
63
- "@mui/icons-material": "^5.6.1",
64
- "@mui/material": "^5.6.1",
63
+ "@mui/icons-material": "^5.6.2",
64
+ "@mui/material": "^5.6.2",
65
65
  "@size-limit/preset-small-lib": "^7.0.8",
66
66
  "@storybook/addon-a11y": "^6.4.22",
67
67
  "@storybook/addon-actions": "^6.4.22",
@@ -74,7 +74,7 @@
74
74
  "@storybook/react": "^6.4.22",
75
75
  "@types/react": "^17.0.41",
76
76
  "@types/react-dom": "^17.0.14",
77
- "babel-loader": "^8.2.4",
77
+ "babel-loader": "^8.2.5",
78
78
  "eslint": "^8.13.0",
79
79
  "eslint-plugin-react-hooks": "^4.4.0",
80
80
  "husky": "^7.0.4",
@@ -97,7 +97,7 @@
97
97
  "react": ">=16.8"
98
98
  },
99
99
  "dependencies": {
100
- "@tanstack/react-table": "^8.0.0-alpha.28",
100
+ "@tanstack/react-table": "^8.0.0-alpha.30",
101
101
  "match-sorter": "^6.3.1"
102
102
  }
103
103
  }
@@ -103,18 +103,18 @@ export type MRT_TableInstance<D extends Record<string, any> = {}> = Omit<
103
103
  idPrefix: string;
104
104
  filterTypes: { [key in MRT_FILTER_TYPE]: any };
105
105
  localization: MRT_Localization;
106
- setCurrentEditingRow: Dispatch<SetStateAction<MRT_Row<D> | null>>;
107
- setCurrentFilterTypes: Dispatch<
108
- SetStateAction<{
109
- [key: string]: MRT_FilterType;
110
- }>
111
- >;
112
- setCurrentGlobalFilterType: Dispatch<SetStateAction<MRT_FILTER_TYPE>>;
113
- setIsDensePadding: Dispatch<SetStateAction<boolean>>;
114
- setIsFullScreen: Dispatch<SetStateAction<boolean>>;
115
- setShowFilters: Dispatch<SetStateAction<boolean>>;
116
- setShowSearch: Dispatch<SetStateAction<boolean>>;
117
106
  };
107
+ setCurrentEditingRow: Dispatch<SetStateAction<MRT_Row<D> | null>>;
108
+ setCurrentFilterTypes: Dispatch<
109
+ SetStateAction<{
110
+ [key: string]: MRT_FilterType;
111
+ }>
112
+ >;
113
+ setCurrentGlobalFilterType: Dispatch<SetStateAction<MRT_FILTER_TYPE>>;
114
+ setIsDensePadding: Dispatch<SetStateAction<boolean>>;
115
+ setIsFullScreen: Dispatch<SetStateAction<boolean>>;
116
+ setShowFilters: Dispatch<SetStateAction<boolean>>;
117
+ setShowSearch: Dispatch<SetStateAction<boolean>>;
118
118
  };
119
119
 
120
120
  export type MRT_TableState<D extends Record<string, any> = {}> = Omit<
@@ -329,16 +329,15 @@ export type MaterialReactTableProps<D extends Record<string, any> = {}> =
329
329
  MRT_TableOptions<D> & {
330
330
  enableClickToCopy?: boolean;
331
331
  enableColumnActions?: boolean;
332
- enableColumnPinning?: boolean;
333
332
  enableDensePaddingToggle?: boolean;
333
+ enableEditing?: boolean;
334
334
  enableExpandAll?: boolean;
335
335
  enableFullScreenToggle?: boolean;
336
336
  enablePagination?: boolean;
337
337
  enableRowActions?: boolean;
338
- enableStickyHeader?: boolean;
339
- enableEditing?: boolean;
340
338
  enableRowNumbers?: boolean;
341
339
  enableSelectAll?: boolean;
340
+ enableStickyHeader?: boolean;
342
341
  enabledGlobalFilterTypes?: (MRT_FILTER_TYPE | string)[];
343
342
  filterTypes?: { [key in MRT_FILTER_TYPE]: any };
344
343
  hideTableFooter?: boolean;
@@ -348,8 +347,8 @@ export type MaterialReactTableProps<D extends Record<string, any> = {}> =
348
347
  hideToolbarTop?: boolean;
349
348
  icons?: Partial<MRT_Icons>;
350
349
  idPrefix?: string;
351
- isReloading?: boolean;
352
350
  isLoading?: boolean;
351
+ isReloading?: boolean;
353
352
  localization?: Partial<MRT_Localization>;
354
353
  muiLinearProgressProps?:
355
354
  | LinearProgressProps
@@ -692,13 +691,16 @@ export type MaterialReactTableProps<D extends Record<string, any> = {}> =
692
691
  };
693
692
 
694
693
  export default <D extends Record<string, any> = {}>({
694
+ autoResetExpanded = false,
695
695
  enableColumnActions = true,
696
696
  enableColumnFilters = true,
697
697
  enableDensePaddingToggle = true,
698
698
  enableExpandAll = true,
699
+ enableFilters = true,
699
700
  enableFullScreenToggle = true,
700
701
  enableGlobalFilter = true,
701
702
  enableHiding = true,
703
+ enableMultiRowSelection = true,
702
704
  enablePagination = true,
703
705
  enableSelectAll = true,
704
706
  enableSorting = true,
@@ -712,13 +714,16 @@ export default <D extends Record<string, any> = {}>({
712
714
  ...rest
713
715
  }: MaterialReactTableProps<D>) => (
714
716
  <MRT_TableRoot
717
+ autoResetExpanded={autoResetExpanded}
715
718
  enableColumnActions={enableColumnActions}
716
719
  enableColumnFilters={enableColumnFilters}
717
720
  enableDensePaddingToggle={enableDensePaddingToggle}
718
721
  enableExpandAll={enableExpandAll}
722
+ enableFilters={enableFilters}
719
723
  enableFullScreenToggle={enableFullScreenToggle}
720
724
  enableGlobalFilter={enableGlobalFilter}
721
725
  enableHiding={enableHiding}
726
+ enableMultiRowSelection={enableMultiRowSelection}
722
727
  enablePagination={enablePagination}
723
728
  enableSelectAll={enableSelectAll}
724
729
  enableSorting={enableSorting}
@@ -15,7 +15,7 @@ export const MRT_TableBodyCell: FC<Props> = ({ cell, tableInstance }) => {
15
15
  getState,
16
16
  options: {
17
17
  enableClickToCopy,
18
- enableColumnPinning,
18
+ enablePinning,
19
19
  enableEditing,
20
20
  isLoading,
21
21
  muiTableBodyCellProps,
@@ -73,7 +73,7 @@ export const MRT_TableBodyCell: FC<Props> = ({ cell, tableInstance }) => {
73
73
  : undefined,
74
74
  transition: 'all 0.2s ease-in-out',
75
75
  whiteSpace:
76
- isDensePadding || (enableColumnPinning && getIsSomeColumnsPinned())
76
+ isDensePadding || (enablePinning && getIsSomeColumnsPinned())
77
77
  ? 'nowrap'
78
78
  : 'normal',
79
79
  //@ts-ignore
@@ -15,8 +15,8 @@ export const MRT_EditActionButtons: FC<Props> = ({ row, tableInstance }) => {
15
15
  icons: { CancelIcon, SaveIcon },
16
16
  localization,
17
17
  onEditSubmit,
18
- setCurrentEditingRow,
19
18
  },
19
+ setCurrentEditingRow,
20
20
  } = tableInstance;
21
21
 
22
22
  const { currentEditingRow } = getState();
@@ -15,8 +15,8 @@ export const MRT_FullScreenToggleButton: FC<Props> = ({
15
15
  options: {
16
16
  icons: { FullscreenExitIcon, FullscreenIcon },
17
17
  localization,
18
- setIsFullScreen,
19
18
  },
19
+ setIsFullScreen,
20
20
  } = tableInstance;
21
21
 
22
22
  const { isFullScreen } = getState();
@@ -15,8 +15,8 @@ export const MRT_ToggleDensePaddingButton: FC<Props> = ({
15
15
  options: {
16
16
  icons: { DensityMediumIcon, DensitySmallIcon },
17
17
  localization,
18
- setIsDensePadding,
19
18
  },
19
+ setIsDensePadding,
20
20
  } = tableInstance;
21
21
 
22
22
  const { isDensePadding } = getState();
@@ -15,8 +15,8 @@ export const MRT_ToggleFiltersButton: FC<Props> = ({
15
15
  options: {
16
16
  icons: { FilterListIcon, FilterListOffIcon },
17
17
  localization,
18
- setShowFilters,
19
18
  },
19
+ setShowFilters,
20
20
  } = tableInstance;
21
21
 
22
22
  const { showFilters } = getState();
@@ -32,8 +32,8 @@ export const MRT_ToggleRowActionMenuButton: FC<Props> = ({
32
32
  localization,
33
33
  renderRowActionMenuItems,
34
34
  renderRowActions,
35
- setCurrentEditingRow,
36
35
  },
36
+ setCurrentEditingRow,
37
37
  } = tableInstance;
38
38
 
39
39
  const { currentEditingRow } = getState();
@@ -17,8 +17,8 @@ export const MRT_ToggleSearchButton: FC<Props> = ({
17
17
  idPrefix,
18
18
  localization,
19
19
  muiSearchTextFieldProps,
20
- setShowSearch,
21
20
  },
21
+ setShowSearch,
22
22
  } = tableInstance;
23
23
 
24
24
  const { showSearch } = getState();
@@ -30,8 +30,8 @@ export const MRT_TableHeadCell: FC<Props> = ({ header, tableInstance }) => {
30
30
  icons: { FilterAltIcon, FilterAltOff },
31
31
  localization,
32
32
  muiTableHeadCellProps,
33
- setShowFilters,
34
33
  },
34
+ setShowFilters,
35
35
  } = tableInstance;
36
36
 
37
37
  const { isDensePadding, showFilters } = getState();
@@ -16,11 +16,8 @@ interface Props {
16
16
  export const MRT_EditCellTextField: FC<Props> = ({ cell, tableInstance }) => {
17
17
  const {
18
18
  getState,
19
- options: {
20
- enableEditing,
21
- muiTableBodyCellEditTextFieldProps,
22
- setCurrentEditingRow,
23
- },
19
+ options: { enableEditing, muiTableBodyCellEditTextFieldProps },
20
+ setCurrentEditingRow,
24
21
  } = tableInstance;
25
22
 
26
23
  const [value, setValue] = useState(cell.value);
@@ -32,8 +32,8 @@ export const MRT_FilterTextField: FC<Props> = ({ header, tableInstance }) => {
32
32
  idPrefix,
33
33
  localization,
34
34
  muiTableHeadCellFilterTextFieldProps,
35
- setCurrentFilterTypes,
36
35
  },
36
+ setCurrentFilterTypes,
37
37
  } = tableInstance;
38
38
 
39
39
  const { column } = header;
@@ -35,7 +35,7 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
35
35
  setColumnOrder,
36
36
  options: {
37
37
  enableColumnFilters,
38
- enableColumnPinning,
38
+ enablePinning,
39
39
  enableGrouping,
40
40
  enableHiding,
41
41
  enableSorting,
@@ -52,8 +52,8 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
52
52
  },
53
53
  idPrefix,
54
54
  localization,
55
- setShowFilters,
56
55
  },
56
+ setShowFilters,
57
57
  } = tableInstance;
58
58
 
59
59
  const { column } = header;
@@ -245,7 +245,7 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
245
245
  {enableGrouping &&
246
246
  column.getCanGroup() && [
247
247
  <MenuItem
248
- divider={enableColumnPinning}
248
+ divider={enablePinning}
249
249
  key={0}
250
250
  onClick={handleGroupByColumn}
251
251
  sx={commonMenuItemStyles}
@@ -260,7 +260,7 @@ export const MRT_ColumnActionMenu: FC<Props> = ({
260
260
  </Box>
261
261
  </MenuItem>,
262
262
  ]}
263
- {enableColumnPinning &&
263
+ {enablePinning &&
264
264
  column.getCanPin() && [
265
265
  <MenuItem
266
266
  disabled={column.getIsPinned() === 'left'}
@@ -39,12 +39,9 @@ export const MRT_FilterTypeMenu: FC<Props> = ({
39
39
  }) => {
40
40
  const {
41
41
  getState,
42
- options: {
43
- enabledGlobalFilterTypes,
44
- localization,
45
- setCurrentFilterTypes,
46
- setCurrentGlobalFilterType,
47
- },
42
+ options: { enabledGlobalFilterTypes, localization },
43
+ setCurrentFilterTypes,
44
+ setCurrentGlobalFilterType,
48
45
  } = tableInstance;
49
46
 
50
47
  const { isDensePadding, currentFilterTypes, currentGlobalFilterType } =
@@ -1,4 +1,4 @@
1
- import React, { FC, useLayoutEffect, useState } from 'react';
1
+ import React, { FC, useEffect, useState } from 'react';
2
2
  import { alpha, Box, TableContainer, Theme } from '@mui/material';
3
3
  import { SystemStyleObject } from '@mui/material/node_modules/@mui/system';
4
4
  import { MRT_TableInstance } from '..';
@@ -36,7 +36,7 @@ export const MRT_TableContainer: FC<Props> = ({ tableInstance }) => {
36
36
  getRightTableWidth,
37
37
  getState,
38
38
  options: {
39
- enableColumnPinning,
39
+ enablePinning,
40
40
  enableStickyHeader,
41
41
  idPrefix,
42
42
  muiTableContainerProps,
@@ -52,7 +52,7 @@ export const MRT_TableContainer: FC<Props> = ({ tableInstance }) => {
52
52
  ? muiTableContainerProps({ tableInstance })
53
53
  : muiTableContainerProps;
54
54
 
55
- useLayoutEffect(() => {
55
+ useEffect(() => {
56
56
  const topToolbarHeight =
57
57
  typeof document !== 'undefined'
58
58
  ? document?.getElementById(`mrt-${idPrefix}-toolbar-top`)
@@ -85,7 +85,7 @@ export const MRT_TableContainer: FC<Props> = ({ tableInstance }) => {
85
85
  : undefined,
86
86
  }}
87
87
  >
88
- {enableColumnPinning && getIsSomeColumnsPinned() ? (
88
+ {enablePinning && getIsSomeColumnsPinned() ? (
89
89
  <Box
90
90
  sx={{
91
91
  display: 'grid',
@@ -150,16 +150,16 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
150
150
  }),
151
151
  ].filter(Boolean),
152
152
  [
153
- table,
153
+ props.enableEditing,
154
154
  props.enableExpandAll,
155
155
  props.enableExpanded,
156
- props.enableRowActions,
157
156
  props.enableGrouping,
158
- props.enableEditing,
157
+ props.enableRowActions,
159
158
  props.enableRowNumbers,
160
159
  props.enableRowSelection,
161
160
  props.enableSelectAll,
162
161
  props.localization,
162
+ table,
163
163
  ],
164
164
  );
165
165
 
@@ -176,10 +176,10 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
176
176
  [table, props.columns, currentFilterTypes],
177
177
  );
178
178
 
179
- const data = useMemo(
179
+ const data: D['Row'][] = useMemo(
180
180
  () =>
181
181
  props.isLoading && !props.data.length
182
- ? [...Array(10).fill(null)].map((_) =>
182
+ ? [...Array(10).fill(null)].map(() =>
183
183
  Object.assign(
184
184
  {},
185
185
  ...getAllLeafColumnDefs(
@@ -194,25 +194,39 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
194
194
  );
195
195
 
196
196
  //@ts-ignore
197
- const tableInstance: MRT_TableInstance<{}> = useTable(table, {
198
- ...props,
199
- columnFilterRowsFn: columnFilterRowsFn,
200
- columns,
201
- data,
202
- debugAll: false,
203
- expandRowsFn: expandRowsFn,
204
- //@ts-ignore
205
- filterTypes: defaultFilterFNs,
206
- getSubRows: props.getSubRows ?? ((originalRow: D) => originalRow.subRows),
207
- globalFilterRowsFn: globalFilterRowsFn,
208
- globalFilterType: currentGlobalFilterType,
209
- groupRowsFn: groupRowsFn,
210
- idPrefix,
211
- //@ts-ignore
212
- initialState: props.initialState,
213
- onPaginationChange: (updater: any) =>
214
- setPagination((old) => functionalUpdate(updater, old)),
215
- paginateRowsFn: paginateRowsFn,
197
+ const tableInstance: MRT_TableInstance<{}> = {
198
+ ...useTable(table, {
199
+ ...props,
200
+ columnFilterRowsFn: columnFilterRowsFn,
201
+ columns,
202
+ data,
203
+ expandRowsFn: expandRowsFn,
204
+ //@ts-ignore
205
+ filterTypes: defaultFilterFNs,
206
+ getSubRows: props.getSubRows ?? ((originalRow: D) => originalRow.subRows),
207
+ globalFilterRowsFn: globalFilterRowsFn,
208
+ globalFilterType: currentGlobalFilterType,
209
+ groupRowsFn: groupRowsFn,
210
+ idPrefix,
211
+ //@ts-ignore
212
+ initialState: props.initialState,
213
+ onPaginationChange: (updater: any) =>
214
+ setPagination((old) => functionalUpdate(updater, old)),
215
+ paginateRowsFn: paginateRowsFn,
216
+ sortRowsFn,
217
+ state: {
218
+ currentEditingRow,
219
+ currentFilterTypes,
220
+ currentGlobalFilterType,
221
+ isDensePadding,
222
+ isFullScreen,
223
+ //@ts-ignore
224
+ pagination,
225
+ showFilters,
226
+ showSearch,
227
+ ...props.state,
228
+ },
229
+ }),
216
230
  setCurrentEditingRow,
217
231
  setCurrentFilterTypes,
218
232
  setCurrentGlobalFilterType,
@@ -220,20 +234,7 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
220
234
  setIsFullScreen,
221
235
  setShowFilters,
222
236
  setShowSearch,
223
- sortRowsFn,
224
- state: {
225
- currentEditingRow,
226
- currentFilterTypes,
227
- currentGlobalFilterType,
228
- isDensePadding,
229
- isFullScreen,
230
- //@ts-ignore
231
- pagination,
232
- showFilters,
233
- showSearch,
234
- ...props.state,
235
- },
236
- });
237
+ };
237
238
 
238
239
  return <MRT_TablePaper tableInstance={tableInstance} />;
239
240
  };
@@ -15,10 +15,11 @@ export const MRT_ToolbarInternalButtons: FC<Props> = ({ tableInstance }) => {
15
15
  const {
16
16
  options: {
17
17
  enableColumnFilters,
18
- enableHiding,
19
18
  enableDensePaddingToggle,
20
- enableGlobalFilter,
19
+ enableFilters,
21
20
  enableFullScreenToggle,
21
+ enableGlobalFilter,
22
+ enableHiding,
22
23
  renderToolbarInternalActions,
23
24
  },
24
25
  } = tableInstance;
@@ -47,10 +48,10 @@ export const MRT_ToolbarInternalButtons: FC<Props> = ({ tableInstance }) => {
47
48
  p: '0 0.5rem',
48
49
  }}
49
50
  >
50
- {enableGlobalFilter && (
51
+ {enableFilters && enableGlobalFilter && (
51
52
  <MRT_ToggleSearchButton tableInstance={tableInstance} />
52
53
  )}
53
- {enableColumnFilters && (
54
+ {enableFilters && enableColumnFilters && (
54
55
  <MRT_ToggleFiltersButton tableInstance={tableInstance} />
55
56
  )}
56
57
  {enableHiding && (