material-react-table 0.41.0 → 1.0.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.
Files changed (48) hide show
  1. package/README.md +2 -0
  2. package/dist/cjs/body/MRT_EditRowModal.d.ts +0 -1
  3. package/dist/cjs/body/MRT_TableBody.d.ts +1 -2
  4. package/dist/cjs/buttons/MRT_ColumnPinningButtons.d.ts +0 -1
  5. package/dist/cjs/buttons/MRT_EditActionButtons.d.ts +0 -1
  6. package/dist/cjs/buttons/MRT_FullScreenToggleButton.d.ts +0 -1
  7. package/dist/cjs/buttons/MRT_ShowHideColumnsButton.d.ts +0 -1
  8. package/dist/cjs/buttons/MRT_ToggleDensePaddingButton.d.ts +0 -1
  9. package/dist/cjs/buttons/MRT_ToggleFiltersButton.d.ts +0 -1
  10. package/dist/cjs/buttons/MRT_ToggleGlobalFilterButton.d.ts +0 -1
  11. package/dist/cjs/index.js +26 -16
  12. package/dist/cjs/index.js.map +1 -1
  13. package/dist/cjs/inputs/MRT_EditCellTextField.d.ts +0 -1
  14. package/dist/cjs/inputs/MRT_GlobalFilterTextField.d.ts +0 -1
  15. package/dist/cjs/menus/MRT_FilterOptionMenu.d.ts +0 -1
  16. package/dist/cjs/menus/MRT_ShowHideColumnsMenu.d.ts +0 -1
  17. package/dist/cjs/table/MRT_Table.d.ts +1 -2
  18. package/dist/cjs/table/MRT_TableRoot.d.ts +0 -1
  19. package/dist/esm/body/MRT_EditRowModal.d.ts +0 -1
  20. package/dist/esm/body/MRT_TableBody.d.ts +1 -2
  21. package/dist/esm/buttons/MRT_ColumnPinningButtons.d.ts +0 -1
  22. package/dist/esm/buttons/MRT_EditActionButtons.d.ts +0 -1
  23. package/dist/esm/buttons/MRT_FullScreenToggleButton.d.ts +0 -1
  24. package/dist/esm/buttons/MRT_ShowHideColumnsButton.d.ts +0 -1
  25. package/dist/esm/buttons/MRT_ToggleDensePaddingButton.d.ts +0 -1
  26. package/dist/esm/buttons/MRT_ToggleFiltersButton.d.ts +0 -1
  27. package/dist/esm/buttons/MRT_ToggleGlobalFilterButton.d.ts +0 -1
  28. package/dist/esm/inputs/MRT_EditCellTextField.d.ts +0 -1
  29. package/dist/esm/inputs/MRT_GlobalFilterTextField.d.ts +0 -1
  30. package/dist/esm/material-react-table.esm.js +26 -16
  31. package/dist/esm/material-react-table.esm.js.map +1 -1
  32. package/dist/esm/menus/MRT_FilterOptionMenu.d.ts +0 -1
  33. package/dist/esm/menus/MRT_ShowHideColumnsMenu.d.ts +0 -1
  34. package/dist/esm/table/MRT_Table.d.ts +1 -2
  35. package/dist/esm/table/MRT_TableRoot.d.ts +0 -1
  36. package/dist/index.d.ts +0 -1
  37. package/package.json +6 -6
  38. package/src/body/MRT_TableBody.tsx +3 -3
  39. package/src/head/MRT_TableHeadCell.tsx +1 -1
  40. package/src/inputs/MRT_FilterTextField.tsx +8 -3
  41. package/src/inputs/MRT_GlobalFilterTextField.tsx +6 -1
  42. package/src/table/MRT_Table.tsx +3 -4
  43. package/src/table/MRT_TableContainer.tsx +2 -11
  44. package/src/table/MRT_TableRoot.tsx +3 -3
  45. package/src/toolbar/MRT_BottomToolbar.tsx +3 -0
  46. package/src/toolbar/MRT_TablePagination.tsx +0 -1
  47. package/src/toolbar/MRT_ToolbarInternalButtons.tsx +6 -8
  48. package/src/toolbar/MRT_TopToolbar.tsx +6 -2
package/README.md CHANGED
@@ -21,6 +21,8 @@
21
21
 
22
22
  ## About
23
23
 
24
+ > Now in Beta!
25
+
24
26
  __Built with [Material UI <sup>V5</sup>](https://mui.com) and [TanStack Table <sup>V8</sup>](https://tanstack.com/table/v8)__
25
27
 
26
28
  _Quickly Create React Data Tables with Material Design_
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import type { MRT_Row, MRT_TableInstance } from '..';
3
2
  interface Props<TData extends Record<string, any> = {}> {
4
3
  open: boolean;
@@ -1,8 +1,7 @@
1
- import { FC, RefObject } from 'react';
1
+ import { FC } from 'react';
2
2
  import type { MRT_TableInstance } from '..';
3
3
  interface Props {
4
4
  table: MRT_TableInstance;
5
- tableContainerRef: RefObject<HTMLDivElement>;
6
5
  }
7
6
  export declare const MRT_TableBody: FC<Props>;
8
7
  export {};
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import type { MRT_Column, MRT_TableInstance } from '..';
3
2
  interface Props<TData extends Record<string, any> = {}> {
4
3
  column: MRT_Column<TData>;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import type { MRT_Row, MRT_TableInstance } from '..';
3
2
  interface Props<TData extends Record<string, any> = {}> {
4
3
  row: MRT_Row<TData>;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { IconButtonProps } from '@mui/material';
3
2
  import { MRT_TableInstance } from '..';
4
3
  interface Props<TData extends Record<string, any> = {}> extends IconButtonProps {
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { IconButtonProps } from '@mui/material';
3
2
  import { MRT_TableInstance } from '..';
4
3
  interface Props<TData extends Record<string, any> = {}> extends IconButtonProps {
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { IconButtonProps } from '@mui/material';
3
2
  import { MRT_TableInstance } from '..';
4
3
  interface Props<TData extends Record<string, any> = {}> extends IconButtonProps {
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { IconButtonProps } from '@mui/material';
3
2
  import { MRT_TableInstance } from '..';
4
3
  interface Props<TData extends Record<string, any> = {}> extends IconButtonProps {
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { IconButtonProps } from '@mui/material';
3
2
  import { MRT_TableInstance } from '..';
4
3
  interface Props<TData extends Record<string, any> = {}> extends IconButtonProps {
package/dist/cjs/index.js CHANGED
@@ -1030,7 +1030,7 @@ const MRT_GlobalFilterTextField = ({ table, }) => {
1030
1030
  const textFieldProps = muiSearchTextFieldProps instanceof Function
1031
1031
  ? muiSearchTextFieldProps({ table })
1032
1032
  : muiSearchTextFieldProps;
1033
- return (React__default["default"].createElement(material.Collapse, { in: showGlobalFilter, orientation: "horizontal" },
1033
+ return (React__default["default"].createElement(material.Collapse, { in: showGlobalFilter, orientation: "horizontal", unmountOnExit: true, mountOnEnter: true },
1034
1034
  React__default["default"].createElement(material.TextField, Object.assign({ placeholder: localization.search, onChange: handleChange, value: searchValue !== null && searchValue !== void 0 ? searchValue : '', variant: "standard", InputProps: {
1035
1035
  startAdornment: enableGlobalFilterModes ? (React__default["default"].createElement(material.InputAdornment, { position: "start" },
1036
1036
  React__default["default"].createElement(material.Tooltip, { arrow: true, title: localization.changeSearchMode },
@@ -1079,7 +1079,7 @@ const MRT_TablePagination = ({ table, position }) => {
1079
1079
  return (React__default["default"].createElement(material.TablePagination, Object.assign({ SelectProps: {
1080
1080
  sx: { m: '0 1rem 0 1ch' },
1081
1081
  MenuProps: { MenuListProps: { disablePadding: true } },
1082
- }, component: "div", count: totalRowCount, onPageChange: (_, newPage) => setPageIndex(newPage), onRowsPerPageChange: handleChangeRowsPerPage, page: pageIndex, rowsPerPage: pageSize, rowsPerPageOptions: [5, 10, 15, 20, 25, 30, 50, 100], showFirstButton: showFirstLastPageButtons, showLastButton: showFirstLastPageButtons }, tablePaginationProps, { sx: (theme) => (Object.assign({ m: '0 0.5rem', mt: position === 'top' &&
1082
+ }, component: "div", count: totalRowCount, onPageChange: (_, newPage) => setPageIndex(newPage), onRowsPerPageChange: handleChangeRowsPerPage, page: pageIndex, rowsPerPage: pageSize, rowsPerPageOptions: [5, 10, 15, 20, 25, 30, 50, 100], showFirstButton: showFirstLastPageButtons, showLastButton: showFirstLastPageButtons }, tablePaginationProps, { sx: (theme) => (Object.assign({ mt: position === 'top' &&
1083
1083
  enableToolbarInternalActions &&
1084
1084
  !showGlobalFilter
1085
1085
  ? '3.5rem'
@@ -1191,7 +1191,7 @@ const MRT_ToggleGlobalFilterButton = (_a) => {
1191
1191
 
1192
1192
  const MRT_ToolbarInternalButtons = ({ table }) => {
1193
1193
  var _a;
1194
- const { options: { enableColumnFilters, enableColumnOrdering, enableDensityToggle, enableFilters, enableFullScreenToggle, enableGlobalFilter, enableHiding, enablePinning, positionGlobalFilter, renderToolbarInternalActions, }, } = table;
1194
+ const { options: { enableColumnFilters, enableColumnOrdering, enableDensityToggle, enableFilters, enableFullScreenToggle, enableGlobalFilter, enableHiding, enablePinning, initialState, renderToolbarInternalActions, }, } = table;
1195
1195
  return (React__default["default"].createElement(material.Box, { sx: {
1196
1196
  alignItems: 'center',
1197
1197
  display: 'flex',
@@ -1199,8 +1199,9 @@ const MRT_ToolbarInternalButtons = ({ table }) => {
1199
1199
  } }, (_a = renderToolbarInternalActions === null || renderToolbarInternalActions === void 0 ? void 0 : renderToolbarInternalActions({
1200
1200
  table,
1201
1201
  })) !== null && _a !== void 0 ? _a : (React__default["default"].createElement(React__default["default"].Fragment, null,
1202
- enableGlobalFilter && positionGlobalFilter === 'right' && (React__default["default"].createElement(MRT_GlobalFilterTextField, { table: table })),
1203
- enableFilters && enableGlobalFilter && (React__default["default"].createElement(MRT_ToggleGlobalFilterButton, { table: table })),
1202
+ enableFilters &&
1203
+ enableGlobalFilter &&
1204
+ !(initialState === null || initialState === void 0 ? void 0 : initialState.showGlobalFilter) && (React__default["default"].createElement(MRT_ToggleGlobalFilterButton, { table: table })),
1204
1205
  enableFilters && enableColumnFilters && (React__default["default"].createElement(MRT_ToggleFiltersButton, { table: table })),
1205
1206
  (enableHiding || enableColumnOrdering || enablePinning) && (React__default["default"].createElement(MRT_ShowHideColumnsButton, { table: table })),
1206
1207
  enableDensityToggle && (React__default["default"].createElement(MRT_ToggleDensePaddingButton, { table: table })),
@@ -1274,7 +1275,9 @@ const MRT_TopToolbar = ({ table }) => {
1274
1275
  width: '100%',
1275
1276
  } },
1276
1277
  enableGlobalFilter && positionGlobalFilter === 'left' && (React__default["default"].createElement(MRT_GlobalFilterTextField, { table: table })), (_a = renderTopToolbarCustomActions === null || renderTopToolbarCustomActions === void 0 ? void 0 : renderTopToolbarCustomActions({ table })) !== null && _a !== void 0 ? _a : React__default["default"].createElement("span", null),
1277
- enableToolbarInternalActions ? (React__default["default"].createElement(MRT_ToolbarInternalButtons, { table: table })) : (enableGlobalFilter &&
1278
+ enableToolbarInternalActions ? (React__default["default"].createElement(material.Box, { sx: { display: 'flex', flexWrap: 'wrap' } },
1279
+ enableGlobalFilter && positionGlobalFilter === 'right' && (React__default["default"].createElement(MRT_GlobalFilterTextField, { table: table })),
1280
+ React__default["default"].createElement(MRT_ToolbarInternalButtons, { table: table }))) : (enableGlobalFilter &&
1278
1281
  positionGlobalFilter === 'right' && (React__default["default"].createElement(MRT_GlobalFilterTextField, { table: table })))),
1279
1282
  enablePagination &&
1280
1283
  ['top', 'both'].includes(positionPagination !== null && positionPagination !== void 0 ? positionPagination : '') && (React__default["default"].createElement(MRT_TablePagination, { table: table, position: "top" })),
@@ -1302,8 +1305,11 @@ const MRT_BottomToolbar = ({ table }) => {
1302
1305
  positionToolbarAlertBanner === 'bottom' && (React__default["default"].createElement(MRT_ToolbarAlertBanner, { table: table })),
1303
1306
  ['both', 'bottom'].includes(positionToolbarDropZone !== null && positionToolbarDropZone !== void 0 ? positionToolbarDropZone : '') && (React__default["default"].createElement(MRT_ToolbarDropZone, { table: table })),
1304
1307
  React__default["default"].createElement(material.Box, { sx: {
1308
+ alignItems: 'flex-start',
1309
+ boxSizing: 'border-box',
1305
1310
  display: 'flex',
1306
1311
  justifyContent: 'space-between',
1312
+ p: '0.5rem',
1307
1313
  width: '100%',
1308
1314
  } },
1309
1315
  renderBottomToolbarCustomActions ? (renderBottomToolbarCustomActions({ table })) : (React__default["default"].createElement("span", null)),
@@ -1448,7 +1454,7 @@ const MRT_FilterTextField = ({ header, rangeFilterIndex, table, }) => {
1448
1454
  setAnchorEl(event.currentTarget);
1449
1455
  };
1450
1456
  React.useEffect(() => {
1451
- setFilterValue('');
1457
+ handleClear();
1452
1458
  }, [columnDef._filterFn]);
1453
1459
  if (columnDef.Filter) {
1454
1460
  return React__default["default"].createElement(React__default["default"].Fragment, null, (_e = columnDef.Filter) === null || _e === void 0 ? void 0 : _e.call(columnDef, { column, header, table }));
@@ -1507,7 +1513,11 @@ const MRT_FilterTextField = ({ header, rangeFilterIndex, table, }) => {
1507
1513
  if (textFieldProps.inputRef) {
1508
1514
  textFieldProps.inputRef = inputRef;
1509
1515
  }
1510
- }, sx: (theme) => (Object.assign({ p: 0, minWidth: !filterChipLabel ? '120px' : 'auto', width: '100%', '& .MuiSelect-icon': {
1516
+ }, sx: (theme) => (Object.assign({ p: 0, minWidth: columnDef.filterVariant === 'range'
1517
+ ? '90px'
1518
+ : !filterChipLabel
1519
+ ? '120px'
1520
+ : 'auto', width: '100%', '& .MuiSelect-icon': {
1511
1521
  mr: '1.5rem',
1512
1522
  } }, ((textFieldProps === null || textFieldProps === void 0 ? void 0 : textFieldProps.sx) instanceof Function
1513
1523
  ? textFieldProps.sx(theme)
@@ -1698,7 +1708,7 @@ const MRT_TableHeadCell = ({ header, table }) => {
1698
1708
  return column.getIsPinned() === 'right' && column.getPinnedIndex() === 0;
1699
1709
  };
1700
1710
  const getTotalRight = () => {
1701
- return ((table.getRightLeafHeaders().length - 1 - column.getPinnedIndex()) * 150);
1711
+ return ((table.getRightLeafHeaders().length - 1 - column.getPinnedIndex()) * 180);
1702
1712
  };
1703
1713
  const handleDragEnter = (_e) => {
1704
1714
  if (enableGrouping && (hoveredColumn === null || hoveredColumn === void 0 ? void 0 : hoveredColumn.id) === 'drop-zone') {
@@ -2163,8 +2173,8 @@ const MRT_TableBodyRow = ({ row, rowIndex, table, virtualRow, }) => {
2163
2173
  renderDetailPanel && !row.getIsGrouped() && (React__default["default"].createElement(MRT_TableDetailPanel, { row: row, table: table }))));
2164
2174
  };
2165
2175
 
2166
- const MRT_TableBody = ({ table, tableContainerRef }) => {
2167
- const { getRowModel, getPrePaginationRowModel, getState, options: { enableGlobalFilterRankedResults, enablePagination, enableRowVirtualization, manualFiltering, manualSorting, muiTableBodyProps, virtualizerInstanceRef, virtualizerProps, }, } = table;
2176
+ const MRT_TableBody = ({ table }) => {
2177
+ const { getRowModel, getPrePaginationRowModel, getState, options: { enableGlobalFilterRankedResults, enablePagination, enableRowVirtualization, manualFiltering, manualSorting, muiTableBodyProps, virtualizerInstanceRef, virtualizerProps, }, refs: { tableContainerRef }, } = table;
2168
2178
  const { globalFilter, pagination, sorting } = getState();
2169
2179
  const tableBodyProps = muiTableBodyProps instanceof Function
2170
2180
  ? muiTableBodyProps({ table })
@@ -2305,7 +2315,7 @@ const MRT_TableFooter = ({ table }) => {
2305
2315
  : tableFooterProps === null || tableFooterProps === void 0 ? void 0 : tableFooterProps.sx))) }), getFooterGroups().map((footerGroup) => (React__default["default"].createElement(MRT_TableFooterRow, { footerGroup: footerGroup, key: footerGroup.id, table: table })))));
2306
2316
  };
2307
2317
 
2308
- const MRT_Table = ({ tableContainerRef, table }) => {
2318
+ const MRT_Table = ({ table }) => {
2309
2319
  const { getState, options: { enableColumnResizing, enableRowVirtualization, enableStickyHeader, enableTableFooter, enableTableHead, muiTableProps, }, } = table;
2310
2320
  const { isFullScreen } = getState();
2311
2321
  const tableProps = muiTableProps instanceof Function
@@ -2315,7 +2325,7 @@ const MRT_Table = ({ tableContainerRef, table }) => {
2315
2325
  ? tableProps.sx(theme)
2316
2326
  : tableProps === null || tableProps === void 0 ? void 0 : tableProps.sx))) }),
2317
2327
  enableTableHead && React__default["default"].createElement(MRT_TableHead, { table: table }),
2318
- React__default["default"].createElement(MRT_TableBody, { tableContainerRef: tableContainerRef, table: table }),
2328
+ React__default["default"].createElement(MRT_TableBody, { table: table }),
2319
2329
  enableTableFooter && React__default["default"].createElement(MRT_TableFooter, { table: table })));
2320
2330
  };
2321
2331
 
@@ -2350,7 +2360,7 @@ const MRT_TableContainer = ({ table }) => {
2350
2360
  : tableContainerProps === null || tableContainerProps === void 0 ? void 0 : tableContainerProps.sx))), style: Object.assign({ maxHeight: isFullScreen
2351
2361
  ? `calc(100vh - ${totalToolbarHeight}px)`
2352
2362
  : undefined }, tableContainerProps === null || tableContainerProps === void 0 ? void 0 : tableContainerProps.style) }),
2353
- React__default["default"].createElement(MRT_Table, { tableContainerRef: tableContainerRef, table: table })));
2363
+ React__default["default"].createElement(MRT_Table, { table: table })));
2354
2364
  };
2355
2365
 
2356
2366
  const MRT_TablePaper = ({ table }) => {
@@ -2528,9 +2538,9 @@ const MRT_TableRoot = (props) => {
2528
2538
  props.tableInstanceRef.current = table;
2529
2539
  }
2530
2540
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
2531
- React__default["default"].createElement(material.Dialog, { PaperComponent: material.Box, TransitionComponent: material.Grow, disablePortal: true, fullScreen: true, keepMounted: false, onClose: () => setIsFullScreen(false), open: isFullScreen, transitionDuration: 400 },
2541
+ React__default["default"].createElement(material.Dialog, { PaperComponent: material.Box, TransitionComponent: material.Grow, disablePortal: true, fullScreen: true, keepMounted: false, onClose: () => table.setIsFullScreen(false), open: table.getState().isFullScreen, transitionDuration: 400 },
2532
2542
  React__default["default"].createElement(MRT_TablePaper, { table: table })),
2533
- !isFullScreen && React__default["default"].createElement(MRT_TablePaper, { table: table }),
2543
+ !table.getState().isFullScreen && React__default["default"].createElement(MRT_TablePaper, { table: table }),
2534
2544
  editingRow && props.editingMode === 'modal' && (React__default["default"].createElement(MRT_EditRowModal, { row: editingRow, table: table, open: true }))));
2535
2545
  };
2536
2546