material-react-table 1.7.4 → 1.8.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 (44) hide show
  1. package/README.md +5 -13
  2. package/dist/cjs/index.js +79 -37
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/types/MaterialReactTable.d.ts +16 -8
  5. package/dist/cjs/types/body/MRT_TableBody.d.ts +3 -4
  6. package/dist/cjs/types/body/MRT_TableBodyCell.d.ts +2 -3
  7. package/dist/cjs/types/body/MRT_TableBodyRow.d.ts +4 -5
  8. package/dist/cjs/types/body/MRT_TableDetailPanel.d.ts +2 -3
  9. package/dist/cjs/types/footer/MRT_TableFooter.d.ts +2 -3
  10. package/dist/cjs/types/footer/MRT_TableFooterRow.d.ts +2 -3
  11. package/dist/cjs/types/head/MRT_TableHead.d.ts +2 -3
  12. package/dist/cjs/types/head/MRT_TableHeadRow.d.ts +2 -3
  13. package/dist/cjs/types/table/MRT_TableRoot.d.ts +1 -272
  14. package/dist/esm/material-react-table.esm.js +77 -38
  15. package/dist/esm/material-react-table.esm.js.map +1 -1
  16. package/dist/esm/types/MaterialReactTable.d.ts +16 -8
  17. package/dist/esm/types/body/MRT_TableBody.d.ts +3 -4
  18. package/dist/esm/types/body/MRT_TableBodyCell.d.ts +2 -3
  19. package/dist/esm/types/body/MRT_TableBodyRow.d.ts +4 -5
  20. package/dist/esm/types/body/MRT_TableDetailPanel.d.ts +2 -3
  21. package/dist/esm/types/footer/MRT_TableFooter.d.ts +2 -3
  22. package/dist/esm/types/footer/MRT_TableFooterRow.d.ts +2 -3
  23. package/dist/esm/types/head/MRT_TableHead.d.ts +2 -3
  24. package/dist/esm/types/head/MRT_TableHeadRow.d.ts +2 -3
  25. package/dist/esm/types/table/MRT_TableRoot.d.ts +1 -272
  26. package/dist/index.d.ts +16 -7
  27. package/package.json +2 -2
  28. package/src/MaterialReactTable.tsx +44 -7
  29. package/src/body/MRT_TableBody.tsx +11 -10
  30. package/src/body/MRT_TableBodyCell.tsx +8 -12
  31. package/src/body/MRT_TableBodyCellValue.tsx +1 -0
  32. package/src/body/MRT_TableBodyRow.tsx +14 -7
  33. package/src/body/MRT_TableDetailPanel.tsx +2 -3
  34. package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +4 -1
  35. package/src/column.utils.ts +6 -1
  36. package/src/footer/MRT_TableFooter.tsx +2 -3
  37. package/src/footer/MRT_TableFooterRow.tsx +7 -3
  38. package/src/head/MRT_TableHead.tsx +2 -3
  39. package/src/head/MRT_TableHeadRow.tsx +7 -3
  40. package/src/inputs/MRT_EditCellTextField.tsx +38 -2
  41. package/src/menus/MRT_FilterOptionMenu.tsx +14 -5
  42. package/src/menus/MRT_RowActionMenu.tsx +12 -10
  43. package/src/table/MRT_Table.tsx +2 -3
  44. package/src/table/MRT_TableRoot.tsx +33 -19
@@ -26,8 +26,7 @@ import {
26
26
  showExpandColumn,
27
27
  getColumnId,
28
28
  } from '../column.utils';
29
- import type { GroupingState, TableState } from '@tanstack/react-table';
30
- import type {
29
+ import {
31
30
  MRT_Cell,
32
31
  MRT_Column,
33
32
  MRT_ColumnDef,
@@ -37,11 +36,14 @@ import type {
37
36
  MRT_TableInstance,
38
37
  MRT_TableState,
39
38
  MaterialReactTableProps,
39
+ MRT_DensityState,
40
+ MRT_ColumnOrderState,
41
+ MRT_GroupingState,
40
42
  } from '..';
41
43
 
42
- export const MRT_TableRoot = <TData extends Record<string, any> = {}>(
44
+ export const MRT_TableRoot: any = <TData extends Record<string, any> = {}>(
43
45
  props: MaterialReactTableProps<TData> & { localization: MRT_Localization },
44
- ) => {
46
+ ): JSX.Element => {
45
47
  const bottomToolbarRef = useRef<HTMLDivElement>(null);
46
48
  const editInputRefs = useRef<Record<string, HTMLInputElement>>({});
47
49
  const filterInputRefs = useRef<Record<string, HTMLInputElement>>({});
@@ -76,10 +78,10 @@ export const MRT_TableRoot = <TData extends Record<string, any> = {}>(
76
78
  ),
77
79
  ),
78
80
  );
79
- const [columnOrder, setColumnOrder] = useState(
81
+ const [columnOrder, setColumnOrder] = useState<MRT_ColumnOrderState>(
80
82
  initialState.columnOrder ?? [],
81
83
  );
82
- const [density, setDensity] = useState(
84
+ const [density, setDensity] = useState<MRT_DensityState>(
83
85
  initialState?.density ?? 'comfortable',
84
86
  );
85
87
  const [draggingColumn, setDraggingColumn] =
@@ -96,7 +98,7 @@ export const MRT_TableRoot = <TData extends Record<string, any> = {}>(
96
98
  const [globalFilterFn, setGlobalFilterFn] = useState<MRT_FilterOption>(
97
99
  initialState.globalFilterFn ?? 'fuzzy',
98
100
  );
99
- const [grouping, setGrouping] = useState<GroupingState>(
101
+ const [grouping, setGrouping] = useState<MRT_GroupingState>(
100
102
  initialState.grouping ?? [],
101
103
  );
102
104
  const [hoveredColumn, setHoveredColumn] = useState<
@@ -105,19 +107,19 @@ export const MRT_TableRoot = <TData extends Record<string, any> = {}>(
105
107
  const [hoveredRow, setHoveredRow] = useState<
106
108
  MRT_Row<TData> | { id: string } | null
107
109
  >(initialState.hoveredRow ?? null);
108
- const [isFullScreen, setIsFullScreen] = useState(
110
+ const [isFullScreen, setIsFullScreen] = useState<boolean>(
109
111
  initialState?.isFullScreen ?? false,
110
112
  );
111
- const [showAlertBanner, setShowAlertBanner] = useState(
113
+ const [showAlertBanner, setShowAlertBanner] = useState<boolean>(
112
114
  props.initialState?.showAlertBanner ?? false,
113
115
  );
114
- const [showColumnFilters, setShowFilters] = useState(
116
+ const [showColumnFilters, setShowFilters] = useState<boolean>(
115
117
  initialState?.showColumnFilters ?? false,
116
118
  );
117
- const [showGlobalFilter, setShowGlobalFilter] = useState(
119
+ const [showGlobalFilter, setShowGlobalFilter] = useState<boolean>(
118
120
  initialState?.showGlobalFilter ?? false,
119
121
  );
120
- const [showToolbarDropZone, setShowToolbarDropZone] = useState(
122
+ const [showToolbarDropZone, setShowToolbarDropZone] = useState<boolean>(
121
123
  initialState?.showToolbarDropZone ?? false,
122
124
  );
123
125
 
@@ -125,14 +127,18 @@ export const MRT_TableRoot = <TData extends Record<string, any> = {}>(
125
127
  () =>
126
128
  (
127
129
  [
128
- columnOrder.includes('mrt-row-drag') && {
130
+ (props.state?.columnOrder ?? columnOrder).includes(
131
+ 'mrt-row-drag',
132
+ ) && {
129
133
  header: props.localization.move,
130
134
  size: 60,
131
135
  ...props.defaultDisplayColumn,
132
136
  ...props.displayColumnDefOptions?.['mrt-row-drag'],
133
137
  id: 'mrt-row-drag',
134
138
  },
135
- columnOrder.includes('mrt-row-actions') && {
139
+ (props.state?.columnOrder ?? columnOrder).includes(
140
+ 'mrt-row-actions',
141
+ ) && {
136
142
  Cell: ({ cell, row }) => (
137
143
  <MRT_ToggleRowActionMenuButton
138
144
  cell={cell as any}
@@ -146,8 +152,10 @@ export const MRT_TableRoot = <TData extends Record<string, any> = {}>(
146
152
  ...props.displayColumnDefOptions?.['mrt-row-actions'],
147
153
  id: 'mrt-row-actions',
148
154
  },
149
- columnOrder.includes('mrt-row-expand') &&
150
- showExpandColumn(props, grouping) && {
155
+ (props.state?.columnOrder ?? columnOrder).includes(
156
+ 'mrt-row-expand',
157
+ ) &&
158
+ showExpandColumn(props, props.state?.grouping ?? grouping) && {
151
159
  Cell: ({ row }) => (
152
160
  <MRT_ExpandButton row={row as any} table={table as any} />
153
161
  ),
@@ -160,7 +168,9 @@ export const MRT_TableRoot = <TData extends Record<string, any> = {}>(
160
168
  ...props.displayColumnDefOptions?.['mrt-row-expand'],
161
169
  id: 'mrt-row-expand',
162
170
  },
163
- columnOrder.includes('mrt-row-select') && {
171
+ (props.state?.columnOrder ?? columnOrder).includes(
172
+ 'mrt-row-select',
173
+ ) && {
164
174
  Cell: ({ row }) => (
165
175
  <MRT_SelectCheckbox row={row as any} table={table as any} />
166
176
  ),
@@ -174,7 +184,9 @@ export const MRT_TableRoot = <TData extends Record<string, any> = {}>(
174
184
  ...props.displayColumnDefOptions?.['mrt-row-select'],
175
185
  id: 'mrt-row-select',
176
186
  },
177
- columnOrder.includes('mrt-row-numbers') && {
187
+ (props.state?.columnOrder ?? columnOrder).includes(
188
+ 'mrt-row-numbers',
189
+ ) && {
178
190
  Cell: ({ row }) => row.index + 1,
179
191
  Header: () => props.localization.rowNumber,
180
192
  header: props.localization.rowNumbers,
@@ -206,6 +218,8 @@ export const MRT_TableRoot = <TData extends Record<string, any> = {}>(
206
218
  props.localization,
207
219
  props.positionActionsColumn,
208
220
  props.renderDetailPanel,
221
+ props.state?.columnOrder,
222
+ props.state?.grouping,
209
223
  ],
210
224
  );
211
225
 
@@ -289,7 +303,7 @@ export const MRT_TableRoot = <TData extends Record<string, any> = {}>(
289
303
  showGlobalFilter,
290
304
  showToolbarDropZone,
291
305
  ...props.state,
292
- } as TableState,
306
+ },
293
307
  }),
294
308
  refs: {
295
309
  bottomToolbarRef,