material-react-table 2.10.0 → 2.11.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 (187) hide show
  1. package/README.md +3 -2
  2. package/dist/index.d.ts +144 -125
  3. package/dist/index.esm.js +201 -152
  4. package/dist/index.esm.js.map +1 -1
  5. package/dist/index.js +201 -149
  6. package/dist/index.js.map +1 -1
  7. package/locales/ar/index.esm.js +1 -0
  8. package/locales/ar/index.js +1 -0
  9. package/locales/az/index.esm.js +1 -0
  10. package/locales/az/index.js +1 -0
  11. package/locales/bg/index.esm.js +1 -0
  12. package/locales/bg/index.js +1 -0
  13. package/locales/cs/index.esm.js +1 -0
  14. package/locales/cs/index.js +1 -0
  15. package/locales/da/index.esm.js +1 -0
  16. package/locales/da/index.js +1 -0
  17. package/locales/de/index.esm.js +1 -0
  18. package/locales/de/index.js +1 -0
  19. package/locales/en/index.esm.js +1 -0
  20. package/locales/en/index.js +1 -0
  21. package/locales/es/index.esm.js +1 -0
  22. package/locales/es/index.js +1 -0
  23. package/locales/et/index.esm.js +1 -0
  24. package/locales/et/index.js +1 -0
  25. package/locales/fa/index.esm.js +1 -0
  26. package/locales/fa/index.js +1 -0
  27. package/locales/fi/index.esm.js +1 -0
  28. package/locales/fi/index.js +1 -0
  29. package/locales/fr/index.esm.js +1 -0
  30. package/locales/fr/index.js +1 -0
  31. package/locales/he/index.esm.js +1 -0
  32. package/locales/he/index.js +1 -0
  33. package/locales/hu/index.esm.js +1 -0
  34. package/locales/hu/index.js +1 -0
  35. package/locales/hy/index.esm.js +1 -0
  36. package/locales/hy/index.js +1 -0
  37. package/locales/id/index.esm.js +1 -0
  38. package/locales/id/index.js +1 -0
  39. package/locales/it/index.esm.js +1 -0
  40. package/locales/it/index.js +1 -0
  41. package/locales/ja/index.esm.js +1 -0
  42. package/locales/ja/index.js +1 -0
  43. package/locales/ko/index.esm.js +1 -0
  44. package/locales/ko/index.js +1 -0
  45. package/locales/nl/index.esm.js +1 -0
  46. package/locales/nl/index.js +1 -0
  47. package/locales/no/index.esm.js +1 -0
  48. package/locales/no/index.js +1 -0
  49. package/locales/np/index.esm.js +1 -0
  50. package/locales/np/index.js +1 -0
  51. package/locales/pl/index.esm.js +1 -0
  52. package/locales/pl/index.js +1 -0
  53. package/locales/pt/index.esm.js +1 -0
  54. package/locales/pt/index.js +1 -0
  55. package/locales/pt-BR/index.esm.js +1 -0
  56. package/locales/pt-BR/index.js +1 -0
  57. package/locales/ro/index.esm.js +1 -0
  58. package/locales/ro/index.js +1 -0
  59. package/locales/ru/index.esm.js +1 -0
  60. package/locales/ru/index.js +1 -0
  61. package/locales/sk/index.esm.js +1 -0
  62. package/locales/sk/index.js +1 -0
  63. package/locales/sr-Cyrl-RS/index.esm.js +1 -0
  64. package/locales/sr-Cyrl-RS/index.js +1 -0
  65. package/locales/sr-Latn-RS/index.esm.js +1 -0
  66. package/locales/sr-Latn-RS/index.js +1 -0
  67. package/locales/sv/index.esm.js +1 -0
  68. package/locales/sv/index.js +1 -0
  69. package/locales/tr/index.esm.js +1 -0
  70. package/locales/tr/index.js +1 -0
  71. package/locales/uk/index.esm.js +1 -0
  72. package/locales/uk/index.js +1 -0
  73. package/locales/vi/index.esm.js +1 -0
  74. package/locales/vi/index.js +1 -0
  75. package/locales/zh-Hans/index.esm.js +1 -0
  76. package/locales/zh-Hans/index.js +1 -0
  77. package/locales/zh-Hant/index.esm.js +1 -0
  78. package/locales/zh-Hant/index.js +1 -0
  79. package/package.json +18 -18
  80. package/src/components/MaterialReactTable.tsx +3 -3
  81. package/src/components/body/MRT_TableBody.tsx +3 -2
  82. package/src/components/body/MRT_TableBodyCell.tsx +4 -2
  83. package/src/components/body/MRT_TableBodyCellValue.tsx +5 -2
  84. package/src/components/body/MRT_TableBodyRow.tsx +13 -8
  85. package/src/components/body/MRT_TableBodyRowGrabHandle.tsx +4 -3
  86. package/src/components/body/MRT_TableBodyRowPinButton.tsx +3 -2
  87. package/src/components/body/MRT_TableDetailPanel.tsx +3 -2
  88. package/src/components/buttons/MRT_ColumnPinningButtons.tsx +3 -2
  89. package/src/components/buttons/MRT_CopyButton.tsx +3 -2
  90. package/src/components/buttons/MRT_EditActionButtons.tsx +3 -2
  91. package/src/components/buttons/MRT_ExpandAllButton.tsx +3 -2
  92. package/src/components/buttons/MRT_ExpandButton.tsx +3 -2
  93. package/src/components/buttons/MRT_GrabHandleButton.tsx +9 -15
  94. package/src/components/buttons/MRT_RowPinButton.tsx +3 -2
  95. package/src/components/buttons/MRT_ShowHideColumnsButton.tsx +3 -2
  96. package/src/components/buttons/MRT_ToggleDensePaddingButton.tsx +3 -2
  97. package/src/components/buttons/MRT_ToggleFiltersButton.tsx +3 -2
  98. package/src/components/buttons/MRT_ToggleFullScreenButton.tsx +3 -2
  99. package/src/components/buttons/MRT_ToggleGlobalFilterButton.tsx +3 -2
  100. package/src/components/buttons/MRT_ToggleRowActionMenuButton.tsx +3 -2
  101. package/src/components/footer/MRT_TableFooter.tsx +3 -2
  102. package/src/components/footer/MRT_TableFooterCell.tsx +3 -2
  103. package/src/components/footer/MRT_TableFooterRow.tsx +5 -3
  104. package/src/components/head/MRT_TableHead.tsx +3 -2
  105. package/src/components/head/MRT_TableHeadCell.tsx +3 -5
  106. package/src/components/head/MRT_TableHeadCellColumnActionsButton.tsx +4 -2
  107. package/src/components/head/MRT_TableHeadCellFilterContainer.tsx +4 -2
  108. package/src/components/head/MRT_TableHeadCellFilterLabel.tsx +3 -2
  109. package/src/components/head/MRT_TableHeadCellGrabHandle.tsx +4 -3
  110. package/src/components/head/MRT_TableHeadCellResizeHandle.tsx +3 -2
  111. package/src/components/head/MRT_TableHeadCellSortLabel.tsx +3 -2
  112. package/src/components/head/MRT_TableHeadRow.tsx +3 -2
  113. package/src/components/inputs/MRT_EditCellTextField.tsx +3 -2
  114. package/src/components/inputs/MRT_FilterCheckbox.tsx +3 -2
  115. package/src/components/inputs/MRT_FilterRangeFields.tsx +3 -2
  116. package/src/components/inputs/MRT_FilterRangeSlider.tsx +3 -2
  117. package/src/components/inputs/MRT_FilterTextField.tsx +15 -6
  118. package/src/components/inputs/MRT_GlobalFilterTextField.tsx +3 -2
  119. package/src/components/inputs/MRT_SelectCheckbox.tsx +26 -33
  120. package/src/components/menus/MRT_ActionMenuItem.tsx +3 -2
  121. package/src/components/menus/MRT_CellActionMenu.tsx +5 -4
  122. package/src/components/menus/MRT_ColumnActionMenu.tsx +5 -4
  123. package/src/components/menus/MRT_FilterOptionMenu.tsx +3 -2
  124. package/src/components/menus/MRT_RowActionMenu.tsx +3 -2
  125. package/src/components/menus/MRT_ShowHideColumnsMenu.tsx +8 -2
  126. package/src/components/menus/MRT_ShowHideColumnsMenuItems.tsx +7 -5
  127. package/src/components/modals/MRT_EditRowModal.tsx +3 -2
  128. package/src/components/table/MRT_Table.tsx +2 -2
  129. package/src/components/table/MRT_TableContainer.tsx +3 -2
  130. package/src/components/table/MRT_TableLoadingOverlay.tsx +11 -8
  131. package/src/components/table/MRT_TablePaper.tsx +3 -2
  132. package/src/components/toolbar/MRT_BottomToolbar.tsx +3 -2
  133. package/src/components/toolbar/MRT_LinearProgressBar.tsx +3 -2
  134. package/src/components/toolbar/MRT_TablePagination.tsx +2 -2
  135. package/src/components/toolbar/MRT_ToolbarAlertBanner.tsx +30 -13
  136. package/src/components/toolbar/MRT_ToolbarDropZone.tsx +3 -2
  137. package/src/components/toolbar/MRT_ToolbarInternalButtons.tsx +3 -2
  138. package/src/components/toolbar/MRT_TopToolbar.tsx +2 -2
  139. package/src/hooks/useMRT_Effects.ts +11 -11
  140. package/src/hooks/useMRT_Rows.ts +11 -79
  141. package/src/hooks/useMRT_TableInstance.ts +2 -0
  142. package/src/hooks/useMRT_TableOptions.ts +2 -0
  143. package/src/locales/ar.ts +1 -0
  144. package/src/locales/az.ts +1 -0
  145. package/src/locales/bg.ts +1 -0
  146. package/src/locales/cs.ts +1 -0
  147. package/src/locales/da.ts +1 -0
  148. package/src/locales/de.ts +1 -0
  149. package/src/locales/en.ts +1 -0
  150. package/src/locales/es.ts +1 -0
  151. package/src/locales/et.ts +1 -0
  152. package/src/locales/fa.ts +1 -0
  153. package/src/locales/fi.ts +1 -0
  154. package/src/locales/fr.ts +1 -0
  155. package/src/locales/he.ts +1 -0
  156. package/src/locales/hu.ts +1 -0
  157. package/src/locales/hy.ts +1 -0
  158. package/src/locales/id.ts +1 -0
  159. package/src/locales/it.ts +1 -0
  160. package/src/locales/ja.ts +1 -0
  161. package/src/locales/ko.ts +1 -0
  162. package/src/locales/nl.ts +1 -0
  163. package/src/locales/no.ts +1 -0
  164. package/src/locales/np.ts +1 -0
  165. package/src/locales/pl.ts +1 -0
  166. package/src/locales/pt-BR.ts +1 -0
  167. package/src/locales/pt.ts +1 -0
  168. package/src/locales/ro.ts +1 -0
  169. package/src/locales/ru.ts +1 -0
  170. package/src/locales/sk.ts +1 -0
  171. package/src/locales/sr-Cyrl-RS.ts +1 -0
  172. package/src/locales/sr-Latn-RS.ts +1 -0
  173. package/src/locales/sv.ts +1 -0
  174. package/src/locales/tr.ts +1 -0
  175. package/src/locales/uk.ts +1 -0
  176. package/src/locales/vi.ts +1 -0
  177. package/src/locales/zh-Hans.ts +1 -0
  178. package/src/locales/zh-Hant.ts +1 -0
  179. package/src/types.ts +10 -4
  180. package/src/utils/column.utils.ts +4 -6
  181. package/src/utils/displayColumn.utils.ts +1 -1
  182. package/src/utils/row.utils.ts +179 -21
  183. package/locales/am/index.d.ts +0 -3
  184. package/locales/am/index.esm.d.ts +0 -3
  185. package/locales/am/index.esm.js +0 -93
  186. package/locales/am/index.js +0 -97
  187. package/locales/am/package.json +0 -6
@@ -8,7 +8,8 @@ import {
8
8
  import { getCommonMRTCellStyles } from '../../utils/style.utils';
9
9
  import { parseFromValuesOrFunc } from '../../utils/utils';
10
10
 
11
- interface Props<TData extends MRT_RowData> extends TableCellProps {
11
+ export interface MRT_TableFooterCellProps<TData extends MRT_RowData>
12
+ extends TableCellProps {
12
13
  footer: MRT_Header<TData>;
13
14
  staticColumnIndex?: number;
14
15
  table: MRT_TableInstance<TData>;
@@ -19,7 +20,7 @@ export const MRT_TableFooterCell = <TData extends MRT_RowData>({
19
20
  staticColumnIndex,
20
21
  table,
21
22
  ...rest
22
- }: Props<TData>) => {
23
+ }: MRT_TableFooterCellProps<TData>) => {
23
24
  const theme = useTheme();
24
25
  const {
25
26
  getState,
@@ -11,7 +11,8 @@ import {
11
11
  import { getMRTTheme } from '../../utils/style.utils';
12
12
  import { parseFromValuesOrFunc } from '../../utils/utils';
13
13
 
14
- interface Props<TData extends MRT_RowData> extends TableRowProps {
14
+ export interface MRT_TableFooterRowProps<TData extends MRT_RowData>
15
+ extends TableRowProps {
15
16
  columnVirtualizer?: MRT_ColumnVirtualizer;
16
17
  footerGroup: MRT_HeaderGroup<TData>;
17
18
  table: MRT_TableInstance<TData>;
@@ -22,7 +23,7 @@ export const MRT_TableFooterRow = <TData extends MRT_RowData>({
22
23
  footerGroup,
23
24
  table,
24
25
  ...rest
25
- }: Props<TData>) => {
26
+ }: MRT_TableFooterRowProps<TData>) => {
26
27
  const {
27
28
  options: { layoutMode, muiTableFooterRowProps },
28
29
  } = table;
@@ -38,8 +39,9 @@ export const MRT_TableFooterRow = <TData extends MRT_RowData>({
38
39
  !!header.column.columnDef.footer) ||
39
40
  header.column.columnDef.Footer,
40
41
  )
41
- )
42
+ ) {
42
43
  return null;
44
+ }
43
45
 
44
46
  const tableRowProps = {
45
47
  ...parseFromValuesOrFunc(muiTableFooterRowProps, {
@@ -8,7 +8,8 @@ import {
8
8
  import { parseFromValuesOrFunc } from '../../utils/utils';
9
9
  import { MRT_ToolbarAlertBanner } from '../toolbar/MRT_ToolbarAlertBanner';
10
10
 
11
- interface Props<TData extends MRT_RowData> extends TableHeadProps {
11
+ export interface MRT_TableHeadProps<TData extends MRT_RowData>
12
+ extends TableHeadProps {
12
13
  columnVirtualizer?: MRT_ColumnVirtualizer;
13
14
  table: MRT_TableInstance<TData>;
14
15
  }
@@ -17,7 +18,7 @@ export const MRT_TableHead = <TData extends MRT_RowData>({
17
18
  columnVirtualizer,
18
19
  table,
19
20
  ...rest
20
- }: Props<TData>) => {
21
+ }: MRT_TableHeadProps<TData>) => {
21
22
  const {
22
23
  getHeaderGroups,
23
24
  getSelectedRowModel,
@@ -18,7 +18,8 @@ import {
18
18
  import { getCommonMRTCellStyles, getMRTTheme } from '../../utils/style.utils';
19
19
  import { parseFromValuesOrFunc } from '../../utils/utils';
20
20
 
21
- interface Props<TData extends MRT_RowData> extends TableCellProps {
21
+ export interface MRT_TableHeadCellProps<TData extends MRT_RowData>
22
+ extends TableCellProps {
22
23
  columnVirtualizer?: MRT_ColumnVirtualizer;
23
24
  header: MRT_Header<TData>;
24
25
  staticColumnIndex?: number;
@@ -31,7 +32,7 @@ export const MRT_TableHeadCell = <TData extends MRT_RowData>({
31
32
  staticColumnIndex,
32
33
  table,
33
34
  ...rest
34
- }: Props<TData>) => {
35
+ }: MRT_TableHeadCellProps<TData>) => {
35
36
  const theme = useTheme();
36
37
  const {
37
38
  getState,
@@ -267,9 +268,6 @@ export const MRT_TableHeadCell = <TData extends MRT_RowData>({
267
268
  ? 'nowrap'
268
269
  : 'normal',
269
270
  }}
270
- title={
271
- columnDefType === 'data' ? columnDef.header : undefined
272
- }
273
271
  >
274
272
  {HeaderElement}
275
273
  </Box>
@@ -10,7 +10,9 @@ import { getCommonTooltipProps } from '../../utils/style.utils';
10
10
  import { parseFromValuesOrFunc } from '../../utils/utils';
11
11
  import { MRT_ColumnActionMenu } from '../menus/MRT_ColumnActionMenu';
12
12
 
13
- interface Props<TData extends MRT_RowData> extends IconButtonProps {
13
+ export interface MRT_TableHeadCellColumnActionsButtonProps<
14
+ TData extends MRT_RowData,
15
+ > extends IconButtonProps {
14
16
  header: MRT_Header<TData>;
15
17
  table: MRT_TableInstance<TData>;
16
18
  }
@@ -21,7 +23,7 @@ export const MRT_TableHeadCellColumnActionsButton = <
21
23
  header,
22
24
  table,
23
25
  ...rest
24
- }: Props<TData>) => {
26
+ }: MRT_TableHeadCellColumnActionsButtonProps<TData>) => {
25
27
  const {
26
28
  options: {
27
29
  icons: { MoreVertIcon },
@@ -9,7 +9,9 @@ import { MRT_FilterRangeFields } from '../inputs/MRT_FilterRangeFields';
9
9
  import { MRT_FilterRangeSlider } from '../inputs/MRT_FilterRangeSlider';
10
10
  import { MRT_FilterTextField } from '../inputs/MRT_FilterTextField';
11
11
 
12
- interface Props<TData extends MRT_RowData> extends CollapseProps {
12
+ export interface MRT_TableHeadCellFilterContainerProps<
13
+ TData extends MRT_RowData,
14
+ > extends CollapseProps {
13
15
  header: MRT_Header<TData>;
14
16
  table: MRT_TableInstance<TData>;
15
17
  }
@@ -18,7 +20,7 @@ export const MRT_TableHeadCellFilterContainer = <TData extends MRT_RowData>({
18
20
  header,
19
21
  table,
20
22
  ...rest
21
- }: Props<TData>) => {
23
+ }: MRT_TableHeadCellFilterContainerProps<TData>) => {
22
24
  const {
23
25
  getState,
24
26
  options: { columnFilterDisplayMode },
@@ -12,7 +12,8 @@ import {
12
12
  } from '../../types';
13
13
  import { parseFromValuesOrFunc } from '../../utils/utils';
14
14
 
15
- interface Props<TData extends MRT_RowData> extends IconButtonProps {
15
+ export interface MRT_TableHeadCellFilterLabelProps<TData extends MRT_RowData>
16
+ extends IconButtonProps {
16
17
  header: MRT_Header<TData>;
17
18
  table: MRT_TableInstance<TData>;
18
19
  }
@@ -21,7 +22,7 @@ export const MRT_TableHeadCellFilterLabel = <TData extends MRT_RowData = {}>({
21
22
  header,
22
23
  table,
23
24
  ...rest
24
- }: Props<TData>) => {
25
+ }: MRT_TableHeadCellFilterLabelProps<TData>) => {
25
26
  const {
26
27
  options: {
27
28
  columnFilterDisplayMode,
@@ -9,7 +9,8 @@ import { reorderColumn } from '../../utils/column.utils';
9
9
  import { parseFromValuesOrFunc } from '../../utils/utils';
10
10
  import { MRT_GrabHandleButton } from '../buttons/MRT_GrabHandleButton';
11
11
 
12
- interface Props<TData extends MRT_RowData> extends IconButtonProps {
12
+ export interface MRT_TableHeadCellGrabHandleProps<TData extends MRT_RowData>
13
+ extends IconButtonProps {
13
14
  column: MRT_Column<TData>;
14
15
  table: MRT_TableInstance<TData>;
15
16
  tableHeadCellRef: RefObject<HTMLTableCellElement>;
@@ -20,7 +21,7 @@ export const MRT_TableHeadCellGrabHandle = <TData extends MRT_RowData>({
20
21
  table,
21
22
  tableHeadCellRef,
22
23
  ...rest
23
- }: Props<TData>) => {
24
+ }: MRT_TableHeadCellGrabHandleProps<TData>) => {
24
25
  const {
25
26
  getState,
26
27
  options: { enableColumnOrdering, muiColumnDragHandleProps },
@@ -73,7 +74,7 @@ export const MRT_TableHeadCellGrabHandle = <TData extends MRT_RowData>({
73
74
 
74
75
  return (
75
76
  <MRT_GrabHandleButton
76
- iconButtonProps={iconButtonProps}
77
+ {...iconButtonProps}
77
78
  onDragEnd={handleDragEnd}
78
79
  onDragStart={handleDragStart}
79
80
  table={table}
@@ -7,7 +7,8 @@ import {
7
7
  } from '../../types';
8
8
  import { parseFromValuesOrFunc } from '../../utils/utils';
9
9
 
10
- interface Props<TData extends MRT_RowData> extends DividerProps {
10
+ export interface MRT_TableHeadCellResizeHandleProps<TData extends MRT_RowData>
11
+ extends DividerProps {
11
12
  header: MRT_Header<TData>;
12
13
  table: MRT_TableInstance<TData>;
13
14
  }
@@ -16,7 +17,7 @@ export const MRT_TableHeadCellResizeHandle = <TData extends MRT_RowData>({
16
17
  header,
17
18
  table,
18
19
  ...rest
19
- }: Props<TData>) => {
20
+ }: MRT_TableHeadCellResizeHandleProps<TData>) => {
20
21
  const {
21
22
  getState,
22
23
  options: { columnResizeDirection, columnResizeMode },
@@ -10,7 +10,8 @@ import {
10
10
  } from '../../types';
11
11
  import { parseFromValuesOrFunc } from '../../utils/utils';
12
12
 
13
- interface Props<TData extends MRT_RowData> extends TableSortLabelProps {
13
+ export interface MRT_TableHeadCellSortLabelProps<TData extends MRT_RowData>
14
+ extends TableSortLabelProps {
14
15
  header: MRT_Header<TData>;
15
16
  table: MRT_TableInstance<TData>;
16
17
  }
@@ -19,7 +20,7 @@ export const MRT_TableHeadCellSortLabel = <TData extends MRT_RowData>({
19
20
  header,
20
21
  table,
21
22
  ...rest
22
- }: Props<TData>) => {
23
+ }: MRT_TableHeadCellSortLabelProps<TData>) => {
23
24
  const {
24
25
  getState,
25
26
  options: {
@@ -12,7 +12,8 @@ import {
12
12
  import { getMRTTheme } from '../../utils/style.utils';
13
13
  import { parseFromValuesOrFunc } from '../../utils/utils';
14
14
 
15
- interface Props<TData extends MRT_RowData> extends TableRowProps {
15
+ export interface MRT_TableHeadRowProps<TData extends MRT_RowData>
16
+ extends TableRowProps {
16
17
  columnVirtualizer?: MRT_ColumnVirtualizer;
17
18
  headerGroup: MRT_HeaderGroup<TData>;
18
19
  table: MRT_TableInstance<TData>;
@@ -23,7 +24,7 @@ export const MRT_TableHeadRow = <TData extends MRT_RowData>({
23
24
  headerGroup,
24
25
  table,
25
26
  ...rest
26
- }: Props<TData>) => {
27
+ }: MRT_TableHeadRowProps<TData>) => {
27
28
  const {
28
29
  options: { enableStickyHeader, layoutMode, muiTableHeadRowProps },
29
30
  } = table;
@@ -14,7 +14,8 @@ import {
14
14
  } from '../../types';
15
15
  import { getValueAndLabel, parseFromValuesOrFunc } from '../../utils/utils';
16
16
 
17
- interface Props<TData extends MRT_RowData> extends TextFieldProps<'standard'> {
17
+ export interface MRT_EditCellTextFieldProps<TData extends MRT_RowData>
18
+ extends TextFieldProps<'standard'> {
18
19
  cell: MRT_Cell<TData>;
19
20
  table: MRT_TableInstance<TData>;
20
21
  }
@@ -23,7 +24,7 @@ export const MRT_EditCellTextField = <TData extends MRT_RowData>({
23
24
  cell,
24
25
  table,
25
26
  ...rest
26
- }: Props<TData>) => {
27
+ }: MRT_EditCellTextFieldProps<TData>) => {
27
28
  const {
28
29
  getState,
29
30
  options: { createDisplayMode, editDisplayMode, muiEditTextFieldProps },
@@ -9,7 +9,8 @@ import {
9
9
  import { getCommonTooltipProps } from '../../utils/style.utils';
10
10
  import { parseFromValuesOrFunc } from '../../utils/utils';
11
11
 
12
- interface Props<TData extends MRT_RowData> extends CheckboxProps {
12
+ export interface MRT_FilterCheckboxProps<TData extends MRT_RowData>
13
+ extends CheckboxProps {
13
14
  column: MRT_Column<TData>;
14
15
  table: MRT_TableInstance<TData>;
15
16
  }
@@ -18,7 +19,7 @@ export const MRT_FilterCheckbox = <TData extends MRT_RowData>({
18
19
  column,
19
20
  table,
20
21
  ...rest
21
- }: Props<TData>) => {
22
+ }: MRT_FilterCheckboxProps<TData>) => {
22
23
  const {
23
24
  getState,
24
25
  options: { localization, muiFilterCheckboxProps },
@@ -7,7 +7,8 @@ import {
7
7
  } from '../../types';
8
8
  import { parseFromValuesOrFunc } from '../../utils/utils';
9
9
 
10
- interface Props<TData extends MRT_RowData> extends BoxProps {
10
+ export interface MRT_FilterRangeFieldsProps<TData extends MRT_RowData>
11
+ extends BoxProps {
11
12
  header: MRT_Header<TData>;
12
13
  table: MRT_TableInstance<TData>;
13
14
  }
@@ -16,7 +17,7 @@ export const MRT_FilterRangeFields = <TData extends MRT_RowData>({
16
17
  header,
17
18
  table,
18
19
  ...rest
19
- }: Props<TData>) => {
20
+ }: MRT_FilterRangeFieldsProps<TData>) => {
20
21
  return (
21
22
  <Box
22
23
  {...rest}
@@ -9,7 +9,8 @@ import {
9
9
  } from '../../types';
10
10
  import { parseFromValuesOrFunc } from '../../utils/utils';
11
11
 
12
- interface Props<TData extends MRT_RowData> extends SliderProps {
12
+ export interface MRT_FilterRangeSliderProps<TData extends MRT_RowData>
13
+ extends SliderProps {
13
14
  header: MRT_Header<TData>;
14
15
  table: MRT_TableInstance<TData>;
15
16
  }
@@ -18,7 +19,7 @@ export const MRT_FilterRangeSlider = <TData extends MRT_RowData>({
18
19
  header,
19
20
  table,
20
21
  ...rest
21
- }: Props<TData>) => {
22
+ }: MRT_FilterRangeSliderProps<TData>) => {
22
23
  const {
23
24
  options: { enableColumnFilterModes, localization, muiFilterSliderProps },
24
25
  refs: { filterInputRefs },
@@ -30,6 +30,7 @@ import {
30
30
  type TimePickerProps,
31
31
  } from '@mui/x-date-pickers/TimePicker';
32
32
  import {
33
+ type DropdownOption,
33
34
  type MRT_Header,
34
35
  type MRT_RowData,
35
36
  type MRT_TableInstance,
@@ -37,7 +38,8 @@ import {
37
38
  import { getValueAndLabel, parseFromValuesOrFunc } from '../../utils/utils';
38
39
  import { MRT_FilterOptionMenu } from '../menus/MRT_FilterOptionMenu';
39
40
 
40
- interface Props<TData extends MRT_RowData> extends TextFieldProps<'standard'> {
41
+ export interface MRT_FilterTextFieldProps<TData extends MRT_RowData>
42
+ extends TextFieldProps<'standard'> {
41
43
  header: MRT_Header<TData>;
42
44
  rangeFilterIndex?: number;
43
45
  table: MRT_TableInstance<TData>;
@@ -48,7 +50,7 @@ export const MRT_FilterTextField = <TData extends MRT_RowData>({
48
50
  rangeFilterIndex,
49
51
  table,
50
52
  ...rest
51
- }: Props<TData>) => {
53
+ }: MRT_FilterTextFieldProps<TData>) => {
52
54
  const {
53
55
  options: {
54
56
  columnFilterModeOptions,
@@ -159,6 +161,10 @@ export const MRT_FilterTextField = <TData extends MRT_RowData>({
159
161
  ] || ''
160
162
  : (column.getFilterValue() as string) ?? '',
161
163
  );
164
+ const [autocompleteValue, setAutocompleteValue] =
165
+ useState<DropdownOption | null>(
166
+ isAutocompleteFilter ? (filterValue as DropdownOption | null) : null,
167
+ );
162
168
 
163
169
  const handleChangeDebounced = useCallback(
164
170
  debounce(
@@ -194,6 +200,11 @@ export const MRT_FilterTextField = <TData extends MRT_RowData>({
194
200
  textFieldProps?.onChange?.(event);
195
201
  };
196
202
 
203
+ const handleAutocompleteChange = (newValue: DropdownOption) => {
204
+ setAutocompleteValue(newValue);
205
+ handleChange(getValueAndLabel(newValue).value);
206
+ };
207
+
197
208
  const handleClear = () => {
198
209
  if (isMultiSelectFilter) {
199
210
  setFilterValue([]);
@@ -437,9 +448,7 @@ export const MRT_FilterTextField = <TData extends MRT_RowData>({
437
448
  <Autocomplete
438
449
  freeSolo
439
450
  getOptionLabel={(option) => getValueAndLabel(option).label}
440
- onChange={(_e, newValue) =>
441
- handleChange(getValueAndLabel(newValue).value)
442
- }
451
+ onChange={(_e, newValue) => handleAutocompleteChange(newValue)}
443
452
  options={
444
453
  dropdownOptions?.map((option) => getValueAndLabel(option)) ?? []
445
454
  }
@@ -461,7 +470,7 @@ export const MRT_FilterTextField = <TData extends MRT_RowData>({
461
470
  onClick={(e: MouseEvent<HTMLInputElement>) => e.stopPropagation()}
462
471
  />
463
472
  )}
464
- value={filterValue}
473
+ value={autocompleteValue}
465
474
  />
466
475
  ) : (
467
476
  <TextField
@@ -16,14 +16,15 @@ import { type MRT_RowData, type MRT_TableInstance } from '../../types';
16
16
  import { parseFromValuesOrFunc } from '../../utils/utils';
17
17
  import { MRT_FilterOptionMenu } from '../menus/MRT_FilterOptionMenu';
18
18
 
19
- interface Props<TData extends MRT_RowData> extends TextFieldProps<'standard'> {
19
+ export interface MRT_GlobalFilterTextFieldProps<TData extends MRT_RowData>
20
+ extends TextFieldProps<'standard'> {
20
21
  table: MRT_TableInstance<TData>;
21
22
  }
22
23
 
23
24
  export const MRT_GlobalFilterTextField = <TData extends MRT_RowData>({
24
25
  table,
25
26
  ...rest
26
- }: Props<TData>) => {
27
+ }: MRT_GlobalFilterTextFieldProps<TData>) => {
27
28
  const {
28
29
  getState,
29
30
  options: {
@@ -8,11 +8,15 @@ import {
8
8
  type MRT_RowData,
9
9
  type MRT_TableInstance,
10
10
  } from '../../types';
11
- import { getIsRowSelected } from '../../utils/row.utils';
11
+ import {
12
+ getIsRowSelected,
13
+ getMRT_RowSelectionHandler,
14
+ } from '../../utils/row.utils';
12
15
  import { getCommonTooltipProps } from '../../utils/style.utils';
13
16
  import { parseFromValuesOrFunc } from '../../utils/utils';
14
17
 
15
- interface Props<TData extends MRT_RowData> extends CheckboxProps {
18
+ export interface MRT_SelectCheckboxProps<TData extends MRT_RowData>
19
+ extends CheckboxProps {
16
20
  row?: MRT_Row<TData>;
17
21
  staticRowIndex?: number;
18
22
  table: MRT_TableInstance<TData>;
@@ -23,7 +27,7 @@ export const MRT_SelectCheckbox = <TData extends MRT_RowData>({
23
27
  staticRowIndex,
24
28
  table,
25
29
  ...rest
26
- }: Props<TData>) => {
30
+ }: MRT_SelectCheckboxProps<TData>) => {
27
31
  const {
28
32
  getState,
29
33
  options: {
@@ -35,22 +39,12 @@ export const MRT_SelectCheckbox = <TData extends MRT_RowData>({
35
39
  rowPinningDisplayMode,
36
40
  selectAllMode,
37
41
  },
42
+ refs: { lastSelectedRowId },
38
43
  } = table;
39
44
  const { density, isLoading } = getState();
40
45
 
41
46
  const selectAll = !row;
42
47
 
43
- const checkboxProps = {
44
- ...(!row
45
- ? parseFromValuesOrFunc(muiSelectAllCheckboxProps, { table })
46
- : parseFromValuesOrFunc(muiSelectCheckboxProps, {
47
- row,
48
- staticRowIndex,
49
- table,
50
- })),
51
- ...rest,
52
- };
53
-
54
48
  const isStickySelection =
55
49
  enableRowPinning && rowPinningDisplayMode?.includes('select');
56
50
 
@@ -60,26 +54,22 @@ export const MRT_SelectCheckbox = <TData extends MRT_RowData>({
60
54
  : table.getIsAllRowsSelected()
61
55
  : undefined;
62
56
 
63
- const onSelectionChange = (
64
- event: ChangeEvent<HTMLInputElement>,
65
- row: MRT_Row<TData>,
66
- ) => {
67
- if (row.getIsAllSubRowsSelected() && row.getCanSelectSubRows()) {
68
- row.subRows?.forEach((r) => r.toggleSelected(false));
69
- }
70
- row.getToggleSelectedHandler()(event);
57
+ const isChecked = selectAll
58
+ ? allRowsSelected
59
+ : getIsRowSelected({ row, table });
71
60
 
72
- if (isStickySelection) {
73
- row.pin(
74
- !row.getIsPinned() && event.target.checked
75
- ? rowPinningDisplayMode?.includes('bottom')
76
- ? 'bottom'
77
- : 'top'
78
- : false,
79
- );
80
- }
61
+ const checkboxProps = {
62
+ ...(selectAll
63
+ ? parseFromValuesOrFunc(muiSelectAllCheckboxProps, { table })
64
+ : parseFromValuesOrFunc(muiSelectCheckboxProps, {
65
+ row,
66
+ table,
67
+ })),
68
+ ...rest,
81
69
  };
82
70
 
71
+ const onSelectionChange = getMRT_RowSelectionHandler();
72
+
83
73
  const onSelectAllChange = (event: ChangeEvent<HTMLInputElement>) => {
84
74
  selectAllMode === 'all'
85
75
  ? table.getToggleAllRowsSelectedHandler()(event)
@@ -87,13 +77,14 @@ export const MRT_SelectCheckbox = <TData extends MRT_RowData>({
87
77
  if (isStickySelection) {
88
78
  table.setRowPinning({ bottom: [], top: [] });
89
79
  }
80
+ lastSelectedRowId.current = null;
90
81
  };
91
82
 
92
83
  const commonProps = {
93
84
  'aria-label': selectAll
94
85
  ? localization.toggleSelectAll
95
86
  : localization.toggleSelectRow,
96
- checked: selectAll ? allRowsSelected : getIsRowSelected({ row, table }),
87
+ checked: isChecked,
97
88
  disabled:
98
89
  isLoading || (row && !row.getCanSelect()) || row?.id === 'mrt-row-create',
99
90
  inputProps: {
@@ -103,7 +94,9 @@ export const MRT_SelectCheckbox = <TData extends MRT_RowData>({
103
94
  },
104
95
  onChange: (event) => {
105
96
  event.stopPropagation();
106
- row ? onSelectionChange(event, row) : onSelectAllChange(event);
97
+ row
98
+ ? onSelectionChange({ event, row, staticRowIndex, table })
99
+ : onSelectAllChange(event);
107
100
  },
108
101
  size: (density === 'compact' ? 'small' : 'medium') as 'medium' | 'small',
109
102
  ...checkboxProps,
@@ -5,7 +5,8 @@ import ListItemIcon from '@mui/material/ListItemIcon';
5
5
  import MenuItem, { type MenuItemProps } from '@mui/material/MenuItem';
6
6
  import { type MRT_RowData, type MRT_TableInstance } from '../../types';
7
7
 
8
- interface Props<TData extends MRT_RowData> extends MenuItemProps {
8
+ export interface MRT_ActionMenuItemProps<TData extends MRT_RowData>
9
+ extends MenuItemProps {
9
10
  icon: ReactNode;
10
11
  label: string;
11
12
  onOpenSubMenu?: MenuItemProps['onClick'] | MenuItemProps['onMouseEnter'];
@@ -18,7 +19,7 @@ export const MRT_ActionMenuItem = <TData extends MRT_RowData>({
18
19
  onOpenSubMenu,
19
20
  table,
20
21
  ...rest
21
- }: Props<TData>) => {
22
+ }: MRT_ActionMenuItemProps<TData>) => {
22
23
  const {
23
24
  options: {
24
25
  icons: { ArrowRightIcon },
@@ -6,14 +6,15 @@ import { openEditingCell } from '../../utils/cell.utils';
6
6
  import { getMRTTheme } from '../../utils/style.utils';
7
7
  import { parseFromValuesOrFunc } from '../../utils/utils';
8
8
 
9
- interface Props<TData extends MRT_RowData> extends Partial<MenuProps> {
9
+ export interface MRT_CellActionMenuProps<TData extends MRT_RowData>
10
+ extends Partial<MenuProps> {
10
11
  table: MRT_TableInstance<TData>;
11
12
  }
12
13
 
13
14
  export const MRT_CellActionMenu = <TData extends MRT_RowData>({
14
15
  table,
15
16
  ...rest
16
- }: Props<TData>) => {
17
+ }: MRT_CellActionMenuProps<TData>) => {
17
18
  const {
18
19
  getState,
19
20
  options: {
@@ -46,8 +47,8 @@ export const MRT_CellActionMenu = <TData extends MRT_RowData>({
46
47
  parseFromValuesOrFunc(columnDef.enableClickToCopy, cell) ===
47
48
  'context-menu') && (
48
49
  <MRT_ActionMenuItem
49
- key={'mrt-copy'}
50
50
  icon={<ContentCopy />}
51
+ key={'mrt-copy'}
51
52
  label={localization.copy}
52
53
  onClick={(event) => {
53
54
  event.stopPropagation();
@@ -59,8 +60,8 @@ export const MRT_CellActionMenu = <TData extends MRT_RowData>({
59
60
  ),
60
61
  parseFromValuesOrFunc(enableEditing, row) && editDisplayMode === 'cell' && (
61
62
  <MRT_ActionMenuItem
62
- key={'mrt-edit'}
63
63
  icon={<EditIcon />}
64
+ key={'mrt-edit'}
64
65
  label={localization.edit}
65
66
  onClick={() => {
66
67
  openEditingCell({ cell, table });
@@ -1,8 +1,8 @@
1
1
  import { type MouseEvent, useState } from 'react';
2
2
  import Menu, { type MenuProps } from '@mui/material/Menu';
3
3
  import { useTheme } from '@mui/material/styles';
4
- import { MRT_FilterOptionMenu } from './MRT_FilterOptionMenu';
5
4
  import { MRT_ActionMenuItem } from './MRT_ActionMenuItem';
5
+ import { MRT_FilterOptionMenu } from './MRT_FilterOptionMenu';
6
6
  import {
7
7
  type MRT_Header,
8
8
  type MRT_RowData,
@@ -10,7 +10,8 @@ import {
10
10
  } from '../../types';
11
11
  import { getMRTTheme } from '../../utils/style.utils';
12
12
 
13
- interface Props<TData extends MRT_RowData> extends Partial<MenuProps> {
13
+ export interface MRT_ColumnActionMenuProps<TData extends MRT_RowData>
14
+ extends Partial<MenuProps> {
14
15
  anchorEl: HTMLElement | null;
15
16
  header: MRT_Header<TData>;
16
17
  setAnchorEl: (anchorEl: HTMLElement | null) => void;
@@ -23,10 +24,10 @@ export const MRT_ColumnActionMenu = <TData extends MRT_RowData>({
23
24
  setAnchorEl,
24
25
  table,
25
26
  ...rest
26
- }: Props<TData>) => {
27
+ }: MRT_ColumnActionMenuProps<TData>) => {
27
28
  const {
28
- getState,
29
29
  getAllLeafColumns,
30
+ getState,
30
31
  options: {
31
32
  columnFilterDisplayMode,
32
33
  columnFilterModeOptions,
@@ -106,7 +106,8 @@ const emptyModes = ['empty', 'notEmpty'];
106
106
  const arrModes = ['arrIncludesSome', 'arrIncludesAll', 'arrIncludes'];
107
107
  const rangeVariants = ['range-slider', 'date-range', 'datetime-range', 'range'];
108
108
 
109
- interface Props<TData extends MRT_RowData> extends Partial<MenuProps> {
109
+ export interface MRT_FilterOptionMenuProps<TData extends MRT_RowData>
110
+ extends Partial<MenuProps> {
110
111
  anchorEl: HTMLElement | null;
111
112
  header?: MRT_Header<TData>;
112
113
  onSelect?: () => void;
@@ -123,7 +124,7 @@ export const MRT_FilterOptionMenu = <TData extends MRT_RowData>({
123
124
  setFilterValue,
124
125
  table,
125
126
  ...rest
126
- }: Props<TData>) => {
127
+ }: MRT_FilterOptionMenuProps<TData>) => {
127
128
  const {
128
129
  getState,
129
130
  options: {
@@ -10,7 +10,8 @@ import {
10
10
  import { getMRTTheme } from '../../utils/style.utils';
11
11
  import { parseFromValuesOrFunc } from '../../utils/utils';
12
12
 
13
- interface Props<TData extends MRT_RowData> extends Partial<MenuProps> {
13
+ export interface MRT_RowActionMenuProps<TData extends MRT_RowData>
14
+ extends Partial<MenuProps> {
14
15
  anchorEl: HTMLElement | null;
15
16
  handleEdit: (event: MouseEvent) => void;
16
17
  row: MRT_Row<TData>;
@@ -27,7 +28,7 @@ export const MRT_RowActionMenu = <TData extends MRT_RowData>({
27
28
  staticRowIndex,
28
29
  table,
29
30
  ...rest
30
- }: Props<TData>) => {
31
+ }: MRT_RowActionMenuProps<TData>) => {
31
32
  const {
32
33
  getState,
33
34
  options: {