material-react-table 1.0.0-beta.1 → 1.0.0-beta.12

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 (105) hide show
  1. package/README.md +20 -20
  2. package/dist/cjs/MaterialReactTable.d.ts +100 -21
  3. package/dist/cjs/_locales/en.d.ts +2 -0
  4. package/dist/cjs/_locales/es.d.ts +2 -0
  5. package/dist/cjs/body/MRT_EditRowModal.d.ts +0 -1
  6. package/dist/cjs/body/MRT_TableBody.d.ts +1 -2
  7. package/dist/cjs/body/MRT_TableBodyCellValue.d.ts +2 -2
  8. package/dist/cjs/buttons/MRT_ColumnPinningButtons.d.ts +0 -1
  9. package/dist/cjs/buttons/MRT_EditActionButtons.d.ts +0 -1
  10. package/dist/cjs/buttons/MRT_FullScreenToggleButton.d.ts +0 -1
  11. package/dist/cjs/buttons/MRT_ShowHideColumnsButton.d.ts +0 -1
  12. package/dist/cjs/buttons/MRT_ToggleDensePaddingButton.d.ts +0 -1
  13. package/dist/cjs/buttons/MRT_ToggleFiltersButton.d.ts +0 -1
  14. package/dist/cjs/buttons/MRT_ToggleGlobalFilterButton.d.ts +0 -1
  15. package/dist/cjs/column.utils.d.ts +12 -1
  16. package/dist/cjs/index.d.ts +4 -3
  17. package/dist/cjs/index.js +248 -195
  18. package/dist/cjs/index.js.map +1 -1
  19. package/dist/cjs/inputs/MRT_EditCellTextField.d.ts +0 -1
  20. package/dist/cjs/inputs/MRT_GlobalFilterTextField.d.ts +0 -1
  21. package/dist/cjs/menus/MRT_FilterOptionMenu.d.ts +3 -4
  22. package/dist/cjs/menus/MRT_ShowHideColumnsMenu.d.ts +0 -1
  23. package/dist/cjs/table/MRT_Table.d.ts +1 -2
  24. package/dist/cjs/table/MRT_TableRoot.d.ts +250 -3
  25. package/dist/cjs/toolbar/MRT_TablePagination.d.ts +3 -4
  26. package/dist/cjs/toolbar/MRT_ToolbarAlertBanner.d.ts +1 -1
  27. package/dist/cjs/toolbar/MRT_ToolbarInternalButtons.d.ts +3 -4
  28. package/dist/cjs/toolbar/MRT_TopToolbar.d.ts +1 -0
  29. package/dist/en.cjs +90 -0
  30. package/dist/en.cjs.d.ts +2 -0
  31. package/dist/en.cjs.map +1 -0
  32. package/dist/en.esm.d.ts +2 -0
  33. package/dist/en.esm.js +86 -0
  34. package/dist/en.esm.js.map +1 -0
  35. package/dist/esm/MaterialReactTable.d.ts +100 -21
  36. package/dist/esm/_locales/en.d.ts +2 -0
  37. package/dist/esm/_locales/es.d.ts +2 -0
  38. package/dist/esm/body/MRT_EditRowModal.d.ts +0 -1
  39. package/dist/esm/body/MRT_TableBody.d.ts +1 -2
  40. package/dist/esm/body/MRT_TableBodyCellValue.d.ts +2 -2
  41. package/dist/esm/buttons/MRT_ColumnPinningButtons.d.ts +0 -1
  42. package/dist/esm/buttons/MRT_EditActionButtons.d.ts +0 -1
  43. package/dist/esm/buttons/MRT_FullScreenToggleButton.d.ts +0 -1
  44. package/dist/esm/buttons/MRT_ShowHideColumnsButton.d.ts +0 -1
  45. package/dist/esm/buttons/MRT_ToggleDensePaddingButton.d.ts +0 -1
  46. package/dist/esm/buttons/MRT_ToggleFiltersButton.d.ts +0 -1
  47. package/dist/esm/buttons/MRT_ToggleGlobalFilterButton.d.ts +0 -1
  48. package/dist/esm/column.utils.d.ts +12 -1
  49. package/dist/esm/index.d.ts +4 -3
  50. package/dist/esm/inputs/MRT_EditCellTextField.d.ts +0 -1
  51. package/dist/esm/inputs/MRT_GlobalFilterTextField.d.ts +0 -1
  52. package/dist/esm/material-react-table.esm.js +249 -198
  53. package/dist/esm/material-react-table.esm.js.map +1 -1
  54. package/dist/esm/menus/MRT_FilterOptionMenu.d.ts +3 -4
  55. package/dist/esm/menus/MRT_ShowHideColumnsMenu.d.ts +0 -1
  56. package/dist/esm/table/MRT_Table.d.ts +1 -2
  57. package/dist/esm/table/MRT_TableRoot.d.ts +250 -3
  58. package/dist/esm/toolbar/MRT_TablePagination.d.ts +3 -4
  59. package/dist/esm/toolbar/MRT_ToolbarAlertBanner.d.ts +1 -1
  60. package/dist/esm/toolbar/MRT_ToolbarInternalButtons.d.ts +3 -4
  61. package/dist/esm/toolbar/MRT_TopToolbar.d.ts +1 -0
  62. package/dist/index.d.ts +51 -43
  63. package/package.json +7 -6
  64. package/src/MaterialReactTable.tsx +105 -24
  65. package/src/_locales/de.ts +0 -0
  66. package/src/{localization.ts → _locales/en.ts} +4 -82
  67. package/src/_locales/es.ts +86 -0
  68. package/src/_locales/fr.ts +0 -0
  69. package/src/_locales/hi.ts +0 -0
  70. package/src/_locales/id.ts +0 -0
  71. package/src/_locales/ja.ts +0 -0
  72. package/src/_locales/nl.ts +0 -0
  73. package/src/_locales/pt.ts +0 -0
  74. package/src/_locales/ru.ts +0 -0
  75. package/src/_locales/uk.ts +0 -0
  76. package/src/_locales/vi.ts +0 -0
  77. package/src/_locales/zh.ts +0 -0
  78. package/src/body/MRT_TableBody.tsx +54 -30
  79. package/src/body/MRT_TableBodyCell.tsx +12 -59
  80. package/src/body/MRT_TableBodyCellValue.tsx +7 -2
  81. package/src/body/MRT_TableBodyRowGrabHandle.tsx +5 -8
  82. package/src/buttons/MRT_GrabHandleButton.tsx +2 -2
  83. package/src/buttons/MRT_ToggleGlobalFilterButton.tsx +7 -2
  84. package/src/column.utils.ts +72 -0
  85. package/src/footer/MRT_TableFooter.tsx +3 -2
  86. package/src/footer/MRT_TableFooterCell.tsx +5 -15
  87. package/src/head/MRT_TableHead.tsx +10 -2
  88. package/src/head/MRT_TableHeadCell.tsx +9 -50
  89. package/src/head/MRT_TableHeadCellFilterLabel.tsx +7 -7
  90. package/src/head/MRT_TableHeadCellGrabHandle.tsx +5 -12
  91. package/src/index.tsx +6 -3
  92. package/src/inputs/MRT_FilterTextField.tsx +12 -4
  93. package/src/inputs/MRT_GlobalFilterTextField.tsx +18 -5
  94. package/src/menus/MRT_FilterOptionMenu.tsx +19 -2
  95. package/src/table/MRT_Table.tsx +3 -4
  96. package/src/table/MRT_TableContainer.tsx +2 -11
  97. package/src/table/MRT_TablePaper.tsx +34 -20
  98. package/src/table/MRT_TableRoot.tsx +34 -11
  99. package/src/toolbar/MRT_BottomToolbar.tsx +9 -3
  100. package/src/toolbar/MRT_TablePagination.tsx +8 -5
  101. package/src/toolbar/MRT_ToolbarAlertBanner.tsx +7 -1
  102. package/src/toolbar/MRT_ToolbarInternalButtons.tsx +8 -4
  103. package/src/toolbar/MRT_TopToolbar.tsx +8 -1
  104. package/dist/cjs/localization.d.ts +0 -82
  105. package/dist/esm/localization.d.ts +0 -82
@@ -1,6 +1,5 @@
1
1
  import React, {
2
2
  Dispatch,
3
- DragEvent,
4
3
  MutableRefObject,
5
4
  ReactNode,
6
5
  SetStateAction,
@@ -45,12 +44,96 @@ import type { Options as VirtualizerOptions, VirtualItem } from 'react-virtual';
45
44
  import { MRT_AggregationFns } from './aggregationFns';
46
45
  import { MRT_Default_Icons, MRT_Icons } from './icons';
47
46
  import { MRT_FilterFns } from './filterFns';
48
- import { MRT_Localization, MRT_DefaultLocalization_EN } from './localization';
47
+ import { MRT_Localization_EN } from './_locales/en';
49
48
  import { MRT_SortingFns } from './sortingFns';
50
49
  import { MRT_TableRoot } from './table/MRT_TableRoot';
51
50
 
52
51
  type LiteralUnion<T extends U, U = string> = T | (U & Record<never, never>);
53
52
 
53
+ export interface MRT_Localization {
54
+ actions: string;
55
+ and: string;
56
+ cancel: string;
57
+ changeFilterMode: string;
58
+ changeSearchMode: string;
59
+ clearFilter: string;
60
+ clearSearch: string;
61
+ clearSort: string;
62
+ clickToCopy: string;
63
+ columnActions: string;
64
+ copiedToClipboard: string;
65
+ dropToGroupBy: string;
66
+ edit: string;
67
+ expand: string;
68
+ expandAll: string;
69
+ filterArrIncludes: string;
70
+ filterArrIncludesAll: string;
71
+ filterArrIncludesSome: string;
72
+ filterBetween: string;
73
+ filterBetweenInclusive: string;
74
+ filterByColumn: string;
75
+ filterContains: string;
76
+ filterEmpty: string;
77
+ filterEndsWith: string;
78
+ filterEquals: string;
79
+ filterEqualsString: string;
80
+ filterFuzzy: string;
81
+ filterGreaterThan: string;
82
+ filterGreaterThanOrEqualTo: string;
83
+ filterInNumberRange: string;
84
+ filterIncludesString: string;
85
+ filterIncludesStringSensitive: string;
86
+ filterLessThan: string;
87
+ filterLessThanOrEqualTo: string;
88
+ filterMode: string;
89
+ filterNotEmpty: string;
90
+ filterNotEquals: string;
91
+ filterStartsWith: string;
92
+ filterWeakEquals: string;
93
+ filteringByColumn: string;
94
+ grab: string;
95
+ groupByColumn: string;
96
+ groupedBy: string;
97
+ hideAll: string;
98
+ hideColumn: string;
99
+ max: string;
100
+ min: string;
101
+ move: string;
102
+ noRecordsToDisplay: string;
103
+ noResultsFound: string;
104
+ or: string;
105
+ pinToLeft: string;
106
+ pinToRight: string;
107
+ resetColumnSize: string;
108
+ resetOrder: string;
109
+ rowActions: string;
110
+ rowNumber: string;
111
+ rowNumbers: string;
112
+ save: string;
113
+ search: string;
114
+ select: string;
115
+ selectedCountOfRowCountRowsSelected: string;
116
+ showAll: string;
117
+ showAllColumns: string;
118
+ showHideColumns: string;
119
+ showHideFilters: string;
120
+ showHideSearch: string;
121
+ sortByColumnAsc: string;
122
+ sortByColumnDesc: string;
123
+ sortedByColumnAsc: string;
124
+ sortedByColumnDesc: string;
125
+ thenBy: string;
126
+ toggleDensity: string;
127
+ toggleFullScreen: string;
128
+ toggleSelectAll: string;
129
+ toggleSelectRow: string;
130
+ toggleVisibility: string;
131
+ ungroupByColumn: string;
132
+ unpin: string;
133
+ unpinAll: string;
134
+ unsorted: string;
135
+ }
136
+
54
137
  export interface MRT_RowModel<TData extends Record<string, any> = {}> {
55
138
  flatRows: MRT_Row<TData>[];
56
139
  rows: MRT_Row<TData>[];
@@ -101,6 +184,7 @@ export type MRT_TableInstance<TData extends Record<string, any> = {}> = Omit<
101
184
  filterInputRefs: MutableRefObject<Record<string, HTMLInputElement>>;
102
185
  searchInputRef: MutableRefObject<HTMLInputElement>;
103
186
  tableContainerRef: MutableRefObject<HTMLDivElement>;
187
+ tablePaperRef: MutableRefObject<HTMLDivElement>;
104
188
  topToolbarRef: MutableRefObject<HTMLDivElement>;
105
189
  };
106
190
  setColumnFilterFns: Dispatch<
@@ -314,10 +398,14 @@ export type MRT_ColumnDef<TData extends Record<string, any> = {}> = Omit<
314
398
  | TableCellProps
315
399
  | (({
316
400
  cell,
401
+ column,
402
+ row,
317
403
  table,
318
404
  }: {
319
- table: MRT_TableInstance<TData>;
320
405
  cell: MRT_Cell<TData>;
406
+ column: MRT_Column<TData>;
407
+ row: MRT_Row<TData>;
408
+ table: MRT_TableInstance<TData>;
321
409
  }) => TableCellProps);
322
410
  muiTableFooterCellProps?:
323
411
  | TableCellProps
@@ -541,6 +629,7 @@ export type MaterialReactTableProps<TData extends Record<string, any> = {}> =
541
629
  muiExpandButtonProps?:
542
630
  | IconButtonProps
543
631
  | (({
632
+ row,
544
633
  table,
545
634
  }: {
546
635
  table: MRT_TableInstance<TData>;
@@ -612,11 +701,15 @@ export type MaterialReactTableProps<TData extends Record<string, any> = {}> =
612
701
  muiTableBodyCellSkeletonProps?:
613
702
  | SkeletonProps
614
703
  | (({
615
- table,
616
704
  cell,
705
+ column,
706
+ row,
707
+ table,
617
708
  }: {
618
- table: MRT_TableInstance<TData>;
619
709
  cell: MRT_Cell<TData>;
710
+ column: MRT_Column<TData>;
711
+ row: MRT_Row<TData>;
712
+ table: MRT_TableInstance<TData>;
620
713
  }) => SkeletonProps);
621
714
  muiTableBodyProps?:
622
715
  | TableBodyProps
@@ -748,15 +841,6 @@ export type MaterialReactTableProps<TData extends Record<string, any> = {}> =
748
841
  muiTopToolbarProps?:
749
842
  | ToolbarProps
750
843
  | (({ table }: { table: MRT_TableInstance<TData> }) => ToolbarProps);
751
- onColumnDrop?: ({
752
- event,
753
- draggedColumn,
754
- targetColumn,
755
- }: {
756
- event: DragEvent<HTMLButtonElement>;
757
- draggedColumn: MRT_Column<TData>;
758
- targetColumn: MRT_Column<TData> | { id: string } | null;
759
- }) => void;
760
844
  onDensityChange?: OnChangeFn<boolean>;
761
845
  onDraggingColumnChange?: OnChangeFn<MRT_Column<TData> | null>;
762
846
  onDraggingRowChange?: OnChangeFn<MRT_Row<TData> | null>;
@@ -778,15 +862,6 @@ export type MaterialReactTableProps<TData extends Record<string, any> = {}> =
778
862
  onHoveredColumnChange?: OnChangeFn<MRT_Column<TData> | null>;
779
863
  onHoveredRowChange?: OnChangeFn<MRT_Row<TData> | null>;
780
864
  onIsFullScreenChange?: OnChangeFn<boolean>;
781
- onRowDrop?: ({
782
- event,
783
- draggedRow,
784
- targetRow,
785
- }: {
786
- event: DragEvent<HTMLButtonElement>;
787
- draggedRow: MRT_Row<TData>;
788
- targetRow: MRT_Row<TData> | { id: string } | null;
789
- }) => void;
790
865
  onShowAlertBannerChange?: OnChangeFn<boolean>;
791
866
  onShowFiltersChange?: OnChangeFn<boolean>;
792
867
  onShowGlobalFilterChange?: OnChangeFn<boolean>;
@@ -796,6 +871,9 @@ export type MaterialReactTableProps<TData extends Record<string, any> = {}> =
796
871
  positionPagination?: 'bottom' | 'top' | 'both';
797
872
  positionToolbarAlertBanner?: 'bottom' | 'top' | 'none';
798
873
  positionToolbarDropZone?: 'bottom' | 'top' | 'none' | 'both';
874
+ renderBottomToolbar?:
875
+ | ReactNode
876
+ | (({ table }: { table: MRT_TableInstance<TData> }) => ReactNode);
799
877
  renderBottomToolbarCustomActions?: ({
800
878
  table,
801
879
  }: {
@@ -860,6 +938,9 @@ export type MaterialReactTableProps<TData extends Record<string, any> = {}> =
860
938
  }: {
861
939
  table: MRT_TableInstance<TData>;
862
940
  }) => ReactNode;
941
+ renderTopToolbar?:
942
+ | ReactNode
943
+ | (({ table }: { table: MRT_TableInstance<TData> }) => ReactNode);
863
944
  renderTopToolbarCustomActions?: ({
864
945
  table,
865
946
  }: {
@@ -989,7 +1070,7 @@ export default <TData extends Record<string, any> = {}>({
989
1070
  enableTopToolbar={enableTopToolbar}
990
1071
  filterFns={{ ...MRT_FilterFns, ...filterFns }}
991
1072
  icons={{ ...MRT_Default_Icons, ...icons }}
992
- localization={{ ...MRT_DefaultLocalization_EN, ...localization }}
1073
+ localization={{ ...MRT_Localization_EN, ...localization }}
993
1074
  positionActionsColumn={positionActionsColumn}
994
1075
  positionExpandColumn={positionExpandColumn}
995
1076
  positionGlobalFilter={positionGlobalFilter}
File without changes
@@ -1,86 +1,6 @@
1
- export interface MRT_Localization {
2
- actions: string;
3
- and: string;
4
- cancel: string;
5
- changeFilterMode: string;
6
- changeSearchMode: string;
7
- clearFilter: string;
8
- clearSearch: string;
9
- clearSort: string;
10
- clickToCopy: string;
11
- columnActions: string;
12
- copiedToClipboard: string;
13
- dropToGroupBy: string;
14
- edit: string;
15
- expand: string;
16
- expandAll: string;
17
- filterArrIncludes: string;
18
- filterArrIncludesAll: string;
19
- filterArrIncludesSome: string;
20
- filterBetween: string;
21
- filterBetweenInclusive: string;
22
- filterByColumn: string;
23
- filterContains: string;
24
- filterEmpty: string;
25
- filterEndsWith: string;
26
- filterEquals: string;
27
- filterEqualsString: string;
28
- filterFuzzy: string;
29
- filterGreaterThan: string;
30
- filterGreaterThanOrEqualTo: string;
31
- filterInNumberRange: string;
32
- filterIncludesString: string;
33
- filterIncludesStringSensitive: string;
34
- filterLessThan: string;
35
- filterLessThanOrEqualTo: string;
36
- filterMode: string;
37
- filterNotEmpty: string;
38
- filterNotEquals: string;
39
- filterStartsWith: string;
40
- filterWeakEquals: string;
41
- filteringByColumn: string;
42
- grab: string;
43
- groupByColumn: string;
44
- groupedBy: string;
45
- hideAll: string;
46
- hideColumn: string;
47
- max: string;
48
- min: string;
49
- move: string;
50
- or: string;
51
- pinToLeft: string;
52
- pinToRight: string;
53
- resetColumnSize: string;
54
- resetOrder: string;
55
- rowActions: string;
56
- rowNumber: string;
57
- rowNumbers: string;
58
- save: string;
59
- search: string;
60
- select: string;
61
- selectedCountOfRowCountRowsSelected: string;
62
- showAll: string;
63
- showAllColumns: string;
64
- showHideColumns: string;
65
- showHideFilters: string;
66
- showHideSearch: string;
67
- sortByColumnAsc: string;
68
- sortByColumnDesc: string;
69
- sortedByColumnAsc: string;
70
- sortedByColumnDesc: string;
71
- thenBy: string;
72
- toggleDensity: string;
73
- toggleFullScreen: string;
74
- toggleSelectAll: string;
75
- toggleSelectRow: string;
76
- toggleVisibility: string;
77
- ungroupByColumn: string;
78
- unpin: string;
79
- unpinAll: string;
80
- unsorted: string;
81
- }
1
+ import { MRT_Localization } from '../MaterialReactTable';
82
2
 
83
- export const MRT_DefaultLocalization_EN: MRT_Localization = {
3
+ export const MRT_Localization_EN: MRT_Localization = {
84
4
  actions: 'Actions',
85
5
  and: 'and',
86
6
  cancel: 'Cancel',
@@ -129,6 +49,8 @@ export const MRT_DefaultLocalization_EN: MRT_Localization = {
129
49
  max: 'Max',
130
50
  min: 'Min',
131
51
  move: 'Move',
52
+ noRecordsToDisplay: 'No records to display',
53
+ noResultsFound: 'No results found',
132
54
  or: 'or',
133
55
  pinToLeft: 'Pin to left',
134
56
  pinToRight: 'Pin to right',
@@ -0,0 +1,86 @@
1
+ import { MRT_Localization } from '../MaterialReactTable';
2
+
3
+ export const MRT_Localization_ES: MRT_Localization = {
4
+ actions: 'Actions',
5
+ and: 'and',
6
+ cancel: 'Cancel',
7
+ changeFilterMode: 'Change filter mode',
8
+ changeSearchMode: 'Change search mode',
9
+ clearFilter: 'Clear filter',
10
+ clearSearch: 'Clear search',
11
+ clearSort: 'Clear sort',
12
+ clickToCopy: 'Click to copy',
13
+ columnActions: 'Column Actions',
14
+ copiedToClipboard: 'Copied to clipboard',
15
+ dropToGroupBy: 'Drop to group by {column}',
16
+ edit: 'Edit',
17
+ expand: 'Expand',
18
+ expandAll: 'Expand all',
19
+ filterArrIncludes: 'Includes',
20
+ filterArrIncludesAll: 'Includes all',
21
+ filterArrIncludesSome: 'Includes',
22
+ filterBetween: 'Between',
23
+ filterBetweenInclusive: 'Between Inclusive',
24
+ filterByColumn: 'Filter by {column}',
25
+ filterContains: 'Contains',
26
+ filterEmpty: 'Empty',
27
+ filterEndsWith: 'Ends With',
28
+ filterEquals: 'Equals',
29
+ filterEqualsString: 'Equals',
30
+ filterFuzzy: 'Fuzzy',
31
+ filterGreaterThan: 'Greater Than',
32
+ filterGreaterThanOrEqualTo: 'Greater Than Or Equal To',
33
+ filterInNumberRange: 'Between',
34
+ filterIncludesString: 'Contains',
35
+ filterIncludesStringSensitive: 'Contains',
36
+ filterLessThan: 'Less Than',
37
+ filterLessThanOrEqualTo: 'Less Than Or Equal To',
38
+ filterMode: 'Filter Mode: {filterType}',
39
+ filterNotEmpty: 'Not Empty',
40
+ filterNotEquals: 'Not Equals',
41
+ filterStartsWith: 'Starts With',
42
+ filterWeakEquals: 'Equals',
43
+ filteringByColumn: 'Filtering by {column} - {filterType} {filterValue}',
44
+ grab: 'Grab',
45
+ groupByColumn: 'Group by {column}',
46
+ groupedBy: 'Grouped by ',
47
+ hideAll: 'Hide all',
48
+ hideColumn: 'Hide {column} column',
49
+ max: 'Max',
50
+ min: 'Min',
51
+ move: 'Move',
52
+ noRecordsToDisplay: 'No records to display',
53
+ noResultsFound: 'No results found',
54
+ or: 'or',
55
+ pinToLeft: 'Pin to left',
56
+ pinToRight: 'Pin to right',
57
+ resetColumnSize: 'Reset column size',
58
+ resetOrder: 'Reset order',
59
+ rowActions: 'Row Actions',
60
+ rowNumber: '#',
61
+ rowNumbers: 'Row Numbers',
62
+ save: 'Save',
63
+ search: 'Search',
64
+ selectedCountOfRowCountRowsSelected:
65
+ '{selectedCount} of {rowCount} row(s) selected',
66
+ select: 'Select',
67
+ showAll: 'Show all',
68
+ showAllColumns: 'Show all columns',
69
+ showHideColumns: 'Show/Hide columns',
70
+ showHideFilters: 'Show/Hide filters',
71
+ showHideSearch: 'Show/Hide search',
72
+ sortByColumnAsc: 'Sort by {column} ascending',
73
+ sortByColumnDesc: 'Sort by {column} descending',
74
+ sortedByColumnAsc: 'Sorted by {column} ascending',
75
+ sortedByColumnDesc: 'Sorted by {column} descending',
76
+ thenBy: ', then by ',
77
+ toggleDensity: 'Toggle density',
78
+ toggleFullScreen: 'Toggle full screen',
79
+ toggleSelectAll: 'Toggle select all',
80
+ toggleSelectRow: 'Toggle select row',
81
+ toggleVisibility: 'Toggle visibility',
82
+ ungroupByColumn: 'Ungroup by {column}',
83
+ unpin: 'Unpin',
84
+ unpinAll: 'Unpin all',
85
+ unsorted: 'Unsorted',
86
+ };
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,17 +1,16 @@
1
- import React, { FC, RefObject, useMemo } from 'react';
1
+ import React, { FC, useMemo } from 'react';
2
2
  import { useVirtual } from 'react-virtual'; //stuck on v2 for now
3
3
  // import { useVirtualizer, Virtualizer } from '@tanstack/react-virtual';
4
- import { TableBody } from '@mui/material';
4
+ import { TableBody, Typography } from '@mui/material';
5
5
  import { MRT_TableBodyRow } from './MRT_TableBodyRow';
6
6
  import { rankGlobalFuzzy } from '../sortingFns';
7
7
  import type { MRT_Row, MRT_TableInstance } from '..';
8
8
 
9
9
  interface Props {
10
10
  table: MRT_TableInstance;
11
- tableContainerRef: RefObject<HTMLDivElement>;
12
11
  }
13
12
 
14
- export const MRT_TableBody: FC<Props> = ({ table, tableContainerRef }) => {
13
+ export const MRT_TableBody: FC<Props> = ({ table }) => {
15
14
  const {
16
15
  getRowModel,
17
16
  getPrePaginationRowModel,
@@ -20,14 +19,16 @@ export const MRT_TableBody: FC<Props> = ({ table, tableContainerRef }) => {
20
19
  enableGlobalFilterRankedResults,
21
20
  enablePagination,
22
21
  enableRowVirtualization,
22
+ localization,
23
23
  manualFiltering,
24
24
  manualSorting,
25
25
  muiTableBodyProps,
26
26
  virtualizerInstanceRef,
27
27
  virtualizerProps,
28
28
  },
29
+ refs: { tableContainerRef, tablePaperRef },
29
30
  } = table;
30
- const { globalFilter, pagination, sorting } = getState();
31
+ const { columnFilters, globalFilter, pagination, sorting } = getState();
31
32
 
32
33
  const tableBodyProps =
33
34
  muiTableBodyProps instanceof Function
@@ -116,33 +117,56 @@ export const MRT_TableBody: FC<Props> = ({ table, tableContainerRef }) => {
116
117
 
117
118
  return (
118
119
  <TableBody {...tableBodyProps}>
119
- {enableRowVirtualization && paddingTop > 0 && (
120
+ {!rows.length ? (
120
121
  <tr>
121
- <td style={{ height: `${paddingTop}px` }} />
122
- </tr>
123
- )}
124
- {(enableRowVirtualization ? virtualRows : rows).map(
125
- (rowOrVirtualRow: any, rowIndex: number) => {
126
- const row = enableRowVirtualization
127
- ? (rows[rowOrVirtualRow.index] as MRT_Row)
128
- : (rowOrVirtualRow as MRT_Row);
129
- return (
130
- <MRT_TableBodyRow
131
- key={row.id}
132
- row={row}
133
- rowIndex={
134
- enableRowVirtualization ? rowOrVirtualRow.index : rowIndex
135
- }
136
- table={table}
137
- virtualRow={enableRowVirtualization ? rowOrVirtualRow : null}
138
- />
139
- );
140
- },
141
- )}
142
- {enableRowVirtualization && paddingBottom > 0 && (
143
- <tr>
144
- <td style={{ height: `${paddingBottom}px` }} />
122
+ <td colSpan={table.getVisibleLeafColumns().length}>
123
+ <Typography
124
+ sx={{
125
+ color: 'text.secondary',
126
+ fontStyle: 'italic',
127
+ maxWidth: `min(100vw, ${tablePaperRef.current?.clientWidth}px)`,
128
+ py: '2rem',
129
+ textAlign: 'center',
130
+ width: '100%',
131
+ }}
132
+ >
133
+ {globalFilter || columnFilters.length
134
+ ? localization.noResultsFound
135
+ : localization.noRecordsToDisplay}
136
+ </Typography>
137
+ </td>
145
138
  </tr>
139
+ ) : (
140
+ <>
141
+ {enableRowVirtualization && paddingTop > 0 && (
142
+ <tr>
143
+ <td style={{ height: `${paddingTop}px` }} />
144
+ </tr>
145
+ )}
146
+ {(enableRowVirtualization ? virtualRows : rows).map(
147
+ (rowOrVirtualRow: any, rowIndex: number) => {
148
+ const row = enableRowVirtualization
149
+ ? (rows[rowOrVirtualRow.index] as MRT_Row)
150
+ : (rowOrVirtualRow as MRT_Row);
151
+ return (
152
+ <MRT_TableBodyRow
153
+ key={row.id}
154
+ row={row}
155
+ rowIndex={
156
+ enableRowVirtualization ? rowOrVirtualRow.index : rowIndex
157
+ }
158
+ table={table}
159
+ virtualRow={enableRowVirtualization ? rowOrVirtualRow : null}
160
+ />
161
+ );
162
+ },
163
+ )}
164
+ {enableRowVirtualization && paddingBottom > 0 && (
165
+ <tr>
166
+ <td style={{ height: `${paddingBottom}px` }} />
167
+ </tr>
168
+ )}
169
+ </>
146
170
  )}
147
171
  </TableBody>
148
172
  );
@@ -6,19 +6,13 @@ import React, {
6
6
  useEffect,
7
7
  useState,
8
8
  } from 'react';
9
- import {
10
- alpha,
11
- darken,
12
- lighten,
13
- Skeleton,
14
- TableCell,
15
- useTheme,
16
- } from '@mui/material';
9
+ import { darken, lighten, Skeleton, TableCell, useTheme } from '@mui/material';
17
10
  import { MRT_EditCellTextField } from '../inputs/MRT_EditCellTextField';
18
11
  import { MRT_CopyButton } from '../buttons/MRT_CopyButton';
19
- import type { MRT_Cell, MRT_TableInstance } from '..';
20
12
  import { MRT_TableBodyRowGrabHandle } from './MRT_TableBodyRowGrabHandle';
21
13
  import { MRT_TableBodyCellValue } from './MRT_TableBodyCellValue';
14
+ import { getCommonCellStyles } from '../column.utils';
15
+ import type { MRT_Cell, MRT_TableInstance } from '..';
22
16
 
23
17
  interface Props {
24
18
  cell: MRT_Cell;
@@ -74,7 +68,7 @@ export const MRT_TableBodyCell: FC<Props> = ({
74
68
 
75
69
  const mcTableCellBodyProps =
76
70
  columnDef.muiTableBodyCellProps instanceof Function
77
- ? columnDef.muiTableBodyCellProps({ cell, table })
71
+ ? columnDef.muiTableBodyCellProps({ cell, column, row, table })
78
72
  : columnDef.muiTableBodyCellProps;
79
73
 
80
74
  const tableCellProps = {
@@ -82,6 +76,11 @@ export const MRT_TableBodyCell: FC<Props> = ({
82
76
  ...mcTableCellBodyProps,
83
77
  };
84
78
 
79
+ const skeletonProps =
80
+ muiTableBodyCellSkeletonProps instanceof Function
81
+ ? muiTableBodyCellSkeletonProps({ cell, column, row, table })
82
+ : muiTableBodyCellSkeletonProps;
83
+
85
84
  const isEditable =
86
85
  (enableEditing || columnDef.enableEditing) &&
87
86
  columnDef.enableEditing !== false;
@@ -127,23 +126,6 @@ export const MRT_TableBodyCell: FC<Props> = ({
127
126
  }
128
127
  };
129
128
 
130
- const getIsLastLeftPinnedColumn = () => {
131
- return (
132
- column.getIsPinned() === 'left' &&
133
- table.getLeftLeafHeaders().length - 1 === column.getPinnedIndex()
134
- );
135
- };
136
-
137
- const getIsFirstRightPinnedColumn = () => {
138
- return column.getIsPinned() === 'right' && column.getPinnedIndex() === 0;
139
- };
140
-
141
- const getTotalRight = () => {
142
- return (
143
- (table.getRightLeafHeaders().length - 1 - column.getPinnedIndex()) * 150
144
- );
145
- };
146
-
147
129
  const handleDragEnter = (e: DragEvent<HTMLTableCellElement>) => {
148
130
  tableCellProps?.onDragEnter?.(e);
149
131
  if (enableGrouping && hoveredColumn?.id === 'drop-zone') {
@@ -185,23 +167,7 @@ export const MRT_TableBodyCell: FC<Props> = ({
185
167
  onDragEnter={handleDragEnter}
186
168
  onDoubleClick={handleDoubleClick}
187
169
  sx={(theme) => ({
188
- backgroundColor: column.getIsPinned()
189
- ? alpha(lighten(theme.palette.background.default, 0.04), 0.95)
190
- : undefined,
191
- boxShadow: getIsLastLeftPinnedColumn()
192
- ? `4px 0 4px -2px ${alpha(theme.palette.common.black, 0.1)}`
193
- : getIsFirstRightPinnedColumn()
194
- ? `-4px 0 4px -2px ${alpha(theme.palette.common.black, 0.1)}`
195
- : undefined,
196
170
  cursor: isEditable && editingMode === 'cell' ? 'pointer' : 'text',
197
- left:
198
- column.getIsPinned() === 'left'
199
- ? `${column.getStart('left')}px`
200
- : undefined,
201
- opacity:
202
- draggingColumn?.id === column.id || hoveredColumn?.id === column.id
203
- ? 0.5
204
- : 1,
205
171
  overflow: 'hidden',
206
172
  p:
207
173
  density === 'compact'
@@ -226,18 +192,10 @@ export const MRT_TableBodyCell: FC<Props> = ({
226
192
  : 1.25)
227
193
  }rem`
228
194
  : undefined,
229
- position: column.getIsPinned() ? 'sticky' : 'relative',
230
- right:
231
- column.getIsPinned() === 'right' ? `${getTotalRight()}px` : undefined,
232
195
  textOverflow: columnDefType !== 'display' ? 'ellipsis' : undefined,
233
- transition: 'all 0.2s ease-in-out',
234
196
  whiteSpace: density === 'compact' ? 'nowrap' : 'normal',
235
197
  zIndex:
236
- draggingColumn?.id === column.id
237
- ? 2
238
- : column.getIsPinned()
239
- ? 1
240
- : undefined,
198
+ draggingColumn?.id === column.id ? 2 : column.getIsPinned() ? 1 : 0,
241
199
  '&:hover': {
242
200
  backgroundColor:
243
201
  enableHover &&
@@ -249,13 +207,8 @@ export const MRT_TableBodyCell: FC<Props> = ({
249
207
  : `${darken(theme.palette.background.default, 0.1)} !important`
250
208
  : undefined,
251
209
  },
252
- ...(tableCellProps?.sx instanceof Function
253
- ? tableCellProps.sx(theme)
254
- : (tableCellProps?.sx as any)),
210
+ ...getCommonCellStyles({ column, table, theme, tableCellProps }),
255
211
  ...draggingBorders,
256
- maxWidth: `min(${column.getSize()}px, fit-content)`,
257
- minWidth: `max(${column.getSize()}px, ${columnDef.minSize ?? 30}px)`,
258
- width: column.getSize(),
259
212
  })}
260
213
  >
261
214
  <>
@@ -264,7 +217,7 @@ export const MRT_TableBodyCell: FC<Props> = ({
264
217
  animation="wave"
265
218
  height={20}
266
219
  width={skeletonWidth}
267
- {...muiTableBodyCellSkeletonProps}
220
+ {...skeletonProps}
268
221
  />
269
222
  ) : enableRowNumbers &&
270
223
  rowNumberMode === 'static' &&