material-react-table 0.9.1 → 0.9.2

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.
@@ -5,6 +5,7 @@ import { Tooltip, IconButton, Menu, MenuItem, Box, FormControlLabel, Switch, But
5
5
  import { rankItem, rankings } from '@tanstack/match-sorter-utils';
6
6
  import { useDrop, useDrag, DndProvider } from 'react-dnd';
7
7
  import { HTML5Backend } from 'react-dnd-html5-backend';
8
+ import { useVirtual } from 'react-virtual';
8
9
 
9
10
  function _extends() {
10
11
  _extends = Object.assign ? Object.assign.bind() : function (target) {
@@ -2951,23 +2952,47 @@ var MRT_TableBodyRow = function MRT_TableBodyRow(_ref) {
2951
2952
  };
2952
2953
 
2953
2954
  var MRT_TableBody = function MRT_TableBody(_ref) {
2954
- var tableInstance = _ref.tableInstance;
2955
+ var tableInstance = _ref.tableInstance,
2956
+ tableContainerRef = _ref.tableContainerRef;
2955
2957
  var getPaginationRowModel = tableInstance.getPaginationRowModel,
2956
2958
  getPrePaginationRowModel = tableInstance.getPrePaginationRowModel,
2959
+ getState = tableInstance.getState,
2957
2960
  _tableInstance$option = tableInstance.options,
2958
2961
  enablePagination = _tableInstance$option.enablePagination,
2962
+ enableRowVirtualization = _tableInstance$option.enableRowVirtualization,
2959
2963
  muiTableBodyProps = _tableInstance$option.muiTableBodyProps;
2960
- var rows = enablePagination ? getPaginationRowModel().rows : getPrePaginationRowModel().rows;
2964
+
2965
+ var _getState = getState(),
2966
+ isDensePadding = _getState.isDensePadding;
2967
+
2961
2968
  var tableBodyProps = muiTableBodyProps instanceof Function ? muiTableBodyProps({
2962
2969
  tableInstance: tableInstance
2963
2970
  }) : muiTableBodyProps;
2964
- return React.createElement(TableBody, Object.assign({}, tableBodyProps), rows.map(function (row) {
2971
+ var rows = enablePagination ? getPaginationRowModel().rows : getPrePaginationRowModel().rows;
2972
+ var rowVirtualizer = useVirtual({
2973
+ overscan: isDensePadding ? 15 : 5,
2974
+ size: rows.length,
2975
+ parentRef: tableContainerRef
2976
+ });
2977
+ var virtualRows = rowVirtualizer.virtualItems;
2978
+ var paddingTop = virtualRows.length > 0 ? virtualRows[0].start : 0;
2979
+ var paddingBottom = virtualRows.length > 0 ? rowVirtualizer.totalSize - virtualRows[virtualRows.length - 1].end : 0;
2980
+ return React.createElement(TableBody, Object.assign({}, tableBodyProps), enableRowVirtualization && paddingTop > 0 && React.createElement("tr", null, React.createElement("td", {
2981
+ style: {
2982
+ height: paddingTop + "px"
2983
+ }
2984
+ })), (enableRowVirtualization ? virtualRows : rows).map(function (rowOrVirtualRow) {
2985
+ var row = enableRowVirtualization ? rows[rowOrVirtualRow.index] : rowOrVirtualRow;
2965
2986
  return React.createElement(MRT_TableBodyRow, {
2966
2987
  key: row.id,
2967
2988
  row: row,
2968
2989
  tableInstance: tableInstance
2969
2990
  });
2970
- }));
2991
+ }), enableRowVirtualization && paddingBottom > 0 && React.createElement("tr", null, React.createElement("td", {
2992
+ style: {
2993
+ height: paddingBottom + "px"
2994
+ }
2995
+ })));
2971
2996
  };
2972
2997
 
2973
2998
  var MRT_TableFooterCell = function MRT_TableFooterCell(_ref) {
@@ -3061,7 +3086,8 @@ var MRT_TableFooter = function MRT_TableFooter(_ref) {
3061
3086
  };
3062
3087
 
3063
3088
  var MRT_Table = function MRT_Table(_ref) {
3064
- var tableInstance = _ref.tableInstance;
3089
+ var tableContainerRef = _ref.tableContainerRef,
3090
+ tableInstance = _ref.tableInstance;
3065
3091
  var _tableInstance$option = tableInstance.options,
3066
3092
  enableStickyHeader = _tableInstance$option.enableStickyHeader,
3067
3093
  enableTableFooter = _tableInstance$option.enableTableFooter,
@@ -3075,6 +3101,7 @@ var MRT_Table = function MRT_Table(_ref) {
3075
3101
  }, tableProps), enableTableHead && React.createElement(MRT_TableHead, {
3076
3102
  tableInstance: tableInstance
3077
3103
  }), React.createElement(MRT_TableBody, {
3104
+ tableContainerRef: tableContainerRef,
3078
3105
  tableInstance: tableInstance
3079
3106
  }), enableTableFooter && React.createElement(MRT_TableFooter, {
3080
3107
  tableInstance: tableInstance
@@ -3087,8 +3114,8 @@ var MRT_TableContainer = function MRT_TableContainer(_ref) {
3087
3114
  var getState = tableInstance.getState,
3088
3115
  _tableInstance$option = tableInstance.options,
3089
3116
  enableStickyHeader = _tableInstance$option.enableStickyHeader,
3090
- tableId = _tableInstance$option.tableId,
3091
- muiTableContainerProps = _tableInstance$option.muiTableContainerProps;
3117
+ muiTableContainerProps = _tableInstance$option.muiTableContainerProps,
3118
+ tableId = _tableInstance$option.tableId;
3092
3119
 
3093
3120
  var _getState = getState(),
3094
3121
  isFullScreen = _getState.isFullScreen;
@@ -3107,7 +3134,9 @@ var MRT_TableContainer = function MRT_TableContainer(_ref) {
3107
3134
  var bottomToolbarHeight = typeof document !== 'undefined' ? (_document$getElementB3 = (_document2 = document) == null ? void 0 : (_document2$getElement = _document2.getElementById("mrt-" + tableId + "-toolbar-bottom")) == null ? void 0 : _document2$getElement.offsetHeight) != null ? _document$getElementB3 : 0 : 0;
3108
3135
  setTotalToolbarHeight(topToolbarHeight + bottomToolbarHeight);
3109
3136
  });
3137
+ var tableContainerRef = React.useRef(null);
3110
3138
  return React.createElement(TableContainer, Object.assign({}, tableContainerProps, {
3139
+ ref: tableContainerRef,
3111
3140
  sx: _extends({
3112
3141
  maxWidth: '100%',
3113
3142
  maxHeight: enableStickyHeader ? "clamp(350px, calc(100vh - " + totalToolbarHeight + "px), 2000px)" : undefined,
@@ -3117,6 +3146,7 @@ var MRT_TableContainer = function MRT_TableContainer(_ref) {
3117
3146
  maxHeight: isFullScreen ? "calc(100vh - " + totalToolbarHeight + "px)" : undefined
3118
3147
  }
3119
3148
  }), React.createElement(MRT_Table, {
3149
+ tableContainerRef: tableContainerRef,
3120
3150
  tableInstance: tableInstance
3121
3151
  }));
3122
3152
  };