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 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() {
@@ -2158,9 +2156,21 @@ var MRT_ToolbarInternalButtons = function MRT_ToolbarInternalButtons() {
2158
2156
  disableColumnHiding = _useMRT.disableColumnHiding,
2159
2157
  disableDensePaddingToggle = _useMRT.disableDensePaddingToggle,
2160
2158
  disableGlobalFilter = _useMRT.disableGlobalFilter,
2161
- disableFullScreenToggle = _useMRT.disableFullScreenToggle;
2159
+ disableFullScreenToggle = _useMRT.disableFullScreenToggle,
2160
+ renderToolbarInternalActions = _useMRT.renderToolbarInternalActions,
2161
+ tableInstance = _useMRT.tableInstance;
2162
2162
 
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));
2163
+ if (renderToolbarInternalActions) {
2164
+ return React.createElement(React.Fragment, null, renderToolbarInternalActions(tableInstance, {
2165
+ MRT_ToggleSearchButton: MRT_ToggleSearchButton,
2166
+ MRT_ToggleFiltersButton: MRT_ToggleFiltersButton,
2167
+ MRT_ShowHideColumnsButton: MRT_ShowHideColumnsButton,
2168
+ MRT_ToggleDensePaddingButton: MRT_ToggleDensePaddingButton,
2169
+ MRT_FullScreenToggleButton: MRT_FullScreenToggleButton
2170
+ }));
2171
+ }
2172
+
2173
+ 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
2174
  };
2165
2175
 
2166
2176
  var MRT_TablePagination = function MRT_TablePagination() {
@@ -2254,12 +2264,26 @@ var MRT_ToolbarAlertBanner = function MRT_ToolbarAlertBanner() {
2254
2264
  }, alertProps), selectMessage, groupedByMessage));
2255
2265
  };
2256
2266
 
2257
- var Toolbar = /*#__PURE__*/styled(Toolbar$2)({
2258
- display: 'grid',
2259
- padding: '0 0.5rem !important'
2267
+ var Toolbar = /*#__PURE__*/styled(Toolbar$2, {
2268
+ shouldForwardProp: function shouldForwardProp(prop) {
2269
+ return prop !== 'fullScreen';
2270
+ }
2271
+ })(function (_ref) {
2272
+ var fullScreen = _ref.fullScreen,
2273
+ theme = _ref.theme;
2274
+ return {
2275
+ backgroundColor: theme.palette.background["default"],
2276
+ backgroundImage: "linear-gradient(" + alpha(theme.palette.common.white, 0.05) + "," + alpha(theme.palette.common.white, 0.05) + ")",
2277
+ display: 'grid',
2278
+ padding: '0 0.5rem !important',
2279
+ position: fullScreen ? 'sticky' : undefined,
2280
+ top: fullScreen ? '0' : undefined,
2281
+ width: 'calc(100% - 1rem)',
2282
+ zIndex: 1
2283
+ };
2260
2284
  });
2261
2285
  var ToolbarTopRow = /*#__PURE__*/styled('div')({
2262
- padding: '1rem 0.5rem',
2286
+ padding: '0.5rem',
2263
2287
  display: 'flex',
2264
2288
  justifyContent: 'space-between'
2265
2289
  });
@@ -2274,41 +2298,59 @@ var MRT_ToolbarTop = function MRT_ToolbarTop() {
2274
2298
 
2275
2299
  var _useMRT = useMRT(),
2276
2300
  disableGlobalFilter = _useMRT.disableGlobalFilter,
2277
- hideToolbarActions = _useMRT.hideToolbarActions,
2301
+ hideToolbarInternalActions = _useMRT.hideToolbarInternalActions,
2278
2302
  manualPagination = _useMRT.manualPagination,
2279
2303
  muiTableToolbarTopProps = _useMRT.muiTableToolbarTopProps,
2280
2304
  positionPagination = _useMRT.positionPagination,
2281
2305
  positionToolbarActions = _useMRT.positionToolbarActions,
2306
+ fullScreen = _useMRT.fullScreen,
2282
2307
  positionToolbarAlertBanner = _useMRT.positionToolbarAlertBanner,
2283
2308
  renderToolbarCustomActions = _useMRT.renderToolbarCustomActions,
2284
2309
  tableInstance = _useMRT.tableInstance;
2285
2310
 
2286
2311
  var toolbarProps = muiTableToolbarTopProps instanceof Function ? muiTableToolbarTopProps(tableInstance) : muiTableToolbarTopProps;
2287
2312
  return React.createElement(Toolbar, Object.assign({
2313
+ fullScreen: fullScreen,
2288
2314
  variant: "dense"
2289
- }, 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)));
2315
+ }, 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), !hideToolbarInternalActions && positionToolbarActions === 'top' && React.createElement(MRT_ToolbarInternalButtons, null))), React.createElement("div", null, !manualPagination && ['top', 'both'].includes(positionPagination != null ? positionPagination : '') && React.createElement(MRT_TablePagination, null)));
2290
2316
  };
2291
2317
 
2292
- var Toolbar$1 = /*#__PURE__*/styled(Toolbar$2)({
2293
- display: 'flex',
2294
- justifyContent: 'space-between',
2295
- padding: '0 0.5rem !important',
2296
- overflowY: 'hidden'
2318
+ var Toolbar$1 = /*#__PURE__*/styled(Toolbar$2, {
2319
+ shouldForwardProp: function shouldForwardProp(prop) {
2320
+ return prop !== 'fullScreen';
2321
+ }
2322
+ })(function (_ref) {
2323
+ var fullScreen = _ref.fullScreen,
2324
+ theme = _ref.theme;
2325
+ return {
2326
+ backgroundColor: theme.palette.background["default"],
2327
+ backgroundImage: "linear-gradient(" + alpha(theme.palette.common.white, 0.05) + "," + alpha(theme.palette.common.white, 0.05) + ")",
2328
+ bottom: fullScreen ? '0' : undefined,
2329
+ display: 'flex',
2330
+ justifyContent: 'space-between',
2331
+ overflowY: 'hidden',
2332
+ padding: '0 0.5rem !important',
2333
+ position: fullScreen ? 'fixed' : undefined,
2334
+ width: 'calc(100% - 1rem)',
2335
+ zIndex: 1
2336
+ };
2297
2337
  });
2298
2338
  var MRT_ToolbarBottom = function MRT_ToolbarBottom() {
2299
2339
  var _useMRT = useMRT(),
2300
- hideToolbarActions = _useMRT.hideToolbarActions,
2340
+ hideToolbarInternalActions = _useMRT.hideToolbarInternalActions,
2301
2341
  manualPagination = _useMRT.manualPagination,
2302
2342
  muiTableToolbarBottomProps = _useMRT.muiTableToolbarBottomProps,
2303
2343
  positionPagination = _useMRT.positionPagination,
2344
+ fullScreen = _useMRT.fullScreen,
2304
2345
  positionToolbarActions = _useMRT.positionToolbarActions,
2305
2346
  positionToolbarAlertBanner = _useMRT.positionToolbarAlertBanner,
2306
2347
  tableInstance = _useMRT.tableInstance;
2307
2348
 
2308
2349
  var toolbarProps = muiTableToolbarBottomProps instanceof Function ? muiTableToolbarBottomProps(tableInstance) : muiTableToolbarBottomProps;
2309
2350
  return React.createElement(Toolbar$1, Object.assign({
2351
+ fullScreen: fullScreen,
2310
2352
  variant: "dense"
2311
- }, 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));
2353
+ }, toolbarProps), !hideToolbarInternalActions && 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
2354
  };
2313
2355
 
2314
2356
  var TableContainer = /*#__PURE__*/styled(TableContainer$1, {
@@ -2322,12 +2364,12 @@ var TableContainer = /*#__PURE__*/styled(TableContainer$1, {
2322
2364
  height: fullScreen ? '100%' : undefined,
2323
2365
  left: fullScreen ? '0' : undefined,
2324
2366
  margin: fullScreen ? '0' : undefined,
2325
- position: fullScreen ? 'absolute' : undefined,
2367
+ position: fullScreen ? 'fixed' : undefined,
2326
2368
  right: fullScreen ? '0' : undefined,
2327
2369
  top: fullScreen ? '0' : undefined,
2328
2370
  transition: 'all 0.2s ease-in-out',
2329
2371
  width: fullScreen ? '100vw' : undefined,
2330
- zIndex: fullScreen ? 1200 : undefined
2372
+ zIndex: fullScreen ? 1200 : 1
2331
2373
  };
2332
2374
  });
2333
2375
  var CircularProgressWrapper = /*#__PURE__*/styled('div')(function (_ref2) {
@@ -2353,6 +2395,13 @@ var MRT_TableContainer = function MRT_TableContainer() {
2353
2395
  muiTableContainerProps = _useMRT.muiTableContainerProps,
2354
2396
  tableInstance = _useMRT.tableInstance;
2355
2397
 
2398
+ useEffect(function () {
2399
+ if (fullScreen) {
2400
+ document.body.style.overflow = 'hidden';
2401
+ } else {
2402
+ document.body.style.overflow = 'auto';
2403
+ }
2404
+ }, [fullScreen]);
2356
2405
  var tableContainerProps = muiTableContainerProps instanceof Function ? muiTableContainerProps(tableInstance) : muiTableContainerProps;
2357
2406
  return React.createElement(TableContainer, Object.assign({
2358
2407
  component: Paper,