material-react-table 1.5.12 → 1.6.1

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.
package/README.md CHANGED
@@ -67,7 +67,7 @@ _All features can easily be enabled/disabled_
67
67
 
68
68
  _**Fully Fleshed out [Docs](https://www.material-react-table.com/docs/guides#guides) are available for all features**_
69
69
 
70
- - [x] < 41kb gzipped - [Bundlephobia](https://bundlephobia.com/package/material-react-table)
70
+ - [x] < 43kb gzipped - [Bundlephobia](https://bundlephobia.com/package/material-react-table)
71
71
  - [x] Advanced TypeScript Generics Support (TypeScript Optional)
72
72
  - [x] Aggregation and Grouping (Sum, Average, Count, etc.)
73
73
  - [x] Click To Copy Cell Values
@@ -82,6 +82,7 @@ _**Fully Fleshed out [Docs](https://www.material-react-table.com/docs/guides#gui
82
82
  - [x] Density Toggle
83
83
  - [x] Detail Panels (Expansion)
84
84
  - [x] Filtering (supports client-side and server-side)
85
+ - [x] Filter Match Highlighting
85
86
  - [x] Full Screen Mode
86
87
  - [x] Global Filtering (Search across all columns, rank by best match)
87
88
  - [x] Header Groups & Footers
package/dist/cjs/index.js CHANGED
@@ -72,6 +72,7 @@ var TableCell = require('@mui/material/TableCell');
72
72
  var TableSortLabel = require('@mui/material/TableSortLabel');
73
73
  var TableBody = require('@mui/material/TableBody');
74
74
  var Skeleton = require('@mui/material/Skeleton');
75
+ var highlightWords = require('highlight-words');
75
76
  var TableFooter = require('@mui/material/TableFooter');
76
77
  var DialogActions = require('@mui/material/DialogActions');
77
78
  var DialogContent = require('@mui/material/DialogContent');
@@ -145,6 +146,7 @@ var TableCell__default = /*#__PURE__*/_interopDefaultLegacy(TableCell);
145
146
  var TableSortLabel__default = /*#__PURE__*/_interopDefaultLegacy(TableSortLabel);
146
147
  var TableBody__default = /*#__PURE__*/_interopDefaultLegacy(TableBody);
147
148
  var Skeleton__default = /*#__PURE__*/_interopDefaultLegacy(Skeleton);
149
+ var highlightWords__default = /*#__PURE__*/_interopDefaultLegacy(highlightWords);
148
150
  var TableFooter__default = /*#__PURE__*/_interopDefaultLegacy(TableFooter);
149
151
  var DialogActions__default = /*#__PURE__*/_interopDefaultLegacy(DialogActions);
150
152
  var DialogContent__default = /*#__PURE__*/_interopDefaultLegacy(DialogContent);
@@ -339,6 +341,7 @@ const getCommonCellStyles = ({ column, header, table, tableCellProps, theme, })
339
341
  : undefined, minWidth: `max(${column.getSize()}px, ${(_g = column.columnDef.minSize) !== null && _g !== void 0 ? _g : 30}px)`, width: (_h = header === null || header === void 0 ? void 0 : header.getSize()) !== null && _h !== void 0 ? _h : column.getSize() }));
340
342
  };
341
343
  const MRT_DefaultColumn = {
344
+ filterVariant: 'text',
342
345
  minSize: 40,
343
346
  maxSize: 1000,
344
347
  size: 180,
@@ -1348,7 +1351,7 @@ const MRT_ToggleFiltersButton = (_a) => {
1348
1351
  };
1349
1352
 
1350
1353
  const MRT_ToggleGlobalFilterButton = (_a) => {
1351
- var _b;
1354
+ var _b, _c;
1352
1355
  var { table } = _a, rest = __rest(_a, ["table"]);
1353
1356
  const { getState, options: { icons: { SearchIcon, SearchOffIcon }, localization, }, refs: { searchInputRef }, setShowGlobalFilter, } = table;
1354
1357
  const { globalFilter, showGlobalFilter } = getState();
@@ -1357,7 +1360,7 @@ const MRT_ToggleGlobalFilterButton = (_a) => {
1357
1360
  queueMicrotask(() => { var _a; return (_a = searchInputRef.current) === null || _a === void 0 ? void 0 : _a.focus(); });
1358
1361
  };
1359
1362
  return (React__default["default"].createElement(Tooltip__default["default"], { arrow: true, title: (_b = rest === null || rest === void 0 ? void 0 : rest.title) !== null && _b !== void 0 ? _b : localization.showHideSearch },
1360
- React__default["default"].createElement(IconButton__default["default"], Object.assign({ disabled: !!globalFilter, onClick: handleToggleSearch }, rest, { title: undefined }), showGlobalFilter ? React__default["default"].createElement(SearchOffIcon, null) : React__default["default"].createElement(SearchIcon, null))));
1363
+ React__default["default"].createElement(IconButton__default["default"], Object.assign({ "aria-label": (_c = rest === null || rest === void 0 ? void 0 : rest.title) !== null && _c !== void 0 ? _c : localization.showHideSearch, disabled: !!globalFilter, onClick: handleToggleSearch }, rest, { title: undefined }), showGlobalFilter ? React__default["default"].createElement(SearchOffIcon, null) : React__default["default"].createElement(SearchIcon, null))));
1361
1364
  };
1362
1365
 
1363
1366
  const MRT_ToolbarInternalButtons = ({ table, }) => {
@@ -1398,15 +1401,17 @@ const MRT_ToolbarDropZone = ({ table, }) => {
1398
1401
  React__default["default"].createElement(Box__default["default"], { className: "Mui-ToolbarDropZone", sx: (theme) => ({
1399
1402
  alignItems: 'center',
1400
1403
  backgroundColor: styles.alpha(theme.palette.info.main, (hoveredColumn === null || hoveredColumn === void 0 ? void 0 : hoveredColumn.id) === 'drop-zone' ? 0.2 : 0.1),
1404
+ backdropFilter: 'blur(4px)',
1405
+ boxSizing: 'border-box',
1401
1406
  border: `dashed ${theme.palette.info.main} 2px`,
1402
1407
  display: 'flex',
1403
1408
  justifyContent: 'center',
1404
- height: 'calc(100% - 4px)',
1409
+ height: '100%',
1405
1410
  position: 'absolute',
1406
- width: 'calc(100% - 4px)',
1407
- zIndex: 2,
1411
+ width: '100%',
1412
+ zIndex: 4,
1408
1413
  }), onDragEnter: handleDragEnter },
1409
- React__default["default"].createElement(Typography__default["default"], null, localization.dropToGroupBy.replace('{column}', (_b = (_a = draggingColumn === null || draggingColumn === void 0 ? void 0 : draggingColumn.columnDef) === null || _a === void 0 ? void 0 : _a.header) !== null && _b !== void 0 ? _b : '')))));
1414
+ React__default["default"].createElement(Typography__default["default"], { fontStyle: "italic" }, localization.dropToGroupBy.replace('{column}', (_b = (_a = draggingColumn === null || draggingColumn === void 0 ? void 0 : draggingColumn.columnDef) === null || _a === void 0 ? void 0 : _a.header) !== null && _b !== void 0 ? _b : '')))));
1410
1415
  };
1411
1416
 
1412
1417
  const commonToolbarStyles = ({ theme }) => ({
@@ -2209,11 +2214,15 @@ const MRT_TableBodyRowGrabHandle = ({ cell, rowRef, table, }) => {
2209
2214
  return (React__default["default"].createElement(MRT_GrabHandleButton, { iconButtonProps: iconButtonProps, onDragStart: handleDragStart, onDragEnd: handleDragEnd, table: table }));
2210
2215
  };
2211
2216
 
2217
+ const allowedTypes = ['string', 'number'];
2212
2218
  const MRT_TableBodyCellValue = ({ cell, table }) => {
2213
- var _a, _b;
2219
+ var _a, _b, _c, _d;
2220
+ const { getState, options: { enableFilterMatchHighlighting }, } = table;
2214
2221
  const { column, row } = cell;
2215
2222
  const { columnDef } = column;
2216
- return (React__default["default"].createElement(React__default["default"].Fragment, null, cell.getIsAggregated() && columnDef.AggregatedCell
2223
+ const { globalFilter } = getState();
2224
+ const filterValue = column.getFilterValue();
2225
+ let renderedCellValue = cell.getIsAggregated() && columnDef.AggregatedCell
2217
2226
  ? columnDef.AggregatedCell({
2218
2227
  cell,
2219
2228
  column,
@@ -2229,7 +2238,45 @@ const MRT_TableBodyCellValue = ({ cell, table }) => {
2229
2238
  row,
2230
2239
  table,
2231
2240
  })
2232
- : (_b = (_a = columnDef === null || columnDef === void 0 ? void 0 : columnDef.Cell) === null || _a === void 0 ? void 0 : _a.call(columnDef, { cell, column, row, table })) !== null && _b !== void 0 ? _b : cell.renderValue()));
2241
+ : undefined;
2242
+ const isGroupedValue = renderedCellValue !== undefined;
2243
+ if (!isGroupedValue) {
2244
+ renderedCellValue = cell.renderValue();
2245
+ }
2246
+ if (enableFilterMatchHighlighting &&
2247
+ renderedCellValue &&
2248
+ allowedTypes.includes(typeof renderedCellValue) &&
2249
+ ((filterValue &&
2250
+ allowedTypes.includes(typeof filterValue) &&
2251
+ columnDef.filterVariant === 'text') ||
2252
+ (globalFilter && allowedTypes.includes(typeof globalFilter)))) {
2253
+ const chunks = highlightWords__default["default"] === null || highlightWords__default["default"] === void 0 ? void 0 : highlightWords__default["default"]({
2254
+ text: renderedCellValue === null || renderedCellValue === void 0 ? void 0 : renderedCellValue.toString(),
2255
+ query: ((_b = (_a = column.getFilterValue()) !== null && _a !== void 0 ? _a : globalFilter) !== null && _b !== void 0 ? _b : '').toString(),
2256
+ });
2257
+ if ((chunks === null || chunks === void 0 ? void 0 : chunks.length) > 1 || ((_c = chunks === null || chunks === void 0 ? void 0 : chunks[0]) === null || _c === void 0 ? void 0 : _c.match)) {
2258
+ renderedCellValue = (React__default["default"].createElement("span", { "aria-label": renderedCellValue, role: "note" }, (_d = chunks === null || chunks === void 0 ? void 0 : chunks.map(({ key, match, text }) => (React__default["default"].createElement(Box__default["default"], { "aria-hidden": "true", component: "span", key: key, sx: match
2259
+ ? {
2260
+ backgroundColor: (theme) => theme.palette.mode === 'dark'
2261
+ ? styles.darken(theme.palette.warning.dark, 0.25)
2262
+ : styles.lighten(theme.palette.warning.light, 0.5),
2263
+ borderRadius: '2px',
2264
+ color: (theme) => theme.palette.mode === 'dark' ? 'white' : 'black',
2265
+ padding: '2px 1px',
2266
+ }
2267
+ : undefined }, text)))) !== null && _d !== void 0 ? _d : renderedCellValue));
2268
+ }
2269
+ }
2270
+ if (columnDef.Cell && !isGroupedValue) {
2271
+ renderedCellValue = columnDef.Cell({
2272
+ cell,
2273
+ renderedCellValue,
2274
+ column,
2275
+ row,
2276
+ table,
2277
+ });
2278
+ }
2279
+ return React__default["default"].createElement(React__default["default"].Fragment, null, renderedCellValue);
2233
2280
  };
2234
2281
 
2235
2282
  const MRT_TableBodyCell = ({ cell, enableHover, measureElement, numRows, rowIndex, rowRef, table, virtualCell, }) => {
@@ -2345,7 +2392,13 @@ const MRT_TableBodyCell = ({ cell, enableHover, measureElement, numRows, rowInde
2345
2392
  column.id === 'mrt-row-numbers' ? (rowIndex + 1) : column.id === 'mrt-row-drag' ? (React__default["default"].createElement(MRT_TableBodyRowGrabHandle, { cell: cell, rowRef: rowRef, table: table })) : columnDefType === 'display' &&
2346
2393
  (column.id === 'mrt-row-select' ||
2347
2394
  column.id === 'mrt-row-expand' ||
2348
- !row.getIsGrouped()) ? ((_a = columnDef.Cell) === null || _a === void 0 ? void 0 : _a.call(columnDef, { cell, column, row, table })) : isEditing ? (React__default["default"].createElement(MRT_EditCellTextField, { cell: cell, table: table })) : (enableClickToCopy || columnDef.enableClickToCopy) &&
2395
+ !row.getIsGrouped()) ? ((_a = columnDef.Cell) === null || _a === void 0 ? void 0 : _a.call(columnDef, {
2396
+ cell,
2397
+ renderedCellValue: cell.renderValue(),
2398
+ column,
2399
+ row,
2400
+ table,
2401
+ })) : isEditing ? (React__default["default"].createElement(MRT_EditCellTextField, { cell: cell, table: table })) : (enableClickToCopy || columnDef.enableClickToCopy) &&
2349
2402
  columnDef.enableClickToCopy !== false ? (React__default["default"].createElement(MRT_CopyButton, { cell: cell, table: table },
2350
2403
  React__default["default"].createElement(MRT_TableBodyCellValue, { cell: cell, table: table }))) : (React__default["default"].createElement(MRT_TableBodyCellValue, { cell: cell, table: table }))),
2351
2404
  cell.getIsGrouped() && !columnDef.GroupedCell && (React__default["default"].createElement(React__default["default"].Fragment, null,
@@ -3023,7 +3076,7 @@ const MRT_Localization_EN = {
3023
3076
 
3024
3077
  const MaterialReactTable = (_a) => {
3025
3078
  var _b;
3026
- var { aggregationFns, autoResetExpanded = false, columnResizeMode = 'onEnd', defaultColumn, defaultDisplayColumn, editingMode = 'modal', enableBottomToolbar = true, enableColumnActions = true, enableColumnFilters = true, enableColumnOrdering = false, enableColumnResizing = false, enableDensityToggle = true, enableExpandAll = true, enableFilters = true, enableFullScreenToggle = true, enableGlobalFilter = true, enableGlobalFilterRankedResults = true, enableGrouping = false, enableHiding = true, enableMultiRowSelection = true, enableMultiSort = true, enablePagination = true, enablePinning = false, enableRowSelection = false, enableSelectAll = true, enableSorting = true, enableStickyHeader = false, enableTableFooter = true, enableTableHead = true, enableToolbarInternalActions = true, enableTopToolbar = true, filterFns, icons, layoutMode = 'semantic', localization, manualFiltering, manualGrouping, manualPagination, manualSorting, positionActionsColumn = 'first', positionExpandColumn = 'first', positionGlobalFilter = 'right', positionPagination = 'bottom', positionToolbarAlertBanner = 'top', positionToolbarDropZone = 'top', rowNumberMode = 'original', selectAllMode = 'page', sortingFns } = _a, rest = __rest(_a, ["aggregationFns", "autoResetExpanded", "columnResizeMode", "defaultColumn", "defaultDisplayColumn", "editingMode", "enableBottomToolbar", "enableColumnActions", "enableColumnFilters", "enableColumnOrdering", "enableColumnResizing", "enableDensityToggle", "enableExpandAll", "enableFilters", "enableFullScreenToggle", "enableGlobalFilter", "enableGlobalFilterRankedResults", "enableGrouping", "enableHiding", "enableMultiRowSelection", "enableMultiSort", "enablePagination", "enablePinning", "enableRowSelection", "enableSelectAll", "enableSorting", "enableStickyHeader", "enableTableFooter", "enableTableHead", "enableToolbarInternalActions", "enableTopToolbar", "filterFns", "icons", "layoutMode", "localization", "manualFiltering", "manualGrouping", "manualPagination", "manualSorting", "positionActionsColumn", "positionExpandColumn", "positionGlobalFilter", "positionPagination", "positionToolbarAlertBanner", "positionToolbarDropZone", "rowNumberMode", "selectAllMode", "sortingFns"]);
3079
+ var { aggregationFns, autoResetExpanded = false, columnResizeMode = 'onEnd', defaultColumn, defaultDisplayColumn, editingMode = 'modal', enableBottomToolbar = true, enableColumnActions = true, enableColumnFilters = true, enableColumnOrdering = false, enableColumnResizing = false, enableDensityToggle = true, enableExpandAll = true, enableFilterMatchHighlighting = true, enableFilters = true, enableFullScreenToggle = true, enableGlobalFilter = true, enableGlobalFilterRankedResults = true, enableGrouping = false, enableHiding = true, enableMultiRowSelection = true, enableMultiSort = true, enablePagination = true, enablePinning = false, enableRowSelection = false, enableSelectAll = true, enableSorting = true, enableStickyHeader = false, enableTableFooter = true, enableTableHead = true, enableToolbarInternalActions = true, enableTopToolbar = true, filterFns, icons, layoutMode = 'semantic', localization, manualFiltering, manualGrouping, manualPagination, manualSorting, positionActionsColumn = 'first', positionExpandColumn = 'first', positionGlobalFilter = 'right', positionPagination = 'bottom', positionToolbarAlertBanner = 'top', positionToolbarDropZone = 'top', rowNumberMode = 'original', selectAllMode = 'page', sortingFns } = _a, rest = __rest(_a, ["aggregationFns", "autoResetExpanded", "columnResizeMode", "defaultColumn", "defaultDisplayColumn", "editingMode", "enableBottomToolbar", "enableColumnActions", "enableColumnFilters", "enableColumnOrdering", "enableColumnResizing", "enableDensityToggle", "enableExpandAll", "enableFilterMatchHighlighting", "enableFilters", "enableFullScreenToggle", "enableGlobalFilter", "enableGlobalFilterRankedResults", "enableGrouping", "enableHiding", "enableMultiRowSelection", "enableMultiSort", "enablePagination", "enablePinning", "enableRowSelection", "enableSelectAll", "enableSorting", "enableStickyHeader", "enableTableFooter", "enableTableHead", "enableToolbarInternalActions", "enableTopToolbar", "filterFns", "icons", "layoutMode", "localization", "manualFiltering", "manualGrouping", "manualPagination", "manualSorting", "positionActionsColumn", "positionExpandColumn", "positionGlobalFilter", "positionPagination", "positionToolbarAlertBanner", "positionToolbarDropZone", "rowNumberMode", "selectAllMode", "sortingFns"]);
3027
3080
  const _icons = React.useMemo(() => (Object.assign(Object.assign({}, MRT_Default_Icons), icons)), [icons]);
3028
3081
  const _localization = React.useMemo(() => (Object.assign(Object.assign({}, MRT_Localization_EN), localization)), [localization]);
3029
3082
  const _aggregationFns = React.useMemo(() => (Object.assign(Object.assign({}, MRT_AggregationFns), aggregationFns)), []);
@@ -3046,11 +3099,12 @@ const MaterialReactTable = (_a) => {
3046
3099
  manualPagination = true;
3047
3100
  manualSorting = true;
3048
3101
  }
3049
- return (React__default["default"].createElement(MRT_TableRoot, Object.assign({ aggregationFns: _aggregationFns, autoResetExpanded: autoResetExpanded, columnResizeMode: columnResizeMode, defaultColumn: _defaultColumn, defaultDisplayColumn: _defaultDisplayColumn, editingMode: editingMode, enableBottomToolbar: enableBottomToolbar, enableColumnActions: enableColumnActions, enableColumnFilters: enableColumnFilters, enableColumnOrdering: enableColumnOrdering, enableColumnResizing: enableColumnResizing, enableDensityToggle: enableDensityToggle, enableExpandAll: enableExpandAll, enableFilters: enableFilters, enableFullScreenToggle: enableFullScreenToggle, enableGlobalFilter: enableGlobalFilter, enableGlobalFilterRankedResults: enableGlobalFilterRankedResults, enableGrouping: enableGrouping, enableHiding: enableHiding, enableMultiRowSelection: enableMultiRowSelection, enableMultiSort: enableMultiSort, enablePagination: enablePagination, enablePinning: enablePinning, enableRowSelection: enableRowSelection, enableSelectAll: enableSelectAll, enableSorting: enableSorting, enableStickyHeader: enableStickyHeader, enableTableFooter: enableTableFooter, enableTableHead: enableTableHead, enableToolbarInternalActions: enableToolbarInternalActions, enableTopToolbar: enableTopToolbar, filterFns: _filterFns, icons: _icons, layoutMode: layoutMode, localization: _localization, manualFiltering: manualFiltering, manualGrouping: manualGrouping, manualPagination: manualPagination, manualSorting: manualSorting, positionActionsColumn: positionActionsColumn, positionExpandColumn: positionExpandColumn, positionGlobalFilter: positionGlobalFilter, positionPagination: positionPagination, positionToolbarAlertBanner: positionToolbarAlertBanner, positionToolbarDropZone: positionToolbarDropZone, rowNumberMode: rowNumberMode, selectAllMode: selectAllMode, sortingFns: _sortingFns }, rest)));
3102
+ return (React__default["default"].createElement(MRT_TableRoot, Object.assign({ aggregationFns: _aggregationFns, autoResetExpanded: autoResetExpanded, columnResizeMode: columnResizeMode, defaultColumn: _defaultColumn, defaultDisplayColumn: _defaultDisplayColumn, editingMode: editingMode, enableBottomToolbar: enableBottomToolbar, enableColumnActions: enableColumnActions, enableColumnFilters: enableColumnFilters, enableColumnOrdering: enableColumnOrdering, enableColumnResizing: enableColumnResizing, enableDensityToggle: enableDensityToggle, enableExpandAll: enableExpandAll, enableFilterMatchHighlighting: enableFilterMatchHighlighting, enableFilters: enableFilters, enableFullScreenToggle: enableFullScreenToggle, enableGlobalFilter: enableGlobalFilter, enableGlobalFilterRankedResults: enableGlobalFilterRankedResults, enableGrouping: enableGrouping, enableHiding: enableHiding, enableMultiRowSelection: enableMultiRowSelection, enableMultiSort: enableMultiSort, enablePagination: enablePagination, enablePinning: enablePinning, enableRowSelection: enableRowSelection, enableSelectAll: enableSelectAll, enableSorting: enableSorting, enableStickyHeader: enableStickyHeader, enableTableFooter: enableTableFooter, enableTableHead: enableTableHead, enableToolbarInternalActions: enableToolbarInternalActions, enableTopToolbar: enableTopToolbar, filterFns: _filterFns, icons: _icons, layoutMode: layoutMode, localization: _localization, manualFiltering: manualFiltering, manualGrouping: manualGrouping, manualPagination: manualPagination, manualSorting: manualSorting, positionActionsColumn: positionActionsColumn, positionExpandColumn: positionExpandColumn, positionGlobalFilter: positionGlobalFilter, positionPagination: positionPagination, positionToolbarAlertBanner: positionToolbarAlertBanner, positionToolbarDropZone: positionToolbarDropZone, rowNumberMode: rowNumberMode, selectAllMode: selectAllMode, sortingFns: _sortingFns }, rest)));
3050
3103
  };
3051
3104
 
3052
3105
  exports.MRT_BottomToolbar = MRT_BottomToolbar;
3053
3106
  exports.MRT_CopyButton = MRT_CopyButton;
3107
+ exports.MRT_EditActionButtons = MRT_EditActionButtons;
3054
3108
  exports.MRT_FilterOptionMenu = MRT_FilterOptionMenu;
3055
3109
  exports.MRT_FullScreenToggleButton = MRT_FullScreenToggleButton;
3056
3110
  exports.MRT_GlobalFilterTextField = MRT_GlobalFilterTextField;