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.
@@ -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?: ({ table, column, }: {
220
- table: MRT_TableInstance<TData>;
219
+ renderColumnFilterModeMenuItems?: ({ column, internalFilterOptions, onSelectFilterMode, table, }: {
221
220
  column: MRT_Column<TData>;
222
- }) => ReactNode[];
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, onClick: handleToggleExpand }, iconButtonProps, { 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
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
- } }, (_b = (header && column
417
- ? renderColumnFilterModeMenuItems === null || renderColumnFilterModeMenuItems === void 0 ? void 0 : renderColumnFilterModeMenuItems({
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 && _b !== void 0 ? _b : internalFilterOptions.map(({ option, label, divider, symbol }, index) => (React.createElement(MenuItem, { divider: divider, key: index, onClick: () => handleSelectFilterMode(option), selected: option === filterOption, sx: {
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, { sx: (theme) => (Object.assign({ cursor: 'grab', m: 0, opacity: 0.5, p: '2px', transition: 'all 0.2s ease-in-out', '&:hover': {
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, { 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
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, onClick: (e) => e.stopPropagation(), placeholder: columnDef.header, value: value, variant: "standard" }, textFieldProps, { onBlur: handleBlur, onChange: handleChange, onKeyDown: handleEnterKeyDown })));
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, 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)));
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 };