material-react-table 0.40.1 → 0.40.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.
- package/dist/cjs/MaterialReactTable.d.ts +5 -3
- package/dist/cjs/index.js +37 -15
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/menus/MRT_FilterOptionMenu.d.ts +1 -1
- package/dist/cjs/menus/MRT_RowActionMenu.d.ts +2 -2
- package/dist/esm/MaterialReactTable.d.ts +5 -3
- package/dist/esm/material-react-table.esm.js +37 -15
- package/dist/esm/material-react-table.esm.js.map +1 -1
- package/dist/esm/menus/MRT_FilterOptionMenu.d.ts +1 -1
- package/dist/esm/menus/MRT_RowActionMenu.d.ts +2 -2
- package/dist/index.d.ts +5 -3
- package/package.json +4 -4
- package/src/MaterialReactTable.tsx +7 -5
- package/src/buttons/MRT_CopyButton.tsx +4 -3
- package/src/buttons/MRT_EditActionButtons.tsx +4 -1
- package/src/buttons/MRT_ExpandButton.tsx +5 -3
- package/src/buttons/MRT_GrabHandleButton.tsx +4 -0
- package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +8 -3
- package/src/inputs/MRT_EditCellTextField.tsx +4 -2
- package/src/inputs/MRT_SelectCheckbox.tsx +4 -0
- package/src/menus/MRT_FilterOptionMenu.tsx +9 -3
- package/src/menus/MRT_RowActionMenu.tsx +2 -2
|
@@ -4,7 +4,7 @@ import { MRT_Localization } from '../localization';
|
|
|
4
4
|
export declare const mrtFilterOptions: (localization: MRT_Localization) => MRT_InternalFilterOption[];
|
|
5
5
|
interface Props<TData extends Record<string, any> = {}> {
|
|
6
6
|
anchorEl: HTMLElement | null;
|
|
7
|
-
header?: MRT_Header
|
|
7
|
+
header?: MRT_Header<TData>;
|
|
8
8
|
onSelect?: () => void;
|
|
9
9
|
setAnchorEl: (anchorEl: HTMLElement | null) => void;
|
|
10
10
|
table: MRT_TableInstance<TData>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { FC } from 'react';
|
|
1
|
+
import { FC, MouseEvent } from 'react';
|
|
2
2
|
import type { MRT_Row, MRT_TableInstance } from '..';
|
|
3
3
|
interface Props {
|
|
4
4
|
anchorEl: HTMLElement | null;
|
|
5
|
-
handleEdit: () => void;
|
|
5
|
+
handleEdit: (event: MouseEvent) => void;
|
|
6
6
|
row: MRT_Row;
|
|
7
7
|
setAnchorEl: (anchorEl: HTMLElement | null) => void;
|
|
8
8
|
table: MRT_TableInstance;
|
|
@@ -216,10 +216,12 @@ 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?: ({
|
|
220
|
-
table: MRT_TableInstance<TData>;
|
|
219
|
+
renderColumnFilterModeMenuItems?: ({ column, internalFilterOptions, onSelectFilterMode, table, }: {
|
|
221
220
|
column: MRT_Column<TData>;
|
|
222
|
-
|
|
221
|
+
internalFilterOptions: MRT_InternalFilterOption[];
|
|
222
|
+
onSelectFilterMode: (filterMode: MRT_FilterOption) => void;
|
|
223
|
+
table: MRT_TableInstance<TData>;
|
|
224
|
+
}) => ReactNode;
|
|
223
225
|
sortingFn?: MRT_SortingFn;
|
|
224
226
|
};
|
|
225
227
|
export declare type MRT_DefinedColumnDef<TData extends Record<string, any> = {}> = Omit<MRT_ColumnDef<TData>, 'id'> & {
|
|
@@ -274,12 +274,15 @@ const MRT_ExpandButton = ({ row, table }) => {
|
|
|
274
274
|
const iconButtonProps = muiExpandButtonProps instanceof Function
|
|
275
275
|
? muiExpandButtonProps({ table, row })
|
|
276
276
|
: muiExpandButtonProps;
|
|
277
|
-
const handleToggleExpand = () => {
|
|
277
|
+
const handleToggleExpand = (event) => {
|
|
278
|
+
var _a;
|
|
279
|
+
event.stopPropagation();
|
|
278
280
|
row.toggleExpanded();
|
|
281
|
+
(_a = iconButtonProps === null || iconButtonProps === void 0 ? void 0 : iconButtonProps.onClick) === null || _a === void 0 ? void 0 : _a.call(iconButtonProps, event);
|
|
279
282
|
};
|
|
280
283
|
return (React.createElement(Tooltip, { arrow: true, enterDelay: 1000, enterNextDelay: 1000, title: localization.expand },
|
|
281
284
|
React.createElement("span", null,
|
|
282
|
-
React.createElement(IconButton, Object.assign({ "aria-label": localization.expand, disabled: !row.getCanExpand() && !renderDetailPanel
|
|
285
|
+
React.createElement(IconButton, Object.assign({ "aria-label": localization.expand, disabled: !row.getCanExpand() && !renderDetailPanel }, iconButtonProps, { onClick: handleToggleExpand, sx: (theme) => (Object.assign({ height: density === 'compact' ? '1.75rem' : '2.25rem', width: density === 'compact' ? '1.75rem' : '2.25rem' }, ((iconButtonProps === null || iconButtonProps === void 0 ? void 0 : iconButtonProps.sx) instanceof Function
|
|
283
286
|
? iconButtonProps.sx(theme)
|
|
284
287
|
: iconButtonProps === null || iconButtonProps === void 0 ? void 0 : iconButtonProps.sx))) }),
|
|
285
288
|
React.createElement(ExpandMoreIcon, { style: {
|
|
@@ -379,7 +382,7 @@ const mrtFilterOptions = (localization) => [
|
|
|
379
382
|
},
|
|
380
383
|
];
|
|
381
384
|
const MRT_FilterOptionMenu = ({ anchorEl, header, onSelect, setAnchorEl, table, }) => {
|
|
382
|
-
var _a, _b;
|
|
385
|
+
var _a, _b, _c, _d;
|
|
383
386
|
const { getState, options: { enabledGlobalFilterOptions, columnFilterModeOptions, localization, renderColumnFilterModeMenuItems, renderGlobalFilterModeMenuItems, }, setColumnFilterFns, setGlobalFilterFn, } = table;
|
|
384
387
|
const { globalFilterFn, density } = getState();
|
|
385
388
|
const { column } = header !== null && header !== void 0 ? header : {};
|
|
@@ -413,8 +416,13 @@ const MRT_FilterOptionMenu = ({ anchorEl, header, onSelect, setAnchorEl, table,
|
|
|
413
416
|
const filterOption = !!header && columnDef ? columnDef._filterFn : globalFilterFn;
|
|
414
417
|
return (React.createElement(Menu, { anchorEl: anchorEl, anchorOrigin: { vertical: 'center', horizontal: 'right' }, onClose: () => setAnchorEl(null), open: !!anchorEl, MenuListProps: {
|
|
415
418
|
dense: density === 'compact',
|
|
416
|
-
} }, (
|
|
417
|
-
? renderColumnFilterModeMenuItems === null ||
|
|
419
|
+
} }, (_d = (header && column && columnDef
|
|
420
|
+
? (_c = (_b = columnDef.renderColumnFilterModeMenuItems) === null || _b === void 0 ? void 0 : _b.call(columnDef, {
|
|
421
|
+
column: column,
|
|
422
|
+
internalFilterOptions,
|
|
423
|
+
onSelectFilterMode: handleSelectFilterMode,
|
|
424
|
+
table,
|
|
425
|
+
})) !== null && _c !== void 0 ? _c : renderColumnFilterModeMenuItems === null || renderColumnFilterModeMenuItems === void 0 ? void 0 : renderColumnFilterModeMenuItems({
|
|
418
426
|
column: column,
|
|
419
427
|
internalFilterOptions,
|
|
420
428
|
onSelectFilterMode: handleSelectFilterMode,
|
|
@@ -424,7 +432,7 @@ const MRT_FilterOptionMenu = ({ anchorEl, header, onSelect, setAnchorEl, table,
|
|
|
424
432
|
internalFilterOptions,
|
|
425
433
|
onSelectFilterMode: handleSelectFilterMode,
|
|
426
434
|
table,
|
|
427
|
-
}))) !== null &&
|
|
435
|
+
}))) !== null && _d !== void 0 ? _d : internalFilterOptions.map(({ option, label, divider, symbol }, index) => (React.createElement(MenuItem, { divider: divider, key: index, onClick: () => handleSelectFilterMode(option), selected: option === filterOption, sx: {
|
|
428
436
|
alignItems: 'center',
|
|
429
437
|
display: 'flex',
|
|
430
438
|
gap: '2ch',
|
|
@@ -458,7 +466,11 @@ const MRT_ColumnPinningButtons = ({ column, table, }) => {
|
|
|
458
466
|
const MRT_GrabHandleButton = ({ iconButtonProps, onDragEnd, onDragStart, table, }) => {
|
|
459
467
|
const { options: { icons: { DragHandleIcon }, localization, }, } = table;
|
|
460
468
|
return (React.createElement(Tooltip, { arrow: true, enterDelay: 1000, enterNextDelay: 1000, placement: "top", title: localization.move },
|
|
461
|
-
React.createElement(IconButton, Object.assign({ disableRipple: true, draggable: "true", onDragStart: onDragStart, onDragEnd: onDragEnd, size: "small" }, iconButtonProps, {
|
|
469
|
+
React.createElement(IconButton, Object.assign({ disableRipple: true, draggable: "true", onDragStart: onDragStart, onDragEnd: onDragEnd, size: "small" }, iconButtonProps, { onClick: (e) => {
|
|
470
|
+
var _a;
|
|
471
|
+
e.stopPropagation();
|
|
472
|
+
(_a = iconButtonProps === null || iconButtonProps === void 0 ? void 0 : iconButtonProps.onClick) === null || _a === void 0 ? void 0 : _a.call(iconButtonProps, e);
|
|
473
|
+
}, sx: (theme) => (Object.assign({ cursor: 'grab', m: 0, opacity: 0.5, p: '2px', transition: 'all 0.2s ease-in-out', '&:hover': {
|
|
462
474
|
backgroundColor: 'transparent',
|
|
463
475
|
opacity: 1,
|
|
464
476
|
}, '&:active': {
|
|
@@ -909,7 +921,7 @@ const MRT_EditActionButtons = ({ row, table, variant = 'icon', }) => {
|
|
|
909
921
|
values: (_b = editingRow === null || editingRow === void 0 ? void 0 : editingRow._valuesCache) !== null && _b !== void 0 ? _b : Object.assign({}, row.original),
|
|
910
922
|
});
|
|
911
923
|
};
|
|
912
|
-
return (React.createElement(Box, { sx: { display: 'flex', gap: '0.75rem' } }, variant === 'icon' ? (React.createElement(React.Fragment, null,
|
|
924
|
+
return (React.createElement(Box, { onClick: (e) => e.stopPropagation(), sx: { display: 'flex', gap: '0.75rem' } }, variant === 'icon' ? (React.createElement(React.Fragment, null,
|
|
913
925
|
React.createElement(Tooltip, { arrow: true, title: localization.cancel },
|
|
914
926
|
React.createElement(IconButton, { "aria-label": localization.cancel, onClick: handleCancel },
|
|
915
927
|
React.createElement(CancelIcon, null))),
|
|
@@ -930,7 +942,7 @@ const commonIconButtonStyles = {
|
|
|
930
942
|
opacity: 1,
|
|
931
943
|
},
|
|
932
944
|
};
|
|
933
|
-
const MRT_ToggleRowActionMenuButton = ({ cell, row, table }) => {
|
|
945
|
+
const MRT_ToggleRowActionMenuButton = ({ cell, row, table, }) => {
|
|
934
946
|
const { getState, options: { editingMode, enableEditing, icons: { EditIcon, MoreHorizIcon }, localization, renderRowActionMenuItems, renderRowActions, }, setEditingRow, } = table;
|
|
935
947
|
const { editingRow } = getState();
|
|
936
948
|
const [anchorEl, setAnchorEl] = useState(null);
|
|
@@ -939,7 +951,8 @@ const MRT_ToggleRowActionMenuButton = ({ cell, row, table }) => {
|
|
|
939
951
|
event.preventDefault();
|
|
940
952
|
setAnchorEl(event.currentTarget);
|
|
941
953
|
};
|
|
942
|
-
const handleStartEditMode = () => {
|
|
954
|
+
const handleStartEditMode = (event) => {
|
|
955
|
+
event.stopPropagation();
|
|
943
956
|
setEditingRow(Object.assign({}, row));
|
|
944
957
|
setAnchorEl(null);
|
|
945
958
|
};
|
|
@@ -971,7 +984,11 @@ const MRT_SelectCheckbox = ({ row, selectAll, table }) => {
|
|
|
971
984
|
? selectAllMode === 'all'
|
|
972
985
|
? table.getToggleAllRowsSelectedHandler()
|
|
973
986
|
: table.getToggleAllPageRowsSelectedHandler()
|
|
974
|
-
: row.getToggleSelectedHandler(), size: density === 'compact' ? 'small' : 'medium' }, checkboxProps, {
|
|
987
|
+
: row.getToggleSelectedHandler(), size: density === 'compact' ? 'small' : 'medium' }, checkboxProps, { onClick: (e) => {
|
|
988
|
+
var _a;
|
|
989
|
+
e.stopPropagation();
|
|
990
|
+
(_a = checkboxProps === null || checkboxProps === void 0 ? void 0 : checkboxProps.onClick) === null || _a === void 0 ? void 0 : _a.call(checkboxProps, e);
|
|
991
|
+
}, sx: (theme) => (Object.assign({ height: density === 'compact' ? '1.75rem' : '2.5rem', width: density === 'compact' ? '1.75rem' : '2.5rem', m: density !== 'compact' ? '-0.4rem' : undefined }, ((checkboxProps === null || checkboxProps === void 0 ? void 0 : checkboxProps.sx) instanceof Function
|
|
975
992
|
? checkboxProps.sx(theme)
|
|
976
993
|
: checkboxProps === null || checkboxProps === void 0 ? void 0 : checkboxProps.sx))) }))));
|
|
977
994
|
};
|
|
@@ -1831,7 +1848,11 @@ const MRT_EditCellTextField = ({ cell, showLabel, table, }) => {
|
|
|
1831
1848
|
textFieldProps.inputRef = inputRef;
|
|
1832
1849
|
}
|
|
1833
1850
|
}
|
|
1834
|
-
}, label: showLabel ? column.columnDef.header : undefined, margin: "none", name: column.id,
|
|
1851
|
+
}, label: showLabel ? column.columnDef.header : undefined, margin: "none", name: column.id, placeholder: columnDef.header, value: value, variant: "standard" }, textFieldProps, { onClick: (e) => {
|
|
1852
|
+
var _a;
|
|
1853
|
+
e.stopPropagation();
|
|
1854
|
+
(_a = textFieldProps === null || textFieldProps === void 0 ? void 0 : textFieldProps.onClick) === null || _a === void 0 ? void 0 : _a.call(textFieldProps, e);
|
|
1855
|
+
}, onBlur: handleBlur, onChange: handleChange, onKeyDown: handleEnterKeyDown })));
|
|
1835
1856
|
};
|
|
1836
1857
|
|
|
1837
1858
|
const MRT_CopyButton = ({ cell, children, table, }) => {
|
|
@@ -1839,7 +1860,8 @@ const MRT_CopyButton = ({ cell, children, table, }) => {
|
|
|
1839
1860
|
const { column, row } = cell;
|
|
1840
1861
|
const { columnDef } = column;
|
|
1841
1862
|
const [copied, setCopied] = useState(false);
|
|
1842
|
-
const handleCopy = (text) => {
|
|
1863
|
+
const handleCopy = (event, text) => {
|
|
1864
|
+
event.stopPropagation();
|
|
1843
1865
|
navigator.clipboard.writeText(text);
|
|
1844
1866
|
setCopied(true);
|
|
1845
1867
|
setTimeout(() => setCopied(false), 4000);
|
|
@@ -1855,7 +1877,7 @@ const MRT_CopyButton = ({ cell, children, table, }) => {
|
|
|
1855
1877
|
: columnDef.muiTableBodyCellCopyButtonProps;
|
|
1856
1878
|
const buttonProps = Object.assign(Object.assign({}, mTableBodyCellCopyButtonProps), mcTableBodyCellCopyButtonProps);
|
|
1857
1879
|
return (React.createElement(Tooltip, { arrow: true, enterDelay: 1000, enterNextDelay: 1000, placement: "top", title: copied ? localization.copiedToClipboard : localization.clickToCopy },
|
|
1858
|
-
React.createElement(Button, Object.assign({ onClick: () => handleCopy(cell.getValue()), size: "small", type: "button", variant: "text" }, buttonProps, { sx: (theme) => (Object.assign({ backgroundColor: 'transparent', border: 'none', color: 'inherit', cursor: 'copy', fontFamily: 'inherit', fontSize: 'inherit', letterSpacing: 'inherit', m: '-0.25rem', minWidth: 'unset', textAlign: 'inherit', textTransform: 'inherit' }, ((buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.sx) instanceof Function
|
|
1880
|
+
React.createElement(Button, Object.assign({ onClick: (e) => handleCopy(e, cell.getValue()), size: "small", type: "button", variant: "text" }, buttonProps, { sx: (theme) => (Object.assign({ backgroundColor: 'transparent', border: 'none', color: 'inherit', cursor: 'copy', fontFamily: 'inherit', fontSize: 'inherit', letterSpacing: 'inherit', m: '-0.25rem', minWidth: 'unset', textAlign: 'inherit', textTransform: 'inherit' }, ((buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.sx) instanceof Function
|
|
1859
1881
|
? buttonProps.sx(theme)
|
|
1860
1882
|
: buttonProps === null || buttonProps === void 0 ? void 0 : buttonProps.sx))) }), children)));
|
|
1861
1883
|
};
|
|
@@ -2461,7 +2483,7 @@ const MRT_TableRoot = (props) => {
|
|
|
2461
2483
|
|
|
2462
2484
|
var MaterialReactTable = (_a) => {
|
|
2463
2485
|
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"]);
|
|
2464
|
-
return (React.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,
|
|
2486
|
+
return (React.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, 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: 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)));
|
|
2465
2487
|
};
|
|
2466
2488
|
|
|
2467
2489
|
export { MRT_CopyButton, MRT_FullScreenToggleButton, MRT_GlobalFilterTextField, MRT_ShowHideColumnsButton, MRT_ToggleDensePaddingButton, MRT_ToggleFiltersButton, MRT_ToggleGlobalFilterButton, MaterialReactTable as default };
|