material-react-table 1.0.0-beta.8 → 1.0.0-beta.9
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/dist/cjs/MaterialReactTable.d.ts +6 -0
- package/dist/cjs/index.js +18 -14
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/menus/MRT_FilterOptionMenu.d.ts +2 -1
- package/dist/esm/MaterialReactTable.d.ts +6 -0
- package/dist/esm/material-react-table.esm.js +19 -15
- package/dist/esm/material-react-table.esm.js.map +1 -1
- package/dist/esm/menus/MRT_FilterOptionMenu.d.ts +2 -1
- package/dist/index.d.ts +6 -0
- package/package.json +1 -1
- package/src/MaterialReactTable.tsx +10 -0
- package/src/buttons/MRT_ToggleGlobalFilterButton.tsx +7 -2
- package/src/inputs/MRT_FilterTextField.tsx +1 -5
- package/src/inputs/MRT_GlobalFilterTextField.tsx +1 -0
- package/src/menus/MRT_FilterOptionMenu.tsx +18 -1
- package/src/table/MRT_TablePaper.tsx +13 -3
|
@@ -6,7 +6,8 @@ interface Props<TData extends Record<string, any> = {}> {
|
|
|
6
6
|
header?: MRT_Header<TData>;
|
|
7
7
|
onSelect?: () => void;
|
|
8
8
|
setAnchorEl: (anchorEl: HTMLElement | null) => void;
|
|
9
|
+
setFilterValue?: (filterValue: any) => void;
|
|
9
10
|
table: MRT_TableInstance<TData>;
|
|
10
11
|
}
|
|
11
|
-
export declare const MRT_FilterOptionMenu: <TData extends Record<string, any> = {}>({ anchorEl, header, onSelect, setAnchorEl, table, }: Props<TData>) => JSX.Element;
|
|
12
|
+
export declare const MRT_FilterOptionMenu: <TData extends Record<string, any> = {}>({ anchorEl, header, onSelect, setAnchorEl, setFilterValue, table, }: Props<TData>) => JSX.Element;
|
|
12
13
|
export {};
|
|
@@ -467,6 +467,9 @@ export declare type MaterialReactTableProps<TData extends Record<string, any> =
|
|
|
467
467
|
positionPagination?: 'bottom' | 'top' | 'both';
|
|
468
468
|
positionToolbarAlertBanner?: 'bottom' | 'top' | 'none';
|
|
469
469
|
positionToolbarDropZone?: 'bottom' | 'top' | 'none' | 'both';
|
|
470
|
+
renderBottomToolbar?: ({ table, }: {
|
|
471
|
+
table: MRT_TableInstance<TData>;
|
|
472
|
+
}) => ReactNode | ReactNode[];
|
|
470
473
|
renderBottomToolbarCustomActions?: ({ table, }: {
|
|
471
474
|
table: MRT_TableInstance<TData>;
|
|
472
475
|
}) => ReactNode;
|
|
@@ -503,6 +506,9 @@ export declare type MaterialReactTableProps<TData extends Record<string, any> =
|
|
|
503
506
|
renderToolbarInternalActions?: ({ table, }: {
|
|
504
507
|
table: MRT_TableInstance<TData>;
|
|
505
508
|
}) => ReactNode;
|
|
509
|
+
renderTopToolbar?: ({ table, }: {
|
|
510
|
+
table: MRT_TableInstance<TData>;
|
|
511
|
+
}) => ReactNode | ReactNode[];
|
|
506
512
|
renderTopToolbarCustomActions?: ({ table, }: {
|
|
507
513
|
table: MRT_TableInstance<TData>;
|
|
508
514
|
}) => ReactNode;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useMemo, useRef, useState, useCallback, Fragment,
|
|
1
|
+
import React, { useMemo, useRef, useState, useCallback, Fragment, memo, useEffect, useLayoutEffect } from 'react';
|
|
2
2
|
import { aggregationFns, filterFns, sortingFns, useReactTable, getCoreRowModel, getExpandedRowModel, getFacetedRowModel, getFilteredRowModel, getGroupedRowModel, getPaginationRowModel, getSortedRowModel } from '@tanstack/react-table';
|
|
3
3
|
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';
|
|
4
4
|
import { rankItem, rankings, compareItems } from '@tanstack/match-sorter-utils';
|
|
@@ -385,7 +385,7 @@ const mrtFilterOptions = (localization) => [
|
|
|
385
385
|
divider: false,
|
|
386
386
|
},
|
|
387
387
|
];
|
|
388
|
-
const MRT_FilterOptionMenu = ({ anchorEl, header, onSelect, setAnchorEl, table, }) => {
|
|
388
|
+
const MRT_FilterOptionMenu = ({ anchorEl, header, onSelect, setAnchorEl, setFilterValue, table, }) => {
|
|
389
389
|
var _a, _b, _c, _d;
|
|
390
390
|
const { getState, options: { columnFilterModeOptions, globalFilterModeOptions, localization, renderColumnFilterModeMenuItems, renderGlobalFilterModeMenuItems, }, setColumnFilterFns, setGlobalFilterFn, } = table;
|
|
391
391
|
const { globalFilterFn, density } = getState();
|
|
@@ -404,11 +404,19 @@ const MRT_FilterOptionMenu = ({ anchorEl, header, onSelect, setAnchorEl, table,
|
|
|
404
404
|
if (['empty', 'notEmpty'].includes(option)) {
|
|
405
405
|
column.setFilterValue(' ');
|
|
406
406
|
}
|
|
407
|
-
else if (
|
|
407
|
+
else if ((columnDef === null || columnDef === void 0 ? void 0 : columnDef.filterVariant) === 'multi-select' ||
|
|
408
|
+
['arrIncludesSome', 'arrIncludesAll', 'arrIncludes'].includes(option)) {
|
|
409
|
+
column.setFilterValue([]);
|
|
410
|
+
setFilterValue === null || setFilterValue === void 0 ? void 0 : setFilterValue([]);
|
|
411
|
+
}
|
|
412
|
+
else if ((columnDef === null || columnDef === void 0 ? void 0 : columnDef.filterVariant) === 'range' ||
|
|
413
|
+
['between', 'betweenInclusive', 'inNumberRange'].includes(option)) {
|
|
408
414
|
column.setFilterValue(['', '']);
|
|
415
|
+
setFilterValue === null || setFilterValue === void 0 ? void 0 : setFilterValue('');
|
|
409
416
|
}
|
|
410
417
|
else {
|
|
411
418
|
column.setFilterValue('');
|
|
419
|
+
setFilterValue === null || setFilterValue === void 0 ? void 0 : setFilterValue('');
|
|
412
420
|
}
|
|
413
421
|
}
|
|
414
422
|
else {
|
|
@@ -1072,7 +1080,7 @@ const MRT_GlobalFilterTextField = ({ table, }) => {
|
|
|
1072
1080
|
textFieldProps.inputRef = inputRef;
|
|
1073
1081
|
}
|
|
1074
1082
|
} })),
|
|
1075
|
-
React.createElement(MRT_FilterOptionMenu, { anchorEl: anchorEl, setAnchorEl: setAnchorEl, table: table })));
|
|
1083
|
+
React.createElement(MRT_FilterOptionMenu, { anchorEl: anchorEl, setAnchorEl: setAnchorEl, table: table, onSelect: handleClear })));
|
|
1076
1084
|
};
|
|
1077
1085
|
|
|
1078
1086
|
const MRT_LinearProgressBar = ({ isTopToolbar, table }) => {
|
|
@@ -1209,13 +1217,13 @@ const MRT_ToggleGlobalFilterButton = (_a) => {
|
|
|
1209
1217
|
var _b;
|
|
1210
1218
|
var { table } = _a, rest = __rest(_a, ["table"]);
|
|
1211
1219
|
const { getState, options: { icons: { SearchIcon, SearchOffIcon }, localization, }, refs: { searchInputRef }, setShowGlobalFilter, } = table;
|
|
1212
|
-
const { showGlobalFilter } = getState();
|
|
1220
|
+
const { globalFilter, showGlobalFilter } = getState();
|
|
1213
1221
|
const handleToggleSearch = () => {
|
|
1214
1222
|
setShowGlobalFilter(!showGlobalFilter);
|
|
1215
1223
|
queueMicrotask(() => { var _a; return (_a = searchInputRef.current) === null || _a === void 0 ? void 0 : _a.focus(); });
|
|
1216
1224
|
};
|
|
1217
1225
|
return (React.createElement(Tooltip, { arrow: true, title: (_b = rest === null || rest === void 0 ? void 0 : rest.title) !== null && _b !== void 0 ? _b : localization.showHideSearch },
|
|
1218
|
-
React.createElement(IconButton, Object.assign({ onClick: handleToggleSearch }, rest, { title: undefined }), showGlobalFilter ? React.createElement(SearchOffIcon, null) : React.createElement(SearchIcon, null))));
|
|
1226
|
+
React.createElement(IconButton, Object.assign({ disabled: !!globalFilter, onClick: handleToggleSearch }, rest, { title: undefined }), showGlobalFilter ? React.createElement(SearchOffIcon, null) : React.createElement(SearchIcon, null))));
|
|
1219
1227
|
};
|
|
1220
1228
|
|
|
1221
1229
|
const MRT_ToolbarInternalButtons = ({ table }) => {
|
|
@@ -1486,9 +1494,6 @@ const MRT_FilterTextField = ({ header, rangeFilterIndex, table, }) => {
|
|
|
1486
1494
|
const handleFilterMenuOpen = (event) => {
|
|
1487
1495
|
setAnchorEl(event.currentTarget);
|
|
1488
1496
|
};
|
|
1489
|
-
useEffect(() => {
|
|
1490
|
-
handleClear();
|
|
1491
|
-
}, [columnDef._filterFn]);
|
|
1492
1497
|
if (columnDef.Filter) {
|
|
1493
1498
|
return React.createElement(React.Fragment, null, (_e = columnDef.Filter) === null || _e === void 0 ? void 0 : _e.call(columnDef, { column, header, table }));
|
|
1494
1499
|
}
|
|
@@ -1578,7 +1583,7 @@ const MRT_FilterTextField = ({ header, rangeFilterIndex, table, }) => {
|
|
|
1578
1583
|
isMultiSelectFilter && (React.createElement(Checkbox, { checked: ((_a = column.getFilterValue()) !== null && _a !== void 0 ? _a : []).includes(value), sx: { mr: '0.5rem' } })),
|
|
1579
1584
|
text));
|
|
1580
1585
|
})),
|
|
1581
|
-
React.createElement(MRT_FilterOptionMenu, { anchorEl: anchorEl, header: header, setAnchorEl: setAnchorEl, table: table })));
|
|
1586
|
+
React.createElement(MRT_FilterOptionMenu, { anchorEl: anchorEl, header: header, setAnchorEl: setAnchorEl, table: table, setFilterValue: setFilterValue })));
|
|
1582
1587
|
};
|
|
1583
1588
|
|
|
1584
1589
|
const MRT_FilterRangeFields = ({ header, table }) => {
|
|
@@ -2356,7 +2361,8 @@ const MRT_TableContainer = ({ table }) => {
|
|
|
2356
2361
|
};
|
|
2357
2362
|
|
|
2358
2363
|
const MRT_TablePaper = ({ table }) => {
|
|
2359
|
-
|
|
2364
|
+
var _a, _b;
|
|
2365
|
+
const { getState, options: { enableBottomToolbar, enableTopToolbar, muiTablePaperProps, renderBottomToolbar, renderTopToolbar, }, refs: { tablePaperRef }, } = table;
|
|
2360
2366
|
const { isFullScreen } = getState();
|
|
2361
2367
|
const tablePaperProps = muiTablePaperProps instanceof Function
|
|
2362
2368
|
? muiTablePaperProps({ table })
|
|
@@ -2378,10 +2384,8 @@ const MRT_TablePaper = ({ table }) => {
|
|
|
2378
2384
|
padding: 0,
|
|
2379
2385
|
width: '100vw',
|
|
2380
2386
|
}
|
|
2381
|
-
: {})) }),
|
|
2382
|
-
|
|
2383
|
-
React.createElement(MRT_TableContainer, { table: table }),
|
|
2384
|
-
enableBottomToolbar && React.createElement(MRT_BottomToolbar, { table: table })));
|
|
2387
|
+
: {})) }), (_a = (enableTopToolbar && (renderTopToolbar === null || renderTopToolbar === void 0 ? void 0 : renderTopToolbar({ table })))) !== null && _a !== void 0 ? _a : (React.createElement(MRT_TopToolbar, { table: table })),
|
|
2388
|
+
React.createElement(MRT_TableContainer, { table: table }), (_b = (enableBottomToolbar && (renderBottomToolbar === null || renderBottomToolbar === void 0 ? void 0 : renderBottomToolbar({ table })))) !== null && _b !== void 0 ? _b : (React.createElement(MRT_BottomToolbar, { table: table }))));
|
|
2385
2389
|
};
|
|
2386
2390
|
|
|
2387
2391
|
const MRT_EditRowModal = ({ open, row, table, }) => {
|