material-react-table 2.0.0-alpha.5 → 2.0.0-beta.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 (207) hide show
  1. package/dist/cjs/index.js +141 -68
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/types/buttons/MRT_GrabHandleButton.d.ts +2 -1
  4. package/dist/cjs/types/column.utils.d.ts +2 -0
  5. package/dist/cjs/types/head/MRT_TableHeadCellSortLabel.d.ts +1 -1
  6. package/dist/cjs/types/icons.d.ts +1 -0
  7. package/dist/cjs/types/types.d.ts +12 -19
  8. package/dist/esm/material-react-table.esm.js +139 -68
  9. package/dist/esm/material-react-table.esm.js.map +1 -1
  10. package/dist/esm/types/buttons/MRT_GrabHandleButton.d.ts +2 -1
  11. package/dist/esm/types/column.utils.d.ts +2 -0
  12. package/dist/esm/types/head/MRT_TableHeadCellSortLabel.d.ts +1 -1
  13. package/dist/esm/types/icons.d.ts +1 -0
  14. package/dist/esm/types/types.d.ts +12 -19
  15. package/dist/index.d.ts +19 -23
  16. package/locales/ar.esm.js +1 -0
  17. package/locales/ar.esm.js.map +1 -1
  18. package/locales/ar.js +1 -0
  19. package/locales/ar.js.map +1 -1
  20. package/locales/bg.esm.js +1 -0
  21. package/locales/bg.esm.js.map +1 -1
  22. package/locales/bg.js +1 -0
  23. package/locales/bg.js.map +1 -1
  24. package/locales/cs.esm.js +1 -0
  25. package/locales/cs.esm.js.map +1 -1
  26. package/locales/cs.js +1 -0
  27. package/locales/cs.js.map +1 -1
  28. package/locales/da.esm.js +1 -0
  29. package/locales/da.esm.js.map +1 -1
  30. package/locales/da.js +1 -0
  31. package/locales/da.js.map +1 -1
  32. package/locales/de.esm.js +1 -0
  33. package/locales/de.esm.js.map +1 -1
  34. package/locales/de.js +1 -0
  35. package/locales/de.js.map +1 -1
  36. package/locales/es.esm.js +1 -0
  37. package/locales/es.esm.js.map +1 -1
  38. package/locales/es.js +1 -0
  39. package/locales/es.js.map +1 -1
  40. package/locales/et.esm.js +1 -0
  41. package/locales/et.esm.js.map +1 -1
  42. package/locales/et.js +1 -0
  43. package/locales/et.js.map +1 -1
  44. package/locales/fa.esm.js +1 -0
  45. package/locales/fa.esm.js.map +1 -1
  46. package/locales/fa.js +1 -0
  47. package/locales/fa.js.map +1 -1
  48. package/locales/fi.esm.js +1 -0
  49. package/locales/fi.esm.js.map +1 -1
  50. package/locales/fi.js +1 -0
  51. package/locales/fi.js.map +1 -1
  52. package/locales/fr.esm.js +1 -0
  53. package/locales/fr.esm.js.map +1 -1
  54. package/locales/fr.js +1 -0
  55. package/locales/fr.js.map +1 -1
  56. package/locales/hu.esm.js +1 -0
  57. package/locales/hu.esm.js.map +1 -1
  58. package/locales/hu.js +1 -0
  59. package/locales/hu.js.map +1 -1
  60. package/locales/hy.esm.js +1 -0
  61. package/locales/hy.esm.js.map +1 -1
  62. package/locales/hy.js +1 -0
  63. package/locales/hy.js.map +1 -1
  64. package/locales/id.esm.js +1 -0
  65. package/locales/id.esm.js.map +1 -1
  66. package/locales/id.js +1 -0
  67. package/locales/id.js.map +1 -1
  68. package/locales/it.esm.js +1 -0
  69. package/locales/it.esm.js.map +1 -1
  70. package/locales/it.js +1 -0
  71. package/locales/it.js.map +1 -1
  72. package/locales/ja.esm.js +1 -0
  73. package/locales/ja.esm.js.map +1 -1
  74. package/locales/ja.js +1 -0
  75. package/locales/ja.js.map +1 -1
  76. package/locales/ko.esm.js +1 -0
  77. package/locales/ko.esm.js.map +1 -1
  78. package/locales/ko.js +1 -0
  79. package/locales/ko.js.map +1 -1
  80. package/locales/nl.esm.js +1 -0
  81. package/locales/nl.esm.js.map +1 -1
  82. package/locales/nl.js +1 -0
  83. package/locales/nl.js.map +1 -1
  84. package/locales/no.esm.js +1 -0
  85. package/locales/no.esm.js.map +1 -1
  86. package/locales/no.js +1 -0
  87. package/locales/no.js.map +1 -1
  88. package/locales/np.esm.js +1 -1
  89. package/locales/np.esm.js.map +1 -1
  90. package/locales/np.js +1 -1
  91. package/locales/np.js.map +1 -1
  92. package/locales/pl.esm.js +1 -0
  93. package/locales/pl.esm.js.map +1 -1
  94. package/locales/pl.js +1 -0
  95. package/locales/pl.js.map +1 -1
  96. package/locales/pt-BR.esm.js +1 -0
  97. package/locales/pt-BR.esm.js.map +1 -1
  98. package/locales/pt-BR.js +1 -0
  99. package/locales/pt-BR.js.map +1 -1
  100. package/locales/pt.esm.js +1 -0
  101. package/locales/pt.esm.js.map +1 -1
  102. package/locales/pt.js +1 -0
  103. package/locales/pt.js.map +1 -1
  104. package/locales/ro.esm.js +1 -0
  105. package/locales/ro.esm.js.map +1 -1
  106. package/locales/ro.js +1 -0
  107. package/locales/ro.js.map +1 -1
  108. package/locales/ru.esm.js +1 -0
  109. package/locales/ru.esm.js.map +1 -1
  110. package/locales/ru.js +1 -0
  111. package/locales/ru.js.map +1 -1
  112. package/locales/sk.esm.js +1 -0
  113. package/locales/sk.esm.js.map +1 -1
  114. package/locales/sk.js +1 -0
  115. package/locales/sk.js.map +1 -1
  116. package/locales/sr-Cyrl-RS.esm.js +1 -0
  117. package/locales/sr-Cyrl-RS.esm.js.map +1 -1
  118. package/locales/sr-Cyrl-RS.js +1 -0
  119. package/locales/sr-Cyrl-RS.js.map +1 -1
  120. package/locales/sr-Latn-RS.esm.js +1 -0
  121. package/locales/sr-Latn-RS.esm.js.map +1 -1
  122. package/locales/sr-Latn-RS.js +1 -0
  123. package/locales/sr-Latn-RS.js.map +1 -1
  124. package/locales/sv.esm.js +3 -2
  125. package/locales/sv.esm.js.map +1 -1
  126. package/locales/sv.js +3 -2
  127. package/locales/sv.js.map +1 -1
  128. package/locales/tr.esm.js +1 -0
  129. package/locales/tr.esm.js.map +1 -1
  130. package/locales/tr.js +1 -0
  131. package/locales/tr.js.map +1 -1
  132. package/locales/uk.esm.js +1 -0
  133. package/locales/uk.esm.js.map +1 -1
  134. package/locales/uk.js +1 -0
  135. package/locales/uk.js.map +1 -1
  136. package/locales/vi.esm.js +1 -0
  137. package/locales/vi.esm.js.map +1 -1
  138. package/locales/vi.js +1 -0
  139. package/locales/vi.js.map +1 -1
  140. package/locales/zh-Hans.esm.js +1 -0
  141. package/locales/zh-Hans.esm.js.map +1 -1
  142. package/locales/zh-Hans.js +1 -0
  143. package/locales/zh-Hans.js.map +1 -1
  144. package/locales/zh-Hant.esm.js +1 -0
  145. package/locales/zh-Hant.esm.js.map +1 -1
  146. package/locales/zh-Hant.js +1 -0
  147. package/locales/zh-Hant.js.map +1 -1
  148. package/package.json +11 -11
  149. package/src/body/MRT_TableBody.tsx +20 -4
  150. package/src/body/MRT_TableBodyCell.tsx +4 -3
  151. package/src/body/MRT_TableBodyRow.tsx +7 -5
  152. package/src/body/MRT_TableBodyRowGrabHandle.tsx +1 -0
  153. package/src/body/index.ts +1 -1
  154. package/src/buttons/MRT_ExpandButton.tsx +1 -0
  155. package/src/buttons/MRT_GrabHandleButton.tsx +3 -1
  156. package/src/column.utils.ts +22 -2
  157. package/src/filterFns.ts +3 -3
  158. package/src/footer/MRT_TableFooterCell.tsx +5 -1
  159. package/src/footer/MRT_TableFooterRow.tsx +2 -2
  160. package/src/head/MRT_TableHead.tsx +5 -1
  161. package/src/head/MRT_TableHeadCell.tsx +11 -6
  162. package/src/head/MRT_TableHeadCellColumnActionsButton.tsx +2 -2
  163. package/src/head/MRT_TableHeadCellFilterLabel.tsx +6 -1
  164. package/src/head/MRT_TableHeadCellSortLabel.tsx +18 -12
  165. package/src/head/MRT_TableHeadRow.tsx +2 -2
  166. package/src/hooks/useMRT_DisplayColumns.tsx +20 -0
  167. package/src/hooks/useMRT_TableInstance.ts +6 -6
  168. package/src/icons.ts +3 -0
  169. package/src/inputs/MRT_FilterTextField.tsx +4 -3
  170. package/src/locales/ar.ts +1 -1
  171. package/src/locales/bg.ts +1 -0
  172. package/src/locales/cs.ts +1 -0
  173. package/src/locales/da.ts +1 -0
  174. package/src/locales/de.ts +1 -0
  175. package/src/locales/es.ts +1 -0
  176. package/src/locales/et.ts +1 -0
  177. package/src/locales/fa.ts +1 -0
  178. package/src/locales/fi.ts +1 -0
  179. package/src/locales/fr.ts +1 -0
  180. package/src/locales/hu.ts +1 -0
  181. package/src/locales/hy.ts +1 -0
  182. package/src/locales/id.ts +1 -0
  183. package/src/locales/it.ts +1 -0
  184. package/src/locales/ja.ts +1 -0
  185. package/src/locales/ko.ts +1 -0
  186. package/src/locales/nl.ts +1 -0
  187. package/src/locales/no.ts +1 -0
  188. package/src/locales/np.ts +3 -2
  189. package/src/locales/pl.ts +1 -0
  190. package/src/locales/pt-BR.ts +1 -0
  191. package/src/locales/pt.ts +1 -0
  192. package/src/locales/ro.ts +1 -0
  193. package/src/locales/ru.ts +1 -0
  194. package/src/locales/sk.ts +1 -0
  195. package/src/locales/sr-Cyrl-RS.ts +1 -0
  196. package/src/locales/sr-Latn-RS.ts +1 -0
  197. package/src/locales/sv.ts +3 -2
  198. package/src/locales/tr.ts +1 -0
  199. package/src/locales/uk.ts +1 -0
  200. package/src/locales/vi.ts +1 -0
  201. package/src/locales/zh-Hans.ts +1 -0
  202. package/src/locales/zh-Hant.ts +1 -0
  203. package/src/table/MRT_Table.tsx +24 -10
  204. package/src/table/MRT_TableContainer.tsx +50 -1
  205. package/src/toolbar/MRT_LinearProgressBar.tsx +2 -2
  206. package/src/toolbar/MRT_TablePagination.tsx +3 -4
  207. package/src/types.ts +12 -11
@@ -13,12 +13,11 @@ interface Props<TData extends Record<string, any>> {
13
13
  export const MRT_TableHeadCellSortLabel = <TData extends Record<string, any>>({
14
14
  header,
15
15
  table,
16
- tableCellProps,
17
16
  }: Props<TData>) => {
18
17
  const {
19
18
  getState,
20
19
  options: {
21
- icons: { ArrowDownwardIcon },
20
+ icons: { ArrowDownwardIcon, SyncAltIcon },
22
21
  localization,
23
22
  },
24
23
  } = table;
@@ -26,6 +25,8 @@ export const MRT_TableHeadCellSortLabel = <TData extends Record<string, any>>({
26
25
  const { columnDef } = column;
27
26
  const { sorting } = getState();
28
27
 
28
+ const isSorted = !!column.getIsSorted();
29
+
29
30
  const sortTooltip = column.getIsSorted()
30
31
  ? column.getIsSorted() === 'desc'
31
32
  ? localization.sortedByColumnDesc.replace('{column}', columnDef.header)
@@ -41,13 +42,20 @@ export const MRT_TableHeadCellSortLabel = <TData extends Record<string, any>>({
41
42
  overlap="circular"
42
43
  >
43
44
  <TableSortLabel
44
- IconComponent={ArrowDownwardIcon}
45
- active={!!column.getIsSorted()}
45
+ IconComponent={
46
+ !isSorted
47
+ ? (props) => (
48
+ <SyncAltIcon
49
+ {...props}
50
+ style={{ transform: 'rotate(-90deg) scaleX(0.8)' }}
51
+ />
52
+ )
53
+ : ArrowDownwardIcon
54
+ }
55
+ active
46
56
  aria-label={sortTooltip}
47
57
  direction={
48
- column.getIsSorted()
49
- ? (column.getIsSorted() as 'asc' | 'desc')
50
- : undefined
58
+ isSorted ? (column.getIsSorted() as 'asc' | 'desc') : undefined
51
59
  }
52
60
  onClick={(e) => {
53
61
  e.stopPropagation();
@@ -55,11 +63,9 @@ export const MRT_TableHeadCellSortLabel = <TData extends Record<string, any>>({
55
63
  }}
56
64
  sx={{
57
65
  flex: '0 0',
58
- transform:
59
- tableCellProps?.align !== 'right'
60
- ? 'translateX(-0.5ch)'
61
- : undefined,
62
- width: '2.4ch',
66
+ opacity: isSorted ? 1 : 0.3,
67
+ transition: 'all 150ms ease-in-out',
68
+ width: '3ch',
63
69
  }}
64
70
  />
65
71
  </Badge>
@@ -52,9 +52,9 @@ export const MRT_TableHeadRow = <TData extends Record<string, any>>({
52
52
  ? headerGroup.headers[headerOrVirtualHeader.index]
53
53
  : (headerOrVirtualHeader as MRT_Header<TData>);
54
54
 
55
- return (
55
+ return header ? (
56
56
  <MRT_TableHeadCell header={header} key={header.id} table={table} />
57
- );
57
+ ) : null;
58
58
  })}
59
59
  {virtualPaddingRight ? (
60
60
  <th style={{ display: 'flex', width: virtualPaddingRight }} />
@@ -14,6 +14,15 @@ import {
14
14
  type MRT_Row,
15
15
  } from '../types';
16
16
 
17
+ const blankColProps = {
18
+ sx: {
19
+ flex: '1 0 auto',
20
+ minWidth: 0,
21
+ p: 0,
22
+ width: 0,
23
+ },
24
+ };
25
+
17
26
  interface Params<TData extends Record<string, any>> {
18
27
  columnOrder: MRT_ColumnOrderState;
19
28
  creatingRow: MRT_Row<TData> | null;
@@ -123,6 +132,17 @@ export const useMRT_DisplayColumns = <TData extends Record<string, any>>({
123
132
  ...tableOptions.displayColumnDefOptions?.['mrt-row-numbers'],
124
133
  id: 'mrt-row-numbers',
125
134
  },
135
+
136
+ (tableOptions.state?.columnOrder ?? columnOrder).includes(
137
+ 'mrt-row-spacer',
138
+ ) && {
139
+ columnDefType: 'display',
140
+ header: '',
141
+ id: 'spacer',
142
+ muiTableBodyCellProps: blankColProps,
143
+ muiTableFooterCellProps: blankColProps,
144
+ muiTableHeadCellProps: blankColProps,
145
+ },
126
146
  ] as MRT_ColumnDef<TData>[]
127
147
  ).filter(Boolean),
128
148
  [
@@ -103,12 +103,12 @@ export const useMRT_TableInstance: <TData extends Record<string, any>>(
103
103
  const [grouping, setGrouping] = useState<MRT_GroupingState>(
104
104
  initialState.grouping ?? [],
105
105
  );
106
- const [hoveredColumn, setHoveredColumn] = useState<
107
- { id: string } | MRT_Column<TData> | null
108
- >(initialState.hoveredColumn ?? null);
109
- const [hoveredRow, setHoveredRow] = useState<
110
- { id: string } | MRT_Row<TData> | null
111
- >(initialState.hoveredRow ?? null);
106
+ const [hoveredColumn, setHoveredColumn] = useState<Partial<
107
+ MRT_Column<TData>
108
+ > | null>(initialState.hoveredColumn ?? null);
109
+ const [hoveredRow, setHoveredRow] = useState<Partial<MRT_Row<TData>> | null>(
110
+ initialState.hoveredRow ?? null,
111
+ );
112
112
  const [isFullScreen, setIsFullScreen] = useState<boolean>(
113
113
  initialState?.isFullScreen ?? false,
114
114
  );
package/src/icons.ts CHANGED
@@ -28,6 +28,7 @@ import SaveIcon from '@mui/icons-material/Save';
28
28
  import SearchIcon from '@mui/icons-material/Search';
29
29
  import SearchOffIcon from '@mui/icons-material/SearchOff';
30
30
  import SortIcon from '@mui/icons-material/Sort';
31
+ import SyncAltIcon from '@mui/icons-material/SyncAlt';
31
32
  import ViewColumnIcon from '@mui/icons-material/ViewColumn';
32
33
  import VisibilityOffIcon from '@mui/icons-material/VisibilityOff';
33
34
 
@@ -62,6 +63,7 @@ export interface MRT_Icons {
62
63
  SearchIcon: any;
63
64
  SearchOffIcon: any;
64
65
  SortIcon: any;
66
+ SyncAltIcon?: any;
65
67
  ViewColumnIcon: any;
66
68
  VisibilityOffIcon: any;
67
69
  }
@@ -97,6 +99,7 @@ export const MRT_Default_Icons: MRT_Icons = {
97
99
  SearchIcon,
98
100
  SearchOffIcon,
99
101
  SortIcon,
102
+ SyncAltIcon,
100
103
  ViewColumnIcon,
101
104
  VisibilityOffIcon,
102
105
  };
@@ -133,7 +133,7 @@ export const MRT_FilterTextField = <TData extends Record<string, any>>({
133
133
  if (isRangeFilter) {
134
134
  column.setFilterValue((old: Array<Date | null | number | string>) => {
135
135
  const newFilterValues = old ?? ['', ''];
136
- newFilterValues[rangeFilterIndex as number] = newValue;
136
+ newFilterValues[rangeFilterIndex as number] = newValue ?? undefined;
137
137
  return newFilterValues;
138
138
  });
139
139
  } else {
@@ -146,7 +146,7 @@ export const MRT_FilterTextField = <TData extends Record<string, any>>({
146
146
  );
147
147
 
148
148
  const handleChange = (newValue: any) => {
149
- setFilterValue(newValue?.toString() ?? '');
149
+ setFilterValue(newValue ?? '');
150
150
  handleChangeDebounced(newValue);
151
151
  };
152
152
 
@@ -246,7 +246,7 @@ export const MRT_FilterTextField = <TData extends Record<string, any>>({
246
246
  sx={{
247
247
  height: '2rem',
248
248
  transform: 'scale(0.9)',
249
- width: '2rem'
249
+ width: '2rem',
250
250
  }}
251
251
  >
252
252
  <CloseIcon />
@@ -364,6 +364,7 @@ export const MRT_FilterTextField = <TData extends Record<string, any>>({
364
364
  />
365
365
  ) : isAutocompleteFilter ? (
366
366
  <Autocomplete
367
+ freeSolo
367
368
  getOptionLabel={(option) => option}
368
369
  onChange={(_e, newValue) => handleChange(newValue)}
369
370
  options={dropdownOptions ?? []}
package/src/locales/ar.ts CHANGED
@@ -14,7 +14,6 @@ export const MRT_Localization_AR: MRT_Localization = {
14
14
  collapseAll: 'إخفاء الكل',
15
15
  columnActions: 'إجراءات العمود',
16
16
  copiedToClipboard: 'نسخ إلى الحافظة',
17
-
18
17
  dropToGroupBy: 'أفلت للمجموعة حسب {column}',
19
18
  edit: 'تعديل',
20
19
  expand: 'إظهار',
@@ -60,6 +59,7 @@ export const MRT_Localization_AR: MRT_Localization = {
60
59
  noResultsFound: 'لم يتم العثور على نتائج',
61
60
  of: 'ل',
62
61
  or: 'أو',
62
+ pin: 'تثبيت',
63
63
  pinToLeft: 'تثبيت جهة اليسار',
64
64
  pinToRight: 'تثبيت على اليمين',
65
65
  resetColumnSize: 'Reset column size',
package/src/locales/bg.ts CHANGED
@@ -59,6 +59,7 @@ export const MRT_Localization_BG: MRT_Localization = {
59
59
  noResultsFound: 'Няма намерени резултати',
60
60
  of: 'от',
61
61
  or: 'или',
62
+ pin: 'Закачи',
62
63
  pinToLeft: 'Закачи отляво',
63
64
  pinToRight: 'Закачи отдясно',
64
65
  resetColumnSize: 'Нулиране на размера на колоната',
package/src/locales/cs.ts CHANGED
@@ -60,6 +60,7 @@ export const MRT_Localization_CS: MRT_Localization = {
60
60
  noResultsFound: 'Nenalezeny žádné výsledky',
61
61
  of: 'z',
62
62
  or: 'nebo',
63
+ pin: 'Připnout',
63
64
  pinToLeft: 'Připnout doleva',
64
65
  pinToRight: 'Připnout doprava',
65
66
  resetColumnSize: 'Resetovat šířku sloupců',
package/src/locales/da.ts CHANGED
@@ -59,6 +59,7 @@ export const MRT_Localization_DA: MRT_Localization = {
59
59
  noResultsFound: 'Ingen resultater fundet',
60
60
  of: 'af',
61
61
  or: 'eller',
62
+ pin: 'Fastgør',
62
63
  pinToLeft: 'Fastgør til venstre',
63
64
  pinToRight: 'Fastgør til højre',
64
65
  resetColumnSize: 'Nulstil kolonnebredde',
package/src/locales/de.ts CHANGED
@@ -59,6 +59,7 @@ export const MRT_Localization_DE: MRT_Localization = {
59
59
  noResultsFound: 'Keine Ergebnisse gefunden',
60
60
  of: 'von',
61
61
  or: 'oder',
62
+ pin: 'Anheften',
62
63
  pinToLeft: 'Links anheften',
63
64
  pinToRight: 'Rechts anheften',
64
65
  resetColumnSize: 'Spaltengröße zurücksetzen',
package/src/locales/es.ts CHANGED
@@ -59,6 +59,7 @@ export const MRT_Localization_ES: MRT_Localization = {
59
59
  noResultsFound: 'No se encontraron resultados',
60
60
  of: 'de',
61
61
  or: 'o',
62
+ pin: 'Anclar',
62
63
  pinToLeft: 'Anclar a la izquierda',
63
64
  pinToRight: 'Anclar a la derecha',
64
65
  resetColumnSize: 'Resetear tamaño de columna',
package/src/locales/et.ts CHANGED
@@ -60,6 +60,7 @@ export const MRT_Localization_ET: MRT_Localization = {
60
60
  noResultsFound: 'Tulemusi ei leitud',
61
61
  of: '/',
62
62
  or: 'või',
63
+ pin: 'Kinnita',
63
64
  pinToLeft: 'Kinnita vasakule',
64
65
  pinToRight: 'Kinnita paremale',
65
66
  resetColumnSize: 'Lähtesta veeru suurus',
package/src/locales/fa.ts CHANGED
@@ -59,6 +59,7 @@ export const MRT_Localization_FA: MRT_Localization = {
59
59
  noResultsFound: 'موردی یافت نشد.',
60
60
  of: 'از',
61
61
  or: 'یا',
62
+ pin: 'پین',
62
63
  pinToLeft: 'پین به چپ',
63
64
  pinToRight: 'پین به راست',
64
65
  resetColumnSize: 'تنظیم مجدد اندازه ستون',
package/src/locales/fi.ts CHANGED
@@ -60,6 +60,7 @@ export const MRT_Localization_FI: MRT_Localization = {
60
60
  noResultsFound: 'Ei tuloksia',
61
61
  of: '/',
62
62
  or: 'tai',
63
+ pin: 'Kiinnitä',
63
64
  pinToLeft: 'Kiinnitä vasemmalle',
64
65
  pinToRight: 'Kiinnitä oikealle',
65
66
  resetColumnSize: 'Nollaa sarakkeen koko',
package/src/locales/fr.ts CHANGED
@@ -59,6 +59,7 @@ export const MRT_Localization_FR: MRT_Localization = {
59
59
  noResultsFound: 'Aucun résultat trouvé',
60
60
  of: 'de',
61
61
  or: 'ou',
62
+ pin: 'Attacher',
62
63
  pinToLeft: 'Épingler à gauche',
63
64
  pinToRight: 'Épingler à droite',
64
65
  resetColumnSize: 'Réinitialiser la taille de la colonne',
package/src/locales/hu.ts CHANGED
@@ -59,6 +59,7 @@ export const MRT_Localization_HU: MRT_Localization = {
59
59
  noResultsFound: 'Nincs találat',
60
60
  of: 'összesen',
61
61
  or: 'vagy',
62
+ pin: 'Rögzítés',
62
63
  pinToLeft: 'Rögzítés balra',
63
64
  pinToRight: 'Rögzítés jobbra',
64
65
  resetColumnSize: 'Oszlop méretének alaphelyzetbe állítása',
package/src/locales/hy.ts CHANGED
@@ -59,6 +59,7 @@ export const MRT_Localization_HY: MRT_Localization = {
59
59
  noResultsFound: 'Արդյունքներ չեն գտնվել',
60
60
  of: '-ից',
61
61
  or: 'կամ',
62
+ pin: 'Կցել',
62
63
  pinToLeft: 'Կցել ձախից',
63
64
  pinToRight: 'Կցել աջից',
64
65
  resetColumnSize: 'Չեղարկել սյունակի չափը',
package/src/locales/id.ts CHANGED
@@ -60,6 +60,7 @@ export const MRT_Localization_ID: MRT_Localization = {
60
60
  noResultsFound: 'Tidak ada hasil yang ditemukan',
61
61
  of: 'dari',
62
62
  or: 'atau',
63
+ pin: 'Sematkan',
63
64
  pinToLeft: 'Sematkan ke kiri',
64
65
  pinToRight: 'Sematkan ke kanan',
65
66
  resetColumnSize: 'Reset ukuran kolom',
package/src/locales/it.ts CHANGED
@@ -59,6 +59,7 @@ export const MRT_Localization_IT: MRT_Localization = {
59
59
  noResultsFound: 'Nessun risultato trovato',
60
60
  of: 'di',
61
61
  or: 'o',
62
+ pin: 'Blocca',
62
63
  pinToLeft: 'Blocca a sinistra',
63
64
  pinToRight: 'Blocca a destra',
64
65
  resetColumnSize: 'Resetta dimensione colonna',
package/src/locales/ja.ts CHANGED
@@ -59,6 +59,7 @@ export const MRT_Localization_JA: MRT_Localization = {
59
59
  noResultsFound: '結果なし',
60
60
  of: '/',
61
61
  or: 'または',
62
+ pin: '固定',
62
63
  pinToLeft: '左に固定',
63
64
  pinToRight: '右に固定',
64
65
  resetColumnSize: '列のサイズをリセット',
package/src/locales/ko.ts CHANGED
@@ -59,6 +59,7 @@ export const MRT_Localization_KO: MRT_Localization = {
59
59
  noResultsFound: '찾은 결과가 없습니다.',
60
60
  of: '/',
61
61
  or: '또는',
62
+ pin: '고정',
62
63
  pinToLeft: '왼쪽에 고정',
63
64
  pinToRight: '오른쪽에 고정',
64
65
  resetColumnSize: '열 크기 초기화',
package/src/locales/nl.ts CHANGED
@@ -59,6 +59,7 @@ export const MRT_Localization_NL: MRT_Localization = {
59
59
  noResultsFound: 'Geen resultaten gevonden',
60
60
  of: 'van',
61
61
  or: 'of',
62
+ pin: 'Vastzetten',
62
63
  pinToLeft: 'Links vastzetten',
63
64
  pinToRight: 'Rechts vastzetten',
64
65
  resetColumnSize: 'Kolombreedte resetten',
package/src/locales/no.ts CHANGED
@@ -59,6 +59,7 @@ export const MRT_Localization_NO: MRT_Localization = {
59
59
  noRecordsToDisplay: 'Ingen poster å vise',
60
60
  noResultsFound: 'Ingen resultater funnet',
61
61
  of: 'av',
62
+ pin: 'Fest',
62
63
  pinToLeft: 'Fest til venstre',
63
64
  pinToRight: 'Fest til høyre',
64
65
  or: 'eller',
package/src/locales/np.ts CHANGED
@@ -42,7 +42,8 @@ export const MRT_Localization_NP: MRT_Localization = {
42
42
  filterNotEquals: 'असमान',
43
43
  filterStartsWith: 'सुरुमा समावेश गरिएको',
44
44
  filterWeakEquals: 'असमान',
45
- filteringByColumn: '{column} द्वारा फिल्टर गर्दै - {filterType} {filterValue}',
45
+ filteringByColumn:
46
+ '{column} द्वारा फिल्टर गर्दै - {filterType} {filterValue}',
46
47
  goToFirstPage: 'पहिलो पृष्ठमा जानुहोस्',
47
48
  goToLastPage: 'अन्तिम पृष्ठमा जानुहोस्',
48
49
  goToNextPage: 'अर्को पृष्ठमा जानुहोस्',
@@ -90,5 +91,5 @@ export const MRT_Localization_NP: MRT_Localization = {
90
91
  toggleVisibility: 'दृश्यता परिवर्तन गर्नुहोस्',
91
92
  ungroupByColumn: '{column} का आधारमा समूह हटाउनुहोस्',
92
93
  unpin: 'अनपिन गर्नुहोस्',
93
- unpinAll: 'सबै अनपिन गर्नुहोस्'
94
+ unpinAll: 'सबै अनपिन गर्नुहोस्',
94
95
  };
package/src/locales/pl.ts CHANGED
@@ -59,6 +59,7 @@ export const MRT_Localization_PL: MRT_Localization = {
59
59
  noResultsFound: 'Brak wyników',
60
60
  of: 'z',
61
61
  or: 'lub',
62
+ pin: 'Przypnij',
62
63
  pinToLeft: 'Przypnij po lewej',
63
64
  pinToRight: 'Przypnij po prawej',
64
65
  resetColumnSize: 'Resetuj wielkość kolumn',
@@ -59,6 +59,7 @@ export const MRT_Localization_PT_BR: MRT_Localization = {
59
59
  noResultsFound: 'Nenhum resultado encontrado',
60
60
  of: 'de',
61
61
  or: 'ou',
62
+ pin: 'Fixar',
62
63
  pinToLeft: 'Fixar à esquerda',
63
64
  pinToRight: 'Fixar à direita',
64
65
  resetColumnSize: 'Restaurar tamanho da coluna',
package/src/locales/pt.ts CHANGED
@@ -59,6 +59,7 @@ export const MRT_Localization_PT: MRT_Localization = {
59
59
  noResultsFound: 'Nenhum resultado encontrado',
60
60
  of: 'de',
61
61
  or: 'ou',
62
+ pin: 'Fixar',
62
63
  pinToLeft: 'Fixar à esquerda',
63
64
  pinToRight: 'Fixar à direita',
64
65
  resetColumnSize: 'Restaurar tamanho da coluna',
package/src/locales/ro.ts CHANGED
@@ -59,6 +59,7 @@ export const MRT_Localization_RO: MRT_Localization = {
59
59
  noResultsFound: 'Niciun rezultat găsit',
60
60
  of: 'din',
61
61
  or: 'sau',
62
+ pin: 'Fixează',
62
63
  pinToLeft: 'Fixează la stanga',
63
64
  pinToRight: 'Fixează la dreapta',
64
65
  resetColumnSize: 'Resetează dimensiune coloană',
package/src/locales/ru.ts CHANGED
@@ -59,6 +59,7 @@ export const MRT_Localization_RU: MRT_Localization = {
59
59
  noResultsFound: 'Результатов не найдено',
60
60
  of: 'из',
61
61
  or: 'или',
62
+ pin: 'Прикрепить',
62
63
  pinToLeft: 'Прикрепить слева',
63
64
  pinToRight: 'Прикрепить справа',
64
65
  resetColumnSize: 'Сбросить размер колонок',
package/src/locales/sk.ts CHANGED
@@ -60,6 +60,7 @@ export const MRT_Localization_SK: MRT_Localization = {
60
60
  noResultsFound: 'Nenájdené žiadne výsledky',
61
61
  of: 'z',
62
62
  or: 'alebo',
63
+ pin: 'Pripnúť',
63
64
  pinToLeft: 'Pripnúť doľava',
64
65
  pinToRight: 'Pripnúť doprava',
65
66
  resetColumnSize: 'Resetovať šírku stĺpcov',
@@ -59,6 +59,7 @@ export const MRT_Localization_SR_CYRL_RS: MRT_Localization = {
59
59
  noResultsFound: 'Нема резултата',
60
60
  of: 'од',
61
61
  or: 'или',
62
+ pin: 'Закачи',
62
63
  pinToLeft: 'Закачи лево',
63
64
  pinToRight: 'Закачи десно',
64
65
  resetColumnSize: 'Ресетуј ширину колоне',
@@ -59,6 +59,7 @@ export const MRT_Localization_SR_LATN_RS: MRT_Localization = {
59
59
  noResultsFound: 'Nema rezultata',
60
60
  of: 'od',
61
61
  or: 'ili',
62
+ pin: 'Zakači',
62
63
  pinToLeft: 'Zakači levo',
63
64
  pinToRight: 'Zakači desno',
64
65
  resetColumnSize: 'Resetuj širinu kolone',
package/src/locales/sv.ts CHANGED
@@ -44,11 +44,11 @@ export const MRT_Localization_SV: MRT_Localization = {
44
44
  filterWeakEquals: 'Lika med',
45
45
  filteringByColumn: 'Filtrering efter {column} - {filterType} {filterValue}',
46
46
  goToFirstPage: 'Gå till första sidan',
47
- goToLastPage: 'Gå till sista sidan ',
47
+ goToLastPage: 'Gå till sista sidan',
48
48
  goToNextPage: 'Gå till nästa sida',
49
49
  goToPreviousPage: 'Gå till föregående sida',
50
50
  grab: 'Greppa',
51
- groupByColumn: 'Guppera efter {column}',
51
+ groupByColumn: 'Gruppera efter {column}',
52
52
  groupedBy: 'Gruppera efter ',
53
53
  hideAll: 'Göm alla',
54
54
  hideColumn: 'Göm {column} kolumn',
@@ -59,6 +59,7 @@ export const MRT_Localization_SV: MRT_Localization = {
59
59
  noResultsFound: 'Inga resultat funna',
60
60
  of: 'av',
61
61
  or: 'eller',
62
+ pin: 'Fäst',
62
63
  pinToLeft: 'Fäst till vänster',
63
64
  pinToRight: 'Fäst till höger',
64
65
  resetColumnSize: 'Återställ kolumnstorlek',
package/src/locales/tr.ts CHANGED
@@ -59,6 +59,7 @@ export const MRT_Localization_TR: MRT_Localization = {
59
59
  noResultsFound: 'Herhangi Bir Sonuç Bulunamadı',
60
60
  of: 'of',
61
61
  or: 'veya',
62
+ pin: 'Sabitle',
62
63
  pinToLeft: 'Sola Sabitle',
63
64
  pinToRight: 'Sağa Sabitle',
64
65
  resetColumnSize: 'Sütun Boyutunu Sıfırla',
package/src/locales/uk.ts CHANGED
@@ -59,6 +59,7 @@ export const MRT_Localization_UK: MRT_Localization = {
59
59
  noResultsFound: 'Нічого не знайдено',
60
60
  of: 'з',
61
61
  or: 'або',
62
+ pin: 'Закріпити',
62
63
  pinToLeft: 'Закріпити ліворуч',
63
64
  pinToRight: 'Закріпити праворуч',
64
65
  resetColumnSize: 'Скинути розмір стовпця',
package/src/locales/vi.ts CHANGED
@@ -59,6 +59,7 @@ export const MRT_Localization_VI: MRT_Localization = {
59
59
  noResultsFound: 'Không có kết quả nào được tìm thấy',
60
60
  of: 'trên',
61
61
  or: 'hoặc',
62
+ pin: 'Ghim',
62
63
  pinToLeft: 'Ghim sang trái',
63
64
  pinToRight: 'Ghim sang phải',
64
65
  resetColumnSize: 'Đặt lại kích thước cột',
@@ -59,6 +59,7 @@ export const MRT_Localization_ZH_HANS: MRT_Localization = {
59
59
  noResultsFound: '未找到结果',
60
60
  of: '/',
61
61
  or: '或',
62
+ pin: '固定',
62
63
  pinToLeft: '固定至左边',
63
64
  pinToRight: '固定至右边',
64
65
  resetColumnSize: '重置栏位大小',
@@ -59,6 +59,7 @@ export const MRT_Localization_ZH_HANT: MRT_Localization = {
59
59
  noResultsFound: '未找到結果',
60
60
  of: '/',
61
61
  or: '或',
62
+ pin: '固定',
62
63
  pinToLeft: '固定至左邊',
63
64
  pinToRight: '固定至右邊',
64
65
  resetColumnSize: '重置欄位大小',
@@ -2,12 +2,15 @@ import { useCallback, useMemo } from 'react';
2
2
  import {
3
3
  type Range,
4
4
  type Virtualizer,
5
- defaultRangeExtractor,
6
5
  useVirtualizer,
7
6
  } from '@tanstack/react-virtual';
8
7
  import Table from '@mui/material/Table';
9
8
  import { MRT_TableBody, Memo_MRT_TableBody } from '../body/MRT_TableBody';
10
- import { parseCSSVarId, parseFromValuesOrFunc } from '../column.utils';
9
+ import {
10
+ extraIndexRangeExtractor,
11
+ parseCSSVarId,
12
+ parseFromValuesOrFunc,
13
+ } from '../column.utils';
11
14
  import { MRT_TableFooter } from '../footer/MRT_TableFooter';
12
15
  import { MRT_TableHead } from '../head/MRT_TableHead';
13
16
  import { type MRT_TableInstance } from '../types';
@@ -43,6 +46,7 @@ export const MRT_Table = <TData extends Record<string, any>>({
43
46
  columnSizing,
44
47
  columnSizingInfo,
45
48
  columnVisibility,
49
+ draggingColumn,
46
50
  isFullScreen,
47
51
  } = getState();
48
52
 
@@ -93,6 +97,10 @@ export const MRT_Table = <TData extends Record<string, any>>({
93
97
  [columnPinning, enableColumnVirtualization, enableColumnPinning],
94
98
  );
95
99
 
100
+ const draggingColumnIndex = table
101
+ .getVisibleLeafColumns()
102
+ .findIndex((c) => c.id === draggingColumn?.id);
103
+
96
104
  const columnVirtualizer:
97
105
  | Virtualizer<HTMLDivElement, HTMLTableCellElement>
98
106
  | undefined = enableColumnVirtualization
@@ -103,14 +111,20 @@ export const MRT_Table = <TData extends Record<string, any>>({
103
111
  horizontal: true,
104
112
  overscan: 3,
105
113
  rangeExtractor: useCallback(
106
- (range: Range) => [
107
- ...new Set([
108
- ...leftPinnedIndexes,
109
- ...defaultRangeExtractor(range),
110
- ...rightPinnedIndexes,
111
- ]),
112
- ],
113
- [leftPinnedIndexes, rightPinnedIndexes],
114
+ (range: Range) => {
115
+ const newIndexs = extraIndexRangeExtractor(
116
+ range,
117
+ draggingColumnIndex,
118
+ );
119
+ return [
120
+ ...new Set([
121
+ ...leftPinnedIndexes,
122
+ ...newIndexs,
123
+ ...rightPinnedIndexes,
124
+ ]),
125
+ ];
126
+ },
127
+ [leftPinnedIndexes, rightPinnedIndexes, draggingColumnIndex],
114
128
  ),
115
129
  ...columnVirtualizerProps,
116
130
  })