material-react-table 2.0.0-alpha.3 → 2.0.0-alpha.4
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 +58 -33
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/icons.d.ts +4 -0
- package/dist/cjs/types/toolbar/MRT_TablePagination.d.ts +2 -2
- package/dist/cjs/types/types.d.ts +9 -3
- package/dist/esm/material-react-table.esm.js +51 -33
- package/dist/esm/material-react-table.esm.js.map +1 -1
- package/dist/esm/types/icons.d.ts +4 -0
- package/dist/esm/types/toolbar/MRT_TablePagination.d.ts +2 -2
- package/dist/esm/types/types.d.ts +9 -3
- package/dist/index.d.ts +15 -5
- package/package.json +1 -1
- package/src/hooks/useMRT_Effects.ts +13 -2
- package/src/icons.ts +12 -0
- package/src/toolbar/MRT_TablePagination.tsx +124 -67
- package/src/types.ts +14 -6
package/dist/cjs/index.js
CHANGED
@@ -51,7 +51,10 @@ var CircularProgress = require('@mui/material/CircularProgress');
|
|
51
51
|
var Toolbar = require('@mui/material/Toolbar');
|
52
52
|
var useMediaQuery = require('@mui/material/useMediaQuery');
|
53
53
|
var LinearProgress = require('@mui/material/LinearProgress');
|
54
|
-
var
|
54
|
+
var InputLabel = require('@mui/material/InputLabel');
|
55
|
+
var Pagination = require('@mui/material/Pagination');
|
56
|
+
var PaginationItem = require('@mui/material/PaginationItem');
|
57
|
+
var Select = require('@mui/material/Select');
|
55
58
|
var Alert = require('@mui/material/Alert');
|
56
59
|
var AlertTitle = require('@mui/material/AlertTitle');
|
57
60
|
var Fade = require('@mui/material/Fade');
|
@@ -60,6 +63,8 @@ var Radio = require('@mui/material/Radio');
|
|
60
63
|
var ArrowDownwardIcon = require('@mui/icons-material/ArrowDownward');
|
61
64
|
var ArrowRightIcon = require('@mui/icons-material/ArrowRight');
|
62
65
|
var CancelIcon = require('@mui/icons-material/Cancel');
|
66
|
+
var ChevronLefIcon = require('@mui/icons-material/ChevronLeft');
|
67
|
+
var ChevronRightIcon = require('@mui/icons-material/ChevronRight');
|
63
68
|
var ClearAllIcon = require('@mui/icons-material/ClearAll');
|
64
69
|
var CloseIcon = require('@mui/icons-material/Close');
|
65
70
|
var DensityLargeIcon = require('@mui/icons-material/DensityLarge');
|
@@ -72,9 +77,11 @@ var ExpandMoreIcon = require('@mui/icons-material/ExpandMore');
|
|
72
77
|
var FilterAltIcon = require('@mui/icons-material/FilterAlt');
|
73
78
|
var FilterListIcon = require('@mui/icons-material/FilterList');
|
74
79
|
var FilterListOffIcon = require('@mui/icons-material/FilterListOff');
|
80
|
+
var FirstPageIcon = require('@mui/icons-material/FirstPage');
|
75
81
|
var FullscreenIcon = require('@mui/icons-material/Fullscreen');
|
76
82
|
var FullscreenExitIcon = require('@mui/icons-material/FullscreenExit');
|
77
83
|
var KeyboardDoubleArrowDownIcon = require('@mui/icons-material/KeyboardDoubleArrowDown');
|
84
|
+
var LastPageIcon = require('@mui/icons-material/LastPage');
|
78
85
|
var MoreHorizIcon = require('@mui/icons-material/MoreHoriz');
|
79
86
|
var MoreVertIcon = require('@mui/icons-material/MoreVert');
|
80
87
|
var PushPinIcon = require('@mui/icons-material/PushPin');
|
@@ -129,7 +136,10 @@ var CircularProgress__default = /*#__PURE__*/_interopDefaultLegacy(CircularProgr
|
|
129
136
|
var Toolbar__default = /*#__PURE__*/_interopDefaultLegacy(Toolbar);
|
130
137
|
var useMediaQuery__default = /*#__PURE__*/_interopDefaultLegacy(useMediaQuery);
|
131
138
|
var LinearProgress__default = /*#__PURE__*/_interopDefaultLegacy(LinearProgress);
|
132
|
-
var
|
139
|
+
var InputLabel__default = /*#__PURE__*/_interopDefaultLegacy(InputLabel);
|
140
|
+
var Pagination__default = /*#__PURE__*/_interopDefaultLegacy(Pagination);
|
141
|
+
var PaginationItem__default = /*#__PURE__*/_interopDefaultLegacy(PaginationItem);
|
142
|
+
var Select__default = /*#__PURE__*/_interopDefaultLegacy(Select);
|
133
143
|
var Alert__default = /*#__PURE__*/_interopDefaultLegacy(Alert);
|
134
144
|
var AlertTitle__default = /*#__PURE__*/_interopDefaultLegacy(AlertTitle);
|
135
145
|
var Fade__default = /*#__PURE__*/_interopDefaultLegacy(Fade);
|
@@ -138,6 +148,8 @@ var Radio__default = /*#__PURE__*/_interopDefaultLegacy(Radio);
|
|
138
148
|
var ArrowDownwardIcon__default = /*#__PURE__*/_interopDefaultLegacy(ArrowDownwardIcon);
|
139
149
|
var ArrowRightIcon__default = /*#__PURE__*/_interopDefaultLegacy(ArrowRightIcon);
|
140
150
|
var CancelIcon__default = /*#__PURE__*/_interopDefaultLegacy(CancelIcon);
|
151
|
+
var ChevronLefIcon__default = /*#__PURE__*/_interopDefaultLegacy(ChevronLefIcon);
|
152
|
+
var ChevronRightIcon__default = /*#__PURE__*/_interopDefaultLegacy(ChevronRightIcon);
|
141
153
|
var ClearAllIcon__default = /*#__PURE__*/_interopDefaultLegacy(ClearAllIcon);
|
142
154
|
var CloseIcon__default = /*#__PURE__*/_interopDefaultLegacy(CloseIcon);
|
143
155
|
var DensityLargeIcon__default = /*#__PURE__*/_interopDefaultLegacy(DensityLargeIcon);
|
@@ -150,9 +162,11 @@ var ExpandMoreIcon__default = /*#__PURE__*/_interopDefaultLegacy(ExpandMoreIcon)
|
|
150
162
|
var FilterAltIcon__default = /*#__PURE__*/_interopDefaultLegacy(FilterAltIcon);
|
151
163
|
var FilterListIcon__default = /*#__PURE__*/_interopDefaultLegacy(FilterListIcon);
|
152
164
|
var FilterListOffIcon__default = /*#__PURE__*/_interopDefaultLegacy(FilterListOffIcon);
|
165
|
+
var FirstPageIcon__default = /*#__PURE__*/_interopDefaultLegacy(FirstPageIcon);
|
153
166
|
var FullscreenIcon__default = /*#__PURE__*/_interopDefaultLegacy(FullscreenIcon);
|
154
167
|
var FullscreenExitIcon__default = /*#__PURE__*/_interopDefaultLegacy(FullscreenExitIcon);
|
155
168
|
var KeyboardDoubleArrowDownIcon__default = /*#__PURE__*/_interopDefaultLegacy(KeyboardDoubleArrowDownIcon);
|
169
|
+
var LastPageIcon__default = /*#__PURE__*/_interopDefaultLegacy(LastPageIcon);
|
156
170
|
var MoreHorizIcon__default = /*#__PURE__*/_interopDefaultLegacy(MoreHorizIcon);
|
157
171
|
var MoreVertIcon__default = /*#__PURE__*/_interopDefaultLegacy(MoreVertIcon);
|
158
172
|
var PushPinIcon__default = /*#__PURE__*/_interopDefaultLegacy(PushPinIcon);
|
@@ -2312,41 +2326,40 @@ const MRT_LinearProgressBar = ({ isTopToolbar, table, }) => {
|
|
2312
2326
|
}, unmountOnExit: true, children: jsxRuntime.jsx(LinearProgress__default["default"], Object.assign({ "aria-busy": "true", "aria-label": "Loading", sx: { position: 'relative' } }, linearProgressProps)) }));
|
2313
2327
|
};
|
2314
2328
|
|
2329
|
+
const defaultPageSizeOptions = [5, 10, 15, 20, 25, 30, 50, 100];
|
2315
2330
|
const MRT_TablePagination = ({ position = 'bottom', table, }) => {
|
2316
|
-
const { getPrePaginationRowModel, getState, options: { enableToolbarInternalActions, localization, muiTablePaginationProps, rowCount, }, setPageIndex, setPageSize, } = table;
|
2331
|
+
const { getPrePaginationRowModel, getState, options: { enableToolbarInternalActions, icons: { ChevronLefIcon, ChevronRightIcon, FirstPageIcon, LastPageIcon }, localization, muiTablePaginationProps, paginationDisplayMode, rowCount, }, setPageIndex, setPageSize, } = table;
|
2317
2332
|
const { pagination: { pageIndex = 0, pageSize = 10 }, showGlobalFilter, } = getState();
|
2318
|
-
const
|
2319
|
-
const showFirstLastPageButtons = totalRowCount / pageSize > 2;
|
2320
|
-
const tablePaginationProps = parseFromValuesOrFunc(muiTablePaginationProps, {
|
2333
|
+
const paginationProps = parseFromValuesOrFunc(muiTablePaginationProps, {
|
2321
2334
|
table,
|
2322
2335
|
});
|
2323
|
-
const
|
2324
|
-
|
2325
|
-
|
2326
|
-
|
2327
|
-
|
2328
|
-
|
2329
|
-
|
2330
|
-
|
2331
|
-
|
2332
|
-
|
2333
|
-
|
2334
|
-
|
2335
|
-
|
2336
|
-
}, '& .MuiTablePagination-displayedRows': {
|
2337
|
-
m: '0 1px',
|
2338
|
-
}, '& .MuiTablePagination-selectLabel': {
|
2339
|
-
m: '0 -1px',
|
2340
|
-
}, '& .MuiTablePagination-toolbar': {
|
2341
|
-
alignItems: 'center',
|
2342
|
-
display: 'flex',
|
2343
|
-
}, '&. MuiInputBase-root': {
|
2344
|
-
m: '0 1px',
|
2345
|
-
}, mt: position === 'top' &&
|
2336
|
+
const totalRowCount = rowCount !== null && rowCount !== void 0 ? rowCount : getPrePaginationRowModel().rows.length;
|
2337
|
+
const numberOfPages = Math.ceil(totalRowCount / pageSize);
|
2338
|
+
const showFirstLastPageButtons = numberOfPages > 2;
|
2339
|
+
const showFirstButton = showFirstLastPageButtons && (paginationProps === null || paginationProps === void 0 ? void 0 : paginationProps.showFirstButton) !== false;
|
2340
|
+
const showLastButton = showFirstLastPageButtons && (paginationProps === null || paginationProps === void 0 ? void 0 : paginationProps.showLastButton) !== false;
|
2341
|
+
const firstRowIndex = pageIndex * pageSize;
|
2342
|
+
const lastRowIndex = Math.min(pageIndex * pageSize + pageSize, totalRowCount);
|
2343
|
+
return (jsxRuntime.jsxs(Box__default["default"], { sx: {
|
2344
|
+
alignItems: 'center',
|
2345
|
+
display: 'flex',
|
2346
|
+
gap: '8px',
|
2347
|
+
justifyContent: 'space-between',
|
2348
|
+
mt: position === 'top' &&
|
2346
2349
|
enableToolbarInternalActions &&
|
2347
2350
|
!showGlobalFilter
|
2348
|
-
? '
|
2349
|
-
: undefined,
|
2351
|
+
? '3rem'
|
2352
|
+
: undefined,
|
2353
|
+
position: 'relative',
|
2354
|
+
px: '4px',
|
2355
|
+
py: '12px',
|
2356
|
+
zIndex: 2,
|
2357
|
+
}, children: [(paginationProps === null || paginationProps === void 0 ? void 0 : paginationProps.showRowsPerPage) !== false && (jsxRuntime.jsxs(Box__default["default"], { sx: { alignItems: 'center', display: 'flex', gap: '8px' }, children: [jsxRuntime.jsx(InputLabel__default["default"], { htmlFor: "mrt-rows-per-page", sx: { mb: 0 }, children: localization.rowsPerPage }), jsxRuntime.jsx(Select__default["default"], { id: "mrt-rows-per-page", label: localization.rowsPerPage, onChange: (event) => setPageSize(+event.target.value), sx: { '&::before': { border: 'none' }, mb: 0 }, value: pageSize, variant: "standard", children: defaultPageSizeOptions.map((value) => (jsxRuntime.jsx(MenuItem__default["default"], { sx: { m: 0 }, value: value, children: value }, value))) })] })), paginationDisplayMode === 'pages' ? (jsxRuntime.jsx(Pagination__default["default"], Object.assign({ count: numberOfPages, onChange: (_e, newPageIndex) => setPageIndex(newPageIndex - 1), page: pageIndex + 1, renderItem: (item) => (jsxRuntime.jsx(PaginationItem__default["default"], Object.assign({ slots: {
|
2358
|
+
first: FirstPageIcon,
|
2359
|
+
last: LastPageIcon,
|
2360
|
+
next: ChevronRightIcon,
|
2361
|
+
previous: ChevronLefIcon,
|
2362
|
+
} }, item))), showFirstButton: showFirstButton, showLastButton: showLastButton }, paginationProps))) : paginationDisplayMode === 'default' ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(Typography__default["default"], { mb: "0", mx: "8px", variant: "body2", children: `${lastRowIndex === 0 ? 0 : (firstRowIndex + 1).toLocaleString()}-${lastRowIndex.toLocaleString()} ${localization.of} ${totalRowCount.toLocaleString()}` }), jsxRuntime.jsxs(Box__default["default"], { gap: "xs", children: [showFirstButton && (jsxRuntime.jsx(IconButton__default["default"], { "aria-label": localization.goToFirstPage, disabled: pageIndex <= 0, onClick: () => setPageIndex(0), size: "small", children: jsxRuntime.jsx(FirstPageIcon, {}) })), jsxRuntime.jsx(IconButton__default["default"], { "aria-label": localization.goToPreviousPage, disabled: pageIndex <= 0, onClick: () => setPageIndex(pageIndex - 1), size: "small", children: jsxRuntime.jsx(ChevronLefIcon, {}) }), jsxRuntime.jsx(IconButton__default["default"], { "aria-label": localization.goToNextPage, disabled: lastRowIndex >= totalRowCount, onClick: () => setPageIndex(pageIndex + 1), size: "small", children: jsxRuntime.jsx(ChevronRightIcon, {}) }), showLastButton && (jsxRuntime.jsx(IconButton__default["default"], { "aria-label": localization.goToLastPage, disabled: lastRowIndex >= totalRowCount, onClick: () => setPageIndex(numberOfPages - 1), size: "small", children: jsxRuntime.jsx(LastPageIcon, {}) }))] })] })) : null] }));
|
2350
2363
|
};
|
2351
2364
|
|
2352
2365
|
const MRT_ToolbarAlertBanner = ({ stackAlertBanner, table, }) => {
|
@@ -2994,8 +3007,9 @@ const useMRT_DisplayColumns = ({ columnOrder, creatingRow, grouping, tableOption
|
|
2994
3007
|
};
|
2995
3008
|
|
2996
3009
|
const useMRT_Effects = (table) => {
|
2997
|
-
const { getState, options: { enablePagination, rowCount }, } = table;
|
2998
|
-
const { globalFilter, isFullScreen, isLoading, pagination, showSkeletons, sorting, } = getState();
|
3010
|
+
const { getIsSomeRowsPinned, getState, options: { enablePagination, enableRowPinning, rowCount }, } = table;
|
3011
|
+
const { density, globalFilter, isFullScreen, isLoading, pagination, showSkeletons, sorting, } = getState();
|
3012
|
+
const rerender = react.useReducer(() => ({}), {})[1];
|
2999
3013
|
const isMounted = react.useRef(false);
|
3000
3014
|
const initialBodyHeight = react.useRef();
|
3001
3015
|
const previousTop = react.useRef();
|
@@ -3051,6 +3065,13 @@ const useMRT_Effects = (table) => {
|
|
3051
3065
|
table.setSorting(() => appliedSort.current || []);
|
3052
3066
|
}
|
3053
3067
|
}, [globalFilter]);
|
3068
|
+
react.useEffect(() => {
|
3069
|
+
if (enableRowPinning && getIsSomeRowsPinned()) {
|
3070
|
+
setTimeout(() => {
|
3071
|
+
rerender();
|
3072
|
+
}, 150);
|
3073
|
+
}
|
3074
|
+
}, [density]);
|
3054
3075
|
};
|
3055
3076
|
|
3056
3077
|
const useMRT_TableInstance = (tableOptions) => {
|
@@ -3319,6 +3340,8 @@ const MRT_Default_Icons = {
|
|
3319
3340
|
ArrowDownwardIcon: ArrowDownwardIcon__default["default"],
|
3320
3341
|
ArrowRightIcon: ArrowRightIcon__default["default"],
|
3321
3342
|
CancelIcon: CancelIcon__default["default"],
|
3343
|
+
ChevronLefIcon: ChevronLefIcon__default["default"],
|
3344
|
+
ChevronRightIcon: ChevronRightIcon__default["default"],
|
3322
3345
|
ClearAllIcon: ClearAllIcon__default["default"],
|
3323
3346
|
CloseIcon: CloseIcon__default["default"],
|
3324
3347
|
DensityLargeIcon: DensityLargeIcon__default["default"],
|
@@ -3331,9 +3354,11 @@ const MRT_Default_Icons = {
|
|
3331
3354
|
FilterAltIcon: FilterAltIcon__default["default"],
|
3332
3355
|
FilterListIcon: FilterListIcon__default["default"],
|
3333
3356
|
FilterListOffIcon: FilterListOffIcon__default["default"],
|
3357
|
+
FirstPageIcon: FirstPageIcon__default["default"],
|
3334
3358
|
FullscreenExitIcon: FullscreenExitIcon__default["default"],
|
3335
3359
|
FullscreenIcon: FullscreenIcon__default["default"],
|
3336
3360
|
KeyboardDoubleArrowDownIcon: KeyboardDoubleArrowDownIcon__default["default"],
|
3361
|
+
LastPageIcon: LastPageIcon__default["default"],
|
3337
3362
|
MoreHorizIcon: MoreHorizIcon__default["default"],
|
3338
3363
|
MoreVertIcon: MoreVertIcon__default["default"],
|
3339
3364
|
PushPinIcon: PushPinIcon__default["default"],
|