material-react-table 2.0.6 → 2.2.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 (144) hide show
  1. package/dist/index.d.ts +13 -4
  2. package/dist/index.esm.js +2331 -2282
  3. package/dist/index.esm.js.map +1 -1
  4. package/dist/index.js +2362 -2310
  5. package/dist/index.js.map +1 -1
  6. package/locales/fr/index.esm.js +1 -1
  7. package/locales/fr/index.js +1 -1
  8. package/{dist/types/locales/he.d.ts → locales/he/index.d.ts} +2 -1
  9. package/locales/he/index.esm.d.ts +3 -0
  10. package/locales/he/index.esm.js +93 -0
  11. package/locales/he/index.js +97 -0
  12. package/locales/he/package.json +6 -0
  13. package/package.json +24 -24
  14. package/src/body/MRT_TableBody.tsx +16 -123
  15. package/src/body/MRT_TableBodyCell.tsx +11 -10
  16. package/src/body/MRT_TableBodyRow.tsx +9 -5
  17. package/src/head/MRT_TableHeadCell.tsx +4 -1
  18. package/src/head/MRT_TableHeadCellResizeHandle.tsx +18 -9
  19. package/src/hooks/index.ts +3 -0
  20. package/src/hooks/useMRT_ColumnVirtualizer.ts +125 -0
  21. package/src/hooks/useMRT_DisplayColumns.tsx +2 -0
  22. package/src/hooks/useMRT_RowVirtualizer.ts +64 -0
  23. package/src/hooks/useMRT_Rows.ts +94 -0
  24. package/src/hooks/useMRT_TableOptions.ts +8 -0
  25. package/src/inputs/MRT_EditCellTextField.tsx +3 -1
  26. package/src/inputs/MRT_FilterTextField.tsx +1 -1
  27. package/src/locales/fr.ts +1 -1
  28. package/src/table/MRT_Table.tsx +17 -107
  29. package/dist/types/MaterialReactTable.d.ts +0 -7
  30. package/dist/types/aggregationFns.d.ts +0 -11
  31. package/dist/types/body/MRT_TableBody.d.ts +0 -13
  32. package/dist/types/body/MRT_TableBodyCell.d.ts +0 -15
  33. package/dist/types/body/MRT_TableBodyCellValue.d.ts +0 -8
  34. package/dist/types/body/MRT_TableBodyRow.d.ts +0 -18
  35. package/dist/types/body/MRT_TableBodyRowGrabHandle.d.ts +0 -10
  36. package/dist/types/body/MRT_TableBodyRowPinButton.d.ts +0 -8
  37. package/dist/types/body/MRT_TableDetailPanel.d.ts +0 -13
  38. package/dist/types/body/index.d.ts +0 -7
  39. package/dist/types/buttons/MRT_ColumnPinningButtons.d.ts +0 -8
  40. package/dist/types/buttons/MRT_CopyButton.d.ts +0 -8
  41. package/dist/types/buttons/MRT_EditActionButtons.d.ts +0 -9
  42. package/dist/types/buttons/MRT_ExpandAllButton.d.ts +0 -7
  43. package/dist/types/buttons/MRT_ExpandButton.d.ts +0 -8
  44. package/dist/types/buttons/MRT_GrabHandleButton.d.ts +0 -12
  45. package/dist/types/buttons/MRT_RowPinButton.d.ts +0 -10
  46. package/dist/types/buttons/MRT_ShowHideColumnsButton.d.ts +0 -7
  47. package/dist/types/buttons/MRT_ToggleDensePaddingButton.d.ts +0 -7
  48. package/dist/types/buttons/MRT_ToggleFiltersButton.d.ts +0 -7
  49. package/dist/types/buttons/MRT_ToggleFullScreenButton.d.ts +0 -7
  50. package/dist/types/buttons/MRT_ToggleGlobalFilterButton.d.ts +0 -7
  51. package/dist/types/buttons/MRT_ToggleRowActionMenuButton.d.ts +0 -9
  52. package/dist/types/buttons/index.d.ts +0 -13
  53. package/dist/types/column.utils.d.ts +0 -127
  54. package/dist/types/filterFns.d.ts +0 -69
  55. package/dist/types/footer/MRT_TableFooter.d.ts +0 -11
  56. package/dist/types/footer/MRT_TableFooterCell.d.ts +0 -8
  57. package/dist/types/footer/MRT_TableFooterRow.d.ts +0 -12
  58. package/dist/types/footer/index.d.ts +0 -3
  59. package/dist/types/head/MRT_TableHead.d.ts +0 -11
  60. package/dist/types/head/MRT_TableHeadCell.d.ts +0 -8
  61. package/dist/types/head/MRT_TableHeadCellColumnActionsButton.d.ts +0 -8
  62. package/dist/types/head/MRT_TableHeadCellFilterContainer.d.ts +0 -8
  63. package/dist/types/head/MRT_TableHeadCellFilterLabel.d.ts +0 -8
  64. package/dist/types/head/MRT_TableHeadCellGrabHandle.d.ts +0 -10
  65. package/dist/types/head/MRT_TableHeadCellResizeHandle.d.ts +0 -8
  66. package/dist/types/head/MRT_TableHeadCellSortLabel.d.ts +0 -8
  67. package/dist/types/head/MRT_TableHeadRow.d.ts +0 -12
  68. package/dist/types/head/index.d.ts +0 -9
  69. package/dist/types/hooks/index.d.ts +0 -4
  70. package/dist/types/hooks/useMRT_DisplayColumns.d.ts +0 -9
  71. package/dist/types/hooks/useMRT_Effects.d.ts +0 -2
  72. package/dist/types/hooks/useMRT_TableInstance.d.ts +0 -2
  73. package/dist/types/hooks/useMRT_TableOptions.d.ts +0 -22
  74. package/dist/types/icons.d.ts +0 -36
  75. package/dist/types/index.d.ts +0 -18
  76. package/dist/types/inputs/MRT_EditCellTextField.d.ts +0 -8
  77. package/dist/types/inputs/MRT_FilterCheckbox.d.ts +0 -8
  78. package/dist/types/inputs/MRT_FilterRangeFields.d.ts +0 -8
  79. package/dist/types/inputs/MRT_FilterRangeSlider.d.ts +0 -8
  80. package/dist/types/inputs/MRT_FilterTextField.d.ts +0 -9
  81. package/dist/types/inputs/MRT_GlobalFilterTextField.d.ts +0 -7
  82. package/dist/types/inputs/MRT_SelectCheckbox.d.ts +0 -9
  83. package/dist/types/inputs/index.d.ts +0 -7
  84. package/dist/types/locales/am.d.ts +0 -2
  85. package/dist/types/locales/ar.d.ts +0 -2
  86. package/dist/types/locales/az.d.ts +0 -2
  87. package/dist/types/locales/bg.d.ts +0 -2
  88. package/dist/types/locales/cs.d.ts +0 -2
  89. package/dist/types/locales/da.d.ts +0 -2
  90. package/dist/types/locales/de.d.ts +0 -2
  91. package/dist/types/locales/en.d.ts +0 -2
  92. package/dist/types/locales/es.d.ts +0 -2
  93. package/dist/types/locales/et.d.ts +0 -2
  94. package/dist/types/locales/fa.d.ts +0 -2
  95. package/dist/types/locales/fi.d.ts +0 -2
  96. package/dist/types/locales/fr.d.ts +0 -2
  97. package/dist/types/locales/hu.d.ts +0 -2
  98. package/dist/types/locales/hy.d.ts +0 -2
  99. package/dist/types/locales/id.d.ts +0 -2
  100. package/dist/types/locales/it.d.ts +0 -2
  101. package/dist/types/locales/ja.d.ts +0 -2
  102. package/dist/types/locales/ko.d.ts +0 -2
  103. package/dist/types/locales/nl.d.ts +0 -2
  104. package/dist/types/locales/no.d.ts +0 -2
  105. package/dist/types/locales/np.d.ts +0 -2
  106. package/dist/types/locales/pl.d.ts +0 -2
  107. package/dist/types/locales/pt-BR.d.ts +0 -2
  108. package/dist/types/locales/pt.d.ts +0 -2
  109. package/dist/types/locales/ro.d.ts +0 -2
  110. package/dist/types/locales/ru.d.ts +0 -2
  111. package/dist/types/locales/sk.d.ts +0 -2
  112. package/dist/types/locales/sr-Cyrl-RS.d.ts +0 -2
  113. package/dist/types/locales/sr-Latn-RS.d.ts +0 -2
  114. package/dist/types/locales/sv.d.ts +0 -2
  115. package/dist/types/locales/tr.d.ts +0 -2
  116. package/dist/types/locales/uk.d.ts +0 -2
  117. package/dist/types/locales/vi.d.ts +0 -2
  118. package/dist/types/locales/zh-Hans.d.ts +0 -2
  119. package/dist/types/locales/zh-Hant.d.ts +0 -2
  120. package/dist/types/menus/MRT_ColumnActionMenu.d.ts +0 -20
  121. package/dist/types/menus/MRT_FilterOptionMenu.d.ts +0 -13
  122. package/dist/types/menus/MRT_RowActionMenu.d.ts +0 -12
  123. package/dist/types/menus/MRT_ShowHideColumnsMenu.d.ts +0 -10
  124. package/dist/types/menus/MRT_ShowHideColumnsMenuItems.d.ts +0 -12
  125. package/dist/types/menus/index.d.ts +0 -5
  126. package/dist/types/modals/MRT_EditRowModal.d.ts +0 -8
  127. package/dist/types/modals/index.d.ts +0 -1
  128. package/dist/types/sortingFns.d.ts +0 -12
  129. package/dist/types/style.utils.d.ts +0 -32
  130. package/dist/types/table/MRT_Table.d.ts +0 -7
  131. package/dist/types/table/MRT_TableContainer.d.ts +0 -7
  132. package/dist/types/table/MRT_TableLoadingOverlay.d.ts +0 -7
  133. package/dist/types/table/MRT_TablePaper.d.ts +0 -7
  134. package/dist/types/table/index.d.ts +0 -5
  135. package/dist/types/toolbar/MRT_BottomToolbar.d.ts +0 -7
  136. package/dist/types/toolbar/MRT_LinearProgressBar.d.ts +0 -8
  137. package/dist/types/toolbar/MRT_TablePagination.d.ts +0 -15
  138. package/dist/types/toolbar/MRT_ToolbarAlertBanner.d.ts +0 -8
  139. package/dist/types/toolbar/MRT_ToolbarDropZone.d.ts +0 -7
  140. package/dist/types/toolbar/MRT_ToolbarInternalButtons.d.ts +0 -7
  141. package/dist/types/toolbar/MRT_TopToolbar.d.ts +0 -6
  142. package/dist/types/toolbar/index.d.ts +0 -7
  143. package/dist/types/types.d.ts +0 -854
  144. package/dist/types/useMaterialReactTable.d.ts +0 -2
@@ -49,7 +49,7 @@ const MRT_Localization_FR = {
49
49
  groupByColumn: 'Grouper par {column}',
50
50
  groupedBy: 'Groupé par ',
51
51
  hideAll: 'Cacher tout',
52
- hideColumn: 'Cacher {column} colonne',
52
+ hideColumn: 'Cacher colonne {column}',
53
53
  max: 'Max',
54
54
  min: 'Min',
55
55
  move: 'Déplacer',
@@ -53,7 +53,7 @@ const MRT_Localization_FR = {
53
53
  groupByColumn: 'Grouper par {column}',
54
54
  groupedBy: 'Groupé par ',
55
55
  hideAll: 'Cacher tout',
56
- hideColumn: 'Cacher {column} colonne',
56
+ hideColumn: 'Cacher colonne {column}',
57
57
  max: 'Max',
58
58
  min: 'Min',
59
59
  move: 'Déplacer',
@@ -1,2 +1,3 @@
1
- import { type MRT_Localization } from '..';
1
+ import { type MRT_Localization } from '../..';
2
2
  export declare const MRT_Localization_HE: MRT_Localization;
3
+
@@ -0,0 +1,3 @@
1
+ import { type MRT_Localization } from '../..';
2
+ export declare const MRT_Localization_HE: MRT_Localization;
3
+
@@ -0,0 +1,93 @@
1
+ const MRT_Localization_HE = {
2
+ actions: 'פעולות',
3
+ and: 'ו',
4
+ cancel: 'ביטול',
5
+ changeFilterMode: 'שינוי מצב סינון',
6
+ changeSearchMode: 'שינוי מצב חיפוש',
7
+ clearFilter: 'נקה סינון',
8
+ clearSearch: 'נקה חיפוש',
9
+ clearSort: 'נקה מיון',
10
+ clickToCopy: 'לחץ להעתקה',
11
+ collapse: 'צמצום',
12
+ collapseAll: 'צמצום הכל',
13
+ columnActions: 'פעולות עמודה',
14
+ copiedToClipboard: 'הועתק ללוח',
15
+ dropToGroupBy: 'גרור לקיבוץ לפי {column}',
16
+ edit: 'ערוך',
17
+ expand: 'הרחב',
18
+ expandAll: 'הרחב הכל',
19
+ filterArrIncludes: 'כולל',
20
+ filterArrIncludesAll: 'כולל הכל',
21
+ filterArrIncludesSome: 'כולל',
22
+ filterBetween: 'בין',
23
+ filterBetweenInclusive: 'בין כולל',
24
+ filterByColumn: 'סנן לפי {column}',
25
+ filterContains: 'מכיל',
26
+ filterEmpty: 'ריק',
27
+ filterEndsWith: 'מסתיים ב',
28
+ filterEquals: 'שווה',
29
+ filterEqualsString: 'שווה',
30
+ filterFuzzy: 'פעיל',
31
+ filterGreaterThan: 'גדול מ',
32
+ filterGreaterThanOrEqualTo: 'גדול או שווה ל',
33
+ filterInNumberRange: 'בין',
34
+ filterIncludesString: 'מכיל',
35
+ filterIncludesStringSensitive: 'מכיל',
36
+ filterLessThan: 'קטן מ',
37
+ filterLessThanOrEqualTo: 'קטן או שווה ל',
38
+ filterMode: 'מצב סינון: {filterType}',
39
+ filterNotEmpty: 'לא ריק',
40
+ filterNotEquals: 'לא שווה',
41
+ filterStartsWith: 'מתחיל ב',
42
+ filterWeakEquals: 'שווה',
43
+ filteringByColumn: 'מסנן לפי {column} - {filterType} {filterValue}',
44
+ goToFirstPage: 'לדף הראשון',
45
+ goToLastPage: 'לדף האחרון',
46
+ goToNextPage: 'לדף הבא',
47
+ goToPreviousPage: 'לדף הקודם',
48
+ grab: 'תפוס',
49
+ groupByColumn: 'קיבוץ לפי {column}',
50
+ groupedBy: 'קובץ לפי',
51
+ hideAll: 'הסתר הכל',
52
+ hideColumn: 'הסתר עמודה {column}',
53
+ max: 'מקסימום',
54
+ min: 'מינימום',
55
+ move: 'הזז',
56
+ noRecordsToDisplay: 'אין רשומות להצגה',
57
+ noResultsFound: 'לא נמצאו תוצאות',
58
+ of: 'מתוך',
59
+ or: 'או',
60
+ pin: 'נעץ',
61
+ pinToLeft: 'נעץ לשמאל',
62
+ pinToRight: 'נעץ לימין',
63
+ resetColumnSize: 'איפוס גודל עמודה',
64
+ resetOrder: 'איפוס סדר',
65
+ rowActions: 'פעולות שורה',
66
+ rowNumber: '#',
67
+ rowNumbers: 'מספרי שורות',
68
+ rowsPerPage: 'שורות לעמוד',
69
+ save: 'שמור',
70
+ search: 'חיפוש',
71
+ selectedCountOfRowCountRowsSelected: '{selectedCount} מתוך {rowCount} שורות נבחרו',
72
+ select: 'בחר',
73
+ showAll: 'הצג הכל',
74
+ showAllColumns: 'הצג את כל העמודות',
75
+ showHideColumns: 'הצג/הסתר עמודות',
76
+ showHideFilters: 'הצג/הסתר סינונים',
77
+ showHideSearch: 'הצג/הסתר חיפוש',
78
+ sortByColumnAsc: 'מיין לפי {column} בסדר עולה',
79
+ sortByColumnDesc: 'מיין לפי {column} בסדר יורד',
80
+ sortedByColumnAsc: 'ממוין לפי {column} בסדר עולה',
81
+ sortedByColumnDesc: 'ממוין לפי {column} בסדר יורד',
82
+ thenBy: ', ואז לפי ',
83
+ toggleDensity: 'שנה צפיפות',
84
+ toggleFullScreen: 'מסך מלא',
85
+ toggleSelectAll: 'בחר/בטל בחירת הכל',
86
+ toggleSelectRow: 'בחר/בטל בחירת שורה',
87
+ toggleVisibility: 'הצג/הסתר',
88
+ ungroupByColumn: 'בטל קיבוץ לפי {column}',
89
+ unpin: 'בטל נעיצה',
90
+ unpinAll: 'בטל נעיצת הכל',
91
+ };
92
+
93
+ export { MRT_Localization_HE };
@@ -0,0 +1,97 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const MRT_Localization_HE = {
6
+ actions: 'פעולות',
7
+ and: 'ו',
8
+ cancel: 'ביטול',
9
+ changeFilterMode: 'שינוי מצב סינון',
10
+ changeSearchMode: 'שינוי מצב חיפוש',
11
+ clearFilter: 'נקה סינון',
12
+ clearSearch: 'נקה חיפוש',
13
+ clearSort: 'נקה מיון',
14
+ clickToCopy: 'לחץ להעתקה',
15
+ collapse: 'צמצום',
16
+ collapseAll: 'צמצום הכל',
17
+ columnActions: 'פעולות עמודה',
18
+ copiedToClipboard: 'הועתק ללוח',
19
+ dropToGroupBy: 'גרור לקיבוץ לפי {column}',
20
+ edit: 'ערוך',
21
+ expand: 'הרחב',
22
+ expandAll: 'הרחב הכל',
23
+ filterArrIncludes: 'כולל',
24
+ filterArrIncludesAll: 'כולל הכל',
25
+ filterArrIncludesSome: 'כולל',
26
+ filterBetween: 'בין',
27
+ filterBetweenInclusive: 'בין כולל',
28
+ filterByColumn: 'סנן לפי {column}',
29
+ filterContains: 'מכיל',
30
+ filterEmpty: 'ריק',
31
+ filterEndsWith: 'מסתיים ב',
32
+ filterEquals: 'שווה',
33
+ filterEqualsString: 'שווה',
34
+ filterFuzzy: 'פעיל',
35
+ filterGreaterThan: 'גדול מ',
36
+ filterGreaterThanOrEqualTo: 'גדול או שווה ל',
37
+ filterInNumberRange: 'בין',
38
+ filterIncludesString: 'מכיל',
39
+ filterIncludesStringSensitive: 'מכיל',
40
+ filterLessThan: 'קטן מ',
41
+ filterLessThanOrEqualTo: 'קטן או שווה ל',
42
+ filterMode: 'מצב סינון: {filterType}',
43
+ filterNotEmpty: 'לא ריק',
44
+ filterNotEquals: 'לא שווה',
45
+ filterStartsWith: 'מתחיל ב',
46
+ filterWeakEquals: 'שווה',
47
+ filteringByColumn: 'מסנן לפי {column} - {filterType} {filterValue}',
48
+ goToFirstPage: 'לדף הראשון',
49
+ goToLastPage: 'לדף האחרון',
50
+ goToNextPage: 'לדף הבא',
51
+ goToPreviousPage: 'לדף הקודם',
52
+ grab: 'תפוס',
53
+ groupByColumn: 'קיבוץ לפי {column}',
54
+ groupedBy: 'קובץ לפי',
55
+ hideAll: 'הסתר הכל',
56
+ hideColumn: 'הסתר עמודה {column}',
57
+ max: 'מקסימום',
58
+ min: 'מינימום',
59
+ move: 'הזז',
60
+ noRecordsToDisplay: 'אין רשומות להצגה',
61
+ noResultsFound: 'לא נמצאו תוצאות',
62
+ of: 'מתוך',
63
+ or: 'או',
64
+ pin: 'נעץ',
65
+ pinToLeft: 'נעץ לשמאל',
66
+ pinToRight: 'נעץ לימין',
67
+ resetColumnSize: 'איפוס גודל עמודה',
68
+ resetOrder: 'איפוס סדר',
69
+ rowActions: 'פעולות שורה',
70
+ rowNumber: '#',
71
+ rowNumbers: 'מספרי שורות',
72
+ rowsPerPage: 'שורות לעמוד',
73
+ save: 'שמור',
74
+ search: 'חיפוש',
75
+ selectedCountOfRowCountRowsSelected: '{selectedCount} מתוך {rowCount} שורות נבחרו',
76
+ select: 'בחר',
77
+ showAll: 'הצג הכל',
78
+ showAllColumns: 'הצג את כל העמודות',
79
+ showHideColumns: 'הצג/הסתר עמודות',
80
+ showHideFilters: 'הצג/הסתר סינונים',
81
+ showHideSearch: 'הצג/הסתר חיפוש',
82
+ sortByColumnAsc: 'מיין לפי {column} בסדר עולה',
83
+ sortByColumnDesc: 'מיין לפי {column} בסדר יורד',
84
+ sortedByColumnAsc: 'ממוין לפי {column} בסדר עולה',
85
+ sortedByColumnDesc: 'ממוין לפי {column} בסדר יורד',
86
+ thenBy: ', ואז לפי ',
87
+ toggleDensity: 'שנה צפיפות',
88
+ toggleFullScreen: 'מסך מלא',
89
+ toggleSelectAll: 'בחר/בטל בחירת הכל',
90
+ toggleSelectRow: 'בחר/בטל בחירת שורה',
91
+ toggleVisibility: 'הצג/הסתר',
92
+ ungroupByColumn: 'בטל קיבוץ לפי {column}',
93
+ unpin: 'בטל נעיצה',
94
+ unpinAll: 'בטל נעיצת הכל',
95
+ };
96
+
97
+ exports.MRT_Localization_HE = MRT_Localization_HE;
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "index.js",
3
+ "module": "index.esm.js",
4
+ "sideEffects": false,
5
+ "types": "index.d.ts"
6
+ }
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2.0.6",
2
+ "version": "2.2.0",
3
3
  "license": "MIT",
4
4
  "name": "material-react-table",
5
5
  "description": "A fully featured Material UI V5 implementation of TanStack React Table V8, written from the ground up in TypeScript.",
@@ -61,32 +61,32 @@
61
61
  "storybook:dev": "storybook dev -p 6006"
62
62
  },
63
63
  "devDependencies": {
64
- "@babel/core": "^7.23.6",
64
+ "@babel/core": "^7.23.7",
65
65
  "@babel/preset-react": "^7.23.3",
66
- "@emotion/react": "^11.11.1",
66
+ "@emotion/react": "^11.11.3",
67
67
  "@emotion/styled": "^11.11.0",
68
68
  "@faker-js/faker": "^8.3.1",
69
- "@mui/icons-material": "^5.15.0",
70
- "@mui/material": "^5.15.0",
71
- "@mui/x-date-pickers": "^6.18.4",
69
+ "@mui/icons-material": "^5.15.2",
70
+ "@mui/material": "^5.15.2",
71
+ "@mui/x-date-pickers": "^6.18.6",
72
72
  "@rollup/plugin-typescript": "^11.1.5",
73
73
  "@size-limit/preset-small-lib": "^11.0.1",
74
- "@storybook/addon-a11y": "^7.5.3",
75
- "@storybook/addon-essentials": "^7.5.3",
76
- "@storybook/addon-interactions": "^7.5.3",
77
- "@storybook/addon-links": "^7.5.3",
78
- "@storybook/addon-storysource": "^7.5.3",
79
- "@storybook/blocks": "^7.5.3",
80
- "@storybook/react": "^7.5.3",
81
- "@storybook/react-vite": "^7.5.3",
74
+ "@storybook/addon-a11y": "^7.6.7",
75
+ "@storybook/addon-essentials": "^7.6.7",
76
+ "@storybook/addon-interactions": "^7.6.7",
77
+ "@storybook/addon-links": "^7.6.7",
78
+ "@storybook/addon-storysource": "^7.6.7",
79
+ "@storybook/blocks": "^7.6.7",
80
+ "@storybook/react": "^7.6.7",
81
+ "@storybook/react-vite": "^7.6.7",
82
82
  "@storybook/testing-library": "^0.2.2",
83
- "@types/node": "^20.10.4",
84
- "@types/react": "^18.2.45",
85
- "@types/react-dom": "^18.2.17",
86
- "@typescript-eslint/eslint-plugin": "^6.14.0",
87
- "@typescript-eslint/parser": "^6.14.0",
83
+ "@types/node": "^20.10.6",
84
+ "@types/react": "^18.2.46",
85
+ "@types/react-dom": "^18.2.18",
86
+ "@typescript-eslint/eslint-plugin": "^6.17.0",
87
+ "@typescript-eslint/parser": "^6.17.0",
88
88
  "@vitejs/plugin-react": "^4.2.1",
89
- "eslint": "^8.55.0",
89
+ "eslint": "^8.56.0",
90
90
  "eslint-plugin-mui-path-imports": "^0.0.15",
91
91
  "eslint-plugin-perfectionist": "^2.5.0",
92
92
  "prop-types": "^15.8.1",
@@ -97,11 +97,11 @@
97
97
  "rollup-plugin-dts": "^6.1.0",
98
98
  "rollup-plugin-peer-deps-external": "^2.2.4",
99
99
  "size-limit": "^11.0.1",
100
- "storybook": "^7.5.3",
101
- "storybook-dark-mode": "^3.0.1",
100
+ "storybook": "^7.6.7",
101
+ "storybook-dark-mode": "^3.0.3",
102
102
  "tslib": "^2.6.2",
103
103
  "typescript": "^5.3.3",
104
- "vite": "^5.0.8"
104
+ "vite": "^5.0.10"
105
105
  },
106
106
  "peerDependencies": {
107
107
  "@emotion/react": ">=11.11",
@@ -114,7 +114,7 @@
114
114
  },
115
115
  "dependencies": {
116
116
  "@tanstack/match-sorter-utils": "8.8.4",
117
- "@tanstack/react-table": "8.10.7",
117
+ "@tanstack/react-table": "8.11.2",
118
118
  "@tanstack/react-virtual": "3.0.1",
119
119
  "highlight-words": "1.2.2"
120
120
  }
@@ -1,19 +1,11 @@
1
- import { memo, useCallback, useMemo } from 'react';
2
- import {
3
- type Range,
4
- type VirtualItem,
5
- type Virtualizer,
6
- useVirtualizer,
7
- } from '@tanstack/react-virtual';
1
+ import { memo, useMemo } from 'react';
2
+ import { type VirtualItem, type Virtualizer } from '@tanstack/react-virtual';
8
3
  import TableBody, { type TableBodyProps } from '@mui/material/TableBody';
9
4
  import Typography from '@mui/material/Typography';
10
5
  import { MRT_TableBodyRow, Memo_MRT_TableBodyRow } from './MRT_TableBodyRow';
11
- import {
12
- extraIndexRangeExtractor,
13
- getCanRankRows,
14
- parseFromValuesOrFunc,
15
- } from '../column.utils';
16
- import { rankGlobalFuzzy } from '../sortingFns';
6
+ import { parseFromValuesOrFunc } from '../column.utils';
7
+ import { useMRT_RowVirtualizer } from '../hooks';
8
+ import { useMRT_Rows } from '../hooks/useMRT_Rows';
17
9
  import {
18
10
  type MRT_Row,
19
11
  type MRT_RowData,
@@ -38,56 +30,30 @@ export const MRT_TableBody = <TData extends MRT_RowData>({
38
30
  }: Props<TData>) => {
39
31
  const {
40
32
  getBottomRows,
41
- getCenterRows,
42
33
  getIsSomeRowsPinned,
43
- getPrePaginationRowModel,
44
34
  getRowModel,
45
35
  getState,
46
36
  getTopRows,
47
37
  options: {
48
38
  createDisplayMode,
49
- enableGlobalFilterRankedResults,
50
- enablePagination,
51
- enableRowPinning,
52
- enableRowVirtualization,
53
39
  enableStickyFooter,
54
40
  enableStickyHeader,
55
41
  layoutMode,
56
42
  localization,
57
- manualExpanding,
58
- manualFiltering,
59
- manualGrouping,
60
- manualPagination,
61
- manualSorting,
62
43
  memoMode,
63
44
  muiTableBodyProps,
64
45
  renderEmptyRowsFallback,
65
46
  rowPinningDisplayMode,
66
- rowVirtualizerInstanceRef,
67
- rowVirtualizerOptions,
68
47
  },
69
- refs: { tableContainerRef, tableFooterRef, tableHeadRef, tablePaperRef },
48
+ refs: { tableFooterRef, tableHeadRef, tablePaperRef },
70
49
  } = table;
71
- const {
72
- columnFilters,
73
- creatingRow,
74
- density,
75
- draggingRow,
76
- expanded,
77
- globalFilter,
78
- isFullScreen,
79
- pagination,
80
- rowPinning,
81
- sorting,
82
- } = getState();
50
+ const { columnFilters, creatingRow, globalFilter, isFullScreen, rowPinning } =
51
+ getState();
83
52
 
84
53
  const tableBodyProps = {
85
54
  ...parseFromValuesOrFunc(muiTableBodyProps, { table }),
86
55
  ...rest,
87
56
  };
88
- const rowVirtualizerProps = parseFromValuesOrFunc(rowVirtualizerOptions, {
89
- table,
90
- });
91
57
 
92
58
  const tableHeadHeight =
93
59
  ((enableStickyHeader || isFullScreen) &&
@@ -96,23 +62,6 @@ export const MRT_TableBody = <TData extends MRT_RowData>({
96
62
  const tableFooterHeight =
97
63
  (enableStickyFooter && tableFooterRef.current?.clientHeight) || 0;
98
64
 
99
- const shouldRankRows = useMemo(
100
- () =>
101
- getCanRankRows(table) &&
102
- !Object.values(sorting).some(Boolean) &&
103
- globalFilter,
104
- [
105
- enableGlobalFilterRankedResults,
106
- expanded,
107
- globalFilter,
108
- manualExpanding,
109
- manualFiltering,
110
- manualGrouping,
111
- manualSorting,
112
- sorting,
113
- ],
114
- );
115
-
116
65
  const pinnedRowIds = useMemo(
117
66
  () =>
118
67
  getRowModel()
@@ -121,66 +70,9 @@ export const MRT_TableBody = <TData extends MRT_RowData>({
121
70
  [rowPinning, table.getRowModel().rows],
122
71
  );
123
72
 
124
- const rows = useMemo(() => {
125
- let rows: MRT_Row<TData>[] = [];
126
- if (!shouldRankRows) {
127
- rows =
128
- !enableRowPinning || rowPinningDisplayMode?.includes('sticky')
129
- ? getRowModel().rows
130
- : getCenterRows();
131
- } else {
132
- rows = getPrePaginationRowModel().rows.sort((a, b) =>
133
- rankGlobalFuzzy(a, b),
134
- );
135
- if (enablePagination && !manualPagination) {
136
- const start = pagination.pageIndex * pagination.pageSize;
137
- rows = rows.slice(start, start + pagination.pageSize);
138
- }
139
- }
140
- if (enableRowPinning && rowPinningDisplayMode?.includes('sticky')) {
141
- rows = [
142
- ...getTopRows().filter((row) => !pinnedRowIds.includes(row.id)),
143
- ...rows,
144
- ...getBottomRows().filter((row) => !pinnedRowIds.includes(row.id)),
145
- ];
146
- }
147
-
148
- return rows;
149
- }, [
150
- shouldRankRows,
151
- shouldRankRows ? getPrePaginationRowModel().rows : getRowModel().rows,
152
- pagination.pageIndex,
153
- pagination.pageSize,
154
- rowPinning,
155
- ]);
156
-
157
- const rowVirtualizer:
158
- | Virtualizer<HTMLDivElement, HTMLTableRowElement>
159
- | undefined = enableRowVirtualization
160
- ? useVirtualizer({
161
- count: rows.length,
162
- estimateSize: () =>
163
- density === 'compact' ? 37 : density === 'comfortable' ? 58 : 73,
164
- getScrollElement: () => tableContainerRef.current,
165
- measureElement:
166
- typeof window !== 'undefined' &&
167
- navigator.userAgent.indexOf('Firefox') === -1
168
- ? (element) => element?.getBoundingClientRect().height
169
- : undefined,
170
- overscan: 4,
171
- rangeExtractor: useCallback(
172
- (range: Range) => {
173
- return extraIndexRangeExtractor(range, draggingRow?.index ?? 0);
174
- },
175
- [draggingRow],
176
- ),
177
- ...rowVirtualizerProps,
178
- })
179
- : undefined;
73
+ const rows = useMRT_Rows(table);
180
74
 
181
- if (rowVirtualizerInstanceRef && rowVirtualizer) {
182
- rowVirtualizerInstanceRef.current = rowVirtualizer;
183
- }
75
+ const rowVirtualizer = useMRT_RowVirtualizer(table);
184
76
 
185
77
  const virtualRows = rowVirtualizer
186
78
  ? rowVirtualizer.getVirtualItems()
@@ -227,9 +119,10 @@ export const MRT_TableBody = <TData extends MRT_RowData>({
227
119
  {...tableBodyProps}
228
120
  sx={(theme) => ({
229
121
  display: layoutMode?.startsWith('grid') ? 'grid' : undefined,
230
- height: rowVirtualizer
231
- ? `${rowVirtualizer.getTotalSize()}px`
232
- : 'inherit',
122
+ height:
123
+ rowVirtualizer
124
+ ? `${rowVirtualizer.getTotalSize()}px`
125
+ : undefined,
233
126
  minHeight: !rows.length ? '100px' : undefined,
234
127
  position: 'relative',
235
128
  ...(parseFromValuesOrFunc(tableBodyProps?.sx, theme) as any),
@@ -289,11 +182,11 @@ export const MRT_TableBody = <TData extends MRT_RowData>({
289
182
  };
290
183
  return memoMode === 'rows' ? (
291
184
  <Memo_MRT_TableBodyRow
292
- key={`${row.id}${row.index}`}
185
+ key={`${row.id}-${row.index}`}
293
186
  {...props}
294
187
  />
295
188
  ) : (
296
- <MRT_TableBodyRow key={`${row.id}${row.index}`} {...props} />
189
+ <MRT_TableBodyRow key={`${row.id}-${row.index}`} {...props} />
297
190
  );
298
191
  })}
299
192
  </>
@@ -33,7 +33,7 @@ interface Props<TData extends MRT_RowData> extends TableCellProps {
33
33
  rowIndex: number;
34
34
  rowRef: RefObject<HTMLTableRowElement>;
35
35
  table: MRT_TableInstance<TData>;
36
- virtualIndex?: number;
36
+ virtualColumnIndex?: number;
37
37
  }
38
38
 
39
39
  export const MRT_TableBodyCell = <TData extends MRT_RowData>({
@@ -43,13 +43,14 @@ export const MRT_TableBodyCell = <TData extends MRT_RowData>({
43
43
  rowIndex,
44
44
  rowRef,
45
45
  table,
46
- virtualIndex,
46
+ virtualColumnIndex,
47
47
  ...rest
48
48
  }: Props<TData>) => {
49
49
  const theme = useTheme();
50
50
  const {
51
51
  getState,
52
52
  options: {
53
+ columnResizeDirection,
53
54
  columnResizeMode,
54
55
  createDisplayMode,
55
56
  editDisplayMode,
@@ -119,28 +120,28 @@ export const MRT_TableBodyCell = <TData extends MRT_RowData>({
119
120
  const isFirstColumn = getIsFirstColumn(column, table);
120
121
  const isLastColumn = getIsLastColumn(column, table);
121
122
  const isLastRow = numRows && rowIndex === numRows - 1;
123
+ const isResizingColumn = columnSizingInfo.isResizingColumn === column.id;
122
124
  const showResizeBorder =
123
- columnSizingInfo.isResizingColumn === column.id &&
124
- columnResizeMode === 'onChange';
125
+ isResizingColumn && columnResizeMode === 'onChange';
125
126
 
126
127
  const borderStyle = showResizeBorder
127
128
  ? `2px solid ${draggingBorderColor} !important`
128
129
  : isDraggingColumn || isDraggingRow
129
130
  ? `1px dashed ${theme.palette.grey[500]} !important`
130
- : isHoveredColumn ||
131
- isHoveredRow ||
132
- columnSizingInfo.isResizingColumn === column.id
131
+ : isHoveredColumn || isHoveredRow || isResizingColumn
133
132
  ? `2px dashed ${draggingBorderColor} !important`
134
133
  : undefined;
135
134
 
136
135
  if (showResizeBorder) {
137
- return { borderRight: borderStyle };
136
+ return columnResizeDirection === 'ltr'
137
+ ? { borderRight: borderStyle }
138
+ : { borderLeft: borderStyle };
138
139
  }
139
140
 
140
141
  return borderStyle
141
142
  ? {
142
143
  borderBottom:
143
- isDraggingRow || isHoveredRow || isLastRow
144
+ isDraggingRow || isHoveredRow || (isLastRow && !isResizingColumn)
144
145
  ? borderStyle
145
146
  : undefined,
146
147
  borderLeft:
@@ -211,7 +212,7 @@ export const MRT_TableBodyCell = <TData extends MRT_RowData>({
211
212
 
212
213
  return (
213
214
  <TableCell
214
- data-index={virtualIndex}
215
+ data-index={virtualColumnIndex}
215
216
  ref={(node: HTMLTableCellElement) => {
216
217
  if (node) {
217
218
  measureElement?.(node);
@@ -106,10 +106,14 @@ export const MRT_TableBodyRow = <TData extends MRT_RowData>({
106
106
 
107
107
  const sx = parseFromValuesOrFunc(tableRowProps?.sx, theme as any);
108
108
 
109
- const rowHeight =
109
+ const defaultRowHeight =
110
+ density === 'compact' ? 37 : density === 'comfortable' ? 53 : 69;
111
+
112
+ const customRowHeight =
110
113
  // @ts-ignore
111
- parseInt(tableRowProps?.style?.height ?? sx?.height, 10) ||
112
- (density === 'compact' ? 37 : density === 'comfortable' ? 53 : 69);
114
+ parseInt(tableRowProps?.style?.height ?? sx?.height, 10) || undefined;
115
+
116
+ const rowHeight = customRowHeight || defaultRowHeight;
113
117
 
114
118
  const handleDragEnter = (_e: DragEvent) => {
115
119
  if (enableRowOrdering && draggingRow) {
@@ -128,7 +132,7 @@ export const MRT_TableBodyRow = <TData extends MRT_RowData>({
128
132
  return (
129
133
  <>
130
134
  <TableRow
131
- data-index={virtualRow?.index}
135
+ data-index={rowIndex}
132
136
  data-pinned={!!isPinned || undefined}
133
137
  data-selected={row.getIsSelected() || undefined}
134
138
  onDragEnter={handleDragEnter}
@@ -142,7 +146,7 @@ export const MRT_TableBodyRow = <TData extends MRT_RowData>({
142
146
  {...tableRowProps}
143
147
  style={{
144
148
  transform: virtualRow
145
- ? `translateY(${virtualRow?.start}px)`
149
+ ? `translateY(${virtualRow.start}px)`
146
150
  : undefined,
147
151
  ...tableRowProps?.style,
148
152
  }}
@@ -32,6 +32,7 @@ export const MRT_TableHeadCell = <TData extends MRT_RowData>({
32
32
  getState,
33
33
  options: {
34
34
  columnFilterDisplayMode,
35
+ columnResizeDirection,
35
36
  columnResizeMode,
36
37
  enableColumnActions,
37
38
  enableColumnDragging,
@@ -103,7 +104,9 @@ export const MRT_TableHeadCell = <TData extends MRT_RowData>({
103
104
  : undefined;
104
105
 
105
106
  if (showResizeBorder) {
106
- return { borderRight: borderStyle };
107
+ return columnResizeDirection === 'ltr'
108
+ ? { borderRight: borderStyle }
109
+ : { borderLeft: borderStyle };
107
110
  }
108
111
  const draggingBorders = borderStyle
109
112
  ? {