material-react-table 1.5.0-beta.0 → 1.5.0-beta.2
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.
- package/dist/cjs/index.js +53 -39
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/MaterialReactTable.d.ts +1 -1
- package/dist/esm/material-react-table.esm.js +53 -39
- package/dist/esm/material-react-table.esm.js.map +1 -1
- package/dist/esm/types/MaterialReactTable.d.ts +1 -1
- package/dist/index.d.ts +1 -1
- package/package.json +1 -1
- package/src/MaterialReactTable.tsx +18 -3
- package/src/column.utils.ts +25 -2
- package/src/footer/MRT_TableFooterCell.tsx +1 -4
- package/src/footer/MRT_TableFooterRow.tsx +1 -5
- package/src/head/MRT_TableHeadCell.tsx +1 -4
- package/src/head/MRT_TableHeadRow.tsx +1 -5
- package/src/table/MRT_Table.tsx +22 -27
- package/src/table/MRT_TableRoot.tsx +1 -1
@@ -709,5 +709,5 @@ export type MaterialReactTableProps<TData extends Record<string, any> = {}> = Om
|
|
709
709
|
*/
|
710
710
|
virtualizerProps?: any;
|
711
711
|
};
|
712
|
-
declare const MaterialReactTable: <TData extends Record<string, any> = {}>({ aggregationFns, autoResetExpanded, columnResizeMode, defaultColumn, defaultDisplayColumn, editingMode, enableBottomToolbar, enableColumnActions, enableColumnFilters, enableColumnOrdering, enableColumnResizing, enableDensityToggle, enableExpandAll, enableFilters, enableFullScreenToggle, enableGlobalFilter, enableGlobalFilterRankedResults, enableGrouping, enableHiding, enableMultiRowSelection, enableMultiSort, enablePagination, enablePinning, enableRowSelection, enableSelectAll, enableSorting, enableStickyHeader, enableTableFooter, enableTableHead, enableToolbarInternalActions, enableTopToolbar, filterFns, icons, layoutMode, localization, positionActionsColumn, positionExpandColumn, positionGlobalFilter, positionPagination, positionToolbarAlertBanner, positionToolbarDropZone, rowNumberMode, selectAllMode, sortingFns, ...rest }: MaterialReactTableProps<TData>) => JSX.Element;
|
712
|
+
declare const MaterialReactTable: <TData extends Record<string, any> = {}>({ aggregationFns, autoResetExpanded, columnResizeMode, defaultColumn, defaultDisplayColumn, editingMode, enableBottomToolbar, enableColumnActions, enableColumnFilters, enableColumnOrdering, enableColumnResizing, enableDensityToggle, enableExpandAll, enableFilters, enableFullScreenToggle, enableGlobalFilter, enableGlobalFilterRankedResults, enableGrouping, enableHiding, enableMultiRowSelection, enableMultiSort, enablePagination, enablePinning, enableRowSelection, enableSelectAll, enableSorting, enableStickyHeader, enableTableFooter, enableTableHead, enableToolbarInternalActions, enableTopToolbar, filterFns, icons, layoutMode, localization, manualFiltering, manualGrouping, manualPagination, manualSorting, positionActionsColumn, positionExpandColumn, positionGlobalFilter, positionPagination, positionToolbarAlertBanner, positionToolbarDropZone, rowNumberMode, selectAllMode, sortingFns, ...rest }: MaterialReactTableProps<TData>) => JSX.Element;
|
713
713
|
export default MaterialReactTable;
|
package/dist/index.d.ts
CHANGED
@@ -832,7 +832,7 @@ type MaterialReactTableProps<TData extends Record<string, any> = {}> = Omit<Part
|
|
832
832
|
*/
|
833
833
|
virtualizerProps?: any;
|
834
834
|
};
|
835
|
-
declare const MaterialReactTable: <TData extends Record<string, any> = {}>({ aggregationFns, autoResetExpanded, columnResizeMode, defaultColumn, defaultDisplayColumn, editingMode, enableBottomToolbar, enableColumnActions, enableColumnFilters, enableColumnOrdering, enableColumnResizing, enableDensityToggle, enableExpandAll, enableFilters, enableFullScreenToggle, enableGlobalFilter, enableGlobalFilterRankedResults, enableGrouping, enableHiding, enableMultiRowSelection, enableMultiSort, enablePagination, enablePinning, enableRowSelection, enableSelectAll, enableSorting, enableStickyHeader, enableTableFooter, enableTableHead, enableToolbarInternalActions, enableTopToolbar, filterFns, icons, layoutMode, localization, positionActionsColumn, positionExpandColumn, positionGlobalFilter, positionPagination, positionToolbarAlertBanner, positionToolbarDropZone, rowNumberMode, selectAllMode, sortingFns, ...rest }: MaterialReactTableProps<TData>) => JSX.Element;
|
835
|
+
declare const MaterialReactTable: <TData extends Record<string, any> = {}>({ aggregationFns, autoResetExpanded, columnResizeMode, defaultColumn, defaultDisplayColumn, editingMode, enableBottomToolbar, enableColumnActions, enableColumnFilters, enableColumnOrdering, enableColumnResizing, enableDensityToggle, enableExpandAll, enableFilters, enableFullScreenToggle, enableGlobalFilter, enableGlobalFilterRankedResults, enableGrouping, enableHiding, enableMultiRowSelection, enableMultiSort, enablePagination, enablePinning, enableRowSelection, enableSelectAll, enableSorting, enableStickyHeader, enableTableFooter, enableTableHead, enableToolbarInternalActions, enableTopToolbar, filterFns, icons, layoutMode, localization, manualFiltering, manualGrouping, manualPagination, manualSorting, positionActionsColumn, positionExpandColumn, positionGlobalFilter, positionPagination, positionToolbarAlertBanner, positionToolbarDropZone, rowNumberMode, selectAllMode, sortingFns, ...rest }: MaterialReactTableProps<TData>) => JSX.Element;
|
836
836
|
|
837
837
|
interface Props$b<TData extends Record<string, any> = {}> {
|
838
838
|
cell: MRT_Cell<TData>;
|
package/package.json
CHANGED
@@ -1127,6 +1127,10 @@ const MaterialReactTable = <TData extends Record<string, any> = {}>({
|
|
1127
1127
|
icons,
|
1128
1128
|
layoutMode = 'semantic',
|
1129
1129
|
localization,
|
1130
|
+
manualFiltering,
|
1131
|
+
manualGrouping,
|
1132
|
+
manualPagination,
|
1133
|
+
manualSorting,
|
1130
1134
|
positionActionsColumn = 'first',
|
1131
1135
|
positionExpandColumn = 'first',
|
1132
1136
|
positionGlobalFilter = 'right',
|
@@ -1138,7 +1142,7 @@ const MaterialReactTable = <TData extends Record<string, any> = {}>({
|
|
1138
1142
|
sortingFns,
|
1139
1143
|
...rest
|
1140
1144
|
}: MaterialReactTableProps<TData>) => {
|
1141
|
-
const _icons = useMemo(() => ({ ...MRT_Default_Icons, ...icons }), []);
|
1145
|
+
const _icons = useMemo(() => ({ ...MRT_Default_Icons, ...icons }), [icons]);
|
1142
1146
|
const _localization = useMemo(
|
1143
1147
|
() => ({
|
1144
1148
|
...MRT_Localization_EN,
|
@@ -1154,14 +1158,14 @@ const MaterialReactTable = <TData extends Record<string, any> = {}>({
|
|
1154
1158
|
const _sortingFns = useMemo(() => ({ ...MRT_SortingFns, ...sortingFns }), []);
|
1155
1159
|
const _defaultColumn = useMemo<Partial<MRT_ColumnDef<TData>>>(
|
1156
1160
|
() => ({ ...MRT_DefaultColumn, ...defaultColumn }),
|
1157
|
-
[],
|
1161
|
+
[defaultColumn],
|
1158
1162
|
);
|
1159
1163
|
const _defaultDisplayColumn = useMemo<Partial<MRT_ColumnDef<TData>>>(
|
1160
1164
|
() => ({
|
1161
1165
|
...(MRT_DefaultDisplayColumn as Partial<MRT_ColumnDef<TData>>),
|
1162
1166
|
...defaultDisplayColumn,
|
1163
1167
|
}),
|
1164
|
-
[],
|
1168
|
+
[defaultDisplayColumn],
|
1165
1169
|
);
|
1166
1170
|
|
1167
1171
|
if (rest.enableRowVirtualization || rest.enableColumnVirtualization) {
|
@@ -1169,6 +1173,13 @@ const MaterialReactTable = <TData extends Record<string, any> = {}>({
|
|
1169
1173
|
enableStickyHeader = true;
|
1170
1174
|
}
|
1171
1175
|
|
1176
|
+
if (!rest.data?.length) {
|
1177
|
+
manualFiltering = true;
|
1178
|
+
manualGrouping = true;
|
1179
|
+
manualPagination = true;
|
1180
|
+
manualSorting = true;
|
1181
|
+
}
|
1182
|
+
|
1172
1183
|
return (
|
1173
1184
|
<MRT_TableRoot
|
1174
1185
|
aggregationFns={_aggregationFns}
|
@@ -1206,6 +1217,10 @@ const MaterialReactTable = <TData extends Record<string, any> = {}>({
|
|
1206
1217
|
icons={_icons}
|
1207
1218
|
layoutMode={layoutMode}
|
1208
1219
|
localization={_localization}
|
1220
|
+
manualFiltering={manualFiltering}
|
1221
|
+
manualGrouping={manualGrouping}
|
1222
|
+
manualPagination={manualPagination}
|
1223
|
+
manualSorting={manualSorting}
|
1209
1224
|
positionActionsColumn={positionActionsColumn}
|
1210
1225
|
positionExpandColumn={positionExpandColumn}
|
1211
1226
|
positionGlobalFilter={positionGlobalFilter}
|
package/src/column.utils.ts
CHANGED
@@ -221,7 +221,7 @@ export const getIsFirstRightPinnedColumn = (column: MRT_Column) => {
|
|
221
221
|
|
222
222
|
export const getTotalRight = (table: MRT_TableInstance, column: MRT_Column) => {
|
223
223
|
return (
|
224
|
-
(table.getRightLeafHeaders().length - 1 - column.getPinnedIndex()) *
|
224
|
+
(table.getRightLeafHeaders().length - 1 - column.getPinnedIndex()) * 200
|
225
225
|
);
|
226
226
|
};
|
227
227
|
|
@@ -253,6 +253,26 @@ export const getCommonCellStyles = ({
|
|
253
253
|
column.getIsPinned() === 'left'
|
254
254
|
? `${column.getStart('left')}px`
|
255
255
|
: undefined,
|
256
|
+
ml:
|
257
|
+
table.options.enableColumnVirtualization &&
|
258
|
+
column.getIsPinned() === 'left' &&
|
259
|
+
column.getPinnedIndex() === 0
|
260
|
+
? `-${
|
261
|
+
column.getSize() *
|
262
|
+
(table.getState().columnPinning.left?.length ?? 1) *
|
263
|
+
1.2
|
264
|
+
}px`
|
265
|
+
: undefined,
|
266
|
+
mr:
|
267
|
+
table.options.enableColumnVirtualization &&
|
268
|
+
column.getIsPinned() === 'right' &&
|
269
|
+
column.getPinnedIndex() === table.getVisibleLeafColumns().length - 1
|
270
|
+
? `-${
|
271
|
+
column.getSize() *
|
272
|
+
(table.getState().columnPinning.right?.length ?? 1) *
|
273
|
+
1.2
|
274
|
+
}px`
|
275
|
+
: undefined,
|
256
276
|
opacity:
|
257
277
|
table.getState().draggingColumn?.id === column.id ||
|
258
278
|
table.getState().hoveredColumn?.id === column.id
|
@@ -266,7 +286,10 @@ export const getCommonCellStyles = ({
|
|
266
286
|
column.getIsPinned() === 'right'
|
267
287
|
? `${getTotalRight(table, column)}px`
|
268
288
|
: undefined,
|
269
|
-
transition:
|
289
|
+
transition:
|
290
|
+
table.options.enableColumnVirtualization || column.getIsResizing()
|
291
|
+
? 'none'
|
292
|
+
: `all 150ms ease-in-out`,
|
270
293
|
...(tableCellProps?.sx instanceof Function
|
271
294
|
? tableCellProps.sx(theme)
|
272
295
|
: (tableCellProps?.sx as any)),
|
@@ -8,10 +8,7 @@ interface Props {
|
|
8
8
|
table: MRT_TableInstance;
|
9
9
|
}
|
10
10
|
|
11
|
-
export const MRT_TableFooterCell: FC<Props> = ({
|
12
|
-
footer,
|
13
|
-
table,
|
14
|
-
}) => {
|
11
|
+
export const MRT_TableFooterCell: FC<Props> = ({ footer, table }) => {
|
15
12
|
const {
|
16
13
|
getState,
|
17
14
|
options: { layoutMode, muiTableFooterCellProps },
|
@@ -59,11 +59,7 @@ export const MRT_TableFooterRow: FC<Props> = ({
|
|
59
59
|
: (footerOrVirtualFooter as MRT_Header);
|
60
60
|
|
61
61
|
return (
|
62
|
-
<MRT_TableFooterCell
|
63
|
-
footer={footer}
|
64
|
-
key={footer.id}
|
65
|
-
table={table}
|
66
|
-
/>
|
62
|
+
<MRT_TableFooterCell footer={footer} key={footer.id} table={table} />
|
67
63
|
);
|
68
64
|
})}
|
69
65
|
{virtualPaddingRight ? (
|
@@ -17,10 +17,7 @@ interface Props {
|
|
17
17
|
table: MRT_TableInstance;
|
18
18
|
}
|
19
19
|
|
20
|
-
export const MRT_TableHeadCell: FC<Props> = ({
|
21
|
-
header,
|
22
|
-
table,
|
23
|
-
}) => {
|
20
|
+
export const MRT_TableHeadCell: FC<Props> = ({ header, table }) => {
|
24
21
|
const theme = useTheme();
|
25
22
|
const {
|
26
23
|
getState,
|
@@ -51,11 +51,7 @@ export const MRT_TableHeadRow: FC<Props> = ({
|
|
51
51
|
: (headerOrVirtualHeader as MRT_Header);
|
52
52
|
|
53
53
|
return (
|
54
|
-
<MRT_TableHeadCell
|
55
|
-
header={header}
|
56
|
-
key={header.id}
|
57
|
-
table={table}
|
58
|
-
/>
|
54
|
+
<MRT_TableHeadCell header={header} key={header.id} table={table} />
|
59
55
|
);
|
60
56
|
})}
|
61
57
|
{virtualPaddingRight ? (
|
package/src/table/MRT_Table.tsx
CHANGED
@@ -52,25 +52,23 @@ export const MRT_Table: FC<Props> = ({ table }) => {
|
|
52
52
|
.getRowModel()
|
53
53
|
.rows[0]?.getCenterVisibleCells()
|
54
54
|
?.slice(0, 16)
|
55
|
-
?.map((cell) => cell.column.getSize() * 1.
|
55
|
+
?.map((cell) => cell.column.getSize() * 1.2) ?? [];
|
56
56
|
return columnsWidths.reduce((a, b) => a + b, 0) / columnsWidths.length;
|
57
57
|
}, [table.getRowModel().rows, columnPinning, columnVisibility]);
|
58
58
|
|
59
|
-
const
|
59
|
+
const [leftPinnedIndexes, rightPinnedIndexes] = useMemo(
|
60
60
|
() =>
|
61
61
|
enableColumnVirtualization && enablePinning
|
62
62
|
? [
|
63
|
-
|
64
|
-
|
65
|
-
.
|
63
|
+
table.getLeftLeafColumns().map((c) => c.getPinnedIndex()),
|
64
|
+
table
|
65
|
+
.getRightLeafColumns()
|
66
66
|
.map(
|
67
|
-
(
|
68
|
-
table.
|
69
|
-
h.column.getPinnedIndex() -
|
70
|
-
1,
|
67
|
+
(c) =>
|
68
|
+
table.getVisibleLeafColumns().length - c.getPinnedIndex() - 1,
|
71
69
|
),
|
72
70
|
]
|
73
|
-
: [],
|
71
|
+
: [[], []],
|
74
72
|
[columnPinning, enableColumnVirtualization, enablePinning],
|
75
73
|
);
|
76
74
|
|
@@ -78,21 +76,20 @@ export const MRT_Table: FC<Props> = ({ table }) => {
|
|
78
76
|
| Virtualizer<HTMLDivElement, HTMLTableCellElement>
|
79
77
|
| undefined = enableColumnVirtualization
|
80
78
|
? useVirtualizer({
|
81
|
-
count: table.
|
79
|
+
count: table.getVisibleLeafColumns().length,
|
82
80
|
estimateSize: () => averageColumnWidth,
|
83
81
|
getScrollElement: () => tableContainerRef.current,
|
84
82
|
horizontal: true,
|
85
|
-
measureElement: (element) => element?.getBoundingClientRect().width,
|
86
83
|
overscan: 3,
|
87
84
|
rangeExtractor: useCallback(
|
88
|
-
(range: Range) =>
|
89
|
-
[
|
90
|
-
...
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
[
|
85
|
+
(range: Range) => [
|
86
|
+
...new Set([
|
87
|
+
...leftPinnedIndexes,
|
88
|
+
...defaultRangeExtractor(range),
|
89
|
+
...rightPinnedIndexes,
|
90
|
+
]),
|
91
|
+
],
|
92
|
+
[leftPinnedIndexes, rightPinnedIndexes],
|
96
93
|
),
|
97
94
|
...vProps,
|
98
95
|
})
|
@@ -110,13 +107,11 @@ export const MRT_Table: FC<Props> = ({ table }) => {
|
|
110
107
|
let virtualPaddingRight: number | undefined;
|
111
108
|
|
112
109
|
if (columnVirtualizer && virtualColumns?.length) {
|
113
|
-
virtualPaddingLeft = virtualColumns?.
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
(virtualColumns[virtualColumns.length - 1]?.end || 0)
|
119
|
-
: 0;
|
110
|
+
virtualPaddingLeft = virtualColumns[leftPinnedIndexes.length]?.start ?? 0;
|
111
|
+
virtualPaddingRight =
|
112
|
+
columnVirtualizer.getTotalSize() -
|
113
|
+
(virtualColumns[virtualColumns.length - 1 - rightPinnedIndexes.length]
|
114
|
+
?.end ?? 0);
|
120
115
|
}
|
121
116
|
|
122
117
|
const props = {
|
@@ -239,7 +239,7 @@ export const MRT_TableRoot = <TData extends Record<string, any> = {}>(
|
|
239
239
|
{},
|
240
240
|
...getAllLeafColumnDefs(props.columns as MRT_ColumnDef[]).map(
|
241
241
|
(col) => ({
|
242
|
-
[col
|
242
|
+
[getColumnId(col)]: null,
|
243
243
|
}),
|
244
244
|
),
|
245
245
|
),
|