material-react-table 0.7.0-alpha.9 → 0.7.0

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 (32) hide show
  1. package/README.md +1 -3
  2. package/dist/MaterialReactTable.d.ts +42 -23
  3. package/dist/buttons/{MRT_ToggleSearchButton.d.ts → MRT_ToggleGlobalFilterButton.d.ts} +1 -1
  4. package/dist/localization.d.ts +3 -0
  5. package/dist/material-react-table.cjs.development.js +134 -106
  6. package/dist/material-react-table.cjs.development.js.map +1 -1
  7. package/dist/material-react-table.cjs.production.min.js +1 -1
  8. package/dist/material-react-table.cjs.production.min.js.map +1 -1
  9. package/dist/material-react-table.esm.js +136 -108
  10. package/dist/material-react-table.esm.js.map +1 -1
  11. package/dist/utils.d.ts +1 -1
  12. package/package.json +5 -5
  13. package/src/MaterialReactTable.tsx +69 -33
  14. package/src/body/MRT_TableBodyCell.tsx +2 -2
  15. package/src/buttons/MRT_EditActionButtons.tsx +1 -1
  16. package/src/buttons/MRT_FullScreenToggleButton.tsx +13 -4
  17. package/src/buttons/MRT_ShowHideColumnsButton.tsx +0 -1
  18. package/src/buttons/MRT_ToggleDensePaddingButton.tsx +13 -4
  19. package/src/buttons/MRT_ToggleFiltersButton.tsx +13 -4
  20. package/src/buttons/{MRT_ToggleSearchButton.tsx → MRT_ToggleGlobalFilterButton.tsx} +14 -8
  21. package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +1 -1
  22. package/src/head/MRT_TableHeadCell.tsx +7 -8
  23. package/src/inputs/MRT_EditCellTextField.tsx +2 -5
  24. package/src/inputs/MRT_FilterTextField.tsx +2 -2
  25. package/src/inputs/MRT_SearchTextField.tsx +6 -6
  26. package/src/localization.ts +6 -0
  27. package/src/menus/MRT_ColumnActionMenu.tsx +4 -4
  28. package/src/menus/MRT_FilterTypeMenu.tsx +3 -6
  29. package/src/menus/MRT_ShowHideColumnsMenuItems.tsx +2 -2
  30. package/src/table/MRT_TableContainer.tsx +4 -4
  31. package/src/table/MRT_TableRoot.tsx +60 -56
  32. package/src/toolbar/MRT_ToolbarInternalButtons.tsx +8 -9
@@ -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 } =
@@ -16,7 +16,7 @@ export const MRT_ShowHideColumnsMenuItems: FC<Props> = ({
16
16
  }) => {
17
17
  const {
18
18
  getState,
19
- options: { onColumnHide },
19
+ options: { onToggleColumnVisibility },
20
20
  } = tableInstance;
21
21
 
22
22
  const { columnVisibility } = getState();
@@ -34,7 +34,7 @@ export const MRT_ShowHideColumnsMenuItems: FC<Props> = ({
34
34
  } else {
35
35
  column.toggleVisibility();
36
36
  }
37
- onColumnHide?.({
37
+ onToggleColumnVisibility?.({
38
38
  column,
39
39
  columnVisibility,
40
40
  tableInstance,
@@ -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',
@@ -1,17 +1,19 @@
1
+ import React, { useMemo, useState } from 'react';
1
2
  import {
2
- columnFilterRowsFn,
3
- createTable,
4
- expandRowsFn,
5
- functionalUpdate,
6
- globalFilterRowsFn,
7
- groupRowsFn,
8
- paginateRowsFn,
9
3
  PaginationState,
10
- sortRowsFn,
11
4
  Table,
12
- useTable,
5
+ createTable,
6
+ functionalUpdate,
7
+ getColumnFilteredRowModelSync,
8
+ getExpandedRowModel,
9
+ getGlobalFilteredRowModelSync,
10
+ getGroupedRowModelSync,
11
+ getPaginationRowModel,
12
+ getSortedRowModelSync,
13
+ useTableInstance,
14
+ getCoreRowModelSync,
15
+ ColumnDef,
13
16
  } from '@tanstack/react-table';
14
- import React, { useMemo, useState } from 'react';
15
17
  import {
16
18
  MRT_ColumnInterface,
17
19
  MRT_FilterType,
@@ -52,10 +54,9 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
52
54
  const [showFilters, setShowFilters] = useState(
53
55
  props.initialState?.showFilters ?? false,
54
56
  );
55
- const [showSearch, setShowSearch] = useState(
56
- props.initialState?.showSearch ?? false,
57
+ const [showGlobalFilter, setShowGlobalFilter] = useState(
58
+ props.initialState?.showGlobalFilter ?? false,
57
59
  );
58
-
59
60
  const [pagination, setPagination] = useState<PaginationState>({
60
61
  pageIndex: props.initialState?.pagination?.pageIndex ?? 0,
61
62
  pageSize: props.initialState?.pagination?.pageSize ?? 10,
@@ -71,7 +72,7 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
71
72
  (c) => ({
72
73
  [c.id as string]:
73
74
  c.filter ??
74
- props?.initialState?.columnFilters?.[c.id as any] ??
75
+ props?.initialState?.columnFilters?.find((cf) => cf.id === c.id) ??
75
76
  (!!c.filterSelectOptions?.length
76
77
  ? MRT_FILTER_TYPE.EQUALS
77
78
  : MRT_FILTER_TYPE.BEST_MATCH),
@@ -96,7 +97,7 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
96
97
  createDisplayColumn(table, {
97
98
  Cell: ({ cell }) => (
98
99
  <MRT_ToggleRowActionMenuButton
99
- row={cell.row as any}
100
+ row={cell.row as MRT_Row}
100
101
  tableInstance={tableInstance}
101
102
  />
102
103
  ),
@@ -109,7 +110,7 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
109
110
  createDisplayColumn(table, {
110
111
  Cell: ({ cell }) => (
111
112
  <MRT_ExpandButton
112
- row={cell.row as any}
113
+ row={cell.row as MRT_Row}
113
114
  tableInstance={tableInstance}
114
115
  />
115
116
  ),
@@ -126,7 +127,7 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
126
127
  createDisplayColumn(table, {
127
128
  Cell: ({ cell }) => (
128
129
  <MRT_SelectCheckbox
129
- row={cell.row as any}
130
+ row={cell.row as MRT_Row}
130
131
  tableInstance={tableInstance}
131
132
  />
132
133
  ),
@@ -151,16 +152,16 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
151
152
  }),
152
153
  ].filter(Boolean),
153
154
  [
154
- table,
155
+ props.enableEditing,
155
156
  props.enableExpandAll,
156
157
  props.enableExpanded,
157
- props.enableRowActions,
158
158
  props.enableGrouping,
159
- props.enableEditing,
159
+ props.enableRowActions,
160
160
  props.enableRowNumbers,
161
161
  props.enableRowSelection,
162
162
  props.enableSelectAll,
163
163
  props.localization,
164
+ table,
164
165
  ],
165
166
  );
166
167
 
@@ -173,14 +174,14 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
173
174
  ? createGroup(table, column, currentFilterTypes)
174
175
  : createDataColumn(table, column, currentFilterTypes),
175
176
  ),
176
- ] as any),
177
+ ] as ColumnDef<D>[]),
177
178
  [table, props.columns, currentFilterTypes],
178
179
  );
179
180
 
180
- const data = useMemo(
181
+ const data: D['Row'][] = useMemo(
181
182
  () =>
182
183
  props.isLoading && !props.data.length
183
- ? [...Array(10).fill(null)].map((_) =>
184
+ ? [...Array(10).fill(null)].map(() =>
184
185
  Object.assign(
185
186
  {},
186
187
  ...getAllLeafColumnDefs(
@@ -195,45 +196,48 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
195
196
  );
196
197
 
197
198
  //@ts-ignore
198
- const tableInstance: MRT_TableInstance<{}> = useTable(table, {
199
- ...props,
200
- columnFilterRowsFn: columnFilterRowsFn,
201
- columns,
202
- data,
203
- debugAll: false,
204
- expandRowsFn: expandRowsFn,
205
- //@ts-ignore
206
- filterTypes: defaultFilterFNs,
207
- getSubRows: props.getSubRows ?? ((originalRow: D) => originalRow.subRows),
208
- globalFilterRowsFn: globalFilterRowsFn,
209
- globalFilterType: currentGlobalFilterType,
210
- groupRowsFn: groupRowsFn,
211
- idPrefix,
212
- onPaginationChange: (updater: any) =>
213
- setPagination((old) => functionalUpdate(updater, old)),
214
- paginateRowsFn: paginateRowsFn,
199
+ const tableInstance: MRT_TableInstance<{}> = {
200
+ ...useTableInstance(table, {
201
+ ...props,
202
+ columns,
203
+ data,
204
+ //@ts-ignore
205
+ filterTypes: defaultFilterFNs,
206
+ getColumnFilteredRowModel: getColumnFilteredRowModelSync(),
207
+ getCoreRowModel: getCoreRowModelSync(),
208
+ getExpandedRowModel: getExpandedRowModel(),
209
+ getGlobalFilteredRowModel: getGlobalFilteredRowModelSync(),
210
+ getGroupedRowModel: getGroupedRowModelSync(),
211
+ getPaginationRowModel: getPaginationRowModel(),
212
+ getSortedRowModel: getSortedRowModelSync(),
213
+ getSubRows: props.getSubRows ?? ((originalRow: D) => originalRow.subRows),
214
+ globalFilterType: currentGlobalFilterType,
215
+ idPrefix,
216
+ //@ts-ignore
217
+ initialState: props.initialState,
218
+ onPaginationChange: (updater: any) =>
219
+ setPagination((old) => functionalUpdate(updater, old)),
220
+ state: {
221
+ currentEditingRow,
222
+ currentFilterTypes,
223
+ currentGlobalFilterType,
224
+ isDensePadding,
225
+ isFullScreen,
226
+ //@ts-ignore
227
+ pagination,
228
+ showFilters,
229
+ showGlobalFilter,
230
+ ...props.state,
231
+ },
232
+ }),
215
233
  setCurrentEditingRow,
216
234
  setCurrentFilterTypes,
217
235
  setCurrentGlobalFilterType,
218
236
  setIsDensePadding,
219
237
  setIsFullScreen,
220
238
  setShowFilters,
221
- setShowSearch,
222
- sortRowsFn,
223
- state: {
224
- ...props.initialState,
225
- currentEditingRow,
226
- currentFilterTypes,
227
- currentGlobalFilterType,
228
- isDensePadding,
229
- isFullScreen,
230
- //@ts-ignore
231
- pagination,
232
- showFilters,
233
- showSearch,
234
- ...props.state,
235
- },
236
- });
239
+ setShowGlobalFilter,
240
+ };
237
241
 
238
242
  return <MRT_TablePaper tableInstance={tableInstance} />;
239
243
  };
@@ -4,7 +4,7 @@ import { MRT_FullScreenToggleButton } from '../buttons/MRT_FullScreenToggleButto
4
4
  import { MRT_ShowHideColumnsButton } from '../buttons/MRT_ShowHideColumnsButton';
5
5
  import { MRT_ToggleDensePaddingButton } from '../buttons/MRT_ToggleDensePaddingButton';
6
6
  import { MRT_ToggleFiltersButton } from '../buttons/MRT_ToggleFiltersButton';
7
- import { MRT_ToggleSearchButton } from '../buttons/MRT_ToggleSearchButton';
7
+ import { MRT_ToggleGlobalFilterButton } from '../buttons/MRT_ToggleGlobalFilterButton';
8
8
  import { MRT_TableInstance } from '..';
9
9
 
10
10
  interface Props {
@@ -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;
@@ -31,7 +32,7 @@ export const MRT_ToolbarInternalButtons: FC<Props> = ({ tableInstance }) => {
31
32
  MRT_ShowHideColumnsButton,
32
33
  MRT_ToggleDensePaddingButton,
33
34
  MRT_ToggleFiltersButton,
34
- MRT_ToggleSearchButton,
35
+ MRT_ToggleGlobalFilterButton,
35
36
  tableInstance,
36
37
  })}
37
38
  </>
@@ -42,15 +43,13 @@ export const MRT_ToolbarInternalButtons: FC<Props> = ({ tableInstance }) => {
42
43
  <Box
43
44
  sx={{
44
45
  display: 'flex',
45
- gap: '0.5rem',
46
46
  alignItems: 'center',
47
- p: '0 0.5rem',
48
47
  }}
49
48
  >
50
- {enableGlobalFilter && (
51
- <MRT_ToggleSearchButton tableInstance={tableInstance} />
49
+ {enableFilters && enableGlobalFilter && (
50
+ <MRT_ToggleGlobalFilterButton tableInstance={tableInstance} />
52
51
  )}
53
- {enableColumnFilters && (
52
+ {enableFilters && enableColumnFilters && (
54
53
  <MRT_ToggleFiltersButton tableInstance={tableInstance} />
55
54
  )}
56
55
  {enableHiding && (