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.
@@ -4,7 +4,7 @@ import { MRT_FilterFns } from './filterFns';
4
4
  import { MRT_SortingFns } from './sortingFns';
5
5
  import type { TableCellProps } from '@mui/material/TableCell';
6
6
  import type { Theme } from '@mui/material/styles';
7
- import type { MaterialReactTableProps, MRT_Column, MRT_ColumnDef, MRT_DefinedColumnDef, MRT_DisplayColumnIds, MRT_FilterOption, MRT_Header, MRT_TableInstance } from '.';
7
+ import type { MaterialReactTableProps, MRT_Column, MRT_ColumnDef, MRT_DefinedColumnDef, MRT_DisplayColumnIds, MRT_FilterOption, MRT_TableInstance } from '.';
8
8
  export declare const getColumnId: <TData extends Record<string, any> = {}>(columnDef: MRT_ColumnDef<TData>) => string;
9
9
  export declare const getAllLeafColumnDefs: <TData extends Record<string, any> = {}>(columns: MRT_ColumnDef<TData>[]) => MRT_ColumnDef<TData>[];
10
10
  export declare const prepareColumns: <TData extends Record<string, any> = {}>({ aggregationFns, columnDefs, columnFilterFns, defaultDisplayColumn, filterFns, sortingFns, }: {
@@ -111,9 +111,8 @@ export declare const getIsLastColumn: (column: MRT_Column, table: MRT_TableInsta
111
111
  export declare const getIsLastLeftPinnedColumn: (table: MRT_TableInstance, column: MRT_Column) => boolean;
112
112
  export declare const getIsFirstRightPinnedColumn: (column: MRT_Column) => boolean;
113
113
  export declare const getTotalRight: (table: MRT_TableInstance, column: MRT_Column) => number;
114
- export declare const getCommonCellStyles: ({ column, header, table, tableCellProps, theme, }: {
114
+ export declare const getCommonCellStyles: ({ column, table, tableCellProps, theme, }: {
115
115
  column: MRT_Column;
116
- header?: MRT_Header<{}> | undefined;
117
116
  table: MRT_TableInstance;
118
117
  tableCellProps: TableCellProps;
119
118
  theme: Theme;
@@ -234,15 +234,17 @@ const getIsFirstRightPinnedColumn = (column) => {
234
234
  const getTotalRight = (table, column) => {
235
235
  return ((table.getRightLeafHeaders().length - 1 - column.getPinnedIndex()) * 200);
236
236
  };
237
- const getCommonCellStyles = ({ column, header, table, tableCellProps, theme, }) => {
238
- var _a, _b, _c, _d, _e, _f, _g, _h;
237
+ const getCommonCellStyles = ({ column, table, tableCellProps, theme, }) => {
238
+ var _a, _b, _c, _d, _e, _f, _g;
239
239
  return (Object.assign(Object.assign({ backgroundColor: column.getIsPinned() && column.columnDef.columnDefType !== 'group'
240
240
  ? alpha(lighten(theme.palette.background.default, 0.04), 0.97)
241
241
  : 'inherit', backgroundImage: 'inherit', boxShadow: getIsLastLeftPinnedColumn(table, column)
242
242
  ? `-4px 0 8px -6px ${alpha(theme.palette.common.black, 0.2)} inset`
243
243
  : getIsFirstRightPinnedColumn(column)
244
244
  ? `4px 0 8px -6px ${alpha(theme.palette.common.black, 0.2)} inset`
245
- : undefined, display: table.options.layoutMode === 'grid' ? 'flex' : 'table-cell', left: column.getIsPinned() === 'left'
245
+ : undefined, display: table.options.layoutMode === 'grid' ? 'flex' : 'table-cell', flex: table.options.layoutMode === 'grid'
246
+ ? `var(--col-${column.id.replaceAll('.', '_')}-size) 0 auto`
247
+ : undefined, left: column.getIsPinned() === 'left'
246
248
  ? `${column.getStart('left')}px`
247
249
  : undefined, ml: table.options.enableColumnVirtualization &&
248
250
  column.getIsPinned() === 'left' &&
@@ -263,11 +265,9 @@ const getCommonCellStyles = ({ column, header, table, tableCellProps, theme, })
263
265
  ? `${getTotalRight(table, column)}px`
264
266
  : undefined, transition: table.options.enableColumnVirtualization || column.getIsResizing()
265
267
  ? 'none'
266
- : `all 150ms ease-in-out` }, ((tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.sx) instanceof Function
268
+ : `padding 150ms ease-in-out` }, ((tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.sx) instanceof Function
267
269
  ? tableCellProps.sx(theme)
268
- : tableCellProps === null || tableCellProps === void 0 ? void 0 : tableCellProps.sx)), { flex: table.options.layoutMode === 'grid'
269
- ? `${column.getSize()} 0 auto`
270
- : 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() }));
270
+ : 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)` }));
271
271
  };
272
272
  const MRT_DefaultColumn = {
273
273
  filterVariant: 'text',
@@ -798,7 +798,7 @@ const commonListItemStyles = {
798
798
  };
799
799
  const MRT_ColumnActionMenu = ({ anchorEl, header, setAnchorEl, table, }) => {
800
800
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
801
- 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;
801
+ 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;
802
802
  const { column } = header;
803
803
  const { columnDef } = column;
804
804
  const { columnSizing, columnVisibility, density } = getState();
@@ -817,6 +817,7 @@ const MRT_ColumnActionMenu = ({ anchorEl, header, setAnchorEl, table, }) => {
817
817
  setAnchorEl(null);
818
818
  };
819
819
  const handleResetColumnSize = () => {
820
+ setColumnSizingInfo((old) => (Object.assign(Object.assign({}, old), { isResizingColumn: false })));
820
821
  column.resetSize();
821
822
  setAnchorEl(null);
822
823
  };
@@ -1812,12 +1813,15 @@ const MRT_TableHeadCellGrabHandle = ({ column, table, tableHeadCellRef, }) => {
1812
1813
 
1813
1814
  const MRT_TableHeadCellResizeHandle = ({ header, table }) => {
1814
1815
  var _a;
1815
- const { getState, options: { columnResizeMode }, } = table;
1816
+ const { getState, options: { columnResizeMode }, setColumnSizingInfo, } = table;
1816
1817
  const { density, showColumnFilters } = getState();
1817
1818
  const { column } = header;
1818
1819
  const { columnDef } = column;
1819
1820
  const { columnDefType } = columnDef;
1820
- return (React.createElement(Box, { onDoubleClick: () => column.resetSize(), onMouseDown: header.getResizeHandler(), onTouchStart: header.getResizeHandler(), sx: (theme) => ({
1821
+ return (React.createElement(Box, { onDoubleClick: () => {
1822
+ setColumnSizingInfo((old) => (Object.assign(Object.assign({}, old), { isResizingColumn: false })));
1823
+ column.resetSize();
1824
+ }, onMouseDown: header.getResizeHandler(), onTouchStart: header.getResizeHandler(), sx: (theme) => ({
1821
1825
  cursor: 'col-resize',
1822
1826
  mr: density === 'compact' ? '-0.5rem' : '-1rem',
1823
1827
  position: 'absolute',
@@ -1953,7 +1957,6 @@ const MRT_TableHeadCell = ({ header, table }) => {
1953
1957
  ? 2
1954
1958
  : 1 }, getCommonCellStyles({
1955
1959
  column,
1956
- header,
1957
1960
  table,
1958
1961
  tableCellProps,
1959
1962
  theme,
@@ -2616,14 +2619,23 @@ const MRT_TableFooter = ({ table, virtualColumns, virtualPaddingLeft, virtualPad
2616
2619
 
2617
2620
  const MRT_Table = ({ table }) => {
2618
2621
  var _a, _b, _c, _d;
2619
- const { getState, options: { columnVirtualizerInstanceRef, columnVirtualizerProps, enableColumnResizing, enableColumnVirtualization, enablePinning, enableStickyHeader, enableTableFooter, enableTableHead, layoutMode, memoMode, muiTableProps, }, refs: { tableContainerRef }, } = table;
2620
- const { isFullScreen, columnPinning, columnVisibility } = getState();
2622
+ const { getFlatHeaders, getState, options: { columns, columnVirtualizerInstanceRef, columnVirtualizerProps, enableColumnResizing, enableColumnVirtualization, enablePinning, enableStickyHeader, enableTableFooter, enableTableHead, layoutMode, memoMode, muiTableProps, }, refs: { tableContainerRef }, } = table;
2623
+ const { columnPinning, columnSizing, columnSizingInfo, columnVisibility, isFullScreen, } = getState();
2621
2624
  const tableProps = muiTableProps instanceof Function
2622
2625
  ? muiTableProps({ table })
2623
2626
  : muiTableProps;
2624
2627
  const vProps = columnVirtualizerProps instanceof Function
2625
2628
  ? columnVirtualizerProps({ table })
2626
2629
  : columnVirtualizerProps;
2630
+ const columnSizeVars = useMemo(() => {
2631
+ const headers = getFlatHeaders();
2632
+ const colSizes = {};
2633
+ for (let i = 0; i < headers.length; i++) {
2634
+ const h = headers[i];
2635
+ colSizes[`--col-${h.column.id}-size`.replaceAll('.', '_')] = h.getSize();
2636
+ }
2637
+ return colSizes;
2638
+ }, [columns, columnSizing, columnSizingInfo]);
2627
2639
  //get first 16 column widths and average them
2628
2640
  const averageColumnWidth = useMemo(() => {
2629
2641
  var _a, _b, _c, _d;
@@ -2673,9 +2685,9 @@ const MRT_Table = ({ table }) => {
2673
2685
  };
2674
2686
  return (React.createElement(Table, 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
2675
2687
  ? tableProps.sx(theme)
2676
- : tableProps === null || tableProps === void 0 ? void 0 : tableProps.sx))) }),
2688
+ : tableProps === null || tableProps === void 0 ? void 0 : tableProps.sx))), style: Object.assign(Object.assign({}, columnSizeVars), tableProps === null || tableProps === void 0 ? void 0 : tableProps.style) }),
2677
2689
  enableTableHead && React.createElement(MRT_TableHead, Object.assign({}, props)),
2678
- memoMode === 'table-body' ? (React.createElement(Memo_MRT_TableBody, Object.assign({ columnVirtualizer: columnVirtualizer }, props))) : (React.createElement(MRT_TableBody, Object.assign({ columnVirtualizer: columnVirtualizer }, props))),
2690
+ memoMode === 'table-body' || columnSizingInfo.isResizingColumn ? (React.createElement(Memo_MRT_TableBody, Object.assign({ columnVirtualizer: columnVirtualizer }, props))) : (React.createElement(MRT_TableBody, Object.assign({ columnVirtualizer: columnVirtualizer }, props))),
2679
2691
  enableTableFooter && React.createElement(MRT_TableFooter, Object.assign({}, props))));
2680
2692
  };
2681
2693
 
@@ -3023,7 +3035,7 @@ const MRT_Localization_EN = {
3023
3035
 
3024
3036
  const MaterialReactTable = (_a) => {
3025
3037
  var _b;
3026
- 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"]);
3038
+ 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"]);
3027
3039
  const _icons = useMemo(() => (Object.assign(Object.assign({}, MRT_Default_Icons), icons)), [icons]);
3028
3040
  const _localization = useMemo(() => (Object.assign(Object.assign({}, MRT_Localization_EN), localization)), [localization]);
3029
3041
  const _aggregationFns = useMemo(() => (Object.assign(Object.assign({}, MRT_AggregationFns), aggregationFns)), []);