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 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 TablePagination = require('@mui/material/TablePagination');
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 TablePagination__default = /*#__PURE__*/_interopDefaultLegacy(TablePagination);
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 totalRowCount = rowCount !== null && rowCount !== void 0 ? rowCount : getPrePaginationRowModel().rows.length;
2319
- const showFirstLastPageButtons = totalRowCount / pageSize > 2;
2320
- const tablePaginationProps = parseFromValuesOrFunc(muiTablePaginationProps, {
2333
+ const paginationProps = parseFromValuesOrFunc(muiTablePaginationProps, {
2321
2334
  table,
2322
2335
  });
2323
- const handleChangeRowsPerPage = (event) => {
2324
- setPageSize(+event.target.value);
2325
- };
2326
- return (jsxRuntime.jsx(TablePagination__default["default"], Object.assign({ component: "div", count: totalRowCount, getItemAriaLabel: (type) => type === 'first'
2327
- ? localization.goToFirstPage
2328
- : type === 'last'
2329
- ? localization.goToLastPage
2330
- : type === 'next'
2331
- ? localization.goToNextPage
2332
- : localization.goToPreviousPage, labelDisplayedRows: ({ count, from, to }) => `${from}-${to} ${localization.of} ${count}`, labelRowsPerPage: localization.rowsPerPage, onPageChange: (_, newPage) => setPageIndex(newPage), onRowsPerPageChange: handleChangeRowsPerPage, page: Math.max(Math.min(pageIndex, Math.ceil(totalRowCount / pageSize) - 1), 0), rowsPerPage: pageSize, rowsPerPageOptions: [5, 10, 15, 20, 25, 30, 50, 100], showFirstButton: showFirstLastPageButtons, showLastButton: showFirstLastPageButtons }, tablePaginationProps, { SelectProps: Object.assign({ MenuProps: { MenuListProps: { disablePadding: true }, sx: { m: 0 } }, sx: { m: '0 1rem 0 1ch' } }, tablePaginationProps === null || tablePaginationProps === void 0 ? void 0 : tablePaginationProps.SelectProps), sx: (theme) => (Object.assign({ '& . MuiTablePagination-select': {
2333
- m: '0 1px',
2334
- }, '& .MuiTablePagination-actions': {
2335
- m: '0 1px',
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
- ? '3.5rem'
2349
- : undefined, position: 'relative', zIndex: 2 }, parseFromValuesOrFunc(tablePaginationProps === null || tablePaginationProps === void 0 ? void 0 : tablePaginationProps.sx, theme))) })));
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"],