material-react-table 2.0.6 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
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
  ? {