material-react-table 1.6.6 → 1.7.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/index.js CHANGED
@@ -312,15 +312,17 @@ const getIsFirstRightPinnedColumn = (column) => {
312
312
  const getTotalRight = (table, column) => {
313
313
  return ((table.getRightLeafHeaders().length - 1 - column.getPinnedIndex()) * 200);
314
314
  };
315
- const getCommonCellStyles = ({ column, header, table, tableCellProps, theme, }) => {
316
- var _a, _b, _c, _d, _e, _f, _g, _h;
315
+ const getCommonCellStyles = ({ column, table, tableCellProps, theme, }) => {
316
+ var _a, _b, _c, _d, _e, _f, _g;
317
317
  return (Object.assign(Object.assign({ backgroundColor: column.getIsPinned() && column.columnDef.columnDefType !== 'group'
318
318
  ? styles.alpha(styles.lighten(theme.palette.background.default, 0.04), 0.97)
319
319
  : 'inherit', backgroundImage: 'inherit', boxShadow: getIsLastLeftPinnedColumn(table, column)
320
320
  ? `-4px 0 8px -6px ${styles.alpha(theme.palette.common.black, 0.2)} inset`
321
321
  : getIsFirstRightPinnedColumn(column)
322
322
  ? `4px 0 8px -6px ${styles.alpha(theme.palette.common.black, 0.2)} inset`
323
- : undefined, display: table.options.layoutMode === 'grid' ? 'flex' : 'table-cell', left: column.getIsPinned() === 'left'
323
+ : undefined, display: table.options.layoutMode === 'grid' ? 'flex' : 'table-cell', flex: table.options.layoutMode === 'grid'
324
+ ? `var(--col-${column.id.replaceAll('.', '_')}-size) 0 auto`
325
+ : undefined, left: column.getIsPinned() === 'left'
324
326
  ? `${column.getStart('left')}px`
325
327
  : undefined, ml: table.options.enableColumnVirtualization &&
326
328
  column.getIsPinned() === 'left' &&
@@ -341,11 +343,9 @@ const getCommonCellStyles = ({ column, header, table, tableCellProps, theme, })
341
343
  ? `${getTotalRight(table, column)}px`
342
344
  : undefined, transition: table.options.enableColumnVirtualization || column.getIsResizing()
343
345
  ? 'none'
344
- : `all 150ms ease-in-out` }, ((tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.sx) instanceof Function
346
+ : `padding 150ms ease-in-out` }, ((tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.sx) instanceof Function
345
347
  ? tableCellProps.sx(theme)
346
- : tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.sx)), { flex: table.options.layoutMode === 'grid'
347
- ? `${column.getSize()} 0 auto`
348
- : 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() }));
348
+ : tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.sx)), { minWidth: `max(calc(var(--col-${column.id.replaceAll('.', '_')}-size) * 1px), ${(_g = column.columnDef.minSize) !== null && _g !== void 0 ? _g : 30}px)`, width: `calc(var(--col-${column.id.replaceAll('.', '_')}-size) * 1px)` }));
349
349
  };
350
350
  const MRT_DefaultColumn = {
351
351
  filterVariant: 'text',
@@ -876,7 +876,7 @@ const commonListItemStyles = {
876
876
  };
877
877
  const MRT_ColumnActionMenu = ({ anchorEl, header, setAnchorEl, table, }) => {
878
878
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
879
- const { getState, toggleAllColumnsVisible, setColumnOrder, options: { columnFilterModeOptions, enableColumnFilterModes, enableColumnFilters, enableColumnResizing, enableGrouping, enableHiding, enablePinning, enableSorting, icons: { ArrowRightIcon, ClearAllIcon, ViewColumnIcon, DynamicFeedIcon, FilterListIcon, FilterListOffIcon, PushPinIcon, SortIcon, RestartAltIcon, VisibilityOffIcon, }, localization, renderColumnActionsMenuItems, }, refs: { filterInputRefs }, setShowFilters, } = table;
879
+ const { getState, toggleAllColumnsVisible, setColumnOrder, options: { columnFilterModeOptions, enableColumnFilterModes, enableColumnFilters, enableColumnResizing, enableGrouping, enableHiding, enablePinning, enableSorting, icons: { ArrowRightIcon, ClearAllIcon, ViewColumnIcon, DynamicFeedIcon, FilterListIcon, FilterListOffIcon, PushPinIcon, SortIcon, RestartAltIcon, VisibilityOffIcon, }, localization, renderColumnActionsMenuItems, }, refs: { filterInputRefs }, setColumnSizingInfo, setShowFilters, } = table;
880
880
  const { column } = header;
881
881
  const { columnDef } = column;
882
882
  const { columnSizing, columnVisibility, density } = getState();
@@ -895,6 +895,7 @@ const MRT_ColumnActionMenu = ({ anchorEl, header, setAnchorEl, table, }) => {
895
895
  setAnchorEl(null);
896
896
  };
897
897
  const handleResetColumnSize = () => {
898
+ setColumnSizingInfo((old) => (Object.assign(Object.assign({}, old), { isResizingColumn: false })));
898
899
  column.resetSize();
899
900
  setAnchorEl(null);
900
901
  };
@@ -1890,12 +1891,15 @@ const MRT_TableHeadCellGrabHandle = ({ column, table, tableHeadCellRef, }) => {
1890
1891
 
1891
1892
  const MRT_TableHeadCellResizeHandle = ({ header, table }) => {
1892
1893
  var _a;
1893
- const { getState, options: { columnResizeMode }, } = table;
1894
+ const { getState, options: { columnResizeMode }, setColumnSizingInfo, } = table;
1894
1895
  const { density, showColumnFilters } = getState();
1895
1896
  const { column } = header;
1896
1897
  const { columnDef } = column;
1897
1898
  const { columnDefType } = columnDef;
1898
- return (React__default["default"].createElement(Box__default["default"], { onDoubleClick: () => column.resetSize(), onMouseDown: header.getResizeHandler(), onTouchStart: header.getResizeHandler(), sx: (theme) => ({
1899
+ return (React__default["default"].createElement(Box__default["default"], { onDoubleClick: () => {
1900
+ setColumnSizingInfo((old) => (Object.assign(Object.assign({}, old), { isResizingColumn: false })));
1901
+ column.resetSize();
1902
+ }, onMouseDown: header.getResizeHandler(), onTouchStart: header.getResizeHandler(), sx: (theme) => ({
1899
1903
  cursor: 'col-resize',
1900
1904
  mr: density === 'compact' ? '-0.5rem' : '-1rem',
1901
1905
  position: 'absolute',
@@ -2031,7 +2035,6 @@ const MRT_TableHeadCell = ({ header, table }) => {
2031
2035
  ? 2
2032
2036
  : 1 }, getCommonCellStyles({
2033
2037
  column,
2034
- header,
2035
2038
  table,
2036
2039
  tableCellProps,
2037
2040
  theme,
@@ -2694,14 +2697,23 @@ const MRT_TableFooter = ({ table, virtualColumns, virtualPaddingLeft, virtualPad
2694
2697
 
2695
2698
  const MRT_Table = ({ table }) => {
2696
2699
  var _a, _b, _c, _d;
2697
- const { getState, options: { columnVirtualizerInstanceRef, columnVirtualizerProps, enableColumnResizing, enableColumnVirtualization, enablePinning, enableStickyHeader, enableTableFooter, enableTableHead, layoutMode, memoMode, muiTableProps, }, refs: { tableContainerRef }, } = table;
2698
- const { isFullScreen, columnPinning, columnVisibility } = getState();
2700
+ const { getFlatHeaders, getState, options: { columns, columnVirtualizerInstanceRef, columnVirtualizerProps, enableColumnResizing, enableColumnVirtualization, enablePinning, enableStickyHeader, enableTableFooter, enableTableHead, layoutMode, memoMode, muiTableProps, }, refs: { tableContainerRef }, } = table;
2701
+ const { columnPinning, columnSizing, columnSizingInfo, columnVisibility, isFullScreen, } = getState();
2699
2702
  const tableProps = muiTableProps instanceof Function
2700
2703
  ? muiTableProps({ table })
2701
2704
  : muiTableProps;
2702
2705
  const vProps = columnVirtualizerProps instanceof Function
2703
2706
  ? columnVirtualizerProps({ table })
2704
2707
  : columnVirtualizerProps;
2708
+ const columnSizeVars = React.useMemo(() => {
2709
+ const headers = getFlatHeaders();
2710
+ const colSizes = {};
2711
+ for (let i = 0; i < headers.length; i++) {
2712
+ const h = headers[i];
2713
+ colSizes[`--col-${h.column.id}-size`.replaceAll('.', '_')] = h.getSize();
2714
+ }
2715
+ return colSizes;
2716
+ }, [columns, columnSizing, columnSizingInfo]);
2705
2717
  //get first 16 column widths and average them
2706
2718
  const averageColumnWidth = React.useMemo(() => {
2707
2719
  var _a, _b, _c, _d;
@@ -2751,9 +2763,9 @@ const MRT_Table = ({ table }) => {
2751
2763
  };
2752
2764
  return (React__default["default"].createElement(Table__default["default"], Object.assign({ stickyHeader: enableStickyHeader || isFullScreen }, tableProps, { sx: (theme) => (Object.assign({ borderCollapse: 'separate', display: layoutMode === 'grid' ? 'grid' : 'table', tableLayout: layoutMode !== 'grid' && enableColumnResizing ? 'fixed' : undefined }, ((tableProps === null || tableProps === void 0 ? void 0 : tableProps.sx) instanceof Function
2753
2765
  ? tableProps.sx(theme)
2754
- : tableProps === null || tableProps === void 0 ? void 0 : tableProps.sx))) }),
2766
+ : tableProps === null || tableProps === void 0 ? void 0 : tableProps.sx))), style: Object.assign(Object.assign({}, columnSizeVars), tableProps === null || tableProps === void 0 ? void 0 : tableProps.style) }),
2755
2767
  enableTableHead && React__default["default"].createElement(MRT_TableHead, Object.assign({}, props)),
2756
- memoMode === 'table-body' ? (React__default["default"].createElement(Memo_MRT_TableBody, Object.assign({ columnVirtualizer: columnVirtualizer }, props))) : (React__default["default"].createElement(MRT_TableBody, Object.assign({ columnVirtualizer: columnVirtualizer }, props))),
2768
+ memoMode === 'table-body' || columnSizingInfo.isResizingColumn ? (React__default["default"].createElement(Memo_MRT_TableBody, Object.assign({ columnVirtualizer: columnVirtualizer }, props))) : (React__default["default"].createElement(MRT_TableBody, Object.assign({ columnVirtualizer: columnVirtualizer }, props))),
2757
2769
  enableTableFooter && React__default["default"].createElement(MRT_TableFooter, Object.assign({}, props))));
2758
2770
  };
2759
2771
 
@@ -3101,7 +3113,7 @@ const MRT_Localization_EN = {
3101
3113
 
3102
3114
  const MaterialReactTable = (_a) => {
3103
3115
  var _b;
3104
- 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"]);
3116
+ var { aggregationFns, autoResetExpanded = false, columnResizeMode = 'onChange', 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"]);
3105
3117
  const _icons = React.useMemo(() => (Object.assign(Object.assign({}, MRT_Default_Icons), icons)), [icons]);
3106
3118
  const _localization = React.useMemo(() => (Object.assign(Object.assign({}, MRT_Localization_EN), localization)), [localization]);
3107
3119
  const _aggregationFns = React.useMemo(() => (Object.assign(Object.assign({}, MRT_AggregationFns), aggregationFns)), []);