@bigbinary/neetoui 8.3.16 → 8.3.18

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/Table.js CHANGED
@@ -22,7 +22,7 @@ var useQueryParams = require('./useQueryParams-l5fJJYCR.js');
22
22
  var Button = require('./Button.js');
23
23
  var Callout = require('./Callout.js');
24
24
  var Typography = require('./Typography.js');
25
- var useRestoreScrollPosition = require('./useRestoreScrollPosition-Ck_b0Nh4.js');
25
+ var useRestoreScrollPosition = require('./useRestoreScrollPosition-ByQwrqTS.js');
26
26
  var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
27
27
  var Popover = require('./Popover.js');
28
28
  var reactResizable = require('react-resizable');
@@ -208,6 +208,7 @@ var TitleWithInfoIcon = function TitleWithInfoIcon(_ref) {
208
208
  style: "body2"
209
209
  }, description))));
210
210
  };
211
+ var TitleWithInfoIcon$1 = /*#__PURE__*/React.memo(TitleWithInfoIcon);
211
212
 
212
213
  var _excluded$4 = ["children", "isSortable", "isAddEnabled", "sortedInfo", "onSort", "isHidable", "isDeletable", "isFixedColumn", "isColumnFreezeEnabled", "onColumnHide", "onAddColumn", "onColumnDelete", "onColumnFreeze", "onMoreActionClick", "column", "moreActions"];
213
214
  var CellContent = function CellContent(_ref) {
@@ -262,6 +263,7 @@ var CellContent = function CellContent(_ref) {
262
263
  isHidable: isColumnHidable
263
264
  })));
264
265
  };
266
+ var CellContent$1 = /*#__PURE__*/React.memo(CellContent);
265
267
 
266
268
  var _excluded$3 = ["onResize", "width", "onResizeStop", "className"];
267
269
  var HeaderCell = function HeaderCell(props) {
@@ -271,7 +273,7 @@ var HeaderCell = function HeaderCell(props) {
271
273
  className = props.className,
272
274
  restProps = _objectWithoutProperties(props, _excluded$3);
273
275
  if (!width) {
274
- return /*#__PURE__*/React.createElement(CellContent, _extends({}, restProps, {
276
+ return /*#__PURE__*/React.createElement(CellContent$1, _extends({}, restProps, {
275
277
  className: classnames(className, "drag-handler")
276
278
  }));
277
279
  }
@@ -292,10 +294,11 @@ var HeaderCell = function HeaderCell(props) {
292
294
  onResizeStart: function onResizeStart(e) {
293
295
  e.preventDefault();
294
296
  }
295
- }, /*#__PURE__*/React.createElement(CellContent, _extends({}, restProps, {
297
+ }, /*#__PURE__*/React.createElement(CellContent$1, _extends({}, restProps, {
296
298
  className: classnames(className, "drag-handler")
297
299
  })));
298
300
  };
301
+ var HeaderCell$1 = /*#__PURE__*/React.memo(HeaderCell);
299
302
 
300
303
  var _excluded$2 = ["onResize", "width", "onResizeStop", "onResizeStart"];
301
304
  var ResizableHeaderCell = function ResizableHeaderCell(props) {
@@ -309,7 +312,7 @@ var ResizableHeaderCell = function ResizableHeaderCell(props) {
309
312
  isResizing = _useState2[0],
310
313
  setIsResizing = _useState2[1];
311
314
  if (!width) {
312
- return /*#__PURE__*/React.createElement(CellContent, restProps);
315
+ return /*#__PURE__*/React.createElement(CellContent$1, restProps);
313
316
  }
314
317
  return /*#__PURE__*/React.createElement(reactResizable.Resizable, _defineProperty({
315
318
  onResize: onResize,
@@ -337,14 +340,15 @@ var ResizableHeaderCell = function ResizableHeaderCell(props) {
337
340
  }, "onResizeStop", function onResizeStop(e, data) {
338
341
  setIsResizing(false);
339
342
  _onResizeStop === null || _onResizeStop === void 0 || _onResizeStop(e, data);
340
- }), /*#__PURE__*/React.createElement(CellContent, restProps));
343
+ }), /*#__PURE__*/React.createElement(CellContent$1, restProps));
341
344
  };
345
+ var ResizableHeaderCell$1 = /*#__PURE__*/React.memo(ResizableHeaderCell);
342
346
 
343
347
  var _excluded$1 = ["className"];
344
348
  var ReorderableHeaderCell = function ReorderableHeaderCell(_ref) {
345
349
  var className = _ref.className,
346
350
  props = _objectWithoutProperties(_ref, _excluded$1);
347
- return /*#__PURE__*/React.createElement(CellContent, _extends({}, props, {
351
+ return /*#__PURE__*/React.createElement(CellContent$1, _extends({}, props, {
348
352
  className: classnames(className, "drag-handler")
349
353
  }));
350
354
  };
@@ -364,16 +368,16 @@ var getHeaderCell = function getHeaderCell(_ref) {
364
368
  var enableColumnResize = _ref.enableColumnResize,
365
369
  enableColumnReorder = _ref.enableColumnReorder;
366
370
  if (enableColumnReorder && enableColumnResize) return {
367
- cell: HeaderCell
371
+ cell: HeaderCell$1
368
372
  };
369
373
  if (enableColumnResize) return {
370
- cell: ResizableHeaderCell
374
+ cell: ResizableHeaderCell$1
371
375
  };
372
376
  if (enableColumnReorder) return {
373
377
  cell: ReorderableHeaderCell
374
378
  };
375
379
  return {
376
- cell: CellContent
380
+ cell: CellContent$1
377
381
  };
378
382
  };
379
383
  var isIncludedIn = function isIncludedIn(array1, array2) {
@@ -425,6 +429,11 @@ var getSortField = function getSortField(field) {
425
429
  }
426
430
  return neetoCist.camelToSnakeCase(field);
427
431
  };
432
+ var calculateRowsPerPage = function calculateRowsPerPage() {
433
+ var viewportHeight = window.innerHeight;
434
+ var rowsPerPage = Math.floor((viewportHeight - useRestoreScrollPosition.TABLE_PAGINATION_HEIGHT) / useRestoreScrollPosition.TABLE_ROW_HEIGHT * 3);
435
+ return Math.ceil(rowsPerPage / 10) * 10;
436
+ };
428
437
 
429
438
  function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
430
439
  function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$2(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
@@ -490,7 +499,7 @@ var useResizableColumns = function useResizableColumns(_ref) {
490
499
  sortOrder: getColumnSortOrder(col, sortedInfo),
491
500
  fixed: fixed,
492
501
  title: col.description ? function (props) {
493
- return /*#__PURE__*/React.createElement(TitleWithInfoIcon, _extends({}, props, {
502
+ return /*#__PURE__*/React.createElement(TitleWithInfoIcon$1, _extends({}, props, {
494
503
  description: col.description,
495
504
  title: col.title
496
505
  }));
@@ -590,6 +599,63 @@ var useColumns = function useColumns(_ref) {
590
599
  };
591
600
  };
592
601
 
602
+ var useScroll = function useScroll(_ref) {
603
+ var fixedHeight = _ref.fixedHeight,
604
+ enableColumnReorder = _ref.enableColumnReorder,
605
+ loading = _ref.loading,
606
+ otherProps = _ref.otherProps,
607
+ rowData = _ref.rowData,
608
+ pageSize = _ref.pageSize,
609
+ shouldShowSelectAllRowsCallout = _ref.shouldShowSelectAllRowsCallout,
610
+ shouldShowAllRowsSelectedCallout = _ref.shouldShowAllRowsSelectedCallout,
611
+ headerHeight = _ref.headerHeight;
612
+ var _useState = React.useState(0),
613
+ _useState2 = _slicedToArray(_useState, 2),
614
+ containerHeight = _useState2[0],
615
+ setContainerHeight = _useState2[1];
616
+ var resizeObserver = React.useRef(new ResizeObserver(function (_ref2) {
617
+ var _ref3 = _slicedToArray(_ref2, 1),
618
+ entry = _ref3[0];
619
+ return setContainerHeight(entry.contentRect.height);
620
+ }));
621
+ var scrollRef = React.useRef(null);
622
+ var tableRef = React.useCallback(function (table) {
623
+ scrollRef.current = table;
624
+ if (!fixedHeight) return;
625
+ var observer = resizeObserver.current;
626
+ if (table !== null) {
627
+ var _table$parentNode;
628
+ var targetNode = enableColumnReorder ? table === null || table === void 0 || (_table$parentNode = table.parentNode) === null || _table$parentNode === void 0 ? void 0 : _table$parentNode.parentNode : table === null || table === void 0 ? void 0 : table.parentNode;
629
+ observer.observe(targetNode);
630
+ } else if (observer) {
631
+ observer.disconnect();
632
+ }
633
+ }, [resizeObserver.current, fixedHeight, enableColumnReorder]);
634
+ var _useRestoreScrollPosi = useRestoreScrollPosition.useRestoreScrollPosition({
635
+ tableRef: tableRef,
636
+ scrollRef: scrollRef,
637
+ loading: loading
638
+ }),
639
+ handleScroll = _useRestoreScrollPosi.handleScroll;
640
+ var calculateTableContainerHeight = function calculateTableContainerHeight() {
641
+ var isPaginationVisible = otherProps.pagination !== false && rowData.length > pageSize;
642
+ var selectAllRowsCalloutHeight = 0;
643
+ if (shouldShowSelectAllRowsCallout || shouldShowAllRowsSelectedCallout) {
644
+ selectAllRowsCalloutHeight = getSelectAllRowsCalloutHeight();
645
+ }
646
+ return containerHeight - headerHeight - (isPaginationVisible ? useRestoreScrollPosition.TABLE_PAGINATION_HEIGHT : 0) - selectAllRowsCalloutHeight;
647
+ };
648
+ return {
649
+ tableRef: tableRef,
650
+ tableContainerRef: null,
651
+ handleScroll: handleScroll,
652
+ calculatedScroll: {
653
+ x: "max-content",
654
+ y: calculateTableContainerHeight()
655
+ }
656
+ };
657
+ };
658
+
593
659
  var useTableSort = function useTableSort() {
594
660
  var queryParams = useQueryParams.useQueryParams();
595
661
  var _useState = React.useState(function () {
@@ -618,12 +684,58 @@ var useTableSort = function useTableSort() {
618
684
  };
619
685
  };
620
686
 
621
- var _excluded = ["allowRowClick", "enableColumnResize", "enableColumnReorder", "enableColumnFreeze", "enableAddColumn", "className", "columnData", "currentPageNumber", "defaultPageSize", "handlePageChange", "loading", "onRowClick", "onRowSelect", "rowData", "totalCount", "selectedRowKeys", "fixedHeight", "paginationProps", "rowKey", "scroll", "rowSelection", "shouldDynamicallyRenderRowSize", "bordered", "onColumnUpdate", "components", "onColumnHide", "onColumnAdd", "onColumnDelete", "onChange", "onMoreActionClick", "bulkSelectAllRowsProps", "localStorageKeyPrefix"];
687
+ var useVirtualScroll = function useVirtualScroll(_ref) {
688
+ var otherProps = _ref.otherProps,
689
+ rowData = _ref.rowData,
690
+ pageSize = _ref.pageSize,
691
+ shouldShowSelectAllRowsCallout = _ref.shouldShowSelectAllRowsCallout,
692
+ shouldShowAllRowsSelectedCallout = _ref.shouldShowAllRowsSelectedCallout,
693
+ headerHeight = _ref.headerHeight;
694
+ var _useState = React.useState({
695
+ top: 0,
696
+ left: 0
697
+ }),
698
+ _useState2 = _slicedToArray(_useState, 2),
699
+ containerRect = _useState2[0],
700
+ setContainerRect = _useState2[1];
701
+ var tableContainerRef = React.useRef(null);
702
+ React.useEffect(function () {
703
+ var updateContainerRect = function updateContainerRect() {
704
+ if (!tableContainerRef.current) return;
705
+ var rect = tableContainerRef.current.getBoundingClientRect();
706
+ setContainerRect(rect);
707
+ };
708
+ updateContainerRect();
709
+ window.addEventListener("scroll", updateContainerRect);
710
+ window.addEventListener("resize", updateContainerRect);
711
+ return function () {
712
+ window.removeEventListener("scroll", updateContainerRect);
713
+ window.removeEventListener("resize", updateContainerRect);
714
+ };
715
+ }, []);
716
+ var calculateTableContainerHeight = function calculateTableContainerHeight() {
717
+ var isPaginationVisible = otherProps.pagination !== false && rowData.length > pageSize;
718
+ var selectAllRowsCalloutHeight = 0;
719
+ if (shouldShowSelectAllRowsCallout || shouldShowAllRowsSelectedCallout) {
720
+ selectAllRowsCalloutHeight = getSelectAllRowsCalloutHeight();
721
+ }
722
+ var containerHeight = window.innerHeight - containerRect.top;
723
+ return containerHeight - headerHeight - (isPaginationVisible ? useRestoreScrollPosition.TABLE_PAGINATION_HEIGHT : 0) - selectAllRowsCalloutHeight;
724
+ };
725
+ return {
726
+ tableRef: null,
727
+ tableContainerRef: tableContainerRef,
728
+ handleScroll: neetoCist.noop,
729
+ calculatedScroll: {
730
+ x: window.innerWidth - (containerRect === null || containerRect === void 0 ? void 0 : containerRect.left),
731
+ y: calculateTableContainerHeight()
732
+ }
733
+ };
734
+ };
735
+
736
+ var _excluded = ["allowRowClick", "enableColumnResize", "enableColumnReorder", "enableColumnFreeze", "enableAddColumn", "className", "columnData", "currentPageNumber", "defaultPageSize", "handlePageChange", "loading", "onRowClick", "onRowSelect", "rowData", "totalCount", "selectedRowKeys", "fixedHeight", "paginationProps", "rowKey", "scroll", "rowSelection", "shouldDynamicallyRenderRowSize", "bordered", "onColumnUpdate", "components", "onColumnHide", "onColumnAdd", "onColumnDelete", "onChange", "onMoreActionClick", "bulkSelectAllRowsProps", "localStorageKeyPrefix", "virtual"];
622
737
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
623
738
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
624
- var TABLE_PAGINATION_HEIGHT = 64;
625
- var TABLE_DEFAULT_HEADER_HEIGHT = 40;
626
- var TABLE_ROW_HEIGHT = 52;
627
739
  var Table = function Table(_ref) {
628
740
  var _ref$allowRowClick = _ref.allowRowClick,
629
741
  allowRowClick = _ref$allowRowClick === void 0 ? true : _ref$allowRowClick,
@@ -679,25 +791,27 @@ var Table = function Table(_ref) {
679
791
  onMoreActionClick = _ref.onMoreActionClick,
680
792
  bulkSelectAllRowsProps = _ref.bulkSelectAllRowsProps,
681
793
  localStorageKeyPrefix = _ref.localStorageKeyPrefix,
794
+ _ref$virtual = _ref.virtual,
795
+ virtual = _ref$virtual === void 0 ? false : _ref$virtual,
682
796
  otherProps = _objectWithoutProperties(_ref, _excluded);
683
797
  var _useTranslation = reactI18next.useTranslation(),
684
798
  i18n = _useTranslation.i18n;
685
- var _useState = React.useState(null),
799
+ var _useState = React.useState(useRestoreScrollPosition.TABLE_DEFAULT_HEADER_HEIGHT),
686
800
  _useState2 = _slicedToArray(_useState, 2),
687
- containerHeight = _useState2[0],
688
- setContainerHeight = _useState2[1];
689
- var _useState3 = React.useState(TABLE_DEFAULT_HEADER_HEIGHT),
801
+ headerHeight = _useState2[0],
802
+ setHeaderHeight = _useState2[1];
803
+ var _useState3 = React.useState(columnData),
690
804
  _useState4 = _slicedToArray(_useState3, 2),
691
- headerHeight = _useState4[0],
692
- setHeaderHeight = _useState4[1];
693
- var _useState5 = React.useState(columnData),
805
+ columns = _useState4[0],
806
+ setColumns = _useState4[1];
807
+ var _useState5 = React.useState(false),
694
808
  _useState6 = _slicedToArray(_useState5, 2),
695
- columns = _useState6[0],
696
- setColumns = _useState6[1];
697
- var _useState7 = React.useState(false),
809
+ bulkSelectedAllRows = _useState6[0],
810
+ setBulkSelectedAllRows = _useState6[1];
811
+ var _useState7 = React.useState({}),
698
812
  _useState8 = _slicedToArray(_useState7, 2),
699
- bulkSelectedAllRows = _useState8[0],
700
- setBulkSelectedAllRows = _useState8[1];
813
+ columnChanges = _useState8[0],
814
+ setColumnChanges = _useState8[1];
701
815
  var _useTableSort = useTableSort(),
702
816
  handleTableSortChange = _useTableSort.handleTableChange,
703
817
  sortedInfo = _useTableSort.sortedInfo,
@@ -708,34 +822,29 @@ var Table = function Table(_ref) {
708
822
  var history = reactRouterDom.useHistory();
709
823
  var headerRef = React.useRef();
710
824
  var tableOnChangeProps = React.useRef({});
711
- var resizeObserver = React.useRef(new ResizeObserver(function (_ref3) {
712
- var _ref4 = _slicedToArray(_ref3, 1),
713
- entry = _ref4[0];
714
- return setContainerHeight(entry.contentRect.height);
715
- }));
716
- var scrollRef = React.useRef(null);
717
- var tableRef = React.useCallback(function (table) {
718
- scrollRef.current = table;
719
- if (!fixedHeight) return;
720
- var observer = resizeObserver.current;
721
- if (table !== null) {
722
- var _table$parentNode;
723
- var targetNode = enableColumnReorder ? table === null || table === void 0 || (_table$parentNode = table.parentNode) === null || _table$parentNode === void 0 ? void 0 : _table$parentNode.parentNode : table === null || table === void 0 ? void 0 : table.parentNode;
724
- observer.observe(targetNode);
725
- } else if (observer) {
726
- observer.disconnect();
727
- }
728
- }, [resizeObserver.current, fixedHeight, enableColumnReorder]);
729
- var _useRestoreScrollPosi = useRestoreScrollPosition.useRestoreScrollPosition({
730
- tableRef: tableRef,
731
- scrollRef: scrollRef,
732
- loading: loading
733
- }),
734
- handleScroll = _useRestoreScrollPosi.handleScroll;
735
825
  useTimeout(function () {
736
- var headerHeight = headerRef.current ? headerRef.current.offsetHeight : TABLE_DEFAULT_HEADER_HEIGHT;
826
+ var headerHeight = headerRef.current ? headerRef.current.offsetHeight : useRestoreScrollPosition.TABLE_DEFAULT_HEADER_HEIGHT;
737
827
  setHeaderHeight(headerHeight);
738
828
  }, 10);
829
+ var handleColumnUpdateWithChanges = function handleColumnUpdateWithChanges(updatedColumns) {
830
+ var newChanges = {};
831
+ updatedColumns.forEach(function (col) {
832
+ var originalCol = columnData.find(function (c) {
833
+ return c.dataIndex === col.dataIndex;
834
+ });
835
+ var changes = {};
836
+ if (col.width && col.width !== (originalCol === null || originalCol === void 0 ? void 0 : originalCol.width)) {
837
+ changes.width = col.width;
838
+ }
839
+ if (Object.keys(changes).length > 0) {
840
+ newChanges[col.dataIndex] = changes;
841
+ }
842
+ });
843
+ setColumnChanges(function (prev) {
844
+ return _objectSpread(_objectSpread({}, prev), newChanges);
845
+ });
846
+ onColumnUpdate(updatedColumns);
847
+ };
739
848
  var _useColumns = useColumns({
740
849
  isReorderEnabled: enableColumnReorder,
741
850
  isResizeEnabled: enableColumnResize,
@@ -745,7 +854,7 @@ var Table = function Table(_ref) {
745
854
  columns: columns,
746
855
  columnData: columnData,
747
856
  setColumns: setColumns,
748
- onColumnUpdate: onColumnUpdate,
857
+ onColumnUpdate: handleColumnUpdateWithChanges,
749
858
  rowSelection: rowSelection,
750
859
  sortedInfo: sortedInfo,
751
860
  setSortedInfo: setSortedInfo,
@@ -779,6 +888,22 @@ var Table = function Table(_ref) {
779
888
  }, [selectedRowKeys, rowKey, rowData, totalCount, bulkSelectedAllRows]);
780
889
  var shouldShowSelectAllRowsCallout = bulkSelectAllRowsProps && showBulkSelectionCallout;
781
890
  var shouldShowAllRowsSelectedCallout = bulkSelectAllRowsProps && bulkSelectedAllRows;
891
+ var pageSize = shouldDynamicallyRenderRowSize ? calculateRowsPerPage() : paginationProps.pageSize || defaultPageSize;
892
+ var _ref3 = (virtual ? useVirtualScroll : useScroll)({
893
+ fixedHeight: fixedHeight,
894
+ enableColumnReorder: enableColumnReorder,
895
+ loading: loading,
896
+ otherProps: otherProps,
897
+ rowData: rowData,
898
+ pageSize: pageSize,
899
+ shouldShowSelectAllRowsCallout: shouldShowSelectAllRowsCallout,
900
+ shouldShowAllRowsSelectedCallout: shouldShowAllRowsSelectedCallout,
901
+ headerHeight: headerHeight
902
+ }),
903
+ tableRef = _ref3.tableRef,
904
+ tableContainerRef = _ref3.tableContainerRef,
905
+ handleScroll = _ref3.handleScroll,
906
+ calculatedScroll = _ref3.calculatedScroll;
782
907
  var handleRowChange = function handleRowChange(selectedRowKeys, selectedRows) {
783
908
  var tableWrapper = document.querySelector('[data-testid="table-wrapper"]');
784
909
  if (selectedRowKeys.length !== defaultPageSize) {
@@ -792,7 +917,8 @@ var Table = function Table(_ref) {
792
917
  };
793
918
  var rowSelectionProps = rowSelection ? _objectSpread(_objectSpread({
794
919
  type: "checkbox",
795
- preserveSelectedRowKeys: true
920
+ preserveSelectedRowKeys: true,
921
+ columnWidth: 48
796
922
  }, rowSelection), {}, {
797
923
  onChange: handleRowChange,
798
924
  selectedRowKeys: selectedRowKeys
@@ -814,20 +940,6 @@ var Table = function Table(_ref) {
814
940
  enableColumnReorder: enableColumnReorder
815
941
  })
816
942
  });
817
- var calculateRowsPerPage = function calculateRowsPerPage() {
818
- var viewportHeight = window.innerHeight;
819
- var rowsPerPage = Math.floor((viewportHeight - TABLE_PAGINATION_HEIGHT) / TABLE_ROW_HEIGHT * 3);
820
- return Math.ceil(rowsPerPage / 10) * 10;
821
- };
822
- var pageSize = shouldDynamicallyRenderRowSize ? calculateRowsPerPage() : paginationProps.pageSize || defaultPageSize;
823
- var calculateTableContainerHeight = function calculateTableContainerHeight() {
824
- var isPaginationVisible = otherProps.pagination !== false && rowData.length > pageSize;
825
- var selectAllRowsCalloutHeight = 0;
826
- if (shouldShowSelectAllRowsCallout || shouldShowAllRowsSelectedCallout) {
827
- selectAllRowsCalloutHeight = getSelectAllRowsCalloutHeight();
828
- }
829
- return containerHeight - headerHeight - (isPaginationVisible ? TABLE_PAGINATION_HEIGHT : 0) - selectAllRowsCalloutHeight;
830
- };
831
943
  var calculatePageSizeOptions = function calculatePageSizeOptions() {
832
944
  return neetoCist.dynamicArray(5, function (index) {
833
945
  return (index + 1) * pageSize;
@@ -867,8 +979,11 @@ var Table = function Table(_ref) {
867
979
  }, queryParams))) : handlePageChange(page, pageSize);
868
980
  }, [rowData]);
869
981
  React.useEffect(function () {
870
- return setColumns(columnData);
871
- }, [columnData]);
982
+ var mergedColumns = columnData.map(function (col) {
983
+ return _objectSpread(_objectSpread({}, col), columnChanges[col.dataIndex]);
984
+ });
985
+ setColumns(mergedColumns);
986
+ }, [columnData, columnChanges]);
872
987
  var neetoUIFontBold = parseInt(getComputedStyle(document.documentElement).getPropertyValue("--neeto-ui-font-bold"), 10);
873
988
  var renderTable = function renderTable() {
874
989
  return /*#__PURE__*/React.createElement(_ConfigProvider, {
@@ -935,6 +1050,7 @@ var Table = function Table(_ref) {
935
1050
  bordered: bordered,
936
1051
  locale: locale,
937
1052
  rowKey: rowKey,
1053
+ virtual: virtual,
938
1054
  columns: sortedColumns,
939
1055
  components: componentOverrides,
940
1056
  dataSource: rowData,
@@ -944,6 +1060,7 @@ var Table = function Table(_ref) {
944
1060
  },
945
1061
  ref: tableRef,
946
1062
  rowSelection: rowSelectionProps,
1063
+ scroll: _objectSpread(_objectSpread({}, calculatedScroll), scroll),
947
1064
  showSorterTooltip: false,
948
1065
  pagination: _objectSpread(_objectSpread({
949
1066
  hideOnSinglePage: true
@@ -959,10 +1076,6 @@ var Table = function Table(_ref) {
959
1076
  rowClassName: classnames("neeto-ui-table--row", {
960
1077
  "neeto-ui-table--row_hover": allowRowClick
961
1078
  }, [className]),
962
- scroll: _objectSpread({
963
- x: "max-content",
964
- y: calculateTableContainerHeight()
965
- }, scroll),
966
1079
  onChange: handleTableChange,
967
1080
  onScroll: handleScroll,
968
1081
  onHeaderRow: function onHeaderRow() {
@@ -983,7 +1096,12 @@ var Table = function Table(_ref) {
983
1096
  }
984
1097
  }, otherProps)));
985
1098
  };
986
- return enableColumnReorder ? /*#__PURE__*/React.createElement(ReactDragListView.DragColumn, dragProps, renderTable()) : renderTable();
1099
+ var renderTableVirtual = function renderTableVirtual() {
1100
+ return virtual ? /*#__PURE__*/React.createElement("div", {
1101
+ ref: tableContainerRef
1102
+ }, renderTable()) : renderTable();
1103
+ };
1104
+ return enableColumnReorder ? /*#__PURE__*/React.createElement(ReactDragListView.DragColumn, dragProps, renderTableVirtual()) : renderTableVirtual();
987
1105
  };
988
1106
 
989
1107
  module.exports = Table;