@economic/taco 2.46.9-alpha.1 → 2.47.0-server-1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (117) hide show
  1. package/dist/components/AlertDialog/AlertDialog.d.ts +1 -2
  2. package/dist/components/AlertDialog/components/Content.d.ts +0 -2
  3. package/dist/components/Dialog/components/Content.d.ts +3 -3
  4. package/dist/components/Menu/components/Content.d.ts +1 -1
  5. package/dist/components/Menu/components/SubMenu.d.ts +1 -1
  6. package/dist/components/Popover/Popover.d.ts +1 -1
  7. package/dist/components/Report/Report.d.ts +1 -1
  8. package/dist/components/SearchInput2/SearchInput2.d.ts +2 -0
  9. package/dist/components/Table3/components/Row/Editing/CreateNewRow.d.ts +1 -2
  10. package/dist/components/Table3/components/Row/Editing/TemporaryRow.d.ts +1 -0
  11. package/dist/components/Table3/features/useEditingState.d.ts +11 -11
  12. package/dist/components/Table3/features/useTableEditing.d.ts +13 -13
  13. package/dist/components/Table3/util/editing.d.ts +3 -0
  14. package/dist/esm/index.css +2 -2
  15. package/dist/esm/node_modules/babel-plugin-transform-async-to-promises/helpers.mjs.js +17 -17
  16. package/dist/esm/node_modules/babel-plugin-transform-async-to-promises/helpers.mjs.js.map +1 -1
  17. package/dist/esm/packages/taco/src/components/AlertDialog/AlertDialog.js +1 -2
  18. package/dist/esm/packages/taco/src/components/AlertDialog/AlertDialog.js.map +1 -1
  19. package/dist/esm/packages/taco/src/components/AlertDialog/components/Content.js +2 -7
  20. package/dist/esm/packages/taco/src/components/AlertDialog/components/Content.js.map +1 -1
  21. package/dist/esm/packages/taco/src/components/Dialog/components/Content.js +1 -2
  22. package/dist/esm/packages/taco/src/components/Dialog/components/Content.js.map +1 -1
  23. package/dist/esm/packages/taco/src/components/Drawer/components/Content.js +0 -1
  24. package/dist/esm/packages/taco/src/components/Drawer/components/Content.js.map +1 -1
  25. package/dist/esm/packages/taco/src/components/Popover/Popover.js.map +1 -1
  26. package/dist/esm/packages/taco/src/components/SearchInput2/SearchInput2.js +6 -3
  27. package/dist/esm/packages/taco/src/components/SearchInput2/SearchInput2.js.map +1 -1
  28. package/dist/esm/packages/taco/src/components/Select/Select.js +1 -2
  29. package/dist/esm/packages/taco/src/components/Select/Select.js.map +1 -1
  30. package/dist/esm/packages/taco/src/components/Table/hooks/plugins/useRowActions.js +1 -1
  31. package/dist/esm/packages/taco/src/components/Table3/Table3.js +14 -4
  32. package/dist/esm/packages/taco/src/components/Table3/Table3.js.map +1 -1
  33. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/EditingControlCell.js +1 -1
  34. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/EditingControlCell.js.map +1 -1
  35. package/dist/esm/packages/taco/src/components/Table3/components/Editing/Alert.js +14 -9
  36. package/dist/esm/packages/taco/src/components/Table3/components/Editing/Alert.js.map +1 -1
  37. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/CreateNewRow.js +2 -4
  38. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/CreateNewRow.js.map +1 -1
  39. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/TemporaryRow.js +5 -4
  40. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/TemporaryRow.js.map +1 -1
  41. package/dist/esm/packages/taco/src/components/Table3/features/useEditingState.js +32 -51
  42. package/dist/esm/packages/taco/src/components/Table3/features/useEditingState.js.map +1 -1
  43. package/dist/esm/packages/taco/src/components/Table3/features/useTableEditing.js +5 -3
  44. package/dist/esm/packages/taco/src/components/Table3/features/useTableEditing.js.map +1 -1
  45. package/dist/esm/packages/taco/src/components/Table3/listeners/useTableEditingListener.js +15 -12
  46. package/dist/esm/packages/taco/src/components/Table3/listeners/useTableEditingListener.js.map +1 -1
  47. package/dist/esm/packages/taco/src/components/Table3/util/editing.js +9 -1
  48. package/dist/esm/packages/taco/src/components/Table3/util/editing.js.map +1 -1
  49. package/dist/esm/packages/taco/src/primitives/Table/Core/Table.js +2 -1
  50. package/dist/esm/packages/taco/src/primitives/Table/Core/Table.js.map +1 -1
  51. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Expansion.js +4 -0
  52. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Expansion.js.map +1 -1
  53. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Selection.js +7 -4
  54. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Selection.js.map +1 -1
  55. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Footer/Footer.js +7 -2
  56. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Footer/Footer.js.map +1 -1
  57. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Footer/Summary.js +7 -5
  58. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Footer/Summary.js.map +1 -1
  59. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.js +24 -22
  60. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.js.map +1 -1
  61. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/Row.js +41 -4
  62. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/Row.js.map +1 -1
  63. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Print/Print.js +3 -1
  64. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Print/Print.js.map +1 -1
  65. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Search/Search.js +26 -3
  66. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Search/Search.js.map +1 -1
  67. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableGlobalShortcuts.js +1 -1
  68. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableGlobalShortcuts.js.map +1 -1
  69. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableRenderer.js +36 -9
  70. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableRenderer.js.map +1 -1
  71. package/dist/esm/packages/taco/src/primitives/Table/Core/useTable.js +1 -1
  72. package/dist/esm/packages/taco/src/primitives/Table/Core/useTable.js.map +1 -1
  73. package/dist/esm/packages/taco/src/primitives/Table/types.js.map +1 -1
  74. package/dist/esm/packages/taco/src/primitives/Table/useTableDataLoader.js +5 -7
  75. package/dist/esm/packages/taco/src/primitives/Table/useTableDataLoader.js.map +1 -1
  76. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowActive.js +1 -1
  77. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowActive.js.map +1 -1
  78. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowExpansion.js +2 -1
  79. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowExpansion.js.map +1 -1
  80. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableSearch.js +3 -2
  81. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableSearch.js.map +1 -1
  82. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableServerLoading.js +4 -2
  83. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableServerLoading.js.map +1 -1
  84. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableFilterListener.js +3 -1
  85. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableFilterListener.js.map +1 -1
  86. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.js +4 -4
  87. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.js.map +1 -1
  88. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSearchListener.js +14 -13
  89. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSearchListener.js.map +1 -1
  90. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableServerLoadingListener.js +7 -3
  91. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableServerLoadingListener.js.map +1 -1
  92. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/useTableManager.js +4 -4
  93. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/useTableManager.js.map +1 -1
  94. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/columns.js +4 -1
  95. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/columns.js.map +1 -1
  96. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/presets.js +7 -1
  97. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/presets.js.map +1 -1
  98. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js +6 -0
  99. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js.map +1 -1
  100. package/dist/hooks/useLazyDebouncedEffect.d.ts +2 -0
  101. package/dist/index.css +2 -2
  102. package/dist/primitives/Table/Core/Table.d.ts +1 -0
  103. package/dist/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.d.ts +2 -2
  104. package/dist/primitives/Table/Core/components/Row/Row.d.ts +2 -0
  105. package/dist/primitives/Table/Core/features/useTableRenderer.d.ts +1 -1
  106. package/dist/primitives/Table/types.d.ts +11 -6
  107. package/dist/primitives/Table/useTableDataLoader2.d.ts +24 -0
  108. package/dist/primitives/Table/useTableManager/features/useTableRowExpansion.d.ts +2 -1
  109. package/dist/primitives/Table/useTableManager/features/useTableSearch.d.ts +4 -2
  110. package/dist/primitives/Table/useTableManager/features/useTableServerLoading.d.ts +3 -1
  111. package/dist/primitives/Table/useTableManager/listeners/useTableSearchListener.d.ts +1 -2
  112. package/dist/primitives/Table/useTableManager/util/columns.d.ts +2 -1
  113. package/dist/taco.cjs.development.js +365 -240
  114. package/dist/taco.cjs.development.js.map +1 -1
  115. package/dist/taco.cjs.production.min.js +1 -1
  116. package/dist/taco.cjs.production.min.js.map +1 -1
  117. package/package.json +16 -17
@@ -31,12 +31,12 @@ var reactPortal = require('@radix-ui/react-portal');
31
31
  var reactTable = require('@tanstack/react-table');
32
32
  var get = _interopDefault(require('lodash/get'));
33
33
  var reactVirtual = require('@tanstack/react-virtual');
34
- var reactIntersectionObserver = require('react-intersection-observer');
35
34
  var core = require('@dnd-kit/core');
36
35
  var modifiers = require('@dnd-kit/modifiers');
37
36
  var SortablePrimitive = require('@dnd-kit/sortable');
38
37
  var utilities = require('@dnd-kit/utilities');
39
38
  var reactTable$1 = require('react-table');
39
+ var reactIntersectionObserver = require('react-intersection-observer');
40
40
  var reactWindow = require('react-window');
41
41
  var InfiniteLoader = _interopDefault(require('react-window-infinite-loader'));
42
42
  var set = _interopDefault(require('lodash/set'));
@@ -3946,11 +3946,6 @@ const Title = /*#__PURE__*/React.forwardRef(function AlertDialogTitle(props, ref
3946
3946
  className: "mr-2"
3947
3947
  })) : undefined, props.children);
3948
3948
  });
3949
- const Description = /*#__PURE__*/React.forwardRef(function AlertDialogDescription(props, ref) {
3950
- return /*#__PURE__*/React.createElement(AlertDialogPrimitive.Description, Object.assign({
3951
- ref: ref
3952
- }, props));
3953
- });
3954
3949
  const Content = /*#__PURE__*/React.forwardRef(function AlertDialogContent(props, ref) {
3955
3950
  const className = cn('p-6', getDialogPositionClassnames(), getDialogStylingClassnames(), getDialogSizeClassnames('dialog'));
3956
3951
  return /*#__PURE__*/React.createElement(AlertDialogPrimitive.Portal, null, /*#__PURE__*/React.createElement(AlertDialogPrimitive.Overlay, {
@@ -3985,7 +3980,6 @@ const AlertDialog = /*#__PURE__*/React.forwardRef(function AlertDialog(props, re
3985
3980
  });
3986
3981
  AlertDialog.Trigger = Trigger;
3987
3982
  AlertDialog.Content = Content;
3988
- AlertDialog.Description = Description;
3989
3983
  AlertDialog.Title = Title;
3990
3984
  AlertDialog.Cancel = Cancel;
3991
3985
  AlertDialog.Action = Action;
@@ -6625,7 +6619,7 @@ const useDraggable = ref => {
6625
6619
  };
6626
6620
 
6627
6621
  const Title$1 = /*#__PURE__*/React.forwardRef(function DialogTitle(props, ref) {
6628
- const className = cn(!props.asChild ? 'text-center' : '', props.className);
6622
+ const className = cn('text-center', props.className);
6629
6623
  return /*#__PURE__*/React.createElement(DialogPrimitive.Title, Object.assign({}, props, {
6630
6624
  className: className,
6631
6625
  ref: ref
@@ -6698,7 +6692,6 @@ const Content$4 = /*#__PURE__*/React.forwardRef(function DialogContent(props, re
6698
6692
  return /*#__PURE__*/React.createElement(DialogPrimitive.Portal, null, /*#__PURE__*/React.createElement(DialogPrimitive.Overlay, {
6699
6693
  asChild: true
6700
6694
  }, /*#__PURE__*/React.createElement(Backdrop, null, /*#__PURE__*/React.createElement(DialogPrimitive.Content, Object.assign({}, props, {
6701
- "aria-describedby": undefined,
6702
6695
  className: className,
6703
6696
  onEscapeKeyDown: handleEscapeKeyDown,
6704
6697
  onInteractOutside: handleInteractOutside,
@@ -7226,7 +7219,6 @@ const DrawerContent = /*#__PURE__*/React__default.forwardRef(function Content(pr
7226
7219
  return focusTrap ? (/*#__PURE__*/React__default.createElement(DialogPrimitive.Content, Object.assign({
7227
7220
  forceMount: true
7228
7221
  }, otherProps, {
7229
- "aria-describedby": undefined,
7230
7222
  className: contentClassName,
7231
7223
  onEscapeKeyDown: handleEscapeKeyDown,
7232
7224
  onInteractOutside: variant === 'overlay' ? undefined : event => event.preventDefault(),
@@ -9350,8 +9342,7 @@ const BaseSelect = /*#__PURE__*/React.forwardRef(function BaseSelect(props, ref)
9350
9342
  name: popover.open ? 'chevron-up' : 'chevron-down'
9351
9343
  }))), /*#__PURE__*/React.createElement(PopoverPrimitive.Portal, null, /*#__PURE__*/React.createElement(PopoverPrimitive.Content, {
9352
9344
  align: "start",
9353
- sideOffset: 4,
9354
- onEscapeKeyDown: event => event.preventDefault()
9345
+ sideOffset: 4
9355
9346
  }, props.multiselect ? /*#__PURE__*/React.createElement(MultiListbox, Object.assign({}, commonListboxProps)) : /*#__PURE__*/React.createElement(Listbox, Object.assign({}, commonListboxProps)))), /*#__PURE__*/React.createElement("input", Object.assign({}, input, {
9356
9347
  className: "hidden",
9357
9348
  type: "text"
@@ -10196,6 +10187,9 @@ function unfreezeAllExternalColumns(leftPinnedState) {
10196
10187
  function freezeUptoExternalColumn(index, columns) {
10197
10188
  return columns.slice(0, index + 1);
10198
10189
  }
10190
+ function getHiddenColumns(columnVisibility = {}) {
10191
+ return Object.keys(columnVisibility).filter(c => columnVisibility[c] === false);
10192
+ }
10199
10193
 
10200
10194
  function getSettings(table) {
10201
10195
  const meta = table.options.meta;
@@ -10477,6 +10471,12 @@ function configureReactTableOptions(options, props, localization) {
10477
10471
  var _column$columnDef$met;
10478
10472
  return ((_column$columnDef$met = column.columnDef.meta) === null || _column$columnDef$met === void 0 ? void 0 : _column$columnDef$met.enableSearch) !== false && column.getIsVisible();
10479
10473
  };
10474
+ // enter controlled search mode (controlled could be local state, but usually the server)
10475
+ if (props.onChangeSearch) {
10476
+ if (props._experimentalDataLoader2) {
10477
+ tableOptions.manualFiltering = true;
10478
+ }
10479
+ }
10480
10480
  }
10481
10481
  if (tableOptions.enableSorting) {
10482
10482
  // enter controlled sort mode (controlled could be local state, but usually the server)
@@ -10534,6 +10534,7 @@ const DEFAULT_PRESET = {
10534
10534
  enableColumnHiding: false,
10535
10535
  enableColumnResizing: false,
10536
10536
  enableRowExpansion: false,
10537
+ enableRowExpansionAll: true,
10537
10538
  enableRowSelection: false,
10538
10539
  // custom -- common between all table types
10539
10540
  enableColumnOrdering: false,
@@ -10560,6 +10561,7 @@ const presets = {
10560
10561
  enableColumnHiding: true,
10561
10562
  enableColumnResizing: true,
10562
10563
  enableRowExpansion: true,
10564
+ enableRowExpansionAll: true,
10563
10565
  enableRowSelection: true,
10564
10566
  // custom -- common between all table types
10565
10567
  enableColumnOrdering: true,
@@ -10585,6 +10587,7 @@ const presets = {
10585
10587
  enableColumnHiding: false,
10586
10588
  enableColumnResizing: false,
10587
10589
  enableRowExpansion: true,
10590
+ enableRowExpansionAll: true,
10588
10591
  enableRowSelection: true,
10589
10592
  // custom -- common between all table types
10590
10593
  enableColumnOrdering: false,
@@ -10610,6 +10613,7 @@ const presets = {
10610
10613
  enableColumnHiding: false,
10611
10614
  enableColumnResizing: false,
10612
10615
  enableRowExpansion: true,
10616
+ enableRowExpansionAll: true,
10613
10617
  enableRowSelection: false,
10614
10618
  // custom -- common between all table types
10615
10619
  enableColumnOrdering: false,
@@ -10627,7 +10631,7 @@ const presets = {
10627
10631
  }
10628
10632
  };
10629
10633
  function getTableFeaturePreset(props) {
10630
- var _props$enableRowActio, _props$enableRowClick, _props$enableRowDrag, _props$enableRowDrop, _props$enableRowGoto, _props$enableRowExpan, _props$enableRowSelec, _props$enableFilterin, _props$enableSearch, _props$enableSorting, _props$enableColumnFr, _props$enableColumnHi, _props$enableColumnRe, _props$enableColumnOr, _props$enableFontSize, _props$enableFooter, _props$enablePrinting, _props$enableRowActiv, _props$rowActions, _props$enableRowHeigh, _props$enableSaveSett;
10634
+ var _props$enableRowActio, _props$enableRowClick, _props$enableRowDrag, _props$enableRowDrop, _props$enableRowGoto, _props$enableRowExpan, _props$enableRowExpan2, _props$enableRowSelec, _props$enableFilterin, _props$enableSearch, _props$enableSorting, _props$enableColumnFr, _props$enableColumnHi, _props$enableColumnRe, _props$enableColumnOr, _props$enableFontSize, _props$enableFooter, _props$enablePrinting, _props$enableRowActiv, _props$rowActions, _props$enableRowHeigh, _props$enableSaveSett;
10631
10635
  const presetOptions = props.preset ? presets[props.preset] : DEFAULT_PRESET;
10632
10636
  const enableRowActions = (_props$enableRowActio = props.enableRowActions) !== null && _props$enableRowActio !== void 0 ? _props$enableRowActio : presetOptions.enableRowActions;
10633
10637
  const enableRowClick = (_props$enableRowClick = props.enableRowClick) !== null && _props$enableRowClick !== void 0 ? _props$enableRowClick : presetOptions.enableRowClick;
@@ -10635,6 +10639,7 @@ function getTableFeaturePreset(props) {
10635
10639
  const enableRowDrop = (_props$enableRowDrop = props.enableRowDrop) !== null && _props$enableRowDrop !== void 0 ? _props$enableRowDrop : presetOptions.enableRowDrop;
10636
10640
  const enableRowGoto = (_props$enableRowGoto = props.enableRowGoto) !== null && _props$enableRowGoto !== void 0 ? _props$enableRowGoto : presetOptions.enableRowGoto;
10637
10641
  const enableRowExpansion = (_props$enableRowExpan = props.enableRowExpansion) !== null && _props$enableRowExpan !== void 0 ? _props$enableRowExpan : presetOptions.enableRowExpansion;
10642
+ const enableRowExpansionAll = (_props$enableRowExpan2 = props.enableRowExpansionAll) !== null && _props$enableRowExpan2 !== void 0 ? _props$enableRowExpan2 : presetOptions.enableRowExpansionAll;
10638
10643
  const enableRowSelection = (_props$enableRowSelec = props.enableRowSelection) !== null && _props$enableRowSelec !== void 0 ? _props$enableRowSelec : presetOptions.enableRowSelection;
10639
10644
  return {
10640
10645
  // react-table built-in
@@ -10659,6 +10664,7 @@ function getTableFeaturePreset(props) {
10659
10664
  enableRowDrag: enableRowDrag && !!props.onRowDrag,
10660
10665
  enableRowDrop: enableRowDrop && !!props.onRowDrop,
10661
10666
  enableRowGoto: enableRowGoto && !!props.onRowGoto,
10667
+ enableRowExpansionAll: enableRowExpansion && enableRowExpansionAll && !!props.rowExpansionRenderer,
10662
10668
  enableRowHeight: (_props$enableRowHeigh = props.enableRowHeight) !== null && _props$enableRowHeigh !== void 0 ? _props$enableRowHeigh : presetOptions.enableRowHeight,
10663
10669
  enableSaveSettings: (_props$enableSaveSett = props.enableSaveSettings) !== null && _props$enableSaveSett !== void 0 ? _props$enableSaveSett : presetOptions.enableSaveSettings
10664
10670
  };
@@ -10854,7 +10860,7 @@ function useTableRowActive(isEnabled = false, initialRowActiveIndex) {
10854
10860
  return index;
10855
10861
  });
10856
10862
  }
10857
- }, [rowActiveIndex, length, isEnabled]);
10863
+ }, [rowActiveIndex, isEnabled]);
10858
10864
  return {
10859
10865
  isEnabled,
10860
10866
  rowActiveIndex,
@@ -10903,9 +10909,10 @@ function useTableRowClick(isEnabled = false, onRowClick) {
10903
10909
  };
10904
10910
  }
10905
10911
 
10906
- function useTableRowExpansion(isEnabled = false, rowExpansionRenderer) {
10912
+ function useTableRowExpansion(isEnabled = false, canExpandAll = true, rowExpansionRenderer) {
10907
10913
  return {
10908
10914
  isEnabled,
10915
+ canExpandAll,
10909
10916
  rowExpansionRenderer: isEnabled ? rowExpansionRenderer : undefined
10910
10917
  };
10911
10918
  }
@@ -10969,7 +10976,7 @@ function useTableRowSelection(isEnabled = false) {
10969
10976
  - Highlighting search results, this is custom and only uses the state part of globalFilter (to store the search query)
10970
10977
  - Filtering of results, this is essentially the built in filtering, and relies on enableGlobalFilter being on or off
10971
10978
  */
10972
- function useTableSearch(isEnabled = false, defaultEnableGlobalFilter = false) {
10979
+ function useTableSearch(isEnabled = false, onChangeSearch, defaultEnableGlobalFilter = false) {
10973
10980
  const [enableGlobalFilter, _setEnableGlobalFilter] = React__default.useState(defaultEnableGlobalFilter);
10974
10981
  function setEnableGlobalFilter(enabled, instance) {
10975
10982
  _setEnableGlobalFilter(enabled);
@@ -10994,18 +11001,19 @@ function useTableSearch(isEnabled = false, defaultEnableGlobalFilter = false) {
10994
11001
  highlightedColumnIndexes,
10995
11002
  setHighlightedColumnIndexes,
10996
11003
  currentHighlightColumnIndex,
10997
- setCurrentHighlightColumnIndex
11004
+ setCurrentHighlightColumnIndex,
11005
+ handleSearch: isEnabled && typeof onChangeSearch === 'function' ? onChangeSearch : undefined
10998
11006
  };
10999
11007
  }
11000
11008
 
11001
11009
  // A type of promise-like that resolves synchronously and supports only one observer
11002
- const _Pact = /*#__PURE__*/function () {
11010
+ var _Pact = /*#__PURE__*/function () {
11003
11011
  function _Pact() {}
11004
11012
  _Pact.prototype.then = function (onFulfilled, onRejected) {
11005
- const result = new _Pact();
11006
- const state = this.s;
11013
+ var result = new _Pact();
11014
+ var state = this.s;
11007
11015
  if (state) {
11008
- const callback = state & 1 ? onFulfilled : onRejected;
11016
+ var callback = state & 1 ? onFulfilled : onRejected;
11009
11017
  if (callback) {
11010
11018
  try {
11011
11019
  _settle(result, 1, callback(this.v));
@@ -11019,7 +11027,7 @@ const _Pact = /*#__PURE__*/function () {
11019
11027
  }
11020
11028
  this.o = function (_this) {
11021
11029
  try {
11022
- const value = _this.v;
11030
+ var value = _this.v;
11023
11031
  if (_this.s & 1) {
11024
11032
  _settle(result, 1, onFulfilled ? onFulfilled(value) : value);
11025
11033
  } else if (onRejected) {
@@ -11056,7 +11064,7 @@ function _settle(pact, state, value) {
11056
11064
  }
11057
11065
  pact.s = state;
11058
11066
  pact.v = value;
11059
- const observer = pact.o;
11067
+ var observer = pact.o;
11060
11068
  if (observer) {
11061
11069
  observer(pact);
11062
11070
  }
@@ -11096,17 +11104,13 @@ function _forTo(array, body, check) {
11096
11104
  _cycle();
11097
11105
  return pact;
11098
11106
  }
11099
- const _iteratorSymbol = /*#__PURE__*/typeof Symbol !== "undefined" ? Symbol.iterator || (Symbol.iterator = /*#__PURE__*/Symbol("Symbol.iterator")) : "@@iterator";
11107
+ var _iteratorSymbol = /*#__PURE__*/typeof Symbol !== "undefined" ? Symbol.iterator || (Symbol.iterator = /*#__PURE__*/Symbol("Symbol.iterator")) : "@@iterator";
11100
11108
 
11101
11109
  // Asynchronously iterate through an object's values
11102
11110
  // Uses for...of if the runtime supports it, otherwise iterates until length on a copy
11103
11111
  function _forOf(target, body, check) {
11104
11112
  if (typeof target[_iteratorSymbol] === "function") {
11105
- var iterator = target[_iteratorSymbol](),
11106
- step,
11107
- pact,
11108
- reject;
11109
- function _cycle(result) {
11113
+ var _cycle = function _cycle(result) {
11110
11114
  try {
11111
11115
  while (!(step = iterator.next()).done && (!check || !check())) {
11112
11116
  result = body(step.value);
@@ -11127,13 +11131,17 @@ function _forOf(target, body, check) {
11127
11131
  } catch (e) {
11128
11132
  _settle(pact || (pact = new _Pact()), 2, e);
11129
11133
  }
11130
- }
11134
+ };
11135
+ var iterator = target[_iteratorSymbol](),
11136
+ step,
11137
+ pact,
11138
+ reject;
11131
11139
  _cycle();
11132
- if (iterator.return) {
11133
- var _fixup = function (value) {
11140
+ if (iterator["return"]) {
11141
+ var _fixup = function _fixup(value) {
11134
11142
  try {
11135
11143
  if (!step.done) {
11136
- iterator.return();
11144
+ iterator["return"]();
11137
11145
  }
11138
11146
  } catch (e) {}
11139
11147
  return value;
@@ -11160,7 +11168,7 @@ function _forOf(target, body, check) {
11160
11168
  return body(values[i]);
11161
11169
  }, check);
11162
11170
  }
11163
- const _asyncIteratorSymbol = /*#__PURE__*/typeof Symbol !== "undefined" ? Symbol.asyncIterator || (Symbol.asyncIterator = /*#__PURE__*/Symbol("Symbol.asyncIterator")) : "@@asyncIterator";
11171
+ var _asyncIteratorSymbol = /*#__PURE__*/typeof Symbol !== "undefined" ? Symbol.asyncIterator || (Symbol.asyncIterator = /*#__PURE__*/Symbol("Symbol.asyncIterator")) : "@@asyncIterator";
11164
11172
 
11165
11173
  // Asynchronously call a function and send errors to recovery continuation
11166
11174
  function _catch(body, recover) {
@@ -11241,7 +11249,7 @@ function useTableDataLoader(fetchPage, fetchAll, options = {
11241
11249
  length.current = response.length;
11242
11250
  nextData = Array(length.current).fill(undefined);
11243
11251
  } else {
11244
- nextData = [...currentData];
11252
+ nextData = [].concat(currentData);
11245
11253
  }
11246
11254
  const startIndex = pageIndex * pageSize;
11247
11255
  nextData.splice(startIndex, pageSize, ...response.data);
@@ -11307,13 +11315,12 @@ function useTableDataLoader(fetchPage, fetchAll, options = {
11307
11315
  try {
11308
11316
  if (_lastUsedSearch.current) {
11309
11317
  // we're searching, which means we need to refetch all with the correct sorting applied
11310
- loadAll(sorting, _lastUsedFilters.current);
11318
+ return loadAll(sorting, _lastUsedFilters.current);
11311
11319
  } else {
11312
11320
  var _lastUsedPageIndex$cu2;
11313
11321
  // load the last page that we scrolled to
11314
- loadPage((_lastUsedPageIndex$cu2 = _lastUsedPageIndex.current) !== null && _lastUsedPageIndex$cu2 !== void 0 ? _lastUsedPageIndex$cu2 : 0, sorting, _lastUsedFilters.current);
11322
+ return loadPage((_lastUsedPageIndex$cu2 = _lastUsedPageIndex.current) !== null && _lastUsedPageIndex$cu2 !== void 0 ? _lastUsedPageIndex$cu2 : 0, sorting, _lastUsedFilters.current);
11315
11323
  }
11316
- return Promise.resolve();
11317
11324
  } catch (e) {
11318
11325
  return Promise.reject(e);
11319
11326
  }
@@ -11322,13 +11329,12 @@ function useTableDataLoader(fetchPage, fetchAll, options = {
11322
11329
  try {
11323
11330
  if (_lastUsedSearch.current) {
11324
11331
  // we're searching, which means we need to refetch all with the correct sorting applied
11325
- loadAll(_lastUsedSorting.current, filters);
11332
+ return loadAll(_lastUsedSorting.current, filters);
11326
11333
  } else {
11327
11334
  var _lastUsedPageIndex$cu3;
11328
11335
  // load the last page that we scrolled to
11329
- loadPage((_lastUsedPageIndex$cu3 = _lastUsedPageIndex.current) !== null && _lastUsedPageIndex$cu3 !== void 0 ? _lastUsedPageIndex$cu3 : 0, _lastUsedSorting.current, filters);
11336
+ return loadPage((_lastUsedPageIndex$cu3 = _lastUsedPageIndex.current) !== null && _lastUsedPageIndex$cu3 !== void 0 ? _lastUsedPageIndex$cu3 : 0, _lastUsedSorting.current, filters);
11330
11337
  }
11331
- return Promise.resolve();
11332
11338
  } catch (e) {
11333
11339
  return Promise.reject(e);
11334
11340
  }
@@ -11356,7 +11362,7 @@ function useTableDataLoader(fetchPage, fetchAll, options = {
11356
11362
  }, invalidate];
11357
11363
  }
11358
11364
 
11359
- function useTableServerLoading(loadPage, loadAll, pageSize = DEFAULT_PAGE_SIZE) {
11365
+ function useTableServerLoading(loadPage, loadAll, pages, pageSize = DEFAULT_PAGE_SIZE, _experimentalDataLoader2 = false) {
11360
11366
  const isEnabled = !!loadPage && !!loadAll;
11361
11367
  const [isReady, setReady] = React__default.useState(false);
11362
11368
  const [loadAllStatus, setLoadedStatus] = React__default.useState(exports.TableServerLoadAllState.Incomplete);
@@ -11411,13 +11417,15 @@ function useTableServerLoading(loadPage, loadAll, pageSize = DEFAULT_PAGE_SIZE)
11411
11417
  };
11412
11418
  }
11413
11419
  return {
11420
+ pages,
11414
11421
  isEnabled,
11415
11422
  isReady,
11416
11423
  loadPage: _loadPage,
11417
11424
  loadAll: _loadAll,
11418
11425
  loadAllIfNeeded: _loadAllIfNeeded,
11419
11426
  loadAllStatus,
11420
- pageSize
11427
+ pageSize,
11428
+ _experimentalDataLoader2
11421
11429
  };
11422
11430
  }
11423
11431
 
@@ -11514,7 +11522,8 @@ function useTableFilterListener(table, onFilter) {
11514
11522
  const columnFilters = table.getState().columnFilters;
11515
11523
  useLazyEffect(() => {
11516
11524
  if (table.options.enableColumnFilters && typeof onFilter === 'function') {
11517
- onFilter(columnFilters);
11525
+ const hiddenColumns = getHiddenColumns(table.getState().columnVisibility);
11526
+ onFilter(columnFilters, hiddenColumns);
11518
11527
  if (table.options.enableRowSelection) {
11519
11528
  table.resetRowSelection();
11520
11529
  }
@@ -11572,11 +11581,12 @@ function useTableRowHeightListener(table) {
11572
11581
  }
11573
11582
 
11574
11583
  function useTableRowSelectionListener(table, onRowSelect) {
11584
+ // note that the selected row model may not contain all rows in state when using server loading
11575
11585
  const rows = table.getSelectedRowModel().flatRows;
11576
- const rowSelection = React__default.useMemo(() => rows.map(row => row.original), [rows]);
11586
+ const state = table.getState().rowSelection;
11577
11587
  useLazyEffect(() => {
11578
11588
  if (table.options.enableRowSelection && typeof onRowSelect === 'function') {
11579
- onRowSelect(rowSelection);
11589
+ onRowSelect(rows.map(row => row.original), Object.keys(state));
11580
11590
  }
11581
11591
  /**
11582
11592
  * Casting to a boolean, since enableRowSelection can be a function,
@@ -11584,33 +11594,33 @@ function useTableRowSelectionListener(table, onRowSelect) {
11584
11594
  * we only need to know if selection was enabled or disabled, because enableRowSelection function
11585
11595
  * will be applied directly to particular rows.
11586
11596
  */
11587
- }, [!!table.options.enableRowSelection, JSON.stringify(rowSelection)]);
11597
+ }, [!!table.options.enableRowSelection, state]);
11588
11598
  }
11589
11599
 
11590
- function useTableSearchListener(table, onChangeSearch) {
11600
+ function useTableSearchListener(table) {
11591
11601
  const meta = table.options.meta;
11592
11602
  const localization = useLocalization();
11593
- const visibleColumns = table.getVisibleFlatColumns();
11603
+ const hiddenColumns = getHiddenColumns(table.getState().columnVisibility);
11604
+ const query = table.getState().globalFilter;
11594
11605
  // Need to re-run search when columns are getting shown/hidden.
11595
- React__default.useEffect(() => {
11596
- if (meta.search.isEnabled && visibleColumns.length > 0) {
11597
- const currentFilter = table.getState().globalFilter;
11606
+ useLazyEffect(() => {
11607
+ if (meta.search.isEnabled) {
11608
+ const currentFilter = query;
11598
11609
  requestAnimationFrame(() => {
11599
11610
  table.resetGlobalFilter();
11600
11611
  table.setGlobalFilter(currentFilter);
11601
11612
  });
11613
+ if (meta.search.handleSearch && meta.search.enableGlobalFilter && query) {
11614
+ meta.search.handleSearch(query, hiddenColumns);
11615
+ }
11602
11616
  }
11603
- }, [visibleColumns.length]);
11617
+ }, [hiddenColumns.length]);
11604
11618
  // recalculates highlighted indexes whenever something important changes
11605
- React__default.useEffect(() => {
11619
+ useLazyEffect(() => {
11606
11620
  if (meta.search.isEnabled) {
11607
- const query = table.getState().globalFilter;
11608
11621
  resetHighlightedColumnIndexes(query, table, localization);
11609
- if (typeof onChangeSearch === 'function') {
11610
- onChangeSearch(query);
11611
- }
11612
11622
  }
11613
- }, [meta.server.loadAllStatus, meta.search.isEnabled, meta.search.enableGlobalFilter, table.getRowModel().rows.length, table.getState().globalFilter, JSON.stringify(table.getState().sorting), onChangeSearch]);
11623
+ }, [meta.server.loadAllStatus, meta.search.isEnabled, meta.search.enableGlobalFilter, table.getRowModel().rows.length, query, JSON.stringify(table.getState().sorting)]);
11614
11624
  }
11615
11625
 
11616
11626
  function useTableSettingsListener(table, onChangeSettings) {
@@ -11694,12 +11704,15 @@ function useTableSortingListener(table, onSort) {
11694
11704
  }
11695
11705
 
11696
11706
  function useTableServerLoadingListener(table, loadPage) {
11697
- const sorting = table.getState().sorting;
11698
- const columnFilters = table.getState().columnFilters;
11707
+ const meta = table.options.meta;
11699
11708
  // trigger load of the first page on mount
11700
11709
  React__default.useEffect(() => {
11701
11710
  if (loadPage) {
11702
- loadPage(0, sorting, columnFilters);
11711
+ const sorting = table.getState().sorting;
11712
+ const columnFilters = table.getState().columnFilters;
11713
+ const search = meta.search.enableGlobalFilter ? table.getState().globalFilter : undefined;
11714
+ const hiddenColumns = getHiddenColumns(table.getState().columnVisibility);
11715
+ loadPage(0, sorting, columnFilters, search, hiddenColumns);
11703
11716
  }
11704
11717
  }, []);
11705
11718
  }
@@ -11746,13 +11759,13 @@ function useTableManager(props, meta, internalColumns) {
11746
11759
  const rowClick = useTableRowClick(options.enableRowClick, props.onRowClick);
11747
11760
  const rowDrag = useTableRowDrag(options.enableRowDrag && !(meta !== null && meta !== void 0 && (_meta$editing = meta.editing) !== null && _meta$editing !== void 0 && _meta$editing.isEditing), props.onRowDrag);
11748
11761
  const rowDrop = useTableRowDrop(options.enableRowDrop, props.onRowDrop);
11749
- const rowExpansion = useTableRowExpansion(options.enableRowExpansion, props.rowExpansionRenderer);
11762
+ const rowExpansion = useTableRowExpansion(options.enableRowExpansion, options.enableRowExpansionAll, props.rowExpansionRenderer);
11750
11763
  const rowGoto = useTableRowGoto(options.enableRowGoto, props.onRowGoto);
11751
11764
  const rowGroups = useTableRowGroups(props.rowActionsForGroup);
11752
11765
  const rowHeight = useTableRowHeight(options.enableRowHeight, settings.rowHeight);
11753
11766
  const rowSelection = useTableRowSelection(!!options.enableRowSelection);
11754
- const search = useTableSearch(options.enableSearch, settings.excludeUnmatchedRecordsInSearch);
11755
- const server = useTableServerLoading(props.loadPage, props.loadAll, props.pageSize);
11767
+ const search = useTableSearch(options.enableSearch, props.onChangeSearch, settings.excludeUnmatchedRecordsInSearch);
11768
+ const server = useTableServerLoading(props.loadPage, props.loadAll, props.pages, props.pageSize, props._experimentalDataLoader2);
11756
11769
  // TODO: memoise
11757
11770
  // convert jsx column components into valid table columns
11758
11771
  const {
@@ -11803,7 +11816,7 @@ function useTableManager(props, meta, internalColumns) {
11803
11816
  useTableFontSizeListener(instance);
11804
11817
  useTableRowHeightListener(instance);
11805
11818
  useTableRowSelectionListener(instance, props.onRowSelect);
11806
- useTableSearchListener(instance, props.onChangeSearch);
11819
+ useTableSearchListener(instance);
11807
11820
  useTableServerLoadingListener(instance, server.loadPage);
11808
11821
  useTableSettingsListener(instance, setSettings);
11809
11822
  useTableShortcutsListener(instance, props.shortcuts);
@@ -12029,7 +12042,7 @@ function useTableGlobalShortcuts(table, tableRef, scrollToIndex) {
12029
12042
  if (isElementInsideOverlay(trigger) && !isSiblingElementInsideSameParentOverlay(trigger, tableRef.current) || isElementInteractive(trigger) && !isElementInsideOrTriggeredFromContainer(trigger, tableRef.current)) {
12030
12043
  return;
12031
12044
  }
12032
- tableMeta.rowActive.handleKeyDown(event, rows.length, scrollToIndex);
12045
+ tableMeta.rowActive.handleKeyDown(event, tableMeta.length, scrollToIndex);
12033
12046
  tableMeta.rowSelection.handleKeyDown(event, table);
12034
12047
  if (tableMeta.rowActive.rowActiveIndex !== undefined) {
12035
12048
  var _rows$tableMeta$rowAc;
@@ -12065,57 +12078,131 @@ const ROW_HEIGHT_ESTIMATES = {
12065
12078
  'extra-tall': 57
12066
12079
  };
12067
12080
 
12081
+ const RowContext = /*#__PURE__*/React__default.createContext({
12082
+ hideInternalColumns: false,
12083
+ hideRowActions: false,
12084
+ isHovered: false,
12085
+ rowIndex: -1
12086
+ });
12087
+
12088
+ const DELAY_BEFORE_LOAD_MS = 250;
12089
+ /* anonymous functions will break the memoisation on each render, wrap handlers in callbacks */
12090
+ function Row(props) {
12091
+ const {
12092
+ renderer: RowRenderer,
12093
+ cellRenderer: CellRenderer,
12094
+ hideInternalColumns = false,
12095
+ hideRowActions = false,
12096
+ scrollDirection,
12097
+ skipPageLoading = false,
12098
+ ...displayRowProps
12099
+ } = props;
12100
+ const tableMeta = props.table.options.meta;
12101
+ const isHovered = tableMeta.rowActive.rowHoverIndex === props.index;
12102
+ // context - it must be here for cells to read it, since they render alongside the row inside DisplayRow
12103
+ const contextValue = React__default.useMemo(() => ({
12104
+ isHovered,
12105
+ rowIndex: props.index,
12106
+ hideInternalColumns,
12107
+ hideRowActions
12108
+ }), [isHovered, props.index, hideInternalColumns, hideRowActions]);
12109
+ React__default.useEffect(() => {
12110
+ let timeout;
12111
+ if (tableMeta.server.isEnabled && tableMeta.server._experimentalDataLoader2 && !skipPageLoading) {
12112
+ const pageIndex = Math.floor(props.index / tableMeta.server.pageSize) * tableMeta.server.pageSize / tableMeta.server.pageSize;
12113
+ const sorting = props.table.getState().sorting;
12114
+ const filters = props.table.getState().columnFilters;
12115
+ const search = props.table.getState().globalFilter;
12116
+ const hiddenColumns = getHiddenColumns(props.table.getState().columnVisibility);
12117
+ const pageIndexesToFetch = [];
12118
+ /*
12119
+ // if there's no direction, it means the scroll bar got dropped un unloaded pages,
12120
+ // in that case, load forward and backward pages to prevent skeletons
12121
+ if (scrollDirection === 'backward' || !scrollDirection) {
12122
+ const backIndex = pageIndex - 1;
12123
+ if (backIndex > -1) {
12124
+ pageIndexesToFetch.push(backIndex);
12125
+ }
12126
+ }
12127
+ */
12128
+ // always load the next page
12129
+ if (scrollDirection === 'forward' || !scrollDirection) {
12130
+ pageIndexesToFetch.push(pageIndex + 1);
12131
+ }
12132
+ // the virtualiser fetches a page ahead, so this won't get called in most cases
12133
+ // but it provides a fallback for some edge cases
12134
+ timeout = setTimeout(() => {
12135
+ pageIndexesToFetch.forEach(index => {
12136
+ var _tableMeta$server$loa, _tableMeta$server;
12137
+ // this can be called by every row within the current page, but loadPage returns early if a pending request exists
12138
+ (_tableMeta$server$loa = (_tableMeta$server = tableMeta.server).loadPage) === null || _tableMeta$server$loa === void 0 ? void 0 : _tableMeta$server$loa.call(_tableMeta$server, index, sorting, filters, tableMeta.search.enableGlobalFilter ? search : undefined, hiddenColumns);
12139
+ });
12140
+ }, DELAY_BEFORE_LOAD_MS);
12141
+ }
12142
+ return () => {
12143
+ clearTimeout(timeout);
12144
+ };
12145
+ }, [tableMeta.server.pages]);
12146
+ return /*#__PURE__*/React__default.createElement(RowContext.Provider, {
12147
+ value: contextValue
12148
+ }, /*#__PURE__*/React__default.createElement(RowRenderer, Object.assign({}, displayRowProps, {
12149
+ cellRenderer: CellRenderer
12150
+ })));
12151
+ }
12152
+
12153
+ const DELAY_BEFORE_LOAD_MS$1 = 150;
12068
12154
  function SkeletonRow(props) {
12069
12155
  const {
12070
12156
  index,
12071
- row,
12072
12157
  table
12073
12158
  } = props;
12074
12159
  const tableMeta = table.options.meta;
12075
12160
  if (tableMeta.server.isEnabled) {
12076
- return /*#__PURE__*/React__default.createElement(RowWithServerLoading, Object.assign({}, props, {
12077
- index: index
12078
- }));
12161
+ return /*#__PURE__*/React__default.createElement(RowWithServerLoading, Object.assign({}, props));
12079
12162
  }
12080
12163
  return /*#__PURE__*/React__default.createElement(Skeleton, {
12081
- cellsCount: row.getVisibleCells().length
12164
+ cellsCount: table.getVisibleFlatColumns().length,
12165
+ index: index
12082
12166
  });
12083
12167
  }
12084
12168
  function RowWithServerLoading(props) {
12085
12169
  var _table$getState$group, _table$getState;
12086
12170
  const {
12087
12171
  index,
12088
- row,
12089
12172
  table
12090
12173
  } = props;
12091
12174
  const tableMeta = table.options.meta;
12092
12175
  const pageIndex = Math.floor(index / tableMeta.server.pageSize) * tableMeta.server.pageSize / tableMeta.server.pageSize;
12093
- const {
12094
- ref,
12095
- inView
12096
- } = reactIntersectionObserver.useInView({
12097
- threshold: 0,
12098
- triggerOnce: true,
12099
- initialInView: pageIndex === 0
12100
- });
12101
12176
  React__default.useEffect(() => {
12102
- if (inView) {
12103
- var _tableMeta$server$loa, _tableMeta$server;
12104
- (_tableMeta$server$loa = (_tableMeta$server = tableMeta.server).loadPage) === null || _tableMeta$server$loa === void 0 ? void 0 : _tableMeta$server$loa.call(_tableMeta$server, pageIndex, table.getState().sorting, table.getState().columnFilters);
12177
+ let timeout;
12178
+ if (tableMeta.server.isEnabled) {
12179
+ const sorting = props.table.getState().sorting;
12180
+ const filters = props.table.getState().columnFilters;
12181
+ const search = props.table.getState().globalFilter;
12182
+ const hiddenColumns = getHiddenColumns(props.table.getState().columnVisibility);
12183
+ timeout = setTimeout(() => {
12184
+ var _tableMeta$server$loa, _tableMeta$server;
12185
+ (_tableMeta$server$loa = (_tableMeta$server = tableMeta.server).loadPage) === null || _tableMeta$server$loa === void 0 ? void 0 : _tableMeta$server$loa.call(_tableMeta$server, pageIndex, sorting, filters, tableMeta.search.enableGlobalFilter ? search : undefined, hiddenColumns);
12186
+ }, DELAY_BEFORE_LOAD_MS$1);
12105
12187
  }
12106
- }, [inView]);
12188
+ return () => {
12189
+ clearTimeout(timeout);
12190
+ };
12191
+ }, []);
12107
12192
  const groupedCellCount = (_table$getState$group = (_table$getState = table.getState()) === null || _table$getState === void 0 ? void 0 : _table$getState.grouping.length) !== null && _table$getState$group !== void 0 ? _table$getState$group : 0;
12108
- const ungroupedCellCount = row.getVisibleCells().length - groupedCellCount;
12193
+ const ungroupedCellCount = table.getVisibleFlatColumns().length - groupedCellCount;
12109
12194
  return /*#__PURE__*/React__default.createElement(Skeleton, {
12110
12195
  cellsCount: ungroupedCellCount,
12111
- ref: ref
12196
+ index: index
12112
12197
  });
12113
12198
  }
12114
12199
  const Skeleton = /*#__PURE__*/React__default.forwardRef(function Skeleton(props, ref) {
12115
12200
  const {
12116
- cellsCount
12201
+ cellsCount,
12202
+ index
12117
12203
  } = props;
12118
12204
  return /*#__PURE__*/React__default.createElement("tr", {
12205
+ "data-row-index": index,
12119
12206
  ref: ref
12120
12207
  }, Array(cellsCount).fill(null).map((_, index) => (/*#__PURE__*/React__default.createElement("td", {
12121
12208
  key: index
@@ -12124,41 +12211,6 @@ const Skeleton = /*#__PURE__*/React__default.forwardRef(function Skeleton(props,
12124
12211
  })))));
12125
12212
  });
12126
12213
 
12127
- const RowContext = /*#__PURE__*/React__default.createContext({
12128
- hideInternalColumns: false,
12129
- hideRowActions: false,
12130
- isHovered: false,
12131
- rowIndex: -1
12132
- });
12133
-
12134
- /* anonymous functions will break the memoisation on each render, wrap handlers in callbacks */
12135
- function Row(props) {
12136
- const {
12137
- renderer: RowRenderer,
12138
- cellRenderer: CellRenderer,
12139
- hideInternalColumns = false,
12140
- hideRowActions = false,
12141
- ...displayRowProps
12142
- } = props;
12143
- const tableMeta = props.table.options.meta;
12144
- const isHovered = tableMeta.rowActive.rowHoverIndex === props.index;
12145
- // context - it must be here for cells to read it, since they render alongside the row inside DisplayRow
12146
- const contextValue = React__default.useMemo(() => ({
12147
- isHovered,
12148
- rowIndex: props.index,
12149
- hideInternalColumns,
12150
- hideRowActions
12151
- }), [isHovered, props.index, hideInternalColumns, hideRowActions]);
12152
- if (props.row.original === undefined) {
12153
- return /*#__PURE__*/React__default.createElement(SkeletonRow, Object.assign({}, props));
12154
- }
12155
- return /*#__PURE__*/React__default.createElement(RowContext.Provider, {
12156
- value: contextValue
12157
- }, /*#__PURE__*/React__default.createElement(RowRenderer, Object.assign({}, displayRowProps, {
12158
- cellRenderer: CellRenderer
12159
- })));
12160
- }
12161
-
12162
12214
  // scroll padding end is designed to always show half of the next row
12163
12215
  function getScrollPaddingEndOffset(table) {
12164
12216
  const tableMeta = table.options.meta;
@@ -12183,7 +12235,7 @@ function getPaddingEndOffset(table, options) {
12183
12235
  const bottomRows = (_table$getBottomRows = table.getBottomRows()) !== null && _table$getBottomRows !== void 0 ? _table$getBottomRows : [];
12184
12236
  return ROW_HEIGHT_ESTIMATES.medium * ((_options$virtualiserP = options === null || options === void 0 ? void 0 : options.virtualiserPaddingEndOffset) !== null && _options$virtualiserP !== void 0 ? _options$virtualiserP : 1) * bottomRows.length;
12185
12237
  }
12186
- function useTableRenderer(renderers, table, tableRef, defaultRowActiveIndex, options) {
12238
+ function useTableRenderer(renderers, table, tableRef, length, defaultRowActiveIndex, options) {
12187
12239
  var _table$getState$group, _table$getCenterRows, _virtualItems$padding, _virtualItems$padding2, _virtualItems$padding3, _ref, _virtualItems;
12188
12240
  const tableMeta = table.options.meta;
12189
12241
  const isTableRowGrouped = !!((_table$getState$group = table.getState().grouping) !== null && _table$getState$group !== void 0 && _table$getState$group.length);
@@ -12197,11 +12249,12 @@ function useTableRenderer(renderers, table, tableRef, defaultRowActiveIndex, opt
12197
12249
  const rangeExtractor = useRowGroupVirtualisation(table);
12198
12250
  // account for thead and tfoot in the scroll area - both are always medium row height
12199
12251
  const scrollPaddingStart = ROW_HEIGHT_ESTIMATES.medium;
12252
+ const count = tableMeta.server.isEnabled && tableMeta.server._experimentalDataLoader2 ? length : rows.length;
12200
12253
  const virtualiser = reactVirtual.useVirtualizer({
12201
- count: rows.length,
12254
+ count,
12202
12255
  estimateSize,
12203
12256
  getScrollElement: () => tableRef.current,
12204
- overscan: tableMeta.printing.isPrinting ? rows.length : undefined,
12257
+ overscan: tableMeta.printing.isPrinting ? count : undefined,
12205
12258
  rangeExtractor,
12206
12259
  // correctly sets the scroll padding offset, e.g. when keyboard navigating rows in the list
12207
12260
  scrollPaddingStart,
@@ -12221,16 +12274,16 @@ function useTableRenderer(renderers, table, tableRef, defaultRowActiveIndex, opt
12221
12274
  if (tableRef.current) {
12222
12275
  if (index === 0) {
12223
12276
  virtualiser.scrollToOffset(0, notSmooth);
12224
- } else if (index === rows.length - 1) {
12277
+ } else if (index === count - 1) {
12225
12278
  // sometimes the last row doesn't fully show, so we just force scroll to the bottom
12226
12279
  tableRef.current.scrollTop = tableRef.current.scrollHeight;
12227
12280
  } else {
12228
12281
  virtualiser.scrollToIndex(index, options);
12229
12282
  }
12230
12283
  }
12231
- }, [virtualItems.length, tableRef.current, totalSize, rows.length]);
12284
+ }, [virtualItems.length, tableRef.current, totalSize, count]);
12232
12285
  // use row 1 not 0, because 0 might be sticky in grouped tables and it's start value will always be 0
12233
- const paddingStartIndex = isTableRowGrouped && rows.length > 1 ? 1 : 0;
12286
+ const paddingStartIndex = isTableRowGrouped && count > 1 ? 1 : 0;
12234
12287
  const startValue = isTableRowGrouped ? ((_virtualItems$padding = virtualItems[paddingStartIndex]) === null || _virtualItems$padding === void 0 ? void 0 : _virtualItems$padding.start) - ((_virtualItems$padding2 = virtualItems[paddingStartIndex]) === null || _virtualItems$padding2 === void 0 ? void 0 : _virtualItems$padding2.size) : (_virtualItems$padding3 = virtualItems[paddingStartIndex]) === null || _virtualItems$padding3 === void 0 ? void 0 : _virtualItems$padding3.start;
12235
12288
  // styling for offsetting rows - this "is" the virtualisation
12236
12289
  const [paddingTop, paddingBottom] = virtualItems.length > 0 ? [Math.max(0, startValue !== null && startValue !== void 0 ? startValue : 0), Math.max(0, (_ref = totalSize - ((_virtualItems = virtualItems[virtualItems.length - 1]) === null || _virtualItems === void 0 ? void 0 : _virtualItems.end)) !== null && _ref !== void 0 ? _ref : 0)] : [0, 0];
@@ -12247,7 +12300,7 @@ function useTableRenderer(renderers, table, tableRef, defaultRowActiveIndex, opt
12247
12300
  let style = {};
12248
12301
  let content = null;
12249
12302
  // bottom rows aren't virtualised (they're sticky) but we need to set the height
12250
- if (rows.length || table.getBottomRows().length) {
12303
+ if (count || table.getBottomRows().length) {
12251
12304
  style = {
12252
12305
  height: totalSize,
12253
12306
  paddingBottom,
@@ -12255,18 +12308,43 @@ function useTableRenderer(renderers, table, tableRef, defaultRowActiveIndex, opt
12255
12308
  };
12256
12309
  }
12257
12310
  // only render non sticky rows
12258
- if (rows.length) {
12311
+ if (count) {
12259
12312
  content = virtualItems.map(virtualRow => {
12313
+ var _row, _virtualiser$scrollDi2;
12260
12314
  // there appears to be a react-virtual bug where it inserts a single `undefined` item at the end of the row, which crashes here
12261
12315
  if (!virtualRow) {
12262
12316
  return null;
12263
12317
  }
12264
- const row = rows[virtualRow.index];
12318
+ let row;
12319
+ if (tableMeta.server.isEnabled && tableMeta.server._experimentalDataLoader2) {
12320
+ var _tableMeta$server$pag, _tableMeta$server$pag2;
12321
+ const currentPageIndex = Math.floor(virtualRow.index / tableMeta.server.pageSize) * tableMeta.server.pageSize / tableMeta.server.pageSize;
12322
+ const pagePosition = (_tableMeta$server$pag = (_tableMeta$server$pag2 = tableMeta.server.pages) === null || _tableMeta$server$pag2 === void 0 ? void 0 : _tableMeta$server$pag2.indexOf(currentPageIndex)) !== null && _tableMeta$server$pag !== void 0 ? _tableMeta$server$pag : -1;
12323
+ if (pagePosition > -1) {
12324
+ // "flatten" row indexes down into the dataloader2 dataset size
12325
+ // for example, with a page size of 100...
12326
+ // row index 14267 is actually one of index 67, 167, 267 etc within the dataset (depending on number of pages stored)
12327
+ const fakeIndex = pagePosition * tableMeta.server.pageSize + virtualRow.index % tableMeta.server.pageSize;
12328
+ row = rows[fakeIndex];
12329
+ }
12330
+ } else {
12331
+ row = rows[virtualRow.index];
12332
+ }
12333
+ if (!((_row = row) !== null && _row !== void 0 && _row.original)) {
12334
+ var _virtualiser$scrollDi;
12335
+ return /*#__PURE__*/React__default.createElement(SkeletonRow, {
12336
+ key: virtualRow.index,
12337
+ index: virtualRow.index,
12338
+ scrollDirection: (_virtualiser$scrollDi = virtualiser.scrollDirection) !== null && _virtualiser$scrollDi !== void 0 ? _virtualiser$scrollDi : undefined,
12339
+ table: table
12340
+ });
12341
+ }
12265
12342
  const measureRow = createRowMeasurer(virtualiser.resizeItem, virtualRow);
12266
12343
  return /*#__PURE__*/React__default.createElement(Row, {
12267
12344
  key: row.id,
12268
12345
  row: row,
12269
12346
  index: virtualRow.index,
12347
+ scrollDirection: (_virtualiser$scrollDi2 = virtualiser.scrollDirection) !== null && _virtualiser$scrollDi2 !== void 0 ? _virtualiser$scrollDi2 : undefined,
12270
12348
  table: table,
12271
12349
  measureRow: measureRow,
12272
12350
  renderer: renderers.row,
@@ -12488,6 +12566,10 @@ function Header$3(context) {
12488
12566
  const {
12489
12567
  table
12490
12568
  } = context;
12569
+ const tableMeta = table.options.meta;
12570
+ if (!tableMeta.rowExpansion.canExpandAll) {
12571
+ return null;
12572
+ }
12491
12573
  const isSomeRowsExpanded = table.getIsSomeRowsExpanded();
12492
12574
  const handleClick = event => {
12493
12575
  event.stopPropagation();
@@ -12569,8 +12651,9 @@ function Header$4(context) {
12569
12651
  }
12570
12652
  const _temp = function () {
12571
12653
  if (tableMeta.server.loadAllIfNeeded) {
12654
+ const hiddenColumns = getHiddenColumns(table.getState().columnVisibility);
12572
12655
  // don't pass the search query because we need all data - not filtered data
12573
- return Promise.resolve(tableMeta.server.loadAllIfNeeded(table.getState().sorting, table.getState().columnFilters)).then(function () {});
12656
+ return Promise.resolve(tableMeta.server.loadAllIfNeeded(table.getState().sorting, table.getState().columnFilters, tableMeta.search.enableGlobalFilter ? table.getState().globalFilter : undefined, hiddenColumns)).then(function () {});
12574
12657
  }
12575
12658
  }();
12576
12659
  // load all data if that is possible
@@ -12629,6 +12712,7 @@ function Cell$3(context) {
12629
12712
  if (event.shiftKey) {
12630
12713
  var _tableMeta$rowSelecti;
12631
12714
  function _temp4() {
12715
+ const selectedRows = table.getRowModel().rows.slice(fromIndex, toIndex + 1);
12632
12716
  table.setRowSelection(currentRowSelection => ({
12633
12717
  ...currentRowSelection,
12634
12718
  ...selectedRows.filter(row => row.getCanSelect()).reduce((state, row) => ({
@@ -12638,11 +12722,11 @@ function Cell$3(context) {
12638
12722
  }));
12639
12723
  }
12640
12724
  const [fromIndex, toIndex] = toggleBetween((_tableMeta$rowSelecti = tableMeta.rowSelection.lastSelectedRowIndex.current) !== null && _tableMeta$rowSelecti !== void 0 ? _tableMeta$rowSelecti : 0, rowIndex);
12641
- const selectedRows = table.getRowModel().rows.slice(fromIndex, toIndex + 1);
12642
12725
  const _temp3 = function () {
12643
- if (tableMeta.server.loadAllIfNeeded && selectedRows.some(row => row.original === undefined)) {
12726
+ if (tableMeta.server.loadAllIfNeeded) {
12727
+ const hiddenColumns = getHiddenColumns(table.getState().columnVisibility);
12644
12728
  // don't pass the search query because we need all data - not filtered data
12645
- return Promise.resolve(tableMeta.server.loadAllIfNeeded(table.getState().sorting, table.getState().columnFilters)).then(function () {});
12729
+ return Promise.resolve(tableMeta.server.loadAllIfNeeded(table.getState().sorting, table.getState().columnFilters, tableMeta.search.enableGlobalFilter ? table.getState().globalFilter : undefined, hiddenColumns)).then(function () {});
12646
12730
  }
12647
12731
  }();
12648
12732
  return _temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3);
@@ -12700,7 +12784,7 @@ function useTable(props, externalRef, renderers, meta, options) {
12700
12784
  // configure the table
12701
12785
  const manager = useTableManager(props, meta, INTERNAL_RENDERERS);
12702
12786
  // configure the virtualised renderer
12703
- const renderer = useTableRenderer(renderers, manager.instance, ref, props.defaultRowActiveIndex, options);
12787
+ const renderer = useTableRenderer(renderers, manager.instance, ref, manager.meta.length, props.defaultRowActiveIndex, options);
12704
12788
  // configure dynamic styling
12705
12789
  const {
12706
12790
  style,
@@ -13768,21 +13852,23 @@ function Summary(props) {
13768
13852
  locale,
13769
13853
  texts
13770
13854
  } = useLocalization();
13771
- const length = table.options.meta.length;
13855
+ const tableMeta = table.options.meta;
13856
+ const length = tableMeta.length;
13772
13857
  const currentLength = table.getRowModel().rows.length;
13773
13858
  let label;
13774
13859
  let count;
13775
13860
  // row selection
13776
- const rowsSelectedLength = table.getSelectedRowModel().rows.length;
13861
+ // use table state and not the selected row model because of the way server loading works
13862
+ const rowsSelectedLength = Object.keys(table.getState().rowSelection).length;
13777
13863
  if (rowsSelectedLength > 0) {
13778
13864
  label = texts.table.footer.summary.selected;
13779
13865
  count = /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("strong", null, new Intl.NumberFormat(locale).format(rowsSelectedLength)), "\u00A0", texts.table.footer.summary.count, "\u00A0", /*#__PURE__*/React__default.createElement("strong", null, new Intl.NumberFormat(locale).format(length)));
13780
- } else if ((_table$getState$colum = table.getState().columnFilters) !== null && _table$getState$colum !== void 0 && _table$getState$colum.length ||
13866
+ } else if (!tableMeta.server.isEnabled && ((_table$getState$colum = table.getState().columnFilters) !== null && _table$getState$colum !== void 0 && _table$getState$colum.length ||
13781
13867
  // filtered data
13782
- !!table.getState().globalFilter && table.options.enableGlobalFilter // search with hide enabled
13868
+ !!table.getState().globalFilter && table.options.enableGlobalFilter) // search with hide enabled
13783
13869
  ) {
13784
13870
  label = texts.table.footer.summary.records;
13785
- count = /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("strong", null, currentLength), "\u00A0", texts.table.footer.summary.count, "\u00A0", /*#__PURE__*/React__default.createElement("strong", null, new Intl.NumberFormat(locale).format(length)));
13871
+ count = /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("strong", null, new Intl.NumberFormat(locale).format(currentLength)), "\u00A0", texts.table.footer.summary.count, "\u00A0", /*#__PURE__*/React__default.createElement("strong", null, new Intl.NumberFormat(locale).format(length)));
13786
13872
  } else {
13787
13873
  label = texts.table.footer.summary.records;
13788
13874
  count = /*#__PURE__*/React__default.createElement("strong", null, new Intl.NumberFormat(locale).format(length));
@@ -13794,8 +13880,13 @@ function Summary(props) {
13794
13880
  }
13795
13881
 
13796
13882
  function Foot(props) {
13797
- const nonGroupedHeaders = props.table.getFooterGroups()[0].headers.filter(header => !header.column.getIsGrouped());
13798
- return /*#__PURE__*/React__default.createElement("tfoot", null, /*#__PURE__*/React__default.createElement("tr", null, nonGroupedHeaders.map((header, index) => (/*#__PURE__*/React__default.createElement(Footer$3, {
13883
+ const {
13884
+ children,
13885
+ table,
13886
+ ...attributes
13887
+ } = props;
13888
+ const nonGroupedHeaders = table.getFooterGroups()[0].headers.filter(header => !header.column.getIsGrouped());
13889
+ return /*#__PURE__*/React__default.createElement("tfoot", Object.assign({}, attributes), children, /*#__PURE__*/React__default.createElement("tr", null, nonGroupedHeaders.map((header, index) => (/*#__PURE__*/React__default.createElement(Footer$3, {
13799
13890
  key: header.id,
13800
13891
  header: header,
13801
13892
  index: index
@@ -13877,6 +13968,7 @@ const SearchInput2 = /*#__PURE__*/React__default.forwardRef(function SearchInput
13877
13968
  onClickFindPrevious: handleClickFindPrevious,
13878
13969
  settingsContent,
13879
13970
  shortcut,
13971
+ showTotal = true,
13880
13972
  value,
13881
13973
  ...attributes
13882
13974
  } = props;
@@ -13955,10 +14047,12 @@ const SearchInput2 = /*#__PURE__*/React__default.forwardRef(function SearchInput
13955
14047
  }
13956
14048
  if (hasFind && isActive) {
13957
14049
  postfix = /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("span", {
13958
- className: "text-grey-700 flex h-4 items-center border-r border-black/[0.25] pr-2"
13959
- }, loading ? /*#__PURE__*/React__default.createElement(Spinner, {
14050
+ className: "text-grey-700 flex h-4 items-center"
14051
+ }, loading ? (/*#__PURE__*/React__default.createElement(Spinner, {
13960
14052
  className: "h-4 w-4"
13961
- }) : `${findCurrent !== null && findCurrent !== void 0 ? findCurrent : 0}/${findTotal !== null && findTotal !== void 0 ? findTotal : 0}`), findCurrent ? (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(IconButton, {
14053
+ })) : showTotal ? (/*#__PURE__*/React__default.createElement("span", {
14054
+ className: "border-r border-black/[0.25] pr-2"
14055
+ }, `${findCurrent !== null && findCurrent !== void 0 ? findCurrent : 0}/${findTotal !== null && findTotal !== void 0 ? findTotal : 0}`)) : null), findCurrent ? (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(IconButton, {
13962
14056
  "aria-label": texts.searchInput.findPrevious,
13963
14057
  className: "scale-75 !bg-transparent hover:!bg-black/[0.08] [&>svg]:scale-125",
13964
14058
  icon: "chevron-up",
@@ -14062,6 +14156,7 @@ function Search$1(props) {
14062
14156
  const scrollTo = rowIndex => scrollToIndex(rowIndex, {
14063
14157
  align: 'center'
14064
14158
  });
14159
+ const hiddenColumns = getHiddenColumns(table.getState().columnVisibility);
14065
14160
  React__default.useEffect(() => {
14066
14161
  if (tableMeta.search.highlightedColumnIndexes.length) {
14067
14162
  scrollTo(tableMeta.search.highlightedColumnIndexes[0][0]);
@@ -14070,9 +14165,11 @@ function Search$1(props) {
14070
14165
  const handleFocus = function () {
14071
14166
  try {
14072
14167
  const _temp = function () {
14073
- if (tableMeta.server.loadAllIfNeeded) {
14168
+ if (tableMeta.server.loadAllIfNeeded && !tableMeta.server._experimentalDataLoader2) {
14074
14169
  // don't pass the search query because we need all data - not filtered data
14075
- return Promise.resolve(tableMeta.server.loadAllIfNeeded(table.getState().sorting, table.getState().columnFilters)).then(function () {});
14170
+ return Promise.resolve(tableMeta.server.loadAllIfNeeded(table.getState().sorting, table.getState().columnFilters,
14171
+ // the old data loader doesn't have server side search
14172
+ undefined, hiddenColumns)).then(function () {});
14076
14173
  }
14077
14174
  }();
14078
14175
  // load all data if that is possible
@@ -14081,8 +14178,20 @@ function Search$1(props) {
14081
14178
  return Promise.reject(e);
14082
14179
  }
14083
14180
  };
14181
+ const [loading, setLoading] = React__default.useState(false);
14182
+ const searchTimeoutRef = React__default.useRef();
14084
14183
  const handleChange = query => {
14085
14184
  table.setGlobalFilter(String(query !== null && query !== void 0 ? query : ''));
14185
+ if (tableMeta.search.enableGlobalFilter && tableMeta.search.handleSearch) {
14186
+ clearTimeout(searchTimeoutRef.current);
14187
+ searchTimeoutRef.current = setTimeout(() => {
14188
+ var _tableMeta$search$han, _tableMeta$search;
14189
+ setLoading(true);
14190
+ (_tableMeta$search$han = (_tableMeta$search = tableMeta.search).handleSearch) === null || _tableMeta$search$han === void 0 ? void 0 : _tableMeta$search$han.call(_tableMeta$search, query, hiddenColumns).then(() => {
14191
+ setLoading(false);
14192
+ });
14193
+ }, 150);
14194
+ }
14086
14195
  };
14087
14196
  const handleToggleExcludeUnmatchedResults = enabled => {
14088
14197
  tableMeta.search.setEnableGlobalFilter(enabled, table);
@@ -14090,6 +14199,12 @@ function Search$1(props) {
14090
14199
  var _ref$current;
14091
14200
  return (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.focus();
14092
14201
  });
14202
+ if (tableMeta.search.handleSearch) {
14203
+ setLoading(true);
14204
+ tableMeta.search.handleSearch(enabled ? query : undefined, hiddenColumns).then(() => {
14205
+ setLoading(false);
14206
+ });
14207
+ }
14093
14208
  };
14094
14209
  const handleNextResult = () => {
14095
14210
  if (!tableMeta.search.highlightedColumnIndexes.length) {
@@ -14133,7 +14248,7 @@ function Search$1(props) {
14133
14248
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(SearchInput2, {
14134
14249
  findCurrent: tableMeta.search.currentHighlightColumnIndex !== undefined ? tableMeta.search.currentHighlightColumnIndex + 1 : null,
14135
14250
  findTotal: (_tableMeta$search$hig = (_tableMeta$search$hig2 = tableMeta.search.highlightedColumnIndexes) === null || _tableMeta$search$hig2 === void 0 ? void 0 : _tableMeta$search$hig2.length) !== null && _tableMeta$search$hig !== void 0 ? _tableMeta$search$hig : null,
14136
- loading: tableMeta.server.loadAllStatus === exports.TableServerLoadAllState.Loading,
14251
+ loading: tableMeta.server._experimentalDataLoader2 ? loading : tableMeta.server.loadAllStatus === exports.TableServerLoadAllState.Loading,
14137
14252
  name: "table-search",
14138
14253
  onClickFindPrevious: handlePreviousResult,
14139
14254
  onClickFindNext: handleNextResult,
@@ -14148,6 +14263,7 @@ function Search$1(props) {
14148
14263
  meta: true,
14149
14264
  shift: false
14150
14265
  },
14266
+ showTotal: !tableMeta.server._experimentalDataLoader2,
14151
14267
  value: query
14152
14268
  }));
14153
14269
  }
@@ -16193,8 +16309,9 @@ function Print$1(props) {
16193
16309
  const toastRef = toast.loading(texts.table.print.loading);
16194
16310
  const _temp2 = function () {
16195
16311
  if (tableMeta.server.isEnabled && tableMeta.server.loadAllIfNeeded) {
16312
+ const hiddenColumns = getHiddenColumns(table.getState().columnVisibility);
16196
16313
  const _temp = _catch(function () {
16197
- return Promise.resolve(tableMeta.server.loadAllIfNeeded(table.getState().sorting, table.getState().columnFilters)).then(function () {});
16314
+ return Promise.resolve(tableMeta.server.loadAllIfNeeded(table.getState().sorting, table.getState().columnFilters, tableMeta.search.enableGlobalFilter ? table.getState().globalFilter : undefined, hiddenColumns)).then(function () {});
16198
16315
  }, function (error) {
16199
16316
  const errorMessage = `${texts.table.print.error}: ${error}`;
16200
16317
  console.error(errorMessage);
@@ -16868,6 +16985,7 @@ function TableGrid(props) {
16868
16985
  var _table$state$grouping;
16869
16986
  const {
16870
16987
  enableHorizontalArrowKeyNavigation,
16988
+ footerRows,
16871
16989
  table,
16872
16990
  ...attributes
16873
16991
  } = props;
@@ -16910,7 +17028,7 @@ function TableGrid(props) {
16910
17028
  } : table.renderer.style
16911
17029
  }, table.renderer.rows, props.children), table.meta.footer.isEnabled ? /*#__PURE__*/React__default.createElement(Foot, {
16912
17030
  table: table.instance
16913
- }) : null)))));
17031
+ }, footerRows) : null)))));
16914
17032
  }
16915
17033
 
16916
17034
  function Column$1(_) {
@@ -18502,6 +18620,14 @@ const shortcut = {
18502
18620
  meta: true,
18503
18621
  shift: false
18504
18622
  };
18623
+ function isTableScrolled(ref) {
18624
+ if (ref.current) {
18625
+ var _ref$current, _ref$current$querySel, _ref$current2, _ref$current2$querySe;
18626
+ const height = parseFloat(((_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : (_ref$current$querySel = _ref$current.querySelector('tbody')) === null || _ref$current$querySel === void 0 ? void 0 : _ref$current$querySel.style.height) || '0') + parseFloat(((_ref$current2 = ref.current) === null || _ref$current2 === void 0 ? void 0 : (_ref$current2$querySe = _ref$current2.querySelector('tbody')) === null || _ref$current2$querySe === void 0 ? void 0 : _ref$current2$querySe.style.paddingBottom) || '0');
18627
+ return height > ref.current.scrollHeight;
18628
+ }
18629
+ return false;
18630
+ }
18505
18631
 
18506
18632
  function useTableEditingListener(table, tableRef, scrollToIndex) {
18507
18633
  const tableMeta = table.options.meta;
@@ -18552,18 +18678,21 @@ function useTableEditingListener(table, tableRef, scrollToIndex) {
18552
18678
  document.addEventListener('click', onClickOutside);
18553
18679
  return () => document.removeEventListener('click', onClickOutside);
18554
18680
  }, [tableMeta.editing.isEditing, tableMeta.editing.saveChanges]);
18555
- const rows = table.getRowModel().rows;
18556
- // make sure pending changes are removed for rows that no longer exist
18557
- useLazyEffect(() => {
18558
- const pendingChanges = tableMeta.editing.getErrorsShownInAlert();
18559
- pendingChanges.forEach(pendingChange => {
18560
- try {
18561
- table.getRow(pendingChange.rowId);
18562
- } catch {
18563
- tableMeta.editing.discardChanges(pendingChange.rowId, table);
18564
- }
18565
- });
18566
- }, [rows.length]);
18681
+ /*
18682
+ const rows = table.getRowModel().rows;
18683
+ // make sure pending changes are removed for rows that no longer exist
18684
+ useLazyEffect(() => {
18685
+ const pendingChanges = tableMeta.editing.getErrorsShownInAlert();
18686
+ pendingChanges.forEach(pendingChange => {
18687
+ try {
18688
+ table.getRow(pendingChange.rowId);
18689
+ } catch {
18690
+ // TODO: this has the potential to remove changes for "unloaded" rows in server loading
18691
+ //tableMeta.editing.discardChanges(pendingChange.rowId, table);
18692
+ }
18693
+ });
18694
+ }, [rows.length]);
18695
+ */
18567
18696
  // shortcuts
18568
18697
  useGlobalKeyDown(tableMeta.editing.isEnabled ? shortcut : undefined, event => {
18569
18698
  event.preventDefault();
@@ -18591,6 +18720,7 @@ function reducer$2(state, action) {
18591
18720
  {
18592
18721
  const {
18593
18722
  columnId,
18723
+ index,
18594
18724
  row,
18595
18725
  value
18596
18726
  } = payload;
@@ -18600,7 +18730,8 @@ function reducer$2(state, action) {
18600
18730
  ...state.changes,
18601
18731
  rows: setWith(state.changes.rows, `${rowId}.${columnId}`, value, Object),
18602
18732
  originals: setWith(state.changes.originals, rowId, row, Object)
18603
- }
18733
+ },
18734
+ indexes: setWith(state.indexes, rowId, index, Object)
18604
18735
  };
18605
18736
  }
18606
18737
  case 'removeCellValue':
@@ -18634,6 +18765,7 @@ function reducer$2(state, action) {
18634
18765
  {
18635
18766
  const {
18636
18767
  cellErrors,
18768
+ index,
18637
18769
  moveReasons,
18638
18770
  original,
18639
18771
  value
@@ -18648,7 +18780,8 @@ function reducer$2(state, action) {
18648
18780
  moveReasons: setWith(state.changes.moveReasons, rowId, moveReasons !== null && moveReasons !== void 0 ? moveReasons : state.changes.moveReasons[rowId], Object),
18649
18781
  // status can be undefined, so don't use ??
18650
18782
  status: setWith(state.changes.status, rowId, undefined, Object)
18651
- }
18783
+ },
18784
+ indexes: setWith(state.indexes, rowId, index, Object)
18652
18785
  };
18653
18786
  }
18654
18787
  case 'removeRow':
@@ -18666,6 +18799,7 @@ function reducer$2(state, action) {
18666
18799
  originals: omit(state.changes.originals, rowId),
18667
18800
  status: omit(state.changes.status, rowId)
18668
18801
  },
18802
+ indexes: omit(state.indexes, rowId),
18669
18803
  temporaryRows: state.temporaryRows.filter(row => row[rowIdentityAccessor] !== rowId)
18670
18804
  };
18671
18805
  }
@@ -18698,6 +18832,7 @@ function reducer$2(state, action) {
18698
18832
  case 'insertTemporaryRow':
18699
18833
  {
18700
18834
  const {
18835
+ index,
18701
18836
  value
18702
18837
  } = payload;
18703
18838
  return {
@@ -18707,7 +18842,8 @@ function reducer$2(state, action) {
18707
18842
  ...state.changes,
18708
18843
  rows: setWith(state.changes.rows, rowId, value, Object),
18709
18844
  originals: setWith(state.changes.originals, rowId, value, Object)
18710
- }
18845
+ },
18846
+ indexes: setWith(state.indexes, rowId, index, Object)
18711
18847
  };
18712
18848
  }
18713
18849
  default:
@@ -18727,10 +18863,10 @@ function usePendingChangesState(handleSave, handleChange, rowIdentityAccessor, v
18727
18863
  [rowId]: state.changes.rows[rowId]
18728
18864
  } : state.changes.rows;
18729
18865
  let completed = true;
18730
- const _temp9 = _forOf(Object.keys(changes), function (rowId) {
18866
+ const _temp7 = _forOf(Object.keys(changes), function (rowId) {
18731
18867
  const status = getRowStatus(rowId);
18732
18868
  return _catch(function () {
18733
- function _temp8(_result) {
18869
+ function _temp6(_result) {
18734
18870
  return _exit ? _result : Promise.resolve(handleSave(changeSet)).then(function () {
18735
18871
  // cleanup changes, we don't need them after saving
18736
18872
  discardChanges(rowId, table);
@@ -18755,7 +18891,7 @@ function usePendingChangesState(handleSave, handleChange, rowIdentityAccessor, v
18755
18891
  delete changeSet[rowIdentityAccessor];
18756
18892
  }
18757
18893
  // re-run validation, maybe a cell is already invalid but has never been blurred
18758
- const _temp7 = function () {
18894
+ const _temp5 = function () {
18759
18895
  if (validator) {
18760
18896
  return Promise.resolve(validator(changeSet)).then(function (errors) {
18761
18897
  if (errors && Object.keys(errors).length) {
@@ -18764,7 +18900,7 @@ function usePendingChangesState(handleSave, handleChange, rowIdentityAccessor, v
18764
18900
  });
18765
18901
  }
18766
18902
  }();
18767
- return _temp7 && _temp7.then ? _temp7.then(_temp8) : _temp8(_temp7); // send new data to the server
18903
+ return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5); // send new data to the server
18768
18904
  }, function (error) {
18769
18905
  var _error$response;
18770
18906
  if (error instanceof ReferenceError || error instanceof TypeError || (error === null || error === void 0 ? void 0 : (_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.status) >= 500) {
@@ -18804,18 +18940,18 @@ function usePendingChangesState(handleSave, handleChange, rowIdentityAccessor, v
18804
18940
  }, function () {
18805
18941
  return _exit;
18806
18942
  });
18807
- return Promise.resolve(_temp9 && _temp9.then ? _temp9.then(function (_result3) {
18943
+ return Promise.resolve(_temp7 && _temp7.then ? _temp7.then(function (_result3) {
18808
18944
  return _exit ? _result3 : completed;
18809
- }) : _exit ? _temp9 : completed);
18945
+ }) : _exit ? _temp7 : completed);
18810
18946
  } catch (e) {
18811
18947
  return Promise.reject(e);
18812
18948
  }
18813
18949
  };
18814
18950
  const onCellChanged = function (cell, rowIndex, shouldRunUpdaters = true) {
18815
18951
  try {
18816
- function _temp6() {
18952
+ function _temp4() {
18817
18953
  var _state$changes$errors11;
18818
- function _temp4() {
18954
+ function _temp2() {
18819
18955
  // only set errors and move reasons for the cells we're currently acting on
18820
18956
  // why? because the UX is not good if we set them for cells the user hasn't touched yet
18821
18957
  const cellsToActOn = [cell.column.id, ...Object.keys(updatesForOtherCells)];
@@ -18846,6 +18982,7 @@ function usePendingChangesState(handleSave, handleChange, rowIdentityAccessor, v
18846
18982
  rowId: cell.row.id,
18847
18983
  payload: {
18848
18984
  cellErrors: nextCellErrors,
18985
+ index: rowIndex,
18849
18986
  moveReasons: nextMoveReasons,
18850
18987
  value: nextChanges
18851
18988
  }
@@ -18864,19 +19001,19 @@ function usePendingChangesState(handleSave, handleChange, rowIdentityAccessor, v
18864
19001
  };
18865
19002
  // run validation
18866
19003
  let validationErrors = {};
18867
- const _temp3 = function () {
19004
+ const _temp = function () {
18868
19005
  if (validator) {
18869
19006
  const nextRowValue = {
18870
19007
  ...state.changes.originals[cell.row.id],
18871
19008
  ...changes,
18872
19009
  ...updatesForOtherCells
18873
19010
  };
18874
- return Promise.resolve(validator(nextRowValue)).then(function (_validator2) {
18875
- validationErrors = _validator2 !== null && _validator2 !== void 0 ? _validator2 : {};
19011
+ return Promise.resolve(validator(nextRowValue)).then(function (_validator) {
19012
+ validationErrors = _validator !== null && _validator !== void 0 ? _validator : {};
18876
19013
  });
18877
19014
  }
18878
19015
  }();
18879
- return _temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3);
19016
+ return _temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp);
18880
19017
  }
18881
19018
  const changes = state.changes.rows[cell.row.id];
18882
19019
  if (!changes) {
@@ -18884,7 +19021,7 @@ function usePendingChangesState(handleSave, handleChange, rowIdentityAccessor, v
18884
19021
  }
18885
19022
  let updatesForOtherCells = {};
18886
19023
  // run the updater handler if there is one, to see if there are any other cells to update
18887
- const _temp5 = function () {
19024
+ const _temp3 = function () {
18888
19025
  if (typeof handleChange === 'function' && shouldRunUpdaters) {
18889
19026
  const previousRowValue = {
18890
19027
  ...state.changes.originals[cell.row.id]
@@ -18898,42 +19035,11 @@ function usePendingChangesState(handleSave, handleChange, rowIdentityAccessor, v
18898
19035
  });
18899
19036
  }
18900
19037
  }();
18901
- return Promise.resolve(_temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5));
19038
+ return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));
18902
19039
  } catch (e) {
18903
19040
  return Promise.reject(e);
18904
19041
  }
18905
19042
  }; // general
18906
- // rows
18907
- const setRowValue = function (rowId, original, value) {
18908
- try {
18909
- function _temp2() {
18910
- dispatch({
18911
- type: 'updateRow',
18912
- rowId,
18913
- payload: {
18914
- cellErrors,
18915
- original,
18916
- value
18917
- }
18918
- });
18919
- }
18920
- let cellErrors;
18921
- const _temp = function () {
18922
- if (validator) {
18923
- const row = {
18924
- ...original,
18925
- ...value
18926
- };
18927
- return Promise.resolve(validator(row)).then(function (_validator) {
18928
- cellErrors = _validator !== null && _validator !== void 0 ? _validator : {};
18929
- });
18930
- }
18931
- }();
18932
- return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
18933
- } catch (e) {
18934
- return Promise.reject(e);
18935
- }
18936
- };
18937
19043
  const localization = useLocalization();
18938
19044
  const [state, dispatch] = React__default.useReducer(reducer$2, {
18939
19045
  changes: {
@@ -18943,8 +19049,10 @@ function usePendingChangesState(handleSave, handleChange, rowIdentityAccessor, v
18943
19049
  originals: {},
18944
19050
  status: {}
18945
19051
  },
19052
+ indexes: {},
18946
19053
  temporaryRows: []
18947
19054
  });
19055
+ // rows
18948
19056
  function getRowValue(rowId) {
18949
19057
  var _state$changes$rows$r, _state$changes$rows;
18950
19058
  return (_state$changes$rows$r = (_state$changes$rows = state.changes.rows) === null || _state$changes$rows === void 0 ? void 0 : _state$changes$rows[rowId]) !== null && _state$changes$rows$r !== void 0 ? _state$changes$rows$r : undefined;
@@ -18982,7 +19090,7 @@ function usePendingChangesState(handleSave, handleChange, rowIdentityAccessor, v
18982
19090
  }
18983
19091
  });
18984
19092
  }
18985
- function insertTemporaryRow(data) {
19093
+ function insertTemporaryRow(data, rowIndex) {
18986
19094
  const newRowId = `${TEMPORARY_ROW_ID_PREFIX}${uuid.v4()}`;
18987
19095
  const value = {
18988
19096
  ...data,
@@ -18992,13 +19100,14 @@ function usePendingChangesState(handleSave, handleChange, rowIdentityAccessor, v
18992
19100
  type: 'insertTemporaryRow',
18993
19101
  rowId: newRowId,
18994
19102
  payload: {
19103
+ index: rowIndex,
18995
19104
  value
18996
19105
  }
18997
19106
  });
18998
19107
  return newRowId;
18999
19108
  }
19000
19109
  // cells
19001
- function setCellValue(cell, value) {
19110
+ function setCellValue(cell, rowIndex, value) {
19002
19111
  const rowId = cell.row.id;
19003
19112
  const columnId = cell.column.id;
19004
19113
  // update if the change is different to the original value
@@ -19008,6 +19117,7 @@ function usePendingChangesState(handleSave, handleChange, rowIdentityAccessor, v
19008
19117
  rowId,
19009
19118
  payload: {
19010
19119
  columnId,
19120
+ index: rowIndex,
19011
19121
  row: cell.row.original,
19012
19122
  value
19013
19123
  }
@@ -19040,6 +19150,7 @@ function usePendingChangesState(handleSave, handleChange, rowIdentityAccessor, v
19040
19150
  }
19041
19151
  return rowsWithErrors.filter(hasRowErrorsShownInAlert).map(rowId => ({
19042
19152
  rowId,
19153
+ index: state.indexes[rowId],
19043
19154
  changes: state.changes.rows[rowId],
19044
19155
  errors: state.changes.errors[rowId]
19045
19156
  }));
@@ -19063,7 +19174,6 @@ function usePendingChangesState(handleSave, handleChange, rowIdentityAccessor, v
19063
19174
  }
19064
19175
  return {
19065
19176
  // row
19066
- setRowValue,
19067
19177
  getRowValue,
19068
19178
  getRowMoveReason,
19069
19179
  hasRowErrors,
@@ -19102,11 +19212,11 @@ function useTableEditing(isEnabled = false, handleSave, handleChange, handleCrea
19102
19212
  const changeset = row !== null && row !== void 0 ? row : handleCreate();
19103
19213
  try {
19104
19214
  if (changeset) {
19105
- const rowId = pendingChangesFns.insertTemporaryRow(changeset);
19106
- table.getRow(rowId).pin('bottom');
19107
19215
  // set the active row to the new row before toggling editing on
19108
19216
  const temporaryRows = tableMeta.editing.temporaryRows;
19109
19217
  const nextRowIndex = temporaryRows.length ? tableMeta.length + 1 : tableMeta.length;
19218
+ const rowId = pendingChangesFns.insertTemporaryRow(changeset, nextRowIndex);
19219
+ table.getRow(rowId).pin('bottom');
19110
19220
  tableMeta.rowActive.setRowActiveIndex(nextRowIndex);
19111
19221
  toggleEditing(true, table, scrollToIndex);
19112
19222
  setLastFocusedCellIndex(undefined);
@@ -19144,7 +19254,9 @@ function useTableEditing(isEnabled = false, handleSave, handleChange, handleCrea
19144
19254
  tableMeta.rowActive.setRowActiveIndex(index);
19145
19255
  }
19146
19256
  setEditing(enabled);
19147
- if (!isTemporaryRow((_table$getRowModel$ro = table.getRowModel().rows[index]) === null || _table$getRowModel$ro === void 0 ? void 0 : _table$getRowModel$ro.id)) {
19257
+ const row = (_table$getRowModel$ro = table.getRowModel().rows[index]) === null || _table$getRowModel$ro === void 0 ? void 0 : _table$getRowModel$ro.id;
19258
+ if (row && !isTemporaryRow(row)) {
19259
+ console.log('hmm');
19148
19260
  scrollToIndex(index);
19149
19261
  }
19150
19262
  }
@@ -19415,7 +19527,7 @@ function EditingControlCell(props) {
19415
19527
  }, [cellRef.current]);
19416
19528
  const handleChange = nextValue => {
19417
19529
  if (nextValue !== value) {
19418
- tableMeta.editing.setCellValue(cell, nextValue);
19530
+ tableMeta.editing.setCellValue(cell, rowIndex, nextValue);
19419
19531
  if (hasNonTextControl) {
19420
19532
  tableMeta.editing.onCellChanged(cell, rowIndex);
19421
19533
  }
@@ -19926,20 +20038,21 @@ function Alert$1(props) {
19926
20038
  const visibleColumns = table.getVisibleFlatColumns().map(c => c.id);
19927
20039
  const rowIdentityColumn = tableMeta.rowIdentityAccessor && visibleColumns.includes(String(tableMeta.rowIdentityAccessor)) ? table.getColumn(String(tableMeta.rowIdentityAccessor)) : undefined;
19928
20040
  pendingChangesWithErrors.forEach((pendingChangeWithError, index) => {
20041
+ var _row;
19929
20042
  // if appropriate, concatenate the item with the text "and"
19930
20043
  if (pendingChangesWithErrors.length > 1 && index === pendingChangesWithErrors.length - 1) {
19931
20044
  // Add space before and after `messageAnd` text
19932
20045
  links.push(` ${validationTexts.alert.messageAnd} `);
19933
20046
  }
19934
- const rowIndex = table.getRowModel().rows.findIndex(row => row.id === pendingChangeWithError.rowId);
19935
20047
  const handleClick = () => {
19936
20048
  // if row is visible
19937
- if (rowIndex > -1) {
19938
- scrollToRow(rowIndex);
20049
+ if (pendingChangeWithError.index > -1) {
20050
+ scrollToRow(pendingChangeWithError.index);
20051
+ tableMeta.rowActive.setRowActiveIndex(pendingChangeWithError.index);
19939
20052
  }
19940
20053
  // if row is filtered out
19941
20054
  else {
19942
- setShowFilterResetDialog(pendingChangeWithError.rowId);
20055
+ setShowFilterResetDialog(pendingChangeWithError.index);
19943
20056
  }
19944
20057
  };
19945
20058
  let tooltip;
@@ -19951,7 +20064,12 @@ function Alert$1(props) {
19951
20064
  const columnName = (_table$getAllColumns$ = table.getAllColumns().find(column => column.id === firstCellErrorColumnId)) === null || _table$getAllColumns$ === void 0 ? void 0 : (_table$getAllColumns$2 = _table$getAllColumns$.columnDef.meta) === null || _table$getAllColumns$2 === void 0 ? void 0 : _table$getAllColumns$2.header;
19952
20065
  tooltip = `${columnName}: ${pendingChangeWithError.errors.cells[firstCellErrorColumnId]}`;
19953
20066
  }
19954
- const row = table.getRow(pendingChangeWithError.rowId).original;
20067
+ let row;
20068
+ try {
20069
+ row = table.getRow(pendingChangeWithError.rowId).original;
20070
+ } catch {
20071
+ // because of server loading, some rows may not be accessible
20072
+ }
19955
20073
  links.push(/*#__PURE__*/React__default.createElement(Tooltip, {
19956
20074
  key: pendingChangeWithError.rowId,
19957
20075
  title: tooltip
@@ -19959,7 +20077,7 @@ function Alert$1(props) {
19959
20077
  className: "text-blue",
19960
20078
  onClick: handleClick,
19961
20079
  role: "button"
19962
- }, rowIdentityColumn ? row[rowIdentityColumn.id] : rowIndex + 1)));
20080
+ }, rowIdentityColumn ? (_row = row) === null || _row === void 0 ? void 0 : _row[rowIdentityColumn.id] : pendingChangeWithError.index + 1)));
19963
20081
  // if appropriate, concatenate the item with the text ","
19964
20082
  if (pendingChangesWithErrors.length > 2 && index < pendingChangesWithErrors.length - 2) {
19965
20083
  links.push(', ');
@@ -19980,9 +20098,8 @@ function Alert$1(props) {
19980
20098
  table.resetGlobalFilter();
19981
20099
  table.resetColumnFilters();
19982
20100
  requestAnimationFrame(() => {
19983
- const rowIndex = table.getRowModel().rows.findIndex(row => row.id === showFilterResetDialog);
19984
- if (rowIndex > -1) {
19985
- scrollToRow(rowIndex);
20101
+ if (showFilterResetDialog && showFilterResetDialog > -1) {
20102
+ scrollToRow(showFilterResetDialog);
19986
20103
  }
19987
20104
  setShowFilterResetDialog(false);
19988
20105
  });
@@ -20046,10 +20163,10 @@ function CreateNewRow(props) {
20046
20163
  var _temporaryRows$0$tabl, _temporaryRows$, _table$getState$colum;
20047
20164
  const {
20048
20165
  buttonRef,
20166
+ isScrolled,
20049
20167
  scrollToIndex,
20050
20168
  table,
20051
- tableMeta,
20052
- tableRef
20169
+ tableMeta
20053
20170
  } = props;
20054
20171
  const {
20055
20172
  texts
@@ -20082,11 +20199,9 @@ function CreateNewRow(props) {
20082
20199
  keys: shortcut
20083
20200
  });
20084
20201
  }
20085
- const isScrolled = tableRef.current ? tableRef.current.scrollHeight > tableRef.current.clientHeight : false;
20086
20202
  const className = cn('group/row border-grey-300 !sticky z-[21]', {
20087
20203
  'bottom-10': tableMeta.footer.isEnabled,
20088
20204
  'bottom-0': !tableMeta.footer.isEnabled,
20089
- 'border-t-2': isScrolled,
20090
20205
  'border-b': !isScrolled
20091
20206
  });
20092
20207
  return /*#__PURE__*/React__default.createElement("tr", {
@@ -20111,6 +20226,7 @@ function CreateNewRow(props) {
20111
20226
  function TemporaryRow(props) {
20112
20227
  const {
20113
20228
  createRowButtonRef,
20229
+ isScrolled,
20114
20230
  table,
20115
20231
  tableMeta,
20116
20232
  tableRef
@@ -20173,10 +20289,9 @@ function TemporaryRow(props) {
20173
20289
  }
20174
20290
  }
20175
20291
  };
20176
- const isScrolled = tableRef.current ? tableRef.current.scrollHeight > tableRef.current.clientHeight : false;
20177
20292
  const className = cn('group/row border-grey-300 !sticky z-[22]', {
20178
- 'bottom-[calc(5rem_+_3px)] data-[row-editing-move]:bottom-[calc(5rem_+_2px)]': tableMeta.footer.isEnabled,
20179
- 'bottom-[calc(2.5rem_+_3px)] data-[row-editing-move]:bottom-[calc(2.5rem_+_2px)]': !tableMeta.footer.isEnabled,
20293
+ 'bottom-[calc(5rem_+_2px)] data-[row-editing-move]:bottom-[calc(5rem_+_2px)]': tableMeta.footer.isEnabled,
20294
+ 'bottom-[calc(2.5rem_+_2px)] data-[row-editing-move]:bottom-[calc(2.5rem_+_2px)]': !tableMeta.footer.isEnabled,
20180
20295
  'border-t-2 shadow-[0px_-5px_20px_0px_rgba(0,0,0,0.1)] [&>td]:!border-b-0': isScrolled
20181
20296
  });
20182
20297
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, table.getBottomRows().map(row => (/*#__PURE__*/React__default.createElement(Row, {
@@ -20191,7 +20306,8 @@ function TemporaryRow(props) {
20191
20306
  onKeyDown: handleKeyDown,
20192
20307
  onKeyDownCapture: handleKeyDownCapture,
20193
20308
  hideInternalColumns: true,
20194
- hideRowActions: !tableMeta.editing.isEditing
20309
+ hideRowActions: !tableMeta.editing.isEditing,
20310
+ skipPageLoading: true
20195
20311
  }))));
20196
20312
  }
20197
20313
 
@@ -20212,6 +20328,7 @@ const BaseTable3 = /*#__PURE__*/fixedForwardRef(function BaseTable3(props, ref)
20212
20328
  };
20213
20329
  const hasAlertErrors = table3.meta.editing.getErrorsShownInAlert().length;
20214
20330
  const hasCreateWorkflow = table3.meta.editing.isEnabled && props.onEditingCreate;
20331
+ const isScrolled = isTableScrolled(table3.ref);
20215
20332
  return /*#__PURE__*/React__default.createElement(Table, null, /*#__PURE__*/React__default.createElement(Table.Toolbar, {
20216
20333
  table: table3
20217
20334
  }, table3.meta.editing.isEnabled ? (/*#__PURE__*/React__default.createElement(Editing, {
@@ -20224,19 +20341,27 @@ const BaseTable3 = /*#__PURE__*/fixedForwardRef(function BaseTable3(props, ref)
20224
20341
  tableRef: table3.ref
20225
20342
  })) : null, /*#__PURE__*/React__default.createElement(Table.Grid, Object.assign({}, gridAttributes, {
20226
20343
  "data-taco": "table3",
20344
+ footerRows: hasCreateWorkflow && isScrolled ? (/*#__PURE__*/React__default.createElement(CreateNewRow, {
20345
+ buttonRef: table3.meta.editing.createRowButtonRef,
20346
+ isScrolled: isScrolled,
20347
+ scrollToIndex: table3.renderer.scrollToIndex,
20348
+ table: table3.instance,
20349
+ tableMeta: table3.meta
20350
+ })) : undefined,
20227
20351
  table: table3
20228
20352
  }), hasCreateWorkflow ? (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(TemporaryRow, {
20229
20353
  createRowButtonRef: table3.meta.editing.createRowButtonRef,
20354
+ isScrolled: isScrolled,
20230
20355
  table: table3.instance,
20231
20356
  tableMeta: table3.meta,
20232
20357
  tableRef: table3.ref
20233
- }), /*#__PURE__*/React__default.createElement(CreateNewRow, {
20358
+ }), !isScrolled ? (/*#__PURE__*/React__default.createElement(CreateNewRow, {
20234
20359
  buttonRef: table3.meta.editing.createRowButtonRef,
20360
+ isScrolled: isScrolled,
20235
20361
  scrollToIndex: table3.renderer.scrollToIndex,
20236
20362
  table: table3.instance,
20237
- tableMeta: table3.meta,
20238
- tableRef: table3.ref
20239
- }))) : null));
20363
+ tableMeta: table3.meta
20364
+ })) : null)) : null));
20240
20365
  });
20241
20366
  const Table3 = /*#__PURE__*/fixedForwardRef(function Table3(props, ref) {
20242
20367
  const stringifiedChildren = String(props.children);