material-react-table 2.0.0-alpha.1 → 2.0.0-alpha.2

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 (134) hide show
  1. package/README.md +2 -2
  2. package/dist/cjs/index.js +2400 -2365
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/types/MaterialReactTable.d.ts +1 -1
  5. package/dist/cjs/types/buttons/MRT_GrabHandleButton.d.ts +1 -1
  6. package/dist/cjs/types/buttons/MRT_RowPinButton.d.ts +2 -2
  7. package/dist/cjs/types/column.utils.d.ts +6 -6
  8. package/dist/cjs/types/filterFns.d.ts +14 -14
  9. package/dist/cjs/types/head/MRT_TableHeadCellFilterLabel.d.ts +1 -1
  10. package/dist/cjs/types/head/MRT_TableHeadCellSortLabel.d.ts +1 -1
  11. package/dist/cjs/types/hooks/useMRT_DisplayColumns.d.ts +3 -3
  12. package/dist/cjs/types/icons.d.ts +1 -1
  13. package/dist/cjs/types/inputs/MRT_FilterRangeSlider.d.ts +1 -1
  14. package/dist/cjs/types/menus/MRT_ColumnActionMenu.d.ts +4 -4
  15. package/dist/cjs/types/menus/MRT_ShowHideColumnsMenuItems.d.ts +1 -1
  16. package/dist/cjs/types/toolbar/MRT_TablePagination.d.ts +2 -2
  17. package/dist/cjs/types/toolbar/MRT_TopToolbar.d.ts +1 -1
  18. package/dist/cjs/types/types.d.ts +198 -198
  19. package/dist/esm/material-react-table.esm.js +2027 -1993
  20. package/dist/esm/material-react-table.esm.js.map +1 -1
  21. package/dist/esm/types/MaterialReactTable.d.ts +1 -1
  22. package/dist/esm/types/buttons/MRT_GrabHandleButton.d.ts +1 -1
  23. package/dist/esm/types/buttons/MRT_RowPinButton.d.ts +2 -2
  24. package/dist/esm/types/column.utils.d.ts +6 -6
  25. package/dist/esm/types/filterFns.d.ts +14 -14
  26. package/dist/esm/types/head/MRT_TableHeadCellFilterLabel.d.ts +1 -1
  27. package/dist/esm/types/head/MRT_TableHeadCellSortLabel.d.ts +1 -1
  28. package/dist/esm/types/hooks/useMRT_DisplayColumns.d.ts +3 -3
  29. package/dist/esm/types/icons.d.ts +1 -1
  30. package/dist/esm/types/inputs/MRT_FilterRangeSlider.d.ts +1 -1
  31. package/dist/esm/types/menus/MRT_ColumnActionMenu.d.ts +4 -4
  32. package/dist/esm/types/menus/MRT_ShowHideColumnsMenuItems.d.ts +1 -1
  33. package/dist/esm/types/toolbar/MRT_TablePagination.d.ts +2 -2
  34. package/dist/esm/types/toolbar/MRT_TopToolbar.d.ts +1 -1
  35. package/dist/esm/types/types.d.ts +198 -198
  36. package/dist/index.d.ts +239 -239
  37. package/locales/fr.esm.js +1 -1
  38. package/locales/fr.esm.js.map +1 -1
  39. package/locales/fr.js +1 -1
  40. package/locales/fr.js.map +1 -1
  41. package/locales/tr.d.ts +2 -0
  42. package/locales/tr.esm.d.ts +2 -0
  43. package/locales/tr.esm.js +93 -0
  44. package/locales/tr.esm.js.map +1 -0
  45. package/locales/tr.js +97 -0
  46. package/locales/tr.js.map +1 -0
  47. package/locales/uk.d.ts +2 -0
  48. package/locales/uk.esm.d.ts +2 -0
  49. package/locales/uk.esm.js +93 -0
  50. package/locales/uk.esm.js.map +1 -0
  51. package/locales/uk.js +97 -0
  52. package/locales/uk.js.map +1 -0
  53. package/locales/vi.d.ts +2 -0
  54. package/locales/vi.esm.d.ts +2 -0
  55. package/locales/vi.esm.js +93 -0
  56. package/locales/vi.esm.js.map +1 -0
  57. package/locales/vi.js +97 -0
  58. package/locales/vi.js.map +1 -0
  59. package/locales/zh-Hans.d.ts +2 -0
  60. package/locales/zh-Hans.esm.d.ts +2 -0
  61. package/locales/zh-Hans.esm.js +93 -0
  62. package/locales/zh-Hans.esm.js.map +1 -0
  63. package/locales/zh-Hans.js +97 -0
  64. package/locales/zh-Hans.js.map +1 -0
  65. package/locales/zh-Hant.d.ts +2 -0
  66. package/locales/zh-Hant.esm.d.ts +2 -0
  67. package/locales/zh-Hant.esm.js +93 -0
  68. package/locales/zh-Hant.esm.js.map +1 -0
  69. package/locales/zh-Hant.js +97 -0
  70. package/locales/zh-Hant.js.map +1 -0
  71. package/package.json +2 -1
  72. package/src/MaterialReactTable.tsx +2 -2
  73. package/src/body/MRT_TableBody.tsx +9 -9
  74. package/src/body/MRT_TableBodyCell.tsx +22 -22
  75. package/src/body/MRT_TableBodyCellValue.tsx +5 -5
  76. package/src/body/MRT_TableBodyRow.tsx +32 -32
  77. package/src/body/MRT_TableBodyRowGrabHandle.tsx +2 -2
  78. package/src/body/MRT_TableBodyRowPinButton.tsx +3 -3
  79. package/src/body/MRT_TableDetailPanel.tsx +3 -3
  80. package/src/buttons/MRT_CopyButton.tsx +1 -1
  81. package/src/buttons/MRT_EditActionButtons.tsx +4 -4
  82. package/src/buttons/MRT_ExpandAllButton.tsx +3 -3
  83. package/src/buttons/MRT_ExpandButton.tsx +1 -1
  84. package/src/buttons/MRT_GrabHandleButton.tsx +10 -10
  85. package/src/buttons/MRT_RowPinButton.tsx +5 -5
  86. package/src/buttons/MRT_ShowHideColumnsButton.tsx +1 -1
  87. package/src/buttons/MRT_ToggleFullScreenButton.tsx +2 -2
  88. package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +8 -8
  89. package/src/column.utils.ts +23 -17
  90. package/src/filterFns.ts +29 -29
  91. package/src/footer/MRT_TableFooter.tsx +9 -9
  92. package/src/footer/MRT_TableFooterCell.tsx +1 -1
  93. package/src/footer/MRT_TableFooterRow.tsx +2 -2
  94. package/src/head/MRT_TableHead.tsx +9 -9
  95. package/src/head/MRT_TableHeadCell.tsx +10 -6
  96. package/src/head/MRT_TableHeadCellColumnActionsButton.tsx +9 -6
  97. package/src/head/MRT_TableHeadCellFilterContainer.tsx +11 -4
  98. package/src/head/MRT_TableHeadCellFilterLabel.tsx +106 -61
  99. package/src/head/MRT_TableHeadCellGrabHandle.tsx +2 -2
  100. package/src/head/MRT_TableHeadCellResizeHandle.tsx +11 -11
  101. package/src/head/MRT_TableHeadCellSortLabel.tsx +8 -8
  102. package/src/head/MRT_TableHeadRow.tsx +2 -2
  103. package/src/hooks/useMRT_DisplayColumns.tsx +5 -5
  104. package/src/hooks/useMRT_Effects.ts +3 -3
  105. package/src/hooks/useMRT_TableInstance.ts +15 -14
  106. package/src/hooks/useMRT_TableOptions.ts +3 -3
  107. package/src/icons.ts +2 -2
  108. package/src/inputs/MRT_EditCellTextField.tsx +9 -9
  109. package/src/inputs/MRT_FilterCheckbox.tsx +7 -7
  110. package/src/inputs/MRT_FilterRangeFields.tsx +1 -1
  111. package/src/inputs/MRT_FilterRangeSlider.tsx +6 -6
  112. package/src/inputs/MRT_FilterTextField.tsx +75 -75
  113. package/src/inputs/MRT_GlobalFilterTextField.tsx +26 -26
  114. package/src/inputs/MRT_SelectCheckbox.tsx +7 -7
  115. package/src/locales/fr.ts +1 -1
  116. package/src/menus/MRT_ColumnActionMenu.tsx +14 -14
  117. package/src/menus/MRT_FilterOptionMenu.tsx +35 -35
  118. package/src/menus/MRT_RowActionMenu.tsx +7 -7
  119. package/src/menus/MRT_ShowHideColumnsMenu.tsx +6 -6
  120. package/src/menus/MRT_ShowHideColumnsMenuItems.tsx +5 -5
  121. package/src/modals/MRT_EditRowModal.tsx +8 -8
  122. package/src/sortingFns.ts +1 -1
  123. package/src/table/MRT_Table.tsx +7 -7
  124. package/src/table/MRT_TableContainer.tsx +10 -10
  125. package/src/table/MRT_TablePaper.tsx +9 -9
  126. package/src/toolbar/MRT_BottomToolbar.tsx +5 -5
  127. package/src/toolbar/MRT_LinearProgressBar.tsx +4 -4
  128. package/src/toolbar/MRT_TablePagination.tsx +19 -19
  129. package/src/toolbar/MRT_ToolbarAlertBanner.tsx +4 -4
  130. package/src/toolbar/MRT_ToolbarDropZone.tsx +6 -6
  131. package/src/toolbar/MRT_ToolbarInternalButtons.tsx +8 -5
  132. package/src/toolbar/MRT_TopToolbar.tsx +7 -7
  133. package/src/types.ts +263 -263
  134. package/src/useMaterialReactTable.ts +1 -1
@@ -14,88 +14,88 @@ export const mrtFilterOptions = (
14
14
  localization: MRT_Localization,
15
15
  ): MRT_InternalFilterOption[] => [
16
16
  {
17
+ divider: false,
18
+ label: localization.filterFuzzy,
17
19
  option: 'fuzzy',
18
20
  symbol: '≈',
19
- label: localization.filterFuzzy,
20
- divider: false,
21
21
  },
22
22
  {
23
+ divider: false,
24
+ label: localization.filterContains,
23
25
  option: 'contains',
24
26
  symbol: '*',
25
- label: localization.filterContains,
26
- divider: false,
27
27
  },
28
28
  {
29
+ divider: false,
30
+ label: localization.filterStartsWith,
29
31
  option: 'startsWith',
30
32
  symbol: 'a',
31
- label: localization.filterStartsWith,
32
- divider: false,
33
33
  },
34
34
  {
35
+ divider: true,
36
+ label: localization.filterEndsWith,
35
37
  option: 'endsWith',
36
38
  symbol: 'z',
37
- label: localization.filterEndsWith,
38
- divider: true,
39
39
  },
40
40
  {
41
+ divider: false,
42
+ label: localization.filterEquals,
41
43
  option: 'equals',
42
44
  symbol: '=',
43
- label: localization.filterEquals,
44
- divider: false,
45
45
  },
46
46
  {
47
+ divider: true,
48
+ label: localization.filterNotEquals,
47
49
  option: 'notEquals',
48
50
  symbol: '≠',
49
- label: localization.filterNotEquals,
50
- divider: true,
51
51
  },
52
52
  {
53
+ divider: false,
54
+ label: localization.filterBetween,
53
55
  option: 'between',
54
56
  symbol: '⇿',
55
- label: localization.filterBetween,
56
- divider: false,
57
57
  },
58
58
  {
59
+ divider: true,
60
+ label: localization.filterBetweenInclusive,
59
61
  option: 'betweenInclusive',
60
62
  symbol: '⬌',
61
- label: localization.filterBetweenInclusive,
62
- divider: true,
63
63
  },
64
64
  {
65
+ divider: false,
66
+ label: localization.filterGreaterThan,
65
67
  option: 'greaterThan',
66
68
  symbol: '>',
67
- label: localization.filterGreaterThan,
68
- divider: false,
69
69
  },
70
70
  {
71
+ divider: false,
72
+ label: localization.filterGreaterThanOrEqualTo,
71
73
  option: 'greaterThanOrEqualTo',
72
74
  symbol: '≥',
73
- label: localization.filterGreaterThanOrEqualTo,
74
- divider: false,
75
75
  },
76
76
  {
77
+ divider: false,
78
+ label: localization.filterLessThan,
77
79
  option: 'lessThan',
78
80
  symbol: '<',
79
- label: localization.filterLessThan,
80
- divider: false,
81
81
  },
82
82
  {
83
+ divider: true,
84
+ label: localization.filterLessThanOrEqualTo,
83
85
  option: 'lessThanOrEqualTo',
84
86
  symbol: '≤',
85
- label: localization.filterLessThanOrEqualTo,
86
- divider: true,
87
87
  },
88
88
  {
89
+ divider: false,
90
+ label: localization.filterEmpty,
89
91
  option: 'empty',
90
92
  symbol: '∅',
91
- label: localization.filterEmpty,
92
- divider: false,
93
93
  },
94
94
  {
95
+ divider: false,
96
+ label: localization.filterNotEmpty,
95
97
  option: 'notEmpty',
96
98
  symbol: '!∅',
97
- label: localization.filterNotEmpty,
98
- divider: false,
99
99
  },
100
100
  ];
101
101
 
@@ -133,7 +133,7 @@ export const MRT_FilterOptionMenu = <TData extends Record<string, any>>({
133
133
  setColumnFilterFns,
134
134
  setGlobalFilterFn,
135
135
  } = table;
136
- const { globalFilterFn, density } = getState();
136
+ const { density, globalFilterFn } = getState();
137
137
  const { column } = header ?? {};
138
138
  const { columnDef } = column ?? {};
139
139
  const currentFilterValue = column?.getFilterValue();
@@ -156,7 +156,7 @@ export const MRT_FilterOptionMenu = <TData extends Record<string, any>>({
156
156
  allowedColumnFilterOptions?.includes(filterOption.option)
157
157
  : (!globalFilterModeOptions ||
158
158
  globalFilterModeOptions.includes(filterOption.option)) &&
159
- ['fuzzy', 'contains', 'startsWith'].includes(filterOption.option),
159
+ ['contains', 'fuzzy', 'startsWith'].includes(filterOption.option),
160
160
  ),
161
161
  [],
162
162
  );
@@ -232,13 +232,13 @@ export const MRT_FilterOptionMenu = <TData extends Record<string, any>>({
232
232
 
233
233
  return (
234
234
  <Menu
235
- anchorEl={anchorEl}
236
- anchorOrigin={{ vertical: 'center', horizontal: 'right' }}
237
- onClose={() => setAnchorEl(null)}
238
- open={!!anchorEl}
239
235
  MenuListProps={{
240
236
  dense: density === 'compact',
241
237
  }}
238
+ anchorEl={anchorEl}
239
+ anchorOrigin={{ horizontal: 'right', vertical: 'center' }}
240
+ onClose={() => setAnchorEl(null)}
241
+ open={!!anchorEl}
242
242
  >
243
243
  {(header && column && columnDef
244
244
  ? columnDef.renderColumnFilterModeMenuItems?.({
@@ -259,7 +259,7 @@ export const MRT_FilterOptionMenu = <TData extends Record<string, any>>({
259
259
  table,
260
260
  })) ??
261
261
  internalFilterOptions.map(
262
- ({ option, label, divider, symbol }, index) => (
262
+ ({ divider, label, option, symbol }, index) => (
263
263
  <MenuItem
264
264
  divider={divider}
265
265
  key={index}
@@ -7,8 +7,8 @@ import {
7
7
  commonListItemStyles,
8
8
  commonMenuItemStyles,
9
9
  } from './MRT_ColumnActionMenu';
10
- import { type MRT_Row, type MRT_TableInstance } from '../types';
11
10
  import { parseFromValuesOrFunc } from '../column.utils';
11
+ import { type MRT_Row, type MRT_TableInstance } from '../types';
12
12
 
13
13
  interface Props<TData extends Record<string, any>> {
14
14
  anchorEl: HTMLElement | null;
@@ -28,8 +28,8 @@ export const MRT_RowActionMenu = <TData extends Record<string, any>>({
28
28
  const {
29
29
  getState,
30
30
  options: {
31
- icons: { EditIcon },
32
31
  enableEditing,
32
+ icons: { EditIcon },
33
33
  localization,
34
34
  renderRowActionMenuItems,
35
35
  },
@@ -38,13 +38,13 @@ export const MRT_RowActionMenu = <TData extends Record<string, any>>({
38
38
 
39
39
  return (
40
40
  <Menu
41
- anchorEl={anchorEl}
42
- open={!!anchorEl}
43
- onClick={(event) => event.stopPropagation()}
44
- onClose={() => setAnchorEl(null)}
45
41
  MenuListProps={{
46
42
  dense: density === 'compact',
47
43
  }}
44
+ anchorEl={anchorEl}
45
+ onClick={(event) => event.stopPropagation()}
46
+ onClose={() => setAnchorEl(null)}
47
+ open={!!anchorEl}
48
48
  >
49
49
  {parseFromValuesOrFunc(enableEditing, row) && (
50
50
  <MenuItem onClick={handleEdit} sx={commonMenuItemStyles}>
@@ -57,9 +57,9 @@ export const MRT_RowActionMenu = <TData extends Record<string, any>>({
57
57
  </MenuItem>
58
58
  )}
59
59
  {renderRowActionMenuItems?.({
60
+ closeMenu: () => setAnchorEl(null),
60
61
  row,
61
62
  table,
62
- closeMenu: () => setAnchorEl(null),
63
63
  })}
64
64
  </Menu>
65
65
  );
@@ -29,15 +29,15 @@ export const MRT_ShowHideColumnsMenu = <TData extends Record<string, any>>({
29
29
  getLeftLeafColumns,
30
30
  getRightLeafColumns,
31
31
  getState,
32
- toggleAllColumnsVisible,
33
32
  options: {
34
33
  enableColumnOrdering,
35
- enableHiding,
36
34
  enableColumnPinning,
35
+ enableHiding,
37
36
  localization,
38
37
  },
38
+ toggleAllColumnsVisible,
39
39
  } = table;
40
- const { density, columnOrder, columnPinning } = getState();
40
+ const { columnOrder, columnPinning, density } = getState();
41
41
 
42
42
  const hideAllColumns = () => {
43
43
  getAllLeafColumns()
@@ -75,12 +75,12 @@ export const MRT_ShowHideColumnsMenu = <TData extends Record<string, any>>({
75
75
 
76
76
  return (
77
77
  <Menu
78
- anchorEl={anchorEl}
79
- open={!!anchorEl}
80
- onClose={() => setAnchorEl(null)}
81
78
  MenuListProps={{
82
79
  dense: density === 'compact',
83
80
  }}
81
+ anchorEl={anchorEl}
82
+ onClose={() => setAnchorEl(null)}
83
+ open={!!anchorEl}
84
84
  >
85
85
  <Box
86
86
  sx={{
@@ -28,17 +28,17 @@ export const MRT_ShowHideColumnsMenuItems = <
28
28
  TData extends Record<string, any>,
29
29
  >({
30
30
  allColumns,
31
+ column,
31
32
  hoveredColumn,
32
33
  setHoveredColumn,
33
- column,
34
34
  table,
35
35
  }: Props<TData>) => {
36
36
  const {
37
37
  getState,
38
38
  options: {
39
39
  enableColumnOrdering,
40
- enableHiding,
41
40
  enableColumnPinning,
41
+ enableHiding,
42
42
  localization,
43
43
  },
44
44
  setColumnOrder,
@@ -89,19 +89,19 @@ export const MRT_ShowHideColumnsMenuItems = <
89
89
  <>
90
90
  <MenuItem
91
91
  disableRipple
92
- ref={menuItemRef as any}
93
92
  onDragEnter={handleDragEnter}
93
+ ref={menuItemRef as any}
94
94
  sx={(theme) => ({
95
95
  alignItems: 'center',
96
96
  justifyContent: 'flex-start',
97
97
  my: 0,
98
98
  opacity: isDragging ? 0.5 : 1,
99
- outlineOffset: '-2px',
100
99
  outline: isDragging
101
100
  ? `2px dashed ${theme.palette.divider}`
102
101
  : hoveredColumn?.id === column.id
103
102
  ? `2px dashed ${theme.palette.primary.main}`
104
103
  : 'none',
104
+ outlineOffset: '-2px',
105
105
  pl: `${(column.depth + 0.5) * 2}rem`,
106
106
  py: '6px',
107
107
  })}
@@ -135,6 +135,7 @@ export const MRT_ShowHideColumnsMenuItems = <
135
135
  ))}
136
136
  {enableHiding ? (
137
137
  <FormControlLabel
138
+ checked={switchChecked}
138
139
  componentsProps={{
139
140
  typography: {
140
141
  sx: {
@@ -143,7 +144,6 @@ export const MRT_ShowHideColumnsMenuItems = <
143
144
  },
144
145
  },
145
146
  }}
146
- checked={switchChecked}
147
147
  control={
148
148
  <Tooltip
149
149
  arrow
@@ -4,9 +4,9 @@ import DialogContent from '@mui/material/DialogContent';
4
4
  import DialogTitle from '@mui/material/DialogTitle';
5
5
  import Stack from '@mui/material/Stack';
6
6
  import { MRT_EditActionButtons } from '../buttons/MRT_EditActionButtons';
7
+ import { parseFromValuesOrFunc } from '../column.utils';
7
8
  import { MRT_EditCellTextField } from '../inputs/MRT_EditCellTextField';
8
9
  import { type MRT_Row, type MRT_TableInstance } from '../types';
9
- import { parseFromValuesOrFunc } from '../column.utils';
10
10
 
11
11
  interface Props<TData extends Record<string, any>> {
12
12
  open: boolean;
@@ -21,15 +21,15 @@ export const MRT_EditRowModal = <TData extends Record<string, any>>({
21
21
  getState,
22
22
  options: {
23
23
  localization,
24
- onEditingRowCancel,
25
- onCreatingRowCancel,
26
- renderEditRowModalContent,
27
- renderCreateRowModalContent,
28
24
  muiCreateRowModalProps,
29
25
  muiEditRowModalProps,
26
+ onCreatingRowCancel,
27
+ onEditingRowCancel,
28
+ renderCreateRowModalContent,
29
+ renderEditRowModalContent,
30
30
  },
31
- setEditingRow,
32
31
  setCreatingRow,
32
+ setEditingRow,
33
33
  } = table;
34
34
  const { creatingRow, editingRow } = getState();
35
35
  const row = (creatingRow ?? editingRow) as MRT_Row<TData>;
@@ -71,14 +71,14 @@ export const MRT_EditRowModal = <TData extends Record<string, any>>({
71
71
  >
72
72
  {((creatingRow &&
73
73
  renderCreateRowModalContent?.({
74
+ internalEditComponents,
74
75
  row,
75
76
  table,
76
- internalEditComponents,
77
77
  })) ||
78
78
  renderEditRowModalContent?.({
79
+ internalEditComponents,
79
80
  row,
80
81
  table,
81
- internalEditComponents,
82
82
  })) ?? (
83
83
  <>
84
84
  <DialogTitle sx={{ textAlign: 'center' }}>
package/src/sortingFns.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { compareItems, type RankingInfo } from '@tanstack/match-sorter-utils';
1
+ import { type RankingInfo, compareItems } from '@tanstack/match-sorter-utils';
2
2
  import { type Row, sortingFns } from '@tanstack/react-table';
3
3
  import { type MRT_Row } from './types';
4
4
 
@@ -1,15 +1,15 @@
1
1
  import { useCallback, useMemo } from 'react';
2
2
  import {
3
- defaultRangeExtractor,
4
- useVirtualizer,
5
3
  type Range,
6
4
  type Virtualizer,
5
+ defaultRangeExtractor,
6
+ useVirtualizer,
7
7
  } from '@tanstack/react-virtual';
8
8
  import Table from '@mui/material/Table';
9
- import { MRT_TableHead } from '../head/MRT_TableHead';
10
- import { Memo_MRT_TableBody, MRT_TableBody } from '../body/MRT_TableBody';
11
- import { MRT_TableFooter } from '../footer/MRT_TableFooter';
9
+ import { MRT_TableBody, Memo_MRT_TableBody } from '../body/MRT_TableBody';
12
10
  import { parseCSSVarId, parseFromValuesOrFunc } from '../column.utils';
11
+ import { MRT_TableFooter } from '../footer/MRT_TableFooter';
12
+ import { MRT_TableHead } from '../head/MRT_TableHead';
13
13
  import { type MRT_TableInstance } from '../types';
14
14
 
15
15
  interface Props<TData extends Record<string, any>> {
@@ -26,9 +26,9 @@ export const MRT_Table = <TData extends Record<string, any>>({
26
26
  columnVirtualizerInstanceRef,
27
27
  columnVirtualizerOptions,
28
28
  columns,
29
+ enableColumnPinning,
29
30
  enableColumnResizing,
30
31
  enableColumnVirtualization,
31
- enableColumnPinning,
32
32
  enableStickyHeader,
33
33
  enableTableFooter,
34
34
  enableTableHead,
@@ -147,6 +147,7 @@ export const MRT_Table = <TData extends Record<string, any>>({
147
147
  <Table
148
148
  stickyHeader={enableStickyHeader || isFullScreen}
149
149
  {...tableProps}
150
+ style={{ ...columnSizeVars, ...tableProps?.style }}
150
151
  sx={(theme) => ({
151
152
  borderCollapse: 'separate',
152
153
  display: layoutMode === 'grid' ? 'grid' : 'table',
@@ -154,7 +155,6 @@ export const MRT_Table = <TData extends Record<string, any>>({
154
155
  layoutMode !== 'grid' && enableColumnResizing ? 'fixed' : undefined,
155
156
  ...(parseFromValuesOrFunc(tableProps?.sx, theme) as any),
156
157
  })}
157
- style={{ ...columnSizeVars, ...tableProps?.style }}
158
158
  >
159
159
  {enableTableHead && <MRT_TableHead {...props} />}
160
160
  {memoMode === 'table-body' || columnSizingInfo.isResizingColumn ? (
@@ -1,9 +1,9 @@
1
1
  import { useEffect, useLayoutEffect, useState } from 'react';
2
2
  import TableContainer from '@mui/material/TableContainer';
3
3
  import { MRT_Table } from './MRT_Table';
4
+ import { parseFromValuesOrFunc } from '../column.utils';
4
5
  import { MRT_EditRowModal } from '../modals';
5
6
  import { type MRT_TableInstance } from '../types';
6
- import { parseFromValuesOrFunc } from '../column.utils';
7
7
 
8
8
  const useIsomorphicLayoutEffect =
9
9
  typeof window !== 'undefined' ? useLayoutEffect : useEffect;
@@ -23,9 +23,9 @@ export const MRT_TableContainer = <TData extends Record<string, any>>({
23
23
  enableStickyHeader,
24
24
  muiTableContainerProps,
25
25
  },
26
- refs: { tableContainerRef, bottomToolbarRef, topToolbarRef },
26
+ refs: { bottomToolbarRef, tableContainerRef, topToolbarRef },
27
27
  } = table;
28
- const { isFullScreen, creatingRow, editingRow } = getState();
28
+ const { creatingRow, editingRow, isFullScreen } = getState();
29
29
 
30
30
  const [totalToolbarHeight, setTotalToolbarHeight] = useState(0);
31
31
 
@@ -62,20 +62,20 @@ export const MRT_TableContainer = <TData extends Record<string, any>>({
62
62
  }
63
63
  }
64
64
  }}
65
+ style={{
66
+ maxHeight: isFullScreen
67
+ ? `calc(100vh - ${totalToolbarHeight}px)`
68
+ : undefined,
69
+ ...tableContainerProps?.style,
70
+ }}
65
71
  sx={(theme) => ({
66
- maxWidth: '100%',
67
72
  maxHeight: enableStickyHeader
68
73
  ? `clamp(350px, calc(100vh - ${totalToolbarHeight}px), 9999px)`
69
74
  : undefined,
75
+ maxWidth: '100%',
70
76
  overflow: 'auto',
71
77
  ...(parseFromValuesOrFunc(tableContainerProps?.sx, theme) as any),
72
78
  })}
73
- style={{
74
- maxHeight: isFullScreen
75
- ? `calc(100vh - ${totalToolbarHeight}px)`
76
- : undefined,
77
- ...tableContainerProps?.style,
78
- }}
79
79
  >
80
80
  <MRT_Table table={table} />
81
81
  {(createModalOpen || editModalOpen) && (
@@ -1,9 +1,9 @@
1
1
  import Paper from '@mui/material/Paper';
2
- import { MRT_TopToolbar } from '../toolbar/MRT_TopToolbar';
3
- import { MRT_BottomToolbar } from '../toolbar/MRT_BottomToolbar';
4
2
  import { MRT_TableContainer } from './MRT_TableContainer';
5
- import { type MRT_TableInstance } from '../types';
6
3
  import { parseFromValuesOrFunc } from '../column.utils';
4
+ import { MRT_BottomToolbar } from '../toolbar/MRT_BottomToolbar';
5
+ import { MRT_TopToolbar } from '../toolbar/MRT_TopToolbar';
6
+ import { type MRT_TableInstance } from '../types';
7
7
 
8
8
  interface Props<TData extends Record<string, any>> {
9
9
  table: MRT_TableInstance<TData>;
@@ -38,13 +38,7 @@ export const MRT_TablePaper = <TData extends Record<string, any>>({
38
38
  tablePaperProps.ref.current = ref;
39
39
  }
40
40
  }}
41
- sx={(theme) => ({
42
- overflow: 'hidden',
43
- transition: 'all 100ms ease-in-out',
44
- ...(parseFromValuesOrFunc(tablePaperProps?.sx, theme) as any),
45
- })}
46
41
  style={{
47
- ...tablePaperProps?.style,
48
42
  ...(isFullScreen
49
43
  ? {
50
44
  bottom: 0,
@@ -61,7 +55,13 @@ export const MRT_TablePaper = <TData extends Record<string, any>>({
61
55
  zIndex: 10,
62
56
  }
63
57
  : {}),
58
+ ...tablePaperProps?.style,
64
59
  }}
60
+ sx={(theme) => ({
61
+ overflow: 'hidden',
62
+ transition: 'all 100ms ease-in-out',
63
+ ...(parseFromValuesOrFunc(tablePaperProps?.sx, theme) as any),
64
+ })}
65
65
  >
66
66
  {enableTopToolbar &&
67
67
  (parseFromValuesOrFunc(renderTopToolbar, { table }) ?? (
@@ -1,14 +1,14 @@
1
1
  import Box from '@mui/material/Box';
2
2
  import Toolbar from '@mui/material/Toolbar';
3
- import useMediaQuery from '@mui/material/useMediaQuery';
4
3
  import { alpha } from '@mui/material/styles';
4
+ import useMediaQuery from '@mui/material/useMediaQuery';
5
+ import { MRT_LinearProgressBar } from './MRT_LinearProgressBar';
5
6
  import { MRT_TablePagination } from './MRT_TablePagination';
6
7
  import { MRT_ToolbarAlertBanner } from './MRT_ToolbarAlertBanner';
7
8
  import { MRT_ToolbarDropZone } from './MRT_ToolbarDropZone';
8
- import { MRT_LinearProgressBar } from './MRT_LinearProgressBar';
9
9
  import { commonToolbarStyles } from './MRT_TopToolbar';
10
- import { type MRT_TableInstance } from '../types';
11
10
  import { parseFromValuesOrFunc } from '../column.utils';
11
+ import { type MRT_TableInstance } from '../types';
12
12
 
13
13
  interface Props<TData extends Record<string, any>> {
14
14
  table: MRT_TableInstance<TData>;
@@ -98,8 +98,8 @@ export const MRT_BottomToolbar = <TData extends Record<string, any>>({
98
98
  }}
99
99
  >
100
100
  {enablePagination &&
101
- ['bottom', 'both'].includes(positionPagination ?? '') && (
102
- <MRT_TablePagination table={table} position="bottom" />
101
+ ['both', 'bottom'].includes(positionPagination ?? '') && (
102
+ <MRT_TablePagination position="bottom" table={table} />
103
103
  )}
104
104
  </Box>
105
105
  </Box>
@@ -1,7 +1,7 @@
1
1
  import Collapse from '@mui/material/Collapse';
2
2
  import LinearProgress from '@mui/material/LinearProgress';
3
- import { type MRT_TableInstance } from '../types';
4
3
  import { parseFromValuesOrFunc } from '../column.utils';
4
+ import { type MRT_TableInstance } from '../types';
5
5
 
6
6
  interface Props<TData extends Record<string, any>> {
7
7
  isTopToolbar: boolean;
@@ -13,8 +13,8 @@ export const MRT_LinearProgressBar = <TData extends Record<string, any>>({
13
13
  table,
14
14
  }: Props<TData>) => {
15
15
  const {
16
- options: { muiLinearProgressProps },
17
16
  getState,
17
+ options: { muiLinearProgressProps },
18
18
  } = table;
19
19
  const { isLoading, showProgressBars } = getState();
20
20
 
@@ -27,17 +27,17 @@ export const MRT_LinearProgressBar = <TData extends Record<string, any>>({
27
27
  <Collapse
28
28
  in={isLoading || showProgressBars}
29
29
  mountOnEnter
30
- unmountOnExit
31
30
  sx={{
32
31
  bottom: isTopToolbar ? 0 : undefined,
33
32
  position: 'absolute',
34
33
  top: !isTopToolbar ? 0 : undefined,
35
34
  width: '100%',
36
35
  }}
36
+ unmountOnExit
37
37
  >
38
38
  <LinearProgress
39
- aria-label="Loading"
40
39
  aria-busy="true"
40
+ aria-label="Loading"
41
41
  sx={{ position: 'relative' }}
42
42
  {...linearProgressProps}
43
43
  />
@@ -1,31 +1,31 @@
1
1
  import { type ChangeEvent } from 'react';
2
2
  import TablePagination from '@mui/material/TablePagination';
3
- import { type MRT_TableInstance } from '../types';
4
3
  import { parseFromValuesOrFunc } from '../column.utils';
4
+ import { type MRT_TableInstance } from '../types';
5
5
 
6
6
  interface Props<TData extends Record<string, any>> {
7
- position?: 'top' | 'bottom';
7
+ position?: 'bottom' | 'top';
8
8
  table: MRT_TableInstance<TData>;
9
9
  }
10
10
 
11
11
  export const MRT_TablePagination = <TData extends Record<string, any>>({
12
- table,
13
12
  position = 'bottom',
13
+ table,
14
14
  }: Props<TData>) => {
15
15
  const {
16
16
  getPrePaginationRowModel,
17
17
  getState,
18
- setPageIndex,
19
- setPageSize,
20
18
  options: {
21
- muiTablePaginationProps,
22
19
  enableToolbarInternalActions,
23
20
  localization,
21
+ muiTablePaginationProps,
24
22
  rowCount,
25
23
  },
24
+ setPageIndex,
25
+ setPageSize,
26
26
  } = table;
27
27
  const {
28
- pagination: { pageSize = 10, pageIndex = 0 },
28
+ pagination: { pageIndex = 0, pageSize = 10 },
29
29
  showGlobalFilter,
30
30
  } = getState();
31
31
 
@@ -53,7 +53,7 @@ export const MRT_TablePagination = <TData extends Record<string, any>>({
53
53
  ? localization.goToNextPage
54
54
  : localization.goToPreviousPage
55
55
  }
56
- labelDisplayedRows={({ from, to, count }) =>
56
+ labelDisplayedRows={({ count, from, to }) =>
57
57
  `${from}-${to} ${localization.of} ${count}`
58
58
  }
59
59
  labelRowsPerPage={localization.rowsPerPage}
@@ -69,28 +69,28 @@ export const MRT_TablePagination = <TData extends Record<string, any>>({
69
69
  showLastButton={showFirstLastPageButtons}
70
70
  {...tablePaginationProps}
71
71
  SelectProps={{
72
- sx: { m: '0 1rem 0 1ch' },
73
72
  MenuProps: { MenuListProps: { disablePadding: true }, sx: { m: 0 } },
73
+ sx: { m: '0 1rem 0 1ch' },
74
74
  ...tablePaginationProps?.SelectProps,
75
75
  }}
76
76
  sx={(theme) => ({
77
- '& .MuiTablePagination-toolbar': {
78
- display: 'flex',
79
- alignItems: 'center',
80
- },
81
- '& .MuiTablePagination-selectLabel': {
82
- m: '0 -1px',
83
- },
84
- '&. MuiInputBase-root': {
77
+ '& . MuiTablePagination-select': {
85
78
  m: '0 1px',
86
79
  },
87
- '& . MuiTablePagination-select': {
80
+ '& .MuiTablePagination-actions': {
88
81
  m: '0 1px',
89
82
  },
90
83
  '& .MuiTablePagination-displayedRows': {
91
84
  m: '0 1px',
92
85
  },
93
- '& .MuiTablePagination-actions': {
86
+ '& .MuiTablePagination-selectLabel': {
87
+ m: '0 -1px',
88
+ },
89
+ '& .MuiTablePagination-toolbar': {
90
+ alignItems: 'center',
91
+ display: 'flex',
92
+ },
93
+ '&. MuiInputBase-root': {
94
94
  m: '0 1px',
95
95
  },
96
96
  mt:
@@ -4,8 +4,8 @@ import AlertTitle from '@mui/material/AlertTitle';
4
4
  import Box from '@mui/material/Box';
5
5
  import Chip from '@mui/material/Chip';
6
6
  import Collapse from '@mui/material/Collapse';
7
- import { type MRT_TableInstance } from '../types';
8
7
  import { parseFromValuesOrFunc } from '../column.utils';
8
+ import { type MRT_TableInstance } from '../types';
9
9
 
10
10
  interface Props<TData extends Record<string, any>> {
11
11
  stackAlertBanner: boolean;
@@ -22,8 +22,8 @@ export const MRT_ToolbarAlertBanner = <TData extends Record<string, any>>({
22
22
  getState,
23
23
  options: {
24
24
  localization,
25
- muiToolbarAlertBannerProps,
26
25
  muiToolbarAlertBannerChipProps,
26
+ muiToolbarAlertBannerProps,
27
27
  positionToolbarAlertBanner,
28
28
  rowCount,
29
29
  },
@@ -81,13 +81,13 @@ export const MRT_ToolbarAlertBanner = <TData extends Record<string, any>>({
81
81
  borderRadius: 0,
82
82
  fontSize: '1rem',
83
83
  left: 0,
84
- p: 0,
85
- position: 'relative',
86
84
  mb: stackAlertBanner
87
85
  ? 0
88
86
  : positionToolbarAlertBanner === 'bottom'
89
87
  ? '-1rem'
90
88
  : undefined,
89
+ p: 0,
90
+ position: 'relative',
91
91
  right: 0,
92
92
  top: 0,
93
93
  width: '100%',