material-react-table 2.0.0-alpha.1 → 2.0.0-alpha.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 (143) hide show
  1. package/README.md +2 -2
  2. package/dist/cjs/index.js +2408 -2334
  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/locales/np.d.ts +2 -0
  15. package/dist/cjs/types/menus/MRT_ColumnActionMenu.d.ts +4 -4
  16. package/dist/cjs/types/menus/MRT_ShowHideColumnsMenuItems.d.ts +1 -1
  17. package/dist/cjs/types/toolbar/MRT_TablePagination.d.ts +2 -2
  18. package/dist/cjs/types/toolbar/MRT_TopToolbar.d.ts +1 -1
  19. package/dist/cjs/types/types.d.ts +217 -197
  20. package/dist/esm/material-react-table.esm.js +2311 -2239
  21. package/dist/esm/material-react-table.esm.js.map +1 -1
  22. package/dist/esm/types/MaterialReactTable.d.ts +1 -1
  23. package/dist/esm/types/buttons/MRT_GrabHandleButton.d.ts +1 -1
  24. package/dist/esm/types/buttons/MRT_RowPinButton.d.ts +2 -2
  25. package/dist/esm/types/column.utils.d.ts +6 -6
  26. package/dist/esm/types/filterFns.d.ts +14 -14
  27. package/dist/esm/types/head/MRT_TableHeadCellFilterLabel.d.ts +1 -1
  28. package/dist/esm/types/head/MRT_TableHeadCellSortLabel.d.ts +1 -1
  29. package/dist/esm/types/hooks/useMRT_DisplayColumns.d.ts +3 -3
  30. package/dist/esm/types/icons.d.ts +1 -1
  31. package/dist/esm/types/inputs/MRT_FilterRangeSlider.d.ts +1 -1
  32. package/dist/esm/types/locales/np.d.ts +2 -0
  33. package/dist/esm/types/menus/MRT_ColumnActionMenu.d.ts +4 -4
  34. package/dist/esm/types/menus/MRT_ShowHideColumnsMenuItems.d.ts +1 -1
  35. package/dist/esm/types/toolbar/MRT_TablePagination.d.ts +2 -2
  36. package/dist/esm/types/toolbar/MRT_TopToolbar.d.ts +1 -1
  37. package/dist/esm/types/types.d.ts +217 -197
  38. package/dist/index.d.ts +258 -238
  39. package/locales/fr.esm.js +1 -1
  40. package/locales/fr.esm.js.map +1 -1
  41. package/locales/fr.js +1 -1
  42. package/locales/fr.js.map +1 -1
  43. package/locales/np.d.ts +2 -0
  44. package/locales/np.esm.d.ts +2 -0
  45. package/locales/np.esm.js +94 -0
  46. package/locales/np.esm.js.map +1 -0
  47. package/locales/np.js +98 -0
  48. package/locales/np.js.map +1 -0
  49. package/locales/tr.d.ts +2 -0
  50. package/locales/tr.esm.d.ts +2 -0
  51. package/locales/tr.esm.js +93 -0
  52. package/locales/tr.esm.js.map +1 -0
  53. package/locales/tr.js +97 -0
  54. package/locales/tr.js.map +1 -0
  55. package/locales/uk.d.ts +2 -0
  56. package/locales/uk.esm.d.ts +2 -0
  57. package/locales/uk.esm.js +93 -0
  58. package/locales/uk.esm.js.map +1 -0
  59. package/locales/uk.js +97 -0
  60. package/locales/uk.js.map +1 -0
  61. package/locales/vi.d.ts +2 -0
  62. package/locales/vi.esm.d.ts +2 -0
  63. package/locales/vi.esm.js +93 -0
  64. package/locales/vi.esm.js.map +1 -0
  65. package/locales/vi.js +97 -0
  66. package/locales/vi.js.map +1 -0
  67. package/locales/zh-Hans.d.ts +2 -0
  68. package/locales/zh-Hans.esm.d.ts +2 -0
  69. package/locales/zh-Hans.esm.js +93 -0
  70. package/locales/zh-Hans.esm.js.map +1 -0
  71. package/locales/zh-Hans.js +97 -0
  72. package/locales/zh-Hans.js.map +1 -0
  73. package/locales/zh-Hant.d.ts +2 -0
  74. package/locales/zh-Hant.esm.d.ts +2 -0
  75. package/locales/zh-Hant.esm.js +93 -0
  76. package/locales/zh-Hant.esm.js.map +1 -0
  77. package/locales/zh-Hant.js +97 -0
  78. package/locales/zh-Hant.js.map +1 -0
  79. package/package.json +27 -26
  80. package/src/MaterialReactTable.tsx +2 -2
  81. package/src/body/MRT_TableBody.tsx +9 -9
  82. package/src/body/MRT_TableBodyCell.tsx +22 -22
  83. package/src/body/MRT_TableBodyCellValue.tsx +5 -5
  84. package/src/body/MRT_TableBodyRow.tsx +32 -32
  85. package/src/body/MRT_TableBodyRowGrabHandle.tsx +2 -2
  86. package/src/body/MRT_TableBodyRowPinButton.tsx +3 -3
  87. package/src/body/MRT_TableDetailPanel.tsx +3 -3
  88. package/src/buttons/MRT_CopyButton.tsx +1 -1
  89. package/src/buttons/MRT_EditActionButtons.tsx +4 -4
  90. package/src/buttons/MRT_ExpandAllButton.tsx +3 -3
  91. package/src/buttons/MRT_ExpandButton.tsx +1 -1
  92. package/src/buttons/MRT_GrabHandleButton.tsx +10 -10
  93. package/src/buttons/MRT_RowPinButton.tsx +5 -5
  94. package/src/buttons/MRT_ShowHideColumnsButton.tsx +1 -1
  95. package/src/buttons/MRT_ToggleFullScreenButton.tsx +2 -2
  96. package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +8 -8
  97. package/src/column.utils.ts +24 -22
  98. package/src/filterFns.ts +29 -29
  99. package/src/footer/MRT_TableFooter.tsx +9 -9
  100. package/src/footer/MRT_TableFooterCell.tsx +1 -1
  101. package/src/footer/MRT_TableFooterRow.tsx +2 -2
  102. package/src/head/MRT_TableHead.tsx +9 -9
  103. package/src/head/MRT_TableHeadCell.tsx +10 -6
  104. package/src/head/MRT_TableHeadCellColumnActionsButton.tsx +9 -6
  105. package/src/head/MRT_TableHeadCellFilterContainer.tsx +12 -5
  106. package/src/head/MRT_TableHeadCellFilterLabel.tsx +106 -61
  107. package/src/head/MRT_TableHeadCellGrabHandle.tsx +2 -2
  108. package/src/head/MRT_TableHeadCellResizeHandle.tsx +11 -11
  109. package/src/head/MRT_TableHeadCellSortLabel.tsx +8 -8
  110. package/src/head/MRT_TableHeadRow.tsx +2 -2
  111. package/src/hooks/useMRT_DisplayColumns.tsx +5 -5
  112. package/src/hooks/useMRT_Effects.ts +3 -3
  113. package/src/hooks/useMRT_TableInstance.ts +15 -14
  114. package/src/hooks/useMRT_TableOptions.ts +3 -3
  115. package/src/icons.ts +2 -2
  116. package/src/inputs/MRT_EditCellTextField.tsx +9 -9
  117. package/src/inputs/MRT_FilterCheckbox.tsx +7 -7
  118. package/src/inputs/MRT_FilterRangeFields.tsx +1 -1
  119. package/src/inputs/MRT_FilterRangeSlider.tsx +6 -6
  120. package/src/inputs/MRT_FilterTextField.tsx +309 -230
  121. package/src/inputs/MRT_GlobalFilterTextField.tsx +26 -26
  122. package/src/inputs/MRT_SelectCheckbox.tsx +7 -7
  123. package/src/locales/fr.ts +1 -1
  124. package/src/locales/np.ts +94 -0
  125. package/src/menus/MRT_ColumnActionMenu.tsx +48 -45
  126. package/src/menus/MRT_FilterOptionMenu.tsx +36 -36
  127. package/src/menus/MRT_RowActionMenu.tsx +7 -7
  128. package/src/menus/MRT_ShowHideColumnsMenu.tsx +6 -6
  129. package/src/menus/MRT_ShowHideColumnsMenuItems.tsx +5 -5
  130. package/src/modals/MRT_EditRowModal.tsx +8 -8
  131. package/src/sortingFns.ts +1 -1
  132. package/src/table/MRT_Table.tsx +7 -7
  133. package/src/table/MRT_TableContainer.tsx +10 -10
  134. package/src/table/MRT_TablePaper.tsx +9 -9
  135. package/src/toolbar/MRT_BottomToolbar.tsx +5 -5
  136. package/src/toolbar/MRT_LinearProgressBar.tsx +4 -4
  137. package/src/toolbar/MRT_TablePagination.tsx +19 -19
  138. package/src/toolbar/MRT_ToolbarAlertBanner.tsx +4 -4
  139. package/src/toolbar/MRT_ToolbarDropZone.tsx +6 -6
  140. package/src/toolbar/MRT_ToolbarInternalButtons.tsx +8 -5
  141. package/src/toolbar/MRT_TopToolbar.tsx +7 -7
  142. package/src/types.ts +288 -257
  143. package/src/useMaterialReactTable.ts +1 -1
@@ -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%',
@@ -1,8 +1,8 @@
1
1
  import { type DragEvent, useEffect } from 'react';
2
- import { alpha } from '@mui/material/styles';
3
2
  import Box from '@mui/material/Box';
4
3
  import Fade from '@mui/material/Fade';
5
4
  import Typography from '@mui/material/Typography';
5
+ import { alpha } from '@mui/material/styles';
6
6
  import { type MRT_TableInstance } from '../types';
7
7
 
8
8
  interface Props<TData extends Record<string, any>> {
@@ -19,7 +19,7 @@ export const MRT_ToolbarDropZone = <TData extends Record<string, any>>({
19
19
  setShowToolbarDropZone,
20
20
  } = table;
21
21
 
22
- const { draggingColumn, hoveredColumn, grouping, showToolbarDropZone } =
22
+ const { draggingColumn, grouping, hoveredColumn, showToolbarDropZone } =
23
23
  getState();
24
24
 
25
25
  const handleDragEnter = (_event: DragEvent<HTMLDivElement>) => {
@@ -41,23 +41,23 @@ export const MRT_ToolbarDropZone = <TData extends Record<string, any>>({
41
41
  <Fade in={showToolbarDropZone}>
42
42
  <Box
43
43
  className="Mui-ToolbarDropZone"
44
+ onDragEnter={handleDragEnter}
44
45
  sx={(theme) => ({
45
46
  alignItems: 'center',
47
+ backdropFilter: 'blur(4px)',
46
48
  backgroundColor: alpha(
47
49
  theme.palette.info.main,
48
50
  hoveredColumn?.id === 'drop-zone' ? 0.2 : 0.1,
49
51
  ),
50
- backdropFilter: 'blur(4px)',
51
- boxSizing: 'border-box',
52
52
  border: `dashed ${theme.palette.info.main} 2px`,
53
+ boxSizing: 'border-box',
53
54
  display: 'flex',
54
- justifyContent: 'center',
55
55
  height: '100%',
56
+ justifyContent: 'center',
56
57
  position: 'absolute',
57
58
  width: '100%',
58
59
  zIndex: 4,
59
60
  })}
60
- onDragEnter={handleDragEnter}
61
61
  >
62
62
  <Typography fontStyle="italic">
63
63
  {localization.dropToGroupBy.replace(
@@ -1,8 +1,8 @@
1
1
  import Box from '@mui/material/Box';
2
- import { MRT_ToggleFullScreenButton } from '../buttons/MRT_ToggleFullScreenButton';
3
2
  import { MRT_ShowHideColumnsButton } from '../buttons/MRT_ShowHideColumnsButton';
4
3
  import { MRT_ToggleDensePaddingButton } from '../buttons/MRT_ToggleDensePaddingButton';
5
4
  import { MRT_ToggleFiltersButton } from '../buttons/MRT_ToggleFiltersButton';
5
+ import { MRT_ToggleFullScreenButton } from '../buttons/MRT_ToggleFullScreenButton';
6
6
  import { MRT_ToggleGlobalFilterButton } from '../buttons/MRT_ToggleGlobalFilterButton';
7
7
  import { type MRT_TableInstance } from '../types';
8
8
 
@@ -15,14 +15,15 @@ export const MRT_ToolbarInternalButtons = <TData extends Record<string, any>>({
15
15
  }: Props<TData>) => {
16
16
  const {
17
17
  options: {
18
+ columnFilterDisplayMode,
18
19
  enableColumnFilters,
19
20
  enableColumnOrdering,
21
+ enableColumnPinning,
20
22
  enableDensityToggle,
21
23
  enableFilters,
22
24
  enableFullScreenToggle,
23
25
  enableGlobalFilter,
24
26
  enableHiding,
25
- enableColumnPinning,
26
27
  initialState,
27
28
  renderToolbarInternalActions,
28
29
  },
@@ -45,9 +46,11 @@ export const MRT_ToolbarInternalButtons = <TData extends Record<string, any>>({
45
46
  !initialState?.showGlobalFilter && (
46
47
  <MRT_ToggleGlobalFilterButton table={table} />
47
48
  )}
48
- {enableFilters && enableColumnFilters && (
49
- <MRT_ToggleFiltersButton table={table} />
50
- )}
49
+ {enableFilters &&
50
+ enableColumnFilters &&
51
+ columnFilterDisplayMode !== 'popover' && (
52
+ <MRT_ToggleFiltersButton table={table} />
53
+ )}
51
54
  {(enableHiding || enableColumnOrdering || enableColumnPinning) && (
52
55
  <MRT_ShowHideColumnsButton table={table} />
53
56
  )}
@@ -1,16 +1,16 @@
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 { lighten } from '@mui/material/styles';
5
- import { MRT_GlobalFilterTextField } from '../inputs/MRT_GlobalFilterTextField';
4
+ import { type Theme } from '@mui/material/styles';
5
+ import useMediaQuery from '@mui/material/useMediaQuery';
6
6
  import { MRT_LinearProgressBar } from './MRT_LinearProgressBar';
7
7
  import { MRT_TablePagination } from './MRT_TablePagination';
8
8
  import { MRT_ToolbarAlertBanner } from './MRT_ToolbarAlertBanner';
9
- import { MRT_ToolbarInternalButtons } from './MRT_ToolbarInternalButtons';
10
9
  import { MRT_ToolbarDropZone } from './MRT_ToolbarDropZone';
11
- import { type MRT_TableInstance } from '../types';
12
- import { type Theme } from '@mui/material/styles';
10
+ import { MRT_ToolbarInternalButtons } from './MRT_ToolbarInternalButtons';
13
11
  import { parseFromValuesOrFunc } from '../column.utils';
12
+ import { MRT_GlobalFilterTextField } from '../inputs/MRT_GlobalFilterTextField';
13
+ import { type MRT_TableInstance } from '../types';
14
14
 
15
15
  export const commonToolbarStyles = ({ theme }: { theme: Theme }) => ({
16
16
  alignItems: 'flex-start',
@@ -122,8 +122,8 @@ export const MRT_TopToolbar = <TData extends Record<string, any>>({
122
122
  )}
123
123
  </Box>
124
124
  {enablePagination &&
125
- ['top', 'both'].includes(positionPagination ?? '') && (
126
- <MRT_TablePagination table={table} position="top" />
125
+ ['both', 'top'].includes(positionPagination ?? '') && (
126
+ <MRT_TablePagination position="top" table={table} />
127
127
  )}
128
128
  <MRT_LinearProgressBar isTopToolbar table={table} />
129
129
  </Toolbar>