material-react-table 0.3.5 → 0.4.3

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 React, { useMemo, useState, useContext, createContext, Fragment } from 'react';
1
+ import React, { useMemo, useState, useContext, createContext, Fragment, useEffect } from 'react';
2
2
  import { useTable, useFilters, useGlobalFilter, useGroupBy, useSortBy, useExpanded, usePagination, useRowSelect, useResizeColumns, useFlexLayout, useAsyncDebounce } from 'react-table';
3
3
  import { TextField as TextField$1, Tooltip, InputAdornment, IconButton as IconButton$2, Menu, Divider as Divider$1, styled, MenuItem as MenuItem$2, TableCell as TableCell$3, TableSortLabel, Collapse, Checkbox, TableRow as TableRow$1, TableHead, alpha, TableBody as TableBody$1, TableFooter, Table, FormControlLabel, Switch, Button, TablePagination, useMediaQuery, Chip, Alert as Alert$1, Toolbar as Toolbar$2, Paper, LinearProgress, CircularProgress, TableContainer as TableContainer$1 } from '@mui/material';
4
4
  import CloseIcon from '@mui/icons-material/Close';
@@ -17,6 +17,8 @@ import CancelIcon from '@mui/icons-material/Cancel';
17
17
  import SearchIcon from '@mui/icons-material/Search';
18
18
  import FilterListOffIcon from '@mui/icons-material/FilterListOff';
19
19
  import ViewColumnIcon from '@mui/icons-material/ViewColumn';
20
+ import DensityMediumIcon from '@mui/icons-material/DensityMedium';
21
+ import DensitySmallIcon from '@mui/icons-material/DensitySmall';
20
22
  import SearchOffIcon from '@mui/icons-material/SearchOff';
21
23
  import FilterListIcon from '@mui/icons-material/Fullscreen';
22
24
  import FilterListOffIcon$1 from '@mui/icons-material/FullscreenExit';
@@ -2076,8 +2078,8 @@ var MRT_ShowHideColumnsButton = function MRT_ShowHideColumnsButton() {
2076
2078
  })));
2077
2079
  };
2078
2080
 
2079
- var MRT_DensePaddingSwitch = function MRT_DensePaddingSwitch() {
2080
- var _localization$toggleD, _localization$toggleD2;
2081
+ var MRT_ToggleDensePaddingButton = function MRT_ToggleDensePaddingButton() {
2082
+ var _localization$toggleD;
2081
2083
 
2082
2084
  var _useMRT = useMRT(),
2083
2085
  densePadding = _useMRT.densePadding,
@@ -2087,17 +2089,13 @@ var MRT_DensePaddingSwitch = function MRT_DensePaddingSwitch() {
2087
2089
  return React.createElement(Tooltip, {
2088
2090
  arrow: true,
2089
2091
  title: (_localization$toggleD = localization == null ? void 0 : localization.toggleDensePaddingSwitchTitle) != null ? _localization$toggleD : ''
2090
- }, React.createElement(Switch, {
2091
- inputProps: {
2092
- 'aria-label': (_localization$toggleD2 = localization == null ? void 0 : localization.toggleDensePaddingSwitchTitle) != null ? _localization$toggleD2 : ''
2093
- },
2094
- color: "default",
2095
- checked: densePadding,
2096
- size: "small",
2097
- onChange: function onChange() {
2092
+ }, React.createElement(IconButton$2, {
2093
+ "aria-label": localization == null ? void 0 : localization.toggleDensePaddingSwitchTitle,
2094
+ onClick: function onClick() {
2098
2095
  return setDensePadding(!densePadding);
2099
- }
2100
- }));
2096
+ },
2097
+ size: "small"
2098
+ }, densePadding ? React.createElement(DensitySmallIcon, null) : React.createElement(DensityMediumIcon, null)));
2101
2099
  };
2102
2100
 
2103
2101
  var MRT_ToggleSearchButton = function MRT_ToggleSearchButton() {
@@ -2160,7 +2158,7 @@ var MRT_ToolbarInternalButtons = function MRT_ToolbarInternalButtons() {
2160
2158
  disableGlobalFilter = _useMRT.disableGlobalFilter,
2161
2159
  disableFullScreenToggle = _useMRT.disableFullScreenToggle;
2162
2160
 
2163
- return React.createElement(ToolbarButtonsContainer, null, !disableGlobalFilter && React.createElement(MRT_ToggleSearchButton, null), !disableFilters && React.createElement(MRT_ToggleFiltersButton, null), !disableColumnHiding && React.createElement(MRT_ShowHideColumnsButton, null), !disableDensePaddingToggle && React.createElement(MRT_DensePaddingSwitch, null), !disableFullScreenToggle && React.createElement(MRT_FullScreenToggleButton, null));
2161
+ return React.createElement(ToolbarButtonsContainer, null, !disableGlobalFilter && React.createElement(MRT_ToggleSearchButton, null), !disableFilters && React.createElement(MRT_ToggleFiltersButton, null), !disableColumnHiding && React.createElement(MRT_ShowHideColumnsButton, null), !disableDensePaddingToggle && React.createElement(MRT_ToggleDensePaddingButton, null), !disableFullScreenToggle && React.createElement(MRT_FullScreenToggleButton, null));
2164
2162
  };
2165
2163
 
2166
2164
  var MRT_TablePagination = function MRT_TablePagination() {
@@ -2254,12 +2252,26 @@ var MRT_ToolbarAlertBanner = function MRT_ToolbarAlertBanner() {
2254
2252
  }, alertProps), selectMessage, groupedByMessage));
2255
2253
  };
2256
2254
 
2257
- var Toolbar = /*#__PURE__*/styled(Toolbar$2)({
2258
- display: 'grid',
2259
- padding: '0 0.5rem !important'
2255
+ var Toolbar = /*#__PURE__*/styled(Toolbar$2, {
2256
+ shouldForwardProp: function shouldForwardProp(prop) {
2257
+ return prop !== 'fullScreen';
2258
+ }
2259
+ })(function (_ref) {
2260
+ var fullScreen = _ref.fullScreen,
2261
+ theme = _ref.theme;
2262
+ return {
2263
+ backgroundColor: theme.palette.background["default"],
2264
+ backgroundImage: "linear-gradient(" + alpha(theme.palette.common.white, 0.05) + "," + alpha(theme.palette.common.white, 0.05) + ")",
2265
+ display: 'grid',
2266
+ padding: '0 0.5rem !important',
2267
+ position: fullScreen ? 'sticky' : undefined,
2268
+ top: fullScreen ? '0' : undefined,
2269
+ width: 'calc(100% - 1rem)',
2270
+ zIndex: 1
2271
+ };
2260
2272
  });
2261
2273
  var ToolbarTopRow = /*#__PURE__*/styled('div')({
2262
- padding: '1rem 0.5rem',
2274
+ padding: '0.5rem',
2263
2275
  display: 'flex',
2264
2276
  justifyContent: 'space-between'
2265
2277
  });
@@ -2279,21 +2291,37 @@ var MRT_ToolbarTop = function MRT_ToolbarTop() {
2279
2291
  muiTableToolbarTopProps = _useMRT.muiTableToolbarTopProps,
2280
2292
  positionPagination = _useMRT.positionPagination,
2281
2293
  positionToolbarActions = _useMRT.positionToolbarActions,
2294
+ fullScreen = _useMRT.fullScreen,
2282
2295
  positionToolbarAlertBanner = _useMRT.positionToolbarAlertBanner,
2283
2296
  renderToolbarCustomActions = _useMRT.renderToolbarCustomActions,
2284
2297
  tableInstance = _useMRT.tableInstance;
2285
2298
 
2286
2299
  var toolbarProps = muiTableToolbarTopProps instanceof Function ? muiTableToolbarTopProps(tableInstance) : muiTableToolbarTopProps;
2287
2300
  return React.createElement(Toolbar, Object.assign({
2301
+ fullScreen: fullScreen,
2288
2302
  variant: "dense"
2289
2303
  }, toolbarProps), positionToolbarAlertBanner === 'top' && React.createElement(MRT_ToolbarAlertBanner, null), React.createElement(ToolbarTopRow, null, (_renderToolbarCustomA = renderToolbarCustomActions == null ? void 0 : renderToolbarCustomActions(tableInstance)) != null ? _renderToolbarCustomA : React.createElement("span", null), React.createElement(ToolbarActionsContainer, null, !disableGlobalFilter && React.createElement(MRT_SearchTextField, null), !hideToolbarActions && positionToolbarActions === 'top' && React.createElement(MRT_ToolbarInternalButtons, null))), React.createElement("div", null, !manualPagination && ['top', 'both'].includes(positionPagination != null ? positionPagination : '') && React.createElement(MRT_TablePagination, null)));
2290
2304
  };
2291
2305
 
2292
- var Toolbar$1 = /*#__PURE__*/styled(Toolbar$2)({
2293
- display: 'flex',
2294
- justifyContent: 'space-between',
2295
- padding: '0 0.5rem !important',
2296
- overflowY: 'hidden'
2306
+ var Toolbar$1 = /*#__PURE__*/styled(Toolbar$2, {
2307
+ shouldForwardProp: function shouldForwardProp(prop) {
2308
+ return prop !== 'fullScreen';
2309
+ }
2310
+ })(function (_ref) {
2311
+ var fullScreen = _ref.fullScreen,
2312
+ theme = _ref.theme;
2313
+ return {
2314
+ backgroundColor: theme.palette.background["default"],
2315
+ backgroundImage: "linear-gradient(" + alpha(theme.palette.common.white, 0.05) + "," + alpha(theme.palette.common.white, 0.05) + ")",
2316
+ bottom: fullScreen ? '0' : undefined,
2317
+ display: 'flex',
2318
+ justifyContent: 'space-between',
2319
+ overflowY: 'hidden',
2320
+ padding: '0 0.5rem !important',
2321
+ position: fullScreen ? 'fixed' : undefined,
2322
+ width: 'calc(100% - 1rem)',
2323
+ zIndex: 1
2324
+ };
2297
2325
  });
2298
2326
  var MRT_ToolbarBottom = function MRT_ToolbarBottom() {
2299
2327
  var _useMRT = useMRT(),
@@ -2301,12 +2329,14 @@ var MRT_ToolbarBottom = function MRT_ToolbarBottom() {
2301
2329
  manualPagination = _useMRT.manualPagination,
2302
2330
  muiTableToolbarBottomProps = _useMRT.muiTableToolbarBottomProps,
2303
2331
  positionPagination = _useMRT.positionPagination,
2332
+ fullScreen = _useMRT.fullScreen,
2304
2333
  positionToolbarActions = _useMRT.positionToolbarActions,
2305
2334
  positionToolbarAlertBanner = _useMRT.positionToolbarAlertBanner,
2306
2335
  tableInstance = _useMRT.tableInstance;
2307
2336
 
2308
2337
  var toolbarProps = muiTableToolbarBottomProps instanceof Function ? muiTableToolbarBottomProps(tableInstance) : muiTableToolbarBottomProps;
2309
2338
  return React.createElement(Toolbar$1, Object.assign({
2339
+ fullScreen: fullScreen,
2310
2340
  variant: "dense"
2311
2341
  }, toolbarProps), !hideToolbarActions && positionToolbarActions === 'bottom' ? React.createElement(MRT_ToolbarInternalButtons, null) : React.createElement("span", null), positionToolbarAlertBanner === 'bottom' && React.createElement(MRT_ToolbarAlertBanner, null), !manualPagination && ['bottom', 'both'].includes(positionPagination != null ? positionPagination : '') && React.createElement(MRT_TablePagination, null));
2312
2342
  };
@@ -2326,7 +2356,8 @@ var TableContainer = /*#__PURE__*/styled(TableContainer$1, {
2326
2356
  right: fullScreen ? '0' : undefined,
2327
2357
  top: fullScreen ? '0' : undefined,
2328
2358
  transition: 'all 0.2s ease-in-out',
2329
- width: fullScreen ? '100vw' : undefined
2359
+ width: fullScreen ? '100vw' : undefined,
2360
+ zIndex: fullScreen ? 1200 : 1
2330
2361
  };
2331
2362
  });
2332
2363
  var CircularProgressWrapper = /*#__PURE__*/styled('div')(function (_ref2) {
@@ -2344,17 +2375,26 @@ var CircularProgressWrapper = /*#__PURE__*/styled('div')(function (_ref2) {
2344
2375
  });
2345
2376
  var MRT_TableContainer = function MRT_TableContainer() {
2346
2377
  var _useMRT = useMRT(),
2347
- muiTableContainerProps = _useMRT.muiTableContainerProps,
2348
- hideToolbarTop = _useMRT.hideToolbarTop,
2349
- hideToolbarBottom = _useMRT.hideToolbarBottom,
2350
2378
  fullScreen = _useMRT.fullScreen,
2379
+ hideToolbarBottom = _useMRT.hideToolbarBottom,
2380
+ hideToolbarTop = _useMRT.hideToolbarTop,
2381
+ isFetching = _useMRT.isFetching,
2351
2382
  isLoading = _useMRT.isLoading,
2352
- isFetching = _useMRT.isFetching;
2383
+ muiTableContainerProps = _useMRT.muiTableContainerProps,
2384
+ tableInstance = _useMRT.tableInstance;
2353
2385
 
2386
+ useEffect(function () {
2387
+ if (fullScreen) {
2388
+ document.body.style.overflow = 'hidden';
2389
+ } else {
2390
+ document.body.style.overflow = 'auto';
2391
+ }
2392
+ }, [fullScreen]);
2393
+ var tableContainerProps = muiTableContainerProps instanceof Function ? muiTableContainerProps(tableInstance) : muiTableContainerProps;
2354
2394
  return React.createElement(TableContainer, Object.assign({
2355
2395
  component: Paper,
2356
2396
  fullScreen: fullScreen
2357
- }, muiTableContainerProps), !hideToolbarTop && React.createElement(MRT_ToolbarTop, null), isFetching && React.createElement(LinearProgress, null), isLoading && React.createElement(CircularProgressWrapper, null, React.createElement(CircularProgress, {
2397
+ }, tableContainerProps), !hideToolbarTop && React.createElement(MRT_ToolbarTop, null), isFetching && React.createElement(LinearProgress, null), isLoading && React.createElement(CircularProgressWrapper, null, React.createElement(CircularProgress, {
2358
2398
  "aria-busy": "true",
2359
2399
  "aria-label": "Loading data"
2360
2400
  })), React.createElement(MRT_Table, null), !hideToolbarBottom && React.createElement(MRT_ToolbarBottom, null));