material-react-table 0.4.1 → 0.4.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.
@@ -1,4 +1,4 @@
1
- import { ChangeEvent, MouseEvent, ReactNode } from 'react';
1
+ import { ChangeEvent, FC, MouseEvent, ReactNode } from 'react';
2
2
  import { AlertProps, TableBodyProps, TableCellProps, TableContainerProps, TableFooterProps, TableHeadProps, TablePaginationProps, TableProps, TableRowProps, TextFieldProps, ToolbarProps } from '@mui/material';
3
3
  import { Cell, Column, HeaderGroup, Row, TableInstance, TableOptions, UseExpandedOptions, UseFiltersOptions, UseGlobalFiltersOptions, UseGroupByOptions, UsePaginationOptions, UseResizeColumnsOptions, UseRowSelectOptions, UseRowStateOptions, UseSortByOptions, UseTableOptions } from 'react-table';
4
4
  import { MRT_Localization } from './utils/localization';
@@ -24,7 +24,7 @@ export declare type MaterialReactTableProps<D extends {} = {}> = TableOptions<D>
24
24
  enableSelection?: boolean;
25
25
  hideTableFooter?: boolean;
26
26
  hideTableHead?: boolean;
27
- hideToolbarActions?: boolean;
27
+ hideToolbarInternalActions?: boolean;
28
28
  hideToolbarBottom?: boolean;
29
29
  hideToolbarTop?: boolean;
30
30
  isFetching?: boolean;
@@ -65,6 +65,13 @@ export declare type MaterialReactTableProps<D extends {} = {}> = TableOptions<D>
65
65
  renderRowActionMenuItems?: (rowData: Row<D>, tableInstance: TableInstance<D>, closeMenu: () => void) => ReactNode[];
66
66
  renderRowActions?: (row: Row<D>, tableInstance: TableInstance<D>) => ReactNode;
67
67
  renderToolbarCustomActions?: (tableInstance: TableInstance<D>) => ReactNode;
68
+ renderToolbarInternalActions?: (tableInstance: TableInstance<D>, { MRT_ToggleSearchButton, MRT_ToggleFiltersButton, MRT_ShowHideColumnsButton, MRT_ToggleDensePaddingButton, MRT_FullScreenToggleButton, }: {
69
+ MRT_ToggleSearchButton: FC;
70
+ MRT_ToggleFiltersButton: FC;
71
+ MRT_ShowHideColumnsButton: FC;
72
+ MRT_ToggleDensePaddingButton: FC;
73
+ MRT_FullScreenToggleButton: FC;
74
+ }) => ReactNode;
68
75
  };
69
76
  declare const _default: <D extends {}>({ defaultColumn, localization, positionActionsColumn, positionPagination, positionToolbarActions, positionToolbarAlertBanner, ...rest }: MaterialReactTableProps<D>) => JSX.Element;
70
77
  export default _default;
@@ -0,0 +1,5 @@
1
+ import { FC } from 'react';
2
+ interface Props {
3
+ }
4
+ export declare const MRT_ToggleDensePaddingButton: FC<Props>;
5
+ export {};
@@ -24,6 +24,8 @@ var CancelIcon = _interopDefault(require('@mui/icons-material/Cancel'));
24
24
  var SearchIcon = _interopDefault(require('@mui/icons-material/Search'));
25
25
  var FilterListOffIcon = _interopDefault(require('@mui/icons-material/FilterListOff'));
26
26
  var ViewColumnIcon = _interopDefault(require('@mui/icons-material/ViewColumn'));
27
+ var DensityMediumIcon = _interopDefault(require('@mui/icons-material/DensityMedium'));
28
+ var DensitySmallIcon = _interopDefault(require('@mui/icons-material/DensitySmall'));
27
29
  var SearchOffIcon = _interopDefault(require('@mui/icons-material/SearchOff'));
28
30
  var FilterListIcon = _interopDefault(require('@mui/icons-material/Fullscreen'));
29
31
  var FilterListOffIcon$1 = _interopDefault(require('@mui/icons-material/FullscreenExit'));
@@ -2083,8 +2085,8 @@ var MRT_ShowHideColumnsButton = function MRT_ShowHideColumnsButton() {
2083
2085
  })));
2084
2086
  };
2085
2087
 
2086
- var MRT_DensePaddingSwitch = function MRT_DensePaddingSwitch() {
2087
- var _localization$toggleD, _localization$toggleD2;
2088
+ var MRT_ToggleDensePaddingButton = function MRT_ToggleDensePaddingButton() {
2089
+ var _localization$toggleD;
2088
2090
 
2089
2091
  var _useMRT = useMRT(),
2090
2092
  densePadding = _useMRT.densePadding,
@@ -2094,17 +2096,13 @@ var MRT_DensePaddingSwitch = function MRT_DensePaddingSwitch() {
2094
2096
  return React__default.createElement(material.Tooltip, {
2095
2097
  arrow: true,
2096
2098
  title: (_localization$toggleD = localization == null ? void 0 : localization.toggleDensePaddingSwitchTitle) != null ? _localization$toggleD : ''
2097
- }, React__default.createElement(material.Switch, {
2098
- inputProps: {
2099
- 'aria-label': (_localization$toggleD2 = localization == null ? void 0 : localization.toggleDensePaddingSwitchTitle) != null ? _localization$toggleD2 : ''
2100
- },
2101
- color: "default",
2102
- checked: densePadding,
2103
- size: "small",
2104
- onChange: function onChange() {
2099
+ }, React__default.createElement(material.IconButton, {
2100
+ "aria-label": localization == null ? void 0 : localization.toggleDensePaddingSwitchTitle,
2101
+ onClick: function onClick() {
2105
2102
  return setDensePadding(!densePadding);
2106
- }
2107
- }));
2103
+ },
2104
+ size: "small"
2105
+ }, densePadding ? React__default.createElement(DensitySmallIcon, null) : React__default.createElement(DensityMediumIcon, null)));
2108
2106
  };
2109
2107
 
2110
2108
  var MRT_ToggleSearchButton = function MRT_ToggleSearchButton() {
@@ -2165,9 +2163,21 @@ var MRT_ToolbarInternalButtons = function MRT_ToolbarInternalButtons() {
2165
2163
  disableColumnHiding = _useMRT.disableColumnHiding,
2166
2164
  disableDensePaddingToggle = _useMRT.disableDensePaddingToggle,
2167
2165
  disableGlobalFilter = _useMRT.disableGlobalFilter,
2168
- disableFullScreenToggle = _useMRT.disableFullScreenToggle;
2166
+ disableFullScreenToggle = _useMRT.disableFullScreenToggle,
2167
+ renderToolbarInternalActions = _useMRT.renderToolbarInternalActions,
2168
+ tableInstance = _useMRT.tableInstance;
2169
2169
 
2170
- return React__default.createElement(ToolbarButtonsContainer, null, !disableGlobalFilter && React__default.createElement(MRT_ToggleSearchButton, null), !disableFilters && React__default.createElement(MRT_ToggleFiltersButton, null), !disableColumnHiding && React__default.createElement(MRT_ShowHideColumnsButton, null), !disableDensePaddingToggle && React__default.createElement(MRT_DensePaddingSwitch, null), !disableFullScreenToggle && React__default.createElement(MRT_FullScreenToggleButton, null));
2170
+ if (renderToolbarInternalActions) {
2171
+ return React__default.createElement(React__default.Fragment, null, renderToolbarInternalActions(tableInstance, {
2172
+ MRT_ToggleSearchButton: MRT_ToggleSearchButton,
2173
+ MRT_ToggleFiltersButton: MRT_ToggleFiltersButton,
2174
+ MRT_ShowHideColumnsButton: MRT_ShowHideColumnsButton,
2175
+ MRT_ToggleDensePaddingButton: MRT_ToggleDensePaddingButton,
2176
+ MRT_FullScreenToggleButton: MRT_FullScreenToggleButton
2177
+ }));
2178
+ }
2179
+
2180
+ return React__default.createElement(ToolbarButtonsContainer, null, !disableGlobalFilter && React__default.createElement(MRT_ToggleSearchButton, null), !disableFilters && React__default.createElement(MRT_ToggleFiltersButton, null), !disableColumnHiding && React__default.createElement(MRT_ShowHideColumnsButton, null), !disableDensePaddingToggle && React__default.createElement(MRT_ToggleDensePaddingButton, null), !disableFullScreenToggle && React__default.createElement(MRT_FullScreenToggleButton, null));
2171
2181
  };
2172
2182
 
2173
2183
  var MRT_TablePagination = function MRT_TablePagination() {
@@ -2261,12 +2271,26 @@ var MRT_ToolbarAlertBanner = function MRT_ToolbarAlertBanner() {
2261
2271
  }, alertProps), selectMessage, groupedByMessage));
2262
2272
  };
2263
2273
 
2264
- var Toolbar = /*#__PURE__*/material.styled(material.Toolbar)({
2265
- display: 'grid',
2266
- padding: '0 0.5rem !important'
2274
+ var Toolbar = /*#__PURE__*/material.styled(material.Toolbar, {
2275
+ shouldForwardProp: function shouldForwardProp(prop) {
2276
+ return prop !== 'fullScreen';
2277
+ }
2278
+ })(function (_ref) {
2279
+ var fullScreen = _ref.fullScreen,
2280
+ theme = _ref.theme;
2281
+ return {
2282
+ backgroundColor: theme.palette.background["default"],
2283
+ backgroundImage: "linear-gradient(" + material.alpha(theme.palette.common.white, 0.05) + "," + material.alpha(theme.palette.common.white, 0.05) + ")",
2284
+ display: 'grid',
2285
+ padding: '0 0.5rem !important',
2286
+ position: fullScreen ? 'sticky' : undefined,
2287
+ top: fullScreen ? '0' : undefined,
2288
+ width: 'calc(100% - 1rem)',
2289
+ zIndex: 1
2290
+ };
2267
2291
  });
2268
2292
  var ToolbarTopRow = /*#__PURE__*/material.styled('div')({
2269
- padding: '1rem 0.5rem',
2293
+ padding: '0.5rem',
2270
2294
  display: 'flex',
2271
2295
  justifyContent: 'space-between'
2272
2296
  });
@@ -2281,41 +2305,59 @@ var MRT_ToolbarTop = function MRT_ToolbarTop() {
2281
2305
 
2282
2306
  var _useMRT = useMRT(),
2283
2307
  disableGlobalFilter = _useMRT.disableGlobalFilter,
2284
- hideToolbarActions = _useMRT.hideToolbarActions,
2308
+ hideToolbarInternalActions = _useMRT.hideToolbarInternalActions,
2285
2309
  manualPagination = _useMRT.manualPagination,
2286
2310
  muiTableToolbarTopProps = _useMRT.muiTableToolbarTopProps,
2287
2311
  positionPagination = _useMRT.positionPagination,
2288
2312
  positionToolbarActions = _useMRT.positionToolbarActions,
2313
+ fullScreen = _useMRT.fullScreen,
2289
2314
  positionToolbarAlertBanner = _useMRT.positionToolbarAlertBanner,
2290
2315
  renderToolbarCustomActions = _useMRT.renderToolbarCustomActions,
2291
2316
  tableInstance = _useMRT.tableInstance;
2292
2317
 
2293
2318
  var toolbarProps = muiTableToolbarTopProps instanceof Function ? muiTableToolbarTopProps(tableInstance) : muiTableToolbarTopProps;
2294
2319
  return React__default.createElement(Toolbar, Object.assign({
2320
+ fullScreen: fullScreen,
2295
2321
  variant: "dense"
2296
- }, toolbarProps), positionToolbarAlertBanner === 'top' && React__default.createElement(MRT_ToolbarAlertBanner, null), React__default.createElement(ToolbarTopRow, null, (_renderToolbarCustomA = renderToolbarCustomActions == null ? void 0 : renderToolbarCustomActions(tableInstance)) != null ? _renderToolbarCustomA : React__default.createElement("span", null), React__default.createElement(ToolbarActionsContainer, null, !disableGlobalFilter && React__default.createElement(MRT_SearchTextField, null), !hideToolbarActions && positionToolbarActions === 'top' && React__default.createElement(MRT_ToolbarInternalButtons, null))), React__default.createElement("div", null, !manualPagination && ['top', 'both'].includes(positionPagination != null ? positionPagination : '') && React__default.createElement(MRT_TablePagination, null)));
2322
+ }, toolbarProps), positionToolbarAlertBanner === 'top' && React__default.createElement(MRT_ToolbarAlertBanner, null), React__default.createElement(ToolbarTopRow, null, (_renderToolbarCustomA = renderToolbarCustomActions == null ? void 0 : renderToolbarCustomActions(tableInstance)) != null ? _renderToolbarCustomA : React__default.createElement("span", null), React__default.createElement(ToolbarActionsContainer, null, !disableGlobalFilter && React__default.createElement(MRT_SearchTextField, null), !hideToolbarInternalActions && positionToolbarActions === 'top' && React__default.createElement(MRT_ToolbarInternalButtons, null))), React__default.createElement("div", null, !manualPagination && ['top', 'both'].includes(positionPagination != null ? positionPagination : '') && React__default.createElement(MRT_TablePagination, null)));
2297
2323
  };
2298
2324
 
2299
- var Toolbar$1 = /*#__PURE__*/material.styled(material.Toolbar)({
2300
- display: 'flex',
2301
- justifyContent: 'space-between',
2302
- padding: '0 0.5rem !important',
2303
- overflowY: 'hidden'
2325
+ var Toolbar$1 = /*#__PURE__*/material.styled(material.Toolbar, {
2326
+ shouldForwardProp: function shouldForwardProp(prop) {
2327
+ return prop !== 'fullScreen';
2328
+ }
2329
+ })(function (_ref) {
2330
+ var fullScreen = _ref.fullScreen,
2331
+ theme = _ref.theme;
2332
+ return {
2333
+ backgroundColor: theme.palette.background["default"],
2334
+ backgroundImage: "linear-gradient(" + material.alpha(theme.palette.common.white, 0.05) + "," + material.alpha(theme.palette.common.white, 0.05) + ")",
2335
+ bottom: fullScreen ? '0' : undefined,
2336
+ display: 'flex',
2337
+ justifyContent: 'space-between',
2338
+ overflowY: 'hidden',
2339
+ padding: '0 0.5rem !important',
2340
+ position: fullScreen ? 'fixed' : undefined,
2341
+ width: 'calc(100% - 1rem)',
2342
+ zIndex: 1
2343
+ };
2304
2344
  });
2305
2345
  var MRT_ToolbarBottom = function MRT_ToolbarBottom() {
2306
2346
  var _useMRT = useMRT(),
2307
- hideToolbarActions = _useMRT.hideToolbarActions,
2347
+ hideToolbarInternalActions = _useMRT.hideToolbarInternalActions,
2308
2348
  manualPagination = _useMRT.manualPagination,
2309
2349
  muiTableToolbarBottomProps = _useMRT.muiTableToolbarBottomProps,
2310
2350
  positionPagination = _useMRT.positionPagination,
2351
+ fullScreen = _useMRT.fullScreen,
2311
2352
  positionToolbarActions = _useMRT.positionToolbarActions,
2312
2353
  positionToolbarAlertBanner = _useMRT.positionToolbarAlertBanner,
2313
2354
  tableInstance = _useMRT.tableInstance;
2314
2355
 
2315
2356
  var toolbarProps = muiTableToolbarBottomProps instanceof Function ? muiTableToolbarBottomProps(tableInstance) : muiTableToolbarBottomProps;
2316
2357
  return React__default.createElement(Toolbar$1, Object.assign({
2358
+ fullScreen: fullScreen,
2317
2359
  variant: "dense"
2318
- }, toolbarProps), !hideToolbarActions && positionToolbarActions === 'bottom' ? React__default.createElement(MRT_ToolbarInternalButtons, null) : React__default.createElement("span", null), positionToolbarAlertBanner === 'bottom' && React__default.createElement(MRT_ToolbarAlertBanner, null), !manualPagination && ['bottom', 'both'].includes(positionPagination != null ? positionPagination : '') && React__default.createElement(MRT_TablePagination, null));
2360
+ }, toolbarProps), !hideToolbarInternalActions && positionToolbarActions === 'bottom' ? React__default.createElement(MRT_ToolbarInternalButtons, null) : React__default.createElement("span", null), positionToolbarAlertBanner === 'bottom' && React__default.createElement(MRT_ToolbarAlertBanner, null), !manualPagination && ['bottom', 'both'].includes(positionPagination != null ? positionPagination : '') && React__default.createElement(MRT_TablePagination, null));
2319
2361
  };
2320
2362
 
2321
2363
  var TableContainer = /*#__PURE__*/material.styled(material.TableContainer, {
@@ -2329,12 +2371,12 @@ var TableContainer = /*#__PURE__*/material.styled(material.TableContainer, {
2329
2371
  height: fullScreen ? '100%' : undefined,
2330
2372
  left: fullScreen ? '0' : undefined,
2331
2373
  margin: fullScreen ? '0' : undefined,
2332
- position: fullScreen ? 'absolute' : undefined,
2374
+ position: fullScreen ? 'fixed' : undefined,
2333
2375
  right: fullScreen ? '0' : undefined,
2334
2376
  top: fullScreen ? '0' : undefined,
2335
2377
  transition: 'all 0.2s ease-in-out',
2336
2378
  width: fullScreen ? '100vw' : undefined,
2337
- zIndex: fullScreen ? 1200 : undefined
2379
+ zIndex: fullScreen ? 1200 : 1
2338
2380
  };
2339
2381
  });
2340
2382
  var CircularProgressWrapper = /*#__PURE__*/material.styled('div')(function (_ref2) {
@@ -2360,6 +2402,13 @@ var MRT_TableContainer = function MRT_TableContainer() {
2360
2402
  muiTableContainerProps = _useMRT.muiTableContainerProps,
2361
2403
  tableInstance = _useMRT.tableInstance;
2362
2404
 
2405
+ React.useEffect(function () {
2406
+ if (fullScreen) {
2407
+ document.body.style.overflow = 'hidden';
2408
+ } else {
2409
+ document.body.style.overflow = 'auto';
2410
+ }
2411
+ }, [fullScreen]);
2363
2412
  var tableContainerProps = muiTableContainerProps instanceof Function ? muiTableContainerProps(tableInstance) : muiTableContainerProps;
2364
2413
  return React__default.createElement(TableContainer, Object.assign({
2365
2414
  component: material.Paper,