material-react-table 1.0.0-beta.0 → 1.0.0-beta.11

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 +96 -19
  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 +247 -194
  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 +96 -19
  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 +248 -197
  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 +47 -41
  63. package/package.json +7 -6
  64. package/src/MaterialReactTable.tsx +100 -23
  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 +11 -58
  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 +13 -5
  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<
@@ -541,6 +625,7 @@ export type MaterialReactTableProps<TData extends Record<string, any> = {}> =
541
625
  muiExpandButtonProps?:
542
626
  | IconButtonProps
543
627
  | (({
628
+ row,
544
629
  table,
545
630
  }: {
546
631
  table: MRT_TableInstance<TData>;
@@ -612,11 +697,15 @@ export type MaterialReactTableProps<TData extends Record<string, any> = {}> =
612
697
  muiTableBodyCellSkeletonProps?:
613
698
  | SkeletonProps
614
699
  | (({
615
- table,
616
700
  cell,
701
+ column,
702
+ row,
703
+ table,
617
704
  }: {
618
- table: MRT_TableInstance<TData>;
619
705
  cell: MRT_Cell<TData>;
706
+ column: MRT_Column<TData>;
707
+ row: MRT_Row<TData>;
708
+ table: MRT_TableInstance<TData>;
620
709
  }) => SkeletonProps);
621
710
  muiTableBodyProps?:
622
711
  | TableBodyProps
@@ -748,15 +837,6 @@ export type MaterialReactTableProps<TData extends Record<string, any> = {}> =
748
837
  muiTopToolbarProps?:
749
838
  | ToolbarProps
750
839
  | (({ 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
840
  onDensityChange?: OnChangeFn<boolean>;
761
841
  onDraggingColumnChange?: OnChangeFn<MRT_Column<TData> | null>;
762
842
  onDraggingRowChange?: OnChangeFn<MRT_Row<TData> | null>;
@@ -778,15 +858,6 @@ export type MaterialReactTableProps<TData extends Record<string, any> = {}> =
778
858
  onHoveredColumnChange?: OnChangeFn<MRT_Column<TData> | null>;
779
859
  onHoveredRowChange?: OnChangeFn<MRT_Row<TData> | null>;
780
860
  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
861
  onShowAlertBannerChange?: OnChangeFn<boolean>;
791
862
  onShowFiltersChange?: OnChangeFn<boolean>;
792
863
  onShowGlobalFilterChange?: OnChangeFn<boolean>;
@@ -796,6 +867,9 @@ export type MaterialReactTableProps<TData extends Record<string, any> = {}> =
796
867
  positionPagination?: 'bottom' | 'top' | 'both';
797
868
  positionToolbarAlertBanner?: 'bottom' | 'top' | 'none';
798
869
  positionToolbarDropZone?: 'bottom' | 'top' | 'none' | 'both';
870
+ renderBottomToolbar?:
871
+ | ReactNode
872
+ | (({ table }: { table: MRT_TableInstance<TData> }) => ReactNode);
799
873
  renderBottomToolbarCustomActions?: ({
800
874
  table,
801
875
  }: {
@@ -860,6 +934,9 @@ export type MaterialReactTableProps<TData extends Record<string, any> = {}> =
860
934
  }: {
861
935
  table: MRT_TableInstance<TData>;
862
936
  }) => ReactNode;
937
+ renderTopToolbar?:
938
+ | ReactNode
939
+ | (({ table }: { table: MRT_TableInstance<TData> }) => ReactNode);
863
940
  renderTopToolbarCustomActions?: ({
864
941
  table,
865
942
  }: {
@@ -989,7 +1066,7 @@ export default <TData extends Record<string, any> = {}>({
989
1066
  enableTopToolbar={enableTopToolbar}
990
1067
  filterFns={{ ...MRT_FilterFns, ...filterFns }}
991
1068
  icons={{ ...MRT_Default_Icons, ...icons }}
992
- localization={{ ...MRT_DefaultLocalization_EN, ...localization }}
1069
+ localization={{ ...MRT_Localization_EN, ...localization }}
993
1070
  positionActionsColumn={positionActionsColumn}
994
1071
  positionExpandColumn={positionExpandColumn}
995
1072
  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;
@@ -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' &&
@@ -1,4 +1,4 @@
1
- import React, { FC } from 'react';
1
+ import React, { FC, memo } from 'react';
2
2
  import { MRT_Cell, MRT_TableInstance } from '..';
3
3
 
4
4
  interface Props {
@@ -6,7 +6,7 @@ interface Props {
6
6
  table: MRT_TableInstance;
7
7
  }
8
8
 
9
- export const MRT_TableBodyCellValue: FC<Props> = ({ cell, table }) => {
9
+ const _MRT_TableBodyCellValue: FC<Props> = ({ cell, table }) => {
10
10
  const { column, row } = cell;
11
11
  const { columnDef } = column;
12
12
 
@@ -32,3 +32,8 @@ export const MRT_TableBodyCellValue: FC<Props> = ({ cell, table }) => {
32
32
  </>
33
33
  );
34
34
  };
35
+
36
+ export const MRT_TableBodyCellValue = memo(
37
+ _MRT_TableBodyCellValue,
38
+ (prev, next) => prev.cell.getValue() === next.cell.getValue(),
39
+ );