material-react-table 0.38.4 → 0.40.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/dist/cjs/MaterialReactTable.d.ts +35 -5
- package/dist/cjs/column.utils.d.ts +1 -0
- package/dist/cjs/index.js +79 -51
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/menus/MRT_FilterOptionMenu.d.ts +2 -7
- package/dist/esm/MaterialReactTable.d.ts +35 -5
- package/dist/esm/column.utils.d.ts +1 -0
- package/dist/esm/material-react-table.esm.js +79 -51
- package/dist/esm/material-react-table.esm.js.map +1 -1
- package/dist/esm/menus/MRT_FilterOptionMenu.d.ts +2 -7
- package/dist/index.d.ts +36 -6
- package/package.json +1 -1
- package/src/MaterialReactTable.tsx +50 -8
- package/src/body/MRT_TableBody.tsx +15 -10
- package/src/body/MRT_TableBodyCell.tsx +6 -4
- package/src/column.utils.ts +1 -1
- package/src/head/MRT_TableHeadCell.tsx +21 -13
- package/src/head/MRT_TableHeadCellFilterContainer.tsx +3 -2
- package/src/inputs/MRT_FilterTextField.tsx +5 -8
- package/src/inputs/MRT_GlobalFilterTextField.tsx +2 -2
- package/src/menus/MRT_ColumnActionMenu.tsx +3 -3
- package/src/menus/MRT_FilterOptionMenu.tsx +50 -33
- package/src/menus/MRT_ShowHideColumnsMenuItems.tsx +1 -1
- package/src/table/MRT_TableRoot.tsx +18 -13
- package/src/toolbar/MRT_ToolbarDropZone.tsx +10 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Dispatch, DragEvent, MutableRefObject, ReactNode, SetStateAction } from 'react';
|
|
2
2
|
import type { AlertProps, ButtonProps, CheckboxProps, ChipProps, IconButtonProps, LinearProgressProps, PaperProps, SkeletonProps, TableBodyProps, TableCellProps, TableContainerProps, TableFooterProps, TableHeadProps, TablePaginationProps, TableProps, TableRowProps, TextFieldProps, ToolbarProps } from '@mui/material';
|
|
3
3
|
import type { Cell, Column, ColumnDef, DeepKeys, FilterFn, Header, HeaderGroup, OnChangeFn, Row, SortingFn, Table, TableOptions, TableState } from '@tanstack/react-table';
|
|
4
|
-
import type { Options as VirtualizerOptions } from 'react-virtual';
|
|
4
|
+
import type { Options as VirtualizerOptions, VirtualItem } from 'react-virtual';
|
|
5
5
|
import { MRT_Icons } from './icons';
|
|
6
6
|
import { MRT_FilterFns } from './filterFns';
|
|
7
7
|
import { MRT_Localization } from './localization';
|
|
@@ -154,7 +154,7 @@ export declare type MRT_ColumnDef<TData extends Record<string, any> = {}> = Omit
|
|
|
154
154
|
enableClickToCopy?: boolean;
|
|
155
155
|
enableColumnActions?: boolean;
|
|
156
156
|
enableColumnDragging?: boolean;
|
|
157
|
-
|
|
157
|
+
enableColumnFilterModes?: boolean;
|
|
158
158
|
enableColumnOrdering?: boolean;
|
|
159
159
|
enableEditing?: boolean;
|
|
160
160
|
filterFn?: MRT_FilterFn<TData>;
|
|
@@ -216,6 +216,10 @@ export declare type MRT_ColumnDef<TData extends Record<string, any> = {}> = Omit
|
|
|
216
216
|
table: MRT_TableInstance<TData>;
|
|
217
217
|
column: MRT_Column<TData>;
|
|
218
218
|
}) => TableCellProps);
|
|
219
|
+
renderColumnFilterModeMenuItems?: ({ table, column, }: {
|
|
220
|
+
table: MRT_TableInstance<TData>;
|
|
221
|
+
column: MRT_Column<TData>;
|
|
222
|
+
}) => ReactNode[];
|
|
219
223
|
sortingFn?: MRT_SortingFn;
|
|
220
224
|
};
|
|
221
225
|
export declare type MRT_DefinedColumnDef<TData extends Record<string, any> = {}> = Omit<MRT_ColumnDef<TData>, 'id'> & {
|
|
@@ -249,6 +253,12 @@ export declare type MRT_SortingOption = LiteralUnion<string & keyof typeof MRT_S
|
|
|
249
253
|
export declare type MRT_SortingFn<TData extends Record<string, any> = {}> = SortingFn<TData> | MRT_SortingOption;
|
|
250
254
|
export declare type MRT_FilterOption = LiteralUnion<string & keyof typeof MRT_FilterFns>;
|
|
251
255
|
export declare type MRT_FilterFn<TData extends Record<string, any> = {}> = FilterFn<TData> | MRT_FilterOption;
|
|
256
|
+
export declare type MRT_InternalFilterOption = {
|
|
257
|
+
option: string;
|
|
258
|
+
symbol: string;
|
|
259
|
+
label: string;
|
|
260
|
+
divider: boolean;
|
|
261
|
+
};
|
|
252
262
|
export declare type MRT_DisplayColumnIds = 'mrt-row-actions' | 'mrt-row-drag' | 'mrt-row-expand' | 'mrt-row-numbers' | 'mrt-row-select';
|
|
253
263
|
/**
|
|
254
264
|
* `columns` and `data` props are the only required props, but there are over 150 other optional props.
|
|
@@ -272,13 +282,13 @@ export declare type MaterialReactTableProps<TData extends Record<string, any> =
|
|
|
272
282
|
enableClickToCopy?: boolean;
|
|
273
283
|
enableColumnActions?: boolean;
|
|
274
284
|
enableColumnDragging?: boolean;
|
|
275
|
-
|
|
285
|
+
enableColumnFilterModes?: boolean;
|
|
276
286
|
enableColumnOrdering?: boolean;
|
|
277
287
|
enableDensityToggle?: boolean;
|
|
278
288
|
enableEditing?: boolean;
|
|
279
289
|
enableExpandAll?: boolean;
|
|
280
290
|
enableFullScreenToggle?: boolean;
|
|
281
|
-
|
|
291
|
+
enableGlobalFilterModes?: boolean;
|
|
282
292
|
enableGlobalFilterRankedResults?: boolean;
|
|
283
293
|
enablePagination?: boolean;
|
|
284
294
|
enableRowActions?: boolean;
|
|
@@ -460,10 +470,21 @@ export declare type MaterialReactTableProps<TData extends Record<string, any> =
|
|
|
460
470
|
renderBottomToolbarCustomActions?: ({ table, }: {
|
|
461
471
|
table: MRT_TableInstance<TData>;
|
|
462
472
|
}) => ReactNode;
|
|
473
|
+
renderColumnFilterModeMenuItems?: ({ column, internalFilterOptions, onSelectFilterMode, table, }: {
|
|
474
|
+
column: MRT_Column<TData>;
|
|
475
|
+
internalFilterOptions: MRT_InternalFilterOption[];
|
|
476
|
+
onSelectFilterMode: (filterMode: MRT_FilterOption) => void;
|
|
477
|
+
table: MRT_TableInstance<TData>;
|
|
478
|
+
}) => ReactNode;
|
|
463
479
|
renderDetailPanel?: ({ row, table, }: {
|
|
464
480
|
row: MRT_Row<TData>;
|
|
465
481
|
table: MRT_TableInstance<TData>;
|
|
466
482
|
}) => ReactNode;
|
|
483
|
+
renderGlobalFilterModeMenuItems?: ({ internalFilterOptions, onSelectFilterMode, table, }: {
|
|
484
|
+
internalFilterOptions: MRT_InternalFilterOption[];
|
|
485
|
+
onSelectFilterMode: (filterMode: MRT_FilterOption) => void;
|
|
486
|
+
table: MRT_TableInstance<TData>;
|
|
487
|
+
}) => ReactNode[];
|
|
467
488
|
renderRowActionMenuItems?: ({ closeMenu, row, table, }: {
|
|
468
489
|
closeMenu: () => void;
|
|
469
490
|
row: MRT_Row<TData>;
|
|
@@ -484,9 +505,18 @@ export declare type MaterialReactTableProps<TData extends Record<string, any> =
|
|
|
484
505
|
rowNumberMode?: 'original' | 'static';
|
|
485
506
|
selectAllMode?: 'all' | 'page';
|
|
486
507
|
state?: Partial<MRT_TableState<TData>>;
|
|
508
|
+
tableInstanceRef?: MutableRefObject<MRT_TableInstance<TData> | null>;
|
|
487
509
|
virtualizerProps?: Partial<VirtualizerOptions<HTMLDivElement>> | (({ table, }: {
|
|
488
510
|
table: MRT_TableInstance<TData>;
|
|
489
511
|
}) => Partial<VirtualizerOptions<HTMLDivElement>>);
|
|
512
|
+
virtualizerInstanceRef?: MutableRefObject<Virtualizer | null>;
|
|
513
|
+
};
|
|
514
|
+
export declare type Virtualizer = {
|
|
515
|
+
virtualItems: VirtualItem[];
|
|
516
|
+
totalSize: number;
|
|
517
|
+
scrollToOffset: (index: number, options?: any | undefined) => void;
|
|
518
|
+
scrollToIndex: (index: number, options?: any | undefined) => void;
|
|
519
|
+
measure: () => void;
|
|
490
520
|
};
|
|
491
|
-
declare const _default: <TData extends Record<string, any> = {}>({ aggregationFns, autoResetExpanded, columnResizeMode, defaultColumn, editingMode, enableBottomToolbar, enableColumnActions,
|
|
521
|
+
declare const _default: <TData extends Record<string, any> = {}>({ aggregationFns, autoResetExpanded, columnResizeMode, defaultColumn, 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, localization, positionActionsColumn, positionExpandColumn, positionGlobalFilter, positionPagination, positionToolbarAlertBanner, positionToolbarDropZone, rowNumberMode, selectAllMode, sortingFns, ...rest }: MaterialReactTableProps<TData>) => JSX.Element;
|
|
492
522
|
export default _default;
|
|
@@ -3,6 +3,7 @@ import { MaterialReactTableProps, MRT_Column, MRT_ColumnDef, MRT_DefinedColumnDe
|
|
|
3
3
|
import { MRT_FilterFns } from './filterFns';
|
|
4
4
|
import { MRT_SortingFns } from './sortingFns';
|
|
5
5
|
export declare const defaultDisplayColumnDefOptions: Partial<MRT_ColumnDef<{}>>;
|
|
6
|
+
export declare const getColumnId: <TData extends Record<string, any> = {}>(columnDef: MRT_ColumnDef<TData>) => string;
|
|
6
7
|
export declare const getAllLeafColumnDefs: <TData extends Record<string, any> = {}>(columns: MRT_ColumnDef<TData>[]) => MRT_ColumnDef<TData>[];
|
|
7
8
|
export declare const prepareColumns: <TData extends Record<string, any> = {}>(columnDefs: MRT_ColumnDef<TData>[], columnFilterFns: {
|
|
8
9
|
[key: string]: MRT_FilterOption;
|
package/dist/cjs/index.js
CHANGED
|
@@ -300,7 +300,7 @@ const MRT_ExpandButton = ({ row, table }) => {
|
|
|
300
300
|
} })))));
|
|
301
301
|
};
|
|
302
302
|
|
|
303
|
-
const
|
|
303
|
+
const mrtFilterOptions = (localization) => [
|
|
304
304
|
{
|
|
305
305
|
option: 'fuzzy',
|
|
306
306
|
symbol: '≈',
|
|
@@ -387,19 +387,19 @@ const internalFilterOptions = (localization) => [
|
|
|
387
387
|
},
|
|
388
388
|
];
|
|
389
389
|
const MRT_FilterOptionMenu = ({ anchorEl, header, onSelect, setAnchorEl, table, }) => {
|
|
390
|
-
var _a;
|
|
391
|
-
const { getState, options: { enabledGlobalFilterOptions, columnFilterModeOptions, localization, }, setColumnFilterFns, setGlobalFilterFn, } = table;
|
|
392
|
-
const {
|
|
390
|
+
var _a, _b;
|
|
391
|
+
const { getState, options: { enabledGlobalFilterOptions, columnFilterModeOptions, localization, renderColumnFilterModeMenuItems, renderGlobalFilterModeMenuItems, }, setColumnFilterFns, setGlobalFilterFn, } = table;
|
|
392
|
+
const { globalFilterFn, density } = getState();
|
|
393
393
|
const { column } = header !== null && header !== void 0 ? header : {};
|
|
394
394
|
const { columnDef } = column !== null && column !== void 0 ? column : {};
|
|
395
395
|
const allowedColumnFilterOptions = (_a = columnDef === null || columnDef === void 0 ? void 0 : columnDef.columnFilterModeOptions) !== null && _a !== void 0 ? _a : columnFilterModeOptions;
|
|
396
|
-
const
|
|
396
|
+
const internalFilterOptions = React.useMemo(() => mrtFilterOptions(localization).filter((filterOption) => columnDef
|
|
397
397
|
? allowedColumnFilterOptions === undefined ||
|
|
398
398
|
(allowedColumnFilterOptions === null || allowedColumnFilterOptions === void 0 ? void 0 : allowedColumnFilterOptions.includes(filterOption.option))
|
|
399
399
|
: (!enabledGlobalFilterOptions ||
|
|
400
400
|
enabledGlobalFilterOptions.includes(filterOption.option)) &&
|
|
401
|
-
['fuzzy', 'contains'].includes(filterOption.option)), []);
|
|
402
|
-
const
|
|
401
|
+
['fuzzy', 'contains', 'startsWith'].includes(filterOption.option)), []);
|
|
402
|
+
const handleSelectFilterMode = (option) => {
|
|
403
403
|
if (header && column) {
|
|
404
404
|
setColumnFilterFns((prev) => (Object.assign(Object.assign({}, prev), { [header.id]: option })));
|
|
405
405
|
if (['empty', 'notEmpty'].includes(option)) {
|
|
@@ -418,15 +418,26 @@ const MRT_FilterOptionMenu = ({ anchorEl, header, onSelect, setAnchorEl, table,
|
|
|
418
418
|
setAnchorEl(null);
|
|
419
419
|
onSelect === null || onSelect === void 0 ? void 0 : onSelect();
|
|
420
420
|
};
|
|
421
|
-
const filterOption = !!header ?
|
|
421
|
+
const filterOption = !!header && columnDef ? columnDef._filterFn : globalFilterFn;
|
|
422
422
|
return (React__default["default"].createElement(material.Menu, { anchorEl: anchorEl, anchorOrigin: { vertical: 'center', horizontal: 'right' }, onClose: () => setAnchorEl(null), open: !!anchorEl, MenuListProps: {
|
|
423
423
|
dense: density === 'compact',
|
|
424
|
-
} },
|
|
425
|
-
|
|
426
|
-
|
|
424
|
+
} }, (_b = (header && column
|
|
425
|
+
? renderColumnFilterModeMenuItems === null || renderColumnFilterModeMenuItems === void 0 ? void 0 : renderColumnFilterModeMenuItems({
|
|
426
|
+
column: column,
|
|
427
|
+
internalFilterOptions,
|
|
428
|
+
onSelectFilterMode: handleSelectFilterMode,
|
|
429
|
+
table,
|
|
430
|
+
})
|
|
431
|
+
: renderGlobalFilterModeMenuItems === null || renderGlobalFilterModeMenuItems === void 0 ? void 0 : renderGlobalFilterModeMenuItems({
|
|
432
|
+
internalFilterOptions,
|
|
433
|
+
onSelectFilterMode: handleSelectFilterMode,
|
|
434
|
+
table,
|
|
435
|
+
}))) !== null && _b !== void 0 ? _b : internalFilterOptions.map(({ option, label, divider, symbol }, index) => (React__default["default"].createElement(material.MenuItem, { divider: divider, key: index, onClick: () => handleSelectFilterMode(option), selected: option === filterOption, sx: {
|
|
427
436
|
alignItems: 'center',
|
|
428
437
|
display: 'flex',
|
|
429
438
|
gap: '2ch',
|
|
439
|
+
my: 0,
|
|
440
|
+
py: '6px',
|
|
430
441
|
}, value: option },
|
|
431
442
|
React__default["default"].createElement(material.Box, { sx: { fontSize: '1.25rem', width: '2ch' } }, symbol),
|
|
432
443
|
label)))));
|
|
@@ -612,7 +623,7 @@ const MRT_ShowHideColumnsMenuItems = ({ allColumns, hoveredColumn, setHoveredCol
|
|
|
612
623
|
}
|
|
613
624
|
};
|
|
614
625
|
const handleDragEnter = (_e) => {
|
|
615
|
-
if (!isDragging) {
|
|
626
|
+
if (!isDragging && columnDef.enableColumnOrdering !== false) {
|
|
616
627
|
setHoveredColumn(column);
|
|
617
628
|
}
|
|
618
629
|
};
|
|
@@ -714,7 +725,7 @@ const commonListItemStyles = {
|
|
|
714
725
|
};
|
|
715
726
|
const MRT_ColumnActionMenu = ({ anchorEl, header, setAnchorEl, table, }) => {
|
|
716
727
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
717
|
-
const { getState, toggleAllColumnsVisible, setColumnOrder, options: {
|
|
728
|
+
const { getState, toggleAllColumnsVisible, setColumnOrder, options: { enableColumnFilterModes, enableColumnFilters, enableColumnResizing, enableGrouping, enableHiding, enablePinning, enableSorting, columnFilterModeOptions, icons: { ArrowRightIcon, ClearAllIcon, ViewColumnIcon, DynamicFeedIcon, FilterListIcon, FilterListOffIcon, PushPinIcon, SortIcon, RestartAltIcon, VisibilityOffIcon, }, localization, }, refs: { filterInputRefs }, setShowFilters, } = table;
|
|
718
729
|
const { column } = header;
|
|
719
730
|
const { columnDef } = column;
|
|
720
731
|
const { columnSizing, columnVisibility, density } = getState();
|
|
@@ -772,8 +783,8 @@ const MRT_ColumnActionMenu = ({ anchorEl, header, setAnchorEl, table, }) => {
|
|
|
772
783
|
};
|
|
773
784
|
const isSelectFilter = !!columnDef.filterSelectOptions;
|
|
774
785
|
const allowedColumnFilterOptions = (_a = columnDef === null || columnDef === void 0 ? void 0 : columnDef.columnFilterModeOptions) !== null && _a !== void 0 ? _a : columnFilterModeOptions;
|
|
775
|
-
const showFilterModeSubMenu =
|
|
776
|
-
columnDef.
|
|
786
|
+
const showFilterModeSubMenu = enableColumnFilterModes &&
|
|
787
|
+
columnDef.enableColumnFilterModes !== false &&
|
|
777
788
|
!isSelectFilter &&
|
|
778
789
|
(allowedColumnFilterOptions === undefined ||
|
|
779
790
|
!!(allowedColumnFilterOptions === null || allowedColumnFilterOptions === void 0 ? void 0 : allowedColumnFilterOptions.length));
|
|
@@ -975,7 +986,7 @@ const MRT_SelectCheckbox = ({ row, selectAll, table }) => {
|
|
|
975
986
|
|
|
976
987
|
const MRT_GlobalFilterTextField = ({ table, }) => {
|
|
977
988
|
var _a;
|
|
978
|
-
const { getState, setGlobalFilter, options: {
|
|
989
|
+
const { getState, setGlobalFilter, options: { enableGlobalFilterModes, icons: { SearchIcon, CloseIcon }, localization, muiSearchTextFieldProps, }, refs: { searchInputRef }, } = table;
|
|
979
990
|
const { globalFilter, showGlobalFilter } = getState();
|
|
980
991
|
const [anchorEl, setAnchorEl] = React.useState(null);
|
|
981
992
|
const [searchValue, setSearchValue] = React.useState(globalFilter !== null && globalFilter !== void 0 ? globalFilter : '');
|
|
@@ -999,7 +1010,7 @@ const MRT_GlobalFilterTextField = ({ table, }) => {
|
|
|
999
1010
|
: muiSearchTextFieldProps;
|
|
1000
1011
|
return (React__default["default"].createElement(material.Collapse, { in: showGlobalFilter, orientation: "horizontal" },
|
|
1001
1012
|
React__default["default"].createElement(material.TextField, Object.assign({ placeholder: localization.search, onChange: handleChange, value: searchValue !== null && searchValue !== void 0 ? searchValue : '', variant: "standard", InputProps: {
|
|
1002
|
-
startAdornment:
|
|
1013
|
+
startAdornment: enableGlobalFilterModes ? (React__default["default"].createElement(material.InputAdornment, { position: "start" },
|
|
1003
1014
|
React__default["default"].createElement(material.Tooltip, { arrow: true, title: localization.changeSearchMode },
|
|
1004
1015
|
React__default["default"].createElement(material.IconButton, { "aria-label": localization.changeSearchMode, onClick: handleGlobalFilterMenuOpen, size: "small", sx: { height: '1.75rem', width: '1.75rem' } },
|
|
1005
1016
|
React__default["default"].createElement(SearchIcon, null))))) : (React__default["default"].createElement(SearchIcon, { style: { marginRight: '4px' } })),
|
|
@@ -1172,11 +1183,13 @@ const MRT_ToolbarInternalButtons = ({ table }) => {
|
|
|
1172
1183
|
const MRT_ToolbarDropZone = ({ table }) => {
|
|
1173
1184
|
var _a, _b;
|
|
1174
1185
|
const { getState, options: { enableGrouping, localization }, setHoveredColumn, } = table;
|
|
1175
|
-
const { draggingColumn, hoveredColumn } = getState();
|
|
1186
|
+
const { draggingColumn, hoveredColumn, grouping } = getState();
|
|
1176
1187
|
const handleDragEnter = (_event) => {
|
|
1177
1188
|
setHoveredColumn({ id: 'drop-zone' });
|
|
1178
1189
|
};
|
|
1179
|
-
return (React__default["default"].createElement(material.Fade, { unmountOnExit: true, mountOnEnter: true, in: !!enableGrouping &&
|
|
1190
|
+
return (React__default["default"].createElement(material.Fade, { unmountOnExit: true, mountOnEnter: true, in: !!enableGrouping &&
|
|
1191
|
+
!!draggingColumn &&
|
|
1192
|
+
!grouping.includes(draggingColumn.id) },
|
|
1180
1193
|
React__default["default"].createElement(material.Box, { sx: (theme) => ({
|
|
1181
1194
|
alignItems: 'center',
|
|
1182
1195
|
backgroundColor: material.alpha(theme.palette.info.main, (hoveredColumn === null || hoveredColumn === void 0 ? void 0 : hoveredColumn.id) === 'drop-zone' ? 0.2 : 0.1),
|
|
@@ -1310,10 +1323,9 @@ const MRT_TableHeadCellColumnActionsButton = ({ header, table, }) => {
|
|
|
1310
1323
|
|
|
1311
1324
|
const MRT_FilterTextField = ({ header, rangeFilterIndex, table, }) => {
|
|
1312
1325
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
1313
|
-
const {
|
|
1326
|
+
const { options: { enableColumnFilterModes, columnFilterModeOptions, icons: { FilterListIcon, CloseIcon }, localization, muiTableHeadCellFilterTextFieldProps, }, refs: { filterInputRefs }, setColumnFilterFns, } = table;
|
|
1314
1327
|
const { column } = header;
|
|
1315
1328
|
const { columnDef } = column;
|
|
1316
|
-
const { columnFilterFns } = getState();
|
|
1317
1329
|
const mTableHeadCellFilterTextFieldProps = muiTableHeadCellFilterTextFieldProps instanceof Function
|
|
1318
1330
|
? muiTableHeadCellFilterTextFieldProps({
|
|
1319
1331
|
column,
|
|
@@ -1334,7 +1346,7 @@ const MRT_FilterTextField = ({ header, rangeFilterIndex, table, }) => {
|
|
|
1334
1346
|
const isMultiSelectFilter = columnDef.filterVariant === 'multi-select';
|
|
1335
1347
|
const isTextboxFilter = columnDef.filterVariant === 'text' ||
|
|
1336
1348
|
(!isSelectFilter && !isMultiSelectFilter);
|
|
1337
|
-
const currentFilterOption =
|
|
1349
|
+
const currentFilterOption = columnDef._filterFn;
|
|
1338
1350
|
const filterChipLabel = ['empty', 'notEmpty'].includes(currentFilterOption)
|
|
1339
1351
|
? //@ts-ignore
|
|
1340
1352
|
localization[`filter${((_b = (_a = currentFilterOption === null || currentFilterOption === void 0 ? void 0 : currentFilterOption.charAt) === null || _a === void 0 ? void 0 : _a.call(currentFilterOption, 0)) === null || _b === void 0 ? void 0 : _b.toUpperCase()) +
|
|
@@ -1348,8 +1360,8 @@ const MRT_FilterTextField = ({ header, rangeFilterIndex, table, }) => {
|
|
|
1348
1360
|
? localization.max
|
|
1349
1361
|
: '';
|
|
1350
1362
|
const allowedColumnFilterOptions = (_d = columnDef === null || columnDef === void 0 ? void 0 : columnDef.columnFilterModeOptions) !== null && _d !== void 0 ? _d : columnFilterModeOptions;
|
|
1351
|
-
const showChangeModeButton =
|
|
1352
|
-
columnDef.
|
|
1363
|
+
const showChangeModeButton = enableColumnFilterModes &&
|
|
1364
|
+
columnDef.enableColumnFilterModes !== false &&
|
|
1353
1365
|
!rangeFilterIndex &&
|
|
1354
1366
|
(allowedColumnFilterOptions === undefined ||
|
|
1355
1367
|
!!(allowedColumnFilterOptions === null || allowedColumnFilterOptions === void 0 ? void 0 : allowedColumnFilterOptions.length));
|
|
@@ -1456,7 +1468,7 @@ const MRT_FilterTextField = ({ header, rangeFilterIndex, table, }) => {
|
|
|
1456
1468
|
if (textFieldProps.inputRef) {
|
|
1457
1469
|
textFieldProps.inputRef = inputRef;
|
|
1458
1470
|
}
|
|
1459
|
-
}, sx: (theme) => (Object.assign({ p: 0, minWidth: !filterChipLabel ? '
|
|
1471
|
+
}, sx: (theme) => (Object.assign({ p: 0, minWidth: !filterChipLabel ? '120px' : 'auto', width: '100%', '& .MuiSelect-icon': {
|
|
1460
1472
|
mr: '1.5rem',
|
|
1461
1473
|
} }, ((textFieldProps === null || textFieldProps === void 0 ? void 0 : textFieldProps.sx) instanceof Function
|
|
1462
1474
|
? textFieldProps.sx(theme)
|
|
@@ -1490,9 +1502,10 @@ const MRT_FilterRangeFields = ({ header, table }) => {
|
|
|
1490
1502
|
|
|
1491
1503
|
const MRT_TableHeadCellFilterContainer = ({ header, table, }) => {
|
|
1492
1504
|
const { getState } = table;
|
|
1493
|
-
const {
|
|
1505
|
+
const { showColumnFilters } = getState();
|
|
1494
1506
|
const { column } = header;
|
|
1495
|
-
|
|
1507
|
+
const { columnDef } = column;
|
|
1508
|
+
return (React__default["default"].createElement(material.Collapse, { in: showColumnFilters, mountOnEnter: true, unmountOnExit: true }, ['between', 'betweenInclusive', 'inNumberRange'].includes(columnDef._filterFn) ? (React__default["default"].createElement(MRT_FilterRangeFields, { header: header, table: table })) : (React__default["default"].createElement(MRT_FilterTextField, { header: header, table: table }))));
|
|
1496
1509
|
};
|
|
1497
1510
|
|
|
1498
1511
|
const MRT_TableHeadCellFilterLabel = ({ header, table }) => {
|
|
@@ -1623,7 +1636,7 @@ const MRT_TableHeadCell = ({ header, table }) => {
|
|
|
1623
1636
|
var _a, _b, _c, _d;
|
|
1624
1637
|
const theme = material.useTheme();
|
|
1625
1638
|
const { getState, options: { enableColumnActions, enableColumnDragging, enableColumnOrdering, enableColumnResizing, enableGrouping, enableMultiSort, muiTableHeadCellProps, }, setHoveredColumn, } = table;
|
|
1626
|
-
const { density, draggingColumn, hoveredColumn, showColumnFilters } = getState();
|
|
1639
|
+
const { density, draggingColumn, grouping, hoveredColumn, showColumnFilters, } = getState();
|
|
1627
1640
|
const { column } = header;
|
|
1628
1641
|
const { columnDef } = column;
|
|
1629
1642
|
const { columnDefType } = columnDef;
|
|
@@ -1739,11 +1752,14 @@ const MRT_TableHeadCell = ({ header, table }) => {
|
|
|
1739
1752
|
column.getCanSort() && (React__default["default"].createElement(MRT_TableHeadCellSortLabel, { header: header, table: table })),
|
|
1740
1753
|
column.getCanFilter() && (React__default["default"].createElement(MRT_TableHeadCellFilterLabel, { header: header, table: table }))),
|
|
1741
1754
|
columnDefType !== 'group' && (React__default["default"].createElement(material.Box, { sx: { whiteSpace: 'nowrap' } },
|
|
1742
|
-
|
|
1743
|
-
columnDef.enableColumnDragging !== false
|
|
1744
|
-
(
|
|
1745
|
-
|
|
1746
|
-
|
|
1755
|
+
enableColumnDragging !== false &&
|
|
1756
|
+
columnDef.enableColumnDragging !== false &&
|
|
1757
|
+
(enableColumnDragging ||
|
|
1758
|
+
(enableColumnOrdering &&
|
|
1759
|
+
columnDef.enableColumnOrdering !== false) ||
|
|
1760
|
+
(enableGrouping &&
|
|
1761
|
+
columnDef.enableGrouping !== false &&
|
|
1762
|
+
!grouping.includes(column.id))) && (React__default["default"].createElement(MRT_TableHeadCellGrabHandle, { column: column, table: table, tableHeadCellRef: tableHeadCellRef })),
|
|
1747
1763
|
(enableColumnActions || columnDef.enableColumnActions) &&
|
|
1748
1764
|
columnDef.enableColumnActions !== false && (React__default["default"].createElement(MRT_TableHeadCellColumnActionsButton, { header: header, table: table })))),
|
|
1749
1765
|
column.getCanResize() && (React__default["default"].createElement(MRT_TableHeadCellResizeHandle, { header: header, table: table })))),
|
|
@@ -1926,7 +1942,9 @@ const MRT_TableBodyCell = ({ cell, enableHover, rowIndex, rowRef, table, }) => {
|
|
|
1926
1942
|
: Math.round(Math.random() * (column.getSize() - column.getSize() / 3) +
|
|
1927
1943
|
column.getSize() / 3)
|
|
1928
1944
|
: 100), [isLoading, showSkeletons]);
|
|
1929
|
-
const handleDoubleClick = (
|
|
1945
|
+
const handleDoubleClick = (event) => {
|
|
1946
|
+
var _a;
|
|
1947
|
+
(_a = tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.onDoubleClick) === null || _a === void 0 ? void 0 : _a.call(tableCellProps, event);
|
|
1930
1948
|
if ((enableEditing || columnDef.enableEditing) &&
|
|
1931
1949
|
columnDef.enableEditing !== false &&
|
|
1932
1950
|
editingMode === 'cell') {
|
|
@@ -1950,7 +1968,9 @@ const MRT_TableBodyCell = ({ cell, enableHover, rowIndex, rowRef, table, }) => {
|
|
|
1950
1968
|
const getTotalRight = () => {
|
|
1951
1969
|
return ((table.getRightLeafHeaders().length - 1 - column.getPinnedIndex()) * 150);
|
|
1952
1970
|
};
|
|
1953
|
-
const handleDragEnter = (
|
|
1971
|
+
const handleDragEnter = (e) => {
|
|
1972
|
+
var _a;
|
|
1973
|
+
(_a = tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.onDragEnter) === null || _a === void 0 ? void 0 : _a.call(tableCellProps, e);
|
|
1954
1974
|
if (enableGrouping && (hoveredColumn === null || hoveredColumn === void 0 ? void 0 : hoveredColumn.id) === 'drop-zone') {
|
|
1955
1975
|
setHoveredColumn(null);
|
|
1956
1976
|
}
|
|
@@ -1976,7 +1996,7 @@ const MRT_TableBodyCell = ({ cell, enableHover, rowIndex, rowRef, table, }) => {
|
|
|
1976
1996
|
: undefined,
|
|
1977
1997
|
}
|
|
1978
1998
|
: undefined;
|
|
1979
|
-
return (React__default["default"].createElement(material.TableCell, Object.assign({
|
|
1999
|
+
return (React__default["default"].createElement(material.TableCell, Object.assign({}, tableCellProps, { onDragEnter: handleDragEnter, onDoubleClick: handleDoubleClick, sx: (theme) => {
|
|
1980
2000
|
var _a;
|
|
1981
2001
|
return (Object.assign(Object.assign(Object.assign({ backgroundColor: column.getIsPinned()
|
|
1982
2002
|
? material.alpha(material.lighten(theme.palette.background.default, 0.04), 0.95)
|
|
@@ -2093,7 +2113,7 @@ const MRT_TableBodyRow = ({ row, rowIndex, table, virtualRow, }) => {
|
|
|
2093
2113
|
};
|
|
2094
2114
|
|
|
2095
2115
|
const MRT_TableBody = ({ table, tableContainerRef }) => {
|
|
2096
|
-
const { getRowModel, getPrePaginationRowModel, getState, options: { enableGlobalFilterRankedResults, enablePagination, enableRowVirtualization, muiTableBodyProps, virtualizerProps, }, } = table;
|
|
2116
|
+
const { getRowModel, getPrePaginationRowModel, getState, options: { enableGlobalFilterRankedResults, enablePagination, enableRowVirtualization, muiTableBodyProps, virtualizerProps, virtualizerInstanceRef, }, } = table;
|
|
2097
2117
|
const { globalFilter, pagination, sorting } = getState();
|
|
2098
2118
|
const tableBodyProps = muiTableBodyProps instanceof Function
|
|
2099
2119
|
? muiTableBodyProps({ table })
|
|
@@ -2121,10 +2141,15 @@ const MRT_TableBody = ({ table, tableContainerRef }) => {
|
|
|
2121
2141
|
: getRowModel().rows,
|
|
2122
2142
|
globalFilter,
|
|
2123
2143
|
]);
|
|
2124
|
-
const
|
|
2144
|
+
const virtualizer = enableRowVirtualization
|
|
2125
2145
|
? reactVirtual.useVirtual(Object.assign({ size: rows.length, parentRef: tableContainerRef, overscan: 15 }, vProps))
|
|
2126
2146
|
: {};
|
|
2127
|
-
|
|
2147
|
+
React.useEffect(() => {
|
|
2148
|
+
if (virtualizerInstanceRef) {
|
|
2149
|
+
virtualizerInstanceRef.current = virtualizer;
|
|
2150
|
+
}
|
|
2151
|
+
}, [virtualizer]);
|
|
2152
|
+
// const virtualizer: Virtualizer = enableRowVirtualization
|
|
2128
2153
|
// ? useVirtualizer({
|
|
2129
2154
|
// count: rows.length,
|
|
2130
2155
|
// estimateSize: () => (density === 'compact' ? 25 : 50),
|
|
@@ -2133,24 +2158,22 @@ const MRT_TableBody = ({ table, tableContainerRef }) => {
|
|
|
2133
2158
|
// ...vProps,
|
|
2134
2159
|
// })
|
|
2135
2160
|
// : ({} as any);
|
|
2136
|
-
const virtualRows = enableRowVirtualization
|
|
2137
|
-
? rowVirtualizer.virtualItems
|
|
2138
|
-
: [];
|
|
2161
|
+
const virtualRows = enableRowVirtualization ? virtualizer.virtualItems : [];
|
|
2139
2162
|
// const virtualRows = enableRowVirtualization
|
|
2140
|
-
// ?
|
|
2163
|
+
// ? virtualizer.getVirtualItems()
|
|
2141
2164
|
// : [];
|
|
2142
2165
|
let paddingTop = 0;
|
|
2143
2166
|
let paddingBottom = 0;
|
|
2144
2167
|
if (enableRowVirtualization) {
|
|
2145
2168
|
paddingTop = !!virtualRows.length ? virtualRows[0].start : 0;
|
|
2146
2169
|
paddingBottom = !!virtualRows.length
|
|
2147
|
-
?
|
|
2170
|
+
? virtualizer.totalSize - virtualRows[virtualRows.length - 1].end
|
|
2148
2171
|
: 0;
|
|
2149
2172
|
}
|
|
2150
2173
|
// if (enableRowVirtualization) {
|
|
2151
2174
|
// paddingTop = !!virtualRows.length ? virtualRows[0].start : 0;
|
|
2152
2175
|
// paddingBottom = !!virtualRows.length
|
|
2153
|
-
// ?
|
|
2176
|
+
// ? virtualizer.getTotalSize() - virtualRows[virtualRows.length - 1].end
|
|
2154
2177
|
// : 0;
|
|
2155
2178
|
// }
|
|
2156
2179
|
return (React__default["default"].createElement(material.TableBody, Object.assign({}, tableBodyProps),
|
|
@@ -2338,11 +2361,11 @@ const MRT_TableRoot = (props) => {
|
|
|
2338
2361
|
return initState;
|
|
2339
2362
|
}, []);
|
|
2340
2363
|
const [columnFilterFns, setColumnFilterFns] = React.useState(() => Object.assign({}, ...getAllLeafColumnDefs(props.columns).map((col) => {
|
|
2341
|
-
var _a, _b, _c, _d
|
|
2364
|
+
var _a, _b, _c, _d;
|
|
2342
2365
|
return ({
|
|
2343
|
-
[(
|
|
2344
|
-
? (
|
|
2345
|
-
: (
|
|
2366
|
+
[getColumnId(col)]: col.filterFn instanceof Function
|
|
2367
|
+
? (_a = col.filterFn.name) !== null && _a !== void 0 ? _a : 'custom'
|
|
2368
|
+
: (_d = (_b = col.filterFn) !== null && _b !== void 0 ? _b : (_c = initialState === null || initialState === void 0 ? void 0 : initialState.columnFilterFns) === null || _c === void 0 ? void 0 : _c[getColumnId(col)]) !== null && _d !== void 0 ? _d : getDefaultColumnFilterFn(col),
|
|
2346
2369
|
});
|
|
2347
2370
|
})));
|
|
2348
2371
|
const [columnOrder, setColumnOrder] = React.useState((_a = initialState.columnOrder) !== null && _a !== void 0 ? _a : []);
|
|
@@ -2432,6 +2455,11 @@ const MRT_TableRoot = (props) => {
|
|
|
2432
2455
|
tableContainerRef,
|
|
2433
2456
|
topToolbarRef,
|
|
2434
2457
|
}, setColumnFilterFns: (_w = props.onFilterFnsChange) !== null && _w !== void 0 ? _w : setColumnFilterFns, setDensity: (_x = props.onDensityChange) !== null && _x !== void 0 ? _x : setDensity, setDraggingColumn: (_y = props.onDraggingColumnChange) !== null && _y !== void 0 ? _y : setDraggingColumn, setDraggingRow: (_z = props.onDraggingRowChange) !== null && _z !== void 0 ? _z : setDraggingRow, setEditingCell: (_0 = props.onEditingCellChange) !== null && _0 !== void 0 ? _0 : setEditingCell, setEditingRow: (_1 = props.onEditingRowChange) !== null && _1 !== void 0 ? _1 : setEditingRow, setGlobalFilterFn: (_2 = props.onGlobalFilterFnChange) !== null && _2 !== void 0 ? _2 : setGlobalFilterFn, setHoveredColumn: (_3 = props.onHoveredColumnChange) !== null && _3 !== void 0 ? _3 : setHoveredColumn, setHoveredRow: (_4 = props.onHoveredRowChange) !== null && _4 !== void 0 ? _4 : setHoveredRow, setIsFullScreen: (_5 = props.onIsFullScreenChange) !== null && _5 !== void 0 ? _5 : setIsFullScreen, setShowAlertBanner: (_6 = props.onShowAlertBannerChange) !== null && _6 !== void 0 ? _6 : setShowAlertBanner, setShowFilters: (_7 = props.onShowFiltersChange) !== null && _7 !== void 0 ? _7 : setShowFilters, setShowGlobalFilter: (_8 = props.onShowGlobalFilterChange) !== null && _8 !== void 0 ? _8 : setShowGlobalFilter });
|
|
2458
|
+
React.useEffect(() => {
|
|
2459
|
+
if (props.tableInstanceRef) {
|
|
2460
|
+
props.tableInstanceRef.current = table;
|
|
2461
|
+
}
|
|
2462
|
+
}, [table]);
|
|
2435
2463
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
2436
2464
|
React__default["default"].createElement(material.Dialog, { PaperComponent: material.Box, TransitionComponent: material.Grow, disablePortal: true, fullScreen: true, keepMounted: false, onClose: () => setIsFullScreen(false), open: isFullScreen, transitionDuration: 400 },
|
|
2437
2465
|
React__default["default"].createElement(MRT_TablePaper, { table: table })),
|
|
@@ -2440,8 +2468,8 @@ const MRT_TableRoot = (props) => {
|
|
|
2440
2468
|
};
|
|
2441
2469
|
|
|
2442
2470
|
var MaterialReactTable = (_a) => {
|
|
2443
|
-
var { aggregationFns, autoResetExpanded = false, columnResizeMode = 'onEnd', defaultColumn = { minSize: 40, maxSize: 1000, size: 180 }, editingMode = 'modal', enableBottomToolbar = true, enableColumnActions = true,
|
|
2444
|
-
return (React__default["default"].createElement(MRT_TableRoot, Object.assign({ aggregationFns: Object.assign(Object.assign({}, MRT_AggregationFns), aggregationFns), autoResetExpanded: autoResetExpanded, columnResizeMode: columnResizeMode, defaultColumn: defaultColumn, editingMode: editingMode, enableBottomToolbar: enableBottomToolbar, enableColumnActions: enableColumnActions,
|
|
2471
|
+
var { aggregationFns, autoResetExpanded = false, columnResizeMode = 'onEnd', defaultColumn = { minSize: 40, maxSize: 1000, size: 180 }, 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, localization, positionActionsColumn = 'first', positionExpandColumn = 'first', positionGlobalFilter = 'right', positionPagination = 'bottom', positionToolbarAlertBanner = 'top', positionToolbarDropZone = 'top', rowNumberMode = 'original', selectAllMode = 'all', sortingFns } = _a, rest = __rest(_a, ["aggregationFns", "autoResetExpanded", "columnResizeMode", "defaultColumn", "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", "localization", "positionActionsColumn", "positionExpandColumn", "positionGlobalFilter", "positionPagination", "positionToolbarAlertBanner", "positionToolbarDropZone", "rowNumberMode", "selectAllMode", "sortingFns"]);
|
|
2472
|
+
return (React__default["default"].createElement(MRT_TableRoot, Object.assign({ aggregationFns: Object.assign(Object.assign({}, MRT_AggregationFns), aggregationFns), autoResetExpanded: autoResetExpanded, columnResizeMode: columnResizeMode, defaultColumn: defaultColumn, editingMode: editingMode, enableBottomToolbar: enableBottomToolbar, enableColumnActions: enableColumnActions, enableColumnFilterModes: enableColumnFilterModes, enableColumnFilters: enableColumnFilters, enableColumnOrdering: enableColumnOrdering, enableColumnResizing: enableColumnResizing, enableDensityToggle: enableDensityToggle, enableExpandAll: enableExpandAll, enableFilters: enableFilters, enableFullScreenToggle: enableFullScreenToggle, enableGlobalFilter: enableGlobalFilter, enableGlobalFilterModes: enableGlobalFilterModes, 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: Object.assign(Object.assign({}, MRT_FilterFns), filterFns), icons: Object.assign(Object.assign({}, MRT_Default_Icons), icons), localization: Object.assign(Object.assign({}, MRT_DefaultLocalization_EN), localization), positionActionsColumn: positionActionsColumn, positionExpandColumn: positionExpandColumn, positionGlobalFilter: positionGlobalFilter, positionPagination: positionPagination, positionToolbarAlertBanner: positionToolbarAlertBanner, positionToolbarDropZone: positionToolbarDropZone, rowNumberMode: rowNumberMode, selectAllMode: selectAllMode, sortingFns: Object.assign(Object.assign({}, MRT_SortingFns), sortingFns) }, rest)));
|
|
2445
2473
|
};
|
|
2446
2474
|
|
|
2447
2475
|
exports.MRT_CopyButton = MRT_CopyButton;
|