material-react-table 2.0.3 → 2.0.5
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/index.d.ts +17 -4
- package/dist/index.esm.js +34 -47
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +34 -47
- package/dist/index.js.map +1 -1
- package/dist/types/toolbar/MRT_TablePagination.d.ts +4 -1
- package/dist/types/types.d.ts +13 -3
- package/package.json +32 -32
- package/src/body/MRT_TableBody.tsx +18 -23
- package/src/body/MRT_TableBodyCellValue.tsx +1 -1
- package/src/head/MRT_TableHeadCellSortLabel.tsx +15 -9
- package/src/inputs/MRT_GlobalFilterTextField.tsx +10 -10
- package/src/toolbar/MRT_TablePagination.tsx +22 -7
- package/src/types.ts +7 -2
package/dist/index.d.ts
CHANGED
@@ -18,6 +18,7 @@ import { LinearProgressProps } from '@mui/material/LinearProgress';
|
|
18
18
|
import { PaginationProps } from '@mui/material/Pagination';
|
19
19
|
import { PaperProps } from '@mui/material/Paper';
|
20
20
|
import { RadioProps } from '@mui/material/Radio';
|
21
|
+
import { SelectProps } from '@mui/material/Select';
|
21
22
|
import { SkeletonProps } from '@mui/material/Skeleton';
|
22
23
|
import { SliderProps } from '@mui/material/Slider';
|
23
24
|
import { TableProps } from '@mui/material/Table';
|
@@ -287,7 +288,7 @@ interface MRT_RowModel<TData extends MRT_RowData> {
|
|
287
288
|
[key: string]: MRT_Row<TData>;
|
288
289
|
};
|
289
290
|
}
|
290
|
-
type MRT_TableInstance<TData extends MRT_RowData> = Omit<Table<TData>, 'getAllColumns' | 'getAllFlatColumns' | 'getAllLeafColumns' | 'getBottomRows' | 'getCenterLeafColumns' | 'getCenterRows' | 'getColumn' | 'getExpandedRowModel' | 'getFlatHeaders' | 'getHeaderGroups' | 'getLeftLeafColumns' | 'getPaginationRowModel' | 'getPreFilteredRowModel' | 'getPrePaginationRowModel' | 'getRightLeafColumns' | 'getRowModel' | 'getSelectedRowModel' | 'getState' | 'getTopRows' | 'options'> & {
|
291
|
+
type MRT_TableInstance<TData extends MRT_RowData> = Omit<Table<TData>, 'getAllColumns' | 'getAllFlatColumns' | 'getAllLeafColumns' | 'getBottomRows' | 'getCenterLeafColumns' | 'getCenterRows' | 'getColumn' | 'getExpandedRowModel' | 'getFlatHeaders' | 'getHeaderGroups' | 'getLeafHeaders' | 'getLeftLeafColumns' | 'getPaginationRowModel' | 'getPreFilteredRowModel' | 'getPrePaginationRowModel' | 'getRightLeafColumns' | 'getRowModel' | 'getSelectedRowModel' | 'getState' | 'getTopRows' | 'options'> & {
|
291
292
|
getAllColumns: () => MRT_Column<TData>[];
|
292
293
|
getAllFlatColumns: () => MRT_Column<TData>[];
|
293
294
|
getAllLeafColumns: () => MRT_Column<TData>[];
|
@@ -298,6 +299,7 @@ type MRT_TableInstance<TData extends MRT_RowData> = Omit<Table<TData>, 'getAllCo
|
|
298
299
|
getExpandedRowModel: () => MRT_RowModel<TData>;
|
299
300
|
getFlatHeaders: () => MRT_Header<TData>[];
|
300
301
|
getHeaderGroups: () => MRT_HeaderGroup<TData>[];
|
302
|
+
getLeafHeaders: () => MRT_Header<TData>[];
|
301
303
|
getLeftLeafColumns: () => MRT_Column<TData>[];
|
302
304
|
getPaginationRowModel: () => MRT_RowModel<TData>;
|
303
305
|
getPreFilteredRowModel: () => MRT_RowModel<TData>;
|
@@ -773,10 +775,18 @@ type MRT_TableOptions<TData extends MRT_RowData> = Omit<Partial<TableOptions<TDa
|
|
773
775
|
muiPaginationProps?: ((props: {
|
774
776
|
table: MRT_TableInstance<TData>;
|
775
777
|
}) => Partial<PaginationProps & {
|
776
|
-
|
778
|
+
SelectProps?: Partial<SelectProps>;
|
779
|
+
rowsPerPageOptions?: {
|
780
|
+
label: string;
|
781
|
+
value: number;
|
782
|
+
}[] | number[];
|
777
783
|
showRowsPerPage?: boolean;
|
778
784
|
}>) | Partial<PaginationProps & {
|
779
|
-
|
785
|
+
SelectProps?: Partial<SelectProps>;
|
786
|
+
rowsPerPageOptions?: {
|
787
|
+
label: string;
|
788
|
+
value: number;
|
789
|
+
}[] | number[];
|
780
790
|
showRowsPerPage?: boolean;
|
781
791
|
}>;
|
782
792
|
muiRowDragHandleProps?: ((props: {
|
@@ -1530,7 +1540,10 @@ interface Props$5<TData extends MRT_RowData> extends LinearProgressProps {
|
|
1530
1540
|
declare const MRT_LinearProgressBar: <TData extends MRT_RowData>({ isTopToolbar, table, ...rest }: Props$5<TData>) => react_jsx_runtime.JSX.Element;
|
1531
1541
|
|
1532
1542
|
interface Props$4<TData extends MRT_RowData> extends Partial<PaginationProps & {
|
1533
|
-
rowsPerPageOptions?:
|
1543
|
+
rowsPerPageOptions?: {
|
1544
|
+
label: string;
|
1545
|
+
value: number;
|
1546
|
+
}[] | number[];
|
1534
1547
|
showRowsPerPage?: boolean;
|
1535
1548
|
}> {
|
1536
1549
|
position?: 'bottom' | 'top';
|
package/dist/index.esm.js
CHANGED
@@ -428,7 +428,7 @@ const MRT_TableBodyCellValue = ({ cell, table, }) => {
|
|
428
428
|
allowedTypes.includes(typeof renderedCellValue) &&
|
429
429
|
((filterValue &&
|
430
430
|
allowedTypes.includes(typeof filterValue) &&
|
431
|
-
|
431
|
+
['autocomplete', 'text'].includes(columnDef.filterVariant)) ||
|
432
432
|
(globalFilter &&
|
433
433
|
allowedTypes.includes(typeof globalFilter) &&
|
434
434
|
column.getCanGlobalFilter()))) {
|
@@ -987,19 +987,18 @@ const MRT_TableBody = (_a) => {
|
|
987
987
|
const virtualRows = rowVirtualizer
|
988
988
|
? rowVirtualizer.getVirtualItems()
|
989
989
|
: undefined;
|
990
|
+
const commonRowProps = {
|
991
|
+
columnVirtualizer,
|
992
|
+
numRows: rows.length,
|
993
|
+
table,
|
994
|
+
virtualColumns,
|
995
|
+
virtualPaddingLeft,
|
996
|
+
virtualPaddingRight,
|
997
|
+
};
|
990
998
|
return (jsxs(Fragment, { children: [!(rowPinningDisplayMode === null || rowPinningDisplayMode === void 0 ? void 0 : rowPinningDisplayMode.includes('sticky')) &&
|
991
999
|
getIsSomeRowsPinned('top') && (jsx(TableBody, Object.assign({}, tableBodyProps, { sx: (theme) => (Object.assign({ display: (layoutMode === null || layoutMode === void 0 ? void 0 : layoutMode.startsWith('grid')) ? 'grid' : undefined, position: 'sticky', top: tableHeadHeight - 1, zIndex: 1 }, parseFromValuesOrFunc(tableBodyProps === null || tableBodyProps === void 0 ? void 0 : tableBodyProps.sx, theme))), children: getTopRows().map((row, rowIndex) => {
|
992
|
-
const props = {
|
993
|
-
|
994
|
-
measureElement: rowVirtualizer === null || rowVirtualizer === void 0 ? void 0 : rowVirtualizer.measureElement,
|
995
|
-
numRows: rows.length,
|
996
|
-
row,
|
997
|
-
rowIndex,
|
998
|
-
table,
|
999
|
-
virtualColumns,
|
1000
|
-
virtualPaddingLeft,
|
1001
|
-
virtualPaddingRight,
|
1002
|
-
};
|
1000
|
+
const props = Object.assign(Object.assign({}, commonRowProps), { row,
|
1001
|
+
rowIndex });
|
1003
1002
|
return memoMode === 'rows' ? (jsx(Memo_MRT_TableBodyRow, Object.assign({}, props), row.id)) : (jsx(MRT_TableBodyRow, Object.assign({}, props), row.id));
|
1004
1003
|
}) }))), jsxs(TableBody, Object.assign({}, tableBodyProps, { sx: (theme) => (Object.assign({ display: (layoutMode === null || layoutMode === void 0 ? void 0 : layoutMode.startsWith('grid')) ? 'grid' : undefined, height: rowVirtualizer
|
1005
1004
|
? `${rowVirtualizer.getTotalSize()}px`
|
@@ -1020,36 +1019,16 @@ const MRT_TableBody = (_a) => {
|
|
1020
1019
|
const row = rowVirtualizer
|
1021
1020
|
? rows[rowOrVirtualRow.index]
|
1022
1021
|
: rowOrVirtualRow;
|
1023
|
-
const props = {
|
1024
|
-
|
1025
|
-
measureElement: rowVirtualizer === null || rowVirtualizer === void 0 ? void 0 : rowVirtualizer.measureElement,
|
1026
|
-
numRows: rows.length,
|
1027
|
-
pinnedRowIds,
|
1028
|
-
row,
|
1029
|
-
rowIndex: rowVirtualizer ? rowOrVirtualRow.index : rowIndex,
|
1030
|
-
table,
|
1031
|
-
virtualColumns,
|
1032
|
-
virtualPaddingLeft,
|
1033
|
-
virtualPaddingRight,
|
1034
|
-
virtualRow: rowVirtualizer
|
1022
|
+
const props = Object.assign(Object.assign({}, commonRowProps), { measureElement: rowVirtualizer === null || rowVirtualizer === void 0 ? void 0 : rowVirtualizer.measureElement, pinnedRowIds,
|
1023
|
+
row, rowIndex: rowVirtualizer ? rowOrVirtualRow.index : rowIndex, virtualRow: rowVirtualizer
|
1035
1024
|
? rowOrVirtualRow
|
1036
|
-
: undefined
|
1037
|
-
};
|
1038
|
-
return memoMode === 'rows' ? (jsx(Memo_MRT_TableBodyRow, Object.assign({}, props), row.id)) : (jsx(MRT_TableBodyRow, Object.assign({}, props), row.id));
|
1025
|
+
: undefined });
|
1026
|
+
return memoMode === 'rows' ? (jsx(Memo_MRT_TableBodyRow, Object.assign({}, props), `${row.id}${row.index}`)) : (jsx(MRT_TableBodyRow, Object.assign({}, props), `${row.id}${row.index}`));
|
1039
1027
|
}) })))] })), !(rowPinningDisplayMode === null || rowPinningDisplayMode === void 0 ? void 0 : rowPinningDisplayMode.includes('sticky')) &&
|
1040
1028
|
getIsSomeRowsPinned('bottom') && (jsx(TableBody, Object.assign({}, tableBodyProps, { sx: (theme) => (Object.assign({ bottom: tableFooterHeight - 1, display: (layoutMode === null || layoutMode === void 0 ? void 0 : layoutMode.startsWith('grid')) ? 'grid' : undefined, position: 'sticky', zIndex: 1 }, parseFromValuesOrFunc(tableBodyProps === null || tableBodyProps === void 0 ? void 0 : tableBodyProps.sx, theme))), children: getBottomRows().map((row, rowIndex) => {
|
1041
|
-
const props = {
|
1042
|
-
|
1043
|
-
|
1044
|
-
numRows: rows.length,
|
1045
|
-
row,
|
1046
|
-
rowIndex,
|
1047
|
-
table,
|
1048
|
-
virtualColumns,
|
1049
|
-
virtualPaddingLeft,
|
1050
|
-
virtualPaddingRight,
|
1051
|
-
};
|
1052
|
-
return memoMode === 'rows' ? (jsx(Memo_MRT_TableBodyRow, Object.assign({}, props), row.id)) : (jsx(MRT_TableBodyRow, Object.assign({}, props), row.id));
|
1029
|
+
const props = Object.assign(Object.assign({}, commonRowProps), { row,
|
1030
|
+
rowIndex });
|
1031
|
+
return memoMode === 'rows' ? (jsx(Memo_MRT_TableBodyRow, Object.assign({}, props), `${row.id}`)) : (jsx(MRT_TableBodyRow, Object.assign({}, props), row.id));
|
1053
1032
|
}) })))] }));
|
1054
1033
|
};
|
1055
1034
|
const Memo_MRT_TableBody = memo(MRT_TableBody, (prev, next) => prev.table.options.data === next.table.options.data);
|
@@ -1670,7 +1649,7 @@ const MRT_FilterTextField = (_a) => {
|
|
1670
1649
|
localization[`filter${((_l = currentFilterOption === null || currentFilterOption === void 0 ? void 0 : currentFilterOption.charAt(0)) === null || _l === void 0 ? void 0 : _l.toUpperCase()) +
|
1671
1650
|
(currentFilterOption === null || currentFilterOption === void 0 ? void 0 : currentFilterOption.slice(1))}`]) })) : null, inputProps: {
|
1672
1651
|
'aria-label': filterPlaceholder,
|
1673
|
-
autoComplete: 'new-password',
|
1652
|
+
autoComplete: 'new-password', // disable autocomplete and autofill
|
1674
1653
|
disabled: !!filterChipLabel,
|
1675
1654
|
sx: {
|
1676
1655
|
textOverflow: 'ellipsis',
|
@@ -1952,11 +1931,14 @@ const MRT_TableHeadCellSortLabel = (_a) => {
|
|
1952
1931
|
: column.getNextSortingOrder() === 'desc'
|
1953
1932
|
? localization.sortByColumnDesc.replace('{column}', columnDef.header)
|
1954
1933
|
: localization.sortByColumnAsc.replace('{column}', columnDef.header);
|
1934
|
+
const direction = isSorted
|
1935
|
+
? column.getIsSorted()
|
1936
|
+
: undefined;
|
1955
1937
|
return (jsx(Tooltip, { placement: "top", title: sortTooltip, children: jsx(Badge, { badgeContent: sorting.length > 1 ? column.getSortIndex() + 1 : 0, overlap: "circular", children: jsx(TableSortLabel, Object.assign({ IconComponent: !isSorted
|
1956
|
-
? (props) => (jsx(SyncAltIcon, Object.assign({}, props, { style: {
|
1938
|
+
? (props) => (jsx(SyncAltIcon, Object.assign({}, props, { direction: direction, style: {
|
1957
1939
|
transform: 'rotate(-90deg) scaleX(0.9) translateX(-1px)',
|
1958
1940
|
} })))
|
1959
|
-
: ArrowDownwardIcon, active: true, "aria-label": sortTooltip, direction:
|
1941
|
+
: ArrowDownwardIcon, active: true, "aria-label": sortTooltip, direction: direction, onClick: (e) => {
|
1960
1942
|
var _a;
|
1961
1943
|
e.stopPropagation();
|
1962
1944
|
(_a = header.column.getToggleSortingHandler()) === null || _a === void 0 ? void 0 : _a(e);
|
@@ -2154,8 +2136,8 @@ const MRT_TablePagination = (_a) => {
|
|
2154
2136
|
const showFirstLastPageButtons = numberOfPages > 2;
|
2155
2137
|
const firstRowIndex = pageIndex * pageSize;
|
2156
2138
|
const lastRowIndex = Math.min(pageIndex * pageSize + pageSize, totalRowCount);
|
2157
|
-
const _b = paginationProps !== null && paginationProps !== void 0 ? paginationProps : {}, { rowsPerPageOptions = defaultRowsPerPage, showFirstButton = showFirstLastPageButtons, showLastButton = showFirstLastPageButtons, showRowsPerPage = true } = _b, _rest = __rest(_b, ["rowsPerPageOptions", "showFirstButton", "showLastButton", "showRowsPerPage"]);
|
2158
|
-
return (jsxs(Box, { sx: {
|
2139
|
+
const _b = paginationProps !== null && paginationProps !== void 0 ? paginationProps : {}, { SelectProps, rowsPerPageOptions = defaultRowsPerPage, showFirstButton = showFirstLastPageButtons, showLastButton = showFirstLastPageButtons, showRowsPerPage = true } = _b, _rest = __rest(_b, ["SelectProps", "rowsPerPageOptions", "showFirstButton", "showLastButton", "showRowsPerPage"]);
|
2140
|
+
return (jsxs(Box, { className: "MuiTablePagination-root", sx: {
|
2159
2141
|
alignItems: 'center',
|
2160
2142
|
display: 'flex',
|
2161
2143
|
flexWrap: 'wrap',
|
@@ -2171,7 +2153,12 @@ const MRT_TablePagination = (_a) => {
|
|
2171
2153
|
px: '8px',
|
2172
2154
|
py: '12px',
|
2173
2155
|
zIndex: 2,
|
2174
|
-
}, children: [showRowsPerPage && (jsxs(Box, { sx: { alignItems: 'center', display: 'flex', gap: '8px' }, children: [jsx(InputLabel, { htmlFor: "mrt-rows-per-page", sx: { mb: 0 }, children: localization.rowsPerPage }), jsx(Select, { disableUnderline: true, id: "mrt-rows-per-page", inputProps: { 'aria-label': localization.rowsPerPage }, label: localization.rowsPerPage, onChange: (event) => setPageSize(+event.target.value), sx: { mb: 0 }, value: pageSize, variant: "standard",
|
2156
|
+
}, children: [showRowsPerPage && (jsxs(Box, { sx: { alignItems: 'center', display: 'flex', gap: '8px' }, children: [jsx(InputLabel, { htmlFor: "mrt-rows-per-page", sx: { mb: 0 }, children: localization.rowsPerPage }), jsx(Select, Object.assign({ disableUnderline: true, id: "mrt-rows-per-page", inputProps: { 'aria-label': localization.rowsPerPage }, label: localization.rowsPerPage, onChange: (event) => setPageSize(+event.target.value), sx: { mb: 0 }, value: pageSize, variant: "standard" }, SelectProps, { children: rowsPerPageOptions.map((option) => {
|
2157
|
+
var _a;
|
2158
|
+
const value = typeof option !== 'number' ? option.value : option;
|
2159
|
+
const label = typeof option !== 'number' ? option.label : `${option}`;
|
2160
|
+
return ((_a = SelectProps === null || SelectProps === void 0 ? void 0 : SelectProps.children) !== null && _a !== void 0 ? _a : ((SelectProps === null || SelectProps === void 0 ? void 0 : SelectProps.native) ? (jsx("option", { value: value, children: label }, value)) : (jsx(MenuItem, { sx: { m: 0 }, value: value, children: label }, value))));
|
2161
|
+
}) }))] })), paginationDisplayMode === 'pages' ? (jsx(Pagination, Object.assign({ count: numberOfPages, onChange: (_e, newPageIndex) => setPageIndex(newPageIndex - 1), page: pageIndex + 1, renderItem: (item) => (jsx(PaginationItem, Object.assign({ slots: {
|
2175
2162
|
first: FirstPageIcon,
|
2176
2163
|
last: LastPageIcon,
|
2177
2164
|
next: ChevronRightIcon,
|
@@ -2216,10 +2203,10 @@ const MRT_GlobalFilterTextField = (_a) => {
|
|
2216
2203
|
}
|
2217
2204
|
isMounted.current = true;
|
2218
2205
|
}, [globalFilter]);
|
2219
|
-
return (jsxs(Collapse, { in: showGlobalFilter, mountOnEnter: true, orientation: "horizontal", unmountOnExit: true, children: [jsx(TextField, Object.assign({ InputProps: Object.assign(Object.assign({ endAdornment: (jsx(InputAdornment, { position: "end", children: jsx(Tooltip, { title: (_b = localization.clearSearch) !== null && _b !== void 0 ? _b : '', children: jsx("span", { children: jsx(IconButton, { "aria-label": localization.clearSearch, disabled: !(searchValue === null || searchValue === void 0 ? void 0 : searchValue.length), onClick: handleClear, size: "small", children: jsx(CloseIcon, {}) }) }) }) })), startAdornment: enableGlobalFilterModes ? (jsx(InputAdornment, { position: "start", children: jsx(Tooltip, { title: localization.changeSearchMode, children: jsx(IconButton, { "aria-label": localization.changeSearchMode, onClick: handleGlobalFilterMenuOpen, size: "small", sx: { height: '1.75rem', width: '1.75rem' }, children: jsx(SearchIcon, {}) }) }) })) : (jsx(SearchIcon, { style: { marginRight: '4px' } })) }, textFieldProps.InputProps), { sx: (theme) => {
|
2206
|
+
return (jsxs(Collapse, { in: showGlobalFilter, mountOnEnter: true, orientation: "horizontal", unmountOnExit: true, children: [jsx(TextField, Object.assign({ inputProps: Object.assign({ autoComplete: 'new-password' }, textFieldProps.inputProps), onChange: handleChange, placeholder: localization.search, size: "small", value: searchValue !== null && searchValue !== void 0 ? searchValue : '', variant: "outlined" }, textFieldProps, { InputProps: Object.assign(Object.assign({ endAdornment: (jsx(InputAdornment, { position: "end", children: jsx(Tooltip, { title: (_b = localization.clearSearch) !== null && _b !== void 0 ? _b : '', children: jsx("span", { children: jsx(IconButton, { "aria-label": localization.clearSearch, disabled: !(searchValue === null || searchValue === void 0 ? void 0 : searchValue.length), onClick: handleClear, size: "small", children: jsx(CloseIcon, {}) }) }) }) })), startAdornment: enableGlobalFilterModes ? (jsx(InputAdornment, { position: "start", children: jsx(Tooltip, { title: localization.changeSearchMode, children: jsx(IconButton, { "aria-label": localization.changeSearchMode, onClick: handleGlobalFilterMenuOpen, size: "small", sx: { height: '1.75rem', width: '1.75rem' }, children: jsx(SearchIcon, {}) }) }) })) : (jsx(SearchIcon, { style: { marginRight: '4px' } })) }, textFieldProps.InputProps), { sx: (theme) => {
|
2220
2207
|
var _a;
|
2221
2208
|
return (Object.assign({ mb: 0 }, parseFromValuesOrFunc((_a = textFieldProps === null || textFieldProps === void 0 ? void 0 : textFieldProps.InputProps) === null || _a === void 0 ? void 0 : _a.sx, theme)));
|
2222
|
-
} }),
|
2209
|
+
} }), inputRef: (inputRef) => {
|
2223
2210
|
searchInputRef.current = inputRef;
|
2224
2211
|
if (textFieldProps === null || textFieldProps === void 0 ? void 0 : textFieldProps.inputRef) {
|
2225
2212
|
textFieldProps.inputRef = inputRef;
|