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

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 +131 -105
  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 +133 -107
  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,8 +54,8 @@ 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
60
  const [pagination, setPagination] = useState<PaginationState>({
59
61
  pageIndex: props.initialState?.pagination?.pageIndex ?? 0,
@@ -70,7 +72,7 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
70
72
  (c) => ({
71
73
  [c.id as string]:
72
74
  c.filter ??
73
- props?.initialState?.columnFilters?.[c.id as any] ??
75
+ props?.initialState?.columnFilters?.find((cf) => cf.id === c.id) ??
74
76
  (!!c.filterSelectOptions?.length
75
77
  ? MRT_FILTER_TYPE.EQUALS
76
78
  : MRT_FILTER_TYPE.BEST_MATCH),
@@ -95,7 +97,7 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
95
97
  createDisplayColumn(table, {
96
98
  Cell: ({ cell }) => (
97
99
  <MRT_ToggleRowActionMenuButton
98
- row={cell.row as any}
100
+ row={cell.row as MRT_Row}
99
101
  tableInstance={tableInstance}
100
102
  />
101
103
  ),
@@ -108,7 +110,7 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
108
110
  createDisplayColumn(table, {
109
111
  Cell: ({ cell }) => (
110
112
  <MRT_ExpandButton
111
- row={cell.row as any}
113
+ row={cell.row as MRT_Row}
112
114
  tableInstance={tableInstance}
113
115
  />
114
116
  ),
@@ -125,7 +127,7 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
125
127
  createDisplayColumn(table, {
126
128
  Cell: ({ cell }) => (
127
129
  <MRT_SelectCheckbox
128
- row={cell.row as any}
130
+ row={cell.row as MRT_Row}
129
131
  tableInstance={tableInstance}
130
132
  />
131
133
  ),
@@ -150,16 +152,16 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
150
152
  }),
151
153
  ].filter(Boolean),
152
154
  [
153
- table,
155
+ props.enableEditing,
154
156
  props.enableExpandAll,
155
157
  props.enableExpanded,
156
- props.enableRowActions,
157
158
  props.enableGrouping,
158
- props.enableEditing,
159
+ props.enableRowActions,
159
160
  props.enableRowNumbers,
160
161
  props.enableRowSelection,
161
162
  props.enableSelectAll,
162
163
  props.localization,
164
+ table,
163
165
  ],
164
166
  );
165
167
 
@@ -172,14 +174,14 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
172
174
  ? createGroup(table, column, currentFilterTypes)
173
175
  : createDataColumn(table, column, currentFilterTypes),
174
176
  ),
175
- ] as any),
177
+ ] as ColumnDef<D>[]),
176
178
  [table, props.columns, currentFilterTypes],
177
179
  );
178
180
 
179
- const data = useMemo(
181
+ const data: D['Row'][] = useMemo(
180
182
  () =>
181
183
  props.isLoading && !props.data.length
182
- ? [...Array(10).fill(null)].map((_) =>
184
+ ? [...Array(10).fill(null)].map(() =>
183
185
  Object.assign(
184
186
  {},
185
187
  ...getAllLeafColumnDefs(
@@ -194,46 +196,48 @@ export const MRT_TableRoot = <D extends Record<string, any> = {}>(
194
196
  );
195
197
 
196
198
  //@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,
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
+ }),
216
233
  setCurrentEditingRow,
217
234
  setCurrentFilterTypes,
218
235
  setCurrentGlobalFilterType,
219
236
  setIsDensePadding,
220
237
  setIsFullScreen,
221
238
  setShowFilters,
222
- 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
- });
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 && (