material-react-table 2.10.0 → 2.11.1

Sign up to get free protection for your applications and to get access to all the features.
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 +213 -154
  4. package/dist/index.esm.js.map +1 -1
  5. package/dist/index.js +213 -151
  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 +28 -35
  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 +196 -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,
@@ -136,8 +129,8 @@ export const MRT_SelectCheckbox = <TData extends MRT_RowData>({
136
129
  ) : (
137
130
  <Checkbox
138
131
  indeterminate={
139
- selectAll
140
- ? table.getIsSomeRowsSelected() && !allRowsSelected
132
+ !isChecked && selectAll
133
+ ? table.getIsSomeRowsSelected()
141
134
  : row?.getIsSomeSelected() && row.getCanSelectSubRows()
142
135
  }
143
136
  {...commonProps}
@@ -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: {