material-react-table 0.14.2 → 0.14.5

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,7 +1,7 @@
1
1
  import React, { useMemo, forwardRef, useState, useCallback, Fragment, useLayoutEffect, useEffect } from 'react';
2
2
  import { ArrowRight, Cancel, CheckBox, ClearAll, Close, DensityLarge, DensityMedium, DensitySmall, DragHandle, DynamicFeed, Edit, ExpandLess, ExpandMore, FilterAlt, FilterAltOff, FilterList, FilterListOff, FullscreenExit, Fullscreen, KeyboardDoubleArrowDown, MoreHoriz, MoreVert, PushPin, RestartAlt, Save, Search, SearchOff, Sort, ViewColumn, VisibilityOff } from '@mui/icons-material';
3
3
  import { createTable, getCoreRowModel, getExpandedRowModel, getFacetedRowModel, getFilteredRowModel, getGroupedRowModel, getPaginationRowModel, getSortedRowModel, useTableInstance } from '@tanstack/react-table';
4
- import { Tooltip, IconButton, Menu, MenuItem, Box, FormControlLabel, Switch, Button, Divider, ListItemIcon, Checkbox, debounce, Collapse, TextField, InputAdornment, TablePagination, Chip, Alert, LinearProgress, useMediaQuery, Toolbar, lighten, alpha, TableSortLabel, TableCell, TableRow, TableHead, darken, Skeleton, TableBody, TableFooter, Table, TableContainer, Paper, Dialog, Grow } from '@mui/material';
4
+ import { Tooltip, IconButton, Menu, MenuItem, Box, FormControlLabel, Switch, Button, Divider, ListItemIcon, Checkbox, debounce, Collapse, TextField, InputAdornment, TablePagination, Chip, Alert, LinearProgress, useMediaQuery, Toolbar, lighten, alpha, Grow, TableSortLabel, TableCell, TableRow, TableHead, darken, Skeleton, TableBody, TableFooter, Table, TableContainer, Paper, Dialog } from '@mui/material';
5
5
  import { rankItem, rankings } from '@tanstack/match-sorter-utils';
6
6
  import { useDrop, useDrag, DndProvider } from 'react-dnd';
7
7
  import { HTML5Backend } from 'react-dnd-html5-backend';
@@ -1935,7 +1935,9 @@ var MRT_ToolbarBottom = function MRT_ToolbarBottom(_ref) {
1935
1935
  }), {
1936
1936
  bottom: isFullScreen ? '0' : undefined,
1937
1937
  boxShadow: "-3px 0 6px " + alpha(theme.palette.common.black, 0.1),
1938
- position: isFullScreen ? 'fixed' : 'relative'
1938
+ left: 0,
1939
+ position: isFullScreen ? 'fixed' : 'relative',
1940
+ right: 0
1939
1941
  }, toolbarProps == null ? void 0 : toolbarProps.sx);
1940
1942
  }
1941
1943
  }), React.createElement(MRT_LinearProgressBar, {
@@ -2260,27 +2262,28 @@ var MRT_TableHeadCellFilterContainer = function MRT_TableHeadCellFilterContainer
2260
2262
  };
2261
2263
 
2262
2264
  var MRT_TableHeadCellFilterLabel = function MRT_TableHeadCellFilterLabel(_ref) {
2263
- var _getState2, _getState2$currentFil;
2265
+ var _column$getFilterValu, _column$getFilterValu2;
2264
2266
 
2265
2267
  var header = _ref.header,
2266
2268
  instance = _ref.instance;
2267
2269
  var getState = instance.getState,
2268
2270
  _instance$options = instance.options,
2269
- _instance$options$ico = _instance$options.icons,
2270
- FilterAltIcon = _instance$options$ico.FilterAltIcon,
2271
- FilterAltOffIcon = _instance$options$ico.FilterAltOffIcon,
2272
- localization = _instance$options.localization,
2273
- setShowFilters = instance.setShowFilters;
2271
+ FilterAltIcon = _instance$options.icons.FilterAltIcon,
2272
+ localization = _instance$options.localization;
2274
2273
 
2275
2274
  var _getState = getState(),
2276
- showFilters = _getState.showFilters;
2275
+ currentFilterFns = _getState.currentFilterFns;
2277
2276
 
2278
2277
  var column = header.column;
2279
2278
  var columnDef = column.columnDef;
2280
- var filterFn = (_getState2 = getState()) == null ? void 0 : (_getState2$currentFil = _getState2.currentFilterFns) == null ? void 0 : _getState2$currentFil[header.id];
2281
- var filterTooltip = !!column.getFilterValue() ? localization.filteringByColumn.replace('{column}', String(columnDef.header)).replace('{filterType}', filterFn instanceof Function ? '' : // @ts-ignore
2282
- localization["filter" + (filterFn.charAt(0).toUpperCase() + filterFn.slice(1))]).replace('{filterValue}', "\"" + (Array.isArray(column.getFilterValue()) ? column.getFilterValue().join("\" " + localization.and + " \"") : column.getFilterValue()) + "\"").replace('" "', '') : localization.showHideFilters;
2283
- return React.createElement(Tooltip, {
2279
+ var filterFn = currentFilterFns == null ? void 0 : currentFilterFns[header.id];
2280
+ var filterTooltip = localization.filteringByColumn.replace('{column}', String(columnDef.header)).replace('{filterType}', filterFn instanceof Function ? '' : // @ts-ignore
2281
+ localization["filter" + (filterFn.charAt(0).toUpperCase() + filterFn.slice(1))]).replace('{filterValue}', "\"" + (Array.isArray(column.getFilterValue()) ? column.getFilterValue().join("\" " + localization.and + " \"") : column.getFilterValue()) + "\"").replace('" "', '');
2282
+ return React.createElement(Grow, {
2283
+ unmountOnExit: true,
2284
+ "in": !!column.getFilterValue() && filterFn !== 'between' || filterFn === 'between' && ( // @ts-ignore
2285
+ !!((_column$getFilterValu = column.getFilterValue()) != null && _column$getFilterValu[0]) || !!((_column$getFilterValu2 = column.getFilterValue()) != null && _column$getFilterValu2[1]))
2286
+ }, React.createElement("span", null, React.createElement(Tooltip, {
2284
2287
  arrow: true,
2285
2288
  placement: "top",
2286
2289
  title: filterTooltip
@@ -2288,22 +2291,16 @@ var MRT_TableHeadCellFilterLabel = function MRT_TableHeadCellFilterLabel(_ref) {
2288
2291
  disableRipple: true,
2289
2292
  onClick: function onClick(event) {
2290
2293
  event.stopPropagation();
2291
- setShowFilters(!showFilters);
2292
2294
  },
2293
2295
  size: "small",
2294
2296
  sx: {
2295
2297
  m: 0,
2296
- opacity: !!column.getFilterValue() || showFilters ? 0.8 : 0,
2298
+ opacity: 0.8,
2297
2299
  p: '2px',
2298
- transition: 'all 0.2s ease-in-out',
2299
2300
  transform: 'scale(0.66)',
2300
- '&:hover': {
2301
- backgroundColor: 'transparent',
2302
- opacity: 0.8
2303
- },
2304
2301
  width: '1.5ch'
2305
2302
  }
2306
- }, showFilters && !column.getFilterValue() ? React.createElement(FilterAltOffIcon, null) : React.createElement(FilterAltIcon, null)));
2303
+ }, React.createElement(FilterAltIcon, null)))));
2307
2304
  };
2308
2305
 
2309
2306
  var MRT_TableHeadCellResizeHandle = function MRT_TableHeadCellResizeHandle(_ref) {
@@ -2438,20 +2435,21 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
2438
2435
  var dragRef = _ref.dragRef,
2439
2436
  dropRef = _ref.dropRef,
2440
2437
  header = _ref.header,
2438
+ instance = _ref.instance,
2441
2439
  isDragging = _ref.isDragging,
2442
- previewRef = _ref.previewRef,
2443
- instance = _ref.instance;
2440
+ previewRef = _ref.previewRef;
2444
2441
  var getState = instance.getState,
2445
2442
  _instance$options = instance.options,
2446
2443
  enableColumnActions = _instance$options.enableColumnActions,
2447
- enableColumnFilters = _instance$options.enableColumnFilters,
2448
2444
  enableColumnOrdering = _instance$options.enableColumnOrdering,
2449
2445
  enableColumnResizing = _instance$options.enableColumnResizing,
2450
2446
  enableGrouping = _instance$options.enableGrouping,
2447
+ enableMultiSort = _instance$options.enableMultiSort,
2451
2448
  muiTableHeadCellProps = _instance$options.muiTableHeadCellProps;
2452
2449
 
2453
2450
  var _getState = getState(),
2454
- density = _getState.density;
2451
+ density = _getState.density,
2452
+ showFilters = _getState.showFilters;
2455
2453
 
2456
2454
  var column = header.column;
2457
2455
  var columnDef = column.columnDef,
@@ -2506,7 +2504,8 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
2506
2504
  pt: columnDefType !== 'data' ? 0 : density === 'compact' ? '0.25' : density === 'comfortable' ? '.75rem' : '1.25rem',
2507
2505
  right: column.getIsPinned() === 'right' ? getTotalRight() + "px" : undefined,
2508
2506
  transition: "all " + (enableColumnResizing ? 0 : '0.2s') + " ease-in-out",
2509
- verticalAlign: 'text-top',
2507
+ userSelect: enableMultiSort ? 'none' : undefined,
2508
+ verticalAlign: columnDefType === 'display' && showFilters ? 'center' : 'text-top',
2510
2509
  zIndex: column.getIsResizing() ? 3 : column.getIsPinned() && columnDefType !== 'group' ? 2 : 1
2511
2510
  }, tableCellProps == null ? void 0 : tableCellProps.sx, {
2512
2511
  maxWidth: "min(" + column.getSize() + "px, fit-content)",
@@ -2525,9 +2524,7 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
2525
2524
  width: '100%'
2526
2525
  }
2527
2526
  }, React.createElement(Box, {
2528
- onClick: function onClick() {
2529
- return column.toggleSorting();
2530
- },
2527
+ onClick: column.getToggleSortingHandler(),
2531
2528
  sx: {
2532
2529
  alignItems: 'center',
2533
2530
  cursor: column.getCanSort() && columnDefType !== 'group' ? 'pointer' : undefined,
@@ -2538,7 +2535,7 @@ var MRT_TableHeadCell = function MRT_TableHeadCell(_ref) {
2538
2535
  }, headerElement, columnDefType === 'data' && column.getCanSort() && React.createElement(MRT_TableHeadCellSortLabel, {
2539
2536
  header: header,
2540
2537
  instance: instance
2541
- }), columnDefType === 'data' && enableColumnFilters && column.getCanFilter() && React.createElement(MRT_TableHeadCellFilterLabel, {
2538
+ }), columnDefType === 'data' && column.getCanFilter() && React.createElement(MRT_TableHeadCellFilterLabel, {
2542
2539
  header: header,
2543
2540
  instance: instance
2544
2541
  })), React.createElement(Box, {